úÎ1Ä-Ó"      !8The abstract data structure to express an IPv6 address.  To create this, use  . Or use " " 2001:DB8::1" :: , for example. #8The abstract data structure to express an IPv4 address.  To create this, use  . Or use " " 192.0.2.1" :: , for example. $%&A unified IP data for  and . '(The  function takes a list of ) and returns .  For example,   [192,0,2,1]. The  function takes a list of ) and returns .  For example,  [0x2001,0xDB8,0,0,0,0,0,1]. *+,-./0#$%&'(*+,-./0##$$%&'(*+,-./0123451234512345 :The Addr range consists of an address, a contiguous mask, ; and mask length. The contiguous mask and the mask length 9 are essentially same information but contained for pre  calculation. To create this, use  makeAddrRange or " " 192.0.2.0/24" ::    6 The  " function returns an address from  . The   function returns a contiguous  mask from  . The  % function returns a mask length from  . A unified data for    and   . 789:;< 6 789:;< 6 6 789:;<The  function takes an  and a contiguous ! mask and returned a masked . The  function takes ) and returns a contiguous  mask. The >:> operator takes two   . It returns = if  the first   contains the second   . Otherwise,  it returns >. The  toMatchedTo function take an  address and an  ,  and returns =$ if the range contains the address. The  functions takes an  address and a mask ? length. It creates a bit mask from the mask length and masks  the  address, then returns   made of them. ;The Tree structure for IP routing table based on TRIE with C one way branching removed. This is an abstracted data structure, - so you cannot touch its inside. Please use  or  , instead. ?@"A class to contain IPv4 and IPv6. The  function takes ) and returns an  address " whose only n-th bit is set. The  function takes an  address and an test bit   address and returns = is the bit is unset,  otherwise returns >. ABCDEThe - function returns an empty IP routing table. The ( function inserts a value with a key of   to   and returns a new . FGHIThe & function deletes a value by a key of   from   and returns a new . JThe  function looks up  with a key of   # and returns its value if exists. K The  . function creates a new IP routing table from  a list of a pair of IPrange and value. !The !& function creates a list of a pair of   and " value from an IP routing table. L?@ABCDEFGHIJK !L@??@ABCDEFGHIJK !L  !  !   M       !"#$%&'()*+,-./0123456789:;<=>?@ABCDE1FG1FHIJKLMNOPQRSTUVW iproute-1.1.0Data.IPData.IP.RouteTable Data.IP.Addr Data.IP.Mask Data.IP.Range Data.IP.OpData.IP.RouteTable.InternalIPv6IPv4IPipv6ipv4toIPv4toIPv6 AddrRangeaddrmaskmlenIPRange IPv6Range ipv6range IPv4Range ipv4rangeAddrmasked intToMask>:> isMatchedTo makeAddrRangeIPRTableRoutable intToTBitisZeroemptyinsertdeletelookupfromListtoListbase Text.ReadreadIP6IP4IPv6AddrIPv4AddrshowIPv4showIPv6ghc-prim GHC.TypesInt parseIPv4 parseIPv6digip4hexip6ip6'maskIPv4maskIPv6 masksWord32 masksIPv4 masksIPv6parseIPv4RangeparseIPv6Rangeip4range maskedIPv4ip6range maskedIPv6GHC.BoolTrueFalseNodeNil intToTBitIPv4 intToTBitIPv6intToTBitsWord32intToTBitsIPv4intToTBitsIPv6joinglue keyToTestBitisLeftnodesearchfoldt