Socket
Socket
Sign inDemoInstall

linkifyjs

Package Overview
Dependencies
0
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.0-beta.3 to 4.0.0-beta.4

2

dist/linkify.min.js

@@ -1,1 +0,1 @@

var linkify=function(u){"use strict";var D=Object.assign||function(u,D){for(var e in D)u[e]=D[e]};function e(u){this.j={},this.jr=[],this.jd=null,this.t=u}e.prototype={accepts:function(){return!!this.t},tt:function(u,e){if(u instanceof Array){if(0===u.length)return;for(var a=this.tt(u[0],e),n=1;n<u.length;n++)this.tt(u[n],a);return a}if(e&&e.j)return this.j[u]=e,e;var r=e,o=this.j[u];if(o)return r&&(o.t=r),o;o=t();var s=i(this,u);return s?(D(o.j,s.j),o.jr.append(s.jr),o.jr=s.jd,o.t=r||s.t):o.t=r,this.j[u]=o,o}};var t=function(){return new e},a=function(u){return new e(u)},n=function(u,D,e){return u.j[D]||(u.j[D]=e),u.j[D]},r=function(u,D,e){u.jr.push([D,e])},i=function(u,D){var e=u.j[D];if(e)return e;for(var t=0;t<u.jr.length;t++){var a=u.jr[t][0],n=u.jr[t][1];if(n&&a.test(D))return n}return u.jd},o=function(u,D,e){for(var t=0;t<D.length;t++)n(u,D[t],e)},s=function(u,D,e,t){for(var a,r=0,i=D.length;r<i&&(a=u.j[D[r]]);)u=a,r++;if(r>=i)return u;for(;r<i-1;)a=t(),n(u,D[r],a),u=a,r++;return n(u,D[i-1],e),e},l="WORD",c="UWORD",F="LOCALHOST",E="TLD",A="UTLD",C="SCHEME",g="SLASH_SCHEME",h="COMPOUND_SCHEME",d="COMPOUND_SLASH_SCHEME",f="NUM",m="NL",p="OPENBRACE",B="OPENBRACKET",b="OPENANGLEBRACKET",v="OPENPAREN",k="CLOSEBRACE",y="CLOSEBRACKET",w="CLOSEANGLEBRACKET",j="CLOSEPAREN",x="AMPERSAND",S="APOSTROPHE",O="ASTERISK",L="AT",z="BACKSLASH",N="BACKTICK",P="CARET",T="COLON",R="COMMA",H="DOLLAR",M="DOT",U="EQUALS",I="EXCLAMATION",_="HYPHEN",K="PERCENT",q="PIPE",Q="PLUS",W="POUND",Y="QUERY",G="QUOTE",J="SEMI",X="SLASH",Z="TILDE",$="UNDERSCORE",V="EMOJIS",uu="SYM",Du=[f],eu=[l,F,E,C,g],tu=eu.concat(f),au=eu.concat(c,A),nu=au.concat(f),ru=au.concat(h,d,f,V),iu=[C,g,h,d],ou={ascii:eu,asciinumeric:tu,words:au,alphanumeric:nu,domain:ru,scheme:iu},su=Object.freeze({__proto__:null,WORD:l,UWORD:c,LOCALHOST:F,TLD:E,UTLD:A,SCHEME:C,SLASH_SCHEME:g,COMPOUND_SCHEME:h,COMPOUND_SLASH_SCHEME:d,NUM:f,WS:"WS",NL:m,OPENBRACE:p,OPENBRACKET:B,OPENANGLEBRACKET:b,OPENPAREN:v,CLOSEBRACE:k,CLOSEBRACKET:y,CLOSEANGLEBRACKET:w,CLOSEPAREN:j,AMPERSAND:x,APOSTROPHE:S,ASTERISK:O,AT:L,BACKSLASH:z,BACKTICK:N,CARET:P,COLON:T,COMMA:R,DOLLAR:H,DOT:M,EQUALS:U,EXCLAMATION:I,HYPHEN:_,PERCENT:K,PIPE:q,PLUS:Q,POUND:W,QUERY:Y,QUOTE:G,SEMI:J,SLASH:X,TILDE:Z,UNDERSCORE:$,EMOJIS:V,SYM:uu,numeric:Du,ascii:eu,asciinumeric:tu,words:au,alphanumeric:nu,domain:ru,scheme:iu,collections:ou}),lu="aaa aarp abarth abb abbott abbvie abc able abogado abudhabi ac academy accenture accountant accountants aco actor ad adac ads adult ae aeg aero aetna af afl africa ag agakhan agency ai aig airbus airforce airtel akdn al alfaromeo alibaba alipay allfinanz allstate ally alsace alstom am amazon americanexpress americanfamily amex amfam amica amsterdam analytics android anquan anz ao aol apartments app apple aq aquarelle ar arab aramco archi army arpa art arte as asda asia associates at athleta attorney au auction audi audible audio auspost author auto autos avianca aw aws ax axa az azure ba baby baidu banamex bananarepublic band bank bar barcelona barclaycard barclays barefoot bargains baseball basketball bauhaus bayern bb bbc bbt bbva bcg bcn bd be beats beauty beer bentley berlin best bestbuy bet bf bg bh bharti bi bible bid bike bing bingo bio biz bj black blackfriday blockbuster blog bloomberg blue bm bms bmw bn bnpparibas bo boats boehringer bofa bom bond boo book booking bosch bostik boston bot boutique box br bradesco bridgestone broadway broker brother brussels bs bt budapest bugatti build builders business buy buzz bv bw by bz bzh ca cab cafe cal call calvinklein cam camera camp cancerresearch canon capetown capital capitalone car caravan cards care career careers cars casa case cash casino cat catering catholic cba cbn cbre cbs cc cd center ceo cern cf cfa cfd cg ch chanel channel charity chase chat cheap chintai christmas chrome church ci cipriani circle cisco citadel citi citic city cityeats ck cl claims cleaning click clinic clinique clothing cloud club clubmed cm cn co coach codes coffee college cologne com comcast commbank community company compare computer comsec condos construction consulting contact contractors cooking cookingchannel cool coop corsica country coupon coupons courses cpa cr credit creditcard creditunion cricket crown crs cruise cruises csc cu cuisinella cv cw cx cy cymru cyou cz dabur dad dance data date dating datsun day dclk dds de deal dealer deals degree delivery dell deloitte delta democrat dental dentist desi design dev dhl diamonds diet digital direct directory discount discover dish diy dj dk dm dnp do docs doctor dog domains dot download drive dtv dubai dunlop dupont durban dvag dvr dz earth eat ec eco edeka edu education ee eg email emerck energy engineer engineering enterprises epson equipment er ericsson erni es esq estate et etisalat eu eurovision eus events exchange expert exposed express extraspace fage fail fairwinds faith family fan fans farm farmers fashion fast fedex feedback ferrari ferrero fi fiat fidelity fido film final finance financial fire firestone firmdale fish fishing fit fitness fj fk flickr flights flir florist flowers fly fm fo foo food foodnetwork football ford forex forsale forum foundation fox fr free fresenius frl frogans frontdoor frontier ftr fujitsu fun fund furniture futbol fyi ga gal gallery gallo gallup game games gap garden gay gb gbiz gd gdn ge gea gent genting george gf gg ggee gh gi gift gifts gives giving gl glass gle global globo gm gmail gmbh gmo gmx gn godaddy gold goldpoint golf goo goodyear goog google gop got gov gp gq gr grainger graphics gratis green gripe grocery group gs gt gu guardian gucci guge guide guitars guru gw gy hair hamburg hangout haus hbo hdfc hdfcbank health healthcare help helsinki here hermes hgtv hiphop hisamitsu hitachi hiv hk hkt hm hn hockey holdings holiday homedepot homegoods homes homesense honda horse hospital host hosting hot hoteles hotels hotmail house how hr hsbc ht hu hughes hyatt hyundai ibm icbc ice icu id ie ieee ifm ikano il im imamat imdb immo immobilien in inc industries infiniti info ing ink institute insurance insure int international intuit investments io ipiranga iq ir irish is ismaili ist istanbul it itau itv jaguar java jcb je jeep jetzt jewelry jio jll jm jmp jnj jo jobs joburg jot joy jp jpmorgan jprs juegos juniper kaufen kddi ke kerryhotels kerrylogistics kerryproperties kfh kg kh ki kia kim kinder kindle kitchen kiwi km kn koeln komatsu kosher kp kpmg kpn kr krd kred kuokgroup kw ky kyoto kz la lacaixa lamborghini lamer lancaster lancia land landrover lanxess lasalle lat latino latrobe law lawyer lb lc lds lease leclerc lefrak legal lego lexus lgbt li lidl life lifeinsurance lifestyle lighting like lilly limited limo lincoln linde link lipsy live living lk llc llp loan loans locker locus loft lol london lotte lotto love lpl lplfinancial lr ls lt ltd ltda lu lundbeck luxe luxury lv ly ma macys madrid maif maison makeup man management mango map market marketing markets marriott marshalls maserati mattel mba mc mckinsey md me med media meet melbourne meme memorial men menu merckmsd mg mh miami microsoft mil mini mint mit mitsubishi mk ml mlb mls mm mma mn mo mobi mobile moda moe moi mom monash money monster mormon mortgage moscow moto motorcycles mov movie mp mq mr ms msd mt mtn mtr mu museum music mutual mv mw mx my mz na nab nagoya name natura navy nba nc ne nec net netbank netflix network neustar new news next nextdirect nexus nf nfl ng ngo nhk ni nico nike nikon ninja nissan nissay nl no nokia northwesternmutual norton now nowruz nowtv np nr nra nrw ntt nu nyc nz obi observer office okinawa olayan olayangroup oldnavy ollo om omega one ong onl online ooo open oracle orange org organic origins osaka otsuka ott ovh pa page panasonic paris pars partners parts party passagens pay pccw pe pet pf pfizer pg ph pharmacy phd philips phone photo photography photos physio pics pictet pictures pid pin ping pink pioneer pizza pk pl place play playstation plumbing plus pm pn pnc pohl poker politie porn post pr pramerica praxi press prime pro prod productions prof progressive promo properties property protection pru prudential ps pt pub pw pwc py qa qpon quebec quest racing radio re read realestate realtor realty recipes red redstone redumbrella rehab reise reisen reit reliance ren rent rentals repair report republican rest restaurant review reviews rexroth rich richardli ricoh ril rio rip ro rocher rocks rodeo rogers room rs rsvp ru rugby ruhr run rw rwe ryukyu sa saarland safe safety sakura sale salon samsclub samsung sandvik sandvikcoromant sanofi sap sarl sas save saxo sb sbi sbs sc sca scb schaeffler schmidt scholarships school schule schwarz science scot sd se search seat secure security seek select sener services ses seven sew sex sexy sfr sg sh shangrila sharp shaw shell shia shiksha shoes shop shopping shouji show showtime si silk sina singles site sj sk ski skin sky skype sl sling sm smart smile sn sncf so soccer social softbank software sohu solar solutions song sony soy spa space sport spot sr srl ss st stada staples star statebank statefarm stc stcgroup stockholm storage store stream studio study style su sucks supplies supply support surf surgery suzuki sv swatch swiss sx sy sydney systems sz tab taipei talk taobao target tatamotors tatar tattoo tax taxi tc tci td tdk team tech technology tel temasek tennis teva tf tg th thd theater theatre tiaa tickets tienda tiffany tips tires tirol tj tjmaxx tjx tk tkmaxx tl tm tmall tn to today tokyo tools top toray toshiba total tours town toyota toys tr trade trading training travel travelchannel travelers travelersinsurance trust trv tt tube tui tunes tushu tv tvs tw tz ua ubank ubs ug uk unicom university uno uol ups us uy uz va vacations vana vanguard vc ve vegas ventures verisign vermögensberater vermögensberatung versicherung vet vg vi viajes video vig viking villas vin vip virgin visa vision viva vivo vlaanderen vn vodka volkswagen volvo vote voting voto voyage vu vuelos wales walmart walter wang wanggou watch watches weather weatherchannel webcam weber website wed wedding weibo weir wf whoswho wien wiki williamhill win windows wine winners wme wolterskluwer woodside work works world wow ws wtc wtf xbox xerox xfinity xihuan xin xxx xyz yachts yahoo yamaxun yandex ye yodobashi yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw".split(" "),cu="ελ ευ бг бел дети ею католик ком мкд мон москва онлайн орг рус рф сайт срб укр қаз հայ ישראל קום ابوظبي اتصالات ارامكو الاردن البحرين الجزائر السعودية العليان المغرب امارات ایران بارت بازار بيتك بھارت تونس سودان سورية شبكة عراق عرب عمان فلسطين قطر كاثوليك كوم مصر مليسيا موريتانيا موقع همراه پاکستان ڀارت कॉम नेट भारत भारतम् भारोत संगठन বাংলা ভারত ভাৰত ਭਾਰਤ ભારત ଭାରତ இந்தியா இலங்கை சிங்கப்பூர் భారత్ ಭಾರತ ഭാരതം ලංකා คอม ไทย ລາວ გე みんな アマゾン クラウド グーグル コム ストア セール ファッション ポイント 世界 中信 中国 中國 中文网 亚马逊 企业 佛山 信息 健康 八卦 公司 公益 台湾 台灣 商城 商店 商标 嘉里 嘉里大酒店 在线 大拿 天主教 娱乐 家電 广东 微博 慈善 我爱你 手机 招聘 政务 政府 新加坡 新闻 时尚 書籍 机构 淡马锡 游戏 澳門 点看 移动 组织机构 网址 网店 网站 网络 联通 诺基亚 谷歌 购物 通販 集团 電訊盈科 飞利浦 食品 餐厅 香格里拉 香港 닷넷 닷컴 삼성 한국".split(" "),Fu=/[a-z]/,Eu=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/,Au=/(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEDD-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC5\uDED0-\uDED9\uDEE0-\uDEE7\uDEF0-\uDEF6])/,Cu=/\ufe0f/,gu=/\d/,hu=/\s/;function du(u){void 0===u&&(u=[]);var D=t(),e=t(),i=a(f),o=a(l),h=a(c),d=a(V),Du=a("WS"),eu=function(u){var D=a(l);return D.jr=[[Fu,o]],D},tu=function(u){var D=a(c);return D.jr=[[Fu,e],[Eu,h]],D},au=function(u,D){var e=eu();return e.t=u,e},nu=function(u,D){var e=tu();return e.t=u,e};!function(u,D){for(var e=0;e<D.length;e++){var t=D[e][0],a=D[e][1];n(u,t,a)}}(D,[["'",a(S)],["{",a(p)],["[",a(B)],["<",a(b)],["(",a(v)],["}",a(k)],["]",a(y)],[">",a(w)],[")",a(j)],["&",a(x)],["*",a(O)],["@",a(L)],["`",a(N)],["^",a(P)],[":",a(T)],[",",a(R)],["$",a(H)],[".",a(M)],["=",a(U)],["!",a(I)],["-",a(_)],["%",a(K)],["|",a(q)],["+",a(Q)],["#",a(W)],["?",a(Y)],['"',a(G)],["/",a(X)],[";",a(J)],["~",a(Z)],["_",a($)],["\\",a(z)]]),n(D,"\n",a(m)),r(D,hu,Du),n(Du,"\n",t()),r(Du,hu,Du);for(var ru=0;ru<lu.length;ru++)s(D,lu[ru],au(E),eu);for(var iu=0;iu<cu.length;iu++)s(D,cu[iu],nu(A),tu);var ou=au(C),su=au(g);s(D,"file",ou,eu),s(D,"mailto",ou,eu),s(D,"ftp",su,eu),s(D,"http",su,eu),n(su,"s",su);var du=au(C),fu=au(g),mu=a(C),pu=a(g);u=u.sort((function(u,D){return u[0]>D[0]?1:-1}));for(var Bu=0;Bu<u.length;Bu++)for(var bu=u[Bu][0].split("-"),vu=1===bu.length?u[Bu][1]?du:fu:u[Bu][1]?mu:pu,ku=D,yu=0;yu<bu.length;yu++){var wu=0===yu?eu:t,ju=yu===bu.length-1?vu:wu();ku=s(ku,bu[yu],ju,wu),bu.length>1&&yu<bu.length-1&&(ku=n(ku,"-",t()))}s(D,"localhost",au(F),eu),r(D,gu,i),r(D,Fu,o),r(D,Eu,h),r(D,Au,d),r(D,Cu,d),r(i,gu,i),r(o,Fu,o),r(h,Fu,e),r(h,Eu,h),r(d,Au,d),r(d,Cu,d);var xu=t();return n(d,"‍",xu),r(xu,Au,d),r(xu,Cu,d),D.jd=a(uu),D}var fu={defaultProtocol:"http",events:null,format:pu,formatHref:pu,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function mu(u,e){void 0===e&&(e=null);var t={};D(t,fu),u&&D(t,u instanceof mu?u.o:u);for(var a=t.ignoreTags,n=[],r=0;r<a.length;r++)n.push(a[r].toUpperCase());this.o=t,this.defaultRender=e,this.ignoreTags=n}function pu(u){return u}mu.prototype={o:{},defaultRender:null,check:function(u){return this.get("validate",u.toString(),u)},get:function(u,D,e){var t=null!=D,a=this.o[u];return a?("object"==typeof a?"function"==typeof(a=e.t in a?a[e.t]:fu[u])&&t&&(a=a(D,e)):"function"==typeof a&&t&&(a=a(D,e.t,e)),a):a},getObj:function(u,D,e){var t=this.o[u];return"function"==typeof t&&null!=D&&(t=t(D,e.t,e)),t},render:function(u){var D=u.render(this),e=this.get("render",null,u)||this.defaultRender;return e?e(D,u.t,u):D}};var Bu=Object.freeze({__proto__:null,defaults:fu,Options:mu,assign:D});function bu(){}function vu(u,D){function e(D,e){this.t=u,this.v=D,this.tk=e}return function(u,D,e){void 0===e&&(e={});var t=Object.create(u.prototype);for(var a in e)t[a]=e[a];t.constructor=D,D.prototype=t}(bu,e,D),e}bu.prototype={t:"token",isLink:!1,toString:function(){return this.v},toHref:function(){return this.toString()},toFormattedString:function(u){var D=this.toString(),e=u.get("truncate",D,this),t=u.get("format",D,this);return e&&t.length>e?t.substring(0,e)+"…":t},toFormattedHref:function(u){return u.get("formatHref",this.toHref(u.get("defaultProtocol")),this)},startIndex:function(){return this.tk[0].s},endIndex:function(){return this.tk[this.tk.length-1].e},toObject:function(u){return void 0===u&&(u=fu.defaultProtocol),{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(u),start:this.startIndex(),end:this.endIndex()}},toFormattedObject:function(u){return{type:this.t,value:this.toFormattedString(u),isLink:this.isLink,href:this.toFormattedHref(u),start:this.startIndex(),end:this.endIndex()}},validate:function(u){return u.get("validate",this.toString(),this)},render:function(u){var e=this,t=u.get("tagName",a,e),a=this.toFormattedHref(u),n=this.toFormattedString(u),r={},i=u.get("className",a,e),o=u.get("target",a,e),s=u.get("rel",a,e),l=u.getObj("attributes",a,e),c=u.getObj("events",a,e);return r.href=a,i&&(r.class=i),o&&(r.target=o),s&&(r.rel=s),l&&D(r,l),{tagName:t,attributes:r,content:n,eventListeners:c}}};var ku=vu("email",{isLink:!0,toHref:function(){return"mailto:"+this.toString()}}),yu=vu("text"),wu=vu("nl"),ju=vu("url",{isLink:!0,toHref:function(u){return void 0===u&&(u=fu.defaultProtocol),this.hasProtocol()?this.v:u+"://"+this.v},hasProtocol:function(){var u=this.tk;return u.length>=2&&iu.indexOf(u[0].t)>=0&&u[1].t===T}}),xu=Object.freeze({__proto__:null,MultiToken:bu,Base:bu,createTokenClass:vu,Email:ku,Text:yu,Nl:wu,Url:ju});function Su(){var u=t(),D=t(),e=t(),r=t(),i=t(),s=t(),l=t(),c=t(),V=t(),eu=a(ju),tu=t(),au=a(ju),nu=a(ju),iu=t(),ou=t(),su=t(),lu=t(),cu=t(),Fu=a(ju),Eu=a(ju),Au=a(ju),Cu=a(ju),gu=t(),hu=t(),du=t(),fu=t(),mu=t(),pu=t(),Bu=t(),bu=a(ku),vu=t(),yu=a(ku),xu=t(),Su=t(),Ou=t(),Lu=t(),zu=a(wu);n(u,m,zu),n(u,C,D),n(u,g,e),n(u,h,D),n(u,d,e),n(D,T,s),n(e,T,r),n(r,X,i),n(i,X,s),n(u,F,eu),o(u,ru,l),n(l,M,c),n(l,_,V),o(l,ru,l),n(D,M,c),n(D,_,V),o(D,ru,l),n(e,M,c),n(e,_,V),o(e,ru,l),n(c,E,eu),n(c,A,eu),o(c,ru,l),o(V,ru,l),n(eu,M,c),n(eu,_,V),o(eu,ru,l),n(eu,T,tu),n(eu,X,nu),o(tu,Du,au),n(au,X,nu),n(s,X,nu),o(s,ru,nu);var Nu=ru.concat([x,O,L,z,N,P,H,U,_,f,K,q,Q,W,X,uu,Z,$]),Pu=[S,w,k,y,j,T,R,M,I,b,p,B,v,Y,G,J];n(nu,p,ou),n(nu,B,su),n(nu,b,lu),n(nu,v,cu),n(iu,p,ou),n(iu,B,su),n(iu,b,lu),n(iu,v,cu),n(ou,k,nu),n(su,y,nu),n(lu,w,nu),n(cu,j,nu),n(ou,k,nu),n(Eu,y,nu),n(Au,w,nu),n(Cu,j,nu),n(ou,k,nu),n(hu,y,nu),n(du,w,nu),n(fu,j,nu),o(ou,Nu,ou),o(su,Nu,Eu),o(lu,Nu,Au),o(cu,Nu,Cu),o(ou,Pu,ou),o(su,Pu,hu),o(lu,Pu,du),o(cu,Pu,fu),o(Fu,Nu,Fu),o(Eu,Nu,Eu),o(Au,Nu,Au),o(Cu,Nu,Cu),o(Fu,Pu,Fu),o(Eu,Pu,Eu),o(Au,Pu,Au),o(Cu,Pu,Cu),o(gu,Nu,gu),o(hu,Nu,Eu),o(du,Nu,Au),o(fu,Nu,Cu),o(gu,Pu,gu),o(hu,Pu,hu),o(du,Pu,du),o(fu,Pu,fu),o(nu,Nu,nu),o(iu,Nu,nu),o(nu,Pu,iu),o(iu,Pu,iu);var Tu=[x,S,O,z,N,P,k,H,U,_,f,p,K,q,Q,W,Y,X,uu,Z,$];return n(u,Z,xu),o(l,Tu,xu),n(l,L,Su),o(eu,Tu,xu),n(eu,L,Su),o(c,Tu,xu),o(xu,ru,xu),o(xu,Tu,xu),n(xu,L,Su),n(xu,M,Lu),o(Lu,ru,xu),o(Lu,Tu,xu),n(Su,F,bu),o(Su,ru,mu),o(Ou,ru,mu),n(mu,M,pu),n(mu,_,Bu),n(pu,E,bu),n(pu,A,bu),o(pu,ru,mu),o(Bu,ru,mu),n(bu,M,pu),n(bu,_,Bu),o(bu,ru,mu),n(bu,T,vu),o(vu,Du,yu),u}function Ou(u,D,e){var t=e[0].s,a=e[e.length-1].e;return new u(D.slice(t,a),e)}var Lu="undefined"!=typeof console&&console&&console.warn||function(){},zu={scanner:null,parser:null,pluginQueue:[],customSchemes:[],initialized:!1};function Nu(){zu.scanner={start:du(zu.customSchemes),tokens:su},zu.parser={start:Su(),tokens:xu};for(var u={createTokenClass:vu},D=0;D<zu.pluginQueue.length;D++)zu.pluginQueue[D][1]({scanner:zu.scanner,parser:zu.parser,utils:u});zu.initialized=!0}function Pu(u){return zu.initialized||Nu(),function(u,D,e){for(var t=e.length,a=0,n=[],r=[];a<t;){for(var o=u,s=null,l=null,c=0,F=null,E=-1;a<t&&!(s=i(o,e[a].t));)r.push(e[a++]);for(;a<t&&(l=s||i(o,e[a].t));)s=null,(o=l).accepts()?(E=0,F=o):E>=0&&E++,a++,c++;if(E<0)(a-=c)<t&&(r.push(e[a]),a++);else{r.length>0&&(n.push(Ou(yu,D,r)),r=[]),a-=E,c-=E;var A=F.t,C=e.slice(a-c,a);n.push(Ou(A,D,C))}}return r.length>0&&n.push(Ou(yu,D,r)),n}(zu.parser.start,u,function(u,D){for(var e=function(u){for(var D=[],e=u.length,t=0;t<e;){var a=u.charCodeAt(t),n=void 0,r=a<55296||a>56319||t+1===e||(n=u.charCodeAt(t+1))<56320||n>57343?u[t]:u.slice(t,t+2);D.push(r),t+=r.length}return D}(D.replace(/[A-Z]/g,(function(u){return u.toLowerCase()}))),t=e.length,a=[],n=0,r=0;r<t;){for(var o=u,s=null,l=0,c=null,F=-1,E=-1;r<t&&(s=i(o,e[r]));)(o=s).accepts()?(F=0,E=0,c=o):F>=0&&(F+=e[r].length,E++),l+=e[r].length,n+=e[r].length,r++;n-=F,r-=E,l-=F,a.push({t:c.t,v:D.substr(n-l,l),s:n-l,e:n})}return a}(zu.scanner.start,u))}return u.Options=mu,u.find=function(u,D,e){void 0===D&&(D=null),void 0===e&&(e={});for(var t=new mu(e),a=Pu(u),n=[],r=0;r<a.length;r++){var i=a[r];!i.isLink||D&&i.t!==D||n.push(i.toFormattedObject(t))}return n},u.init=Nu,u.options=Bu,u.registerCustomProtocol=function(u,D){if(void 0===D&&(D=!1),zu.initialized&&Lu('linkifyjs: already initialized - will not register custom protocol "'+u+'" until you manually call linkify.init(). To avoid this warning, please register all custom schemes before invoking linkify the first time.'),!/^[a-z]+(-[a-z]+)*$/.test(u))throw new Error("linkifyjs: incorrect protocol format.\n 1. Must only contain lowercase ASCII letters or -\n 2. Cannot start or end with -\n 3. - cannot repeat");zu.customSchemes.push([u,D])},u.registerPlugin=function(u,D){if("function"!=typeof D)throw new Error("linkifyjs: Invalid plugin "+D+" (expects function)");for(var e=0;e<zu.pluginQueue.length;e++)if(u===zu.pluginQueue[e][0])return Lu('linkifyjs: plugin "'+u+'" already registered - will be overwritten'),void(zu.pluginQueue[e]=[u,D]);zu.pluginQueue.push([u,D]),zu.initialized&&Lu('linkifyjs: already initialized - will not register plugin "'+u+'" until you manually call linkify.init(). To avoid this warning, please register all plugins before invoking linkify the first time.')},u.reset=function(){zu.scanner=null,zu.parser=null,zu.pluginQueue=[],zu.customSchemes=[],zu.initialized=!1},u.test=function(u,D){void 0===D&&(D=null);var e=Pu(u);return 1===e.length&&e[0].isLink&&(!D||e[0].t===D)},u.tokenize=Pu,Object.defineProperty(u,"__esModule",{value:!0}),u}({});
var linkify=function(u){"use strict";var D=function(u,D){for(var e in D)u[e]=D[e];return u},e=function(){function u(u){this.j={},this.jr=[],this.jd=null,this.t=u}var e=u.prototype;return e.accepts=function(){return!!this.t},e.tt=function(e,n){if(e instanceof Array){if(0===e.length)return;for(var a=this.tt(e[0],n),r=1;r<e.length;r++)this.tt(e[r],a);return a}if(n&&n instanceof u)return this.j[e]=n,n;var o=n,s=this.j[e];if(s)return o&&(s.t=o),s;s=t();var l=i(this,e);return l?(D(s.j,l.j),s.jr.append(l.jr),s.jr=l.jd,s.t=o||l.t):s.t=o,this.j[e]=s,s},u}(),t=function(){return new e},n=function(u){return new e(u)},a=function(u,D,e){return u.j[D]||(u.j[D]=e),u.j[D]},r=function(u,D,e){u.jr.push([D,e])},i=function(u,D){var e=u.j[D];if(e)return e;for(var t=0;t<u.jr.length;t++){var n=u.jr[t][0],a=u.jr[t][1];if(a&&n.test(D))return a}return u.jd},o=function(u,D,e){for(var t=0;t<D.length;t++)a(u,D[t],e)},s=function(u,D,e,t){for(var n,r=0,i=D.length;r<i&&(n=u.j[D[r]]);)u=n,r++;if(r>=i)return u;for(;r<i-1;)n=t(),a(u,D[r],n),u=n,r++;return a(u,D[i-1],e),e},l="WORD",c="UWORD",F="LOCALHOST",E="TLD",A="UTLD",C="SCHEME",h="SLASH_SCHEME",g="COMPOUND_SCHEME",f="COMPOUND_SLASH_SCHEME",d="NUM",m="NL",p="OPENBRACE",B="OPENBRACKET",b="OPENANGLEBRACKET",v="OPENPAREN",k="CLOSEBRACE",y="CLOSEBRACKET",w="CLOSEANGLEBRACKET",j="CLOSEPAREN",x="AMPERSAND",O="APOSTROPHE",S="ASTERISK",L="AT",z="BACKSLASH",T="BACKTICK",N="CARET",P="COLON",R="COMMA",H="DOLLAR",M="DOT",_="EQUALS",U="EXCLAMATION",I="HYPHEN",K="PERCENT",q="PIPE",Q="PLUS",W="POUND",Y="QUERY",G="QUOTE",J="SEMI",X="SLASH",Z="TILDE",$="UNDERSCORE",V="EMOJIS",uu="SYM",Du=[d],eu=[l,F,E,C,h],tu=eu.concat(d),nu=eu.concat(c,A),au=nu.concat(d),ru=nu.concat(g,f,d,V),iu=[C,h,g,f],ou={};function su(u){return u in ou||(ou[u]=[]),ou[u]}ou.ascii=eu,ou.asciinumeric=tu,ou.words=nu,ou.alphanumeric=au,ou.domain=ru,ou.scheme=iu;var lu=Object.freeze({__proto__:null,WORD:l,UWORD:c,LOCALHOST:F,TLD:E,UTLD:A,SCHEME:C,SLASH_SCHEME:h,COMPOUND_SCHEME:g,COMPOUND_SLASH_SCHEME:f,NUM:d,WS:"WS",NL:m,OPENBRACE:p,OPENBRACKET:B,OPENANGLEBRACKET:b,OPENPAREN:v,CLOSEBRACE:k,CLOSEBRACKET:y,CLOSEANGLEBRACKET:w,CLOSEPAREN:j,AMPERSAND:x,APOSTROPHE:O,ASTERISK:S,AT:L,BACKSLASH:z,BACKTICK:T,CARET:N,COLON:P,COMMA:R,DOLLAR:H,DOT:M,EQUALS:_,EXCLAMATION:U,HYPHEN:I,PERCENT:K,PIPE:q,PLUS:Q,POUND:W,QUERY:Y,QUOTE:G,SEMI:J,SLASH:X,TILDE:Z,UNDERSCORE:$,EMOJIS:V,SYM:uu,numeric:Du,ascii:eu,asciinumeric:tu,words:nu,alphanumeric:au,domain:ru,scheme:iu,collections:ou,registerTextTokenCollection:su,collectionsWithToken:function(u){var D=[];for(var e in ou)ou[e].indexOf(u)>=0&&D.push(e);return D},registerTextToken:function(u,D){void 0===D&&(D=[]);for(var e=0;e<D.length;e++){su(D[e]).push(u)}return u}}),cu="aaa aarp abarth abb abbott abbvie abc able abogado abudhabi ac academy accenture accountant accountants aco actor ad adac ads adult ae aeg aero aetna af afl africa ag agakhan agency ai aig airbus airforce airtel akdn al alfaromeo alibaba alipay allfinanz allstate ally alsace alstom am amazon americanexpress americanfamily amex amfam amica amsterdam analytics android anquan anz ao aol apartments app apple aq aquarelle ar arab aramco archi army arpa art arte as asda asia associates at athleta attorney au auction audi audible audio auspost author auto autos avianca aw aws ax axa az azure ba baby baidu banamex bananarepublic band bank bar barcelona barclaycard barclays barefoot bargains baseball basketball bauhaus bayern bb bbc bbt bbva bcg bcn bd be beats beauty beer bentley berlin best bestbuy bet bf bg bh bharti bi bible bid bike bing bingo bio biz bj black blackfriday blockbuster blog bloomberg blue bm bms bmw bn bnpparibas bo boats boehringer bofa bom bond boo book booking bosch bostik boston bot boutique box br bradesco bridgestone broadway broker brother brussels bs bt budapest bugatti build builders business buy buzz bv bw by bz bzh ca cab cafe cal call calvinklein cam camera camp cancerresearch canon capetown capital capitalone car caravan cards care career careers cars casa case cash casino cat catering catholic cba cbn cbre cbs cc cd center ceo cern cf cfa cfd cg ch chanel channel charity chase chat cheap chintai christmas chrome church ci cipriani circle cisco citadel citi citic city cityeats ck cl claims cleaning click clinic clinique clothing cloud club clubmed cm cn co coach codes coffee college cologne com comcast commbank community company compare computer comsec condos construction consulting contact contractors cooking cookingchannel cool coop corsica country coupon coupons courses cpa cr credit creditcard creditunion cricket crown crs cruise cruises csc cu cuisinella cv cw cx cy cymru cyou cz dabur dad dance data date dating datsun day dclk dds de deal dealer deals degree delivery dell deloitte delta democrat dental dentist desi design dev dhl diamonds diet digital direct directory discount discover dish diy dj dk dm dnp do docs doctor dog domains dot download drive dtv dubai dunlop dupont durban dvag dvr dz earth eat ec eco edeka edu education ee eg email emerck energy engineer engineering enterprises epson equipment er ericsson erni es esq estate et etisalat eu eurovision eus events exchange expert exposed express extraspace fage fail fairwinds faith family fan fans farm farmers fashion fast fedex feedback ferrari ferrero fi fiat fidelity fido film final finance financial fire firestone firmdale fish fishing fit fitness fj fk flickr flights flir florist flowers fly fm fo foo food foodnetwork football ford forex forsale forum foundation fox fr free fresenius frl frogans frontdoor frontier ftr fujitsu fun fund furniture futbol fyi ga gal gallery gallo gallup game games gap garden gay gb gbiz gd gdn ge gea gent genting george gf gg ggee gh gi gift gifts gives giving gl glass gle global globo gm gmail gmbh gmo gmx gn godaddy gold goldpoint golf goo goodyear goog google gop got gov gp gq gr grainger graphics gratis green gripe grocery group gs gt gu guardian gucci guge guide guitars guru gw gy hair hamburg hangout haus hbo hdfc hdfcbank health healthcare help helsinki here hermes hgtv hiphop hisamitsu hitachi hiv hk hkt hm hn hockey holdings holiday homedepot homegoods homes homesense honda horse hospital host hosting hot hoteles hotels hotmail house how hr hsbc ht hu hughes hyatt hyundai ibm icbc ice icu id ie ieee ifm ikano il im imamat imdb immo immobilien in inc industries infiniti info ing ink institute insurance insure int international intuit investments io ipiranga iq ir irish is ismaili ist istanbul it itau itv jaguar java jcb je jeep jetzt jewelry jio jll jm jmp jnj jo jobs joburg jot joy jp jpmorgan jprs juegos juniper kaufen kddi ke kerryhotels kerrylogistics kerryproperties kfh kg kh ki kia kim kinder kindle kitchen kiwi km kn koeln komatsu kosher kp kpmg kpn kr krd kred kuokgroup kw ky kyoto kz la lacaixa lamborghini lamer lancaster lancia land landrover lanxess lasalle lat latino latrobe law lawyer lb lc lds lease leclerc lefrak legal lego lexus lgbt li lidl life lifeinsurance lifestyle lighting like lilly limited limo lincoln linde link lipsy live living lk llc llp loan loans locker locus loft lol london lotte lotto love lpl lplfinancial lr ls lt ltd ltda lu lundbeck luxe luxury lv ly ma macys madrid maif maison makeup man management mango map market marketing markets marriott marshalls maserati mattel mba mc mckinsey md me med media meet melbourne meme memorial men menu merckmsd mg mh miami microsoft mil mini mint mit mitsubishi mk ml mlb mls mm mma mn mo mobi mobile moda moe moi mom monash money monster mormon mortgage moscow moto motorcycles mov movie mp mq mr ms msd mt mtn mtr mu museum music mutual mv mw mx my mz na nab nagoya name natura navy nba nc ne nec net netbank netflix network neustar new news next nextdirect nexus nf nfl ng ngo nhk ni nico nike nikon ninja nissan nissay nl no nokia northwesternmutual norton now nowruz nowtv np nr nra nrw ntt nu nyc nz obi observer office okinawa olayan olayangroup oldnavy ollo om omega one ong onl online ooo open oracle orange org organic origins osaka otsuka ott ovh pa page panasonic paris pars partners parts party passagens pay pccw pe pet pf pfizer pg ph pharmacy phd philips phone photo photography photos physio pics pictet pictures pid pin ping pink pioneer pizza pk pl place play playstation plumbing plus pm pn pnc pohl poker politie porn post pr pramerica praxi press prime pro prod productions prof progressive promo properties property protection pru prudential ps pt pub pw pwc py qa qpon quebec quest racing radio re read realestate realtor realty recipes red redstone redumbrella rehab reise reisen reit reliance ren rent rentals repair report republican rest restaurant review reviews rexroth rich richardli ricoh ril rio rip ro rocher rocks rodeo rogers room rs rsvp ru rugby ruhr run rw rwe ryukyu sa saarland safe safety sakura sale salon samsclub samsung sandvik sandvikcoromant sanofi sap sarl sas save saxo sb sbi sbs sc sca scb schaeffler schmidt scholarships school schule schwarz science scot sd se search seat secure security seek select sener services ses seven sew sex sexy sfr sg sh shangrila sharp shaw shell shia shiksha shoes shop shopping shouji show showtime si silk sina singles site sj sk ski skin sky skype sl sling sm smart smile sn sncf so soccer social softbank software sohu solar solutions song sony soy spa space sport spot sr srl ss st stada staples star statebank statefarm stc stcgroup stockholm storage store stream studio study style su sucks supplies supply support surf surgery suzuki sv swatch swiss sx sy sydney systems sz tab taipei talk taobao target tatamotors tatar tattoo tax taxi tc tci td tdk team tech technology tel temasek tennis teva tf tg th thd theater theatre tiaa tickets tienda tiffany tips tires tirol tj tjmaxx tjx tk tkmaxx tl tm tmall tn to today tokyo tools top toray toshiba total tours town toyota toys tr trade trading training travel travelchannel travelers travelersinsurance trust trv tt tube tui tunes tushu tv tvs tw tz ua ubank ubs ug uk unicom university uno uol ups us uy uz va vacations vana vanguard vc ve vegas ventures verisign vermögensberater vermögensberatung versicherung vet vg vi viajes video vig viking villas vin vip virgin visa vision viva vivo vlaanderen vn vodka volkswagen volvo vote voting voto voyage vu vuelos wales walmart walter wang wanggou watch watches weather weatherchannel webcam weber website wed wedding weibo weir wf whoswho wien wiki williamhill win windows wine winners wme wolterskluwer woodside work works world wow ws wtc wtf xbox xerox xfinity xihuan xin xxx xyz yachts yahoo yamaxun yandex ye yodobashi yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw".split(" "),Fu="ελ ευ бг бел дети ею католик ком мкд мон москва онлайн орг рус рф сайт срб укр қаз հայ ישראל קום ابوظبي اتصالات ارامكو الاردن البحرين الجزائر السعودية العليان المغرب امارات ایران بارت بازار بيتك بھارت تونس سودان سورية شبكة عراق عرب عمان فلسطين قطر كاثوليك كوم مصر مليسيا موريتانيا موقع همراه پاکستان ڀارت कॉम नेट भारत भारतम् भारोत संगठन বাংলা ভারত ভাৰত ਭਾਰਤ ભારત ଭାରତ இந்தியா இலங்கை சிங்கப்பூர் భారత్ ಭಾರತ ഭാരതം ලංකා คอม ไทย ລາວ გე みんな アマゾン クラウド グーグル コム ストア セール ファッション ポイント 世界 中信 中国 中國 中文网 亚马逊 企业 佛山 信息 健康 八卦 公司 公益 台湾 台灣 商城 商店 商标 嘉里 嘉里大酒店 在线 大拿 天主教 娱乐 家電 广东 微博 慈善 我爱你 手机 招聘 政务 政府 新加坡 新闻 时尚 書籍 机构 淡马锡 游戏 澳門 点看 移动 组织机构 网址 网店 网站 网络 联通 诺基亚 谷歌 购物 通販 集团 電訊盈科 飞利浦 食品 餐厅 香格里拉 香港 닷넷 닷컴 삼성 한국".split(" "),Eu=/[a-z]/,Au=/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/,Cu=/(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEDD-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC5\uDED0-\uDED9\uDEE0-\uDEE7\uDEF0-\uDEF6])/,hu=/\ufe0f/,gu=/\d/,fu=/\s/;function du(u){void 0===u&&(u=[]);var D=t(),e=t(),i=n(d),o=n(l),g=n(c),f=n(V),Du=n("WS"),eu=function(u){var D=n(l);return D.jr=[[Eu,o]],D},tu=function(u){var D=n(c);return D.jr=[[Eu,e],[Au,g]],D},nu=function(u,D){var e=eu();return e.t=u,e},au=function(u,D){var e=tu();return e.t=u,e};!function(u,D){for(var e=0;e<D.length;e++){var t=D[e][0],n=D[e][1];a(u,t,n)}}(D,[["'",n(O)],["{",n(p)],["[",n(B)],["<",n(b)],["(",n(v)],["}",n(k)],["]",n(y)],[">",n(w)],[")",n(j)],["&",n(x)],["*",n(S)],["@",n(L)],["`",n(T)],["^",n(N)],[":",n(P)],[",",n(R)],["$",n(H)],[".",n(M)],["=",n(_)],["!",n(U)],["-",n(I)],["%",n(K)],["|",n(q)],["+",n(Q)],["#",n(W)],["?",n(Y)],['"',n(G)],["/",n(X)],[";",n(J)],["~",n(Z)],["_",n($)],["\\",n(z)]]),a(D,"\n",n(m)),r(D,fu,Du),a(Du,"\n",t()),r(Du,fu,Du);for(var ru=0;ru<cu.length;ru++)s(D,cu[ru],nu(E),eu);for(var iu=0;iu<Fu.length;iu++)s(D,Fu[iu],au(A),tu);var ou=nu(C),su=nu(h);s(D,"file",ou,eu),s(D,"mailto",ou,eu),s(D,"ftp",su,eu),s(D,"http",su,eu),a(su,"s",su);var lu=nu(C),du=nu(h),mu=n(C),pu=n(h);u=u.sort((function(u,D){return u[0]>D[0]?1:-1}));for(var Bu=0;Bu<u.length;Bu++)for(var bu=u[Bu][0].split("-"),vu=1===bu.length?u[Bu][1]?lu:du:u[Bu][1]?mu:pu,ku=D,yu=0;yu<bu.length;yu++){var wu=0===yu?eu:t,ju=yu===bu.length-1?vu:wu();ku=s(ku,bu[yu],ju,wu),bu.length>1&&yu<bu.length-1&&(ku=a(ku,"-",t()))}s(D,"localhost",nu(F),eu),r(D,gu,i),r(D,Eu,o),r(D,Au,g),r(D,Cu,f),r(D,hu,f),r(i,gu,i),r(o,Eu,o),r(g,Eu,e),r(g,Au,g),r(f,Cu,f),r(f,hu,f);var xu=t();return a(f,"‍",xu),r(xu,Cu,f),r(xu,hu,f),D.jd=n(uu),D}function mu(u,D){return mu=Object.setPrototypeOf||function(u,D){return u.__proto__=D,u},mu(u,D)}var pu={defaultProtocol:"http",events:null,format:bu,formatHref:bu,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function Bu(u,e){void 0===e&&(e=null);var t=D({},pu);u&&(t=D(t,u instanceof Bu?u.o:u));for(var n=t.ignoreTags,a=[],r=0;r<n.length;r++)a.push(n[r].toUpperCase());this.o=t,e&&(this.defaultRender=e),this.ignoreTags=a}function bu(u){return u}Bu.prototype={o:pu,defaultRender:function(u){return u},check:function(u){return this.get("validate",u.toString(),u)},get:function(u,D,e){var t=null!=D,n=this.o[u];return n?("object"==typeof n?"function"==typeof(n=e.t in n?n[e.t]:pu[u])&&t&&(n=n(D,e)):"function"==typeof n&&t&&(n=n(D,e.t,e)),n):n},getObj:function(u,D,e){var t=this.o[u];return"function"==typeof t&&null!=D&&(t=t(D,e.t,e)),t},render:function(u){var D=u.render(this);return(this.get("render",null,u)||this.defaultRender)(D,u.t,u)}};var vu=Object.freeze({__proto__:null,defaults:pu,Options:Bu,assign:D});function ku(u,D){this.t="token",this.v=u,this.tk=D}function yu(u,D){var e=function(D){var e,t;function n(e,t){var n;return(n=D.call(this,e,t)||this).t=u,n}return t=D,(e=n).prototype=Object.create(t.prototype),e.prototype.constructor=e,mu(e,t),n}(ku);for(var t in D)e.prototype[t]=D[t];return e}ku.prototype={isLink:!1,toString:function(){return this.v},toHref:function(u){return this.toString()},toFormattedString:function(u){var D=this.toString(),e=u.get("truncate",D,this),t=u.get("format",D,this);return e&&t.length>e?t.substring(0,e)+"…":t},toFormattedHref:function(u){return u.get("formatHref",this.toHref(u.get("defaultProtocol")),this)},startIndex:function(){return this.tk[0].s},endIndex:function(){return this.tk[this.tk.length-1].e},toObject:function(u){return void 0===u&&(u=pu.defaultProtocol),{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(u),start:this.startIndex(),end:this.endIndex()}},toFormattedObject:function(u){return{type:this.t,value:this.toFormattedString(u),isLink:this.isLink,href:this.toFormattedHref(u),start:this.startIndex(),end:this.endIndex()}},validate:function(u){return u.get("validate",this.toString(),this)},render:function(u){var e=this,t=this.toFormattedHref(u),n=u.get("tagName",t,e),a=this.toFormattedString(u),r={},i=u.get("className",t,e),o=u.get("target",t,e),s=u.get("rel",t,e),l=u.getObj("attributes",t,e),c=u.getObj("events",t,e);return r.href=t,i&&(r.class=i),o&&(r.target=o),s&&(r.rel=s),l&&D(r,l),{tagName:n,attributes:r,content:a,eventListeners:c}}};var wu=yu("email",{isLink:!0,toHref:function(){return"mailto:"+this.toString()}}),ju=yu("text"),xu=yu("nl"),Ou=yu("url",{isLink:!0,toHref:function(u){return void 0===u&&(u=pu.defaultProtocol),this.hasProtocol()?this.v:u+"://"+this.v},hasProtocol:function(){var u=this.tk;return u.length>=2&&iu.indexOf(u[0].t)>=0&&u[1].t===P}}),Su=Object.freeze({__proto__:null,MultiToken:ku,Base:ku,createTokenClass:yu,Email:wu,Text:ju,Nl:xu,Url:Ou});function Lu(){var u=t(),D=t(),e=t(),r=t(),i=t(),s=t(),l=t(),c=t(),V=t(),eu=n(Ou),tu=t(),nu=n(Ou),au=n(Ou),iu=t(),ou=t(),su=t(),lu=t(),cu=t(),Fu=n(Ou),Eu=n(Ou),Au=n(Ou),Cu=n(Ou),hu=t(),gu=t(),fu=t(),du=t(),mu=t(),pu=t(),Bu=t(),bu=n(wu),vu=t(),ku=n(wu),yu=t(),ju=t(),Su=t(),Lu=t(),zu=n(xu);a(u,m,zu),a(u,C,D),a(u,h,e),a(u,g,D),a(u,f,e),a(D,P,s),a(e,P,r),a(r,X,i),a(i,X,s),a(u,F,eu),o(u,ru,l),a(l,M,c),a(l,I,V),o(l,ru,l),a(D,M,c),a(D,I,V),o(D,ru,l),a(e,M,c),a(e,I,V),o(e,ru,l),a(c,E,eu),a(c,A,eu),o(c,ru,l),o(V,ru,l),a(eu,M,c),a(eu,I,V),o(eu,ru,l),a(eu,P,tu),a(eu,X,au),o(tu,Du,nu),a(nu,X,au),a(s,X,au),o(s,ru,au);var Tu=ru.concat([x,S,L,z,T,N,H,_,I,d,K,q,Q,W,X,uu,Z,$]),Nu=[O,w,k,y,j,P,R,M,U,b,p,B,v,Y,G,J];a(au,p,ou),a(au,B,su),a(au,b,lu),a(au,v,cu),a(iu,p,ou),a(iu,B,su),a(iu,b,lu),a(iu,v,cu),a(ou,k,au),a(su,y,au),a(lu,w,au),a(cu,j,au),a(ou,k,au),a(Eu,y,au),a(Au,w,au),a(Cu,j,au),a(ou,k,au),a(gu,y,au),a(fu,w,au),a(du,j,au),o(ou,Tu,ou),o(su,Tu,Eu),o(lu,Tu,Au),o(cu,Tu,Cu),o(ou,Nu,ou),o(su,Nu,gu),o(lu,Nu,fu),o(cu,Nu,du),o(Fu,Tu,Fu),o(Eu,Tu,Eu),o(Au,Tu,Au),o(Cu,Tu,Cu),o(Fu,Nu,Fu),o(Eu,Nu,Eu),o(Au,Nu,Au),o(Cu,Nu,Cu),o(hu,Tu,hu),o(gu,Tu,Eu),o(fu,Tu,Au),o(du,Tu,Cu),o(hu,Nu,hu),o(gu,Nu,gu),o(fu,Nu,fu),o(du,Nu,du),o(au,Tu,au),o(iu,Tu,au),o(au,Nu,iu),o(iu,Nu,iu);var Pu=[x,O,S,z,T,N,k,H,_,I,d,p,K,q,Q,W,Y,X,uu,Z,$];return a(u,Z,yu),o(l,Pu,yu),a(l,L,ju),o(eu,Pu,yu),a(eu,L,ju),o(c,Pu,yu),o(yu,ru,yu),o(yu,Pu,yu),a(yu,L,ju),a(yu,M,Lu),o(Lu,ru,yu),o(Lu,Pu,yu),a(ju,F,bu),o(ju,ru,mu),o(Su,ru,mu),a(mu,M,pu),a(mu,I,Bu),a(pu,E,bu),a(pu,A,bu),o(pu,ru,mu),o(Bu,ru,mu),a(bu,M,pu),a(bu,I,Bu),o(bu,ru,mu),a(bu,P,vu),o(vu,Du,ku),u}function zu(u,D,e){var t=e[0].s,n=e[e.length-1].e;return new u(D.slice(t,n),e)}var Tu="undefined"!=typeof console&&console&&console.warn||function(){},Nu={scanner:null,parser:null,pluginQueue:[],customSchemes:[],initialized:!1};function Pu(){Nu.scanner={start:du(Nu.customSchemes),tokens:lu},Nu.parser={start:Lu(),tokens:Su};for(var u={createTokenClass:yu},D=0;D<Nu.pluginQueue.length;D++)Nu.pluginQueue[D][1]({scanner:Nu.scanner,parser:Nu.parser,utils:u});Nu.initialized=!0}function Ru(u){return Nu.initialized||Pu(),function(u,D,e){for(var t=e.length,n=0,a=[],r=[];n<t;){for(var o=u,s=null,l=null,c=0,F=null,E=-1;n<t&&!(s=i(o,e[n].t));)r.push(e[n++]);for(;n<t&&(l=s||i(o,e[n].t));)s=null,(o=l).accepts()?(E=0,F=o):E>=0&&E++,n++,c++;if(E<0)(n-=c)<t&&(r.push(e[n]),n++);else{r.length>0&&(a.push(zu(ju,D,r)),r=[]),n-=E,c-=E;var A=F.t,C=e.slice(n-c,n);a.push(zu(A,D,C))}}return r.length>0&&a.push(zu(ju,D,r)),a}(Nu.parser.start,u,function(u,D){for(var e=function(u){for(var D=[],e=u.length,t=0;t<e;){var n=u.charCodeAt(t),a=void 0,r=n<55296||n>56319||t+1===e||(a=u.charCodeAt(t+1))<56320||a>57343?u[t]:u.slice(t,t+2);D.push(r),t+=r.length}return D}(D.replace(/[A-Z]/g,(function(u){return u.toLowerCase()}))),t=e.length,n=[],a=0,r=0;r<t;){for(var o=u,s=null,l=0,c=null,F=-1,E=-1;r<t&&(s=i(o,e[r]));)(o=s).accepts()?(F=0,E=0,c=o):F>=0&&(F+=e[r].length,E++),l+=e[r].length,a+=e[r].length,r++;a-=F,r-=E,l-=F,n.push({t:c.t,v:D.substr(a-l,l),s:a-l,e:a})}return n}(Nu.scanner.start,u))}return u.MultiToken=ku,u.Options=Bu,u.find=function(u,D,e){void 0===D&&(D=null),void 0===e&&(e=null);for(var t=new Bu(e),n=Ru(u),a=[],r=0;r<n.length;r++){var i=n[r];!i.isLink||D&&i.t!==D||a.push(i.toFormattedObject(t))}return a},u.init=Pu,u.options=vu,u.registerCustomProtocol=function(u,D){if(void 0===D&&(D=!1),Nu.initialized&&Tu('linkifyjs: already initialized - will not register custom protocol "'+u+'" until you manually call linkify.init(). To avoid this warning, please register all custom schemes before invoking linkify the first time.'),!/^[a-z]+(-[a-z]+)*$/.test(u))throw new Error("linkifyjs: incorrect protocol format.\n 1. Must only contain lowercase ASCII letters or -\n 2. Cannot start or end with -\n 3. - cannot repeat");Nu.customSchemes.push([u,D])},u.registerPlugin=function(u,D){if("function"!=typeof D)throw new Error("linkifyjs: Invalid plugin "+D+" (expects function)");for(var e=0;e<Nu.pluginQueue.length;e++)if(u===Nu.pluginQueue[e][0])return Tu('linkifyjs: plugin "'+u+'" already registered - will be overwritten'),void(Nu.pluginQueue[e]=[u,D]);Nu.pluginQueue.push([u,D]),Nu.initialized&&Tu('linkifyjs: already initialized - will not register plugin "'+u+'" until you manually call linkify.init(). To avoid this warning, please register all plugins before invoking linkify the first time.')},u.reset=function(){Nu.scanner=null,Nu.parser=null,Nu.pluginQueue=[],Nu.customSchemes=[],Nu.initialized=!1},u.test=function(u,D){void 0===D&&(D=null);var e=Ru(u);return 1===e.length&&e[0].isLink&&(!D||e[0].t===D)},u.tokenize=Ru,Object.defineProperty(u,"__esModule",{value:!0}),u}({});

@@ -1,55 +0,187 @@

export type LinkifyEventListeners = {
export type Token = {
t: string;
v: string;
s: number;
e: number;
};
/**
* An object where each key is a valid DOM Event Name such as `click` or `focus`
* and each value is an event handler function.
*
* https://developer.mozilla.org/en-US/docs/Web/API/Element#events
*/
export type EventListeners = {
[event: string]: Function;
};
export type LinkifyIntermediateRepresentation = {
/**
* All formatted properties required to render a link, including `tagName`,
* `attributes`, `content` and `eventListeners`.
*/
export type IntermediateRepresentation = {
tagName: any;
attributes: any;
attributes: {
[attr: string]: any;
};
content: string;
events: LinkifyEventListeners;
eventListeners: EventListeners;
};
/**
* @typedef {?{ [event: string]: Function }} LinkifyEventListeners
* Specify either an object described by the template type `O` or a function.
*
* The function takes a string value (usually the link's href attribute), the
* link type (`'url'`, `'hashtag`', etc.) and an internal token representation
* of the link. It should return an object of the template type `O`
*/
export type OptObj<O> = O | ((value: string, type: string, token: MultiToken) => O);
/**
* @typedef {{ tagName: any, attributes: any, content: string, events: LinkifyEventListeners }} LinkifyIntermediateRepresentation
* Specify either a function described by template type `F` or an object.
*
* Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each
* value should be a function with template type `F` that is called when the
* corresponding link type is encountered.
*/
export type OptFn<F> = F | {
[type: string]: F;
};
/**
* @class Options
* @param {Object | Options} [opts] Set option properties besides the defaults
* @param {(ir: LinkifyIntermediateRepresentation) => any} [defaultRender] (For internal use) default
* render function that determines how to generate an HTML element based on a
* link token's derived tagName, attributes and HTML. Similar to render option
* Specify either a value with template type `V`, a function that returns `V` or
* an object where each value resolves to `V`.
*
* The function takes a string value (usually the link's href attribute), the
* link type (`'url'`, `'hashtag`', etc.) and an internal token representation
* of the link. It should return an object of the template type `V`
*
* For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).
* Each value should either have type `V` or a function that returns V. This
* function similarly takes a string value and a token.
*
* Example valid types for `Opt<string>`:
*
* ```js
* 'hello'
* (value, type, token) => 'world'
* { url: 'hello', email: (value, token) => 'world'}
* ```
*/
export function Options(opts?: any | Options, defaultRender?: (ir: LinkifyIntermediateRepresentation) => any): void;
export class Options {
export type Opt<V> = V | {
[type: string]: V | ((value: string, token: MultiToken) => V);
} | ((value: string, type: string, token: MultiToken) => V);
/**
* See available options: https://linkify.js.org/docs/options.html
*/
export type Opts = {
defaultProtocol?: string;
events?: OptObj<EventListeners>;
format?: Opt<string>;
formatHref?: Opt<string>;
nl2br?: boolean;
tagName?: Opt<any>;
target?: Opt<string>;
rel?: Opt<string>;
validate?: Opt<boolean>;
truncate?: Opt<number>;
className?: Opt<string>;
attributes?: OptObj<{
[attr: string]: any;
}>;
ignoreTags?: string[];
render?: OptFn<(ir: IntermediateRepresentation) => any>;
};
/******************************************************************************
Multi-Tokens
Tokens composed of arrays of TextTokens
******************************************************************************/
/**
* @param {string} value
* @param {Token[]} tokens
*/
export function MultiToken(value: string, tokens: Token[]): void;
export class MultiToken {
/******************************************************************************
Multi-Tokens
Tokens composed of arrays of TextTokens
******************************************************************************/
/**
* @typedef {?{ [event: string]: Function }} LinkifyEventListeners
* @param {string} value
* @param {Token[]} tokens
*/
constructor(value: string, tokens: Token[]);
t: string;
v: string;
tk: Token[];
isLink: boolean;
toString: () => string;
toHref: (scheme?: string) => string;
toFormattedString: (options: Options) => string;
toFormattedHref: (options: Options) => string;
startIndex: () => number;
endIndex: () => number;
toObject: (protocol?: string) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
toFormattedObject: (options: Options) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
validate: (options: Options) => boolean;
render: (options: Options) => {
tagName: any;
attributes: {
href: string;
class: any;
target: any;
rel: any;
};
content: string;
eventListeners: any;
};
}
/**
* Utility class for linkify interfaces to apply specified
* {@link Opts formatting and rendering options}.
*
* @param {Opts | Options} [opts] Option value overrides.
* @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For
* internal use) default render function that determines how to generate an
* HTML element based on a link token's derived tagName, attributes and HTML.
* Similar to render option
*/
export function Options(opts?: Opts | Options, defaultRender?: (ir: IntermediateRepresentation) => any): void;
export class Options {
/**
* @typedef {{ tagName: any, attributes: any, content: string, events: LinkifyEventListeners }} LinkifyIntermediateRepresentation
* Utility class for linkify interfaces to apply specified
* {@link Opts formatting and rendering options}.
*
* @param {Opts | Options} [opts] Option value overrides.
* @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For
* internal use) default render function that determines how to generate an
* HTML element based on a link token's derived tagName, attributes and HTML.
* Similar to render option
*/
/**
* @class Options
* @param {Object | Options} [opts] Set option properties besides the defaults
* @param {(ir: LinkifyIntermediateRepresentation) => any} [defaultRender] (For internal use) default
* render function that determines how to generate an HTML element based on a
* link token's derived tagName, attributes and HTML. Similar to render option
*/
constructor(opts?: any | Options, defaultRender?: (ir: LinkifyIntermediateRepresentation) => any);
o: {};
defaultRender: null;
ignoreTags: any[];
constructor(opts?: Opts | Options, defaultRender?: (ir: IntermediateRepresentation) => any);
/** @protected */
o: Required<Opts>;
defaultRender: (ir: IntermediateRepresentation) => any;
ignoreTags: string[];
check: (token: MultiToken) => boolean;
get: (key: string, operator?: any, token?: MultiToken) => any;
getObj: (key: any, operator: any, token: any) => any;
get: <K extends keyof Opts>(key: K, operator?: string, token?: MultiToken) => Opts[K] | any;
getObj: <L extends keyof Opts>(key: L, operator?: string, token?: MultiToken) => Opts[L] | any;
render: (token: MultiToken) => any;
}
/**
Find a list of linkable items in the given string.
@param {string} str string to find links in
@param {string} [type] (optional) only find links of a specific type, e.g.,
'url' or 'email'
@param {Options|Object} [options] (optional) formatting options for final output
* Find a list of linkable items in the given string.
* @param {string} str string to find links in
* @param {string} [type] only find links of a specific type, e.g., 'url' or 'email'
* @param {Opts} [opts] formatting options for final output
*/
export function find(str: string, type?: string, options?: Options | any): {
export function find(str: string, type?: string, opts?: Opts): {
type: string;

@@ -69,20 +201,5 @@ value: string;

__proto__: any;
defaults: {
defaultProtocol: string;
events: any;
format: typeof noop;
formatHref: typeof noop;
nl2br: boolean;
tagName: string;
target: any;
rel: any;
validate: boolean;
truncate: number;
className: any;
attributes: any;
ignoreTags: any[];
render: any;
};
defaults: Required<Opts>;
Options: typeof Options;
assign: (target: any, properties: any) => void;
assign: <A, B>(target: A, properties: B) => A & B;
}>;

@@ -94,3 +211,3 @@ /**

* @param {string} protocol
* @param {boolean} [optionalSlashSlash] if set to true,
* @param {boolean} [optionalSlashSlash]
*/

@@ -128,60 +245,6 @@ export function registerCustomProtocol(protocol: string, optionalSlashSlash?: boolean): void;

/**
Parse a string into tokens that represent linkable and non-linkable sub-components
@param {string} str
@return {MultiToken[]} tokens
*/
* Parse a string into tokens that represent linkable and non-linkable sub-components
* @param {string} str
* @return {MultiToken[]} tokens
*/
export function tokenize(str: string): MultiToken[];
/**
Abstract class used for manufacturing tokens of text tokens. That is rather
than the value for a token being a small string of text, it's value an array
of text tokens.
Used for grouping together URLs, emails, hashtags, and other potential
creations.
@class MultiToken
@param {string} value
@param {{t: string, v: string, s: number, e: number}[]} tokens
@abstract
*/
declare function MultiToken(): void;
declare class MultiToken {
t: string;
isLink: boolean;
toString: () => string;
toHref: () => string;
toFormattedString: (opts: Options) => string;
toFormattedHref: (opts?: Options) => string;
startIndex: () => number;
endIndex: () => number;
toObject: (protocol?: string) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
toFormattedObject: (opts: Options) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
validate: (opts: Options) => boolean;
render: (opts: Options) => {
tagName: any;
attributes: {
href: string;
class: any;
target: any;
rel: any;
};
content: string;
eventListeners: any;
};
}
declare function noop(val: any): any;
export {};
export var __esModule: boolean;
export type LinkifyEventListeners = {
export type Token = {
t: string;
v: string;
s: number;
e: number;
};
/**
* An object where each key is a valid DOM Event Name such as `click` or `focus`
* and each value is an event handler function.
*
* https://developer.mozilla.org/en-US/docs/Web/API/Element#events
*/
export type EventListeners = {
[event: string]: Function;
};
export type LinkifyIntermediateRepresentation = {
/**
* All formatted properties required to render a link, including `tagName`,
* `attributes`, `content` and `eventListeners`.
*/
export type IntermediateRepresentation = {
tagName: any;
attributes: any;
attributes: {
[attr: string]: any;
};
content: string;
events: LinkifyEventListeners;
eventListeners: EventListeners;
};
/**
* @typedef {?{ [event: string]: Function }} LinkifyEventListeners
* Specify either an object described by the template type `O` or a function.
*
* The function takes a string value (usually the link's href attribute), the
* link type (`'url'`, `'hashtag`', etc.) and an internal token representation
* of the link. It should return an object of the template type `O`
*/
export type OptObj<O> = O | ((value: string, type: string, token: MultiToken) => O);
/**
* @typedef {{ tagName: any, attributes: any, content: string, events: LinkifyEventListeners }} LinkifyIntermediateRepresentation
* Specify either a function described by template type `F` or an object.
*
* Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each
* value should be a function with template type `F` that is called when the
* corresponding link type is encountered.
*/
export type OptFn<F> = F | {
[type: string]: F;
};
/**
* @class Options
* @param {Object | Options} [opts] Set option properties besides the defaults
* @param {(ir: LinkifyIntermediateRepresentation) => any} [defaultRender] (For internal use) default
* render function that determines how to generate an HTML element based on a
* link token's derived tagName, attributes and HTML. Similar to render option
* Specify either a value with template type `V`, a function that returns `V` or
* an object where each value resolves to `V`.
*
* The function takes a string value (usually the link's href attribute), the
* link type (`'url'`, `'hashtag`', etc.) and an internal token representation
* of the link. It should return an object of the template type `V`
*
* For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).
* Each value should either have type `V` or a function that returns V. This
* function similarly takes a string value and a token.
*
* Example valid types for `Opt<string>`:
*
* ```js
* 'hello'
* (value, type, token) => 'world'
* { url: 'hello', email: (value, token) => 'world'}
* ```
*/
export function Options(opts?: any | Options, defaultRender?: (ir: LinkifyIntermediateRepresentation) => any): void;
export class Options {
export type Opt<V> = V | {
[type: string]: V | ((value: string, token: MultiToken) => V);
} | ((value: string, type: string, token: MultiToken) => V);
/**
* See available options: https://linkify.js.org/docs/options.html
*/
export type Opts = {
defaultProtocol?: string;
events?: OptObj<EventListeners>;
format?: Opt<string>;
formatHref?: Opt<string>;
nl2br?: boolean;
tagName?: Opt<any>;
target?: Opt<string>;
rel?: Opt<string>;
validate?: Opt<boolean>;
truncate?: Opt<number>;
className?: Opt<string>;
attributes?: OptObj<{
[attr: string]: any;
}>;
ignoreTags?: string[];
render?: OptFn<(ir: IntermediateRepresentation) => any>;
};
/******************************************************************************
Multi-Tokens
Tokens composed of arrays of TextTokens
******************************************************************************/
/**
* @param {string} value
* @param {Token[]} tokens
*/
export function MultiToken(value: string, tokens: Token[]): void;
export class MultiToken {
/******************************************************************************
Multi-Tokens
Tokens composed of arrays of TextTokens
******************************************************************************/
/**
* @typedef {?{ [event: string]: Function }} LinkifyEventListeners
* @param {string} value
* @param {Token[]} tokens
*/
constructor(value: string, tokens: Token[]);
t: string;
v: string;
tk: Token[];
isLink: boolean;
toString: () => string;
toHref: (scheme?: string) => string;
toFormattedString: (options: Options) => string;
toFormattedHref: (options: Options) => string;
startIndex: () => number;
endIndex: () => number;
toObject: (protocol?: string) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
toFormattedObject: (options: Options) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
validate: (options: Options) => boolean;
render: (options: Options) => {
tagName: any;
attributes: {
href: string;
class: any;
target: any;
rel: any;
};
content: string;
eventListeners: any;
};
}
/**
* Utility class for linkify interfaces to apply specified
* {@link Opts formatting and rendering options}.
*
* @param {Opts | Options} [opts] Option value overrides.
* @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For
* internal use) default render function that determines how to generate an
* HTML element based on a link token's derived tagName, attributes and HTML.
* Similar to render option
*/
export function Options(opts?: Opts | Options, defaultRender?: (ir: IntermediateRepresentation) => any): void;
export class Options {
/**
* @typedef {{ tagName: any, attributes: any, content: string, events: LinkifyEventListeners }} LinkifyIntermediateRepresentation
* Utility class for linkify interfaces to apply specified
* {@link Opts formatting and rendering options}.
*
* @param {Opts | Options} [opts] Option value overrides.
* @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For
* internal use) default render function that determines how to generate an
* HTML element based on a link token's derived tagName, attributes and HTML.
* Similar to render option
*/
/**
* @class Options
* @param {Object | Options} [opts] Set option properties besides the defaults
* @param {(ir: LinkifyIntermediateRepresentation) => any} [defaultRender] (For internal use) default
* render function that determines how to generate an HTML element based on a
* link token's derived tagName, attributes and HTML. Similar to render option
*/
constructor(opts?: any | Options, defaultRender?: (ir: LinkifyIntermediateRepresentation) => any);
o: {};
defaultRender: null;
ignoreTags: any[];
constructor(opts?: Opts | Options, defaultRender?: (ir: IntermediateRepresentation) => any);
/** @protected */
o: Required<Opts>;
defaultRender: (ir: IntermediateRepresentation) => any;
ignoreTags: string[];
check: (token: MultiToken) => boolean;
get: (key: string, operator?: any, token?: MultiToken) => any;
getObj: (key: any, operator: any, token: any) => any;
get: <K extends keyof Opts>(key: K, operator?: string, token?: MultiToken) => Opts[K] | any;
getObj: <L extends keyof Opts>(key: L, operator?: string, token?: MultiToken) => Opts[L] | any;
render: (token: MultiToken) => any;
}
/**
Find a list of linkable items in the given string.
@param {string} str string to find links in
@param {string} [type] (optional) only find links of a specific type, e.g.,
'url' or 'email'
@param {Options|Object} [options] (optional) formatting options for final output
* Find a list of linkable items in the given string.
* @param {string} str string to find links in
* @param {string} [type] only find links of a specific type, e.g., 'url' or 'email'
* @param {Opts} [opts] formatting options for final output
*/
export function find(str: string, type?: string, options?: Options | any): {
export function find(str: string, type?: string, opts?: Opts): {
type: string;

@@ -70,20 +202,5 @@ value: string;

__proto__: any;
defaults: {
defaultProtocol: string;
events: any;
format: typeof noop;
formatHref: typeof noop;
nl2br: boolean;
tagName: string;
target: any;
rel: any;
validate: boolean;
truncate: number;
className: any;
attributes: any;
ignoreTags: any[];
render: any;
};
defaults: Required<Opts>;
Options: typeof Options;
assign: (target: any, properties: any) => void;
assign: <A, B>(target: A, properties: B) => A & B;
}>;

@@ -95,3 +212,3 @@ /**

* @param {string} protocol
* @param {boolean} [optionalSlashSlash] if set to true,
* @param {boolean} [optionalSlashSlash]
*/

@@ -129,60 +246,6 @@ export function registerCustomProtocol(protocol: string, optionalSlashSlash?: boolean): void;

/**
Parse a string into tokens that represent linkable and non-linkable sub-components
@param {string} str
@return {MultiToken[]} tokens
*/
* Parse a string into tokens that represent linkable and non-linkable sub-components
* @param {string} str
* @return {MultiToken[]} tokens
*/
export function tokenize(str: string): MultiToken[];
/**
Abstract class used for manufacturing tokens of text tokens. That is rather
than the value for a token being a small string of text, it's value an array
of text tokens.
Used for grouping together URLs, emails, hashtags, and other potential
creations.
@class MultiToken
@param {string} value
@param {{t: string, v: string, s: number, e: number}[]} tokens
@abstract
*/
declare function MultiToken(): void;
declare class MultiToken {
t: string;
isLink: boolean;
toString: () => string;
toHref: () => string;
toFormattedString: (opts: Options) => string;
toFormattedHref: (opts?: Options) => string;
startIndex: () => number;
endIndex: () => number;
toObject: (protocol?: string) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
toFormattedObject: (opts: Options) => {
type: string;
value: string;
isLink: boolean;
href: string;
start: number;
end: number;
};
validate: (opts: Options) => boolean;
render: (opts: Options) => {
tagName: any;
attributes: {
href: string;
class: any;
target: any;
rel: any;
};
content: string;
eventListeners: any;
};
}
declare function noop(val: any): any;
export {};
{
"name": "linkifyjs",
"version": "4.0.0-beta.3",
"version": "4.0.0-beta.4",
"description": "Find URLs, email addresses, #hashtags and @mentions in plain-text strings, then convert them into HTML <a> links.",

@@ -5,0 +5,0 @@ "main": "index.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc