<gh_stars>100-1000

# some lines below are commented out due to overlaps
prefixes = (
    ('1', {'cc': 'us', 'tags': ['loc.us']}),

    #['1284',{'cc':'vg','tags':['loc.vg']}],
    #['1441',{'cc':'bm','tags':['loc.bm']}],
    #['1246',{'cc':'bb','tags':['loc.bb']}],
    #['1242',{'cc':'bs','tags':['loc.bs']}],
    #['1268',{'cc':'ag','tags':['loc.ag']}],
    #['1264',{'cc':'ai','tags':['loc.ai']}],
    #['1684',{'cc':'as','tags':['loc.as']}],
    #['1345',{'cc':'ky','tags':['loc.ky']}],
    #['1767',{'cc':'dm','tags':['loc.dm']}],
    #['1809',{'cc':'do','tags':['loc.do']}],
    #['1829',{'cc':'do','tags':['loc.do']}],
    #['1849',{'cc':'do','tags':['loc.do']}],
    #['1473',{'cc':'gd','tags':['loc.gd']}],
    #['1671',{'cc':'gu','tags':['loc.gu']}],
    #['1876',{'cc':'jm','tags':['loc.jm']}],
    #['1664',{'cc':'ms','tags':['loc.ms']}],
    #['1670',{'cc':'mp','tags':['loc.mp']}],
    #['1787',{'cc':'pr','tags':['loc.pr']}],
    #['1939',{'cc':'pr','tags':['loc.pr']}],
    #['1869',{'cc':'kn','tags':['loc.kn']}],
    #['1758',{'cc':'lc','tags':['loc.lc']}],
    #['1784',{'cc':'vc','tags':['loc.vc']}],
    #['1868',{'cc':'tt','tags':['loc.tt']}],
    #['1340',{'cc':'vi','tags':['loc.vi']}],

    ('1204', {'cc': 'ca', 'tags': ['loc.ca.mb']}),
    ('1226', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1236', {'cc': 'ca', 'tags': ['loc.ca.bc']}),
    ('1249', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1250', {'cc': 'ca', 'tags': ['loc.ca.bc']}),
    ('1289', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1306', {'cc': 'ca', 'tags': ['loc.ca.sk']}),
    ('1343', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1365', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1403', {'cc': 'ca', 'tags': ['loc.ca.ab']}),
    ('1416', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1418', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1431', {'cc': 'ca', 'tags': ['loc.ca.mb']}),
    ('1437', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1438', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1450', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1506', {'cc': 'ca', 'tags': ['loc.ca.nb']}),
    ('1514', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1519', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1579', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1581', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1587', {'cc': 'ca', 'tags': ['loc.ca.ab']}),
    ('1604', {'cc': 'ca', 'tags': ['loc.ca.bc']}),
    ('1613', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1639', {'cc': 'ca', 'tags': ['loc.ca.sk']}),
    ('1647', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1705', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1709', {'cc': 'ca', 'tags': ['loc.ca.nl']}),
    ('1778', {'cc': 'ca', 'tags': ['loc.ca.bc']}),
    ('1780', {'cc': 'ca', 'tags': ['loc.ca.ab']}),
    ('1807', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('1819', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1867', {'cc': 'ca', 'tags': ['loc.ca.nt']}),
    ('1873', {'cc': 'ca', 'tags': ['loc.ca.qc']}),
    ('1902', {'cc': 'ca', 'tags': ['loc.ca.ns']}),
    ('1905', {'cc': 'ca', 'tags': ['loc.ca.on']}),
    ('93', {'cc': 'af', 'tags': ['loc.af']}),
    ('355', {'cc': 'al', 'tags': ['loc.al']}),
    ('213', {'cc': 'dz', 'tags': ['loc.dz']}),
    ('1684', {'cc': 'as', 'tags': ['loc.as']}),
    ('376', {'cc': 'ad', 'tags': ['loc.ad']}),
    ('244', {'cc': 'ao', 'tags': ['loc.ao']}),
    ('1264', {'cc': 'ai', 'tags': ['loc.ai']}),
    ('672', {'cc': 'aq', 'tags': ['loc.aq']}),
    ('1268', {'cc': 'ag', 'tags': ['loc.ag']}),
    ('54', {'cc': 'ar', 'tags': ['loc.ar']}),
    ('374', {'cc': 'am', 'tags': ['loc.am']}),
    ('297', {'cc': 'aw', 'tags': ['loc.aw']}),
    ('61', {'cc': 'au', 'tags': ['loc.au']}),
    ('43', {'cc': 'at', 'tags': ['loc.at']}),
    ('994', {'cc': 'az', 'tags': ['loc.az']}),
    ('1242', {'cc': 'bs', 'tags': ['loc.bs']}),
    ('973', {'cc': 'bh', 'tags': ['loc.bh']}),
    ('880', {'cc': 'bd', 'tags': ['loc.bd']}),
    ('1246', {'cc': 'bb', 'tags': ['loc.bb']}),
    ('375', {'cc': 'by', 'tags': ['loc.by']}),
    ('32', {'cc': 'be', 'tags': ['loc.be']}),
    ('501', {'cc': 'bz', 'tags': ['loc.bz']}),
    ('229', {'cc': 'bj', 'tags': ['loc.bj']}),
    ('1441', {'cc': 'bm', 'tags': ['loc.bm']}),
    ('975', {'cc': 'bt', 'tags': ['loc.bt']}),
    ('591', {'cc': 'bo', 'tags': ['loc.bo']}),
    ('387', {'cc': 'ba', 'tags': ['loc.ba']}),
    ('267', {'cc': 'bw', 'tags': ['loc.bw']}),
    ('55', {'cc': 'br', 'tags': ['loc.br']}),
    ('246', {'cc': 'io', 'tags': ['loc.io']}),
    ('1284', {'cc': 'vg', 'tags': ['loc.vg']}),
    ('673', {'cc': 'bn', 'tags': ['loc.bn']}),
    ('359', {'cc': 'bg', 'tags': ['loc.bg']}),
    ('226', {'cc': 'bf', 'tags': ['loc.bf']}),
    ('257', {'cc': 'bi', 'tags': ['loc.bi']}),
    ('855', {'cc': 'kh', 'tags': ['loc.kh']}),
    ('237', {'cc': 'cm', 'tags': ['loc.cm']}),
    #('1',{'cc':'ca','tags':['loc.ca']}),
    ('238', {'cc': 'cv', 'tags': ['loc.cv']}),
    ('1345', {'cc': 'ky', 'tags': ['loc.ky']}),
    ('236', {'cc': 'cf', 'tags': ['loc.cf']}),
    ('235', {'cc': 'td', 'tags': ['loc.td']}),
    ('56', {'cc': 'cl', 'tags': ['loc.cl']}),
    ('86', {'cc': 'cn', 'tags': ['loc.cn']}),
    #('61',{'cc':'cx','tags':['loc.cx']}),
    #('61',{'cc':'cc','tags':['loc.cc']}),
    ('57', {'cc': 'co', 'tags': ['loc.co']}),
    ('269', {'cc': 'km', 'tags': ['loc.km']}),
    ('682', {'cc': 'ck', 'tags': ['loc.ck']}),
    ('506', {'cc': 'cr', 'tags': ['loc.cr']}),
    ('385', {'cc': 'hr', 'tags': ['loc.hr']}),
    ('53', {'cc': 'cu', 'tags': ['loc.cu']}),
    ('599', {'cc': 'cw', 'tags': ['loc.cw']}),
    ('357', {'cc': 'cy', 'tags': ['loc.cy']}),
    ('420', {'cc': 'cz', 'tags': ['loc.cz']}),
    ('243', {'cc': 'cd', 'tags': ['loc.cd']}),
    ('45', {'cc': 'dk', 'tags': ['loc.dk']}),
    ('253', {'cc': 'dj', 'tags': ['loc.dj']}),
    ('1767', {'cc': 'dm', 'tags': ['loc.dm']}),
    ('1809', {'cc': 'do', 'tags': ['loc.do']}),
    ('1829', {'cc': 'do', 'tags': ['loc.do']}),
    ('1849', {'cc': 'do', 'tags': ['loc.do']}),
    ('670', {'cc': 'tl', 'tags': ['loc.tl']}),
    ('593', {'cc': 'ec', 'tags': ['loc.ec']}),
    ('20', {'cc': 'eg', 'tags': ['loc.eg']}),
    ('503', {'cc': 'sv', 'tags': ['loc.sv']}),
    ('240', {'cc': 'gq', 'tags': ['loc.gq']}),
    ('291', {'cc': 'er', 'tags': ['loc.er']}),
    ('372', {'cc': 'ee', 'tags': ['loc.ee']}),
    ('251', {'cc': 'et', 'tags': ['loc.et']}),
    ('500', {'cc': 'fk', 'tags': ['loc.fk']}),
    ('298', {'cc': 'fo', 'tags': ['loc.fo']}),
    ('679', {'cc': 'fj', 'tags': ['loc.fj']}),
    ('358', {'cc': 'fi', 'tags': ['loc.fi']}),
    ('33', {'cc': 'fr', 'tags': ['loc.fr']}),
    ('689', {'cc': 'pf', 'tags': ['loc.pf']}),
    ('241', {'cc': 'ga', 'tags': ['loc.ga']}),
    ('220', {'cc': 'gm', 'tags': ['loc.gm']}),
    ('995', {'cc': 'ge', 'tags': ['loc.ge']}),
    ('49', {'cc': 'de', 'tags': ['loc.de']}),
    ('233', {'cc': 'gh', 'tags': ['loc.gh']}),
    ('350', {'cc': 'gi', 'tags': ['loc.gi']}),
    ('30', {'cc': 'gr', 'tags': ['loc.gr']}),
    ('299', {'cc': 'gl', 'tags': ['loc.gl']}),
    ('1473', {'cc': 'gd', 'tags': ['loc.gd']}),
    ('1671', {'cc': 'gu', 'tags': ['loc.gu']}),
    ('502', {'cc': 'gt', 'tags': ['loc.gt']}),
    ('441481', {'cc': 'gg', 'tags': ['loc.gg']}),
    ('224', {'cc': 'gn', 'tags': ['loc.gn']}),
    ('245', {'cc': 'gw', 'tags': ['loc.gw']}),
    ('592', {'cc': 'gy', 'tags': ['loc.gy']}),
    ('509', {'cc': 'ht', 'tags': ['loc.ht']}),
    ('504', {'cc': 'hn', 'tags': ['loc.hn']}),
    ('852', {'cc': 'hk', 'tags': ['loc.hk']}),
    ('36', {'cc': 'hu', 'tags': ['loc.hu']}),
    ('354', {'cc': 'is', 'tags': ['loc.is']}),
    ('91', {'cc': 'in', 'tags': ['loc.in']}),
    ('62', {'cc': 'id', 'tags': ['loc.id']}),
    ('98', {'cc': 'ir', 'tags': ['loc.ir']}),
    ('964', {'cc': 'iq', 'tags': ['loc.iq']}),
    ('353', {'cc': 'ie', 'tags': ['loc.ie']}),
    ('441624', {'cc': 'im', 'tags': ['loc.im']}),
    ('972', {'cc': 'il', 'tags': ['loc.il']}),
    ('39', {'cc': 'it', 'tags': ['loc.it']}),
    ('225', {'cc': 'ci', 'tags': ['loc.ci']}),
    ('1876', {'cc': 'jm', 'tags': ['loc.jm']}),
    ('81', {'cc': 'jp', 'tags': ['loc.jp']}),
    ('441534', {'cc': 'je', 'tags': ['loc.je']}),
    ('962', {'cc': 'jo', 'tags': ['loc.jo']}),
    #('7',{'cc':'kz','tags':['loc.kz']}),
    ('7317', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7329', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7313', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7327', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7330', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7717', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7312', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7321', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7314', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7324', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7336', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7318', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7315', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7322', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7325', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7328', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7311', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7323', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7326', {'cc': 'kz', 'tags': ['loc.kz']}),
    ('7310', {'cc': 'kz', 'tags': ['loc.kz']}),

    ('254', {'cc': 'ke', 'tags': ['loc.ke']}),
    ('686', {'cc': 'ki', 'tags': ['loc.ki']}),
    ('383', {'cc': 'xk', 'tags': ['loc.xk']}),
    ('965', {'cc': 'kw', 'tags': ['loc.kw']}),
    ('996', {'cc': 'kg', 'tags': ['loc.kg']}),
    ('856', {'cc': 'la', 'tags': ['loc.la']}),
    ('371', {'cc': 'lv', 'tags': ['loc.lv']}),
    ('961', {'cc': 'lb', 'tags': ['loc.lb']}),
    ('266', {'cc': 'ls', 'tags': ['loc.ls']}),
    ('231', {'cc': 'lr', 'tags': ['loc.lr']}),
    ('218', {'cc': 'ly', 'tags': ['loc.ly']}),
    ('423', {'cc': 'li', 'tags': ['loc.li']}),
    ('370', {'cc': 'lt', 'tags': ['loc.lt']}),
    ('352', {'cc': 'lu', 'tags': ['loc.lu']}),
    ('853', {'cc': 'mo', 'tags': ['loc.mo']}),
    ('389', {'cc': 'mk', 'tags': ['loc.mk']}),
    ('261', {'cc': 'mg', 'tags': ['loc.mg']}),
    ('265', {'cc': 'mw', 'tags': ['loc.mw']}),
    ('60', {'cc': 'my', 'tags': ['loc.my']}),
    ('960', {'cc': 'mv', 'tags': ['loc.mv']}),
    ('223', {'cc': 'ml', 'tags': ['loc.ml']}),
    ('356', {'cc': 'mt', 'tags': ['loc.mt']}),
    ('692', {'cc': 'mh', 'tags': ['loc.mh']}),
    ('222', {'cc': 'mr', 'tags': ['loc.mr']}),
    ('230', {'cc': 'mu', 'tags': ['loc.mu']}),
    #('262',{'cc':'yt','tags':['loc.yt']}),
    ('52', {'cc': 'mx', 'tags': ['loc.mx']}),
    ('691', {'cc': 'fm', 'tags': ['loc.fm']}),
    ('373', {'cc': 'md', 'tags': ['loc.md']}),
    ('377', {'cc': 'mc', 'tags': ['loc.mc']}),
    ('976', {'cc': 'mn', 'tags': ['loc.mn']}),
    ('382', {'cc': 'me', 'tags': ['loc.me']}),
    ('1664', {'cc': 'ms', 'tags': ['loc.ms']}),
    ('212', {'cc': 'ma', 'tags': ['loc.ma']}),
    ('258', {'cc': 'mz', 'tags': ['loc.mz']}),
    ('95', {'cc': 'mm', 'tags': ['loc.mm']}),
    ('264', {'cc': 'na', 'tags': ['loc.na']}),
    ('674', {'cc': 'nr', 'tags': ['loc.nr']}),
    ('977', {'cc': 'np', 'tags': ['loc.np']}),
    ('31', {'cc': 'nl', 'tags': ['loc.nl']}),
    #('599',{'cc':'an','tags':['loc.an']}),
    ('687', {'cc': 'nc', 'tags': ['loc.nc']}),
    ('64', {'cc': 'nz', 'tags': ['loc.nz']}),
    ('505', {'cc': 'ni', 'tags': ['loc.ni']}),
    ('227', {'cc': 'ne', 'tags': ['loc.ne']}),
    ('234', {'cc': 'ng', 'tags': ['loc.ng']}),
    ('683', {'cc': 'nu', 'tags': ['loc.nu']}),
    ('850', {'cc': 'kp', 'tags': ['loc.kp']}),
    ('1670', {'cc': 'mp', 'tags': ['loc.mp']}),
    ('47', {'cc': 'no', 'tags': ['loc.no']}),
    ('968', {'cc': 'om', 'tags': ['loc.om']}),
    ('92', {'cc': 'pk', 'tags': ['loc.pk']}),
    ('680', {'cc': 'pw', 'tags': ['loc.pw']}),
    ('970', {'cc': 'ps', 'tags': ['loc.ps']}),
    ('507', {'cc': 'pa', 'tags': ['loc.pa']}),
    ('675', {'cc': 'pg', 'tags': ['loc.pg']}),
    ('595', {'cc': 'py', 'tags': ['loc.py']}),
    ('51', {'cc': 'pe', 'tags': ['loc.pe']}),
    ('63', {'cc': 'ph', 'tags': ['loc.ph']}),
    #('64',{'cc':'pn','tags':['loc.pn']}),
    ('48', {'cc': 'pl', 'tags': ['loc.pl']}),
    ('351', {'cc': 'pt', 'tags': ['loc.pt']}),
    ('1787', {'cc': 'pr', 'tags': ['loc.pr']}),
    ('1939', {'cc': 'pr', 'tags': ['loc.pr']}),
    ('974', {'cc': 'qa', 'tags': ['loc.qa']}),
    ('242', {'cc': 'cg', 'tags': ['loc.cg']}),
    ('262', {'cc': 're', 'tags': ['loc.re']}),
    ('40', {'cc': 'ro', 'tags': ['loc.ro']}),
    ('7', {'cc': 'ru', 'tags': ['loc.ru']}),
    ('250', {'cc': 'rw', 'tags': ['loc.rw']}),
    ('590', {'cc': 'bl', 'tags': ['loc.bl']}),
    ('290', {'cc': 'sh', 'tags': ['loc.sh']}),
    ('1869', {'cc': 'kn', 'tags': ['loc.kn']}),
    ('1758', {'cc': 'lc', 'tags': ['loc.lc']}),
    #('590',{'cc':'mf','tags':['loc.mf']}),
    ('508', {'cc': 'pm', 'tags': ['loc.pm']}),
    ('1784', {'cc': 'vc', 'tags': ['loc.vc']}),
    ('685', {'cc': 'ws', 'tags': ['loc.ws']}),
    ('378', {'cc': 'sm', 'tags': ['loc.sm']}),
    ('239', {'cc': 'st', 'tags': ['loc.st']}),
    ('966', {'cc': 'sa', 'tags': ['loc.sa']}),
    ('221', {'cc': 'sn', 'tags': ['loc.sn']}),
    ('381', {'cc': 'rs', 'tags': ['loc.rs']}),
    ('248', {'cc': 'sc', 'tags': ['loc.sc']}),
    ('232', {'cc': 'sl', 'tags': ['loc.sl']}),
    ('65', {'cc': 'sg', 'tags': ['loc.sg']}),
    ('1721', {'cc': 'sx', 'tags': ['loc.sx']}),
    ('421', {'cc': 'sk', 'tags': ['loc.sk']}),
    ('386', {'cc': 'si', 'tags': ['loc.si']}),
    ('677', {'cc': 'sb', 'tags': ['loc.sb']}),
    ('252', {'cc': 'so', 'tags': ['loc.so']}),
    ('27', {'cc': 'za', 'tags': ['loc.za']}),
    ('82', {'cc': 'kr', 'tags': ['loc.kr']}),
    ('211', {'cc': 'ss', 'tags': ['loc.ss']}),
    ('34', {'cc': 'es', 'tags': ['loc.es']}),
    ('94', {'cc': 'lk', 'tags': ['loc.lk']}),
    ('249', {'cc': 'sd', 'tags': ['loc.sd']}),
    ('597', {'cc': 'sr', 'tags': ['loc.sr']}),
    #('47',{'cc':'sj','tags':['loc.sj']}),
    ('268', {'cc': 'sz', 'tags': ['loc.sz']}),
    ('46', {'cc': 'se', 'tags': ['loc.se']}),
    ('41', {'cc': 'ch', 'tags': ['loc.ch']}),
    ('963', {'cc': 'sy', 'tags': ['loc.sy']}),
    ('886', {'cc': 'tw', 'tags': ['loc.tw']}),
    ('992', {'cc': 'tj', 'tags': ['loc.tj']}),
    ('255', {'cc': 'tz', 'tags': ['loc.tz']}),
    ('66', {'cc': 'th', 'tags': ['loc.th']}),
    ('228', {'cc': 'tg', 'tags': ['loc.tg']}),
    ('690', {'cc': 'tk', 'tags': ['loc.tk']}),
    ('676', {'cc': 'to', 'tags': ['loc.to']}),
    ('1868', {'cc': 'tt', 'tags': ['loc.tt']}),
    ('216', {'cc': 'tn', 'tags': ['loc.tn']}),
    ('90', {'cc': 'tr', 'tags': ['loc.tr']}),
    ('993', {'cc': 'tm', 'tags': ['loc.tm']}),
    ('1649', {'cc': 'tc', 'tags': ['loc.tc']}),
    ('688', {'cc': 'tv', 'tags': ['loc.tv']}),
    ('1340', {'cc': 'vi', 'tags': ['loc.vi']}),
    ('256', {'cc': 'ug', 'tags': ['loc.ug']}),
    ('380', {'cc': 'ua', 'tags': ['loc.ua']}),
    ('971', {'cc': 'ae', 'tags': ['loc.ae']}),
    ('44', {'cc': 'gb', 'tags': ['loc.gb']}),
    #('1',{'cc':'us','tags':['loc.us']}),
    ('598', {'cc': 'uy', 'tags': ['loc.uy']}),
    ('998', {'cc': 'uz', 'tags': ['loc.uz']}),
    ('678', {'cc': 'vu', 'tags': ['loc.vu']}),
    ('379', {'cc': 'va', 'tags': ['loc.va']}),
    ('58', {'cc': 've', 'tags': ['loc.ve']}),
    ('84', {'cc': 'vn', 'tags': ['loc.vn']}),
    ('681', {'cc': 'wf', 'tags': ['loc.wf']}),
    #('212',{'cc':'eh','tags':['loc.eh']}),
    ('967', {'cc': 'ye', 'tags': ['loc.ye']}),
    ('260', {'cc': 'zm', 'tags': ['loc.zm']}),
    ('263', {'cc': 'zw', 'tags': ['loc.zw']}),
)

def phnode(valu):
    # (valu,info,kids)
    return (valu, {}, {})

phonetree = (None, {}, {})

def formPhoneNode(node, valu):
    retn = node[2].get(valu)
    if retn is None:
        retn = phnode(valu)
        node[2][valu] = retn
    return retn

def initPhoneTree():
    for pref, info in prefixes:
        node = phonetree
        for c in pref:
            node = formPhoneNode(node, c)

        if node[1]:
            print('PREF OVERLAP: %r %r %r' % (pref, node[1], info))

        node[1].update(info)

def getPhoneInfo(numb):
    '''
    Walk the phone info tree to find the best-match info for the given number.

    Example:

        info = getPhoneInfo(17035551212)
        country = info.get('cc')

    '''
    text = str(numb)

    info = {}
    node = phonetree

    # make decisions down the tree (but only keep info for
    # nodes where it's populated) and return the last info
    for c in text:
        chld = node[2].get(c)
        if chld is None:
            break

        if chld[1]:
            info = chld[1]

        node = chld

    return info

initPhoneTree()
