From 4a989e75a7755185b49e162ae62cc21052d902bc Mon Sep 17 00:00:00 2001 From: gh-actions Date: Mon, 23 Dec 2024 14:28:38 +0000 Subject: [PATCH] Deploy website - based on 13b6db355d0df11b7dbed93ef4195a6f4f12b09f --- 01a85c17.98fe6cc3.js => 01a85c17.9f226a6d.js | 2 +- 119.251c9eea.js => 119.6989fa60.js | 2 +- 1be78505.1b94a83e.js => 1be78505.78fd8679.js | 2 +- 1f9e12e6.efa5d6fb.js => 1f9e12e6.d573d4b1.js | 2 +- 404.html | 6 +++--- 57423a8a.f8826373.js => 57423a8a.e595d57a.js | 2 +- 5d1574ce.a3352eb8.js => 5d1574ce.a685f3c5.js | 2 +- 672ba3d6.b6f03b8c.js => 672ba3d6.419e8198.js | 2 +- 6875c492.941daf3b.js => 6875c492.bdd2f783.js | 4 ++-- ....js.LICENSE.txt => 6875c492.bdd2f783.js.LICENSE.txt | 0 83e9e333.c5dae372.js => 83e9e333.c99f3ace.js | 2 +- 9c0c4329.494beb3e.js => 9c0c4329.0694b22c.js | 4 ++-- ....js.LICENSE.txt => 9c0c4329.0694b22c.js.LICENSE.txt | 0 a6aa9e1f.7b3149f2.js => a6aa9e1f.1da6842a.js | 4 ++-- ....js.LICENSE.txt => a6aa9e1f.1da6842a.js.LICENSE.txt | 0 blog/announcing-gnet-v1-zh/index.html | 10 +++++----- blog/announcing-gnet-v1/index.html | 10 +++++----- blog/announcing-gnet-v2-3-0/index.html | 10 +++++----- blog/announcing-gnet-v2-5-0/index.html | 10 +++++----- blog/announcing-gnet-v2-6-0/index.html | 10 +++++----- blog/announcing-gnet-v2/index.html | 10 +++++----- blog/index.html | 10 +++++----- blog/tags/domain-presentation/index.html | 10 +++++----- "blog/tags/domain-\345\261\225\347\244\272/index.html" | 10 +++++----- blog/tags/index.html | 10 +++++----- blog/tags/type-announcement/index.html | 10 +++++----- "blog/tags/type-\345\256\230\345\256\243/index.html" | 10 +++++----- c4f5d8e4.ee212d95.js => c4f5d8e4.38cfeaa6.js | 4 ++-- ....js.LICENSE.txt => c4f5d8e4.38cfeaa6.js.LICENSE.txt | 0 ccc49370.e198add5.js => ccc49370.5197108f.js | 4 ++-- ....js.LICENSE.txt => ccc49370.5197108f.js.LICENSE.txt | 0 community/index.html | 10 +++++----- contact/index.html | 10 +++++----- docs/about/overview-zh/index.html | 10 +++++----- docs/about/overview/index.html | 10 +++++----- docs/benchmark/index.html | 10 +++++----- docs/faq/index.html | 10 +++++----- docs/index.html | 4 ++-- docs/quickstart/index.html | 10 +++++----- docs/tutorial/best-practices/index.html | 10 +++++----- docs/v1.x/doc-for-gnet-v1-zh/index.html | 10 +++++----- docs/v1.x/doc-for-gnet-v1/index.html | 10 +++++----- .../2019-11-07-supported-multiple-codecs/index.html | 10 +++++----- highlights/2019-11-12-supported-windows/index.html | 10 +++++----- .../2020-03-13-released-first-version/index.html | 10 +++++----- .../index.html | 10 +++++----- highlights/2020-04-03-released-1-1-0/index.html | 10 +++++----- highlights/2020-05-11-released-1-2-0/index.html | 10 +++++----- highlights/2020-07-02-raw-syscalls-sockets/index.html | 10 +++++----- highlights/2020-09-13-released-1-3-0/index.html | 10 +++++----- .../2020-09-13-supported-locking-os-thread/index.html | 10 +++++----- highlights/2021-02-17-released-1-4-0/index.html | 10 +++++----- highlights/2021-07-11-released-1-5-0/index.html | 10 +++++----- highlights/2021-07-20-released-1-5-2/index.html | 10 +++++----- highlights/2021-12-05-released-1-6-0/index.html | 10 +++++----- highlights/2022-02-27-release-of-gnet-v2/index.html | 10 +++++----- .../2022-12-03-release-of-gnet-v2-2-0/index.html | 10 +++++----- .../index.html | 10 +++++----- .../2023-07-01-release-of-gnet-v2-3-0/index.html | 10 +++++----- .../index.html | 10 +++++----- .../2024-04-04-release-of-gnet-v2-4-0/index.html | 10 +++++----- .../2024-04-22-release-of-gnet-v2-5-0/index.html | 10 +++++----- .../2024-11-09-release-of-gnet-v2-6-0/index.html | 10 +++++----- highlights/index.html | 10 +++++----- highlights/tags/domain-load-balancing/index.html | 10 +++++----- highlights/tags/domain-os/index.html | 10 +++++----- highlights/tags/domain-socket/index.html | 10 +++++----- highlights/tags/domain-thread/index.html | 10 +++++----- highlights/tags/domain-v-1-0-0/index.html | 10 +++++----- highlights/tags/domain-v-1-1-0/index.html | 10 +++++----- highlights/tags/domain-v-1-2-0/index.html | 10 +++++----- highlights/tags/domain-v-1-3-0/index.html | 10 +++++----- highlights/tags/domain-v-1-4-0/index.html | 10 +++++----- highlights/tags/domain-v-1-5-0/index.html | 10 +++++----- highlights/tags/domain-v-1-5-2/index.html | 10 +++++----- highlights/tags/domain-v-1-6-0/index.html | 10 +++++----- highlights/tags/domain-v-2-0-0/index.html | 10 +++++----- highlights/tags/domain-v-2-2-0/index.html | 10 +++++----- highlights/tags/domain-v-2-3-0-rc-1/index.html | 10 +++++----- highlights/tags/domain-v-2-3-0/index.html | 10 +++++----- highlights/tags/domain-v-2-3-5/index.html | 10 +++++----- highlights/tags/domain-v-2-4-0/index.html | 10 +++++----- highlights/tags/domain-v-2-5-0/index.html | 10 +++++----- highlights/tags/domain-v-2-6-0/index.html | 10 +++++----- highlights/tags/index.html | 10 +++++----- highlights/tags/platform-arm-64/index.html | 10 +++++----- highlights/tags/platform-windows/index.html | 10 +++++----- highlights/tags/type-new-feature/index.html | 10 +++++----- highlights/tags/type-optimization/index.html | 10 +++++----- highlights/tags/type-release/index.html | 10 +++++----- highlights/tags/type-tag/index.html | 10 +++++----- index.html | 10 +++++----- runtime~main.588a5677.js => runtime~main.adbdad8d.js | 2 +- 93 files changed, 384 insertions(+), 384 deletions(-) rename 01a85c17.98fe6cc3.js => 01a85c17.9f226a6d.js (99%) rename 119.251c9eea.js => 119.6989fa60.js (99%) rename 1be78505.1b94a83e.js => 1be78505.78fd8679.js (99%) rename 1f9e12e6.efa5d6fb.js => 1f9e12e6.d573d4b1.js (99%) rename 57423a8a.f8826373.js => 57423a8a.e595d57a.js (99%) rename 5d1574ce.a3352eb8.js => 5d1574ce.a685f3c5.js (99%) rename 672ba3d6.b6f03b8c.js => 672ba3d6.419e8198.js (99%) rename 6875c492.941daf3b.js => 6875c492.bdd2f783.js (99%) rename 6875c492.941daf3b.js.LICENSE.txt => 6875c492.bdd2f783.js.LICENSE.txt (100%) rename 83e9e333.c5dae372.js => 83e9e333.c99f3ace.js (99%) rename 9c0c4329.494beb3e.js => 9c0c4329.0694b22c.js (99%) rename 9c0c4329.494beb3e.js.LICENSE.txt => 9c0c4329.0694b22c.js.LICENSE.txt (100%) rename a6aa9e1f.7b3149f2.js => a6aa9e1f.1da6842a.js (99%) rename a6aa9e1f.7b3149f2.js.LICENSE.txt => a6aa9e1f.1da6842a.js.LICENSE.txt (100%) rename c4f5d8e4.ee212d95.js => c4f5d8e4.38cfeaa6.js (99%) rename c4f5d8e4.ee212d95.js.LICENSE.txt => c4f5d8e4.38cfeaa6.js.LICENSE.txt (100%) rename ccc49370.e198add5.js => ccc49370.5197108f.js (99%) rename ccc49370.e198add5.js.LICENSE.txt => ccc49370.5197108f.js.LICENSE.txt (100%) rename runtime~main.588a5677.js => runtime~main.adbdad8d.js (93%) diff --git a/01a85c17.98fe6cc3.js b/01a85c17.9f226a6d.js similarity index 99% rename from 01a85c17.98fe6cc3.js rename to 01a85c17.9f226a6d.js index 20669a3eb..f07d27a14 100644 --- a/01a85c17.98fe6cc3.js +++ b/01a85c17.9f226a6d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{146:function(e,t,a){"use strict";a.r(t);a(277),a(382),a(325),a(26),a(20),a(19),a(53);var n=a(0),r=a.n(n),l=a(273),c=a(268);t.default=function(e){var t=e.tags,a={};Object.keys(t).forEach((function(e){var t=function(e){return e[0].toUpperCase()}(e);a[t]=a[t]||[],a[t].push(e)}));var n=Object.entries(a).sort((function(e,t){var a=e[0],n=t[0];return a===n?0:a>n?1:-1})).map((function(e){var a=e[0],n=e[1];return r.a.createElement("div",{key:a},r.a.createElement("h3",null,a),n.map((function(e){return r.a.createElement(c.a,{className:"padding-right--md",href:t[e].permalink,key:e},t[e].name," (",t[e].count,")")})),r.a.createElement("hr",null))})).filter((function(e){return null!=e}));return r.a.createElement(l.a,{title:"Tags",description:"Blog Tags"},r.a.createElement("div",{className:"container margin-vert--lg"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--8 col--offset-2"},r.a.createElement("h1",null,"Tags"),r.a.createElement("div",{className:"margin-vert--lg"},n)))))}},272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return l}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,l=Math.abs(r-a),c=Math.ceil(l/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(I,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(A,e))}))):null)}))),(s||l)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},r.a.createElement(B,{alt:s.alt,url:m})):r.a.createElement(B,{alt:s.alt,url:m}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},V=a(290),R=a(291),H=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,s=a.url,m=e.children,u=e.title,d=e.noFooter,g=e.description,b=e.image,f=e.keywords,v=(e.permalink,e.version),E=u?u+" | "+i:i,p=b||o,_=s+Object(w.a)(p),k=Object(w.a)(n),N=Object(H.h)(),y=N?"https://gnet.host"+(N.pathname.endsWith("/")?N.pathname:N.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(V.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),E&&r.a.createElement("title",null,E),E&&r.a.createElement("meta",{property:"og:title",content:E}),n&&r.a.createElement("link",{rel:"shortcut icon",href:k}),g&&r.a.createElement("meta",{name:"description",content:g}),g&&r.a.createElement("meta",{property:"og:description",content:g}),v&&r.a.createElement("meta",{name:"docsearch:version",content:v}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:_}),p&&r.a.createElement("meta",{property:"twitter:image",content:_}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+E}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(D,null),r.a.createElement("div",{className:"main-wrapper"},m),!d&&r.a.createElement(F,null)))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,l=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(l)[1]}catch(e){return""}}})},325:function(e,t,a){"use strict";var n=a(12),r=a(30),l=a(25),c=a(13),i=[].sort,o=[1,2,3];n(n.P+n.F*(c((function(){o.sort(void 0)}))||!c((function(){o.sort(null)}))||!a(326)(i)),"Array",{sort:function(e){return void 0===e?i.call(l(this)):i.call(l(this),r(e))}})},326:function(e,t,a){"use strict";var n=a(13);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},382:function(e,t,a){var n=a(12),r=a(91)(!0);n(n.S,"Object",{entries:function(e){return r(e)}})}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{146:function(e,t,a){"use strict";a.r(t);a(277),a(382),a(325),a(26),a(20),a(19),a(53);var n=a(0),r=a.n(n),l=a(273),c=a(268);t.default=function(e){var t=e.tags,a={};Object.keys(t).forEach((function(e){var t=function(e){return e[0].toUpperCase()}(e);a[t]=a[t]||[],a[t].push(e)}));var n=Object.entries(a).sort((function(e,t){var a=e[0],n=t[0];return a===n?0:a>n?1:-1})).map((function(e){var a=e[0],n=e[1];return r.a.createElement("div",{key:a},r.a.createElement("h3",null,a),n.map((function(e){return r.a.createElement(c.a,{className:"padding-right--md",href:t[e].permalink,key:e},t[e].name," (",t[e].count,")")})),r.a.createElement("hr",null))})).filter((function(e){return null!=e}));return r.a.createElement(l.a,{title:"Tags",description:"Blog Tags"},r.a.createElement("div",{className:"container margin-vert--lg"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--8 col--offset-2"},r.a.createElement("h1",null,"Tags"),r.a.createElement("div",{className:"margin-vert--lg"},n)))))}},272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return l}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,l=Math.abs(r-a),c=Math.ceil(l/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(I,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(A,e))}))):null)}))),(s||l)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},r.a.createElement(B,{alt:s.alt,url:m})):r.a.createElement(B,{alt:s.alt,url:m}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},V=a(290),R=a(291),H=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,s=a.url,m=e.children,u=e.title,d=e.noFooter,g=e.description,b=e.image,f=e.keywords,v=(e.permalink,e.version),E=u?u+" | "+i:i,p=b||o,_=s+Object(w.a)(p),k=Object(w.a)(n),N=Object(H.h)(),y=N?"https://gnet.host"+(N.pathname.endsWith("/")?N.pathname:N.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(V.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),E&&r.a.createElement("title",null,E),E&&r.a.createElement("meta",{property:"og:title",content:E}),n&&r.a.createElement("link",{rel:"shortcut icon",href:k}),g&&r.a.createElement("meta",{name:"description",content:g}),g&&r.a.createElement("meta",{property:"og:description",content:g}),v&&r.a.createElement("meta",{name:"docsearch:version",content:v}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:_}),p&&r.a.createElement("meta",{property:"twitter:image",content:_}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+E}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(D,null),r.a.createElement("div",{className:"main-wrapper"},m),!d&&r.a.createElement(F,null)))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,l=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(l)[1]}catch(e){return""}}})},325:function(e,t,a){"use strict";var n=a(12),r=a(30),l=a(25),c=a(13),i=[].sort,o=[1,2,3];n(n.P+n.F*(c((function(){o.sort(void 0)}))||!c((function(){o.sort(null)}))||!a(326)(i)),"Array",{sort:function(e){return void 0===e?i.call(l(this)):i.call(l(this),r(e))}})},326:function(e,t,a){"use strict";var n=a(13);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},382:function(e,t,a){var n=a(12),r=a(91)(!0);n(n.S,"Object",{entries:function(e){return r(e)}})}}]); \ No newline at end of file diff --git a/119.251c9eea.js b/119.6989fa60.js similarity index 99% rename from 119.251c9eea.js rename to 119.6989fa60.js index bb3bab7d9..c1882bd14 100644 --- a/119.251c9eea.js +++ b/119.6989fa60.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return l}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,l=Math.abs(r-a),c=Math.ceil(l/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(I,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(A,e))}))):null)}))),(m||l)&&r.a.createElement("div",{className:"text--center"},m&&m.src&&r.a.createElement("div",{className:"margin-bottom--sm"},m.href?r.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},r.a.createElement(B,{alt:m.alt,url:s})):r.a.createElement(B,{alt:m.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},R=a(290),V=a(291),H=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,m=a.url,s=e.children,u=e.title,d=e.noFooter,g=e.description,b=e.image,f=e.keywords,E=(e.permalink,e.version),v=u?u+" | "+i:i,p=b||o,_=m+Object(w.a)(p),k=Object(w.a)(n),N=Object(H.h)(),y=N?"https://gnet.host"+(N.pathname.endsWith("/")?N.pathname:N.pathname+"/"):null;return r.a.createElement(V.a,null,r.a.createElement(R.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),v&&r.a.createElement("title",null,v),v&&r.a.createElement("meta",{property:"og:title",content:v}),n&&r.a.createElement("link",{rel:"shortcut icon",href:k}),g&&r.a.createElement("meta",{name:"description",content:g}),g&&r.a.createElement("meta",{property:"og:description",content:g}),E&&r.a.createElement("meta",{name:"docsearch:version",content:E}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:_}),p&&r.a.createElement("meta",{property:"twitter:image",content:_}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+v}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(S,null),r.a.createElement("div",{className:"main-wrapper"},s),!d&&r.a.createElement(F,null)))}},347:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(273);t.default=function(){return r.a.createElement(l.a,{title:"Page Not Found"},r.a.createElement("div",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return l}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,l=Math.abs(r-a),c=Math.ceil(l/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(I,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(A,e))}))):null)}))),(m||l)&&r.a.createElement("div",{className:"text--center"},m&&m.src&&r.a.createElement("div",{className:"margin-bottom--sm"},m.href?r.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},r.a.createElement(B,{alt:m.alt,url:s})):r.a.createElement(B,{alt:m.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},R=a(290),V=a(291),H=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,m=a.url,s=e.children,u=e.title,d=e.noFooter,g=e.description,b=e.image,f=e.keywords,E=(e.permalink,e.version),v=u?u+" | "+i:i,p=b||o,_=m+Object(w.a)(p),k=Object(w.a)(n),N=Object(H.h)(),y=N?"https://gnet.host"+(N.pathname.endsWith("/")?N.pathname:N.pathname+"/"):null;return r.a.createElement(V.a,null,r.a.createElement(R.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),v&&r.a.createElement("title",null,v),v&&r.a.createElement("meta",{property:"og:title",content:v}),n&&r.a.createElement("link",{rel:"shortcut icon",href:k}),g&&r.a.createElement("meta",{name:"description",content:g}),g&&r.a.createElement("meta",{property:"og:description",content:g}),E&&r.a.createElement("meta",{name:"docsearch:version",content:E}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:_}),p&&r.a.createElement("meta",{property:"twitter:image",content:_}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+v}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(S,null),r.a.createElement("div",{className:"main-wrapper"},s),!d&&r.a.createElement(F,null)))}},347:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(273);t.default=function(){return r.a.createElement(l.a,{title:"Page Not Found"},r.a.createElement("div",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]); \ No newline at end of file diff --git a/1be78505.1b94a83e.js b/1be78505.78fd8679.js similarity index 99% rename from 1be78505.1b94a83e.js rename to 1be78505.78fd8679.js index f3d0c972d..8faad1c4d 100644 --- a/1be78505.1b94a83e.js +++ b/1be78505.78fd8679.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14,119],{261:function(e,t,a){"use strict";a.r(t);a(26),a(20),a(19),a(53),a(274);var n=a(0),r=a.n(n),l=a(265),c=a(266),i=a.n(c),o=a(267),s=a(69),m=a(273),u=a(1),d=(a(78),a(295),a(296),a(268)),b=a(270),f=a.n(b);a(269);var h=a(280),g=a(281),p=a(155),v=a.n(p);a(156);function E(e){var t=e.item,a=e.level,l=e.onItemClick,c=e.collapsible,o=t.items,s=t.href,m=t.label,b=t.type,f=Object(n.useState)(t.collapsed),h=f[0],g=f[1],p=Object(n.useState)(null),v=p[0],k=p[1];switch(t.collapsed!==v&&(k(t.collapsed),g(t.collapsed)),b){case"category":if(0==o.length)return!1;if(1==a)return r.a.createElement("li",{className:i()("menu__list-item"),key:m},r.a.createElement("div",{className:"title"},m),r.a.createElement("ul",{className:"menu__list"},o.map((function(e){return r.a.createElement(E,{key:e.label,item:e,level:a+1,onItemClick:l,collapsible:c})}))));var y=o[0].href;return r.a.createElement("li",{className:i()("menu__list-item",{"menu__list-item--collapsed":h}),key:m},r.a.createElement(d.a,{activeClassName:"menu__link--active",className:i()("menu__link",{"menu__link--sublist":c}),to:y+"/",onClick:c&&"#!"==y?function(){return g(!h)}:void 0},m),r.a.createElement("ul",{className:"menu__list"},o.map((function(e){return r.a.createElement(E,{key:e.label,item:e,level:a+1,onItemClick:l,collapsible:c})}))));case"link":default:var _=[],N=m;if(m.includes("|")){var O=m.split("|",2);N=O[0],_=JSON.parse(O[1])}var w="hidden"==N;return r.a.createElement("li",{className:i()("menu__list-item",w&&"menu__list-item-hidden"),key:m},r.a.createElement(d.a,Object(u.a)({className:"menu__link",to:s+"/"},/^\/(?!\/)/.test(s)?{activeClassName:"menu__link--active",exact:!0,onClick:l}:{target:"_blank",rel:"noreferrer noopener"}),N,_.length>0&&r.a.createElement("span",{className:"badges"},_.includes("log")&&r.a.createElement("span",{className:"badge badge--secondary",title:"This component works with log events."},"L"),_.includes("metric")&&r.a.createElement("span",{className:"badge badge--secondary",title:"This component works with metric events."},"M"))))}}var k=function(e){var t=Object(n.useState)(!1),a=t[0],l=t[1],c=Object(o.a)(),s=c.siteConfig,m=(s=void 0===s?{}:s).themeConfig.navbar,b=(m=void 0===m?{}:m).title,p=c.isClient,k=Object(g.a)(),y=k.logoLink,_=k.logoLinkProps,N=k.logoImageUrl,O=k.logoAlt,w=e.docsSidebars,j=e.path,C=e.sidebar,T=e.sidebarCollapsible;if(Object(h.a)(a),!C)return null;var x=w[C];if(!x)throw new Error('Cannot find the sidebar "'+C+'" in the sidebar config!');return T&&x.forEach((function(e){return function e(t,a){var n=t.items,r=t.href;switch(t.type){case"category":var l=n.map((function(t){return e(t,a)})).filter((function(e){return e})).length>0;return t.collapsed=!l,l;case"link":default:return r===a}}(e,j)})),r.a.createElement("div",{className:i()("docs-sidebar",v.a.sidebar)},r.a.createElement(d.a,Object(u.a)({className:v.a.sidebarLogo,to:y},_),null!=N&&r.a.createElement(f.a,{key:p,src:N,alt:O}),null!=b&&r.a.createElement("strong",null,b)),r.a.createElement("div",{className:i()("menu","menu--responsive",v.a.menu,{"menu--show":a})},r.a.createElement("button",{"aria-label":a?"Close Menu":"Open Menu",className:"button button--secondary button--sm menu__button",type:"button",onClick:function(){l(!a)}},a?r.a.createElement("span",{className:i()(v.a.sidebarMenuIcon,v.a.sidebarMenuCloseIcon)},"\xd7"):r.a.createElement("svg",{className:v.a.sidebarMenuIcon,xmlns:"http://www.w3.org/2000/svg",height:24,width:24,viewBox:"0 0 32 32",role:"img",focusable:"false"},r.a.createElement("title",null,"Menu"),r.a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))),r.a.createElement("ul",{className:"menu__list"},x.map((function(e){return e.items.length>0&&r.a.createElement(E,{key:e.label,item:e,level:1,onItemClick:function(){l(!1)},collapsible:T})})))))},y=a(299),_=a(347),N=a(324),O=a(157),w=a.n(O);t.default=function(e){var t=e.route,a=e.docsMetadata,n=e.location,c=t.routes.find((function(e){return Object(N.b)(n.pathname,e)}))||{},u=a.permalinkToSidebar,d=a.docsSidebars,b=a.version,f=u[c.path],h=Object(o.a)(),g=h.siteConfig,p=(g=void 0===g?{}:g).themeConfig,v=void 0===p?{}:p,E=h.isClient,O=v.sidebarCollapsible,j=void 0===O||O;return 0===Object.keys(c).length?r.a.createElement(_.default,e):r.a.createElement(m.a,{version:b,key:E},r.a.createElement("div",{className:i()(w.a.container,"container","container--l")},f&&r.a.createElement("div",{className:i()(w.a.sidebar)},r.a.createElement(k,{docsSidebars:d,path:c.path,sidebar:f,sidebarCollapsible:j})),r.a.createElement("main",{className:w.a.main},r.a.createElement(l.a,{components:y.a},Object(s.a)(t.routes)))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return u})),a.d(t,"b",(function(){return f}));var n=a(0),r=a.n(n);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},u=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=m(a),b=n,f=u["".concat(c,".").concat(b)]||u[b]||d[b]||l;return a?r.a.createElement(f,i({ref:t},s,{components:a})):r.a.createElement(f,i({ref:t},s))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,c=new Array(l);c[0]=b;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(M,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(B,e))}))):null)}))),(s||l)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:D.a.footerLogoLink},r.a.createElement(A,{alt:s.alt,url:m})):r.a.createElement(A,{alt:s.alt,url:m}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:D.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},F=a(290),W=a(291),V=a(3);a(135);t.a=function(e){var t=Object(f.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,s=a.url,m=e.children,u=e.title,d=e.noFooter,b=e.description,h=e.image,g=e.keywords,p=(e.permalink,e.version),v=u?u+" | "+i:i,E=h||o,k=s+Object(N.a)(E),y=Object(N.a)(n),_=Object(V.h)(),O=_?"https://gnet.host"+(_.pathname.endsWith("/")?_.pathname:_.pathname+"/"):null;return r.a.createElement(W.a,null,r.a.createElement(F.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),v&&r.a.createElement("title",null,v),v&&r.a.createElement("meta",{property:"og:title",content:v}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),b&&r.a.createElement("meta",{name:"description",content:b}),b&&r.a.createElement("meta",{property:"og:description",content:b}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),E&&r.a.createElement("meta",{property:"og:image",content:k}),E&&r.a.createElement("meta",{property:"twitter:image",content:k}),E&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+v}),E&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),E&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),O&&r.a.createElement("meta",{property:"og:url",content:O}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),O&&r.a.createElement("link",{rel:"canonical",href:O})),r.a.createElement(l.a,null),r.a.createElement(P,null),r.a.createElement("div",{className:"main-wrapper"},m),!d&&r.a.createElement(R,null)))}},297:function(e,t,a){"use strict";(function(e){var n=a(1),r=(a(295),a(296),a(78),a(79),a(306),a(0)),l=a.n(r),c=a(307),i=a.n(c),o=a(320),s=a(52),m=a(266),u=a.n(m),d=a(315),b=a(308),f=a.n(b),h=a(267),g=a(276),p=a(136),v=a.n(p);(void 0!==e?e:window).Prism=s.a,a(309),a(310),a(311),a(312),a(313),a(314);var E=/{([\d,-]+)}/,k=/title=".*"/;t.a=function(e){var t=e.children,a=e.className,c=e.metastring,s=Object(h.a)().siteConfig.themeConfig.prism,m=void 0===s?{}:s,b=Object(r.useState)(!1),p=b[0],y=b[1],_=Object(r.useState)(!1),N=_[0],O=_[1];Object(r.useEffect)((function(){O(!0)}),[]);var w=Object(r.useRef)(null),j=Object(r.useRef)(null),C=[],T="",x=Object(g.a)().isDarkTheme,S=m.theme||d.a,P=m.darkTheme||S,L=x?P:S;if(c&&E.test(c)){var M=c.match(E)[1];C=f.a.parse(M).filter((function(e){return e>0}))}c&&k.test(c)&&(T=c.match(k)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return j.current&&(e=new i.a(j.current,{target:function(){return w.current}})),function(){e&&e.destroy()}}),[j.current,w.current]);var I=a&&a.replace(/language-/,"");!I&&m.defaultLanguage&&(I=m.defaultLanguage);var D=function(){window.getSelection().empty(),y(!0),setTimeout((function(){return y(!1)}),2e3)};return l.a.createElement(o.a,Object(n.a)({},o.b,{key:N,theme:L,code:t.trim(),language:I}),(function(e){var t,a,r=e.className,c=e.style,i=e.tokens,o=e.getLineProps,s=e.getTokenProps;return l.a.createElement(l.a.Fragment,null,T&&l.a.createElement("div",{style:c,className:v.a.codeBlockTitle},T),l.a.createElement("div",{className:v.a.codeBlockContent},l.a.createElement("button",{ref:j,type:"button","aria-label":"Copy code to clipboard",className:u()(v.a.copyButton,(t={},t[v.a.copyButtonWithTitle]=T,t)),onClick:D},p?"Copied":"Copy"),l.a.createElement("pre",{className:u()(r,v.a.codeBlock,(a={},a[v.a.codeBlockWithTitle]=T,a))},l.a.createElement("div",{ref:w,className:v.a.codeBlockLines,style:c},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=o({line:e,key:t});return C.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),l.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return l.a.createElement("span",Object(n.a)({key:t},s({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),l=a.n(r),c=a(268),i=a(297),o=a(278),s=a(141),m=a.n(s);t.a={code:function(e){var t=e.children;return"string"==typeof t?l.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?l.a.createElement("a",e):l.a.createElement(c.a,e)},pre:function(e){return l.a.createElement("div",Object(n.a)({className:m.a.mdxCodeBlock},e))},h1:Object(o.a)("h1"),h2:Object(o.a)("h2"),h3:Object(o.a)("h3"),h4:Object(o.a)("h4"),h5:Object(o.a)("h5"),h6:Object(o.a)("h6")}},347:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(273);t.default=function(){return r.a.createElement(l.a,{title:"Page Not Found"},r.a.createElement("div",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14,119],{261:function(e,t,a){"use strict";a.r(t);a(26),a(20),a(19),a(53),a(274);var n=a(0),r=a.n(n),l=a(265),c=a(266),i=a.n(c),o=a(267),s=a(69),m=a(273),u=a(1),d=(a(78),a(295),a(296),a(268)),b=a(270),f=a.n(b);a(269);var h=a(280),g=a(281),p=a(155),v=a.n(p);a(156);function E(e){var t=e.item,a=e.level,l=e.onItemClick,c=e.collapsible,o=t.items,s=t.href,m=t.label,b=t.type,f=Object(n.useState)(t.collapsed),h=f[0],g=f[1],p=Object(n.useState)(null),v=p[0],k=p[1];switch(t.collapsed!==v&&(k(t.collapsed),g(t.collapsed)),b){case"category":if(0==o.length)return!1;if(1==a)return r.a.createElement("li",{className:i()("menu__list-item"),key:m},r.a.createElement("div",{className:"title"},m),r.a.createElement("ul",{className:"menu__list"},o.map((function(e){return r.a.createElement(E,{key:e.label,item:e,level:a+1,onItemClick:l,collapsible:c})}))));var y=o[0].href;return r.a.createElement("li",{className:i()("menu__list-item",{"menu__list-item--collapsed":h}),key:m},r.a.createElement(d.a,{activeClassName:"menu__link--active",className:i()("menu__link",{"menu__link--sublist":c}),to:y+"/",onClick:c&&"#!"==y?function(){return g(!h)}:void 0},m),r.a.createElement("ul",{className:"menu__list"},o.map((function(e){return r.a.createElement(E,{key:e.label,item:e,level:a+1,onItemClick:l,collapsible:c})}))));case"link":default:var _=[],N=m;if(m.includes("|")){var O=m.split("|",2);N=O[0],_=JSON.parse(O[1])}var w="hidden"==N;return r.a.createElement("li",{className:i()("menu__list-item",w&&"menu__list-item-hidden"),key:m},r.a.createElement(d.a,Object(u.a)({className:"menu__link",to:s+"/"},/^\/(?!\/)/.test(s)?{activeClassName:"menu__link--active",exact:!0,onClick:l}:{target:"_blank",rel:"noreferrer noopener"}),N,_.length>0&&r.a.createElement("span",{className:"badges"},_.includes("log")&&r.a.createElement("span",{className:"badge badge--secondary",title:"This component works with log events."},"L"),_.includes("metric")&&r.a.createElement("span",{className:"badge badge--secondary",title:"This component works with metric events."},"M"))))}}var k=function(e){var t=Object(n.useState)(!1),a=t[0],l=t[1],c=Object(o.a)(),s=c.siteConfig,m=(s=void 0===s?{}:s).themeConfig.navbar,b=(m=void 0===m?{}:m).title,p=c.isClient,k=Object(g.a)(),y=k.logoLink,_=k.logoLinkProps,N=k.logoImageUrl,O=k.logoAlt,w=e.docsSidebars,j=e.path,C=e.sidebar,T=e.sidebarCollapsible;if(Object(h.a)(a),!C)return null;var x=w[C];if(!x)throw new Error('Cannot find the sidebar "'+C+'" in the sidebar config!');return T&&x.forEach((function(e){return function e(t,a){var n=t.items,r=t.href;switch(t.type){case"category":var l=n.map((function(t){return e(t,a)})).filter((function(e){return e})).length>0;return t.collapsed=!l,l;case"link":default:return r===a}}(e,j)})),r.a.createElement("div",{className:i()("docs-sidebar",v.a.sidebar)},r.a.createElement(d.a,Object(u.a)({className:v.a.sidebarLogo,to:y},_),null!=N&&r.a.createElement(f.a,{key:p,src:N,alt:O}),null!=b&&r.a.createElement("strong",null,b)),r.a.createElement("div",{className:i()("menu","menu--responsive",v.a.menu,{"menu--show":a})},r.a.createElement("button",{"aria-label":a?"Close Menu":"Open Menu",className:"button button--secondary button--sm menu__button",type:"button",onClick:function(){l(!a)}},a?r.a.createElement("span",{className:i()(v.a.sidebarMenuIcon,v.a.sidebarMenuCloseIcon)},"\xd7"):r.a.createElement("svg",{className:v.a.sidebarMenuIcon,xmlns:"http://www.w3.org/2000/svg",height:24,width:24,viewBox:"0 0 32 32",role:"img",focusable:"false"},r.a.createElement("title",null,"Menu"),r.a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))),r.a.createElement("ul",{className:"menu__list"},x.map((function(e){return e.items.length>0&&r.a.createElement(E,{key:e.label,item:e,level:1,onItemClick:function(){l(!1)},collapsible:T})})))))},y=a(299),_=a(347),N=a(324),O=a(157),w=a.n(O);t.default=function(e){var t=e.route,a=e.docsMetadata,n=e.location,c=t.routes.find((function(e){return Object(N.b)(n.pathname,e)}))||{},u=a.permalinkToSidebar,d=a.docsSidebars,b=a.version,f=u[c.path],h=Object(o.a)(),g=h.siteConfig,p=(g=void 0===g?{}:g).themeConfig,v=void 0===p?{}:p,E=h.isClient,O=v.sidebarCollapsible,j=void 0===O||O;return 0===Object.keys(c).length?r.a.createElement(_.default,e):r.a.createElement(m.a,{version:b,key:E},r.a.createElement("div",{className:i()(w.a.container,"container","container--l")},f&&r.a.createElement("div",{className:i()(w.a.sidebar)},r.a.createElement(k,{docsSidebars:d,path:c.path,sidebar:f,sidebarCollapsible:j})),r.a.createElement("main",{className:w.a.main},r.a.createElement(l.a,{components:y.a},Object(s.a)(t.routes)))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return u})),a.d(t,"b",(function(){return f}));var n=a(0),r=a.n(n);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},u=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=m(a),b=n,f=u["".concat(c,".").concat(b)]||u[b]||d[b]||l;return a?r.a.createElement(f,i({ref:t},s,{components:a})):r.a.createElement(f,i({ref:t},s))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,c=new Array(l);c[0]=b;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(u.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(M,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(B,e))}))):null)}))),(s||l)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:D.a.footerLogoLink},r.a.createElement(A,{alt:s.alt,url:m})):r.a.createElement(A,{alt:s.alt,url:m}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:D.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},F=a(290),W=a(291),V=a(3);a(135);t.a=function(e){var t=Object(f.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),o=a.themeConfig.image,s=a.url,m=e.children,u=e.title,d=e.noFooter,b=e.description,h=e.image,g=e.keywords,p=(e.permalink,e.version),v=u?u+" | "+i:i,E=h||o,k=s+Object(N.a)(E),y=Object(N.a)(n),_=Object(V.h)(),O=_?"https://gnet.host"+(_.pathname.endsWith("/")?_.pathname:_.pathname+"/"):null;return r.a.createElement(W.a,null,r.a.createElement(F.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),v&&r.a.createElement("title",null,v),v&&r.a.createElement("meta",{property:"og:title",content:v}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),b&&r.a.createElement("meta",{name:"description",content:b}),b&&r.a.createElement("meta",{property:"og:description",content:b}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),E&&r.a.createElement("meta",{property:"og:image",content:k}),E&&r.a.createElement("meta",{property:"twitter:image",content:k}),E&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+v}),E&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),E&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),O&&r.a.createElement("meta",{property:"og:url",content:O}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),O&&r.a.createElement("link",{rel:"canonical",href:O})),r.a.createElement(l.a,null),r.a.createElement(P,null),r.a.createElement("div",{className:"main-wrapper"},m),!d&&r.a.createElement(R,null)))}},297:function(e,t,a){"use strict";(function(e){var n=a(1),r=(a(295),a(296),a(78),a(79),a(306),a(0)),l=a.n(r),c=a(307),i=a.n(c),o=a(320),s=a(52),m=a(266),u=a.n(m),d=a(315),b=a(308),f=a.n(b),h=a(267),g=a(276),p=a(136),v=a.n(p);(void 0!==e?e:window).Prism=s.a,a(309),a(310),a(311),a(312),a(313),a(314);var E=/{([\d,-]+)}/,k=/title=".*"/;t.a=function(e){var t=e.children,a=e.className,c=e.metastring,s=Object(h.a)().siteConfig.themeConfig.prism,m=void 0===s?{}:s,b=Object(r.useState)(!1),p=b[0],y=b[1],_=Object(r.useState)(!1),N=_[0],O=_[1];Object(r.useEffect)((function(){O(!0)}),[]);var w=Object(r.useRef)(null),j=Object(r.useRef)(null),C=[],T="",x=Object(g.a)().isDarkTheme,S=m.theme||d.a,P=m.darkTheme||S,L=x?P:S;if(c&&E.test(c)){var M=c.match(E)[1];C=f.a.parse(M).filter((function(e){return e>0}))}c&&k.test(c)&&(T=c.match(k)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return j.current&&(e=new i.a(j.current,{target:function(){return w.current}})),function(){e&&e.destroy()}}),[j.current,w.current]);var I=a&&a.replace(/language-/,"");!I&&m.defaultLanguage&&(I=m.defaultLanguage);var D=function(){window.getSelection().empty(),y(!0),setTimeout((function(){return y(!1)}),2e3)};return l.a.createElement(o.a,Object(n.a)({},o.b,{key:N,theme:L,code:t.trim(),language:I}),(function(e){var t,a,r=e.className,c=e.style,i=e.tokens,o=e.getLineProps,s=e.getTokenProps;return l.a.createElement(l.a.Fragment,null,T&&l.a.createElement("div",{style:c,className:v.a.codeBlockTitle},T),l.a.createElement("div",{className:v.a.codeBlockContent},l.a.createElement("button",{ref:j,type:"button","aria-label":"Copy code to clipboard",className:u()(v.a.copyButton,(t={},t[v.a.copyButtonWithTitle]=T,t)),onClick:D},p?"Copied":"Copy"),l.a.createElement("pre",{className:u()(r,v.a.codeBlock,(a={},a[v.a.codeBlockWithTitle]=T,a))},l.a.createElement("div",{ref:w,className:v.a.codeBlockLines,style:c},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=o({line:e,key:t});return C.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),l.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return l.a.createElement("span",Object(n.a)({key:t},s({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),l=a.n(r),c=a(268),i=a(297),o=a(278),s=a(141),m=a.n(s);t.a={code:function(e){var t=e.children;return"string"==typeof t?l.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?l.a.createElement("a",e):l.a.createElement(c.a,e)},pre:function(e){return l.a.createElement("div",Object(n.a)({className:m.a.mdxCodeBlock},e))},h1:Object(o.a)("h1"),h2:Object(o.a)("h2"),h3:Object(o.a)("h3"),h4:Object(o.a)("h4"),h5:Object(o.a)("h5"),h6:Object(o.a)("h6")}},347:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(273);t.default=function(){return r.a.createElement(l.a,{title:"Page Not Found"},r.a.createElement("div",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]); \ No newline at end of file diff --git a/1f9e12e6.efa5d6fb.js b/1f9e12e6.d573d4b1.js similarity index 99% rename from 1f9e12e6.efa5d6fb.js rename to 1f9e12e6.d573d4b1.js index e07641d4f..94a152150 100644 --- a/1f9e12e6.efa5d6fb.js +++ b/1f9e12e6.d573d4b1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{159:function(e,t,a){"use strict";a.r(t);a(295),a(296),a(341);var r=a(0),n=a.n(r),i=a(346),o=a(273),u=a(383),l=a.n(u),c=a(272);t.default=function(e){var t=e.items,a=e.location?l.a.parse(e.location.search,{ignoreQueryPrefix:!0}):{},u=Object(r.useState)(a.search),s=u[0],m=u[1];Object(c.b)();var D=t;return s&&(D=D.filter((function(e){var t=s.toLowerCase(),a=(e.content.frontMatter,e.content.metadata);return!!a.title.toLowerCase().includes(t)||!!a.tags.some((function(e){return e.label.toLowerCase().includes(t)}))}))),n.a.createElement(o.a,{title:"Highlights",description:"The latest gnet features and updates."},n.a.createElement("header",{className:"hero hero--clean"},n.a.createElement("div",{className:"container container--xs"},n.a.createElement("h1",null,"gnet Highlights"),n.a.createElement("div",{className:"hero--subtitle"},"New features & updates. Follow ",n.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"}," ",n.a.createElement("i",{className:"feather icon-twitter"})," @panjf2000")," for real-time updates!"),n.a.createElement("div",{className:"hero--search"},n.a.createElement("input",{type:"text",className:"input--text input--xl input--block",onChange:function(e){return m(e.currentTarget.value)},placeholder:"\ud83d\udd0d Search by title or or tag..."})))),n.a.createElement("main",{className:"container container--xs markdown"},n.a.createElement(i.a,{items:D})))}},272:function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return i}));var r=a(267);function n(){var e=Object(r.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),n=new Date,i=Math.abs(n-a),o=Math.ceil(i/864e5),u=null;return"undefined"!=typeof window&&(u=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),o<30&&(!u||u0&&n.a.createElement("div",{className:"row footer__links"},n.a.createElement("div",{className:"col col--5 footer__col"},n.a.createElement("div",{className:"margin-bottom--md"},n.a.createElement(m.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),n.a.createElement("div",{className:"margin-bottom--md"},n.a.createElement(T,{description:!1,width:"150px"})),n.a.createElement("div",null,n.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},n.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",n.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},n.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",n.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},n.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),u.map((function(e,t){return n.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.a.createElement("li",{key:e.href||e.to,className:"footer__item"},n.a.createElement(P,e))}))):null)}))),(c||i)&&n.a.createElement("div",{className:"text--center"},c&&c.src&&n.a.createElement("div",{className:"margin-bottom--sm"},c.href?n.a.createElement("a",{href:c.href,target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},n.a.createElement(B,{alt:c.alt,url:s})):n.a.createElement(B,{alt:c.alt,url:s}),n.a.createElement("br",null),n.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},n.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),i,n.a.createElement("br",null),n.a.createElement("small",null,n.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",n.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),I=a(291),z=a(3);a(135);t.a=function(e){var t=Object(d.a)().siteConfig,a=void 0===t?{}:t,r=a.favicon,u=(a.tagline,a.title),l=a.themeConfig.image,c=a.url,s=e.children,m=e.title,D=e.noFooter,f=e.description,p=e.image,h=e.keywords,g=(e.permalink,e.version),y=m?m+" | "+u:u,b=p||l,v=c+Object(w.a)(b),E=Object(w.a)(r),F=Object(z.h)(),C=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return n.a.createElement(I.a,null,n.a.createElement(H.a,null,n.a.createElement(o.a,null,n.a.createElement("html",{lang:"en"}),n.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),y&&n.a.createElement("title",null,y),y&&n.a.createElement("meta",{property:"og:title",content:y}),r&&n.a.createElement("link",{rel:"shortcut icon",href:E}),f&&n.a.createElement("meta",{name:"description",content:f}),f&&n.a.createElement("meta",{property:"og:description",content:f}),g&&n.a.createElement("meta",{name:"docsearch:version",content:g}),h&&h.length&&n.a.createElement("meta",{name:"keywords",content:h.join(",")}),b&&n.a.createElement("meta",{property:"og:image",content:v}),b&&n.a.createElement("meta",{property:"twitter:image",content:v}),b&&n.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+y}),b&&n.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&n.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),C&&n.a.createElement("meta",{property:"og:url",content:C}),n.a.createElement("meta",{name:"twitter:card",content:"summary"}),C&&n.a.createElement("link",{rel:"canonical",href:C})),n.a.createElement(i.a,null),n.a.createElement(_,null),n.a.createElement("div",{className:"main-wrapper"},s),!D&&n.a.createElement(L,null)))}},274:function(e,t,a){"use strict";var r=a(12),n=a(301)(5),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),r(r.P+r.F*i,"Array",{find:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}}),a(80)("find")},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));a(79),a(298),a(274),a(78);var r=a(279),n=a.n(r);function i(e,t){var a=new n.a;return e.map((function(e){var r=e;return"string"==typeof e&&(r={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),r=a[0],n=a[1],i="primary";switch(r){case"domain":i="blue";break;case"type":i="pink";break;default:i="primary"}return{category:r,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:i,value:n}}(r)}))}},277:function(e,t,a){var r=a(24).f,n=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in n||a(10)&&r(n,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},278:function(e,t,a){"use strict";var r=a(9),n=a(0),i=a.n(n),o=a(266),u=a.n(o),l=a(267),c=(a(139),a(140)),s=a.n(c);t.a=function(e){return function(t){var a,n=t.id,o=Object(r.a)(t,["id"]),c=Object(l.a)().siteConfig,m=(c=void 0===c?{}:c).themeConfig,D=(m=void 0===m?{}:m).navbar,f=(D=void 0===D?{}:D).hideOnScroll,d=void 0!==f&&f;return n?i.a.createElement(e,o,i.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:u()("anchor",(a={},a[s.a.enhancedAnchor]=!d,a)),id:n}),i.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+n,title:"Direct link to heading"},"#"),o.children):i.a.createElement(e,o)}}},279:function(e,t,a){var r=a(288);e.exports=u;var n=Object.hasOwnProperty,i=/\s/g,o=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function u(){if(!(this instanceof u))return new u;this.reset()}function l(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(o,"").replace(r(),"").replace(i,"-"))}u.prototype.slug=function(e,t){for(var a=l(e,!0===t),r=a;n.call(this.occurrences,a);)this.occurrences[r]++,a=r+"-"+this.occurrences[r];return this.occurrences[a]=0,a},u.prototype.reset=function(){this.occurrences=Object.create(null)},u.slug=l},287:function(e,t,a){"use strict";var r=a(0),n=a.n(r),i=a(268),o=a(266),u=a.n(o);t.a=function(e){var t=e.count,a=e.label,r=e.permalink,o=e.style,l=e.value,c=e.valueOnly;return n.a.createElement(i.a,{to:r+"/",className:u()("badge","badge--rounded","badge--"+o)},c?l:a,t&&n.a.createElement(n.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var r=a(0),n=a.n(r),i=a(266),o=a.n(i),u=a(267);a(137);t.a=function(e){var t,a=e.bio,r=e.className,i=e.github,l=e.nameSuffix,c=e.rel,s=e.size,m=e.subTitle,D=e.vertical,f=Object(u.a)().siteConfig,d=(void 0===f?{}:f).customFields.metadata.team,p=d.find((function(e){return e.github==i}))||d.find((function(e){return"ben"==e.id}));return n.a.createElement("div",{className:o()("avatar",r,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=D,t))},n.a.createElement("img",{className:o()("avatar__photo","avatar__photo--"+s),src:p.avatar}),n.a.createElement("div",{className:"avatar__intro"},n.a.createElement("div",{className:"avatar__name"},n.a.createElement("a",{href:p.github,target:"_blank",rel:c},p.name),l),m&&n.a.createElement("small",{className:"avatar__subtitle"},m),!m&&a&&n.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:p.bio}})))}},293:function(e,t,a){"use strict";var r=a(1),n=a(0),i=a.n(n),o=(a(268),a(287)),u=a(266),l=a.n(u),c=a(275),s=a(138),m=a.n(s);t.a=function(e){var t,a=e.block,n=e.colorProfile,u=e.tags,s=e.valuesOnly,D=Object(c.a)(u,n);return i.a.createElement("span",{className:l()(m.a.tags,(t={},t[m.a.tagsBlock]=a,t))},D.map((function(e,t){return i.a.createElement(o.a,Object(r.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var r;!function(n){"use strict";var i,o,u,l=(i=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,o=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,u=/[^-+\dA-Z]/g,function(e,t,a,r){if(1!==arguments.length||"string"!==D(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var n=(t=String(l.masks[t]||t||l.masks.default)).slice(0,4);"UTC:"!==n&&"GMT:"!==n||(t=t.slice(4),a=!0,"GMT:"===n&&(r=!0));var f=a?"getUTC":"get",d=e[f+"Date"](),p=e[f+"Day"](),h=e[f+"Month"](),g=e[f+"FullYear"](),y=e[f+"Hours"](),b=e[f+"Minutes"](),v=e[f+"Seconds"](),E=e[f+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),w=s(e),C=m(e),N={d:d,dd:c(d),ddd:l.i18n.dayNames[p],dddd:l.i18n.dayNames[p+7],m:h+1,mm:c(h+1),mmm:l.i18n.monthNames[h],mmmm:l.i18n.monthNames[h+12],yy:String(g).slice(2),yyyy:g,h:y%12||12,hh:c(y%12||12),H:y,HH:c(y),M:b,MM:c(b),s:v,ss:c(v),l:c(E,3),L:c(Math.round(E/10)),t:y<12?l.i18n.timeNames[0]:l.i18n.timeNames[1],tt:y<12?l.i18n.timeNames[2]:l.i18n.timeNames[3],T:y<12?l.i18n.timeNames[4]:l.i18n.timeNames[5],TT:y<12?l.i18n.timeNames[6]:l.i18n.timeNames[7],Z:r?"GMT":a?"UTC":(String(e).match(o)||[""]).pop().replace(u,""),o:(F>0?"-":"+")+c(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10],W:w,N:C};return t.replace(i,(function(e){return e in N?N[e]:e.slice(1,e.length-1)}))});function c(e,t){for(e=String(e),t=t||2;e.length1?arguments[1]:void 0)}}),a(80)("includes")},296:function(e,t,a){"use strict";var r=a(12),n=a(321);r(r.P+r.F*a(322)("includes"),"String",{includes:function(e){return!!~n(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},301:function(e,t,a){var r=a(28),n=a(54),i=a(25),o=a(27),u=a(302);e.exports=function(e,t){var a=1==e,l=2==e,c=3==e,s=4==e,m=6==e,D=5==e||m,f=t||u;return function(t,u,d){for(var p,h,g=i(t),y=n(g),b=r(u,d,3),v=o(y.length),E=0,F=a?f(t,v):l?f(t,0):void 0;v>E;E++)if((D||E in y)&&(h=b(p=y[E],E,g),e))if(a)F[E]=h;else if(h)switch(e){case 3:return!0;case 5:return p;case 6:return E;case 2:F.push(p)}else if(s)return!1;return m?-1:c||s?s:F}}},302:function(e,t,a){var r=a(303);e.exports=function(e,t){return new(r(e))(t)}},303:function(e,t,a){var r=a(14),n=a(323),i=a(2)("species");e.exports=function(e){var t;return n(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!n(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},325:function(e,t,a){"use strict";var r=a(12),n=a(30),i=a(25),o=a(13),u=[].sort,l=[1,2,3];r(r.P+r.F*(o((function(){l.sort(void 0)}))||!o((function(){l.sort(null)}))||!a(326)(u)),"Array",{sort:function(e){return void 0===e?u.call(i(this)):u.call(i(this),n(e))}})},326:function(e,t,a){"use strict";var r=a(13);e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},327:function(e,t,a){e.exports=function(){var e=[],t=[],a={},r={},n={};function i(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function o(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function u(e,t){return e.replace(/\$(\d{1,2})/g,(function(e,a){return t[a]||""}))}function l(e,t){return e.replace(t[0],(function(a,r){var n=u(t[1],arguments);return o(""===a?e[r-1]:a,n)}))}function c(e,t,r){if(!e.length||a.hasOwnProperty(e))return t;for(var n=r.length;n--;){var i=r[n];if(i[0].test(t))return l(t,i)}return t}function s(e,t,a){return function(r){var n=r.toLowerCase();return t.hasOwnProperty(n)?o(r,n):e.hasOwnProperty(n)?o(r,e[n]):c(n,r,a)}}function m(e,t,a,r){return function(r){var n=r.toLowerCase();return!!t.hasOwnProperty(n)||!e.hasOwnProperty(n)&&c(n,n,a)===n}}function D(e,t,a){return(a?t+" ":"")+(1===t?D.singular(e):D.plural(e))}return D.plural=s(n,r,e),D.isPlural=m(n,r,e),D.singular=s(r,n,t),D.isSingular=m(r,n,t),D.addPluralRule=function(t,a){e.push([i(t),a])},D.addSingularRule=function(e,a){t.push([i(e),a])},D.addUncountableRule=function(e){"string"!=typeof e?(D.addPluralRule(e,"$0"),D.addSingularRule(e,"$0")):a[e.toLowerCase()]=!0},D.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),n[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return D.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return D.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return D.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(D.addUncountableRule),D}()},333:function(e,t,a){"use strict";var r=a(0),n=a.n(r),i=["second","minute","hour","day","week","month","year"],o=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],u={},l=function(e,t){u[e]=t},c=function(e){return u[e]||u.en_US},s=[60,60,24,7,365/7/12,12];function m(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function D(e,t){for(var a=e<0?1:0,r=e=Math.abs(e),n=0;e>=s[n]&&n(0===(n*=2)?9:1)&&(n+=1),t(e,n,r)[a].replace("%s",e.toString())}function f(e,t){return(+(t?m(t):new Date)-+m(e))/1e3}function d(e){return parseInt(e.getAttribute("timeago-id"))}var p={},h=function(e){clearTimeout(e),delete p[e]};function g(e,t,a,r){h(d(e));var n=r.relativeDate,i=r.minInterval,o=f(t,n);e.innerText=D(o,a);var u=setTimeout((function(){g(e,t,a,r)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,r=Math.abs(e);e>=s[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=o[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),E=function(){return(E=Object.assign||function(e){for(var t,a=1,r=arguments.length;a1;){var t=e.pop(),a=t.obj[t.prop];if(n(a)){for(var r=[],i=0;i=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122?n+=r.charAt(o):u<128?n+=i[u]:u<2048?n+=i[192|u>>6]+i[128|63&u]:u<55296||u>=57344?n+=i[224|u>>12]+i[128|u>>6&63]+i[128|63&u]:(o+=1,u=65536+((1023&u)<<10|1023&r.charCodeAt(o)),n+=i[240|u>>18]+i[128|u>>12&63]+i[128|u>>6&63]+i[128|63&u])}return n},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(n(e)){for(var a=[],r=0;r0&&i.a.createElement("div",null,i.a.createElement(c.a,{colorProfile:"blog",tags:F}))))},g=a(279),y=a.n(g),b=a(327),v=a.n(b),E=/\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\.?|versus|via|when|with|without|yet)\b/i,F=/[^\s:\u2013\u2014-]+|./g,w=/\s/,C=/.(?=[A-Z]|\..)/,N=/[A-Za-z0-9\u00C0-\u00FF]/;function k(e){for(var t,a="";null!==(t=F.exec(e));){var r=t[0],n=t.index;C.test(r)||E.test(r)&&0!==n&&n+r.length!==e.length||":"===e.charAt(n+r.length)&&!w.test(e.charAt(n+r.length+1))?a+=r:a+=r.replace(N,(function(e){return e.toUpperCase()}))}return a}Object(o.a)("h2");var O=Object(o.a)("h3");function j(e){var t=e.groupBy,a=e.group,r=new y.a;switch(t){case"release":return i.a.createElement("li",{className:"header sticky"},i.a.createElement("h3",null,i.a.createElement(l.a,{to:"/releases/"+a+"/"},k(a))));case"type":var n=null,o=v()(k(a)),u=null;switch(a){case"breaking change":n="alert-triangle",u="danger";break;case"enhancement":n="arrow-up-circle",u="pink";break;case"new feature":n="gift",u="primary";break;case"performance":n="zap",o="Performance Improvements",u="warning"}return i.a.createElement("li",{className:"header sticky"},i.a.createElement(O,{id:r.slug(a+"-highlights"),className:"text--"+u},n&&i.a.createElement("i",{className:"feather icon-"+n})," ",o));default:throw Error("unknown group: "+t)}}t.a=function(e){var t=e.author,a=(e.clean,e.colorize),n=e.groupBy,o=e.items,u=e.tags,l=e.timeline,c=n||"release",s=function(e){return e.map((function(e){if(e.content){var t=e.content,a=t.frontMatter,r=t.metadata,n=a.author_github,i=a.pr_numbers,o=a.release,u=a.title,l=r.date,c=r.description,s=r.permalink,m=r.tags,D={};return D.authorGithub=n,D.dateString=l,D.description=c,D.permalink=s,D.prNumbers=i,D.release=o,D.tags=m,D.title=u,D}return e}))}(o),m=_.groupBy(s,c),f=!1!==l?Object.keys(m):Object.keys(m).sort();return i.a.createElement("ul",{className:D()("connected-list","connected-list--clean")},f.map((function(e,n){var o=m[e];return i.a.createElement(i.a.Fragment,null,i.a.createElement(j,{groupBy:c,group:e}),i.a.createElement("ul",{className:D()("connected-list",{"connected-list--timeline":!1!==l})},o.map((function(e,n){return i.a.createElement("li",{key:n},i.a.createElement(h,Object(r.a)({},e,{colorize:a,hideAuthor:0==t,hideTags:0==u})))}))))})))}},353:function(e,t,a){"use strict";var r=String.prototype.replace,n=/%20/g,i=a(343),o={RFC1738:"RFC1738",RFC3986:"RFC3986"};e.exports=i.assign({default:o.RFC3986,formatters:{RFC1738:function(e){return r.call(e,n,"+")},RFC3986:function(e){return String(e)}}},o)},383:function(e,t,a){"use strict";var r=a(384),n=a(385),i=a(353);e.exports={formats:i,parse:n,stringify:r}},384:function(e,t,a){"use strict";var r=a(343),n=a(353),i=Object.prototype.hasOwnProperty,o={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},u=Array.isArray,l=Array.prototype.push,c=function(e,t){l.apply(e,u(t)?t:[t])},s=Date.prototype.toISOString,m=n.default,D={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,format:m,formatter:n.formatters[m],indices:!1,serializeDate:function(e){return s.call(e)},skipNulls:!1,strictNullHandling:!1},f=function e(t,a,n,i,o,l,s,m,f,d,p,h,g){var y,b=t;if("function"==typeof s?b=s(a,b):b instanceof Date?b=d(b):"comma"===n&&u(b)&&(b=r.maybeMap(b,(function(e){return e instanceof Date?d(e):e})).join(",")),null===b){if(i)return l&&!h?l(a,D.encoder,g,"key"):a;b=""}if("string"==typeof(y=b)||"number"==typeof y||"boolean"==typeof y||"symbol"==typeof y||"bigint"==typeof y||r.isBuffer(b))return l?[p(h?a:l(a,D.encoder,g,"key"))+"="+p(l(b,D.encoder,g,"value"))]:[p(a)+"="+p(String(b))];var v,E=[];if(void 0===b)return E;if(u(s))v=s;else{var F=Object.keys(b);v=m?F.sort(m):F}for(var w=0;w0?y+g:""}},385:function(e,t,a){"use strict";var r=a(343),n=Object.prototype.hasOwnProperty,i=Array.isArray,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,a,r){if(e){var i=a.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,u=a.depth>0&&/(\[[^[\]]*])/.exec(i),c=u?i.slice(0,u.index):i,s=[];if(c){if(!a.plainObjects&&n.call(Object.prototype,c)&&!a.allowPrototypes)return;s.push(c)}for(var m=0;a.depth>0&&null!==(u=o.exec(i))&&m=0;--i){var o,u=e[i];if("[]"===u&&a.parseArrays)o=[].concat(n);else{o=a.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);a.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&a.parseArrays&&s<=a.arrayLimit?(o=[])[s]=n:o[c]=n:o={0:n}}n=o}return n}(s,t,a,r)}};e.exports=function(e,t){var a=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?o.charset:e.charset;return{allowDots:void 0===e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:o.comma,decoder:"function"==typeof e.decoder?e.decoder:o.decoder,delimiter:"string"==typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(""===e||null==e)return a.plainObjects?Object.create(null):{};for(var s="string"==typeof e?function(e,t){var a,c={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,m=t.parameterLimit===1/0?void 0:t.parameterLimit,D=s.split(t.delimiter,m),f=-1,d=t.charset;if(t.charsetSentinel)for(a=0;a-1&&(h=i(h)?[h]:h),n.call(c,p)?c[p]=r.combine(c[p],h):c[p]=h}return c}(e,a):e,m=a.plainObjects?Object.create(null):{},D=Object.keys(s),f=0;f0&&n.a.createElement("div",{className:"row footer__links"},n.a.createElement("div",{className:"col col--5 footer__col"},n.a.createElement("div",{className:"margin-bottom--md"},n.a.createElement(m.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),n.a.createElement("div",{className:"margin-bottom--md"},n.a.createElement(T,{description:!1,width:"150px"})),n.a.createElement("div",null,n.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},n.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",n.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},n.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",n.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},n.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),u.map((function(e,t){return n.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.a.createElement("li",{key:e.href||e.to,className:"footer__item"},n.a.createElement(P,e))}))):null)}))),(c||i)&&n.a.createElement("div",{className:"text--center"},c&&c.src&&n.a.createElement("div",{className:"margin-bottom--sm"},c.href?n.a.createElement("a",{href:c.href,target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},n.a.createElement(B,{alt:c.alt,url:s})):n.a.createElement(B,{alt:c.alt,url:s}),n.a.createElement("br",null),n.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:M.a.footerLogoLink},n.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),i,n.a.createElement("br",null),n.a.createElement("small",null,n.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",n.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),I=a(291),z=a(3);a(135);t.a=function(e){var t=Object(d.a)().siteConfig,a=void 0===t?{}:t,r=a.favicon,u=(a.tagline,a.title),l=a.themeConfig.image,c=a.url,s=e.children,m=e.title,D=e.noFooter,f=e.description,p=e.image,h=e.keywords,g=(e.permalink,e.version),y=m?m+" | "+u:u,b=p||l,v=c+Object(w.a)(b),E=Object(w.a)(r),F=Object(z.h)(),C=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return n.a.createElement(I.a,null,n.a.createElement(H.a,null,n.a.createElement(o.a,null,n.a.createElement("html",{lang:"en"}),n.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),y&&n.a.createElement("title",null,y),y&&n.a.createElement("meta",{property:"og:title",content:y}),r&&n.a.createElement("link",{rel:"shortcut icon",href:E}),f&&n.a.createElement("meta",{name:"description",content:f}),f&&n.a.createElement("meta",{property:"og:description",content:f}),g&&n.a.createElement("meta",{name:"docsearch:version",content:g}),h&&h.length&&n.a.createElement("meta",{name:"keywords",content:h.join(",")}),b&&n.a.createElement("meta",{property:"og:image",content:v}),b&&n.a.createElement("meta",{property:"twitter:image",content:v}),b&&n.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+y}),b&&n.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&n.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),C&&n.a.createElement("meta",{property:"og:url",content:C}),n.a.createElement("meta",{name:"twitter:card",content:"summary"}),C&&n.a.createElement("link",{rel:"canonical",href:C})),n.a.createElement(i.a,null),n.a.createElement(_,null),n.a.createElement("div",{className:"main-wrapper"},s),!D&&n.a.createElement(L,null)))}},274:function(e,t,a){"use strict";var r=a(12),n=a(301)(5),i=!0;"find"in[]&&Array(1).find((function(){i=!1})),r(r.P+r.F*i,"Array",{find:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}}),a(80)("find")},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));a(79),a(298),a(274),a(78);var r=a(279),n=a.n(r);function i(e,t){var a=new n.a;return e.map((function(e){var r=e;return"string"==typeof e&&(r={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),r=a[0],n=a[1],i="primary";switch(r){case"domain":i="blue";break;case"type":i="pink";break;default:i="primary"}return{category:r,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:i,value:n}}(r)}))}},277:function(e,t,a){var r=a(24).f,n=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in n||a(10)&&r(n,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},278:function(e,t,a){"use strict";var r=a(9),n=a(0),i=a.n(n),o=a(266),u=a.n(o),l=a(267),c=(a(139),a(140)),s=a.n(c);t.a=function(e){return function(t){var a,n=t.id,o=Object(r.a)(t,["id"]),c=Object(l.a)().siteConfig,m=(c=void 0===c?{}:c).themeConfig,D=(m=void 0===m?{}:m).navbar,f=(D=void 0===D?{}:D).hideOnScroll,d=void 0!==f&&f;return n?i.a.createElement(e,o,i.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:u()("anchor",(a={},a[s.a.enhancedAnchor]=!d,a)),id:n}),i.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+n,title:"Direct link to heading"},"#"),o.children):i.a.createElement(e,o)}}},279:function(e,t,a){var r=a(288);e.exports=u;var n=Object.hasOwnProperty,i=/\s/g,o=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function u(){if(!(this instanceof u))return new u;this.reset()}function l(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(o,"").replace(r(),"").replace(i,"-"))}u.prototype.slug=function(e,t){for(var a=l(e,!0===t),r=a;n.call(this.occurrences,a);)this.occurrences[r]++,a=r+"-"+this.occurrences[r];return this.occurrences[a]=0,a},u.prototype.reset=function(){this.occurrences=Object.create(null)},u.slug=l},287:function(e,t,a){"use strict";var r=a(0),n=a.n(r),i=a(268),o=a(266),u=a.n(o);t.a=function(e){var t=e.count,a=e.label,r=e.permalink,o=e.style,l=e.value,c=e.valueOnly;return n.a.createElement(i.a,{to:r+"/",className:u()("badge","badge--rounded","badge--"+o)},c?l:a,t&&n.a.createElement(n.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var r=a(0),n=a.n(r),i=a(266),o=a.n(i),u=a(267);a(137);t.a=function(e){var t,a=e.bio,r=e.className,i=e.github,l=e.nameSuffix,c=e.rel,s=e.size,m=e.subTitle,D=e.vertical,f=Object(u.a)().siteConfig,d=(void 0===f?{}:f).customFields.metadata.team,p=d.find((function(e){return e.github==i}))||d.find((function(e){return"ben"==e.id}));return n.a.createElement("div",{className:o()("avatar",r,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=D,t))},n.a.createElement("img",{className:o()("avatar__photo","avatar__photo--"+s),src:p.avatar}),n.a.createElement("div",{className:"avatar__intro"},n.a.createElement("div",{className:"avatar__name"},n.a.createElement("a",{href:p.github,target:"_blank",rel:c},p.name),l),m&&n.a.createElement("small",{className:"avatar__subtitle"},m),!m&&a&&n.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:p.bio}})))}},293:function(e,t,a){"use strict";var r=a(1),n=a(0),i=a.n(n),o=(a(268),a(287)),u=a(266),l=a.n(u),c=a(275),s=a(138),m=a.n(s);t.a=function(e){var t,a=e.block,n=e.colorProfile,u=e.tags,s=e.valuesOnly,D=Object(c.a)(u,n);return i.a.createElement("span",{className:l()(m.a.tags,(t={},t[m.a.tagsBlock]=a,t))},D.map((function(e,t){return i.a.createElement(o.a,Object(r.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var r;!function(n){"use strict";var i,o,u,l=(i=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,o=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,u=/[^-+\dA-Z]/g,function(e,t,a,r){if(1!==arguments.length||"string"!==D(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var n=(t=String(l.masks[t]||t||l.masks.default)).slice(0,4);"UTC:"!==n&&"GMT:"!==n||(t=t.slice(4),a=!0,"GMT:"===n&&(r=!0));var f=a?"getUTC":"get",d=e[f+"Date"](),p=e[f+"Day"](),h=e[f+"Month"](),g=e[f+"FullYear"](),y=e[f+"Hours"](),b=e[f+"Minutes"](),v=e[f+"Seconds"](),E=e[f+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),w=s(e),C=m(e),N={d:d,dd:c(d),ddd:l.i18n.dayNames[p],dddd:l.i18n.dayNames[p+7],m:h+1,mm:c(h+1),mmm:l.i18n.monthNames[h],mmmm:l.i18n.monthNames[h+12],yy:String(g).slice(2),yyyy:g,h:y%12||12,hh:c(y%12||12),H:y,HH:c(y),M:b,MM:c(b),s:v,ss:c(v),l:c(E,3),L:c(Math.round(E/10)),t:y<12?l.i18n.timeNames[0]:l.i18n.timeNames[1],tt:y<12?l.i18n.timeNames[2]:l.i18n.timeNames[3],T:y<12?l.i18n.timeNames[4]:l.i18n.timeNames[5],TT:y<12?l.i18n.timeNames[6]:l.i18n.timeNames[7],Z:r?"GMT":a?"UTC":(String(e).match(o)||[""]).pop().replace(u,""),o:(F>0?"-":"+")+c(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10],W:w,N:C};return t.replace(i,(function(e){return e in N?N[e]:e.slice(1,e.length-1)}))});function c(e,t){for(e=String(e),t=t||2;e.length1?arguments[1]:void 0)}}),a(80)("includes")},296:function(e,t,a){"use strict";var r=a(12),n=a(321);r(r.P+r.F*a(322)("includes"),"String",{includes:function(e){return!!~n(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},301:function(e,t,a){var r=a(28),n=a(54),i=a(25),o=a(27),u=a(302);e.exports=function(e,t){var a=1==e,l=2==e,c=3==e,s=4==e,m=6==e,D=5==e||m,f=t||u;return function(t,u,d){for(var p,h,g=i(t),y=n(g),b=r(u,d,3),v=o(y.length),E=0,F=a?f(t,v):l?f(t,0):void 0;v>E;E++)if((D||E in y)&&(h=b(p=y[E],E,g),e))if(a)F[E]=h;else if(h)switch(e){case 3:return!0;case 5:return p;case 6:return E;case 2:F.push(p)}else if(s)return!1;return m?-1:c||s?s:F}}},302:function(e,t,a){var r=a(303);e.exports=function(e,t){return new(r(e))(t)}},303:function(e,t,a){var r=a(14),n=a(323),i=a(2)("species");e.exports=function(e){var t;return n(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!n(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},325:function(e,t,a){"use strict";var r=a(12),n=a(30),i=a(25),o=a(13),u=[].sort,l=[1,2,3];r(r.P+r.F*(o((function(){l.sort(void 0)}))||!o((function(){l.sort(null)}))||!a(326)(u)),"Array",{sort:function(e){return void 0===e?u.call(i(this)):u.call(i(this),n(e))}})},326:function(e,t,a){"use strict";var r=a(13);e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},327:function(e,t,a){e.exports=function(){var e=[],t=[],a={},r={},n={};function i(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function o(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function u(e,t){return e.replace(/\$(\d{1,2})/g,(function(e,a){return t[a]||""}))}function l(e,t){return e.replace(t[0],(function(a,r){var n=u(t[1],arguments);return o(""===a?e[r-1]:a,n)}))}function c(e,t,r){if(!e.length||a.hasOwnProperty(e))return t;for(var n=r.length;n--;){var i=r[n];if(i[0].test(t))return l(t,i)}return t}function s(e,t,a){return function(r){var n=r.toLowerCase();return t.hasOwnProperty(n)?o(r,n):e.hasOwnProperty(n)?o(r,e[n]):c(n,r,a)}}function m(e,t,a,r){return function(r){var n=r.toLowerCase();return!!t.hasOwnProperty(n)||!e.hasOwnProperty(n)&&c(n,n,a)===n}}function D(e,t,a){return(a?t+" ":"")+(1===t?D.singular(e):D.plural(e))}return D.plural=s(n,r,e),D.isPlural=m(n,r,e),D.singular=s(r,n,t),D.isSingular=m(r,n,t),D.addPluralRule=function(t,a){e.push([i(t),a])},D.addSingularRule=function(e,a){t.push([i(e),a])},D.addUncountableRule=function(e){"string"!=typeof e?(D.addPluralRule(e,"$0"),D.addSingularRule(e,"$0")):a[e.toLowerCase()]=!0},D.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),n[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return D.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return D.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return D.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(D.addUncountableRule),D}()},333:function(e,t,a){"use strict";var r=a(0),n=a.n(r),i=["second","minute","hour","day","week","month","year"],o=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],u={},l=function(e,t){u[e]=t},c=function(e){return u[e]||u.en_US},s=[60,60,24,7,365/7/12,12];function m(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function D(e,t){for(var a=e<0?1:0,r=e=Math.abs(e),n=0;e>=s[n]&&n(0===(n*=2)?9:1)&&(n+=1),t(e,n,r)[a].replace("%s",e.toString())}function f(e,t){return(+(t?m(t):new Date)-+m(e))/1e3}function d(e){return parseInt(e.getAttribute("timeago-id"))}var p={},h=function(e){clearTimeout(e),delete p[e]};function g(e,t,a,r){h(d(e));var n=r.relativeDate,i=r.minInterval,o=f(t,n);e.innerText=D(o,a);var u=setTimeout((function(){g(e,t,a,r)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,r=Math.abs(e);e>=s[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=o[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),E=function(){return(E=Object.assign||function(e){for(var t,a=1,r=arguments.length;a1;){var t=e.pop(),a=t.obj[t.prop];if(n(a)){for(var r=[],i=0;i=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122?n+=r.charAt(o):u<128?n+=i[u]:u<2048?n+=i[192|u>>6]+i[128|63&u]:u<55296||u>=57344?n+=i[224|u>>12]+i[128|u>>6&63]+i[128|63&u]:(o+=1,u=65536+((1023&u)<<10|1023&r.charCodeAt(o)),n+=i[240|u>>18]+i[128|u>>12&63]+i[128|u>>6&63]+i[128|63&u])}return n},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(n(e)){for(var a=[],r=0;r0&&i.a.createElement("div",null,i.a.createElement(c.a,{colorProfile:"blog",tags:F}))))},g=a(279),y=a.n(g),b=a(327),v=a.n(b),E=/\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\.?|versus|via|when|with|without|yet)\b/i,F=/[^\s:\u2013\u2014-]+|./g,w=/\s/,C=/.(?=[A-Z]|\..)/,N=/[A-Za-z0-9\u00C0-\u00FF]/;function k(e){for(var t,a="";null!==(t=F.exec(e));){var r=t[0],n=t.index;C.test(r)||E.test(r)&&0!==n&&n+r.length!==e.length||":"===e.charAt(n+r.length)&&!w.test(e.charAt(n+r.length+1))?a+=r:a+=r.replace(N,(function(e){return e.toUpperCase()}))}return a}Object(o.a)("h2");var O=Object(o.a)("h3");function j(e){var t=e.groupBy,a=e.group,r=new y.a;switch(t){case"release":return i.a.createElement("li",{className:"header sticky"},i.a.createElement("h3",null,i.a.createElement(l.a,{to:"/releases/"+a+"/"},k(a))));case"type":var n=null,o=v()(k(a)),u=null;switch(a){case"breaking change":n="alert-triangle",u="danger";break;case"enhancement":n="arrow-up-circle",u="pink";break;case"new feature":n="gift",u="primary";break;case"performance":n="zap",o="Performance Improvements",u="warning"}return i.a.createElement("li",{className:"header sticky"},i.a.createElement(O,{id:r.slug(a+"-highlights"),className:"text--"+u},n&&i.a.createElement("i",{className:"feather icon-"+n})," ",o));default:throw Error("unknown group: "+t)}}t.a=function(e){var t=e.author,a=(e.clean,e.colorize),n=e.groupBy,o=e.items,u=e.tags,l=e.timeline,c=n||"release",s=function(e){return e.map((function(e){if(e.content){var t=e.content,a=t.frontMatter,r=t.metadata,n=a.author_github,i=a.pr_numbers,o=a.release,u=a.title,l=r.date,c=r.description,s=r.permalink,m=r.tags,D={};return D.authorGithub=n,D.dateString=l,D.description=c,D.permalink=s,D.prNumbers=i,D.release=o,D.tags=m,D.title=u,D}return e}))}(o),m=_.groupBy(s,c),f=!1!==l?Object.keys(m):Object.keys(m).sort();return i.a.createElement("ul",{className:D()("connected-list","connected-list--clean")},f.map((function(e,n){var o=m[e];return i.a.createElement(i.a.Fragment,null,i.a.createElement(j,{groupBy:c,group:e}),i.a.createElement("ul",{className:D()("connected-list",{"connected-list--timeline":!1!==l})},o.map((function(e,n){return i.a.createElement("li",{key:n},i.a.createElement(h,Object(r.a)({},e,{colorize:a,hideAuthor:0==t,hideTags:0==u})))}))))})))}},353:function(e,t,a){"use strict";var r=String.prototype.replace,n=/%20/g,i=a(343),o={RFC1738:"RFC1738",RFC3986:"RFC3986"};e.exports=i.assign({default:o.RFC3986,formatters:{RFC1738:function(e){return r.call(e,n,"+")},RFC3986:function(e){return String(e)}}},o)},383:function(e,t,a){"use strict";var r=a(384),n=a(385),i=a(353);e.exports={formats:i,parse:n,stringify:r}},384:function(e,t,a){"use strict";var r=a(343),n=a(353),i=Object.prototype.hasOwnProperty,o={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},u=Array.isArray,l=Array.prototype.push,c=function(e,t){l.apply(e,u(t)?t:[t])},s=Date.prototype.toISOString,m=n.default,D={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,format:m,formatter:n.formatters[m],indices:!1,serializeDate:function(e){return s.call(e)},skipNulls:!1,strictNullHandling:!1},f=function e(t,a,n,i,o,l,s,m,f,d,p,h,g){var y,b=t;if("function"==typeof s?b=s(a,b):b instanceof Date?b=d(b):"comma"===n&&u(b)&&(b=r.maybeMap(b,(function(e){return e instanceof Date?d(e):e})).join(",")),null===b){if(i)return l&&!h?l(a,D.encoder,g,"key"):a;b=""}if("string"==typeof(y=b)||"number"==typeof y||"boolean"==typeof y||"symbol"==typeof y||"bigint"==typeof y||r.isBuffer(b))return l?[p(h?a:l(a,D.encoder,g,"key"))+"="+p(l(b,D.encoder,g,"value"))]:[p(a)+"="+p(String(b))];var v,E=[];if(void 0===b)return E;if(u(s))v=s;else{var F=Object.keys(b);v=m?F.sort(m):F}for(var w=0;w0?y+g:""}},385:function(e,t,a){"use strict";var r=a(343),n=Object.prototype.hasOwnProperty,i=Array.isArray,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},u=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,a,r){if(e){var i=a.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,u=a.depth>0&&/(\[[^[\]]*])/.exec(i),c=u?i.slice(0,u.index):i,s=[];if(c){if(!a.plainObjects&&n.call(Object.prototype,c)&&!a.allowPrototypes)return;s.push(c)}for(var m=0;a.depth>0&&null!==(u=o.exec(i))&&m=0;--i){var o,u=e[i];if("[]"===u&&a.parseArrays)o=[].concat(n);else{o=a.plainObjects?Object.create(null):{};var c="["===u.charAt(0)&&"]"===u.charAt(u.length-1)?u.slice(1,-1):u,s=parseInt(c,10);a.parseArrays||""!==c?!isNaN(s)&&u!==c&&String(s)===c&&s>=0&&a.parseArrays&&s<=a.arrayLimit?(o=[])[s]=n:o[c]=n:o={0:n}}n=o}return n}(s,t,a,r)}};e.exports=function(e,t){var a=function(e){if(!e)return o;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?o.charset:e.charset;return{allowDots:void 0===e.allowDots?o.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:o.allowPrototypes,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:o.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:o.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:o.comma,decoder:"function"==typeof e.decoder?e.decoder:o.decoder,delimiter:"string"==typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:o.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:o.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:o.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:o.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:o.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:o.strictNullHandling}}(t);if(""===e||null==e)return a.plainObjects?Object.create(null):{};for(var s="string"==typeof e?function(e,t){var a,c={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,m=t.parameterLimit===1/0?void 0:t.parameterLimit,D=s.split(t.delimiter,m),f=-1,d=t.charset;if(t.charsetSentinel)for(a=0;a-1&&(h=i(h)?[h]:h),n.call(c,p)?c[p]=r.combine(c[p],h):c[p]=h}return c}(e,a):e,m=a.plainObjects?Object.create(null):{},D=Object.keys(s),f=0;f - + @@ -29,12 +29,12 @@
-

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + diff --git a/57423a8a.f8826373.js b/57423a8a.e595d57a.js similarity index 99% rename from 57423a8a.f8826373.js rename to 57423a8a.e595d57a.js index a410b68e4..680394b9b 100644 --- a/57423a8a.f8826373.js +++ b/57423a8a.e595d57a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{183:function(e,t,a){"use strict";a.r(t);a(277);var n=a(0),r=a.n(n),u=a(346),i=a(273),o=a(268);t.default=function(e){var t=e.metadata,a=e.items,n=t.allTagsPath,l=t.name,s=t.count;return r.a.createElement(i.a,{title:'Highlights tagged "'+l+'"',description:'Highlight | Tagged "'+l+'"'},r.a.createElement("header",{className:"hero hero--clean"},r.a.createElement("div",{className:"container"},r.a.createElement("h1",null,s," ",function(e,t){return e>1?t+"s":t}(s,"highlight"),' tagged with "',l,'"'),r.a.createElement("div",{className:"hero--subtitle"},r.a.createElement(o.a,{href:n},"View All Tags")))),r.a.createElement("main",{className:"container container--xs"},r.a.createElement(u.a,{items:a})))}},272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),i=Math.ceil(u/864e5),o=null;return"undefined"!=typeof window&&(o=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),i<30&&(!o||o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(m.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(M,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),o.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(S,e))}))):null)}))),(s||u)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement(P,{alt:s.alt,url:c})):r.a.createElement(P,{alt:s.alt,url:c}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),I=a(291),z=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,o=(a.tagline,a.title),l=a.themeConfig.image,s=a.url,c=e.children,m=e.title,D=e.noFooter,d=e.description,f=e.image,g=e.keywords,p=(e.permalink,e.version),E=m?m+" | "+o:o,b=f||l,v=s+Object(C.a)(b),y=Object(C.a)(n),F=Object(z.h)(),w=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return r.a.createElement(I.a,null,r.a.createElement(H.a,null,r.a.createElement(i.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),E&&r.a.createElement("title",null,E),E&&r.a.createElement("meta",{property:"og:title",content:E}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+E}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),w&&r.a.createElement("meta",{property:"og:url",content:w}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),w&&r.a.createElement("link",{rel:"canonical",href:w})),r.a.createElement(u.a,null),r.a.createElement(T,null),r.a.createElement("div",{className:"main-wrapper"},c),!D&&r.a.createElement(L,null)))}},274:function(e,t,a){"use strict";var n=a(12),r=a(301)(5),u=!0;"find"in[]&&Array(1).find((function(){u=!1})),n(n.P+n.F*u,"Array",{find:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),a(80)("find")},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},278:function(e,t,a){"use strict";var n=a(9),r=a(0),u=a.n(r),i=a(266),o=a.n(i),l=a(267),s=(a(139),a(140)),c=a.n(s);t.a=function(e){return function(t){var a,r=t.id,i=Object(n.a)(t,["id"]),s=Object(l.a)().siteConfig,m=(s=void 0===s?{}:s).themeConfig,D=(m=void 0===m?{}:m).navbar,d=(D=void 0===D?{}:D).hideOnScroll,h=void 0!==d&&d;return r?u.a.createElement(e,i,u.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:o()("anchor",(a={},a[c.a.enhancedAnchor]=!h,a)),id:r}),u.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#"),i.children):u.a.createElement(e,i)}}},279:function(e,t,a){var n=a(288);e.exports=o;var r=Object.hasOwnProperty,u=/\s/g,i=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function o(){if(!(this instanceof o))return new o;this.reset()}function l(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(i,"").replace(n(),"").replace(u,"-"))}o.prototype.slug=function(e,t){for(var a=l(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},o.prototype.reset=function(){this.occurrences=Object.create(null)},o.slug=l},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),i=a(266),o=a.n(i);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,i=e.style,l=e.value,s=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:o()("badge","badge--rounded","badge--"+i)},s?l:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),i=a.n(u),o=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,l=e.nameSuffix,s=e.rel,c=e.size,m=e.subTitle,D=e.vertical,d=Object(o.a)().siteConfig,h=(void 0===d?{}:d).customFields.metadata.team,f=h.find((function(e){return e.github==u}))||h.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:i()("avatar",n,(t={},t["avatar--"+c]=c,t["avatar--vertical"]=D,t))},r.a.createElement("img",{className:i()("avatar__photo","avatar__photo--"+c),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:s},f.name),l),m&&r.a.createElement("small",{className:"avatar__subtitle"},m),!m&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),i=(a(268),a(287)),o=a(266),l=a.n(o),s=a(275),c=a(138),m=a.n(c);t.a=function(e){var t,a=e.block,r=e.colorProfile,o=e.tags,c=e.valuesOnly,D=Object(s.a)(o,r);return u.a.createElement("span",{className:l()(m.a.tags,(t={},t[m.a.tagsBlock]=a,t))},D.map((function(e,t){return u.a.createElement(i.a,Object(n.a)({key:t,valueOnly:c},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,i,o,l=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,i=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,o=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==D(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(l.masks[t]||t||l.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",h=e[d+"Date"](),f=e[d+"Day"](),g=e[d+"Month"](),p=e[d+"FullYear"](),E=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),y=e[d+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),C=c(e),w=m(e),k={d:h,dd:s(h),ddd:l.i18n.dayNames[f],dddd:l.i18n.dayNames[f+7],m:g+1,mm:s(g+1),mmm:l.i18n.monthNames[g],mmmm:l.i18n.monthNames[g+12],yy:String(p).slice(2),yyyy:p,h:E%12||12,hh:s(E%12||12),H:E,HH:s(E),M:b,MM:s(b),s:v,ss:s(v),l:s(y,3),L:s(Math.round(y/10)),t:E<12?l.i18n.timeNames[0]:l.i18n.timeNames[1],tt:E<12?l.i18n.timeNames[2]:l.i18n.timeNames[3],T:E<12?l.i18n.timeNames[4]:l.i18n.timeNames[5],TT:E<12?l.i18n.timeNames[6]:l.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(i)||[""]).pop().replace(o,""),o:(F>0?"-":"+")+s(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][h%10>3?0:(h%100-h%10!=10)*h%10],W:C,N:w};return t.replace(u,(function(e){return e in k?k[e]:e.slice(1,e.length-1)}))});function s(e,t){for(e=String(e),t=t||2;e.lengthy;y++)if((D||y in E)&&(g=b(f=E[y],y,p),e))if(a)F[y]=g;else if(g)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:F.push(f)}else if(c)return!1;return m?-1:s||c?c:F}}},302:function(e,t,a){var n=a(303);e.exports=function(e,t){return new(n(e))(t)}},303:function(e,t,a){var n=a(14),r=a(323),u=a(2)("species");e.exports=function(e){var t;return r(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!r(t.prototype)||(t=void 0),n(t)&&null===(t=t[u])&&(t=void 0)),void 0===t?Array:t}},325:function(e,t,a){"use strict";var n=a(12),r=a(30),u=a(25),i=a(13),o=[].sort,l=[1,2,3];n(n.P+n.F*(i((function(){l.sort(void 0)}))||!i((function(){l.sort(null)}))||!a(326)(o)),"Array",{sort:function(e){return void 0===e?o.call(u(this)):o.call(u(this),r(e))}})},326:function(e,t,a){"use strict";var n=a(13);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},327:function(e,t,a){e.exports=function(){var e=[],t=[],a={},n={},r={};function u(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function i(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function o(e,t){return e.replace(/\$(\d{1,2})/g,(function(e,a){return t[a]||""}))}function l(e,t){return e.replace(t[0],(function(a,n){var r=o(t[1],arguments);return i(""===a?e[n-1]:a,r)}))}function s(e,t,n){if(!e.length||a.hasOwnProperty(e))return t;for(var r=n.length;r--;){var u=n[r];if(u[0].test(t))return l(t,u)}return t}function c(e,t,a){return function(n){var r=n.toLowerCase();return t.hasOwnProperty(r)?i(n,r):e.hasOwnProperty(r)?i(n,e[r]):s(r,n,a)}}function m(e,t,a,n){return function(n){var r=n.toLowerCase();return!!t.hasOwnProperty(r)||!e.hasOwnProperty(r)&&s(r,r,a)===r}}function D(e,t,a){return(a?t+" ":"")+(1===t?D.singular(e):D.plural(e))}return D.plural=c(r,n,e),D.isPlural=m(r,n,e),D.singular=c(n,r,t),D.isSingular=m(n,r,t),D.addPluralRule=function(t,a){e.push([u(t),a])},D.addSingularRule=function(e,a){t.push([u(e),a])},D.addUncountableRule=function(e){"string"!=typeof e?(D.addPluralRule(e,"$0"),D.addSingularRule(e,"$0")):a[e.toLowerCase()]=!0},D.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),r[e]=t,n[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return D.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return D.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return D.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(D.addUncountableRule),D}()},333:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=["second","minute","hour","day","week","month","year"],i=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],o={},l=function(e,t){o[e]=t},s=function(e){return o[e]||o.en_US},c=[60,60,24,7,365/7/12,12];function m(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function D(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=c[r]&&r(0===(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}function d(e,t){return(+(t?m(t):new Date)-+m(e))/1e3}function h(e){return parseInt(e.getAttribute("timeago-id"))}var f={},g=function(e){clearTimeout(e),delete f[e]};function p(e,t,a,n){g(h(e));var r=n.relativeDate,u=n.minInterval,i=d(t,r);e.innerText=D(i,a);var o=setTimeout((function(){p(e,t,a,n)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,n=Math.abs(e);e>=c[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=i[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),y=function(){return(y=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0&&u.a.createElement("div",null,u.a.createElement(s.a,{colorProfile:"blog",tags:F}))))},p=a(279),E=a.n(p),b=a(327),v=a.n(b),y=/\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\.?|versus|via|when|with|without|yet)\b/i,F=/[^\s:\u2013\u2014-]+|./g,C=/\s/,w=/.(?=[A-Z]|\..)/,k=/[A-Za-z0-9\u00C0-\u00FF]/;function N(e){for(var t,a="";null!==(t=F.exec(e));){var n=t[0],r=t.index;w.test(n)||y.test(n)&&0!==r&&r+n.length!==e.length||":"===e.charAt(r+n.length)&&!C.test(e.charAt(r+n.length+1))?a+=n:a+=n.replace(k,(function(e){return e.toUpperCase()}))}return a}Object(i.a)("h2");var $=Object(i.a)("h3");function A(e){var t=e.groupBy,a=e.group,n=new E.a;switch(t){case"release":return u.a.createElement("li",{className:"header sticky"},u.a.createElement("h3",null,u.a.createElement(l.a,{to:"/releases/"+a+"/"},N(a))));case"type":var r=null,i=v()(N(a)),o=null;switch(a){case"breaking change":r="alert-triangle",o="danger";break;case"enhancement":r="arrow-up-circle",o="pink";break;case"new feature":r="gift",o="primary";break;case"performance":r="zap",i="Performance Improvements",o="warning"}return u.a.createElement("li",{className:"header sticky"},u.a.createElement($,{id:n.slug(a+"-highlights"),className:"text--"+o},r&&u.a.createElement("i",{className:"feather icon-"+r})," ",i));default:throw Error("unknown group: "+t)}}t.a=function(e){var t=e.author,a=(e.clean,e.colorize),r=e.groupBy,i=e.items,o=e.tags,l=e.timeline,s=r||"release",c=function(e){return e.map((function(e){if(e.content){var t=e.content,a=t.frontMatter,n=t.metadata,r=a.author_github,u=a.pr_numbers,i=a.release,o=a.title,l=n.date,s=n.description,c=n.permalink,m=n.tags,D={};return D.authorGithub=r,D.dateString=l,D.description=s,D.permalink=c,D.prNumbers=u,D.release=i,D.tags=m,D.title=o,D}return e}))}(i),m=_.groupBy(c,s),d=!1!==l?Object.keys(m):Object.keys(m).sort();return u.a.createElement("ul",{className:D()("connected-list","connected-list--clean")},d.map((function(e,r){var i=m[e];return u.a.createElement(u.a.Fragment,null,u.a.createElement(A,{groupBy:s,group:e}),u.a.createElement("ul",{className:D()("connected-list",{"connected-list--timeline":!1!==l})},i.map((function(e,r){return u.a.createElement("li",{key:r},u.a.createElement(g,Object(n.a)({},e,{colorize:a,hideAuthor:0==t,hideTags:0==o})))}))))})))}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{183:function(e,t,a){"use strict";a.r(t);a(277);var n=a(0),r=a.n(n),u=a(346),i=a(273),o=a(268);t.default=function(e){var t=e.metadata,a=e.items,n=t.allTagsPath,l=t.name,s=t.count;return r.a.createElement(i.a,{title:'Highlights tagged "'+l+'"',description:'Highlight | Tagged "'+l+'"'},r.a.createElement("header",{className:"hero hero--clean"},r.a.createElement("div",{className:"container"},r.a.createElement("h1",null,s," ",function(e,t){return e>1?t+"s":t}(s,"highlight"),' tagged with "',l,'"'),r.a.createElement("div",{className:"hero--subtitle"},r.a.createElement(o.a,{href:n},"View All Tags")))),r.a.createElement("main",{className:"container container--xs"},r.a.createElement(u.a,{items:a})))}},272:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_highlight,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),i=Math.ceil(u/864e5),o=null;return"undefined"!=typeof window&&(o=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),i<30&&(!o||o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(m.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(M,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),o.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(S,e))}))):null)}))),(s||u)&&r.a.createElement("div",{className:"text--center"},s&&s.src&&r.a.createElement("div",{className:"margin-bottom--sm"},s.href?r.a.createElement("a",{href:s.href,target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement(P,{alt:s.alt,url:c})):r.a.createElement(P,{alt:s.alt,url:c}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),I=a(291),z=a(3);a(135);t.a=function(e){var t=Object(h.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,o=(a.tagline,a.title),l=a.themeConfig.image,s=a.url,c=e.children,m=e.title,D=e.noFooter,d=e.description,f=e.image,g=e.keywords,p=(e.permalink,e.version),E=m?m+" | "+o:o,b=f||l,v=s+Object(C.a)(b),y=Object(C.a)(n),F=Object(z.h)(),w=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return r.a.createElement(I.a,null,r.a.createElement(H.a,null,r.a.createElement(i.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),E&&r.a.createElement("title",null,E),E&&r.a.createElement("meta",{property:"og:title",content:E}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+E}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),w&&r.a.createElement("meta",{property:"og:url",content:w}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),w&&r.a.createElement("link",{rel:"canonical",href:w})),r.a.createElement(u.a,null),r.a.createElement(T,null),r.a.createElement("div",{className:"main-wrapper"},c),!D&&r.a.createElement(L,null)))}},274:function(e,t,a){"use strict";var n=a(12),r=a(301)(5),u=!0;"find"in[]&&Array(1).find((function(){u=!1})),n(n.P+n.F*u,"Array",{find:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),a(80)("find")},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},278:function(e,t,a){"use strict";var n=a(9),r=a(0),u=a.n(r),i=a(266),o=a.n(i),l=a(267),s=(a(139),a(140)),c=a.n(s);t.a=function(e){return function(t){var a,r=t.id,i=Object(n.a)(t,["id"]),s=Object(l.a)().siteConfig,m=(s=void 0===s?{}:s).themeConfig,D=(m=void 0===m?{}:m).navbar,d=(D=void 0===D?{}:D).hideOnScroll,h=void 0!==d&&d;return r?u.a.createElement(e,i,u.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:o()("anchor",(a={},a[c.a.enhancedAnchor]=!h,a)),id:r}),u.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#"),i.children):u.a.createElement(e,i)}}},279:function(e,t,a){var n=a(288);e.exports=o;var r=Object.hasOwnProperty,u=/\s/g,i=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function o(){if(!(this instanceof o))return new o;this.reset()}function l(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(i,"").replace(n(),"").replace(u,"-"))}o.prototype.slug=function(e,t){for(var a=l(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},o.prototype.reset=function(){this.occurrences=Object.create(null)},o.slug=l},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),i=a(266),o=a.n(i);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,i=e.style,l=e.value,s=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:o()("badge","badge--rounded","badge--"+i)},s?l:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),i=a.n(u),o=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,l=e.nameSuffix,s=e.rel,c=e.size,m=e.subTitle,D=e.vertical,d=Object(o.a)().siteConfig,h=(void 0===d?{}:d).customFields.metadata.team,f=h.find((function(e){return e.github==u}))||h.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:i()("avatar",n,(t={},t["avatar--"+c]=c,t["avatar--vertical"]=D,t))},r.a.createElement("img",{className:i()("avatar__photo","avatar__photo--"+c),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:s},f.name),l),m&&r.a.createElement("small",{className:"avatar__subtitle"},m),!m&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),i=(a(268),a(287)),o=a(266),l=a.n(o),s=a(275),c=a(138),m=a.n(c);t.a=function(e){var t,a=e.block,r=e.colorProfile,o=e.tags,c=e.valuesOnly,D=Object(s.a)(o,r);return u.a.createElement("span",{className:l()(m.a.tags,(t={},t[m.a.tagsBlock]=a,t))},D.map((function(e,t){return u.a.createElement(i.a,Object(n.a)({key:t,valueOnly:c},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,i,o,l=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,i=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,o=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==D(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(l.masks[t]||t||l.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",h=e[d+"Date"](),f=e[d+"Day"](),g=e[d+"Month"](),p=e[d+"FullYear"](),E=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),y=e[d+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),C=c(e),w=m(e),k={d:h,dd:s(h),ddd:l.i18n.dayNames[f],dddd:l.i18n.dayNames[f+7],m:g+1,mm:s(g+1),mmm:l.i18n.monthNames[g],mmmm:l.i18n.monthNames[g+12],yy:String(p).slice(2),yyyy:p,h:E%12||12,hh:s(E%12||12),H:E,HH:s(E),M:b,MM:s(b),s:v,ss:s(v),l:s(y,3),L:s(Math.round(y/10)),t:E<12?l.i18n.timeNames[0]:l.i18n.timeNames[1],tt:E<12?l.i18n.timeNames[2]:l.i18n.timeNames[3],T:E<12?l.i18n.timeNames[4]:l.i18n.timeNames[5],TT:E<12?l.i18n.timeNames[6]:l.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(i)||[""]).pop().replace(o,""),o:(F>0?"-":"+")+s(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][h%10>3?0:(h%100-h%10!=10)*h%10],W:C,N:w};return t.replace(u,(function(e){return e in k?k[e]:e.slice(1,e.length-1)}))});function s(e,t){for(e=String(e),t=t||2;e.lengthy;y++)if((D||y in E)&&(g=b(f=E[y],y,p),e))if(a)F[y]=g;else if(g)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:F.push(f)}else if(c)return!1;return m?-1:s||c?c:F}}},302:function(e,t,a){var n=a(303);e.exports=function(e,t){return new(n(e))(t)}},303:function(e,t,a){var n=a(14),r=a(323),u=a(2)("species");e.exports=function(e){var t;return r(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!r(t.prototype)||(t=void 0),n(t)&&null===(t=t[u])&&(t=void 0)),void 0===t?Array:t}},325:function(e,t,a){"use strict";var n=a(12),r=a(30),u=a(25),i=a(13),o=[].sort,l=[1,2,3];n(n.P+n.F*(i((function(){l.sort(void 0)}))||!i((function(){l.sort(null)}))||!a(326)(o)),"Array",{sort:function(e){return void 0===e?o.call(u(this)):o.call(u(this),r(e))}})},326:function(e,t,a){"use strict";var n=a(13);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},327:function(e,t,a){e.exports=function(){var e=[],t=[],a={},n={},r={};function u(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function i(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function o(e,t){return e.replace(/\$(\d{1,2})/g,(function(e,a){return t[a]||""}))}function l(e,t){return e.replace(t[0],(function(a,n){var r=o(t[1],arguments);return i(""===a?e[n-1]:a,r)}))}function s(e,t,n){if(!e.length||a.hasOwnProperty(e))return t;for(var r=n.length;r--;){var u=n[r];if(u[0].test(t))return l(t,u)}return t}function c(e,t,a){return function(n){var r=n.toLowerCase();return t.hasOwnProperty(r)?i(n,r):e.hasOwnProperty(r)?i(n,e[r]):s(r,n,a)}}function m(e,t,a,n){return function(n){var r=n.toLowerCase();return!!t.hasOwnProperty(r)||!e.hasOwnProperty(r)&&s(r,r,a)===r}}function D(e,t,a){return(a?t+" ":"")+(1===t?D.singular(e):D.plural(e))}return D.plural=c(r,n,e),D.isPlural=m(r,n,e),D.singular=c(n,r,t),D.isSingular=m(n,r,t),D.addPluralRule=function(t,a){e.push([u(t),a])},D.addSingularRule=function(e,a){t.push([u(e),a])},D.addUncountableRule=function(e){"string"!=typeof e?(D.addPluralRule(e,"$0"),D.addSingularRule(e,"$0")):a[e.toLowerCase()]=!0},D.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),r[e]=t,n[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return D.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return D.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return D.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(D.addUncountableRule),D}()},333:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=["second","minute","hour","day","week","month","year"],i=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],o={},l=function(e,t){o[e]=t},s=function(e){return o[e]||o.en_US},c=[60,60,24,7,365/7/12,12];function m(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function D(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=c[r]&&r(0===(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}function d(e,t){return(+(t?m(t):new Date)-+m(e))/1e3}function h(e){return parseInt(e.getAttribute("timeago-id"))}var f={},g=function(e){clearTimeout(e),delete f[e]};function p(e,t,a,n){g(h(e));var r=n.relativeDate,u=n.minInterval,i=d(t,r);e.innerText=D(i,a);var o=setTimeout((function(){p(e,t,a,n)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,n=Math.abs(e);e>=c[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),l("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=i[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),y=function(){return(y=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0&&u.a.createElement("div",null,u.a.createElement(s.a,{colorProfile:"blog",tags:F}))))},p=a(279),E=a.n(p),b=a(327),v=a.n(b),y=/\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\.?|versus|via|when|with|without|yet)\b/i,F=/[^\s:\u2013\u2014-]+|./g,C=/\s/,w=/.(?=[A-Z]|\..)/,k=/[A-Za-z0-9\u00C0-\u00FF]/;function N(e){for(var t,a="";null!==(t=F.exec(e));){var n=t[0],r=t.index;w.test(n)||y.test(n)&&0!==r&&r+n.length!==e.length||":"===e.charAt(r+n.length)&&!C.test(e.charAt(r+n.length+1))?a+=n:a+=n.replace(k,(function(e){return e.toUpperCase()}))}return a}Object(i.a)("h2");var $=Object(i.a)("h3");function A(e){var t=e.groupBy,a=e.group,n=new E.a;switch(t){case"release":return u.a.createElement("li",{className:"header sticky"},u.a.createElement("h3",null,u.a.createElement(l.a,{to:"/releases/"+a+"/"},N(a))));case"type":var r=null,i=v()(N(a)),o=null;switch(a){case"breaking change":r="alert-triangle",o="danger";break;case"enhancement":r="arrow-up-circle",o="pink";break;case"new feature":r="gift",o="primary";break;case"performance":r="zap",i="Performance Improvements",o="warning"}return u.a.createElement("li",{className:"header sticky"},u.a.createElement($,{id:n.slug(a+"-highlights"),className:"text--"+o},r&&u.a.createElement("i",{className:"feather icon-"+r})," ",i));default:throw Error("unknown group: "+t)}}t.a=function(e){var t=e.author,a=(e.clean,e.colorize),r=e.groupBy,i=e.items,o=e.tags,l=e.timeline,s=r||"release",c=function(e){return e.map((function(e){if(e.content){var t=e.content,a=t.frontMatter,n=t.metadata,r=a.author_github,u=a.pr_numbers,i=a.release,o=a.title,l=n.date,s=n.description,c=n.permalink,m=n.tags,D={};return D.authorGithub=r,D.dateString=l,D.description=s,D.permalink=c,D.prNumbers=u,D.release=i,D.tags=m,D.title=o,D}return e}))}(i),m=_.groupBy(c,s),d=!1!==l?Object.keys(m):Object.keys(m).sort();return u.a.createElement("ul",{className:D()("connected-list","connected-list--clean")},d.map((function(e,r){var i=m[e];return u.a.createElement(u.a.Fragment,null,u.a.createElement(A,{groupBy:s,group:e}),u.a.createElement("ul",{className:D()("connected-list",{"connected-list--timeline":!1!==l})},i.map((function(e,r){return u.a.createElement("li",{key:r},u.a.createElement(g,Object(n.a)({},e,{colorize:a,hideAuthor:0==t,hideTags:0==o})))}))))})))}}}]); \ No newline at end of file diff --git a/5d1574ce.a3352eb8.js b/5d1574ce.a685f3c5.js similarity index 99% rename from 5d1574ce.a3352eb8.js rename to 5d1574ce.a685f3c5.js index 223ef4d56..004f47e21 100644 --- a/5d1574ce.a3352eb8.js +++ b/5d1574ce.a685f3c5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{184:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),u=a(292),l=a(328),i=a(278),c=a(273),o=a(268),s=a(299),D=a(265),m=a(339),d=a(293),E=a(333),f=a(266),p=a.n(f),h=a(294),g=a.n(h),b=a(275),v=a(185),y=a.n(v),F=Object(i.a)("h2");Object(i.a)("h3");function C(e){var t=e.release;return"features"==t?r.a.createElement(r.a.Fragment,null,"This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through ",r.a.createElement(o.a,{to:"/releases/nightly/download/"},"all those commits")," of new features if you are interested."):r.a.createElement("p",null,"This change was made available in ",r.a.createElement(o.a,{to:"https://github.com/panjf2000/gnet/releases/tag/v"+t+"/"},t),".")}t.default=function(e){var t=e.content,a=t.frontMatter,n=t.metadata,i=a.author_github,o=a.description,f=(a.id,a.pr_numbers),h=a.release,v=a.title,N=n.date,_=n.tags,O=new Date(Date.parse(N)),k=g()(O,"mmm dS, yyyy"),w=Object(b.a)(_,"highlights");return w=w.concat(f.map((function(e){return{enriched:!0,label:r.a.createElement(r.a.Fragment,null,r.a.createElement("i",{className:"feather icon-git-pull-request"})," ",e),permalink:"https://github.com/panjf2000/gnet/commit/"+e,style:"secondary"}}))),r.a.createElement(c.a,{title:v,description:v+", in minutes, for free"},r.a.createElement("article",{className:y.a.blogPost},r.a.createElement("header",{className:p()("hero","domain-bg","domain-bg--nodes",y.a.header)},r.a.createElement("div",{className:p()("container",y.a.headerContainer)},r.a.createElement("div",{class:"hero--avatar"},r.a.createElement(u.a,{github:i,size:"lg",nameSuffix:r.a.createElement(r.a.Fragment,null," / ",k," / ",r.a.createElement(E.a,{pubdate:"pubdate",title:k,datetime:O})),rel:"author",subTitle:!1,vertical:!0})),r.a.createElement("h1",null,v),r.a.createElement("div",{class:"hero--subtitle"},o),r.a.createElement("div",{className:"hero--tags"},r.a.createElement(d.a,{colorProfile:"blog",tags:w})))),r.a.createElement("div",{className:"container container--xs margin-vert--xl"},r.a.createElement("section",{className:"markdown"},r.a.createElement(D.a,{components:s.a},r.a.createElement(t,null))),r.a.createElement("section",null,r.a.createElement(F,{id:"get"},"Get This Change"),r.a.createElement(C,{release:h})),r.a.createElement("section",null,r.a.createElement(F,{id:"cta"},"Like What You See?"),r.a.createElement(l.a,null)),(n.nextItem||n.prevItem)&&r.a.createElement("div",{className:"margin-vert--xl"},r.a.createElement(m.a,{next:n.nextItem,previous:n.prevItem})))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return D})),a.d(t,"b",(function(){return E}));var n=a(0),r=a.n(n);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(L,{alt:o.alt,url:s})):r.a.createElement(L,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),U=a(291),W=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,f=e.image,p=e.keywords,h=(e.permalink,e.version),g=D?D+" | "+i:i,b=f||c,v=o+Object(C.a)(b),y=Object(C.a)(n),F=Object(W.h)(),N=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return r.a.createElement(U.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),g&&r.a.createElement("title",null,g),g&&r.a.createElement("meta",{property:"og:title",content:g}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),h&&r.a.createElement("meta",{name:"docsearch:version",content:h}),p&&p.length&&r.a.createElement("meta",{name:"keywords",content:p.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+g}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(H,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,f=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:o},f.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),f=e[d+"Day"](),p=e[d+"Month"](),h=e[d+"FullYear"](),g=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),y=e[d+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),_={d:E,dd:o(E),ddd:c.i18n.dayNames[f],dddd:c.i18n.dayNames[f+7],m:p+1,mm:o(p+1),mmm:c.i18n.monthNames[p],mmmm:c.i18n.monthNames[p+12],yy:String(h).slice(2),yyyy:h,h:g%12||12,hh:o(g%12||12),H:g,HH:o(g),M:b,MM:o(b),s:v,ss:o(v),l:o(y,3),L:o(Math.round(y/10)),t:g<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:g<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:g<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:g<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(F>0?"-":"+")+o(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in _?_[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(w=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return O.current&&(e=new i.a(O.current,{target:function(){return _.current}})),function(){e&&e.destroy()}}),[O.current,_.current]);var S=a&&a.replace(/language-/,"");!S&&s.defaultLanguage&&(S=s.defaultLanguage);var x=function(){window.getSelection().empty(),y(!0),setTimeout((function(){return y(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,w&&u.a.createElement("div",{style:l,className:g.a.codeBlockTitle},w),u.a.createElement("div",{className:g.a.codeBlockContent},u.a.createElement("button",{ref:O,type:"button","aria-label":"Copy code to clipboard",className:D()(g.a.copyButton,(t={},t[g.a.copyButtonWithTitle]=w,t)),onClick:x},h?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,g.a.codeBlock,(a={},a[g.a.codeBlockWithTitle]=w,a))},u.a.createElement("div",{ref:_,className:g.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return k.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},333:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=["second","minute","hour","day","week","month","year"],l=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],i={},c=function(e,t){i[e]=t},o=function(e){return i[e]||i.en_US},s=[60,60,24,7,365/7/12,12];function D(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function m(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=s[r]&&r(0===(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}function d(e,t){return(+(t?D(t):new Date)-+D(e))/1e3}function E(e){return parseInt(e.getAttribute("timeago-id"))}var f={},p=function(e){clearTimeout(e),delete f[e]};function h(e,t,a,n){p(E(e));var r=n.relativeDate,u=n.minInterval,l=d(t,r);e.innerText=m(l,a);var i=setTimeout((function(){h(e,t,a,n)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,n=Math.abs(e);e>=s[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),c("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=l[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),y=function(){return(y=Object.assign||function(e){for(var t,a=1,n=arguments.length;a=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(L,{alt:o.alt,url:s})):r.a.createElement(L,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),U=a(291),W=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,f=e.image,p=e.keywords,h=(e.permalink,e.version),g=D?D+" | "+i:i,b=f||c,v=o+Object(C.a)(b),y=Object(C.a)(n),F=Object(W.h)(),N=F?"https://gnet.host"+(F.pathname.endsWith("/")?F.pathname:F.pathname+"/"):null;return r.a.createElement(U.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),g&&r.a.createElement("title",null,g),g&&r.a.createElement("meta",{property:"og:title",content:g}),n&&r.a.createElement("link",{rel:"shortcut icon",href:y}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),h&&r.a.createElement("meta",{name:"docsearch:version",content:h}),p&&p.length&&r.a.createElement("meta",{name:"keywords",content:p.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+g}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(H,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,f=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:o},f.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),f=e[d+"Day"](),p=e[d+"Month"](),h=e[d+"FullYear"](),g=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),y=e[d+"Milliseconds"](),F=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),_={d:E,dd:o(E),ddd:c.i18n.dayNames[f],dddd:c.i18n.dayNames[f+7],m:p+1,mm:o(p+1),mmm:c.i18n.monthNames[p],mmmm:c.i18n.monthNames[p+12],yy:String(h).slice(2),yyyy:h,h:g%12||12,hh:o(g%12||12),H:g,HH:o(g),M:b,MM:o(b),s:v,ss:o(v),l:o(y,3),L:o(Math.round(y/10)),t:g<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:g<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:g<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:g<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(F>0?"-":"+")+o(100*Math.floor(Math.abs(F)/60)+Math.abs(F)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in _?_[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(w=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return O.current&&(e=new i.a(O.current,{target:function(){return _.current}})),function(){e&&e.destroy()}}),[O.current,_.current]);var S=a&&a.replace(/language-/,"");!S&&s.defaultLanguage&&(S=s.defaultLanguage);var x=function(){window.getSelection().empty(),y(!0),setTimeout((function(){return y(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,w&&u.a.createElement("div",{style:l,className:g.a.codeBlockTitle},w),u.a.createElement("div",{className:g.a.codeBlockContent},u.a.createElement("button",{ref:O,type:"button","aria-label":"Copy code to clipboard",className:D()(g.a.copyButton,(t={},t[g.a.copyButtonWithTitle]=w,t)),onClick:x},h?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,g.a.codeBlock,(a={},a[g.a.codeBlockWithTitle]=w,a))},u.a.createElement("div",{ref:_,className:g.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return k.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},333:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=["second","minute","hour","day","week","month","year"],l=["\u79d2","\u5206\u949f","\u5c0f\u65f6","\u5929","\u5468","\u4e2a\u6708","\u5e74"],i={},c=function(e,t){i[e]=t},o=function(e){return i[e]||i.en_US},s=[60,60,24,7,365/7/12,12];function D(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function m(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=s[r]&&r(0===(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}function d(e,t){return(+(t?D(t):new Date)-+D(e))/1e3}function E(e){return parseInt(e.getAttribute("timeago-id"))}var f={},p=function(e){clearTimeout(e),delete f[e]};function h(e,t,a,n){p(E(e));var r=n.relativeDate,u=n.minInterval,l=d(t,r);e.innerText=m(l,a);var i=setTimeout((function(){h(e,t,a,n)}),Math.min(1e3*Math.max(function(e){for(var t=1,a=0,n=Math.abs(e);e>=s[a]&&a1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),c("zh_CN",(function(e,t){if(0===t)return["\u521a\u521a","\u7247\u523b\u540e"];var a=l[~~(t/2)];return[e+" "+a+"\u524d",e+" "+a+"\u540e"]}));var b,v=(b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])})(e,t)},function(e,t){function a(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(a.prototype=t.prototype,new a)}),y=function(){return(y=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(d.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(L,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,a){return r.a.createElement("div",{key:a,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,a){return e.html?r.a.createElement("li",{key:a,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(m||l)&&r.a.createElement("div",{className:"text--center"},m&&m.src&&r.a.createElement("div",{className:"margin-bottom--sm"},m.href?r.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:A.a.footerLogoLink},r.a.createElement(F,{alt:m.alt,url:s})):r.a.createElement(F,{alt:m.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:A.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},V=t(290),H=t(291),J=t(3);t(135);a.a=function(e){var a=Object(g.a)().siteConfig,t=void 0===a?{}:a,n=t.favicon,i=(t.tagline,t.title),o=t.themeConfig.image,m=t.url,s=e.children,d=e.title,u=e.noFooter,h=e.description,b=e.image,E=e.keywords,v=(e.permalink,e.version),f=d?d+" | "+i:i,p=b||o,N=m+Object(w.a)(p),_=Object(w.a)(n),k=Object(J.h)(),y=k?"https://gnet.host"+(k.pathname.endsWith("/")?k.pathname:k.pathname+"/"):null;return r.a.createElement(H.a,null,r.a.createElement(V.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),f&&r.a.createElement("title",null,f),f&&r.a.createElement("meta",{property:"og:title",content:f}),n&&r.a.createElement("link",{rel:"shortcut icon",href:_}),h&&r.a.createElement("meta",{name:"description",content:h}),h&&r.a.createElement("meta",{property:"og:description",content:h}),v&&r.a.createElement("meta",{name:"docsearch:version",content:v}),E&&E.length&&r.a.createElement("meta",{name:"keywords",content:E.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:N}),p&&r.a.createElement("meta",{property:"twitter:image",content:N}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+f}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(S,null),r.a.createElement("div",{className:"main-wrapper"},s),!u&&r.a.createElement(B,null)))}},277:function(e,a,t){var n=t(24).f,r=Function.prototype,l=/^\s*function ([^ (]*)/;"name"in r||t(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(l)[1]}catch(e){return""}}})},278:function(e,a,t){"use strict";var n=t(9),r=t(0),l=t.n(r),c=t(266),i=t.n(c),o=t(267),m=(t(139),t(140)),s=t.n(m);a.a=function(e){return function(a){var t,r=a.id,c=Object(n.a)(a,["id"]),m=Object(o.a)().siteConfig,d=(m=void 0===m?{}:m).themeConfig,u=(d=void 0===d?{}:d).navbar,h=(u=void 0===u?{}:u).hideOnScroll,g=void 0!==h&&h;return r?l.a.createElement(e,c,l.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:i()("anchor",(t={},t[s.a.enhancedAnchor]=!g,t)),id:r}),l.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#"),c.children):l.a.createElement(e,c)}}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{186:function(e,a,t){"use strict";t.r(a);t(277);var n=t(0),r=t.n(n),l=t(278),c=t(273),i=t(268),o=t(143),m=t.n(o),s=t(267),d=Object(l.a)("h2");Object(l.a)("h3");a.default=function(){var e=Object(s.a)().siteConfig,a=(void 0===e?{}:e).customFields.metadata.team;return r.a.createElement(c.a,{title:"Community",description:"Join the gnet community. Connect with other gnet users and help make gnet better."},r.a.createElement("header",{className:"hero hero--clean"},r.a.createElement("div",{className:"container container--fluid"},r.a.createElement("h1",null,"gnet Community"),r.a.createElement("div",{className:"hero--subtitle"},"Join the gnet community. Connect with other gnet users and help make gnet better."))),r.a.createElement("main",null,r.a.createElement("section",null,r.a.createElement("div",{className:"container"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://discord.gg/UyKD7NZcfH",target:"_blank",className:"panel panel--button"},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-message-circle"})),r.a.createElement("div",{className:"panel--title"},"Chat"),r.a.createElement("div",{className:"panel--description"},"Ask questions and get help"))),r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:"panel panel--button"},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",{className:"panel--title"},"@panjf2000"),r.a.createElement("div",{className:"panel--description"},"Follow me in real-time"))),r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:"panel panel--button"},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",{className:"panel--title"},"Github panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Code, issues, and pull requests")))))),r.a.createElement("section",null,r.a.createElement("div",{className:"container"},r.a.createElement(d,{id:"team"},"Meet The Team"),r.a.createElement("div",{className:"sub-title"},"Andy Pan is the creator of gnet and the only core contributor at present, hoping more developers will join me in the future."),r.a.createElement("div",{className:m.a.coreTeam},a.map((function(e,a){return r.a.createElement(i.a,{key:a,to:e.github,className:"avatar avatar--vertical"},r.a.createElement("img",{className:"avatar__photo avatar__photo--xl",src:e.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("h4",{className:"avatar__name"},e.name)))})))))))}},272:function(e,a,t){"use strict";t.d(a,"a",(function(){return r})),t.d(a,"b",(function(){return l}));var n=t(267);function r(){var e=Object(n.a)().siteConfig,a=(void 0===e?{}:e).customFields.metadata.latest_highlight,t=Date.parse(a.date),r=new Date,l=Math.abs(r-t),c=Math.ceil(l/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(d.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(L,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,a){return r.a.createElement("div",{key:a,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,a){return e.html?r.a.createElement("li",{key:a,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(m||l)&&r.a.createElement("div",{className:"text--center"},m&&m.src&&r.a.createElement("div",{className:"margin-bottom--sm"},m.href?r.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:A.a.footerLogoLink},r.a.createElement(F,{alt:m.alt,url:s})):r.a.createElement(F,{alt:m.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:A.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),l,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},V=t(290),H=t(291),J=t(3);t(135);a.a=function(e){var a=Object(g.a)().siteConfig,t=void 0===a?{}:a,n=t.favicon,i=(t.tagline,t.title),o=t.themeConfig.image,m=t.url,s=e.children,d=e.title,u=e.noFooter,h=e.description,b=e.image,E=e.keywords,v=(e.permalink,e.version),f=d?d+" | "+i:i,p=b||o,N=m+Object(w.a)(p),_=Object(w.a)(n),k=Object(J.h)(),y=k?"https://gnet.host"+(k.pathname.endsWith("/")?k.pathname:k.pathname+"/"):null;return r.a.createElement(H.a,null,r.a.createElement(V.a,null,r.a.createElement(c.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),f&&r.a.createElement("title",null,f),f&&r.a.createElement("meta",{property:"og:title",content:f}),n&&r.a.createElement("link",{rel:"shortcut icon",href:_}),h&&r.a.createElement("meta",{name:"description",content:h}),h&&r.a.createElement("meta",{property:"og:description",content:h}),v&&r.a.createElement("meta",{name:"docsearch:version",content:v}),E&&E.length&&r.a.createElement("meta",{name:"keywords",content:E.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:N}),p&&r.a.createElement("meta",{property:"twitter:image",content:N}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+f}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&r.a.createElement("meta",{property:"og:url",content:y}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&r.a.createElement("link",{rel:"canonical",href:y})),r.a.createElement(l.a,null),r.a.createElement(S,null),r.a.createElement("div",{className:"main-wrapper"},s),!u&&r.a.createElement(B,null)))}},277:function(e,a,t){var n=t(24).f,r=Function.prototype,l=/^\s*function ([^ (]*)/;"name"in r||t(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(l)[1]}catch(e){return""}}})},278:function(e,a,t){"use strict";var n=t(9),r=t(0),l=t.n(r),c=t(266),i=t.n(c),o=t(267),m=(t(139),t(140)),s=t.n(m);a.a=function(e){return function(a){var t,r=a.id,c=Object(n.a)(a,["id"]),m=Object(o.a)().siteConfig,d=(m=void 0===m?{}:m).themeConfig,u=(d=void 0===d?{}:d).navbar,h=(u=void 0===u?{}:u).hideOnScroll,g=void 0!==h&&h;return r?l.a.createElement(e,c,l.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:i()("anchor",(t={},t[s.a.enhancedAnchor]=!g,t)),id:r}),l.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#"),c.children):l.a.createElement(e,c)}}}}]); \ No newline at end of file diff --git a/6875c492.941daf3b.js b/6875c492.bdd2f783.js similarity index 99% rename from 6875c492.941daf3b.js rename to 6875c492.bdd2f783.js index bb3f97ac7..29129c65f 100644 --- a/6875c492.941daf3b.js +++ b/6875c492.bdd2f783.js @@ -1,2 +1,2 @@ -/*! For license information please see 6875c492.941daf3b.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{189:function(e,t,a){"use strict";a.r(t);a(277);var n=a(0),r=a.n(n),u=a(273),l=a(329),c=a(268);t.default=function(e){var t=e.metadata,a=e.items,n=t.allTagsPath,i=t.name,o=t.count;return r.a.createElement(u.a,{title:'Posts tagged "'+i+'"',description:'Blog | Tagged "'+i+'"'},r.a.createElement("div",{className:"container margin-vert--lg"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--8 col--offset-2"},r.a.createElement("h1",null,o," ",function(e,t){return e>1?t+"s":t}(o,"post"),' tagged with "',i,'"'),r.a.createElement(c.a,{href:n},"View All Tags"),r.a.createElement("div",{className:"margin-vert--xl"},a.map((function(e){var t=e.content;return r.a.createElement(l.a,{key:t.metadata.permalink,frontMatter:t.frontMatter,metadata:t.metadata,truncated:!0},r.a.createElement(t,null))})))))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return E}));var n=a(0),r=a.n(n);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),D=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):c({},t,{},e)),a},s=function(e){var t=D(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=i(e,["components","mdxType","originalType","parentName"]),s=D(a),d=n,E=s["".concat(l,".").concat(d)]||s[d]||m[d]||u;return a?r.a.createElement(E,c({ref:t},o,{components:a})):r.a.createElement(E,c({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:n,l[1]=c;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(s.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),c.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(H,{alt:o.alt,url:D})):r.a.createElement(H,{alt:o.alt,url:D}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),R=a(291),J=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,c=(a.tagline,a.title),i=a.themeConfig.image,o=a.url,D=e.children,s=e.title,m=e.noFooter,d=e.description,f=e.image,g=e.keywords,b=(e.permalink,e.version),h=s?s+" | "+c:c,p=f||i,v=o+Object(C.a)(p),F=Object(C.a)(n),y=Object(J.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),h&&r.a.createElement("title",null,h),h&&r.a.createElement("meta",{property:"og:title",content:h}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),b&&r.a.createElement("meta",{name:"docsearch:version",content:b}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:v}),p&&r.a.createElement("meta",{property:"twitter:image",content:v}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+h}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},D),!m&&r.a.createElement(L,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=c;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function c(){if(!(this instanceof c))return new c;this.reset()}function i(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}c.prototype.slug=function(e,t){for(var a=i(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},c.prototype.reset=function(){this.occurrences=Object.create(null)},c.slug=i},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),c=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,i=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:c()("badge","badge--rounded","badge--"+l)},o?i:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),c=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,i=e.nameSuffix,o=e.rel,D=e.size,s=e.subTitle,m=e.vertical,d=Object(c.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,f=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+D]=D,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+D),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:o},f.name),i),s&&r.a.createElement("small",{className:"avatar__subtitle"},s),!s&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),c=a(266),i=a.n(c),o=a(275),D=a(138),s=a.n(D);t.a=function(e){var t,a=e.block,r=e.colorProfile,c=e.tags,D=e.valuesOnly,m=Object(o.a)(c,r);return u.a.createElement("span",{className:i()(s.a.tags,(t={},t[s.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:D},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,c,i=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,c=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(i.masks[t]||t||i.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),f=e[d+"Day"](),g=e[d+"Month"](),b=e[d+"FullYear"](),h=e[d+"Hours"](),p=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=D(e),N=s(e),O={d:E,dd:o(E),ddd:i.i18n.dayNames[f],dddd:i.i18n.dayNames[f+7],m:g+1,mm:o(g+1),mmm:i.i18n.monthNames[g],mmmm:i.i18n.monthNames[g+12],yy:String(b).slice(2),yyyy:b,h:h%12||12,hh:o(h%12||12),H:h,HH:o(h),M:p,MM:o(p),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:h<12?i.i18n.timeNames[0]:i.i18n.timeNames[1],tt:h<12?i.i18n.timeNames[2]:i.i18n.timeNames[3],T:h<12?i.i18n.timeNames[4]:i.i18n.timeNames[5],TT:h<12?i.i18n.timeNames[6]:i.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(c,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in O?O[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(_=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return k.current&&(e=new c.a(k.current,{target:function(){return O.current}})),function(){e&&e.destroy()}}),[k.current,O.current]);var S=a&&a.replace(/language-/,"");!S&&D.defaultLanguage&&(S=D.defaultLanguage);var x=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(i.a,Object(n.a)({},i.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,c=e.tokens,i=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,_&&u.a.createElement("div",{style:l,className:h.a.codeBlockTitle},_),u.a.createElement("div",{className:h.a.codeBlockContent},u.a.createElement("button",{ref:k,type:"button","aria-label":"Copy code to clipboard",className:s()(h.a.copyButton,(t={},t[h.a.copyButtonWithTitle]=_,t)),onClick:x},b?"Copied":"Copy"),u.a.createElement("pre",{className:s()(r,h.a.codeBlock,(a={},a[h.a.codeBlockWithTitle]=_,a))},u.a.createElement("div",{ref:O,className:h.a.codeBlockLines,style:l},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=i({line:e,key:t});return w.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),c=a(297),i=a(278),o=a(141),D=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(c.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:D.a.mdxCodeBlock},e))},h1:Object(i.a)("h1"),h2:Object(i.a)("h2"),h3:Object(i.a)("h3"),h4:Object(i.a)("h4"),h5:Object(i.a)("h5"),h6:Object(i.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,c=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?c((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&c((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),c=(a(299),a(265),a(293)),i=a(266),o=a.n(i),D=a(294),s=a.n(D),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,i=(e.truncated,e.isBlogPostPage,n.date),D=n.description,d=n.permalink,f=n.tags,g=a.author_github,b=a.title,h=E()(t.toString()),p=new Date(Date.parse(i)),v=Object(m.a)(f,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,b),r.a.createElement("div",{className:"subtitle"},D),r.a.createElement(u.a,{github:g,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:p.toISOString()},s()(p,"mmm dS, yyyy"))," / ",h.text),rel:"author"}),r.a.createElement(c.a,{colorProfile:"blog",tags:f})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,c=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[c]);)c--;for(r=l;r<=c;){for(;r<=c&&!a(e[r]);r++);for(u++;r<=c&&a(e[r]);r++);}var i=u/t.wordsPerMinute,o=60*i*1e3;return{text:Math.ceil(i.toFixed(2))+" min read",minutes:i,time:o,words:u}}}}]); \ No newline at end of file +/*! For license information please see 6875c492.bdd2f783.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{189:function(e,t,a){"use strict";a.r(t);a(277);var n=a(0),r=a.n(n),u=a(273),l=a(329),c=a(268);t.default=function(e){var t=e.metadata,a=e.items,n=t.allTagsPath,i=t.name,o=t.count;return r.a.createElement(u.a,{title:'Posts tagged "'+i+'"',description:'Blog | Tagged "'+i+'"'},r.a.createElement("div",{className:"container margin-vert--lg"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--8 col--offset-2"},r.a.createElement("h1",null,o," ",function(e,t){return e>1?t+"s":t}(o,"post"),' tagged with "',i,'"'),r.a.createElement(c.a,{href:n},"View All Tags"),r.a.createElement("div",{className:"margin-vert--xl"},a.map((function(e){var t=e.content;return r.a.createElement(l.a,{key:t.metadata.permalink,frontMatter:t.frontMatter,metadata:t.metadata,truncated:!0},r.a.createElement(t,null))})))))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return E}));var n=a(0),r=a.n(n);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),D=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):c({},t,{},e)),a},s=function(e){var t=D(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=i(e,["components","mdxType","originalType","parentName"]),s=D(a),d=n,E=s["".concat(l,".").concat(d)]||s[d]||m[d]||u;return a?r.a.createElement(E,c({ref:t},o,{components:a})):r.a.createElement(E,c({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:n,l[1]=c;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(s.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),c.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(H,{alt:o.alt,url:D})):r.a.createElement(H,{alt:o.alt,url:D}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),R=a(291),J=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,c=(a.tagline,a.title),i=a.themeConfig.image,o=a.url,D=e.children,s=e.title,m=e.noFooter,d=e.description,f=e.image,g=e.keywords,b=(e.permalink,e.version),h=s?s+" | "+c:c,p=f||i,v=o+Object(C.a)(p),F=Object(C.a)(n),y=Object(J.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),h&&r.a.createElement("title",null,h),h&&r.a.createElement("meta",{property:"og:title",content:h}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),b&&r.a.createElement("meta",{name:"docsearch:version",content:b}),g&&g.length&&r.a.createElement("meta",{name:"keywords",content:g.join(",")}),p&&r.a.createElement("meta",{property:"og:image",content:v}),p&&r.a.createElement("meta",{property:"twitter:image",content:v}),p&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+h}),p&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),p&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},D),!m&&r.a.createElement(L,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=c;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function c(){if(!(this instanceof c))return new c;this.reset()}function i(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}c.prototype.slug=function(e,t){for(var a=i(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},c.prototype.reset=function(){this.occurrences=Object.create(null)},c.slug=i},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),c=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,i=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:c()("badge","badge--rounded","badge--"+l)},o?i:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),c=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,i=e.nameSuffix,o=e.rel,D=e.size,s=e.subTitle,m=e.vertical,d=Object(c.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,f=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+D]=D,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+D),src:f.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:f.github,target:"_blank",rel:o},f.name),i),s&&r.a.createElement("small",{className:"avatar__subtitle"},s),!s&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:f.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),c=a(266),i=a.n(c),o=a(275),D=a(138),s=a.n(D);t.a=function(e){var t,a=e.block,r=e.colorProfile,c=e.tags,D=e.valuesOnly,m=Object(o.a)(c,r);return u.a.createElement("span",{className:i()(s.a.tags,(t={},t[s.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:D},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,c,i=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,c=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(i.masks[t]||t||i.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),f=e[d+"Day"](),g=e[d+"Month"](),b=e[d+"FullYear"](),h=e[d+"Hours"](),p=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=D(e),N=s(e),O={d:E,dd:o(E),ddd:i.i18n.dayNames[f],dddd:i.i18n.dayNames[f+7],m:g+1,mm:o(g+1),mmm:i.i18n.monthNames[g],mmmm:i.i18n.monthNames[g+12],yy:String(b).slice(2),yyyy:b,h:h%12||12,hh:o(h%12||12),H:h,HH:o(h),M:p,MM:o(p),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:h<12?i.i18n.timeNames[0]:i.i18n.timeNames[1],tt:h<12?i.i18n.timeNames[2]:i.i18n.timeNames[3],T:h<12?i.i18n.timeNames[4]:i.i18n.timeNames[5],TT:h<12?i.i18n.timeNames[6]:i.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(c,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in O?O[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(_=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return k.current&&(e=new c.a(k.current,{target:function(){return O.current}})),function(){e&&e.destroy()}}),[k.current,O.current]);var S=a&&a.replace(/language-/,"");!S&&D.defaultLanguage&&(S=D.defaultLanguage);var x=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(i.a,Object(n.a)({},i.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,c=e.tokens,i=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,_&&u.a.createElement("div",{style:l,className:h.a.codeBlockTitle},_),u.a.createElement("div",{className:h.a.codeBlockContent},u.a.createElement("button",{ref:k,type:"button","aria-label":"Copy code to clipboard",className:s()(h.a.copyButton,(t={},t[h.a.copyButtonWithTitle]=_,t)),onClick:x},b?"Copied":"Copy"),u.a.createElement("pre",{className:s()(r,h.a.codeBlock,(a={},a[h.a.codeBlockWithTitle]=_,a))},u.a.createElement("div",{ref:O,className:h.a.codeBlockLines,style:l},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=i({line:e,key:t});return w.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),c=a(297),i=a(278),o=a(141),D=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(c.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:D.a.mdxCodeBlock},e))},h1:Object(i.a)("h1"),h2:Object(i.a)("h2"),h3:Object(i.a)("h3"),h4:Object(i.a)("h4"),h5:Object(i.a)("h5"),h6:Object(i.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,c=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?c((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&c((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),c=(a(299),a(265),a(293)),i=a(266),o=a.n(i),D=a(294),s=a.n(D),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,i=(e.truncated,e.isBlogPostPage,n.date),D=n.description,d=n.permalink,f=n.tags,g=a.author_github,b=a.title,h=E()(t.toString()),p=new Date(Date.parse(i)),v=Object(m.a)(f,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,b),r.a.createElement("div",{className:"subtitle"},D),r.a.createElement(u.a,{github:g,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:p.toISOString()},s()(p,"mmm dS, yyyy"))," / ",h.text),rel:"author"}),r.a.createElement(c.a,{colorProfile:"blog",tags:f})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,c=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[c]);)c--;for(r=l;r<=c;){for(;r<=c&&!a(e[r]);r++);for(u++;r<=c&&a(e[r]);r++);}var i=u/t.wordsPerMinute,o=60*i*1e3;return{text:Math.ceil(i.toFixed(2))+" min read",minutes:i,time:o,words:u}}}}]); \ No newline at end of file diff --git a/6875c492.941daf3b.js.LICENSE.txt b/6875c492.bdd2f783.js.LICENSE.txt similarity index 100% rename from 6875c492.941daf3b.js.LICENSE.txt rename to 6875c492.bdd2f783.js.LICENSE.txt diff --git a/83e9e333.c5dae372.js b/83e9e333.c99f3ace.js similarity index 99% rename from 83e9e333.c5dae372.js rename to 83e9e333.c99f3ace.js index 2cb616f85..fd61a4ee9 100644 --- a/83e9e333.c5dae372.js +++ b/83e9e333.c99f3ace.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{205:function(e,a,t){"use strict";t.r(a);var n=t(0),l=t.n(n),r=t(273),c=(t(143),t(267));a.default=function(){var e=Object(c.a)().siteConfig;return(void 0===e?{}:e).customFields.metadata.team,l.a.createElement(r.a,{title:"Contact",description:"Contact the gnet author"},l.a.createElement("header",{className:"hero"},l.a.createElement("div",{className:"container container--fluid"},l.a.createElement("h1",null,"Contact"),l.a.createElement("div",{className:"hero--subtitle"},"gnet is an open-source software created by ",l.a.createElement("a",{href:"https://github.com/panjf2000"},"Andy Pan"),". You can contact the author using any of the options below."))),l.a.createElement("main",null,l.a.createElement("section",null,l.a.createElement("div",{className:"container"},l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"mailto:i@andypan.me",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-mail"})),l.a.createElement("div",{className:"panel--title"},"i@andypan.me"),l.a.createElement("div",{className:"panel--description"},"Send me an email"))),l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-twitter"})),l.a.createElement("div",{className:"panel--title"},"@panjf2000"),l.a.createElement("div",{className:"panel--description"},"Tweet at me"))),l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"https://discord.gg/UyKD7NZcfH",target:"_blank",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-message-circle"})),l.a.createElement("div",{className:"panel--title"},"Chat"),l.a.createElement("div",{className:"panel--description"},"Join our chat"))))))))}},272:function(e,a,t){"use strict";t.d(a,"a",(function(){return l})),t.d(a,"b",(function(){return r}));var n=t(267);function l(){var e=Object(n.a)().siteConfig,a=(void 0===e?{}:e).customFields.metadata.latest_highlight,t=Date.parse(a.date),l=new Date,r=Math.abs(l-t),c=Math.ceil(r/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&l.a.createElement("div",{className:"row footer__links"},l.a.createElement("div",{className:"col col--5 footer__col"},l.a.createElement("div",{className:"margin-bottom--md"},l.a.createElement(d.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),l.a.createElement("div",{className:"margin-bottom--md"},l.a.createElement(I,{description:!1,width:"150px"})),l.a.createElement("div",null,l.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},l.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",l.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},l.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",l.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},l.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,a){return l.a.createElement("div",{key:a,className:"col footer__col"},null!=e.title?l.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,a){return e.html?l.a.createElement("li",{key:a,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.a.createElement("li",{key:e.href||e.to,className:"footer__item"},l.a.createElement(A,e))}))):null)}))),(m||r)&&l.a.createElement("div",{className:"text--center"},m&&m.src&&l.a.createElement("div",{className:"margin-bottom--sm"},m.href?l.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},l.a.createElement(B,{alt:m.alt,url:s})):l.a.createElement(B,{alt:m.alt,url:s}),l.a.createElement("br",null),l.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},l.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),r,l.a.createElement("br",null),l.a.createElement("small",null,l.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",l.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},F=t(290),H=t(291),R=t(3);t(135);a.a=function(e){var a=Object(g.a)().siteConfig,t=void 0===a?{}:a,n=t.favicon,i=(t.tagline,t.title),o=t.themeConfig.image,m=t.url,s=e.children,d=e.title,u=e.noFooter,h=e.description,b=e.image,E=e.keywords,f=(e.permalink,e.version),p=d?d+" | "+i:i,v=b||o,N=m+Object(w.a)(v),_=Object(w.a)(n),k=Object(R.h)(),y=k?"https://gnet.host"+(k.pathname.endsWith("/")?k.pathname:k.pathname+"/"):null;return l.a.createElement(H.a,null,l.a.createElement(F.a,null,l.a.createElement(c.a,null,l.a.createElement("html",{lang:"en"}),l.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),p&&l.a.createElement("title",null,p),p&&l.a.createElement("meta",{property:"og:title",content:p}),n&&l.a.createElement("link",{rel:"shortcut icon",href:_}),h&&l.a.createElement("meta",{name:"description",content:h}),h&&l.a.createElement("meta",{property:"og:description",content:h}),f&&l.a.createElement("meta",{name:"docsearch:version",content:f}),E&&E.length&&l.a.createElement("meta",{name:"keywords",content:E.join(",")}),v&&l.a.createElement("meta",{property:"og:image",content:N}),v&&l.a.createElement("meta",{property:"twitter:image",content:N}),v&&l.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+p}),v&&l.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),v&&l.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&l.a.createElement("meta",{property:"og:url",content:y}),l.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&l.a.createElement("link",{rel:"canonical",href:y})),l.a.createElement(r.a,null),l.a.createElement(D,null),l.a.createElement("div",{className:"main-wrapper"},s),!u&&l.a.createElement(V,null)))}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{205:function(e,a,t){"use strict";t.r(a);var n=t(0),l=t.n(n),r=t(273),c=(t(143),t(267));a.default=function(){var e=Object(c.a)().siteConfig;return(void 0===e?{}:e).customFields.metadata.team,l.a.createElement(r.a,{title:"Contact",description:"Contact the gnet author"},l.a.createElement("header",{className:"hero"},l.a.createElement("div",{className:"container container--fluid"},l.a.createElement("h1",null,"Contact"),l.a.createElement("div",{className:"hero--subtitle"},"gnet is an open-source software created by ",l.a.createElement("a",{href:"https://github.com/panjf2000"},"Andy Pan"),". You can contact the author using any of the options below."))),l.a.createElement("main",null,l.a.createElement("section",null,l.a.createElement("div",{className:"container"},l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"mailto:i@andypan.me",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-mail"})),l.a.createElement("div",{className:"panel--title"},"i@andypan.me"),l.a.createElement("div",{className:"panel--description"},"Send me an email"))),l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-twitter"})),l.a.createElement("div",{className:"panel--title"},"@panjf2000"),l.a.createElement("div",{className:"panel--description"},"Tweet at me"))),l.a.createElement("div",{className:"col"},l.a.createElement("a",{href:"https://discord.gg/UyKD7NZcfH",target:"_blank",className:"panel text--center"},l.a.createElement("div",{className:"panel--icon"},l.a.createElement("i",{className:"feather icon-message-circle"})),l.a.createElement("div",{className:"panel--title"},"Chat"),l.a.createElement("div",{className:"panel--description"},"Join our chat"))))))))}},272:function(e,a,t){"use strict";t.d(a,"a",(function(){return l})),t.d(a,"b",(function(){return r}));var n=t(267);function l(){var e=Object(n.a)().siteConfig,a=(void 0===e?{}:e).customFields.metadata.latest_highlight,t=Date.parse(a.date),l=new Date,r=Math.abs(l-t),c=Math.ceil(r/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),c<30&&(!i||i0&&l.a.createElement("div",{className:"row footer__links"},l.a.createElement("div",{className:"col col--5 footer__col"},l.a.createElement("div",{className:"margin-bottom--md"},l.a.createElement(d.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),l.a.createElement("div",{className:"margin-bottom--md"},l.a.createElement(I,{description:!1,width:"150px"})),l.a.createElement("div",null,l.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},l.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",l.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},l.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",l.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},l.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,a){return l.a.createElement("div",{key:a,className:"col footer__col"},null!=e.title?l.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,a){return e.html?l.a.createElement("li",{key:a,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.a.createElement("li",{key:e.href||e.to,className:"footer__item"},l.a.createElement(A,e))}))):null)}))),(m||r)&&l.a.createElement("div",{className:"text--center"},m&&m.src&&l.a.createElement("div",{className:"margin-bottom--sm"},m.href?l.a.createElement("a",{href:m.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},l.a.createElement(B,{alt:m.alt,url:s})):l.a.createElement(B,{alt:m.alt,url:s}),l.a.createElement("br",null),l.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},l.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),r,l.a.createElement("br",null),l.a.createElement("small",null,l.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",l.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},F=t(290),H=t(291),R=t(3);t(135);a.a=function(e){var a=Object(g.a)().siteConfig,t=void 0===a?{}:a,n=t.favicon,i=(t.tagline,t.title),o=t.themeConfig.image,m=t.url,s=e.children,d=e.title,u=e.noFooter,h=e.description,b=e.image,E=e.keywords,f=(e.permalink,e.version),p=d?d+" | "+i:i,v=b||o,N=m+Object(w.a)(v),_=Object(w.a)(n),k=Object(R.h)(),y=k?"https://gnet.host"+(k.pathname.endsWith("/")?k.pathname:k.pathname+"/"):null;return l.a.createElement(H.a,null,l.a.createElement(F.a,null,l.a.createElement(c.a,null,l.a.createElement("html",{lang:"en"}),l.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),p&&l.a.createElement("title",null,p),p&&l.a.createElement("meta",{property:"og:title",content:p}),n&&l.a.createElement("link",{rel:"shortcut icon",href:_}),h&&l.a.createElement("meta",{name:"description",content:h}),h&&l.a.createElement("meta",{property:"og:description",content:h}),f&&l.a.createElement("meta",{name:"docsearch:version",content:f}),E&&E.length&&l.a.createElement("meta",{name:"keywords",content:E.join(",")}),v&&l.a.createElement("meta",{property:"og:image",content:N}),v&&l.a.createElement("meta",{property:"twitter:image",content:N}),v&&l.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+p}),v&&l.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),v&&l.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&l.a.createElement("meta",{property:"og:url",content:y}),l.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&l.a.createElement("link",{rel:"canonical",href:y})),l.a.createElement(r.a,null),l.a.createElement(D,null),l.a.createElement("div",{className:"main-wrapper"},s),!u&&l.a.createElement(V,null)))}}}]); \ No newline at end of file diff --git a/9c0c4329.494beb3e.js b/9c0c4329.0694b22c.js similarity index 99% rename from 9c0c4329.494beb3e.js rename to 9c0c4329.0694b22c.js index 42340288f..c68750d13 100644 --- a/9c0c4329.494beb3e.js +++ b/9c0c4329.0694b22c.js @@ -1,2 +1,2 @@ -/*! For license information please see 9c0c4329.494beb3e.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{212:function(d,u,e){"use strict";e.r(u);var a=e(1),c=(e(53),e(277),e(26),e(20),e(19),e(90),e(0)),n=e.n(c),f=e(278),t=e(273),r=(e(268),e(287)),i=e(305),l=e.n(i),s=e(275),o=e(386),m=e.n(o),b=e(327),p=e.n(b),D=Object(f.a)("h2");u.default=function(d){var u=d.tags,e=Object.values(u).map((function(d){return{count:d.count,label:d.name,permalink:d.permalink}})),c=Object(s.a)(e,"highlights"),f=l.a.groupBy(c,"category");return n.a.createElement(t.a,{title:"Tags",description:"gnet highlight tags"},n.a.createElement("header",{className:"hero hero--clean"},n.a.createElement("div",{className:"container"},n.a.createElement("h1",null,"All Highlight Tags"))),n.a.createElement("main",{className:"container container--xs"},Object.keys(f).map((function(d,u){var e=f[d];return n.a.createElement("section",null,n.a.createElement(D,{id:d.name},p()(m()(d))),e.map((function(d,u){return n.a.createElement("div",null,n.a.createElement(r.a,Object(a.a)({key:u,valueOnly:!0},d)))})))}))))}},272:function(d,u,e){"use strict";e.d(u,"a",(function(){return c})),e.d(u,"b",(function(){return n}));var a=e(267);function c(){var d=Object(a.a)().siteConfig,u=(void 0===d?{}:d).customFields.metadata.latest_highlight,e=Date.parse(u.date),c=new Date,n=Math.abs(c-e),f=Math.ceil(n/864e5),t=null;return"undefined"!=typeof window&&(t=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),f<30&&(!t||t0&&c.a.createElement("div",{className:"row footer__links"},c.a.createElement("div",{className:"col col--5 footer__col"},c.a.createElement("div",{className:"margin-bottom--md"},c.a.createElement(s.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),c.a.createElement("div",{className:"margin-bottom--md"},c.a.createElement(N,{description:!1,width:"150px"})),c.a.createElement("div",null,c.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},c.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",c.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},c.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",c.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},c.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),t.map((function(d,u){return c.a.createElement("div",{key:u,className:"col footer__col"},null!=d.title?c.a.createElement("h4",{className:"footer__title"},d.title):null,null!=d.items&&Array.isArray(d.items)&&d.items.length>0?c.a.createElement("ul",{className:"footer__items"},d.items.map((function(d,u){return d.html?c.a.createElement("li",{key:u,className:"footer__item",dangerouslySetInnerHTML:{__html:d.html}}):c.a.createElement("li",{key:d.href||d.to,className:"footer__item"},c.a.createElement(M,d))}))):null)}))),(i||n)&&c.a.createElement("div",{className:"text--center"},i&&i.src&&c.a.createElement("div",{className:"margin-bottom--sm"},i.href?c.a.createElement("a",{href:i.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},c.a.createElement(L,{alt:i.alt,url:l})):c.a.createElement(L,{alt:i.alt,url:l}),c.a.createElement("br",null),c.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},c.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),n,c.a.createElement("br",null),c.a.createElement("small",null,c.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",c.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},j=e(290),R=e(291),U=e(3);e(135);u.a=function(d){var u=Object(b.a)().siteConfig,e=void 0===u?{}:u,a=e.favicon,t=(e.tagline,e.title),r=e.themeConfig.image,i=e.url,l=d.children,s=d.title,o=d.noFooter,m=d.description,p=d.image,D=d.keywords,h=(d.permalink,d.version),g=s?s+" | "+t:t,_=p||r,E=i+Object(x.a)(_),I=Object(x.a)(a),v=Object(U.h)(),y=v?"https://gnet.host"+(v.pathname.endsWith("/")?v.pathname:v.pathname+"/"):null;return c.a.createElement(R.a,null,c.a.createElement(j.a,null,c.a.createElement(f.a,null,c.a.createElement("html",{lang:"en"}),c.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),g&&c.a.createElement("title",null,g),g&&c.a.createElement("meta",{property:"og:title",content:g}),a&&c.a.createElement("link",{rel:"shortcut icon",href:I}),m&&c.a.createElement("meta",{name:"description",content:m}),m&&c.a.createElement("meta",{property:"og:description",content:m}),h&&c.a.createElement("meta",{name:"docsearch:version",content:h}),D&&D.length&&c.a.createElement("meta",{name:"keywords",content:D.join(",")}),_&&c.a.createElement("meta",{property:"og:image",content:E}),_&&c.a.createElement("meta",{property:"twitter:image",content:E}),_&&c.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+g}),_&&c.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),_&&c.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&c.a.createElement("meta",{property:"og:url",content:y}),c.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&c.a.createElement("link",{rel:"canonical",href:y})),c.a.createElement(n.a,null),c.a.createElement(O,null),c.a.createElement("div",{className:"main-wrapper"},l),!o&&c.a.createElement(T,null)))}},274:function(d,u,e){"use strict";var a=e(12),c=e(301)(5),n=!0;"find"in[]&&Array(1).find((function(){n=!1})),a(a.P+a.F*n,"Array",{find:function(d){return c(this,d,arguments.length>1?arguments[1]:void 0)}}),e(80)("find")},275:function(d,u,e){"use strict";e.d(u,"a",(function(){return n}));e(79),e(298),e(274),e(78);var a=e(279),c=e.n(a);function n(d,u){var e=new c.a;return d.map((function(d){var a=d;return"string"==typeof d&&(a={label:d,permalink:"/"+u+"/tags/"+e.slug(d)}),function(d,u){if(d.enriched)return d;var e=d.label.split(": ",2),a=e[0],c=e[1],n="primary";switch(a){case"domain":n="blue";break;case"type":n="pink";break;default:n="primary"}return{category:a,count:d.count,enriched:!0,label:d.label,permalink:d.permalink,style:n,value:c}}(a)}))}},277:function(d,u,e){var a=e(24).f,c=Function.prototype,n=/^\s*function ([^ (]*)/;"name"in c||e(10)&&a(c,"name",{configurable:!0,get:function(){try{return(""+this).match(n)[1]}catch(d){return""}}})},278:function(d,u,e){"use strict";var a=e(9),c=e(0),n=e.n(c),f=e(266),t=e.n(f),r=e(267),i=(e(139),e(140)),l=e.n(i);u.a=function(d){return function(u){var e,c=u.id,f=Object(a.a)(u,["id"]),i=Object(r.a)().siteConfig,s=(i=void 0===i?{}:i).themeConfig,o=(s=void 0===s?{}:s).navbar,m=(o=void 0===o?{}:o).hideOnScroll,b=void 0!==m&&m;return c?n.a.createElement(d,f,n.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:t()("anchor",(e={},e[l.a.enhancedAnchor]=!b,e)),id:c}),n.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+c,title:"Direct link to heading"},"#"),f.children):n.a.createElement(d,f)}}},279:function(d,u,e){var a=e(288);d.exports=t;var c=Object.hasOwnProperty,n=/\s/g,f=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function t(){if(!(this instanceof t))return new t;this.reset()}function r(d,u){return"string"!=typeof d?"":(u||(d=d.toLowerCase()),d.trim().replace(f,"").replace(a(),"").replace(n,"-"))}t.prototype.slug=function(d,u){for(var e=r(d,!0===u),a=e;c.call(this.occurrences,e);)this.occurrences[a]++,e=a+"-"+this.occurrences[a];return this.occurrences[e]=0,e},t.prototype.reset=function(){this.occurrences=Object.create(null)},t.slug=r},287:function(d,u,e){"use strict";var a=e(0),c=e.n(a),n=e(268),f=e(266),t=e.n(f);u.a=function(d){var u=d.count,e=d.label,a=d.permalink,f=d.style,r=d.value,i=d.valueOnly;return c.a.createElement(n.a,{to:a+"/",className:t()("badge","badge--rounded","badge--"+f)},i?r:e,u&&c.a.createElement(c.a.Fragment,null," (",u,")"))}},288:function(d,u){d.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},301:function(d,u,e){var a=e(28),c=e(54),n=e(25),f=e(27),t=e(302);d.exports=function(d,u){var e=1==d,r=2==d,i=3==d,l=4==d,s=6==d,o=5==d||s,m=u||t;return function(u,t,b){for(var p,D,h=n(u),g=c(h),_=a(t,b,3),E=f(g.length),I=0,v=e?m(u,E):r?m(u,0):void 0;E>I;I++)if((o||I in g)&&(D=_(p=g[I],I,h),d))if(e)v[I]=D;else if(D)switch(d){case 3:return!0;case 5:return p;case 6:return I;case 2:v.push(p)}else if(l)return!1;return s?-1:i||l?l:v}}},302:function(d,u,e){var a=e(303);d.exports=function(d,u){return new(a(d))(u)}},303:function(d,u,e){var a=e(14),c=e(323),n=e(2)("species");d.exports=function(d){var u;return c(d)&&("function"!=typeof(u=d.constructor)||u!==Array&&!c(u.prototype)||(u=void 0),a(u)&&null===(u=u[n])&&(u=void 0)),void 0===u?Array:u}},327:function(d,u,e){d.exports=function(){var d=[],u=[],e={},a={},c={};function n(d){return"string"==typeof d?new RegExp("^"+d+"$","i"):d}function f(d,u){return d===u?u:d===d.toLowerCase()?u.toLowerCase():d===d.toUpperCase()?u.toUpperCase():d[0]===d[0].toUpperCase()?u.charAt(0).toUpperCase()+u.substr(1).toLowerCase():u.toLowerCase()}function t(d,u){return d.replace(/\$(\d{1,2})/g,(function(d,e){return u[e]||""}))}function r(d,u){return d.replace(u[0],(function(e,a){var c=t(u[1],arguments);return f(""===e?d[a-1]:e,c)}))}function i(d,u,a){if(!d.length||e.hasOwnProperty(d))return u;for(var c=a.length;c--;){var n=a[c];if(n[0].test(u))return r(u,n)}return u}function l(d,u,e){return function(a){var c=a.toLowerCase();return u.hasOwnProperty(c)?f(a,c):d.hasOwnProperty(c)?f(a,d[c]):i(c,a,e)}}function s(d,u,e,a){return function(a){var c=a.toLowerCase();return!!u.hasOwnProperty(c)||!d.hasOwnProperty(c)&&i(c,c,e)===c}}function o(d,u,e){return(e?u+" ":"")+(1===u?o.singular(d):o.plural(d))}return o.plural=l(c,a,d),o.isPlural=s(c,a,d),o.singular=l(a,c,u),o.isSingular=s(a,c,u),o.addPluralRule=function(u,e){d.push([n(u),e])},o.addSingularRule=function(d,e){u.push([n(d),e])},o.addUncountableRule=function(d){"string"!=typeof d?(o.addPluralRule(d,"$0"),o.addSingularRule(d,"$0")):e[d.toLowerCase()]=!0},o.addIrregularRule=function(d,u){u=u.toLowerCase(),d=d.toLowerCase(),c[d]=u,a[u]=d},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(d){return o.addIrregularRule(d[0],d[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(d){return o.addPluralRule(d[0],d[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(d){return o.addSingularRule(d[0],d[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(o.addUncountableRule),o}()},386:function(d,u,e){"use strict";const a=e(387),c=d=>{if("string"!=typeof d)throw new TypeError("Expected a string");return d=(d=(d=a(d)).toLowerCase().replace(/[_-]+/g," ").replace(/\s{2,}/g," ").trim()).charAt(0).toUpperCase()+d.slice(1)};d.exports=c,d.exports.default=c},387:function(d,u,e){"use strict";const a=e(388);d.exports=(d,u)=>{if("string"!=typeof d)throw new TypeError("Expected a string");u=void 0===u?"_":u;const e=a("([\\p{Ll}\\d])(\\p{Lu})","g"),c=a("(\\p{Lu}+)(\\p{Lu}[\\p{Ll}\\d]+)","g");return d.replace(e,`$1${u}$2`).replace(c,`$1${u}$2`).toLowerCase()}},388:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var a=s(e(389)),c=s(e(390)),n=s(e(391)),f=s(e(392)),t=s(e(393)),r=s(e(394)),i=s(e(395)),l=s(e(396));function s(d){return d&&d.__esModule?d:{default:d}}(0,c.default)(a.default),(0,n.default)(a.default),(0,f.default)(a.default),(0,t.default)(a.default),(0,r.default)(a.default),(0,i.default)(a.default),(0,l.default)(a.default),u.default=a.default,d.exports=u.default},389:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var a={astral:!1},c={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},n={},f={},t={},r=[],i={default:/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,class:/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/},l=/\$(?:{([\w$]+)}|<([\w$]+)>|(\d\d?|[\s\S]))/g,s=void 0===c.exec.call(/()??/,"")[1],o=void 0!==/x/.flags,m={}.toString;function b(d){var u=!0;try{new RegExp("",d)}catch(e){u=!1}return u}var p=b("u"),D=b("y"),h={g:!0,i:!0,m:!0,u:p,y:D};function g(d,u,e,a,c){var n=void 0;if(d.xregexp={captureNames:u},c)return d;if(d.__proto__)d.__proto__=O.prototype;else for(n in O.prototype)d[n]=O.prototype[n];return d.xregexp.source=e,d.xregexp.flags=a?a.split("").sort().join(""):a,d}function _(d){return c.replace.call(d,/([\s\S])(?=[\s\S]*\1)/g,"")}function E(d,u){if(!O.isRegExp(d))throw new TypeError("Type RegExp expected");var e=d.xregexp||{},a=function(d){return o?d.flags:c.exec.call(/\/([a-z]*)$/i,RegExp.prototype.toString.call(d))[1]}(d),n="",f="",t=null,r=null;return(u=u||{}).removeG&&(f+="g"),u.removeY&&(f+="y"),f&&(a=c.replace.call(a,new RegExp("["+f+"]+","g"),"")),u.addG&&(n+="g"),u.addY&&(n+="y"),n&&(a=_(a+n)),u.isInternalOnly||(void 0!==e.source&&(t=e.source),null!=e.flags&&(r=n?_(e.flags+n):e.flags)),d=g(new RegExp(u.source||d.source,a),function(d){return!(!d.xregexp||!d.xregexp.captureNames)}(d)?e.captureNames.slice(0):null,t,r,u.isInternalOnly)}function I(d){return parseInt(d,16)}function v(d,u,e){return"("===d.input[d.index-1]||")"===d.input[d.index+d[0].length]||function(d,u,e){return c.test.call(-1!==e.indexOf("x")?/^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/:/^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/,d.slice(u))}(d.input,d.index+d[0].length,e)?"":"(?:)"}function x(d){return parseInt(d,10).toString(16)}function y(d,u){return m.call(d)==="[object "+u+"]"}function C(d){for(;d.length<4;)d="0"+d;return d}function F(d){var u={};return y(d,"String")?(O.forEach(d,/[^\s,]+/,(function(d){u[d]=!0})),u):d}function w(d){if(!/^[\w$]$/.test(d))throw new Error("Flag must be a single character A-Za-z0-9_$");h[d]=!0}function S(d,u,e,a,c){for(var n=r.length,f=d[e],t=null,i=void 0,l=void 0;n--;)if(!((l=r[n]).leadChar&&l.leadChar!==f||l.scope!==a&&"all"!==l.scope||l.flag&&-1===u.indexOf(l.flag))&&(i=O.exec(d,l.regex,e,"sticky"))){t={matchLength:i[0].length,output:l.handler.call(c,i,a,u),reparse:l.reparse};break}return t}function k(d){a.astral=d}function A(d){if(null==d)throw new TypeError("Cannot convert null or undefined to object");return d}function O(d,u){if(O.isRegExp(d)){if(void 0!==u)throw new TypeError("Cannot supply flags when copying a RegExp");return E(d)}if(d=void 0===d?"":String(d),u=void 0===u?"":String(u),O.isInstalled("astral")&&-1===u.indexOf("A")&&(u+="A"),t[d]||(t[d]={}),!t[d][u]){for(var e={hasNamedCapture:!1,captureNames:[]},a="default",n="",f=0,r=void 0,l=function(d,u){var e=void 0;if(_(u)!==u)throw new SyntaxError("Invalid duplicate regex flag "+u);for(d=c.replace.call(d,/^\(\?([\w$]+)\)/,(function(d,e){if(c.test.call(/[gy]/,e))throw new SyntaxError("Cannot use flag g or y in mode modifier "+d);return u=_(u+e),""})),e=0;e"}else if(e)return"\\"+(+e+f);return d}if(!y(d,"Array")||!d.length)throw new TypeError("Must provide a nonempty array of patterns to merge");for(var i=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,l=[],s=void 0,o=0;o1&&-1!==e.indexOf("")){var a=E(this,{removeG:!0,isInternalOnly:!0});c.replace.call(String(d).slice(e.index),a,(function(){for(var d=arguments.length,u=Array(d),a=0;ae.index&&(this.lastIndex=e.index)}return this.global||(this.lastIndex=u),e},n.test=function(d){return!!n.exec.call(this,d)},n.match=function(d){if(O.isRegExp(d)){if(d.global){var u=c.match.apply(this,arguments);return d.lastIndex=0,u}}else d=new RegExp(d);return n.exec.call(d,A(this))},n.replace=function(d,u){var e=O.isRegExp(d),a=void 0,n=void 0,f=void 0;return e?(d.xregexp&&(n=d.xregexp.captureNames),a=d.lastIndex):d+="",f=y(u,"Function")?c.replace.call(String(this),d,(function(){for(var a=arguments.length,c=Array(a),f=0;fe.length-3)throw new SyntaxError("Backreference to undefined group "+d);return e[c]||""}throw new SyntaxError("Invalid token "+d)}})),e&&(d.global?d.lastIndex=0:d.lastIndex=a),f},n.split=function(d,u){if(!O.isRegExp(d))return c.split.apply(this,arguments);var e=String(this),a=[],n=d.lastIndex,f=0,t=void 0;return u=(void 0===u?-1:u)>>>0,O.forEach(e,d,(function(d){d.index+d[0].length>f&&(a.push(e.slice(f,d.index)),d.length>1&&d.indexu?a.slice(0,u):a},O.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/,(function(d,u){if("B"===d[1]&&"default"===u)return d[0];throw new SyntaxError("Invalid escape "+d[0])}),{scope:"all",leadChar:"\\"}),O.addToken(/\\u{([\dA-Fa-f]+)}/,(function(d,u,e){var a=I(d[1]);if(a>1114111)throw new SyntaxError("Invalid Unicode code point "+d[0]);if(a<=65535)return"\\u"+C(x(a));if(p&&-1!==e.indexOf("u"))return d[0];throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u")}),{scope:"all",leadChar:"\\"}),O.addToken(/\[(\^?)\]/,(function(d){return d[1]?"[\\s\\S]":"\\b\\B"}),{leadChar:"["}),O.addToken(/\(\?#[^)]*\)/,v,{leadChar:"("}),O.addToken(/\s+|#[^\n]*\n?/,v,{flag:"x"}),O.addToken(/\./,(function(){return"[\\s\\S]"}),{flag:"s",leadChar:"."}),O.addToken(/\\k<([\w$]+)>/,(function(d){var u=isNaN(d[1])?this.captureNames.indexOf(d[1])+1:+d[1],e=d.index+d[0].length;if(!u||u>this.captureNames.length)throw new SyntaxError("Backreference to undefined group "+d[0]);return"\\"+u+(e===d.input.length||isNaN(d.input[e])?"":"(?:)")}),{leadChar:"\\"}),O.addToken(/\\(\d+)/,(function(d,u){if(!("default"===u&&/^[1-9]/.test(d[1])&&+d[1]<=this.captureNames.length)&&"0"!==d[1])throw new SyntaxError("Cannot use octal escape or backreference to undefined group "+d[0]);return d[0]}),{scope:"all",leadChar:"\\"}),O.addToken(/\(\?P?<([\w$]+)>/,(function(d){if(!isNaN(d[1]))throw new SyntaxError("Cannot use integer as capture name "+d[0]);if("length"===d[1]||"__proto__"===d[1])throw new SyntaxError("Cannot use reserved word as capture name "+d[0]);if(-1!==this.captureNames.indexOf(d[1]))throw new SyntaxError("Cannot use same name for multiple groups "+d[0]);return this.captureNames.push(d[1]),this.hasNamedCapture=!0,"("}),{leadChar:"("}),O.addToken(/\((?!\?)/,(function(d,u,e){return-1!==e.indexOf("n")?"(?:":(this.captureNames.push(null),"(")}),{optionalFlags:"n",leadChar:"("}),u.default=O,d.exports=u.default},390:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){var u=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,e=d.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/,u],"g",{conjunction:"or"});function a(d){var u=/^(?:\(\?:\))*\^/,e=/\$(?:\(\?:\))*$/;return u.test(d)&&e.test(d)&&e.test(d.replace(/\\[\s\S]/g,""))?d.replace(u,"").replace(e,""):d}function c(u,e){var a=e?"x":"";return d.isRegExp(u)?u.xregexp&&u.xregexp.captureNames?u:d(u.source,a):d(u,a)}function n(u){return u instanceof RegExp?u:d.escape(u)}function f(d,u,e){return d["subpattern"+e]=u,d}function t(d,u,e){return d+(u1?a-1:0),r=1;r"):r="(?:",p=b,""+r+l[f].pattern.replace(u,(function(d,u,e){if(u){if(t=l[f].names[b-p],++b,t)return"(?<"+t+">"}else if(e)return i=+e-1,l[f].names[i]?"\\k<"+l[f].names[i]+">":"\\"+(+e+p);return d}))+")"}if(c){if(t=g[D],h[++D]=++b,t)return"(?<"+t+">"}else if(n)return g[i=+n-1]?"\\k<"+g[i]+">":"\\"+h[+n];return d}));return d(_,t)}},d.exports=u.default},391:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){function u(d,u,e,a){return{name:d,value:u,start:e,end:a}}d.matchRecursive=function(e,a,c,n,f){f=f||{};var t=-1!==(n=n||"").indexOf("g"),r=-1!==n.indexOf("y"),i=n.replace(/y/g,""),l=f.escapeChar,s=f.valueNames,o=[],m=0,b=0,p=0,D=0,h=void 0,g=void 0,_=void 0,E=void 0,I=void 0;if(a=d(a,i),c=d(c,i),l){if(l.length>1)throw new Error("Cannot use more than one escape character");l=d.escape(l),I=new RegExp("(?:"+l+"[\\S\\s]|(?:(?!"+d.union([a,c],"",{conjunction:"or"}).source+")[^"+l+"])+)+",n.replace(/[^imu]+/g,""))}for(;;){if(l&&(p+=(d.exec(e,I,p,"sticky")||[""])[0].length),_=d.exec(e,a,p),E=d.exec(e,c,p),_&&E&&(_.index<=E.index?E=null:_=null),_||E)p=(b=(_||E).index)+(_||E)[0].length;else if(!m)break;if(r&&!m&&b>D)break;if(_)m||(h=b,g=p),++m;else{if(!E||!m)throw new Error("Unbalanced delimiter found in string");if(!--m&&(s?(s[0]&&h>D&&o.push(u(s[0],e.slice(D,h),D,h)),s[1]&&o.push(u(s[1],e.slice(h,g),h,g)),s[2]&&o.push(u(s[2],e.slice(g,b),g,b)),s[3]&&o.push(u(s[3],e.slice(b,p),b,p))):o.push(e.slice(g,b)),D=p,!t))break}b===p&&++p}return t&&!r&&s&&s[0]&&e.length>D&&o.push(u(s[0],e.slice(D),D,e.length)),o}},d.exports=u.default},392:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){var u={},e=d._dec,a=d._hex,c=d._pad4;function n(d){return d.replace(/[- _]+/g,"").toLowerCase()}function f(d){var u=/^\\[xu](.+)/.exec(d);return u?e(u[1]):d.charCodeAt("\\"===d[0]?1:0)}function t(e){var n,t,r;return u[e]["b!"]||(u[e]["b!"]=(n=u[e].bmp,t="",r=-1,d.forEach(n,/(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/,(function(d){var u=f(d[1]);u>r+1&&(t+="\\u"+c(a(r+1)),u>r+2&&(t+="-\\u"+c(a(u-1)))),r=f(d[2]||d[1])})),r<65535&&(t+="\\u"+c(a(r+1)),r<65534&&(t+="-\\uFFFF")),t))}function r(d,e){var a=e?"a!":"a=";return u[d][a]||(u[d][a]=function(d,e){var a=u[d],c="";return a.bmp&&!a.isBmpLast&&(c="["+a.bmp+"]"+(a.astral?"|":"")),a.astral&&(c+=a.astral),a.isBmpLast&&a.bmp&&(c+=(a.astral?"|":"")+"["+a.bmp+"]"),e?"(?:(?!"+c+")(?:[\ud800-\udbff][\udc00-\udfff]|[\0-\uffff]))":"(?:"+c+")"}(d,e))}d.addToken(/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/,(function(d,e,a){var c="P"===d[1]||!!d[2],f=-1!==a.indexOf("A"),i=n(d[4]||d[3]),l=u[i];if("P"===d[1]&&d[2])throw new SyntaxError("Invalid double negation "+d[0]);if(!u.hasOwnProperty(i))throw new SyntaxError("Unknown Unicode token "+d[0]);if(l.inverseOf){if(i=n(l.inverseOf),!u.hasOwnProperty(i))throw new ReferenceError("Unicode token missing data "+d[0]+" -> "+l.inverseOf);l=u[i],c=!c}if(!l.bmp&&!f)throw new SyntaxError("Astral mode required for Unicode token "+d[0]);if(f){if("class"===e)throw new SyntaxError("Astral mode does not support Unicode tokens within character classes");return r(i,c)}return"class"===e?c?t(i):l.bmp:(c?"[^":"[")+l.bmp+"]"}),{scope:"all",optionalFlags:"A",leadChar:"\\"}),d.addUnicodeData=function(e){for(var a=void 0,c=0;c\\x5E`\\x7C~\xa2-\xa6\xa8\xa9\xac\xae-\xb1\xb4\xb8\xd7\xf7\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u03f6\u0482\u058d-\u058f\u0606-\u0608\u060b\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u09f2\u09f3\u09fa\u09fb\u0af1\u0b70\u0bf3-\u0bfa\u0c7f\u0d4f\u0d79\u0e3f\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u17db\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u2044\u2052\u207a-\u207c\u208a-\u208c\u20a0-\u20be\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u2140-\u2144\u214a-\u214d\u214f\u218a\u218b\u2190-\u2307\u230c-\u2328\u232b-\u23fe\u2400-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u2767\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u309b\u309c\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua700-\ua716\ua720\ua721\ua789\ua78a\ua828-\ua82b\ua836-\ua839\uaa77-\uaa79\uab5b\ufb29\ufbb2-\ufbc1\ufdfc\ufdfd\ufe62\ufe64-\ufe66\ufe69\uff04\uff0b\uff1c-\uff1e\uff3e\uff40\uff5c\uff5e\uffe0-\uffe6\uffe8-\uffee\ufffc\ufffd",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9b\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|\ud805\udf3f|\ud81a[\udf3c-\udf3f\udf45]|\ud82f\udc9c|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\udde8\ude00-\ude41\ude45\udf00-\udf56]|\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|\ud83b[\udef0\udef1]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udfff]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]"},{name:"Sc",alias:"Currency_Symbol",bmp:"\\x24\xa2-\xa5\u058f\u060b\u09f2\u09f3\u09fb\u0af1\u0bf9\u0e3f\u17db\u20a0-\u20be\ua838\ufdfc\ufe69\uff04\uffe0\uffe1\uffe5\uffe6"},{name:"Sk",alias:"Modifier_Symbol",bmp:"\\x5E`\xa8\xaf\xb4\xb8\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u309b\u309c\ua700-\ua716\ua720\ua721\ua789\ua78a\uab5b\ufbb2-\ufbc1\uff3e\uff40\uffe3",astral:"\ud83c[\udffb-\udfff]"},{name:"Sm",alias:"Math_Symbol",bmp:"\\x2B<->\\x7C~\xac\xb1\xd7\xf7\u03f6\u0606-\u0608\u2044\u2052\u207a-\u207c\u208a-\u208c\u2118\u2140-\u2144\u214b\u2190-\u2194\u219a\u219b\u21a0\u21a3\u21a6\u21ae\u21ce\u21cf\u21d2\u21d4\u21f4-\u22ff\u2320\u2321\u237c\u239b-\u23b3\u23dc-\u23e1\u25b7\u25c1\u25f8-\u25ff\u266f\u27c0-\u27c4\u27c7-\u27e5\u27f0-\u27ff\u2900-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2aff\u2b30-\u2b44\u2b47-\u2b4c\ufb29\ufe62\ufe64-\ufe66\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe9-\uffec",astral:"\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud83b[\udef0\udef1]"},{name:"So",alias:"Other_Symbol",bmp:"\xa6\xa9\xae\xb0\u0482\u058d\u058e\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u214a\u214c\u214d\u214f\u218a\u218b\u2195-\u2199\u219c-\u219f\u21a1\u21a2\u21a4\u21a5\u21a7-\u21ad\u21af-\u21cd\u21d0\u21d1\u21d3\u21d5-\u21f3\u2300-\u2307\u230c-\u231f\u2322-\u2328\u232b-\u237b\u237d-\u239a\u23b4-\u23db\u23e2-\u23fe\u2400-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u25b6\u25b8-\u25c0\u25c2-\u25f7\u2600-\u266e\u2670-\u2767\u2794-\u27bf\u2800-\u28ff\u2b00-\u2b2f\u2b45\u2b46\u2b4d-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ua836\ua837\ua839\uaa77-\uaa79\ufdfd\uffe4\uffe8\uffed\uffee\ufffc\ufffd",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9b\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|\ud805\udf3f|\ud81a[\udf3c-\udf3f\udf45]|\ud82f\udc9c|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\udde8\ude00-\ude41\ude45\udf00-\udf56]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udffa]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]"},{name:"Z",alias:"Separator",bmp:" \xa0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000"},{name:"Zl",alias:"Line_Separator",bmp:"\u2028"},{name:"Zp",alias:"Paragraph_Separator",bmp:"\u2029"},{name:"Zs",alias:"Space_Separator",bmp:" \xa0\u1680\u2000-\u200a\u202f\u205f\u3000"}])},d.exports=u.default},395:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){if(!d.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");var u=[{name:"ASCII",bmp:"\0-\x7f"},{name:"Alphabetic",bmp:"A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0345\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05b0-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0657\u0659-\u065f\u066e-\u06d3\u06d5-\u06dc\u06e1-\u06e8\u06ed-\u06ef\u06fa-\u06fc\u06ff\u0710-\u073f\u074d-\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0817\u081a-\u082c\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u08d4-\u08df\u08e3-\u08e9\u08f0-\u093b\u093d-\u094c\u094e-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd-\u09c4\u09c7\u09c8\u09cb\u09cc\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3e-\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd-\u0ac5\u0ac7-\u0ac9\u0acb\u0acc\u0ad0\u0ae0-\u0ae3\u0af9\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d-\u0b44\u0b47\u0b48\u0b4b\u0b4c\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcc\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4c\u0c55\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccc\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4c\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e46\u0e4d\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ecd\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f71-\u0f81\u0f88-\u0f97\u0f99-\u0fbc\u1000-\u1036\u1038\u103b-\u103f\u1050-\u1062\u1065-\u1068\u106e-\u1086\u108e\u109c\u109d\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\u135f\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17b3\u17b6-\u17c8\u17d7\u17dc\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u1938\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a61-\u1a74\u1aa7\u1b00-\u1b33\u1b35-\u1b43\u1b45-\u1b4b\u1b80-\u1ba9\u1bac-\u1baf\u1bba-\u1be5\u1be7-\u1bf1\u1c00-\u1c35\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1d00-\u1dbf\u1de7-\u1df4\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\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\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\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua674-\ua67b\ua67f-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua827\ua840-\ua873\ua880-\ua8c3\ua8c5\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua92a\ua930-\ua952\ua960-\ua97c\ua980-\ua9b2\ua9b4-\ua9bf\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a\uaa7e-\uaabe\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf5\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabea\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\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",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf30-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\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-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2]|\ud804[\udc00-\udc45\udc82-\udcb8\udcd0-\udce8\udd00-\udd32\udd50-\udd72\udd76\udd80-\uddbf\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude34\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udee8\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d-\udf44\udf47\udf48\udf4b\udf4c\udf50\udf57\udf5d-\udf63]|\ud805[\udc00-\udc41\udc43-\udc45\udc47-\udc4a\udc80-\udcc1\udcc4\udcc5\udcc7\udd80-\uddb5\uddb8-\uddbe\uddd8-\udddd\ude00-\ude3e\ude40\ude44\ude80-\udeb5\udf00-\udf19\udf1d-\udf2a]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc3e\udc40\udc72-\udc8f\udc92-\udca7\udca9-\udcb6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|[\ud80c\ud81c-\ud820\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf93-\udf9f\udfe0]|\ud821[\udc00-\udfec]|\ud822[\udc00-\udef2]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9e]|\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]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd47]|\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]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]"},{name:"Any",isBmpLast:!0,bmp:"\0-\uffff",astral:"[\ud800-\udbff][\udc00-\udfff]"},{name:"Default_Ignorable_Code_Point",bmp:"\xad\u034f\u061c\u115f\u1160\u17b4\u17b5\u180b-\u180e\u200b-\u200f\u202a-\u202e\u2060-\u206f\u3164\ufe00-\ufe0f\ufeff\uffa0\ufff0-\ufff8",astral:"\ud82f[\udca0-\udca3]|\ud834[\udd73-\udd7a]|[\udb40-\udb43][\udc00-\udfff]"},{name:"Lowercase",bmp:"a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e-\u0180\u0183\u0185\u0188\u018c\u018d\u0192\u0195\u0199-\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01aa\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9\u01ba\u01bd-\u01bf\u01c6\u01c9\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef\u01f0\u01f3\u01f5\u01f9\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217\u0219\u021b\u021d\u021f\u0221\u0223\u0225\u0227\u0229\u022b\u022d\u022f\u0231\u0233-\u0239\u023c\u023f\u0240\u0242\u0247\u0249\u024b\u024d\u024f-\u0293\u0295-\u02b8\u02c0\u02c1\u02e0-\u02e4\u0345\u0371\u0373\u0377\u037a-\u037d\u0390\u03ac-\u03ce\u03d0\u03d1\u03d5-\u03d7\u03d9\u03db\u03dd\u03df\u03e1\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef-\u03f3\u03f5\u03f8\u03fb\u03fc\u0430-\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u048b\u048d\u048f\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce\u04cf\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ed\u04ef\u04f1\u04f3\u04f5\u04f7\u04f9\u04fb\u04fd\u04ff\u0501\u0503\u0505\u0507\u0509\u050b\u050d\u050f\u0511\u0513\u0515\u0517\u0519\u051b\u051d\u051f\u0521\u0523\u0525\u0527\u0529\u052b\u052d\u052f\u0561-\u0587\u13f8-\u13fd\u1c80-\u1c88\u1d00-\u1dbf\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95-\u1e9d\u1e9f\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9\u1efb\u1efd\u1eff-\u1f07\u1f10-\u1f15\u1f20-\u1f27\u1f30-\u1f37\u1f40-\u1f45\u1f50-\u1f57\u1f60-\u1f67\u1f70-\u1f7d\u1f80-\u1f87\u1f90-\u1f97\u1fa0-\u1fa7\u1fb0-\u1fb4\u1fb6\u1fb7\u1fbe\u1fc2-\u1fc4\u1fc6\u1fc7\u1fd0-\u1fd3\u1fd6\u1fd7\u1fe0-\u1fe7\u1ff2-\u1ff4\u1ff6\u1ff7\u2071\u207f\u2090-\u209c\u210a\u210e\u210f\u2113\u212f\u2134\u2139\u213c\u213d\u2146-\u2149\u214e\u2170-\u217f\u2184\u24d0-\u24e9\u2c30-\u2c5e\u2c61\u2c65\u2c66\u2c68\u2c6a\u2c6c\u2c71\u2c73\u2c74\u2c76-\u2c7d\u2c81\u2c83\u2c85\u2c87\u2c89\u2c8b\u2c8d\u2c8f\u2c91\u2c93\u2c95\u2c97\u2c99\u2c9b\u2c9d\u2c9f\u2ca1\u2ca3\u2ca5\u2ca7\u2ca9\u2cab\u2cad\u2caf\u2cb1\u2cb3\u2cb5\u2cb7\u2cb9\u2cbb\u2cbd\u2cbf\u2cc1\u2cc3\u2cc5\u2cc7\u2cc9\u2ccb\u2ccd\u2ccf\u2cd1\u2cd3\u2cd5\u2cd7\u2cd9\u2cdb\u2cdd\u2cdf\u2ce1\u2ce3\u2ce4\u2cec\u2cee\u2cf3\u2d00-\u2d25\u2d27\u2d2d\ua641\ua643\ua645\ua647\ua649\ua64b\ua64d\ua64f\ua651\ua653\ua655\ua657\ua659\ua65b\ua65d\ua65f\ua661\ua663\ua665\ua667\ua669\ua66b\ua66d\ua681\ua683\ua685\ua687\ua689\ua68b\ua68d\ua68f\ua691\ua693\ua695\ua697\ua699\ua69b-\ua69d\ua723\ua725\ua727\ua729\ua72b\ua72d\ua72f-\ua731\ua733\ua735\ua737\ua739\ua73b\ua73d\ua73f\ua741\ua743\ua745\ua747\ua749\ua74b\ua74d\ua74f\ua751\ua753\ua755\ua757\ua759\ua75b\ua75d\ua75f\ua761\ua763\ua765\ua767\ua769\ua76b\ua76d\ua76f-\ua778\ua77a\ua77c\ua77f\ua781\ua783\ua785\ua787\ua78c\ua78e\ua791\ua793-\ua795\ua797\ua799\ua79b\ua79d\ua79f\ua7a1\ua7a3\ua7a5\ua7a7\ua7a9\ua7b5\ua7b7\ua7f8-\ua7fa\uab30-\uab5a\uab5c-\uab65\uab70-\uabbf\ufb00-\ufb06\ufb13-\ufb17\uff41-\uff5a",astral:"\ud801[\udc28-\udc4f\udcd8-\udcfb]|\ud803[\udcc0-\udcf2]|\ud806[\udcc0-\udcdf]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb]|\ud83a[\udd22-\udd43]"},{name:"Noncharacter_Code_Point",bmp:"\ufdd0-\ufdef\ufffe\uffff",astral:"[\ud83f\ud87f\ud8bf\ud8ff\ud93f\ud97f\ud9bf\ud9ff\uda3f\uda7f\udabf\udaff\udb3f\udb7f\udbbf\udbff][\udffe\udfff]"},{name:"Uppercase",bmp:"A-Z\xc0-\xd6\xd8-\xde\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u0179\u017b\u017d\u0181\u0182\u0184\u0186\u0187\u0189-\u018b\u018e-\u0191\u0193\u0194\u0196-\u0198\u019c\u019d\u019f\u01a0\u01a2\u01a4\u01a6\u01a7\u01a9\u01ac\u01ae\u01af\u01b1-\u01b3\u01b5\u01b7\u01b8\u01bc\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u023a\u023b\u023d\u023e\u0241\u0243-\u0246\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u037f\u0386\u0388-\u038a\u038c\u038e\u038f\u0391-\u03a1\u03a3-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03f9\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0\u04c1\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0524\u0526\u0528\u052a\u052c\u052e\u0531-\u0556\u10a0-\u10c5\u10c7\u10cd\u13a0-\u13f5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59\u1f5b\u1f5d\u1f5f\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133\u213e\u213f\u2145\u2160-\u216f\u2183\u24b6-\u24cf\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67\u2c69\u2c6b\u2c6d-\u2c70\u2c72\u2c75\u2c7e-\u2c80\u2c82\u2c84\u2c86\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\u2ceb\u2ced\u2cf2\ua640\ua642\ua644\ua646\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a\ua65c\ua65e\ua660\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696\ua698\ua69a\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b\ua77d\ua77e\ua780\ua782\ua784\ua786\ua78b\ua78d\ua790\ua792\ua796\ua798\ua79a\ua79c\ua79e\ua7a0\ua7a2\ua7a4\ua7a6\ua7a8\ua7aa-\ua7ae\ua7b0-\ua7b4\ua7b6\uff21-\uff3a",astral:"\ud801[\udc00-\udc27\udcb0-\udcd3]|\ud803[\udc80-\udcb2]|\ud806[\udca0-\udcbf]|\ud835[\udc00-\udc19\udc34-\udc4d\udc68-\udc81\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb5\udcd0-\udce9\udd04\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd38\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd6c-\udd85\udda0-\uddb9\uddd4-\udded\ude08-\ude21\ude3c-\ude55\ude70-\ude89\udea8-\udec0\udee2-\udefa\udf1c-\udf34\udf56-\udf6e\udf90-\udfa8\udfca]|\ud83a[\udd00-\udd21]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]"},{name:"White_Space",bmp:"\t-\r \x85\xa0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000"}];u.push({name:"Assigned",inverseOf:"Cn"}),d.addUnicodeData(u)},d.exports=u.default},396:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){if(!d.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");d.addUnicodeData([{name:"Adlam",astral:"\ud83a[\udd00-\udd4a\udd50-\udd59\udd5e\udd5f]"},{name:"Ahom",astral:"\ud805[\udf00-\udf19\udf1d-\udf2b\udf30-\udf3f]"},{name:"Anatolian_Hieroglyphs",astral:"\ud811[\udc00-\ude46]"},{name:"Arabic",bmp:"\u0600-\u0604\u0606-\u060b\u060d-\u061a\u061e\u0620-\u063f\u0641-\u064a\u0656-\u066f\u0671-\u06dc\u06de-\u06ff\u0750-\u077f\u08a0-\u08b4\u08b6-\u08bd\u08d4-\u08e1\u08e3-\u08ff\ufb50-\ufbc1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfd\ufe70-\ufe74\ufe76-\ufefc",astral:"\ud803[\ude60-\ude7e]|\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\udef0\udef1]"},{name:"Armenian",bmp:"\u0531-\u0556\u0559-\u055f\u0561-\u0587\u058a\u058d-\u058f\ufb13-\ufb17"},{name:"Avestan",astral:"\ud802[\udf00-\udf35\udf39-\udf3f]"},{name:"Balinese",bmp:"\u1b00-\u1b4b\u1b50-\u1b7c"},{name:"Bamum",bmp:"\ua6a0-\ua6f7",astral:"\ud81a[\udc00-\ude38]"},{name:"Bassa_Vah",astral:"\ud81a[\uded0-\udeed\udef0-\udef5]"},{name:"Batak",bmp:"\u1bc0-\u1bf3\u1bfc-\u1bff"},{name:"Bengali",bmp:"\u0980-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09fb"},{name:"Bhaiksuki",astral:"\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc45\udc50-\udc6c]"},{name:"Bopomofo",bmp:"\u02ea\u02eb\u3105-\u312d\u31a0-\u31ba"},{name:"Brahmi",astral:"\ud804[\udc00-\udc4d\udc52-\udc6f\udc7f]"},{name:"Braille",bmp:"\u2800-\u28ff"},{name:"Buginese",bmp:"\u1a00-\u1a1b\u1a1e\u1a1f"},{name:"Buhid",bmp:"\u1740-\u1753"},{name:"Canadian_Aboriginal",bmp:"\u1400-\u167f\u18b0-\u18f5"},{name:"Carian",astral:"\ud800[\udea0-\uded0]"},{name:"Caucasian_Albanian",astral:"\ud801[\udd30-\udd63\udd6f]"},{name:"Chakma",astral:"\ud804[\udd00-\udd34\udd36-\udd43]"},{name:"Cham",bmp:"\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa5c-\uaa5f"},{name:"Cherokee",bmp:"\u13a0-\u13f5\u13f8-\u13fd\uab70-\uabbf"},{name:"Common",bmp:"\0-@\\x5B-`\\x7B-\xa9\xab-\xb9\xbb-\xbf\xd7\xf7\u02b9-\u02df\u02e5-\u02e9\u02ec-\u02ff\u0374\u037e\u0385\u0387\u0589\u0605\u060c\u061b\u061c\u061f\u0640\u06dd\u08e2\u0964\u0965\u0e3f\u0fd5-\u0fd8\u10fb\u16eb-\u16ed\u1735\u1736\u1802\u1803\u1805\u1cd3\u1ce1\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u2000-\u200b\u200e-\u2064\u2066-\u2070\u2074-\u207e\u2080-\u208e\u20a0-\u20be\u2100-\u2125\u2127-\u2129\u212c-\u2131\u2133-\u214d\u214f-\u215f\u2189-\u218b\u2190-\u23fe\u2400-\u2426\u2440-\u244a\u2460-\u27ff\u2900-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2e00-\u2e44\u2ff0-\u2ffb\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303c-\u303f\u309b\u309c\u30a0\u30fb\u30fc\u3190-\u319f\u31c0-\u31e3\u3220-\u325f\u327f-\u32cf\u3358-\u33ff\u4dc0-\u4dff\ua700-\ua721\ua788-\ua78a\ua830-\ua839\ua92e\ua9cf\uab5b\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\ufeff\uff01-\uff20\uff3b-\uff40\uff5b-\uff65\uff70\uff9e\uff9f\uffe0-\uffe6\uffe8-\uffee\ufff9-\ufffd",astral:"\ud800[\udd00-\udd02\udd07-\udd33\udd37-\udd3f\udd90-\udd9b\uddd0-\uddfc\udee1-\udefb]|\ud82f[\udca0-\udca3]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd66\udd6a-\udd7a\udd83\udd84\udd8c-\udda9\uddae-\udde8\udf00-\udf56\udf60-\udf71]|\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-\udfcb\udfce-\udfff]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd00-\udd0c\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\uddff\ude01\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udfff]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|\udb40[\udc01\udc20-\udc7f]"},{name:"Coptic",bmp:"\u03e2-\u03ef\u2c80-\u2cf3\u2cf9-\u2cff"},{name:"Cuneiform",astral:"\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc70-\udc74\udc80-\udd43]"},{name:"Cypriot",astral:"\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f]"},{name:"Cyrillic",bmp:"\u0400-\u0484\u0487-\u052f\u1c80-\u1c88\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f"},{name:"Deseret",astral:"\ud801[\udc00-\udc4f]"},{name:"Devanagari",bmp:"\u0900-\u0950\u0953-\u0963\u0966-\u097f\ua8e0-\ua8fd"},{name:"Duployan",astral:"\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9c-\udc9f]"},{name:"Egyptian_Hieroglyphs",astral:"\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]"},{name:"Elbasan",astral:"\ud801[\udd00-\udd27]"},{name:"Ethiopic",bmp:"\u1200-\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\u135d-\u137c\u1380-\u1399\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e"},{name:"Georgian",bmp:"\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u10ff\u2d00-\u2d25\u2d27\u2d2d"},{name:"Glagolitic",bmp:"\u2c00-\u2c2e\u2c30-\u2c5e",astral:"\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a]"},{name:"Gothic",astral:"\ud800[\udf30-\udf4a]"},{name:"Grantha",astral:"\ud804[\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]"},{name:"Greek",bmp:"\u0370-\u0373\u0375-\u0377\u037a-\u037d\u037f\u0384\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03e1\u03f0-\u03ff\u1d26-\u1d2a\u1d5d-\u1d61\u1d66-\u1d6a\u1dbf\u1f00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fc4\u1fc6-\u1fd3\u1fd6-\u1fdb\u1fdd-\u1fef\u1ff2-\u1ff4\u1ff6-\u1ffe\u2126\uab65",astral:"\ud800[\udd40-\udd8e\udda0]|\ud834[\ude00-\ude45]"},{name:"Gujarati",bmp:"\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0af1\u0af9"},{name:"Gurmukhi",bmp:"\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75"},{name:"Han",bmp:"\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u3005\u3007\u3021-\u3029\u3038-\u303b\u3400-\u4db5\u4e00-\u9fd5\uf900-\ufa6d\ufa70-\ufad9",astral:"[\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]"},{name:"Hangul",bmp:"\u1100-\u11ff\u302e\u302f\u3131-\u318e\u3200-\u321e\u3260-\u327e\ua960-\ua97c\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"},{name:"Hanunoo",bmp:"\u1720-\u1734"},{name:"Hatran",astral:"\ud802[\udce0-\udcf2\udcf4\udcf5\udcfb-\udcff]"},{name:"Hebrew",bmp:"\u0591-\u05c7\u05d0-\u05ea\u05f0-\u05f4\ufb1d-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufb4f"},{name:"Hiragana",bmp:"\u3041-\u3096\u309d-\u309f",astral:"\ud82c\udc01|\ud83c\ude00"},{name:"Imperial_Aramaic",astral:"\ud802[\udc40-\udc55\udc57-\udc5f]"},{name:"Inherited",bmp:"\u0300-\u036f\u0485\u0486\u064b-\u0655\u0670\u0951\u0952\u1ab0-\u1abe\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u200c\u200d\u20d0-\u20f0\u302a-\u302d\u3099\u309a\ufe00-\ufe0f\ufe20-\ufe2d",astral:"\ud800[\uddfd\udee0]|\ud834[\udd67-\udd69\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad]|\udb40[\udd00-\uddef]"},{name:"Inscriptional_Pahlavi",astral:"\ud802[\udf60-\udf72\udf78-\udf7f]"},{name:"Inscriptional_Parthian",astral:"\ud802[\udf40-\udf55\udf58-\udf5f]"},{name:"Javanese",bmp:"\ua980-\ua9cd\ua9d0-\ua9d9\ua9de\ua9df"},{name:"Kaithi",astral:"\ud804[\udc80-\udcc1]"},{name:"Kannada",bmp:"\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2"},{name:"Katakana",bmp:"\u30a1-\u30fa\u30fd-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff6f\uff71-\uff9d",astral:"\ud82c\udc00"},{name:"Kayah_Li",bmp:"\ua900-\ua92d\ua92f"},{name:"Kharoshthi",astral:"\ud802[\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f-\ude47\ude50-\ude58]"},{name:"Khmer",bmp:"\u1780-\u17dd\u17e0-\u17e9\u17f0-\u17f9\u19e0-\u19ff"},{name:"Khojki",astral:"\ud804[\ude00-\ude11\ude13-\ude3e]"},{name:"Khudawadi",astral:"\ud804[\udeb0-\udeea\udef0-\udef9]"},{name:"Lao",bmp:"\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf"},{name:"Latin",bmp:"A-Za-z\xaa\xba\xc0-\xd6\xd8-\xf6\xf8-\u02b8\u02e0-\u02e4\u1d00-\u1d25\u1d2c-\u1d5c\u1d62-\u1d65\u1d6b-\u1d77\u1d79-\u1dbe\u1e00-\u1eff\u2071\u207f\u2090-\u209c\u212a\u212b\u2132\u214e\u2160-\u2188\u2c60-\u2c7f\ua722-\ua787\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua7ff\uab30-\uab5a\uab5c-\uab64\ufb00-\ufb06\uff21-\uff3a\uff41-\uff5a"},{name:"Lepcha",bmp:"\u1c00-\u1c37\u1c3b-\u1c49\u1c4d-\u1c4f"},{name:"Limbu",bmp:"\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1940\u1944-\u194f"},{name:"Linear_A",astral:"\ud801[\ude00-\udf36\udf40-\udf55\udf60-\udf67]"},{name:"Linear_B",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa]"},{name:"Lisu",bmp:"\ua4d0-\ua4ff"},{name:"Lycian",astral:"\ud800[\ude80-\ude9c]"},{name:"Lydian",astral:"\ud802[\udd20-\udd39\udd3f]"},{name:"Mahajani",astral:"\ud804[\udd50-\udd76]"},{name:"Malayalam",bmp:"\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4f\u0d54-\u0d63\u0d66-\u0d7f"},{name:"Mandaic",bmp:"\u0840-\u085b\u085e"},{name:"Manichaean",astral:"\ud802[\udec0-\udee6\udeeb-\udef6]"},{name:"Marchen",astral:"\ud807[\udc70-\udc8f\udc92-\udca7\udca9-\udcb6]"},{name:"Meetei_Mayek",bmp:"\uaae0-\uaaf6\uabc0-\uabed\uabf0-\uabf9"},{name:"Mende_Kikakui",astral:"\ud83a[\udc00-\udcc4\udcc7-\udcd6]"},{name:"Meroitic_Cursive",astral:"\ud802[\udda0-\uddb7\uddbc-\uddcf\uddd2-\uddff]"},{name:"Meroitic_Hieroglyphs",astral:"\ud802[\udd80-\udd9f]"},{name:"Miao",astral:"\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]"},{name:"Modi",astral:"\ud805[\ude00-\ude44\ude50-\ude59]"},{name:"Mongolian",bmp:"\u1800\u1801\u1804\u1806-\u180e\u1810-\u1819\u1820-\u1877\u1880-\u18aa",astral:"\ud805[\ude60-\ude6c]"},{name:"Mro",astral:"\ud81a[\ude40-\ude5e\ude60-\ude69\ude6e\ude6f]"},{name:"Multani",astral:"\ud804[\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea9]"},{name:"Myanmar",bmp:"\u1000-\u109f\ua9e0-\ua9fe\uaa60-\uaa7f"},{name:"Nabataean",astral:"\ud802[\udc80-\udc9e\udca7-\udcaf]"},{name:"New_Tai_Lue",bmp:"\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u19de\u19df"},{name:"Newa",astral:"\ud805[\udc00-\udc59\udc5b\udc5d]"},{name:"Nko",bmp:"\u07c0-\u07fa"},{name:"Ogham",bmp:"\u1680-\u169c"},{name:"Ol_Chiki",bmp:"\u1c50-\u1c7f"},{name:"Old_Hungarian",astral:"\ud803[\udc80-\udcb2\udcc0-\udcf2\udcfa-\udcff]"},{name:"Old_Italic",astral:"\ud800[\udf00-\udf23]"},{name:"Old_North_Arabian",astral:"\ud802[\ude80-\ude9f]"},{name:"Old_Permic",astral:"\ud800[\udf50-\udf7a]"},{name:"Old_Persian",astral:"\ud800[\udfa0-\udfc3\udfc8-\udfd5]"},{name:"Old_South_Arabian",astral:"\ud802[\ude60-\ude7f]"},{name:"Old_Turkic",astral:"\ud803[\udc00-\udc48]"},{name:"Oriya",bmp:"\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b77"},{name:"Osage",astral:"\ud801[\udcb0-\udcd3\udcd8-\udcfb]"},{name:"Osmanya",astral:"\ud801[\udc80-\udc9d\udca0-\udca9]"},{name:"Pahawh_Hmong",astral:"\ud81a[\udf00-\udf45\udf50-\udf59\udf5b-\udf61\udf63-\udf77\udf7d-\udf8f]"},{name:"Palmyrene",astral:"\ud802[\udc60-\udc7f]"},{name:"Pau_Cin_Hau",astral:"\ud806[\udec0-\udef8]"},{name:"Phags_Pa",bmp:"\ua840-\ua877"},{name:"Phoenician",astral:"\ud802[\udd00-\udd1b\udd1f]"},{name:"Psalter_Pahlavi",astral:"\ud802[\udf80-\udf91\udf99-\udf9c\udfa9-\udfaf]"},{name:"Rejang",bmp:"\ua930-\ua953\ua95f"},{name:"Runic",bmp:"\u16a0-\u16ea\u16ee-\u16f8"},{name:"Samaritan",bmp:"\u0800-\u082d\u0830-\u083e"},{name:"Saurashtra",bmp:"\ua880-\ua8c5\ua8ce-\ua8d9"},{name:"Sharada",astral:"\ud804[\udd80-\uddcd\uddd0-\udddf]"},{name:"Shavian",astral:"\ud801[\udc50-\udc7f]"},{name:"Siddham",astral:"\ud805[\udd80-\uddb5\uddb8-\udddd]"},{name:"SignWriting",astral:"\ud836[\udc00-\ude8b\ude9b-\ude9f\udea1-\udeaf]"},{name:"Sinhala",bmp:"\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df4",astral:"\ud804[\udde1-\uddf4]"},{name:"Sora_Sompeng",astral:"\ud804[\udcd0-\udce8\udcf0-\udcf9]"},{name:"Sundanese",bmp:"\u1b80-\u1bbf\u1cc0-\u1cc7"},{name:"Syloti_Nagri",bmp:"\ua800-\ua82b"},{name:"Syriac",bmp:"\u0700-\u070d\u070f-\u074a\u074d-\u074f"},{name:"Tagalog",bmp:"\u1700-\u170c\u170e-\u1714"},{name:"Tagbanwa",bmp:"\u1760-\u176c\u176e-\u1770\u1772\u1773"},{name:"Tai_Le",bmp:"\u1950-\u196d\u1970-\u1974"},{name:"Tai_Tham",bmp:"\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa0-\u1aad"},{name:"Tai_Viet",bmp:"\uaa80-\uaac2\uaadb-\uaadf"},{name:"Takri",astral:"\ud805[\ude80-\udeb7\udec0-\udec9]"},{name:"Tamil",bmp:"\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bfa"},{name:"Tangut",astral:"\ud81b\udfe0|[\ud81c-\ud820][\udc00-\udfff]|\ud821[\udc00-\udfec]|\ud822[\udc00-\udef2]"},{name:"Telugu",bmp:"\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c78-\u0c7f"},{name:"Thaana",bmp:"\u0780-\u07b1"},{name:"Thai",bmp:"\u0e01-\u0e3a\u0e40-\u0e5b"},{name:"Tibetan",bmp:"\u0f00-\u0f47\u0f49-\u0f6c\u0f71-\u0f97\u0f99-\u0fbc\u0fbe-\u0fcc\u0fce-\u0fd4\u0fd9\u0fda"},{name:"Tifinagh",bmp:"\u2d30-\u2d67\u2d6f\u2d70\u2d7f"},{name:"Tirhuta",astral:"\ud805[\udc80-\udcc7\udcd0-\udcd9]"},{name:"Ugaritic",astral:"\ud800[\udf80-\udf9d\udf9f]"},{name:"Vai",bmp:"\ua500-\ua62b"},{name:"Warang_Citi",astral:"\ud806[\udca0-\udcf2\udcff]"},{name:"Yi",bmp:"\ua000-\ua48c\ua490-\ua4c6"}])},d.exports=u.default}}]); \ No newline at end of file +/*! For license information please see 9c0c4329.0694b22c.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{212:function(d,u,e){"use strict";e.r(u);var a=e(1),c=(e(53),e(277),e(26),e(20),e(19),e(90),e(0)),n=e.n(c),f=e(278),t=e(273),r=(e(268),e(287)),i=e(305),l=e.n(i),s=e(275),o=e(386),m=e.n(o),b=e(327),p=e.n(b),D=Object(f.a)("h2");u.default=function(d){var u=d.tags,e=Object.values(u).map((function(d){return{count:d.count,label:d.name,permalink:d.permalink}})),c=Object(s.a)(e,"highlights"),f=l.a.groupBy(c,"category");return n.a.createElement(t.a,{title:"Tags",description:"gnet highlight tags"},n.a.createElement("header",{className:"hero hero--clean"},n.a.createElement("div",{className:"container"},n.a.createElement("h1",null,"All Highlight Tags"))),n.a.createElement("main",{className:"container container--xs"},Object.keys(f).map((function(d,u){var e=f[d];return n.a.createElement("section",null,n.a.createElement(D,{id:d.name},p()(m()(d))),e.map((function(d,u){return n.a.createElement("div",null,n.a.createElement(r.a,Object(a.a)({key:u,valueOnly:!0},d)))})))}))))}},272:function(d,u,e){"use strict";e.d(u,"a",(function(){return c})),e.d(u,"b",(function(){return n}));var a=e(267);function c(){var d=Object(a.a)().siteConfig,u=(void 0===d?{}:d).customFields.metadata.latest_highlight,e=Date.parse(u.date),c=new Date,n=Math.abs(c-e),f=Math.ceil(n/864e5),t=null;return"undefined"!=typeof window&&(t=new Date(parseInt(window.localStorage.getItem("highlightsViewedAt")||"0"))),f<30&&(!t||t0&&c.a.createElement("div",{className:"row footer__links"},c.a.createElement("div",{className:"col col--5 footer__col"},c.a.createElement("div",{className:"margin-bottom--md"},c.a.createElement(s.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),c.a.createElement("div",{className:"margin-bottom--md"},c.a.createElement(N,{description:!1,width:"150px"})),c.a.createElement("div",null,c.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},c.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",c.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},c.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",c.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},c.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),t.map((function(d,u){return c.a.createElement("div",{key:u,className:"col footer__col"},null!=d.title?c.a.createElement("h4",{className:"footer__title"},d.title):null,null!=d.items&&Array.isArray(d.items)&&d.items.length>0?c.a.createElement("ul",{className:"footer__items"},d.items.map((function(d,u){return d.html?c.a.createElement("li",{key:u,className:"footer__item",dangerouslySetInnerHTML:{__html:d.html}}):c.a.createElement("li",{key:d.href||d.to,className:"footer__item"},c.a.createElement(M,d))}))):null)}))),(i||n)&&c.a.createElement("div",{className:"text--center"},i&&i.src&&c.a.createElement("div",{className:"margin-bottom--sm"},i.href?c.a.createElement("a",{href:i.href,target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},c.a.createElement(L,{alt:i.alt,url:l})):c.a.createElement(L,{alt:i.alt,url:l}),c.a.createElement("br",null),c.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:P.a.footerLogoLink},c.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),n,c.a.createElement("br",null),c.a.createElement("small",null,c.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",c.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},j=e(290),R=e(291),U=e(3);e(135);u.a=function(d){var u=Object(b.a)().siteConfig,e=void 0===u?{}:u,a=e.favicon,t=(e.tagline,e.title),r=e.themeConfig.image,i=e.url,l=d.children,s=d.title,o=d.noFooter,m=d.description,p=d.image,D=d.keywords,h=(d.permalink,d.version),g=s?s+" | "+t:t,_=p||r,E=i+Object(x.a)(_),I=Object(x.a)(a),v=Object(U.h)(),y=v?"https://gnet.host"+(v.pathname.endsWith("/")?v.pathname:v.pathname+"/"):null;return c.a.createElement(R.a,null,c.a.createElement(j.a,null,c.a.createElement(f.a,null,c.a.createElement("html",{lang:"en"}),c.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),g&&c.a.createElement("title",null,g),g&&c.a.createElement("meta",{property:"og:title",content:g}),a&&c.a.createElement("link",{rel:"shortcut icon",href:I}),m&&c.a.createElement("meta",{name:"description",content:m}),m&&c.a.createElement("meta",{property:"og:description",content:m}),h&&c.a.createElement("meta",{name:"docsearch:version",content:h}),D&&D.length&&c.a.createElement("meta",{name:"keywords",content:D.join(",")}),_&&c.a.createElement("meta",{property:"og:image",content:E}),_&&c.a.createElement("meta",{property:"twitter:image",content:E}),_&&c.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+g}),_&&c.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),_&&c.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),y&&c.a.createElement("meta",{property:"og:url",content:y}),c.a.createElement("meta",{name:"twitter:card",content:"summary"}),y&&c.a.createElement("link",{rel:"canonical",href:y})),c.a.createElement(n.a,null),c.a.createElement(O,null),c.a.createElement("div",{className:"main-wrapper"},l),!o&&c.a.createElement(T,null)))}},274:function(d,u,e){"use strict";var a=e(12),c=e(301)(5),n=!0;"find"in[]&&Array(1).find((function(){n=!1})),a(a.P+a.F*n,"Array",{find:function(d){return c(this,d,arguments.length>1?arguments[1]:void 0)}}),e(80)("find")},275:function(d,u,e){"use strict";e.d(u,"a",(function(){return n}));e(79),e(298),e(274),e(78);var a=e(279),c=e.n(a);function n(d,u){var e=new c.a;return d.map((function(d){var a=d;return"string"==typeof d&&(a={label:d,permalink:"/"+u+"/tags/"+e.slug(d)}),function(d,u){if(d.enriched)return d;var e=d.label.split(": ",2),a=e[0],c=e[1],n="primary";switch(a){case"domain":n="blue";break;case"type":n="pink";break;default:n="primary"}return{category:a,count:d.count,enriched:!0,label:d.label,permalink:d.permalink,style:n,value:c}}(a)}))}},277:function(d,u,e){var a=e(24).f,c=Function.prototype,n=/^\s*function ([^ (]*)/;"name"in c||e(10)&&a(c,"name",{configurable:!0,get:function(){try{return(""+this).match(n)[1]}catch(d){return""}}})},278:function(d,u,e){"use strict";var a=e(9),c=e(0),n=e.n(c),f=e(266),t=e.n(f),r=e(267),i=(e(139),e(140)),l=e.n(i);u.a=function(d){return function(u){var e,c=u.id,f=Object(a.a)(u,["id"]),i=Object(r.a)().siteConfig,s=(i=void 0===i?{}:i).themeConfig,o=(s=void 0===s?{}:s).navbar,m=(o=void 0===o?{}:o).hideOnScroll,b=void 0!==m&&m;return c?n.a.createElement(d,f,n.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:t()("anchor",(e={},e[l.a.enhancedAnchor]=!b,e)),id:c}),n.a.createElement("a",{"aria-hidden":"true",tabIndex:"-1",className:"hash-link",href:"#"+c,title:"Direct link to heading"},"#"),f.children):n.a.createElement(d,f)}}},279:function(d,u,e){var a=e(288);d.exports=t;var c=Object.hasOwnProperty,n=/\s/g,f=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function t(){if(!(this instanceof t))return new t;this.reset()}function r(d,u){return"string"!=typeof d?"":(u||(d=d.toLowerCase()),d.trim().replace(f,"").replace(a(),"").replace(n,"-"))}t.prototype.slug=function(d,u){for(var e=r(d,!0===u),a=e;c.call(this.occurrences,e);)this.occurrences[a]++,e=a+"-"+this.occurrences[a];return this.occurrences[e]=0,e},t.prototype.reset=function(){this.occurrences=Object.create(null)},t.slug=r},287:function(d,u,e){"use strict";var a=e(0),c=e.n(a),n=e(268),f=e(266),t=e.n(f);u.a=function(d){var u=d.count,e=d.label,a=d.permalink,f=d.style,r=d.value,i=d.valueOnly;return c.a.createElement(n.a,{to:a+"/",className:t()("badge","badge--rounded","badge--"+f)},i?r:e,u&&c.a.createElement(c.a.Fragment,null," (",u,")"))}},288:function(d,u){d.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},301:function(d,u,e){var a=e(28),c=e(54),n=e(25),f=e(27),t=e(302);d.exports=function(d,u){var e=1==d,r=2==d,i=3==d,l=4==d,s=6==d,o=5==d||s,m=u||t;return function(u,t,b){for(var p,D,h=n(u),g=c(h),_=a(t,b,3),E=f(g.length),I=0,v=e?m(u,E):r?m(u,0):void 0;E>I;I++)if((o||I in g)&&(D=_(p=g[I],I,h),d))if(e)v[I]=D;else if(D)switch(d){case 3:return!0;case 5:return p;case 6:return I;case 2:v.push(p)}else if(l)return!1;return s?-1:i||l?l:v}}},302:function(d,u,e){var a=e(303);d.exports=function(d,u){return new(a(d))(u)}},303:function(d,u,e){var a=e(14),c=e(323),n=e(2)("species");d.exports=function(d){var u;return c(d)&&("function"!=typeof(u=d.constructor)||u!==Array&&!c(u.prototype)||(u=void 0),a(u)&&null===(u=u[n])&&(u=void 0)),void 0===u?Array:u}},327:function(d,u,e){d.exports=function(){var d=[],u=[],e={},a={},c={};function n(d){return"string"==typeof d?new RegExp("^"+d+"$","i"):d}function f(d,u){return d===u?u:d===d.toLowerCase()?u.toLowerCase():d===d.toUpperCase()?u.toUpperCase():d[0]===d[0].toUpperCase()?u.charAt(0).toUpperCase()+u.substr(1).toLowerCase():u.toLowerCase()}function t(d,u){return d.replace(/\$(\d{1,2})/g,(function(d,e){return u[e]||""}))}function r(d,u){return d.replace(u[0],(function(e,a){var c=t(u[1],arguments);return f(""===e?d[a-1]:e,c)}))}function i(d,u,a){if(!d.length||e.hasOwnProperty(d))return u;for(var c=a.length;c--;){var n=a[c];if(n[0].test(u))return r(u,n)}return u}function l(d,u,e){return function(a){var c=a.toLowerCase();return u.hasOwnProperty(c)?f(a,c):d.hasOwnProperty(c)?f(a,d[c]):i(c,a,e)}}function s(d,u,e,a){return function(a){var c=a.toLowerCase();return!!u.hasOwnProperty(c)||!d.hasOwnProperty(c)&&i(c,c,e)===c}}function o(d,u,e){return(e?u+" ":"")+(1===u?o.singular(d):o.plural(d))}return o.plural=l(c,a,d),o.isPlural=s(c,a,d),o.singular=l(a,c,u),o.isSingular=s(a,c,u),o.addPluralRule=function(u,e){d.push([n(u),e])},o.addSingularRule=function(d,e){u.push([n(d),e])},o.addUncountableRule=function(d){"string"!=typeof d?(o.addPluralRule(d,"$0"),o.addSingularRule(d,"$0")):e[d.toLowerCase()]=!0},o.addIrregularRule=function(d,u){u=u.toLowerCase(),d=d.toLowerCase(),c[d]=u,a[u]=d},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(d){return o.addIrregularRule(d[0],d[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(d){return o.addPluralRule(d[0],d[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(d){return o.addSingularRule(d[0],d[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(o.addUncountableRule),o}()},386:function(d,u,e){"use strict";const a=e(387),c=d=>{if("string"!=typeof d)throw new TypeError("Expected a string");return d=(d=(d=a(d)).toLowerCase().replace(/[_-]+/g," ").replace(/\s{2,}/g," ").trim()).charAt(0).toUpperCase()+d.slice(1)};d.exports=c,d.exports.default=c},387:function(d,u,e){"use strict";const a=e(388);d.exports=(d,u)=>{if("string"!=typeof d)throw new TypeError("Expected a string");u=void 0===u?"_":u;const e=a("([\\p{Ll}\\d])(\\p{Lu})","g"),c=a("(\\p{Lu}+)(\\p{Lu}[\\p{Ll}\\d]+)","g");return d.replace(e,`$1${u}$2`).replace(c,`$1${u}$2`).toLowerCase()}},388:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var a=s(e(389)),c=s(e(390)),n=s(e(391)),f=s(e(392)),t=s(e(393)),r=s(e(394)),i=s(e(395)),l=s(e(396));function s(d){return d&&d.__esModule?d:{default:d}}(0,c.default)(a.default),(0,n.default)(a.default),(0,f.default)(a.default),(0,t.default)(a.default),(0,r.default)(a.default),(0,i.default)(a.default),(0,l.default)(a.default),u.default=a.default,d.exports=u.default},389:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var a={astral:!1},c={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},n={},f={},t={},r=[],i={default:/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,class:/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/},l=/\$(?:{([\w$]+)}|<([\w$]+)>|(\d\d?|[\s\S]))/g,s=void 0===c.exec.call(/()??/,"")[1],o=void 0!==/x/.flags,m={}.toString;function b(d){var u=!0;try{new RegExp("",d)}catch(e){u=!1}return u}var p=b("u"),D=b("y"),h={g:!0,i:!0,m:!0,u:p,y:D};function g(d,u,e,a,c){var n=void 0;if(d.xregexp={captureNames:u},c)return d;if(d.__proto__)d.__proto__=O.prototype;else for(n in O.prototype)d[n]=O.prototype[n];return d.xregexp.source=e,d.xregexp.flags=a?a.split("").sort().join(""):a,d}function _(d){return c.replace.call(d,/([\s\S])(?=[\s\S]*\1)/g,"")}function E(d,u){if(!O.isRegExp(d))throw new TypeError("Type RegExp expected");var e=d.xregexp||{},a=function(d){return o?d.flags:c.exec.call(/\/([a-z]*)$/i,RegExp.prototype.toString.call(d))[1]}(d),n="",f="",t=null,r=null;return(u=u||{}).removeG&&(f+="g"),u.removeY&&(f+="y"),f&&(a=c.replace.call(a,new RegExp("["+f+"]+","g"),"")),u.addG&&(n+="g"),u.addY&&(n+="y"),n&&(a=_(a+n)),u.isInternalOnly||(void 0!==e.source&&(t=e.source),null!=e.flags&&(r=n?_(e.flags+n):e.flags)),d=g(new RegExp(u.source||d.source,a),function(d){return!(!d.xregexp||!d.xregexp.captureNames)}(d)?e.captureNames.slice(0):null,t,r,u.isInternalOnly)}function I(d){return parseInt(d,16)}function v(d,u,e){return"("===d.input[d.index-1]||")"===d.input[d.index+d[0].length]||function(d,u,e){return c.test.call(-1!==e.indexOf("x")?/^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/:/^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/,d.slice(u))}(d.input,d.index+d[0].length,e)?"":"(?:)"}function x(d){return parseInt(d,10).toString(16)}function y(d,u){return m.call(d)==="[object "+u+"]"}function C(d){for(;d.length<4;)d="0"+d;return d}function F(d){var u={};return y(d,"String")?(O.forEach(d,/[^\s,]+/,(function(d){u[d]=!0})),u):d}function w(d){if(!/^[\w$]$/.test(d))throw new Error("Flag must be a single character A-Za-z0-9_$");h[d]=!0}function S(d,u,e,a,c){for(var n=r.length,f=d[e],t=null,i=void 0,l=void 0;n--;)if(!((l=r[n]).leadChar&&l.leadChar!==f||l.scope!==a&&"all"!==l.scope||l.flag&&-1===u.indexOf(l.flag))&&(i=O.exec(d,l.regex,e,"sticky"))){t={matchLength:i[0].length,output:l.handler.call(c,i,a,u),reparse:l.reparse};break}return t}function k(d){a.astral=d}function A(d){if(null==d)throw new TypeError("Cannot convert null or undefined to object");return d}function O(d,u){if(O.isRegExp(d)){if(void 0!==u)throw new TypeError("Cannot supply flags when copying a RegExp");return E(d)}if(d=void 0===d?"":String(d),u=void 0===u?"":String(u),O.isInstalled("astral")&&-1===u.indexOf("A")&&(u+="A"),t[d]||(t[d]={}),!t[d][u]){for(var e={hasNamedCapture:!1,captureNames:[]},a="default",n="",f=0,r=void 0,l=function(d,u){var e=void 0;if(_(u)!==u)throw new SyntaxError("Invalid duplicate regex flag "+u);for(d=c.replace.call(d,/^\(\?([\w$]+)\)/,(function(d,e){if(c.test.call(/[gy]/,e))throw new SyntaxError("Cannot use flag g or y in mode modifier "+d);return u=_(u+e),""})),e=0;e"}else if(e)return"\\"+(+e+f);return d}if(!y(d,"Array")||!d.length)throw new TypeError("Must provide a nonempty array of patterns to merge");for(var i=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,l=[],s=void 0,o=0;o1&&-1!==e.indexOf("")){var a=E(this,{removeG:!0,isInternalOnly:!0});c.replace.call(String(d).slice(e.index),a,(function(){for(var d=arguments.length,u=Array(d),a=0;ae.index&&(this.lastIndex=e.index)}return this.global||(this.lastIndex=u),e},n.test=function(d){return!!n.exec.call(this,d)},n.match=function(d){if(O.isRegExp(d)){if(d.global){var u=c.match.apply(this,arguments);return d.lastIndex=0,u}}else d=new RegExp(d);return n.exec.call(d,A(this))},n.replace=function(d,u){var e=O.isRegExp(d),a=void 0,n=void 0,f=void 0;return e?(d.xregexp&&(n=d.xregexp.captureNames),a=d.lastIndex):d+="",f=y(u,"Function")?c.replace.call(String(this),d,(function(){for(var a=arguments.length,c=Array(a),f=0;fe.length-3)throw new SyntaxError("Backreference to undefined group "+d);return e[c]||""}throw new SyntaxError("Invalid token "+d)}})),e&&(d.global?d.lastIndex=0:d.lastIndex=a),f},n.split=function(d,u){if(!O.isRegExp(d))return c.split.apply(this,arguments);var e=String(this),a=[],n=d.lastIndex,f=0,t=void 0;return u=(void 0===u?-1:u)>>>0,O.forEach(e,d,(function(d){d.index+d[0].length>f&&(a.push(e.slice(f,d.index)),d.length>1&&d.indexu?a.slice(0,u):a},O.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/,(function(d,u){if("B"===d[1]&&"default"===u)return d[0];throw new SyntaxError("Invalid escape "+d[0])}),{scope:"all",leadChar:"\\"}),O.addToken(/\\u{([\dA-Fa-f]+)}/,(function(d,u,e){var a=I(d[1]);if(a>1114111)throw new SyntaxError("Invalid Unicode code point "+d[0]);if(a<=65535)return"\\u"+C(x(a));if(p&&-1!==e.indexOf("u"))return d[0];throw new SyntaxError("Cannot use Unicode code point above \\u{FFFF} without flag u")}),{scope:"all",leadChar:"\\"}),O.addToken(/\[(\^?)\]/,(function(d){return d[1]?"[\\s\\S]":"\\b\\B"}),{leadChar:"["}),O.addToken(/\(\?#[^)]*\)/,v,{leadChar:"("}),O.addToken(/\s+|#[^\n]*\n?/,v,{flag:"x"}),O.addToken(/\./,(function(){return"[\\s\\S]"}),{flag:"s",leadChar:"."}),O.addToken(/\\k<([\w$]+)>/,(function(d){var u=isNaN(d[1])?this.captureNames.indexOf(d[1])+1:+d[1],e=d.index+d[0].length;if(!u||u>this.captureNames.length)throw new SyntaxError("Backreference to undefined group "+d[0]);return"\\"+u+(e===d.input.length||isNaN(d.input[e])?"":"(?:)")}),{leadChar:"\\"}),O.addToken(/\\(\d+)/,(function(d,u){if(!("default"===u&&/^[1-9]/.test(d[1])&&+d[1]<=this.captureNames.length)&&"0"!==d[1])throw new SyntaxError("Cannot use octal escape or backreference to undefined group "+d[0]);return d[0]}),{scope:"all",leadChar:"\\"}),O.addToken(/\(\?P?<([\w$]+)>/,(function(d){if(!isNaN(d[1]))throw new SyntaxError("Cannot use integer as capture name "+d[0]);if("length"===d[1]||"__proto__"===d[1])throw new SyntaxError("Cannot use reserved word as capture name "+d[0]);if(-1!==this.captureNames.indexOf(d[1]))throw new SyntaxError("Cannot use same name for multiple groups "+d[0]);return this.captureNames.push(d[1]),this.hasNamedCapture=!0,"("}),{leadChar:"("}),O.addToken(/\((?!\?)/,(function(d,u,e){return-1!==e.indexOf("n")?"(?:":(this.captureNames.push(null),"(")}),{optionalFlags:"n",leadChar:"("}),u.default=O,d.exports=u.default},390:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){var u=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g,e=d.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/,u],"g",{conjunction:"or"});function a(d){var u=/^(?:\(\?:\))*\^/,e=/\$(?:\(\?:\))*$/;return u.test(d)&&e.test(d)&&e.test(d.replace(/\\[\s\S]/g,""))?d.replace(u,"").replace(e,""):d}function c(u,e){var a=e?"x":"";return d.isRegExp(u)?u.xregexp&&u.xregexp.captureNames?u:d(u.source,a):d(u,a)}function n(u){return u instanceof RegExp?u:d.escape(u)}function f(d,u,e){return d["subpattern"+e]=u,d}function t(d,u,e){return d+(u1?a-1:0),r=1;r"):r="(?:",p=b,""+r+l[f].pattern.replace(u,(function(d,u,e){if(u){if(t=l[f].names[b-p],++b,t)return"(?<"+t+">"}else if(e)return i=+e-1,l[f].names[i]?"\\k<"+l[f].names[i]+">":"\\"+(+e+p);return d}))+")"}if(c){if(t=g[D],h[++D]=++b,t)return"(?<"+t+">"}else if(n)return g[i=+n-1]?"\\k<"+g[i]+">":"\\"+h[+n];return d}));return d(_,t)}},d.exports=u.default},391:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){function u(d,u,e,a){return{name:d,value:u,start:e,end:a}}d.matchRecursive=function(e,a,c,n,f){f=f||{};var t=-1!==(n=n||"").indexOf("g"),r=-1!==n.indexOf("y"),i=n.replace(/y/g,""),l=f.escapeChar,s=f.valueNames,o=[],m=0,b=0,p=0,D=0,h=void 0,g=void 0,_=void 0,E=void 0,I=void 0;if(a=d(a,i),c=d(c,i),l){if(l.length>1)throw new Error("Cannot use more than one escape character");l=d.escape(l),I=new RegExp("(?:"+l+"[\\S\\s]|(?:(?!"+d.union([a,c],"",{conjunction:"or"}).source+")[^"+l+"])+)+",n.replace(/[^imu]+/g,""))}for(;;){if(l&&(p+=(d.exec(e,I,p,"sticky")||[""])[0].length),_=d.exec(e,a,p),E=d.exec(e,c,p),_&&E&&(_.index<=E.index?E=null:_=null),_||E)p=(b=(_||E).index)+(_||E)[0].length;else if(!m)break;if(r&&!m&&b>D)break;if(_)m||(h=b,g=p),++m;else{if(!E||!m)throw new Error("Unbalanced delimiter found in string");if(!--m&&(s?(s[0]&&h>D&&o.push(u(s[0],e.slice(D,h),D,h)),s[1]&&o.push(u(s[1],e.slice(h,g),h,g)),s[2]&&o.push(u(s[2],e.slice(g,b),g,b)),s[3]&&o.push(u(s[3],e.slice(b,p),b,p))):o.push(e.slice(g,b)),D=p,!t))break}b===p&&++p}return t&&!r&&s&&s[0]&&e.length>D&&o.push(u(s[0],e.slice(D),D,e.length)),o}},d.exports=u.default},392:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){var u={},e=d._dec,a=d._hex,c=d._pad4;function n(d){return d.replace(/[- _]+/g,"").toLowerCase()}function f(d){var u=/^\\[xu](.+)/.exec(d);return u?e(u[1]):d.charCodeAt("\\"===d[0]?1:0)}function t(e){var n,t,r;return u[e]["b!"]||(u[e]["b!"]=(n=u[e].bmp,t="",r=-1,d.forEach(n,/(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/,(function(d){var u=f(d[1]);u>r+1&&(t+="\\u"+c(a(r+1)),u>r+2&&(t+="-\\u"+c(a(u-1)))),r=f(d[2]||d[1])})),r<65535&&(t+="\\u"+c(a(r+1)),r<65534&&(t+="-\\uFFFF")),t))}function r(d,e){var a=e?"a!":"a=";return u[d][a]||(u[d][a]=function(d,e){var a=u[d],c="";return a.bmp&&!a.isBmpLast&&(c="["+a.bmp+"]"+(a.astral?"|":"")),a.astral&&(c+=a.astral),a.isBmpLast&&a.bmp&&(c+=(a.astral?"|":"")+"["+a.bmp+"]"),e?"(?:(?!"+c+")(?:[\ud800-\udbff][\udc00-\udfff]|[\0-\uffff]))":"(?:"+c+")"}(d,e))}d.addToken(/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/,(function(d,e,a){var c="P"===d[1]||!!d[2],f=-1!==a.indexOf("A"),i=n(d[4]||d[3]),l=u[i];if("P"===d[1]&&d[2])throw new SyntaxError("Invalid double negation "+d[0]);if(!u.hasOwnProperty(i))throw new SyntaxError("Unknown Unicode token "+d[0]);if(l.inverseOf){if(i=n(l.inverseOf),!u.hasOwnProperty(i))throw new ReferenceError("Unicode token missing data "+d[0]+" -> "+l.inverseOf);l=u[i],c=!c}if(!l.bmp&&!f)throw new SyntaxError("Astral mode required for Unicode token "+d[0]);if(f){if("class"===e)throw new SyntaxError("Astral mode does not support Unicode tokens within character classes");return r(i,c)}return"class"===e?c?t(i):l.bmp:(c?"[^":"[")+l.bmp+"]"}),{scope:"all",optionalFlags:"A",leadChar:"\\"}),d.addUnicodeData=function(e){for(var a=void 0,c=0;c\\x5E`\\x7C~\xa2-\xa6\xa8\xa9\xac\xae-\xb1\xb4\xb8\xd7\xf7\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u03f6\u0482\u058d-\u058f\u0606-\u0608\u060b\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u09f2\u09f3\u09fa\u09fb\u0af1\u0b70\u0bf3-\u0bfa\u0c7f\u0d4f\u0d79\u0e3f\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u17db\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u2044\u2052\u207a-\u207c\u208a-\u208c\u20a0-\u20be\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u2140-\u2144\u214a-\u214d\u214f\u218a\u218b\u2190-\u2307\u230c-\u2328\u232b-\u23fe\u2400-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u2767\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u309b\u309c\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua700-\ua716\ua720\ua721\ua789\ua78a\ua828-\ua82b\ua836-\ua839\uaa77-\uaa79\uab5b\ufb29\ufbb2-\ufbc1\ufdfc\ufdfd\ufe62\ufe64-\ufe66\ufe69\uff04\uff0b\uff1c-\uff1e\uff3e\uff40\uff5c\uff5e\uffe0-\uffe6\uffe8-\uffee\ufffc\ufffd",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9b\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|\ud805\udf3f|\ud81a[\udf3c-\udf3f\udf45]|\ud82f\udc9c|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\udde8\ude00-\ude41\ude45\udf00-\udf56]|\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|\ud83b[\udef0\udef1]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udfff]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]"},{name:"Sc",alias:"Currency_Symbol",bmp:"\\x24\xa2-\xa5\u058f\u060b\u09f2\u09f3\u09fb\u0af1\u0bf9\u0e3f\u17db\u20a0-\u20be\ua838\ufdfc\ufe69\uff04\uffe0\uffe1\uffe5\uffe6"},{name:"Sk",alias:"Modifier_Symbol",bmp:"\\x5E`\xa8\xaf\xb4\xb8\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384\u0385\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd\u1ffe\u309b\u309c\ua700-\ua716\ua720\ua721\ua789\ua78a\uab5b\ufbb2-\ufbc1\uff3e\uff40\uffe3",astral:"\ud83c[\udffb-\udfff]"},{name:"Sm",alias:"Math_Symbol",bmp:"\\x2B<->\\x7C~\xac\xb1\xd7\xf7\u03f6\u0606-\u0608\u2044\u2052\u207a-\u207c\u208a-\u208c\u2118\u2140-\u2144\u214b\u2190-\u2194\u219a\u219b\u21a0\u21a3\u21a6\u21ae\u21ce\u21cf\u21d2\u21d4\u21f4-\u22ff\u2320\u2321\u237c\u239b-\u23b3\u23dc-\u23e1\u25b7\u25c1\u25f8-\u25ff\u266f\u27c0-\u27c4\u27c7-\u27e5\u27f0-\u27ff\u2900-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2aff\u2b30-\u2b44\u2b47-\u2b4c\ufb29\ufe62\ufe64-\ufe66\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe9-\uffec",astral:"\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud83b[\udef0\udef1]"},{name:"So",alias:"Other_Symbol",bmp:"\xa6\xa9\xae\xb0\u0482\u058d\u058e\u060e\u060f\u06de\u06e9\u06fd\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce\u0fcf\u0fd5-\u0fd8\u109e\u109f\u1390-\u1399\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211e-\u2123\u2125\u2127\u2129\u212e\u213a\u213b\u214a\u214c\u214d\u214f\u218a\u218b\u2195-\u2199\u219c-\u219f\u21a1\u21a2\u21a4\u21a5\u21a7-\u21ad\u21af-\u21cd\u21d0\u21d1\u21d3\u21d5-\u21f3\u2300-\u2307\u230c-\u231f\u2322-\u2328\u232b-\u237b\u237d-\u239a\u23b4-\u23db\u23e2-\u23fe\u2400-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u25b6\u25b8-\u25c0\u25c2-\u25f7\u2600-\u266e\u2670-\u2767\u2794-\u27bf\u2800-\u28ff\u2b00-\u2b2f\u2b45\u2b46\u2b4d-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012\u3013\u3020\u3036\u3037\u303e\u303f\u3190\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ua836\ua837\ua839\uaa77-\uaa79\ufdfd\uffe4\uffe8\uffed\uffee\ufffc\ufffd",astral:"\ud800[\udd37-\udd3f\udd79-\udd89\udd8c-\udd8e\udd90-\udd9b\udda0\uddd0-\uddfc]|\ud802[\udc77\udc78\udec8]|\ud805\udf3f|\ud81a[\udf3c-\udf3f\udf45]|\ud82f\udc9c|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83\udd84\udd8c-\udda9\uddae-\udde8\ude00-\ude41\ude45\udf00-\udf56]|\ud836[\udc00-\uddff\ude37-\ude3a\ude6d-\ude74\ude76-\ude83\ude85\ude86]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udffa]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]"},{name:"Z",alias:"Separator",bmp:" \xa0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000"},{name:"Zl",alias:"Line_Separator",bmp:"\u2028"},{name:"Zp",alias:"Paragraph_Separator",bmp:"\u2029"},{name:"Zs",alias:"Space_Separator",bmp:" \xa0\u1680\u2000-\u200a\u202f\u205f\u3000"}])},d.exports=u.default},395:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){if(!d.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");var u=[{name:"ASCII",bmp:"\0-\x7f"},{name:"Alphabetic",bmp:"A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0345\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05b0-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0657\u0659-\u065f\u066e-\u06d3\u06d5-\u06dc\u06e1-\u06e8\u06ed-\u06ef\u06fa-\u06fc\u06ff\u0710-\u073f\u074d-\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0817\u081a-\u082c\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u08d4-\u08df\u08e3-\u08e9\u08f0-\u093b\u093d-\u094c\u094e-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd-\u09c4\u09c7\u09c8\u09cb\u09cc\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3e-\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd-\u0ac5\u0ac7-\u0ac9\u0acb\u0acc\u0ad0\u0ae0-\u0ae3\u0af9\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d-\u0b44\u0b47\u0b48\u0b4b\u0b4c\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcc\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4c\u0c55\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccc\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4c\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e46\u0e4d\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ecd\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f71-\u0f81\u0f88-\u0f97\u0f99-\u0fbc\u1000-\u1036\u1038\u103b-\u103f\u1050-\u1062\u1065-\u1068\u106e-\u1086\u108e\u109c\u109d\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\u135f\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17b3\u17b6-\u17c8\u17d7\u17dc\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u1938\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a61-\u1a74\u1aa7\u1b00-\u1b33\u1b35-\u1b43\u1b45-\u1b4b\u1b80-\u1ba9\u1bac-\u1baf\u1bba-\u1be5\u1be7-\u1bf1\u1c00-\u1c35\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1d00-\u1dbf\u1de7-\u1df4\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\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\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\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua674-\ua67b\ua67f-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua827\ua840-\ua873\ua880-\ua8c3\ua8c5\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua92a\ua930-\ua952\ua960-\ua97c\ua980-\ua9b2\ua9b4-\ua9bf\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a\uaa7e-\uaabe\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf5\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabea\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\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",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf30-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\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-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2]|\ud804[\udc00-\udc45\udc82-\udcb8\udcd0-\udce8\udd00-\udd32\udd50-\udd72\udd76\udd80-\uddbf\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude34\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udee8\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3d-\udf44\udf47\udf48\udf4b\udf4c\udf50\udf57\udf5d-\udf63]|\ud805[\udc00-\udc41\udc43-\udc45\udc47-\udc4a\udc80-\udcc1\udcc4\udcc5\udcc7\udd80-\uddb5\uddb8-\uddbe\uddd8-\udddd\ude00-\ude3e\ude40\ude44\ude80-\udeb5\udf00-\udf19\udf1d-\udf2a]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc3e\udc40\udc72-\udc8f\udc92-\udca7\udca9-\udcb6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|[\ud80c\ud81c-\ud820\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872][\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf93-\udf9f\udfe0]|\ud821[\udc00-\udfec]|\ud822[\udc00-\udef2]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9e]|\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]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd47]|\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]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]"},{name:"Any",isBmpLast:!0,bmp:"\0-\uffff",astral:"[\ud800-\udbff][\udc00-\udfff]"},{name:"Default_Ignorable_Code_Point",bmp:"\xad\u034f\u061c\u115f\u1160\u17b4\u17b5\u180b-\u180e\u200b-\u200f\u202a-\u202e\u2060-\u206f\u3164\ufe00-\ufe0f\ufeff\uffa0\ufff0-\ufff8",astral:"\ud82f[\udca0-\udca3]|\ud834[\udd73-\udd7a]|[\udb40-\udb43][\udc00-\udfff]"},{name:"Lowercase",bmp:"a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e-\u0180\u0183\u0185\u0188\u018c\u018d\u0192\u0195\u0199-\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01aa\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9\u01ba\u01bd-\u01bf\u01c6\u01c9\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef\u01f0\u01f3\u01f5\u01f9\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217\u0219\u021b\u021d\u021f\u0221\u0223\u0225\u0227\u0229\u022b\u022d\u022f\u0231\u0233-\u0239\u023c\u023f\u0240\u0242\u0247\u0249\u024b\u024d\u024f-\u0293\u0295-\u02b8\u02c0\u02c1\u02e0-\u02e4\u0345\u0371\u0373\u0377\u037a-\u037d\u0390\u03ac-\u03ce\u03d0\u03d1\u03d5-\u03d7\u03d9\u03db\u03dd\u03df\u03e1\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef-\u03f3\u03f5\u03f8\u03fb\u03fc\u0430-\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u048b\u048d\u048f\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce\u04cf\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ed\u04ef\u04f1\u04f3\u04f5\u04f7\u04f9\u04fb\u04fd\u04ff\u0501\u0503\u0505\u0507\u0509\u050b\u050d\u050f\u0511\u0513\u0515\u0517\u0519\u051b\u051d\u051f\u0521\u0523\u0525\u0527\u0529\u052b\u052d\u052f\u0561-\u0587\u13f8-\u13fd\u1c80-\u1c88\u1d00-\u1dbf\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95-\u1e9d\u1e9f\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9\u1efb\u1efd\u1eff-\u1f07\u1f10-\u1f15\u1f20-\u1f27\u1f30-\u1f37\u1f40-\u1f45\u1f50-\u1f57\u1f60-\u1f67\u1f70-\u1f7d\u1f80-\u1f87\u1f90-\u1f97\u1fa0-\u1fa7\u1fb0-\u1fb4\u1fb6\u1fb7\u1fbe\u1fc2-\u1fc4\u1fc6\u1fc7\u1fd0-\u1fd3\u1fd6\u1fd7\u1fe0-\u1fe7\u1ff2-\u1ff4\u1ff6\u1ff7\u2071\u207f\u2090-\u209c\u210a\u210e\u210f\u2113\u212f\u2134\u2139\u213c\u213d\u2146-\u2149\u214e\u2170-\u217f\u2184\u24d0-\u24e9\u2c30-\u2c5e\u2c61\u2c65\u2c66\u2c68\u2c6a\u2c6c\u2c71\u2c73\u2c74\u2c76-\u2c7d\u2c81\u2c83\u2c85\u2c87\u2c89\u2c8b\u2c8d\u2c8f\u2c91\u2c93\u2c95\u2c97\u2c99\u2c9b\u2c9d\u2c9f\u2ca1\u2ca3\u2ca5\u2ca7\u2ca9\u2cab\u2cad\u2caf\u2cb1\u2cb3\u2cb5\u2cb7\u2cb9\u2cbb\u2cbd\u2cbf\u2cc1\u2cc3\u2cc5\u2cc7\u2cc9\u2ccb\u2ccd\u2ccf\u2cd1\u2cd3\u2cd5\u2cd7\u2cd9\u2cdb\u2cdd\u2cdf\u2ce1\u2ce3\u2ce4\u2cec\u2cee\u2cf3\u2d00-\u2d25\u2d27\u2d2d\ua641\ua643\ua645\ua647\ua649\ua64b\ua64d\ua64f\ua651\ua653\ua655\ua657\ua659\ua65b\ua65d\ua65f\ua661\ua663\ua665\ua667\ua669\ua66b\ua66d\ua681\ua683\ua685\ua687\ua689\ua68b\ua68d\ua68f\ua691\ua693\ua695\ua697\ua699\ua69b-\ua69d\ua723\ua725\ua727\ua729\ua72b\ua72d\ua72f-\ua731\ua733\ua735\ua737\ua739\ua73b\ua73d\ua73f\ua741\ua743\ua745\ua747\ua749\ua74b\ua74d\ua74f\ua751\ua753\ua755\ua757\ua759\ua75b\ua75d\ua75f\ua761\ua763\ua765\ua767\ua769\ua76b\ua76d\ua76f-\ua778\ua77a\ua77c\ua77f\ua781\ua783\ua785\ua787\ua78c\ua78e\ua791\ua793-\ua795\ua797\ua799\ua79b\ua79d\ua79f\ua7a1\ua7a3\ua7a5\ua7a7\ua7a9\ua7b5\ua7b7\ua7f8-\ua7fa\uab30-\uab5a\uab5c-\uab65\uab70-\uabbf\ufb00-\ufb06\ufb13-\ufb17\uff41-\uff5a",astral:"\ud801[\udc28-\udc4f\udcd8-\udcfb]|\ud803[\udcc0-\udcf2]|\ud806[\udcc0-\udcdf]|\ud835[\udc1a-\udc33\udc4e-\udc54\udc56-\udc67\udc82-\udc9b\udcb6-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udccf\udcea-\udd03\udd1e-\udd37\udd52-\udd6b\udd86-\udd9f\uddba-\uddd3\uddee-\ude07\ude22-\ude3b\ude56-\ude6f\ude8a-\udea5\udec2-\udeda\udedc-\udee1\udefc-\udf14\udf16-\udf1b\udf36-\udf4e\udf50-\udf55\udf70-\udf88\udf8a-\udf8f\udfaa-\udfc2\udfc4-\udfc9\udfcb]|\ud83a[\udd22-\udd43]"},{name:"Noncharacter_Code_Point",bmp:"\ufdd0-\ufdef\ufffe\uffff",astral:"[\ud83f\ud87f\ud8bf\ud8ff\ud93f\ud97f\ud9bf\ud9ff\uda3f\uda7f\udabf\udaff\udb3f\udb7f\udbbf\udbff][\udffe\udfff]"},{name:"Uppercase",bmp:"A-Z\xc0-\xd6\xd8-\xde\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u0179\u017b\u017d\u0181\u0182\u0184\u0186\u0187\u0189-\u018b\u018e-\u0191\u0193\u0194\u0196-\u0198\u019c\u019d\u019f\u01a0\u01a2\u01a4\u01a6\u01a7\u01a9\u01ac\u01ae\u01af\u01b1-\u01b3\u01b5\u01b7\u01b8\u01bc\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u023a\u023b\u023d\u023e\u0241\u0243-\u0246\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u037f\u0386\u0388-\u038a\u038c\u038e\u038f\u0391-\u03a1\u03a3-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03f9\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0\u04c1\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0524\u0526\u0528\u052a\u052c\u052e\u0531-\u0556\u10a0-\u10c5\u10c7\u10cd\u13a0-\u13f5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59\u1f5b\u1f5d\u1f5f\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133\u213e\u213f\u2145\u2160-\u216f\u2183\u24b6-\u24cf\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67\u2c69\u2c6b\u2c6d-\u2c70\u2c72\u2c75\u2c7e-\u2c80\u2c82\u2c84\u2c86\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\u2ceb\u2ced\u2cf2\ua640\ua642\ua644\ua646\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a\ua65c\ua65e\ua660\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696\ua698\ua69a\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b\ua77d\ua77e\ua780\ua782\ua784\ua786\ua78b\ua78d\ua790\ua792\ua796\ua798\ua79a\ua79c\ua79e\ua7a0\ua7a2\ua7a4\ua7a6\ua7a8\ua7aa-\ua7ae\ua7b0-\ua7b4\ua7b6\uff21-\uff3a",astral:"\ud801[\udc00-\udc27\udcb0-\udcd3]|\ud803[\udc80-\udcb2]|\ud806[\udca0-\udcbf]|\ud835[\udc00-\udc19\udc34-\udc4d\udc68-\udc81\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb5\udcd0-\udce9\udd04\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd38\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd6c-\udd85\udda0-\uddb9\uddd4-\udded\ude08-\ude21\ude3c-\ude55\ude70-\ude89\udea8-\udec0\udee2-\udefa\udf1c-\udf34\udf56-\udf6e\udf90-\udfa8\udfca]|\ud83a[\udd00-\udd21]|\ud83c[\udd30-\udd49\udd50-\udd69\udd70-\udd89]"},{name:"White_Space",bmp:"\t-\r \x85\xa0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000"}];u.push({name:"Assigned",inverseOf:"Cn"}),d.addUnicodeData(u)},d.exports=u.default},396:function(d,u,e){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u.default=function(d){if(!d.addUnicodeData)throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");d.addUnicodeData([{name:"Adlam",astral:"\ud83a[\udd00-\udd4a\udd50-\udd59\udd5e\udd5f]"},{name:"Ahom",astral:"\ud805[\udf00-\udf19\udf1d-\udf2b\udf30-\udf3f]"},{name:"Anatolian_Hieroglyphs",astral:"\ud811[\udc00-\ude46]"},{name:"Arabic",bmp:"\u0600-\u0604\u0606-\u060b\u060d-\u061a\u061e\u0620-\u063f\u0641-\u064a\u0656-\u066f\u0671-\u06dc\u06de-\u06ff\u0750-\u077f\u08a0-\u08b4\u08b6-\u08bd\u08d4-\u08e1\u08e3-\u08ff\ufb50-\ufbc1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfd\ufe70-\ufe74\ufe76-\ufefc",astral:"\ud803[\ude60-\ude7e]|\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\udef0\udef1]"},{name:"Armenian",bmp:"\u0531-\u0556\u0559-\u055f\u0561-\u0587\u058a\u058d-\u058f\ufb13-\ufb17"},{name:"Avestan",astral:"\ud802[\udf00-\udf35\udf39-\udf3f]"},{name:"Balinese",bmp:"\u1b00-\u1b4b\u1b50-\u1b7c"},{name:"Bamum",bmp:"\ua6a0-\ua6f7",astral:"\ud81a[\udc00-\ude38]"},{name:"Bassa_Vah",astral:"\ud81a[\uded0-\udeed\udef0-\udef5]"},{name:"Batak",bmp:"\u1bc0-\u1bf3\u1bfc-\u1bff"},{name:"Bengali",bmp:"\u0980-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09fb"},{name:"Bhaiksuki",astral:"\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc45\udc50-\udc6c]"},{name:"Bopomofo",bmp:"\u02ea\u02eb\u3105-\u312d\u31a0-\u31ba"},{name:"Brahmi",astral:"\ud804[\udc00-\udc4d\udc52-\udc6f\udc7f]"},{name:"Braille",bmp:"\u2800-\u28ff"},{name:"Buginese",bmp:"\u1a00-\u1a1b\u1a1e\u1a1f"},{name:"Buhid",bmp:"\u1740-\u1753"},{name:"Canadian_Aboriginal",bmp:"\u1400-\u167f\u18b0-\u18f5"},{name:"Carian",astral:"\ud800[\udea0-\uded0]"},{name:"Caucasian_Albanian",astral:"\ud801[\udd30-\udd63\udd6f]"},{name:"Chakma",astral:"\ud804[\udd00-\udd34\udd36-\udd43]"},{name:"Cham",bmp:"\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa5c-\uaa5f"},{name:"Cherokee",bmp:"\u13a0-\u13f5\u13f8-\u13fd\uab70-\uabbf"},{name:"Common",bmp:"\0-@\\x5B-`\\x7B-\xa9\xab-\xb9\xbb-\xbf\xd7\xf7\u02b9-\u02df\u02e5-\u02e9\u02ec-\u02ff\u0374\u037e\u0385\u0387\u0589\u0605\u060c\u061b\u061c\u061f\u0640\u06dd\u08e2\u0964\u0965\u0e3f\u0fd5-\u0fd8\u10fb\u16eb-\u16ed\u1735\u1736\u1802\u1803\u1805\u1cd3\u1ce1\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u2000-\u200b\u200e-\u2064\u2066-\u2070\u2074-\u207e\u2080-\u208e\u20a0-\u20be\u2100-\u2125\u2127-\u2129\u212c-\u2131\u2133-\u214d\u214f-\u215f\u2189-\u218b\u2190-\u23fe\u2400-\u2426\u2440-\u244a\u2460-\u27ff\u2900-\u2b73\u2b76-\u2b95\u2b98-\u2bb9\u2bbd-\u2bc8\u2bca-\u2bd1\u2bec-\u2bef\u2e00-\u2e44\u2ff0-\u2ffb\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303c-\u303f\u309b\u309c\u30a0\u30fb\u30fc\u3190-\u319f\u31c0-\u31e3\u3220-\u325f\u327f-\u32cf\u3358-\u33ff\u4dc0-\u4dff\ua700-\ua721\ua788-\ua78a\ua830-\ua839\ua92e\ua9cf\uab5b\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\ufeff\uff01-\uff20\uff3b-\uff40\uff5b-\uff65\uff70\uff9e\uff9f\uffe0-\uffe6\uffe8-\uffee\ufff9-\ufffd",astral:"\ud800[\udd00-\udd02\udd07-\udd33\udd37-\udd3f\udd90-\udd9b\uddd0-\uddfc\udee1-\udefb]|\ud82f[\udca0-\udca3]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd66\udd6a-\udd7a\udd83\udd84\udd8c-\udda9\uddae-\udde8\udf00-\udf56\udf60-\udf71]|\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-\udfcb\udfce-\udfff]|\ud83c[\udc00-\udc2b\udc30-\udc93\udca0-\udcae\udcb1-\udcbf\udcc1-\udccf\udcd1-\udcf5\udd00-\udd0c\udd10-\udd2e\udd30-\udd6b\udd70-\uddac\udde6-\uddff\ude01\ude02\ude10-\ude3b\ude40-\ude48\ude50\ude51\udf00-\udfff]|\ud83d[\udc00-\uded2\udee0-\udeec\udef0-\udef6\udf00-\udf73\udf80-\udfd4]|\ud83e[\udc00-\udc0b\udc10-\udc47\udc50-\udc59\udc60-\udc87\udc90-\udcad\udd10-\udd1e\udd20-\udd27\udd30\udd33-\udd3e\udd40-\udd4b\udd50-\udd5e\udd80-\udd91\uddc0]|\udb40[\udc01\udc20-\udc7f]"},{name:"Coptic",bmp:"\u03e2-\u03ef\u2c80-\u2cf3\u2cf9-\u2cff"},{name:"Cuneiform",astral:"\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc70-\udc74\udc80-\udd43]"},{name:"Cypriot",astral:"\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f]"},{name:"Cyrillic",bmp:"\u0400-\u0484\u0487-\u052f\u1c80-\u1c88\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f"},{name:"Deseret",astral:"\ud801[\udc00-\udc4f]"},{name:"Devanagari",bmp:"\u0900-\u0950\u0953-\u0963\u0966-\u097f\ua8e0-\ua8fd"},{name:"Duployan",astral:"\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9c-\udc9f]"},{name:"Egyptian_Hieroglyphs",astral:"\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]"},{name:"Elbasan",astral:"\ud801[\udd00-\udd27]"},{name:"Ethiopic",bmp:"\u1200-\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\u135d-\u137c\u1380-\u1399\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e"},{name:"Georgian",bmp:"\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u10ff\u2d00-\u2d25\u2d27\u2d2d"},{name:"Glagolitic",bmp:"\u2c00-\u2c2e\u2c30-\u2c5e",astral:"\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23\udc24\udc26-\udc2a]"},{name:"Gothic",astral:"\ud800[\udf30-\udf4a]"},{name:"Grantha",astral:"\ud804[\udf00-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]"},{name:"Greek",bmp:"\u0370-\u0373\u0375-\u0377\u037a-\u037d\u037f\u0384\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03e1\u03f0-\u03ff\u1d26-\u1d2a\u1d5d-\u1d61\u1d66-\u1d6a\u1dbf\u1f00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fc4\u1fc6-\u1fd3\u1fd6-\u1fdb\u1fdd-\u1fef\u1ff2-\u1ff4\u1ff6-\u1ffe\u2126\uab65",astral:"\ud800[\udd40-\udd8e\udda0]|\ud834[\ude00-\ude45]"},{name:"Gujarati",bmp:"\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0af1\u0af9"},{name:"Gurmukhi",bmp:"\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75"},{name:"Han",bmp:"\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u3005\u3007\u3021-\u3029\u3038-\u303b\u3400-\u4db5\u4e00-\u9fd5\uf900-\ufa6d\ufa70-\ufad9",astral:"[\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]"},{name:"Hangul",bmp:"\u1100-\u11ff\u302e\u302f\u3131-\u318e\u3200-\u321e\u3260-\u327e\ua960-\ua97c\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"},{name:"Hanunoo",bmp:"\u1720-\u1734"},{name:"Hatran",astral:"\ud802[\udce0-\udcf2\udcf4\udcf5\udcfb-\udcff]"},{name:"Hebrew",bmp:"\u0591-\u05c7\u05d0-\u05ea\u05f0-\u05f4\ufb1d-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufb4f"},{name:"Hiragana",bmp:"\u3041-\u3096\u309d-\u309f",astral:"\ud82c\udc01|\ud83c\ude00"},{name:"Imperial_Aramaic",astral:"\ud802[\udc40-\udc55\udc57-\udc5f]"},{name:"Inherited",bmp:"\u0300-\u036f\u0485\u0486\u064b-\u0655\u0670\u0951\u0952\u1ab0-\u1abe\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u200c\u200d\u20d0-\u20f0\u302a-\u302d\u3099\u309a\ufe00-\ufe0f\ufe20-\ufe2d",astral:"\ud800[\uddfd\udee0]|\ud834[\udd67-\udd69\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad]|\udb40[\udd00-\uddef]"},{name:"Inscriptional_Pahlavi",astral:"\ud802[\udf60-\udf72\udf78-\udf7f]"},{name:"Inscriptional_Parthian",astral:"\ud802[\udf40-\udf55\udf58-\udf5f]"},{name:"Javanese",bmp:"\ua980-\ua9cd\ua9d0-\ua9d9\ua9de\ua9df"},{name:"Kaithi",astral:"\ud804[\udc80-\udcc1]"},{name:"Kannada",bmp:"\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2"},{name:"Katakana",bmp:"\u30a1-\u30fa\u30fd-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff6f\uff71-\uff9d",astral:"\ud82c\udc00"},{name:"Kayah_Li",bmp:"\ua900-\ua92d\ua92f"},{name:"Kharoshthi",astral:"\ud802[\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f-\ude47\ude50-\ude58]"},{name:"Khmer",bmp:"\u1780-\u17dd\u17e0-\u17e9\u17f0-\u17f9\u19e0-\u19ff"},{name:"Khojki",astral:"\ud804[\ude00-\ude11\ude13-\ude3e]"},{name:"Khudawadi",astral:"\ud804[\udeb0-\udeea\udef0-\udef9]"},{name:"Lao",bmp:"\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf"},{name:"Latin",bmp:"A-Za-z\xaa\xba\xc0-\xd6\xd8-\xf6\xf8-\u02b8\u02e0-\u02e4\u1d00-\u1d25\u1d2c-\u1d5c\u1d62-\u1d65\u1d6b-\u1d77\u1d79-\u1dbe\u1e00-\u1eff\u2071\u207f\u2090-\u209c\u212a\u212b\u2132\u214e\u2160-\u2188\u2c60-\u2c7f\ua722-\ua787\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua7ff\uab30-\uab5a\uab5c-\uab64\ufb00-\ufb06\uff21-\uff3a\uff41-\uff5a"},{name:"Lepcha",bmp:"\u1c00-\u1c37\u1c3b-\u1c49\u1c4d-\u1c4f"},{name:"Limbu",bmp:"\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1940\u1944-\u194f"},{name:"Linear_A",astral:"\ud801[\ude00-\udf36\udf40-\udf55\udf60-\udf67]"},{name:"Linear_B",astral:"\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa]"},{name:"Lisu",bmp:"\ua4d0-\ua4ff"},{name:"Lycian",astral:"\ud800[\ude80-\ude9c]"},{name:"Lydian",astral:"\ud802[\udd20-\udd39\udd3f]"},{name:"Mahajani",astral:"\ud804[\udd50-\udd76]"},{name:"Malayalam",bmp:"\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4f\u0d54-\u0d63\u0d66-\u0d7f"},{name:"Mandaic",bmp:"\u0840-\u085b\u085e"},{name:"Manichaean",astral:"\ud802[\udec0-\udee6\udeeb-\udef6]"},{name:"Marchen",astral:"\ud807[\udc70-\udc8f\udc92-\udca7\udca9-\udcb6]"},{name:"Meetei_Mayek",bmp:"\uaae0-\uaaf6\uabc0-\uabed\uabf0-\uabf9"},{name:"Mende_Kikakui",astral:"\ud83a[\udc00-\udcc4\udcc7-\udcd6]"},{name:"Meroitic_Cursive",astral:"\ud802[\udda0-\uddb7\uddbc-\uddcf\uddd2-\uddff]"},{name:"Meroitic_Hieroglyphs",astral:"\ud802[\udd80-\udd9f]"},{name:"Miao",astral:"\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]"},{name:"Modi",astral:"\ud805[\ude00-\ude44\ude50-\ude59]"},{name:"Mongolian",bmp:"\u1800\u1801\u1804\u1806-\u180e\u1810-\u1819\u1820-\u1877\u1880-\u18aa",astral:"\ud805[\ude60-\ude6c]"},{name:"Mro",astral:"\ud81a[\ude40-\ude5e\ude60-\ude69\ude6e\ude6f]"},{name:"Multani",astral:"\ud804[\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea9]"},{name:"Myanmar",bmp:"\u1000-\u109f\ua9e0-\ua9fe\uaa60-\uaa7f"},{name:"Nabataean",astral:"\ud802[\udc80-\udc9e\udca7-\udcaf]"},{name:"New_Tai_Lue",bmp:"\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u19de\u19df"},{name:"Newa",astral:"\ud805[\udc00-\udc59\udc5b\udc5d]"},{name:"Nko",bmp:"\u07c0-\u07fa"},{name:"Ogham",bmp:"\u1680-\u169c"},{name:"Ol_Chiki",bmp:"\u1c50-\u1c7f"},{name:"Old_Hungarian",astral:"\ud803[\udc80-\udcb2\udcc0-\udcf2\udcfa-\udcff]"},{name:"Old_Italic",astral:"\ud800[\udf00-\udf23]"},{name:"Old_North_Arabian",astral:"\ud802[\ude80-\ude9f]"},{name:"Old_Permic",astral:"\ud800[\udf50-\udf7a]"},{name:"Old_Persian",astral:"\ud800[\udfa0-\udfc3\udfc8-\udfd5]"},{name:"Old_South_Arabian",astral:"\ud802[\ude60-\ude7f]"},{name:"Old_Turkic",astral:"\ud803[\udc00-\udc48]"},{name:"Oriya",bmp:"\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b77"},{name:"Osage",astral:"\ud801[\udcb0-\udcd3\udcd8-\udcfb]"},{name:"Osmanya",astral:"\ud801[\udc80-\udc9d\udca0-\udca9]"},{name:"Pahawh_Hmong",astral:"\ud81a[\udf00-\udf45\udf50-\udf59\udf5b-\udf61\udf63-\udf77\udf7d-\udf8f]"},{name:"Palmyrene",astral:"\ud802[\udc60-\udc7f]"},{name:"Pau_Cin_Hau",astral:"\ud806[\udec0-\udef8]"},{name:"Phags_Pa",bmp:"\ua840-\ua877"},{name:"Phoenician",astral:"\ud802[\udd00-\udd1b\udd1f]"},{name:"Psalter_Pahlavi",astral:"\ud802[\udf80-\udf91\udf99-\udf9c\udfa9-\udfaf]"},{name:"Rejang",bmp:"\ua930-\ua953\ua95f"},{name:"Runic",bmp:"\u16a0-\u16ea\u16ee-\u16f8"},{name:"Samaritan",bmp:"\u0800-\u082d\u0830-\u083e"},{name:"Saurashtra",bmp:"\ua880-\ua8c5\ua8ce-\ua8d9"},{name:"Sharada",astral:"\ud804[\udd80-\uddcd\uddd0-\udddf]"},{name:"Shavian",astral:"\ud801[\udc50-\udc7f]"},{name:"Siddham",astral:"\ud805[\udd80-\uddb5\uddb8-\udddd]"},{name:"SignWriting",astral:"\ud836[\udc00-\ude8b\ude9b-\ude9f\udea1-\udeaf]"},{name:"Sinhala",bmp:"\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df4",astral:"\ud804[\udde1-\uddf4]"},{name:"Sora_Sompeng",astral:"\ud804[\udcd0-\udce8\udcf0-\udcf9]"},{name:"Sundanese",bmp:"\u1b80-\u1bbf\u1cc0-\u1cc7"},{name:"Syloti_Nagri",bmp:"\ua800-\ua82b"},{name:"Syriac",bmp:"\u0700-\u070d\u070f-\u074a\u074d-\u074f"},{name:"Tagalog",bmp:"\u1700-\u170c\u170e-\u1714"},{name:"Tagbanwa",bmp:"\u1760-\u176c\u176e-\u1770\u1772\u1773"},{name:"Tai_Le",bmp:"\u1950-\u196d\u1970-\u1974"},{name:"Tai_Tham",bmp:"\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa0-\u1aad"},{name:"Tai_Viet",bmp:"\uaa80-\uaac2\uaadb-\uaadf"},{name:"Takri",astral:"\ud805[\ude80-\udeb7\udec0-\udec9]"},{name:"Tamil",bmp:"\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bfa"},{name:"Tangut",astral:"\ud81b\udfe0|[\ud81c-\ud820][\udc00-\udfff]|\ud821[\udc00-\udfec]|\ud822[\udc00-\udef2]"},{name:"Telugu",bmp:"\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c78-\u0c7f"},{name:"Thaana",bmp:"\u0780-\u07b1"},{name:"Thai",bmp:"\u0e01-\u0e3a\u0e40-\u0e5b"},{name:"Tibetan",bmp:"\u0f00-\u0f47\u0f49-\u0f6c\u0f71-\u0f97\u0f99-\u0fbc\u0fbe-\u0fcc\u0fce-\u0fd4\u0fd9\u0fda"},{name:"Tifinagh",bmp:"\u2d30-\u2d67\u2d6f\u2d70\u2d7f"},{name:"Tirhuta",astral:"\ud805[\udc80-\udcc7\udcd0-\udcd9]"},{name:"Ugaritic",astral:"\ud800[\udf80-\udf9d\udf9f]"},{name:"Vai",bmp:"\ua500-\ua62b"},{name:"Warang_Citi",astral:"\ud806[\udca0-\udcf2\udcff]"},{name:"Yi",bmp:"\ua000-\ua48c\ua490-\ua4c6"}])},d.exports=u.default}}]); \ No newline at end of file diff --git a/9c0c4329.494beb3e.js.LICENSE.txt b/9c0c4329.0694b22c.js.LICENSE.txt similarity index 100% rename from 9c0c4329.494beb3e.js.LICENSE.txt rename to 9c0c4329.0694b22c.js.LICENSE.txt diff --git a/a6aa9e1f.7b3149f2.js b/a6aa9e1f.1da6842a.js similarity index 99% rename from a6aa9e1f.7b3149f2.js rename to a6aa9e1f.1da6842a.js index 3cd69c578..4a159ae0b 100644 --- a/a6aa9e1f.7b3149f2.js +++ b/a6aa9e1f.1da6842a.js @@ -1,2 +1,2 @@ -/*! For license information please see a6aa9e1f.7b3149f2.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{263:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),u=a(329),l=a(268);var i=function(e){var t=e.metadata,a=t.previousPage,n=t.nextPage;return r.a.createElement("nav",{className:"pagination-nav"},r.a.createElement("div",{className:"pagination-nav__item"},a&&r.a.createElement(l.a,{className:"pagination-nav__link",to:a},r.a.createElement("h4",{className:"pagination-nav__link--label"},"\xab Newer Entries"))),r.a.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},n&&r.a.createElement(l.a,{className:"pagination-nav__link",to:n},r.a.createElement("h4",{className:"pagination-nav__link--label"},"Older Entries \xbb"))))},c=a(328),o=a(273),s=a(275),D=a(267),m=a(332);a(220);t.default=function(e){var t=e.metadata,a=e.items,n=Object(D.a)().siteConfig,d=(void 0===n?{title:siteTitle}:n).customFields.metadata.post_tags,E=Object(s.a)(d,"blog"),g=(E.filter((function(e){return"type"==e.category})),E.filter((function(e){return"domain"==e.category})),"/"===t.permalink?siteTitle:"Blog");return Object(m.b)(),r.a.createElement(o.a,{title:g,description:"gnet blog posts, articles, and tips from the gnet core team."},r.a.createElement("div",{className:"blog-list container"},r.a.createElement("div",{className:"blog-list--filters"},r.a.createElement("a",{href:"/blog/rss.xml",style:{float:"right",fontSize:"1.5em",marginTop:"0px",marginLeft:"-30px",width:"30px"}},r.a.createElement("i",{className:"feather icon-rss"})),r.a.createElement("h1",null,"The gnet Blog"),r.a.createElement("p",null,"gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go, created by ",r.a.createElement(l.a,{to:"https://github.com/panjf2000"},"Andy Pan"),"."),r.a.createElement("div",{className:"margin-vert--lg"},r.a.createElement(c.a,{github:!1,size:"s",inline:!0,style:"highlight"})),r.a.createElement("p",{className:"margin-vert--sm"},"Looking for product updates & announcements?"),r.a.createElement("p",null,r.a.createElement(l.a,{to:"/highlights/"},r.a.createElement("i",{className:"feather icon-gift"})," Check out the highlights section"))),r.a.createElement("div",{className:"blog-list--items"},a.map((function(e){var t=e.content;return r.a.createElement(u.a,{key:t.metadata.permalink,frontMatter:t.frontMatter,metadata:t.metadata,truncated:t.metadata.truncated},r.a.createElement(t,null))})),r.a.createElement(i,{metadata:t}))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return D})),a.d(t,"b",(function(){return E}));var n=a(0),r=a.n(n);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(L,{alt:o.alt,url:s})):r.a.createElement(L,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),R=a(291),z=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,g=e.image,f=e.keywords,p=(e.permalink,e.version),h=D?D+" | "+i:i,b=g||c,v=o+Object(C.a)(b),F=Object(C.a)(n),y=Object(z.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),h&&r.a.createElement("title",null,h),h&&r.a.createElement("meta",{property:"og:title",content:h}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+h}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(H,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,g=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:g.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:g.github,target:"_blank",rel:o},g.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:g.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),g=e[d+"Day"](),f=e[d+"Month"](),p=e[d+"FullYear"](),h=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),w={d:E,dd:o(E),ddd:c.i18n.dayNames[g],dddd:c.i18n.dayNames[g+7],m:f+1,mm:o(f+1),mmm:c.i18n.monthNames[f],mmmm:c.i18n.monthNames[f+12],yy:String(p).slice(2),yyyy:p,h:h%12||12,hh:o(h%12||12),H:h,HH:o(h),M:b,MM:o(b),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:h<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:h<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:h<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:h<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in w?w[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(O=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return k.current&&(e=new i.a(k.current,{target:function(){return w.current}})),function(){e&&e.destroy()}}),[k.current,w.current]);var S=a&&a.replace(/language-/,"");!S&&s.defaultLanguage&&(S=s.defaultLanguage);var x=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,O&&u.a.createElement("div",{style:l,className:h.a.codeBlockTitle},O),u.a.createElement("div",{className:h.a.codeBlockContent},u.a.createElement("button",{ref:k,type:"button","aria-label":"Copy code to clipboard",className:D()(h.a.copyButton,(t={},t[h.a.copyButtonWithTitle]=O,t)),onClick:x},p?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,h.a.codeBlock,(a={},a[h.a.codeBlockWithTitle]=O,a))},u.a.createElement("div",{ref:w,className:h.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return _.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,i=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?i((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&i((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),i=(a(299),a(265),a(293)),c=a(266),o=a.n(c),s=a(294),D=a.n(s),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,c=(e.truncated,e.isBlogPostPage,n.date),s=n.description,d=n.permalink,g=n.tags,f=a.author_github,p=a.title,h=E()(t.toString()),b=new Date(Date.parse(c)),v=Object(m.a)(g,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,p),r.a.createElement("div",{className:"subtitle"},s),r.a.createElement(u.a,{github:f,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:b.toISOString()},D()(b,"mmm dS, yyyy"))," / ",h.text),rel:"author"}),r.a.createElement(i.a,{colorProfile:"blog",tags:g})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,i=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[i]);)i--;for(r=l;r<=i;){for(;r<=i&&!a(e[r]);r++);for(u++;r<=i&&a(e[r]);r++);}var c=u/t.wordsPerMinute,o=60*c*1e3;return{text:Math.ceil(c.toFixed(2))+" min read",minutes:c,time:o,words:u}}},332:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),l=Math.ceil(u/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),l<30&&(!i||i=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(B,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement(L,{alt:o.alt,url:s})):r.a.createElement(L,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:x.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},I=a(290),R=a(291),z=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,g=e.image,f=e.keywords,p=(e.permalink,e.version),h=D?D+" | "+i:i,b=g||c,v=o+Object(C.a)(b),F=Object(C.a)(n),y=Object(z.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(I.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),h&&r.a.createElement("title",null,h),h&&r.a.createElement("meta",{property:"og:title",content:h}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),p&&r.a.createElement("meta",{name:"docsearch:version",content:p}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),b&&r.a.createElement("meta",{property:"og:image",content:v}),b&&r.a.createElement("meta",{property:"twitter:image",content:v}),b&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+h}),b&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),b&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(H,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,g=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:g.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:g.github,target:"_blank",rel:o},g.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:g.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),g=e[d+"Day"](),f=e[d+"Month"](),p=e[d+"FullYear"](),h=e[d+"Hours"](),b=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),w={d:E,dd:o(E),ddd:c.i18n.dayNames[g],dddd:c.i18n.dayNames[g+7],m:f+1,mm:o(f+1),mmm:c.i18n.monthNames[f],mmmm:c.i18n.monthNames[f+12],yy:String(p).slice(2),yyyy:p,h:h%12||12,hh:o(h%12||12),H:h,HH:o(h),M:b,MM:o(b),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:h<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:h<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:h<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:h<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in w?w[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(O=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return k.current&&(e=new i.a(k.current,{target:function(){return w.current}})),function(){e&&e.destroy()}}),[k.current,w.current]);var S=a&&a.replace(/language-/,"");!S&&s.defaultLanguage&&(S=s.defaultLanguage);var x=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:S}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,O&&u.a.createElement("div",{style:l,className:h.a.codeBlockTitle},O),u.a.createElement("div",{className:h.a.codeBlockContent},u.a.createElement("button",{ref:k,type:"button","aria-label":"Copy code to clipboard",className:D()(h.a.copyButton,(t={},t[h.a.copyButtonWithTitle]=O,t)),onClick:x},p?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,h.a.codeBlock,(a={},a[h.a.codeBlockWithTitle]=O,a))},u.a.createElement("div",{ref:w,className:h.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return _.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,i=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?i((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&i((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),i=(a(299),a(265),a(293)),c=a(266),o=a.n(c),s=a(294),D=a.n(s),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,c=(e.truncated,e.isBlogPostPage,n.date),s=n.description,d=n.permalink,g=n.tags,f=a.author_github,p=a.title,h=E()(t.toString()),b=new Date(Date.parse(c)),v=Object(m.a)(g,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,p),r.a.createElement("div",{className:"subtitle"},s),r.a.createElement(u.a,{github:f,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:b.toISOString()},D()(b,"mmm dS, yyyy"))," / ",h.text),rel:"author"}),r.a.createElement(i.a,{colorProfile:"blog",tags:g})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,i=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[i]);)i--;for(r=l;r<=i;){for(;r<=i&&!a(e[r]);r++);for(u++;r<=i&&a(e[r]);r++);}var c=u/t.wordsPerMinute,o=60*c*1e3;return{text:Math.ceil(c.toFixed(2))+" min read",minutes:c,time:o,words:u}}},332:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),l=Math.ceil(u/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),l<30&&(!i||i - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ / 4 min read

官宣 gnet v1.0.0

最快的 Go 网络框架 gnet 来啦!

今天,gnet v1.0.0 正式版本发布,享受这个高性能的网络框架吧!

gnet

📖 简介

gnet 是一个基于事件驱动的高性能和轻量级网络框架。它直接使用 epollkqueue 系统调用而非标准 Go 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:nettylibuv,这也使得 gnet 达到了一个远超 Go net 的性能表现。

gnet 设计开发的初衷不是为了取代 Go 的标准网络库:net,而是为了创造出一个类似于 RedisHaproxy 能高效处理网络包的 Go 语言网络服务器框架。

gnet 的卖点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层(TCP/UDP/Unix Domain Socket)网络框架,开发者可以使用 gnet 来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络应用:比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。

gnet 衍生自另一个项目:evio,但拥有更丰富的功能特性,且性能远胜之。

🚀 功能

  • 高性能 的基于多线程/Go程网络模型的 event-loop 事件驱动
  • 内置 Round-Robin 轮询负载均衡算法
  • 内置 goroutine 池,由开源库 ants 提供支持
  • 内置 bytes 内存池,由开源库 bytebufferpool 提供支持
  • 简洁的 APIs
  • 基于 Ring-Buffer 的高效内存利用
  • 支持多种网络协议/IPC 机制:TCP、UDP 和 Unix Domain Socket
  • 支持两种事件驱动机制:Linux 里的 epoll 以及 FreeBSD 里的 kqueue
  • 支持异步写操作
  • 灵活的事件定时器
  • SO_REUSEPORT 端口重用
  • 内置多种编解码器,支持对 TCP 数据流分包:LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec 和 LengthFieldBasedFrameCodec,参考自 netty codec,而且支持自定制编解码器
  • 支持 Windows 平台,基于 IOCP 事件驱动机制 Go 标准网络库
  • 加入更多的负载均衡算法:随机、最少连接、一致性哈希等等
  • 支持 TLS
  • 实现 gnet 客户端

💡 核心设计

多线程/Go程网络模型

主从多 Reactors

gnet 重新设计开发了一个新内置的多线程/Go程网络模型:『主从多 Reactors』,这也是 netty 默认的多线程网络模型,下面是这个模型的原理图:

multi_reactor

它的运行流程如下面的时序图:

reactor

主从多 Reactors + 线程/Go程池

你可能会问一个问题:如果我的业务逻辑是阻塞的,那么在 EventHandler.React 注册方法里的逻辑也会阻塞,从而导致阻塞 event-loop 线程,这时候怎么办?

正如你所知,基于 gnet 编写你的网络服务器有一条最重要的原则:永远不能让你业务逻辑(一般写在 EventHandler.React 里)阻塞 event-loop 线程,这也是 netty 的一条最重要的原则,否则的话将会极大地降低服务器的吞吐量。

我的回答是,基于gnet 的另一种多线程/Go程网络模型:『带线程/Go程池的主从多 Reactors』可以解决阻塞问题,这个新网络模型通过引入一个 worker pool 来解决业务逻辑阻塞的问题:它会在启动的时候初始化一个 worker pool,然后在把 EventHandler.React里面的阻塞代码放到 worker pool 里执行,从而避免阻塞 event-loop 线程。

模型的架构图如下所示:

multi_reactor_thread_pool

它的运行流程如下面的时序图:

multi-reactors

gnet 通过利用 ants goroutine 池(一个基于 Go 开发的高性能的 goroutine 池 ,实现了对大规模 goroutines 的调度管理、goroutines 复用)来实现『主从多 Reactors + 线程/Go程池』网络模型。关于 ants 的全部功能和使用,可以在 ants 文档 里找到。

gnet 内部集成了 ants 以及提供了 pool.goroutine.Default() 方法来初始化一个 ants goroutine 池,然后你可以把 EventHandler.React 中阻塞的业务逻辑提交到 goroutine 池里执行,最后在 goroutine 池里的代码调用 gnet.Conn.AsyncWrite([]byte) 方法把处理完阻塞逻辑之后得到的输出数据异步写回客户端,这样就可以避免阻塞 event-loop 线程。

有关在 gnet 里使用 ants goroutine 池的细节可以到这里进一步了解。

可重用且自动扩容的 Ring-Buffer

gnet 内置了inbound 和 outbound 两个 buffers,基于 Ring-Buffer 原理实现,分别用来缓冲输入输出的网络数据以及管理内存,gnet 里面的 ring buffer 能够重用内存以及按需扩容。

对于 TCP 协议的流数据,使用 gnet 不需要业务方为了解析应用层协议而自己维护和管理 buffers,gnet 会替业务方完成缓冲和管理网络数据的任务,降低业务代码的复杂性以及降低开发者的心智负担,使得开发者能够专注于业务逻辑而非一些底层实现。

Like What You See?

+
/ / 4 min read

官宣 gnet v1.0.0

最快的 Go 网络框架 gnet 来啦!

今天,gnet v1.0.0 正式版本发布,享受这个高性能的网络框架吧!

gnet

📖 简介

gnet 是一个基于事件驱动的高性能和轻量级网络框架。它直接使用 epollkqueue 系统调用而非标准 Go 网络包:net 来构建网络应用,它的工作原理类似两个开源的网络库:nettylibuv,这也使得 gnet 达到了一个远超 Go net 的性能表现。

gnet 设计开发的初衷不是为了取代 Go 的标准网络库:net,而是为了创造出一个类似于 RedisHaproxy 能高效处理网络包的 Go 语言网络服务器框架。

gnet 的卖点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层(TCP/UDP/Unix Domain Socket)网络框架,开发者可以使用 gnet 来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络应用:比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。

gnet 衍生自另一个项目:evio,但拥有更丰富的功能特性,且性能远胜之。

🚀 功能

  • 高性能 的基于多线程/Go程网络模型的 event-loop 事件驱动
  • 内置 Round-Robin 轮询负载均衡算法
  • 内置 goroutine 池,由开源库 ants 提供支持
  • 内置 bytes 内存池,由开源库 bytebufferpool 提供支持
  • 简洁的 APIs
  • 基于 Ring-Buffer 的高效内存利用
  • 支持多种网络协议/IPC 机制:TCP、UDP 和 Unix Domain Socket
  • 支持两种事件驱动机制:Linux 里的 epoll 以及 FreeBSD 里的 kqueue
  • 支持异步写操作
  • 灵活的事件定时器
  • SO_REUSEPORT 端口重用
  • 内置多种编解码器,支持对 TCP 数据流分包:LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec 和 LengthFieldBasedFrameCodec,参考自 netty codec,而且支持自定制编解码器
  • 支持 Windows 平台,基于 IOCP 事件驱动机制 Go 标准网络库
  • 加入更多的负载均衡算法:随机、最少连接、一致性哈希等等
  • 支持 TLS
  • 实现 gnet 客户端

💡 核心设计

多线程/Go程网络模型

主从多 Reactors

gnet 重新设计开发了一个新内置的多线程/Go程网络模型:『主从多 Reactors』,这也是 netty 默认的多线程网络模型,下面是这个模型的原理图:

multi_reactor

它的运行流程如下面的时序图:

reactor

主从多 Reactors + 线程/Go程池

你可能会问一个问题:如果我的业务逻辑是阻塞的,那么在 EventHandler.React 注册方法里的逻辑也会阻塞,从而导致阻塞 event-loop 线程,这时候怎么办?

正如你所知,基于 gnet 编写你的网络服务器有一条最重要的原则:永远不能让你业务逻辑(一般写在 EventHandler.React 里)阻塞 event-loop 线程,这也是 netty 的一条最重要的原则,否则的话将会极大地降低服务器的吞吐量。

我的回答是,基于gnet 的另一种多线程/Go程网络模型:『带线程/Go程池的主从多 Reactors』可以解决阻塞问题,这个新网络模型通过引入一个 worker pool 来解决业务逻辑阻塞的问题:它会在启动的时候初始化一个 worker pool,然后在把 EventHandler.React里面的阻塞代码放到 worker pool 里执行,从而避免阻塞 event-loop 线程。

模型的架构图如下所示:

multi_reactor_thread_pool

它的运行流程如下面的时序图:

multi-reactors

gnet 通过利用 ants goroutine 池(一个基于 Go 开发的高性能的 goroutine 池 ,实现了对大规模 goroutines 的调度管理、goroutines 复用)来实现『主从多 Reactors + 线程/Go程池』网络模型。关于 ants 的全部功能和使用,可以在 ants 文档 里找到。

gnet 内部集成了 ants 以及提供了 pool.goroutine.Default() 方法来初始化一个 ants goroutine 池,然后你可以把 EventHandler.React 中阻塞的业务逻辑提交到 goroutine 池里执行,最后在 goroutine 池里的代码调用 gnet.Conn.AsyncWrite([]byte) 方法把处理完阻塞逻辑之后得到的输出数据异步写回客户端,这样就可以避免阻塞 event-loop 线程。

有关在 gnet 里使用 ants goroutine 池的细节可以到这里进一步了解。

可重用且自动扩容的 Ring-Buffer

gnet 内置了inbound 和 outbound 两个 buffers,基于 Ring-Buffer 原理实现,分别用来缓冲输入输出的网络数据以及管理内存,gnet 里面的 ring buffer 能够重用内存以及按需扩容。

对于 TCP 协议的流数据,使用 gnet 不需要业务方为了解析应用层协议而自己维护和管理 buffers,gnet 会替业务方完成缓冲和管理网络数据的任务,降低业务代码的复杂性以及降低开发者的心智负担,使得开发者能够专注于业务逻辑而非一些底层实现。

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/blog/announcing-gnet-v1/index.html b/blog/announcing-gnet-v1/index.html index 467c16346..addd2ea9f 100644 --- a/blog/announcing-gnet-v1/index.html +++ b/blog/announcing-gnet-v1/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ / 7 min read

Announcing gnet v1.0.0

Hello World! We present you, gnet!

Today, we are release gnet v1.0.0, enjoy this ultra-fast framework of networking!

gnet

📖 Introduction

gnet is an event-driven networking framework that is fast and lightweight. It makes direct epoll and kqueue syscalls rather than using the standard Go net package and works in a similar manner as netty and libuv, which makes gnet achieve a much higher performance than Go net.

gnet is not designed to displace the standard Go net package, but to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on transport layer with TCP/UDP protocols and Unix Domain Socket , so it allows developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network applications, for instance, you get an HTTP Server or Web Framework if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet derives from the project: evio while having a much higher performance and more features.

🚀 Features

  • High-performance event-loop under networking model of multiple threads/goroutines
  • Built-in load balancing algorithm: Round-Robin
  • Built-in goroutine pool powered by the library ants
  • Built-in memory pool with bytes powered by the library bytebufferpool
  • Concise APIs
  • Efficient memory usage: Ring-Buffer
  • Supporting multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket
  • Supporting two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD
  • Supporting asynchronous write operation
  • Flexible ticker event
  • SO_REUSEPORT socket option
  • Built-in multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, also supporting customized codecs
  • Supporting Windows platform with event-driven mechanism of IOCP Go stdlib: net
  • Additional load-balancing algorithms: Random, Least-Connections, Consistent-hashing and so on
  • TLS support
  • Implementation of gnet Client

💡 Key Designs

Networking Model of Multiple Threads/Goroutines

Multiple Reactors

gnet redesigns and implements a new built-in networking model of multiple threads/goroutines: 『multiple reactors』 which is also the default networking model of multiple threads in netty, Here's the schematic diagram:

multi_reactor

and it works as the following sequence diagram:

reactor

Multiple Reactors + Goroutine Pool

You may ask me a question: what if my business logic in EventHandler.React contains some blocking code which leads to blocking in event-loop of gnet, what is the solution for this kind of situation?

As you know, there is a most important tenet when writing code under gnet: you should never block the event-loop goroutine in the EventHandler.React, which is also the most important tenet in netty, otherwise, it will result in a low throughput in your gnet server.

And the solution to that could be found in the subsequent networking model of multiple threads/goroutines in gnet: 『multiple reactors with thread/goroutine pool』which pulls you out from the blocking mire, it will construct a worker-pool with fixed capacity and put those blocking jobs in EventHandler.React into the worker-pool to make the event-loop goroutines non-blocking.

The networking model:『multiple reactors with thread/goroutine pool』dissolves the blocking jobs by introducing a goroutine pool, as shown below:

multi_reactor_thread_pool

and it works as the following sequence diagram:

multi-reactors

gnet implements the networking model:『multiple reactors with thread/goroutine pool』by the aid of a high-performance goroutine pool called ants that allows you to manage and recycle a massive number of goroutines in your concurrent programs, the full features and usages in ants are documented here.

gnet integrates ants and provides the pool.goroutine.Default() method that you can call to instantiate a ants pool where you are able to put your blocking code logic and call the function gnet.Conn.AsyncWrite([]byte) to send out data asynchronously after you finish the blocking process and get the output data, which makes the goroutine of event-loop non-blocking.

The details about integrating gnet with ants are shown here.

Reusable and auto-scaling Ring Buffer

There are two ring-buffers inside gnet: inbound buffer and outbound buffer to buffer and manage inbound/outbound network data, ring-buffer inside gnet is designed and tuned to reuse memory and be auto-scaling on demand.

The purpose of implementing inbound and outbound ring-buffers in gnet is to transfer the logic of buffering and managing network data based on application protocol upon TCP stream from business server to framework and unify the network data buffer, which minimizes the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementation.

Like What You See?

+
/ / 7 min read

Announcing gnet v1.0.0

Hello World! We present you, gnet!

Today, we are release gnet v1.0.0, enjoy this ultra-fast framework of networking!

gnet

📖 Introduction

gnet is an event-driven networking framework that is fast and lightweight. It makes direct epoll and kqueue syscalls rather than using the standard Go net package and works in a similar manner as netty and libuv, which makes gnet achieve a much higher performance than Go net.

gnet is not designed to displace the standard Go net package, but to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on transport layer with TCP/UDP protocols and Unix Domain Socket , so it allows developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network applications, for instance, you get an HTTP Server or Web Framework if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet derives from the project: evio while having a much higher performance and more features.

🚀 Features

  • High-performance event-loop under networking model of multiple threads/goroutines
  • Built-in load balancing algorithm: Round-Robin
  • Built-in goroutine pool powered by the library ants
  • Built-in memory pool with bytes powered by the library bytebufferpool
  • Concise APIs
  • Efficient memory usage: Ring-Buffer
  • Supporting multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket
  • Supporting two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD
  • Supporting asynchronous write operation
  • Flexible ticker event
  • SO_REUSEPORT socket option
  • Built-in multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, also supporting customized codecs
  • Supporting Windows platform with event-driven mechanism of IOCP Go stdlib: net
  • Additional load-balancing algorithms: Random, Least-Connections, Consistent-hashing and so on
  • TLS support
  • Implementation of gnet Client

💡 Key Designs

Networking Model of Multiple Threads/Goroutines

Multiple Reactors

gnet redesigns and implements a new built-in networking model of multiple threads/goroutines: 『multiple reactors』 which is also the default networking model of multiple threads in netty, Here's the schematic diagram:

multi_reactor

and it works as the following sequence diagram:

reactor

Multiple Reactors + Goroutine Pool

You may ask me a question: what if my business logic in EventHandler.React contains some blocking code which leads to blocking in event-loop of gnet, what is the solution for this kind of situation?

As you know, there is a most important tenet when writing code under gnet: you should never block the event-loop goroutine in the EventHandler.React, which is also the most important tenet in netty, otherwise, it will result in a low throughput in your gnet server.

And the solution to that could be found in the subsequent networking model of multiple threads/goroutines in gnet: 『multiple reactors with thread/goroutine pool』which pulls you out from the blocking mire, it will construct a worker-pool with fixed capacity and put those blocking jobs in EventHandler.React into the worker-pool to make the event-loop goroutines non-blocking.

The networking model:『multiple reactors with thread/goroutine pool』dissolves the blocking jobs by introducing a goroutine pool, as shown below:

multi_reactor_thread_pool

and it works as the following sequence diagram:

multi-reactors

gnet implements the networking model:『multiple reactors with thread/goroutine pool』by the aid of a high-performance goroutine pool called ants that allows you to manage and recycle a massive number of goroutines in your concurrent programs, the full features and usages in ants are documented here.

gnet integrates ants and provides the pool.goroutine.Default() method that you can call to instantiate a ants pool where you are able to put your blocking code logic and call the function gnet.Conn.AsyncWrite([]byte) to send out data asynchronously after you finish the blocking process and get the output data, which makes the goroutine of event-loop non-blocking.

The details about integrating gnet with ants are shown here.

Reusable and auto-scaling Ring Buffer

There are two ring-buffers inside gnet: inbound buffer and outbound buffer to buffer and manage inbound/outbound network data, ring-buffer inside gnet is designed and tuned to reuse memory and be auto-scaling on demand.

The purpose of implementing inbound and outbound ring-buffers in gnet is to transfer the logic of buffering and managing network data based on application protocol upon TCP stream from business server to framework and unify the network data buffer, which minimizes the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementation.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/blog/announcing-gnet-v2-3-0/index.html b/blog/announcing-gnet-v2-3-0/index.html index 734396f2f..b5017e5f6 100644 --- a/blog/announcing-gnet-v2-3-0/index.html +++ b/blog/announcing-gnet-v2-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,14 +39,14 @@
-
/ / 3 min read

Announcing gnet v2.3.0

Hello World! We present you, gnet v2.3.0!

Today, I'm thrilled to announce the official release of gnet v2.3.0.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Intro

The two major updates in this release are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
+
/ / 3 min read

Announcing gnet v2.3.0

Hello World! We present you, gnet v2.3.0!

Today, I'm thrilled to announce the official release of gnet v2.3.0.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Intro

The two major updates in this release are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
│ old │ new │
│ B/op │ B/op vs base │
GC4El100k/Run-4-eventloop-100000-10 27.50 ± 35% 25.50 ± 33% ~ (p=0.423 n=10)
GC4El200k/Run-4-eventloop-200000-10 27.50 ± 53% 20.50 ± 66% ~ (p=0.642 n=10)
GC4El500k/Run-4-eventloop-500000-10 16.00 ± ? 18.00 ± ? ~ (p=0.357 n=10)
geomean 22.96 21.11 -8.04%
│ old │ new │
│ allocs/op │ allocs/op vs base │
GC4El100k/Run-4-eventloop-100000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El200k/Run-4-eventloop-200000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El500k/Run-4-eventloop-500000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² +0.00% ²
¹ all samples are equal
² summaries must be >0 to compute geomean

The more connections there are, the more pronounced the effect.

While we have performed sufficient testing on matrix, we are still using map as the default connection storage in this RC version for the sake of caution, but you can enable the new data structure by specifying build tags: -tags=gc_opt. This can be considered as a precautionary measure so that in case matrix has any unexpected bugs, you can quickly fall back to the default map. We will consider promoting matrix to be the default storage for connections in a subsequent official release.

Another significant leap is #461, you can now run gnet on Windows, it should be noted that the Windows version of gnet is intended for development purposes and is not recommended for use in production.

Visit the release notes for more details.

Like What You See?

- + @@ -56,7 +56,7 @@ - + diff --git a/blog/announcing-gnet-v2-5-0/index.html b/blog/announcing-gnet-v2-5-0/index.html index 9a9e2a242..544ce060b 100644 --- a/blog/announcing-gnet-v2-5-0/index.html +++ b/blog/announcing-gnet-v2-5-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ / 2 min read

Announcing gnet v2.5.0

Hello World! We present you, gnet v2.5.0!

The v2.5.0 for gnet is officially released!

The two major updates in this release are feat: support edge-triggered I/O and feat: support multiple network addresses binding.

Intro

In #576, gnet implemented edge-triggered I/O on the basis of EPOLLET in epoll and EV_CLEAR in kqueue. Before v2.5.0, gnet had been using level-triggered I/O under the hood, now developers are able to switch to edge-triggered I/O via the functional option: EdgeTriggeredIO when developing and deploying gnet services. In certain specific scenarios, edge-triggered I/O may outperform level-triggered I/O, as a result of which, switching gnet from LT mode to ET mode can lead to significant performance improvements. But note that this performance boost is only a theoretical inference and may only occur under specific circumstances. Therefore, please use ET mode with caution and conduct benchmark tests to collect sufficient numbers before the deployment in production.

Another useful new feature is #578, with which developers are allowed to bind multiple addresses(IP:Port) in one gnet instance. This feature makes it possible to build and run a gnet server that serves various protocols or a specific set of backend services.

In addition to these two major features, we've also made a good deal of code optimizations: refactoring and streamlining the core code, as well as optimising the structure.

Visit the release notes for more details.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Like What You See?

+
/ / 2 min read

Announcing gnet v2.5.0

Hello World! We present you, gnet v2.5.0!

The v2.5.0 for gnet is officially released!

The two major updates in this release are feat: support edge-triggered I/O and feat: support multiple network addresses binding.

Intro

In #576, gnet implemented edge-triggered I/O on the basis of EPOLLET in epoll and EV_CLEAR in kqueue. Before v2.5.0, gnet had been using level-triggered I/O under the hood, now developers are able to switch to edge-triggered I/O via the functional option: EdgeTriggeredIO when developing and deploying gnet services. In certain specific scenarios, edge-triggered I/O may outperform level-triggered I/O, as a result of which, switching gnet from LT mode to ET mode can lead to significant performance improvements. But note that this performance boost is only a theoretical inference and may only occur under specific circumstances. Therefore, please use ET mode with caution and conduct benchmark tests to collect sufficient numbers before the deployment in production.

Another useful new feature is #578, with which developers are allowed to bind multiple addresses(IP:Port) in one gnet instance. This feature makes it possible to build and run a gnet server that serves various protocols or a specific set of backend services.

In addition to these two major features, we've also made a good deal of code optimizations: refactoring and streamlining the core code, as well as optimising the structure.

Visit the release notes for more details.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/blog/announcing-gnet-v2-6-0/index.html b/blog/announcing-gnet-v2-6-0/index.html index 06156c2ca..e463a7b65 100644 --- a/blog/announcing-gnet-v2-6-0/index.html +++ b/blog/announcing-gnet-v2-6-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ / 2 min read

Announcing gnet v2.6.0

Hello World! We present you, gnet v2.6.0!

The gnet v2.6.0 is officially released!

The two major updates in this release are feat: support configurable I/O chunk to drain at a time in edge-triggered mode and feat: support SO_BINDTODEVICE on Linux.

Intro

In gnet v2.5.0, we implemented edge-triggered I/O where the default chunk to read/write per event loop is 1MB and it's a constant value. However, in some scenarios, developers may want to adjust the chunk size to optimize the performance of their applications. In this release, we've added a new feature that allows developers to configure the I/O chunk size to drain/pump at a time in edge-triggered mode. This feature is especially useful for applications that require fine-tuning the I/O chunk size to achieve better performance.

Along with this new release comes another highlight: the support for SO_BINDTODEVICE on Linux. This feature allows developers to bind a gnet server to a specific network interface on a multi-homed host, which enables them to receive unicast packets only from that particular network interface and ignore packets from other interfaces. It is particularly useful for UDP servers that only want to process unicast packets from one interface while receiving broadcast packets.

Moreover, some critical bug fixes are included in this release, which further enhances the stability and reliability of gnet. Thus, we recommend all users to upgrade to the latest version to enjoy the new features and improvements. It should be noted that starting from this release, gnet will only support Go 1.20 or later versions.

For more details, please refer to the release notes.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Like What You See?

+
/ / 2 min read

Announcing gnet v2.6.0

Hello World! We present you, gnet v2.6.0!

The gnet v2.6.0 is officially released!

The two major updates in this release are feat: support configurable I/O chunk to drain at a time in edge-triggered mode and feat: support SO_BINDTODEVICE on Linux.

Intro

In gnet v2.5.0, we implemented edge-triggered I/O where the default chunk to read/write per event loop is 1MB and it's a constant value. However, in some scenarios, developers may want to adjust the chunk size to optimize the performance of their applications. In this release, we've added a new feature that allows developers to configure the I/O chunk size to drain/pump at a time in edge-triggered mode. This feature is especially useful for applications that require fine-tuning the I/O chunk size to achieve better performance.

Along with this new release comes another highlight: the support for SO_BINDTODEVICE on Linux. This feature allows developers to bind a gnet server to a specific network interface on a multi-homed host, which enables them to receive unicast packets only from that particular network interface and ignore packets from other interfaces. It is particularly useful for UDP servers that only want to process unicast packets from one interface while receiving broadcast packets.

Moreover, some critical bug fixes are included in this release, which further enhances the stability and reliability of gnet. Thus, we recommend all users to upgrade to the latest version to enjoy the new features and improvements. It should be noted that starting from this release, gnet will only support Go 1.20 or later versions.

For more details, please refer to the release notes.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/blog/announcing-gnet-v2/index.html b/blog/announcing-gnet-v2/index.html index 9f0c84a6e..4d6ddb863 100644 --- a/blog/announcing-gnet-v2/index.html +++ b/blog/announcing-gnet-v2/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,7 +39,7 @@
-
/ / 5 min read

Announcing gnet v2.0.0

Hello World! We present you, gnet v2.0.0!

Today, I'm thrilled to announce the release of gnet v2.0.0, in which we've made plenty of significant improvements and optimizations: added and removed some APIs, redesigned and reimplemented the buffer, optimized the memory pool, etc.

In this blog post, we'll go through the most notable changes to gnet 2.0.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Features

  • The built-in codecs have been deprecated and removed, to reduce the complexity and keep gnet simple. From a lot of feedback we've received, this feature does not bring convenience and benefits to users, thus, I decided to take it off from gnet. Cutting those codecs off makes the code on top of gnet more holistic and straightforward, see a simple example for details.
  • gnet.Conn now implements io.Reader, io.Writer, io.ReaderFrom, io.WriterTo and net.Conn, apart from that, it also implements the gnet.Socket interface, providing more API's for users to manipulate the connections.
  • gnet now supports vectored I/O, allowing users to read from a vector of buffers and write to a single data stream, a vectored I/O implementation can provide improved performance over a linear I/O implementation via internal optimizations. API's for vectored I/O in gnet are Conn.Writev([][]byte) and Conn.AsyncWritev([][]byte, AsyncCallback).

Visit gnet API doc for more details.

Note that some event handlers' name has been changed in gnet v2, learn about the details in the table below:

Old event handlerNew event handlerNote
OnInitCompleteOnBoot
OnShutdownOnShutdown
OnOpenedOnOpen
OnClosedOnClose
ReactOnTraffic
TickOnTick
PreWrite-Deprecated
AfterWrite-Deprecated

Optimizations

We redesigned and reimplemented the internal buffers for connections, the diagram shows below:

We go from the ring-buffer to the mixed-buffer that combines ring-buffer and a kind of new buffer type: linked-list buffer, which makes it more flexible and efficient, this new elastic buffer can save more memory.

Performance

We've run a simple echo benchmark on Linux between v1.5.3 and v2.0.0, the results are shown below:

Environment

# Machine information
OS : Ubuntu 20.04/x86_64
CPU : 8 CPU cores, AMD EPYC 7K62 48-Core Processor
Memory : 16.0 GiB
+
/ / 5 min read

Announcing gnet v2.0.0

Hello World! We present you, gnet v2.0.0!

Today, I'm thrilled to announce the release of gnet v2.0.0, in which we've made plenty of significant improvements and optimizations: added and removed some APIs, redesigned and reimplemented the buffer, optimized the memory pool, etc.

In this blog post, we'll go through the most notable changes to gnet 2.0.

P.S. Follow me on Twitter @panjf2000 to get the latest updates about gnet!

Features

  • The built-in codecs have been deprecated and removed, to reduce the complexity and keep gnet simple. From a lot of feedback we've received, this feature does not bring convenience and benefits to users, thus, I decided to take it off from gnet. Cutting those codecs off makes the code on top of gnet more holistic and straightforward, see a simple example for details.
  • gnet.Conn now implements io.Reader, io.Writer, io.ReaderFrom, io.WriterTo and net.Conn, apart from that, it also implements the gnet.Socket interface, providing more API's for users to manipulate the connections.
  • gnet now supports vectored I/O, allowing users to read from a vector of buffers and write to a single data stream, a vectored I/O implementation can provide improved performance over a linear I/O implementation via internal optimizations. API's for vectored I/O in gnet are Conn.Writev([][]byte) and Conn.AsyncWritev([][]byte, AsyncCallback).

Visit gnet API doc for more details.

Note that some event handlers' name has been changed in gnet v2, learn about the details in the table below:

Old event handlerNew event handlerNote
OnInitCompleteOnBoot
OnShutdownOnShutdown
OnOpenedOnOpen
OnClosedOnClose
ReactOnTraffic
TickOnTick
PreWrite-Deprecated
AfterWrite-Deprecated

Optimizations

We redesigned and reimplemented the internal buffers for connections, the diagram shows below:

We go from the ring-buffer to the mixed-buffer that combines ring-buffer and a kind of new buffer type: linked-list buffer, which makes it more flexible and efficient, this new elastic buffer can save more memory.

Performance

We've run a simple echo benchmark on Linux between v1.5.3 and v2.0.0, the results are shown below:

Environment

# Machine information
OS : Ubuntu 20.04/x86_64
CPU : 8 CPU cores, AMD EPYC 7K62 48-Core Processor
Memory : 16.0 GiB
# Go version and settings
Go Version : go1.17.2 linux/amd64
GOMAXPROCS : 8
# Benchmark parameters
TCP connections : 1000
Packet size : 1024 bytes
Test duration : 15s

v1.5.3

--- GNET ---
Warming up for 1 seconds...
2022/02/27 17:23:21 Echo server is listening on 127.0.0.1:7002 (multi-cores: true, event-loops: 8)
@@ -52,7 +52,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/blog/index.html b/blog/index.html index 18fcb51f9..7be369675 100644 --- a/blog/index.html +++ b/blog/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -51,12 +51,12 @@
- +
- + @@ -66,7 +66,7 @@ - + diff --git a/blog/tags/domain-presentation/index.html b/blog/tags/domain-presentation/index.html index 96e33064e..ace25d9b9 100644 --- a/blog/tags/domain-presentation/index.html +++ b/blog/tags/domain-presentation/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -49,12 +49,12 @@
- +
- + @@ -64,7 +64,7 @@ - + diff --git "a/blog/tags/domain-\345\261\225\347\244\272/index.html" "b/blog/tags/domain-\345\261\225\347\244\272/index.html" index cf77944d9..7dfb30060 100644 --- "a/blog/tags/domain-\345\261\225\347\244\272/index.html" +++ "b/blog/tags/domain-\345\261\225\347\244\272/index.html" @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/blog/tags/index.html b/blog/tags/index.html index 834157e2e..98463bff2 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -21,7 +21,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -37,12 +37,12 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/blog/tags/type-announcement/index.html b/blog/tags/type-announcement/index.html index f5b3496b3..567c6fa2b 100644 --- a/blog/tags/type-announcement/index.html +++ b/blog/tags/type-announcement/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -49,12 +49,12 @@
- +
- + @@ -64,7 +64,7 @@ - + diff --git "a/blog/tags/type-\345\256\230\345\256\243/index.html" "b/blog/tags/type-\345\256\230\345\256\243/index.html" index 32c36b65d..735dc7a99 100644 --- "a/blog/tags/type-\345\256\230\345\256\243/index.html" +++ "b/blog/tags/type-\345\256\230\345\256\243/index.html" @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/c4f5d8e4.ee212d95.js b/c4f5d8e4.38cfeaa6.js similarity index 99% rename from c4f5d8e4.ee212d95.js rename to c4f5d8e4.38cfeaa6.js index 25e0bc98d..5eff1c210 100644 --- a/c4f5d8e4.ee212d95.js +++ b/c4f5d8e4.38cfeaa6.js @@ -1,2 +1,2 @@ -/*! For license information please see c4f5d8e4.ee212d95.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91,4],{260:function(e,t,n){"use strict";n.r(t);var r=n(1),i=n(0),o=n.n(i),a=n(278),u=n(273),s=n(297),l=n(268),c=n(270),f=n.n(c);var p=function(e){return o.a.createElement(o.a.Fragment,null,e.children)};n(341),n(274),n(53),n(26),n(20),n(19);function d(e,t){if(e.length!==t.length)return!1;for(var n=0;nr&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(v,"$1"+e.trim());case 58:return e.trim()+t.replace(v,"$1"+e.trim());default:if(0<1*n&&0s.charCodeAt(8))break;case 115:a=a.replace(s,"-webkit-"+s)+";"+a;break;case 207:case 102:a=a.replace(s,"-webkit-"+(102u.charCodeAt(0)&&(u=u.trim()),u=[u],0d)&&(B=(U=U.replace(" ",":")).length),0=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},k={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var S=/[A-Z]|^ms/g,F=/_EMO_([^_]+?)_([^]*?)_EMO_/g,D=function(e){return 45===e.charCodeAt(1)},I=function(e){return null!=e&&"boolean"!=typeof e},j=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return D(e)?e:e.replace(S,"-$&").toLowerCase()})),N=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(F,(function(e,t,n){return L={name:t,styles:n,next:L},t}))}return 1===k[e]||D(e)||"number"!=typeof t||0===t?t:t+"px"};function M(e,t,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return L={name:n.name,styles:n.styles,next:L},n.name;if(void 0!==n.styles){var i=n.next;if(void 0!==i)for(;void 0!==i;)L={name:i.name,styles:i.styles,next:L},i=i.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i-1}function oe(e){return ie(e)?window.pageYOffset:e.scrollTop}function ae(e,t){ie(e)?window.scrollTo(0,t):e.scrollTop=t}function ue(e,t,n,r){void 0===n&&(n=200),void 0===r&&(r=ee);var i=oe(e),o=t-i,a=0;!function t(){var u,s=o*((u=(u=a+=10)/n-1)*u*u+1)+i;ae(e,s),a=d)return{placement:"bottom",maxHeight:t};if(O>=d&&!a)return o&&ue(s,C,160),{placement:"bottom",maxHeight:t};if(!a&&O>=r||a&&_>=r)return o&&ue(s,C,160),{placement:"bottom",maxHeight:a?_-b:O-b};if("auto"===i||a){var x=t,k=a?E:w;return k>=r&&(x=Math.min(k-b-u.controlHeight,t)),{placement:"top",maxHeight:x}}if("bottom"===i)return ae(s,C),{placement:"bottom",maxHeight:t};break;case"top":if(E>=d)return{placement:"top",maxHeight:t};if(w>=d&&!a)return o&&ue(s,A,160),{placement:"top",maxHeight:t};if(!a&&w>=r||a&&E>=r){var S=t;return(!a&&w>=r||a&&E>=r)&&(S=a?E-y:w-y),o&&ue(s,A,160),{placement:"top",maxHeight:S}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'+i+'".')}return l}var he=function(e){return"auto"===e?"bottom":e},ve=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i=0||(i[n]=e[n]);return i}(e,["size"]);return q("svg",Se({height:t,width:t,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:Fe},n))},Ie=function(e){return q(De,Se({size:20},e),q("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},je=function(e){return q(De,Se({size:20},e),q("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},Ne=function(e){var t=e.isFocused,n=e.theme,r=n.spacing.baseUnit,i=n.colors;return{label:"indicatorContainer",color:t?i.neutral60:i.neutral20,display:"flex",padding:2*r,transition:"color 150ms",":hover":{color:t?i.neutral80:i.neutral40}}},Me=Ne,Le=Ne,Pe=function(){var e=R.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}(ke()),Te=function(e){var t=e.delay,n=e.offset;return q("span",{css:R({animation:Pe+" 1s ease-in-out "+t+"ms infinite;",backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":null,height:"1em",verticalAlign:"top",width:"1em"},"")})},Re=function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerProps,o=e.isRtl;return q("div",Se({},i,{css:r("loadingIndicator",e),className:n({indicator:!0,"loading-indicator":!0},t)}),q(Te,{delay:0,offset:o}),q(Te,{delay:160,offset:!0}),q(Te,{delay:320,offset:!o}))};function Be(){return(Be=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,["className","cx","getStyles","theme","selectProps"]));return q("div",Ve({css:r("groupHeading",Ve({theme:i},o)),className:n({"group-heading":!0},t)},o))},IndicatorsContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles;return q("div",{css:i("indicatorsContainer",e),className:r({indicators:!0},n)},t)},IndicatorSeparator:function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerProps;return q("span",Se({},i,{css:r("indicatorSeparator",e),className:n({"indicator-separator":!0},t)}))},Input:function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerRef,o=e.isHidden,a=e.isDisabled,u=e.theme,s=(e.selectProps,function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return q("div",{css:r("input",ze({theme:u},s))},q(ce.a,ze({className:n({input:!0},t),inputRef:i,inputStyle:Ue(o),disabled:a},s)))},LoadingIndicator:Re,Menu:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerRef,a=e.innerProps;return q("div",fe({css:i("menu",e),className:r({menu:!0},n)},a,{ref:o}),t)},MenuList:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isMulti,a=e.innerRef;return q("div",{css:i("menuList",e),className:r({"menu-list":!0,"menu-list--is-multi":o},n),ref:a},t)},MenuPortal:_e,LoadingMessage:Ee,NoOptionsMessage:ye,MultiValue:qe,MultiValueContainer:$e,MultiValueLabel:Ge,MultiValueRemove:function(e){var t=e.children,n=e.innerProps;return q("div",n,t||q(Ie,{size:14}))},Option:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isDisabled,a=e.isFocused,u=e.isSelected,s=e.innerRef,l=e.innerProps;return q("div",Ye({css:i("option",e),className:r({option:!0,"option--is-disabled":o,"option--is-focused":a,"option--is-selected":u},n),ref:s},l),t)},Placeholder:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerProps;return q("div",Ke({css:i("placeholder",e),className:r({placeholder:!0},n)},o),t)},SelectContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerProps,a=e.isDisabled,u=e.isRtl;return q("div",xe({css:i("container",e),className:r({"--is-disabled":a,"--is-rtl":u},n)},o),t)},SingleValue:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isDisabled,a=e.innerProps;return q("div",Ze({css:i("singleValue",e),className:r({"single-value":!0,"single-value--is-disabled":o},n)},a),t)},ValueContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.isMulti,o=e.getStyles,a=e.hasValue;return q("div",{css:o("valueContainer",e),className:r({"value-container":!0,"value-container--is-multi":i,"value-container--has-value":a},n)},t)}},Qe=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],et=function(e){for(var t=0;t=0||(i[n]=e[n]);return i}(e,["in","out","onExited","appear","enter","exit","innerRef","emotion"]));return q("input",ut({ref:t},n,{css:R({label:"dummyInput",background:0,border:0,fontSize:"inherit",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(0)"},"")}))}var lt=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.props.innerRef(Object(X.findDOMNode)(this))},i.componentWillUnmount=function(){this.props.innerRef(null)},i.render=function(){return this.props.children},r}(i.Component),ct=["boxSizing","height","overflow","paddingRight","position"],ft={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function pt(e){e.preventDefault()}function dt(e){e.stopPropagation()}function ht(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function vt(){return"ontouchstart"in window||navigator.maxTouchPoints}var mt=!(!window.document||!window.document.createElement),gt=0,bt=function(e){var t,n;function r(){for(var t,n=arguments.length,r=new Array(n),i=0;i0,h=c-f-l,v=!1;h>n&&t.isBottom&&(o&&o(e),t.isBottom=!1),d&&t.isTop&&(u&&u(e),t.isTop=!1),d&&n>h?(i&&!t.isBottom&&i(e),p.scrollTop=c,v=!0,t.isBottom=!0):!d&&-n>l&&(a&&!t.isTop&&a(e),p.scrollTop=0,v=!0,t.isTop=!0),v&&t.cancelScroll(e)},t.onWheel=function(e){t.handleEventDelta(e,e.deltaY)},t.onTouchStart=function(e){t.touchStart=e.changedTouches[0].clientY},t.onTouchMove=function(e){var n=t.touchStart-e.changedTouches[0].clientY;t.handleEventDelta(e,n)},t.getScrollTarget=function(e){t.scrollTarget=e},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.startListening(this.scrollTarget)},i.componentWillUnmount=function(){this.stopListening(this.scrollTarget)},i.startListening=function(e){e&&("function"==typeof e.addEventListener&&e.addEventListener("wheel",this.onWheel,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchmove",this.onTouchMove,!1))},i.stopListening=function(e){"function"==typeof e.removeEventListener&&e.removeEventListener("wheel",this.onWheel,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchmove",this.onTouchMove,!1)},i.render=function(){return o.a.createElement(lt,{innerRef:this.getScrollTarget},this.props.children)},r}(i.Component);function wt(e){var t=e.isEnabled,n=void 0===t||t,r=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,["isEnabled"]);return n?o.a.createElement(_t,r):r.children}var Ot=function(e,t){void 0===t&&(t={});var n=t,r=n.isSearchable,i=n.isMulti,o=n.label,a=n.isDisabled;switch(e){case"menu":return"Use Up and Down to choose options"+(a?"":", press Enter to select the currently focused option")+", press Escape to exit the menu, press Tab to select the option and exit the menu.";case"input":return(o||"Select")+" is focused "+(r?",type to refine list":"")+", press Down to open the menu, "+(i?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}},Ct=function(e,t){var n=t.value,r=t.isDisabled;if(n)switch(e){case"deselect-option":case"pop-value":case"remove-value":return"option "+n+", deselected.";case"select-option":return r?"option "+n+" is disabled. Select another option.":"option "+n+", selected."}},At=function(e){return!!e.isDisabled};var xt={clearIndicator:Le,container:function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":null,pointerEvents:t?"none":null,position:"relative"}},control:function(e){var t=e.isDisabled,n=e.isFocused,r=e.theme,i=r.colors,o=r.borderRadius,a=r.spacing;return{label:"control",alignItems:"center",backgroundColor:t?i.neutral5:i.neutral0,borderColor:t?i.neutral10:n?i.primary:i.neutral20,borderRadius:o,borderStyle:"solid",borderWidth:1,boxShadow:n?"0 0 0 1px "+i.primary:null,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:a.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:n?i.primary:i.neutral30}}},dropdownIndicator:Me,group:function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},groupHeading:function(e){var t=e.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:"500",marginBottom:"0.25em",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:"uppercase"}},indicatorsContainer:function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing.baseUnit,i=n.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:t?i.neutral10:i.neutral20,marginBottom:2*r,marginTop:2*r,width:1}},input:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,i=n.colors;return{margin:r.baseUnit/2,paddingBottom:r.baseUnit/2,paddingTop:r.baseUnit/2,visibility:t?"hidden":"visible",color:i.neutral80}},loadingIndicator:function(e){var t=e.isFocused,n=e.size,r=e.theme,i=r.colors,o=r.spacing.baseUnit;return{label:"loadingIndicator",color:t?i.neutral60:i.neutral20,display:"flex",padding:2*o,transition:"color 150ms",alignSelf:"center",fontSize:n,lineHeight:1,marginRight:n,textAlign:"center",verticalAlign:"middle"}},loadingMessage:be,menu:function(e){var t,n=e.placement,r=e.theme,i=r.borderRadius,o=r.spacing,a=r.colors;return(t={label:"menu"})[function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(n)]="100%",t.backgroundColor=a.neutral0,t.borderRadius=i,t.boxShadow="0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",t.marginBottom=o.menuGutter,t.marginTop=o.menuGutter,t.position="absolute",t.width="100%",t.zIndex=1,t},menuList:function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:"auto",paddingBottom:n,paddingTop:n,position:"relative",WebkitOverflowScrolling:"touch"}},menuPortal:function(e){var t=e.rect,n=e.offset,r=e.position;return{left:t.left,position:r,top:n,width:t.width,zIndex:1}},multiValue:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius;return{label:"multiValue",backgroundColor:t.colors.neutral10,borderRadius:r/2,display:"flex",margin:n.baseUnit/2,minWidth:0}},multiValueLabel:function(e){var t=e.theme,n=t.borderRadius,r=t.colors,i=e.cropWithEllipsis;return{borderRadius:n/2,color:r.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:i?"ellipsis":null,whiteSpace:"nowrap"}},multiValueRemove:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius,i=t.colors;return{alignItems:"center",borderRadius:r/2,backgroundColor:e.isFocused&&i.dangerLight,display:"flex",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,":hover":{backgroundColor:i.dangerLight,color:i.danger}}},noOptionsMessage:ge,option:function(e){var t=e.isDisabled,n=e.isFocused,r=e.isSelected,i=e.theme,o=i.spacing,a=i.colors;return{label:"option",backgroundColor:r?a.primary:n?a.primary25:"transparent",color:t?a.neutral20:r?a.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:2*o.baseUnit+"px "+3*o.baseUnit+"px",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:!t&&(r?a.primary:a.primary50)}}},placeholder:function(e){var t=e.theme,n=t.spacing;return{label:"placeholder",color:t.colors.neutral50,marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2,position:"absolute",top:"50%",transform:"translateY(-50%)"}},singleValue:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,i=n.colors;return{label:"singleValue",color:t?i.neutral40:i.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2,maxWidth:"calc(100% - "+2*r.baseUnit+"px)",overflow:"hidden",position:"absolute",textOverflow:"ellipsis",whiteSpace:"nowrap",top:"50%",transform:"translateY(-50%)"}},valueContainer:function(e){var t=e.theme.spacing;return{alignItems:"center",display:"flex",flex:1,flexWrap:"wrap",padding:t.baseUnit/2+"px "+2*t.baseUnit+"px",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}};var kt={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}};function St(){return(St=Object.assign||function(e){for(var t=1;t-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:At,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(e){var t=e.count;return t+" result"+(1!==t?"s":"")+" available"},styles:{},tabIndex:"0",tabSelectsValue:!0},jt=1,Nt=function(e){var t,n;function r(t){var n;(n=e.call(this,t)||this).state={ariaLiveSelection:"",ariaLiveContext:"",focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,menuOptions:{render:[],focusable:[]},selectValue:[]},n.blockOptionHover=!1,n.isComposing=!1,n.clearFocusValueOnUpdate=!1,n.commonProps=void 0,n.components=void 0,n.hasGroups=!1,n.initialTouchX=0,n.initialTouchY=0,n.inputIsHiddenAfterUpdate=void 0,n.instancePrefix="",n.openAfterFocus=!1,n.scrollToFocusedOptionOnUpdate=!1,n.userIsDragging=void 0,n.controlRef=null,n.getControlRef=function(e){n.controlRef=e},n.focusedOptionRef=null,n.getFocusedOptionRef=function(e){n.focusedOptionRef=e},n.menuListRef=null,n.getMenuListRef=function(e){n.menuListRef=e},n.inputRef=null,n.getInputRef=function(e){n.inputRef=e},n.cacheComponents=function(e){n.components=Xe({},Je,{components:e}.components)},n.focus=n.focusInput,n.blur=n.blurInput,n.onChange=function(e,t){var r=n.props;(0,r.onChange)(e,St({},t,{name:r.name}))},n.setValue=function(e,t,r){void 0===t&&(t="set-value");var i=n.props,o=i.closeMenuOnSelect,a=i.isMulti;n.onInputChange("",{action:"set-value"}),o&&(n.inputIsHiddenAfterUpdate=!a,n.onMenuClose()),n.clearFocusValueOnUpdate=!0,n.onChange(e,{action:t,option:r})},n.selectOption=function(e){var t=n.props,r=t.blurInputOnSelect,i=t.isMulti,o=n.state.selectValue;if(i)if(n.isOptionSelected(e,o)){var a=n.getOptionValue(e);n.setValue(o.filter((function(e){return n.getOptionValue(e)!==a})),"deselect-option",e),n.announceAriaLiveSelection({event:"deselect-option",context:{value:n.getOptionLabel(e)}})}else n.isOptionDisabled(e,o)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue([].concat(o,[e]),"select-option",e),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));else n.isOptionDisabled(e,o)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue(e,"select-option"),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));r&&n.blurInput()},n.removeValue=function(e){var t=n.state.selectValue,r=n.getOptionValue(e),i=t.filter((function(e){return n.getOptionValue(e)!==r}));n.onChange(i.length?i:null,{action:"remove-value",removedValue:e}),n.announceAriaLiveSelection({event:"remove-value",context:{value:e?n.getOptionLabel(e):""}}),n.focusInput()},n.clearValue=function(){var e=n.props.isMulti;n.onChange(e?[]:null,{action:"clear"})},n.popValue=function(){var e=n.state.selectValue,t=e[e.length-1],r=e.slice(0,e.length-1);n.announceAriaLiveSelection({event:"pop-value",context:{value:t?n.getOptionLabel(t):""}}),n.onChange(r.length?r:null,{action:"pop-value",removedValue:t})},n.getOptionLabel=function(e){return n.props.getOptionLabel(e)},n.getOptionValue=function(e){return n.props.getOptionValue(e)},n.getStyles=function(e,t){var r=xt[e](t);r.boxSizing="border-box";var i=n.props.styles[e];return i?i(r,t):r},n.getElementId=function(e){return n.instancePrefix+"-"+e},n.getActiveDescendentId=function(){var e=n.props.menuIsOpen,t=n.state,r=t.menuOptions,i=t.focusedOption;if(i&&e){var o=r.focusable.indexOf(i),a=r.render[o];return a&&a.key}},n.announceAriaLiveSelection=function(e){var t=e.event,r=e.context;n.setState({ariaLiveSelection:Ct(t,r)})},n.announceAriaLiveContext=function(e){var t=e.event,r=e.context;n.setState({ariaLiveContext:Ot(t,St({},r,{label:n.props["aria-label"]}))})},n.onMenuMouseDown=function(e){0===e.button&&(e.stopPropagation(),e.preventDefault(),n.focusInput())},n.onMenuMouseMove=function(e){n.blockOptionHover=!1},n.onControlMouseDown=function(e){var t=n.props.openMenuOnClick;n.state.isFocused?n.props.menuIsOpen?"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&n.onMenuClose():t&&n.openMenu("first"):(t&&(n.openAfterFocus=!0),n.focusInput()),"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&e.preventDefault()},n.onDropdownIndicatorMouseDown=function(e){if(!(e&&"mousedown"===e.type&&0!==e.button||n.props.isDisabled)){var t=n.props,r=t.isMulti,i=t.menuIsOpen;n.focusInput(),i?(n.inputIsHiddenAfterUpdate=!r,n.onMenuClose()):n.openMenu("first"),e.preventDefault(),e.stopPropagation()}},n.onClearIndicatorMouseDown=function(e){e&&"mousedown"===e.type&&0!==e.button||(n.clearValue(),e.stopPropagation(),n.openAfterFocus=!1,"touchend"===e.type?n.focusInput():setTimeout((function(){return n.focusInput()})))},n.onScroll=function(e){"boolean"==typeof n.props.closeMenuOnScroll?e.target instanceof HTMLElement&&ie(e.target)&&n.props.onMenuClose():"function"==typeof n.props.closeMenuOnScroll&&n.props.closeMenuOnScroll(e)&&n.props.onMenuClose()},n.onCompositionStart=function(){n.isComposing=!0},n.onCompositionEnd=function(){n.isComposing=!1},n.onTouchStart=function(e){var t=e.touches.item(0);t&&(n.initialTouchX=t.clientX,n.initialTouchY=t.clientY,n.userIsDragging=!1)},n.onTouchMove=function(e){var t=e.touches.item(0);if(t){var r=Math.abs(t.clientX-n.initialTouchX),i=Math.abs(t.clientY-n.initialTouchY);n.userIsDragging=r>5||i>5}},n.onTouchEnd=function(e){n.userIsDragging||(n.controlRef&&!n.controlRef.contains(e.target)&&n.menuListRef&&!n.menuListRef.contains(e.target)&&n.blurInput(),n.initialTouchX=0,n.initialTouchY=0)},n.onControlTouchEnd=function(e){n.userIsDragging||n.onControlMouseDown(e)},n.onClearIndicatorTouchEnd=function(e){n.userIsDragging||n.onClearIndicatorMouseDown(e)},n.onDropdownIndicatorTouchEnd=function(e){n.userIsDragging||n.onDropdownIndicatorMouseDown(e)},n.handleInputChange=function(e){var t=e.currentTarget.value;n.inputIsHiddenAfterUpdate=!1,n.onInputChange(t,{action:"input-change"}),n.onMenuOpen()},n.onInputFocus=function(e){var t=n.props,r=t.isSearchable,i=t.isMulti;n.props.onFocus&&n.props.onFocus(e),n.inputIsHiddenAfterUpdate=!1,n.announceAriaLiveContext({event:"input",context:{isSearchable:r,isMulti:i}}),n.setState({isFocused:!0}),(n.openAfterFocus||n.props.openMenuOnFocus)&&n.openMenu("first"),n.openAfterFocus=!1},n.onInputBlur=function(e){n.menuListRef&&n.menuListRef.contains(document.activeElement)?n.inputRef.focus():(n.props.onBlur&&n.props.onBlur(e),n.onInputChange("",{action:"input-blur"}),n.onMenuClose(),n.setState({focusedValue:null,isFocused:!1}))},n.onOptionHover=function(e){n.blockOptionHover||n.state.focusedOption===e||n.setState({focusedOption:e})},n.shouldHideSelectedOptions=function(){var e=n.props,t=e.hideSelectedOptions,r=e.isMulti;return void 0===t?r:t},n.onKeyDown=function(e){var t=n.props,r=t.isMulti,i=t.backspaceRemovesValue,o=t.escapeClearsValue,a=t.inputValue,u=t.isClearable,s=t.isDisabled,l=t.menuIsOpen,c=t.onKeyDown,f=t.tabSelectsValue,p=t.openMenuOnFocus,d=n.state,h=d.focusedOption,v=d.focusedValue,m=d.selectValue;if(!(s||"function"==typeof c&&(c(e),e.defaultPrevented))){switch(n.blockOptionHover=!0,e.key){case"ArrowLeft":if(!r||a)return;n.focusValue("previous");break;case"ArrowRight":if(!r||a)return;n.focusValue("next");break;case"Delete":case"Backspace":if(a)return;if(v)n.removeValue(v);else{if(!i)return;r?n.popValue():u&&n.clearValue()}break;case"Tab":if(n.isComposing)return;if(e.shiftKey||!l||!f||!h||p&&n.isOptionSelected(h,m))return;n.selectOption(h);break;case"Enter":if(229===e.keyCode)break;if(l){if(!h)return;if(n.isComposing)return;n.selectOption(h);break}return;case"Escape":l?(n.inputIsHiddenAfterUpdate=!1,n.onInputChange("",{action:"menu-close"}),n.onMenuClose()):u&&o&&n.clearValue();break;case" ":if(a)return;if(!l){n.openMenu("first");break}if(!h)return;n.selectOption(h);break;case"ArrowUp":l?n.focusOption("up"):n.openMenu("last");break;case"ArrowDown":l?n.focusOption("down"):n.openMenu("first");break;case"PageUp":if(!l)return;n.focusOption("pageup");break;case"PageDown":if(!l)return;n.focusOption("pagedown");break;case"Home":if(!l)return;n.focusOption("first");break;case"End":if(!l)return;n.focusOption("last");break;default:return}e.preventDefault()}},n.buildMenuOptions=function(e,t){var r=e.inputValue,i=void 0===r?"":r,o=e.options,a=function(e,r){var o=n.isOptionDisabled(e,t),a=n.isOptionSelected(e,t),u=n.getOptionLabel(e),s=n.getOptionValue(e);if(!(n.shouldHideSelectedOptions()&&a||!n.filterOption({label:u,value:s,data:e},i))){var l=o?void 0:function(){return n.onOptionHover(e)},c=o?void 0:function(){return n.selectOption(e)},f=n.getElementId("option")+"-"+r;return{innerProps:{id:f,onClick:c,onMouseMove:l,onMouseOver:l,tabIndex:-1},data:e,isDisabled:o,isSelected:a,key:f,label:u,type:"option",value:s}}};return o.reduce((function(e,t,r){if(t.options){n.hasGroups||(n.hasGroups=!0);var i=t.options.map((function(t,n){var i=a(t,r+"-"+n);return i&&e.focusable.push(t),i})).filter(Boolean);if(i.length){var o=n.getElementId("group")+"-"+r;e.render.push({type:"group",key:o,data:t,options:i})}}else{var u=a(t,""+r);u&&(e.render.push(u),e.focusable.push(t))}return e}),{render:[],focusable:[]})};var r=t.value;n.cacheComponents=h(n.cacheComponents,Ae).bind(Ft(Ft(n))),n.cacheComponents(t.components),n.instancePrefix="react-select-"+(n.props.instanceId||++jt);var i=re(r);n.buildMenuOptions=h(n.buildMenuOptions,(function(e,t){var n=e,r=n[0],i=n[1],o=t,a=o[0];return Ae(i,o[1])&&Ae(r.inputValue,a.inputValue)&&Ae(r.options,a.options)})).bind(Ft(Ft(n)));var o=t.menuIsOpen?n.buildMenuOptions(t,i):{render:[],focusable:[]};return n.state.menuOptions=o,n.state.selectValue=i,n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()},i.UNSAFE_componentWillReceiveProps=function(e){var t=this.props,n=t.options,r=t.value,i=t.menuIsOpen,o=t.inputValue;if(this.cacheComponents(e.components),e.value!==r||e.options!==n||e.menuIsOpen!==i||e.inputValue!==o){var a=re(e.value),u=e.menuIsOpen?this.buildMenuOptions(e,a):{render:[],focusable:[]},s=this.getNextFocusedValue(a),l=this.getNextFocusedOption(u.focusable);this.setState({menuOptions:u,selectValue:a,focusedOption:l,focusedValue:s})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)},i.componentDidUpdate=function(e){var t,n,r,i,o,a=this.props,u=a.isDisabled,s=a.menuIsOpen,l=this.state.isFocused;(l&&!u&&e.isDisabled||l&&s&&!e.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(t=this.menuListRef,n=this.focusedOptionRef,r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),o=n.offsetHeight/3,i.bottom+o>r.bottom?ae(t,Math.min(n.offsetTop+n.clientHeight-t.offsetHeight+o,t.scrollHeight)):i.top-o-1&&(u=s)}this.scrollToFocusedOptionOnUpdate=!(i&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.setState({menuOptions:o,focusedValue:null,focusedOption:o.focusable[u]},(function(){t.onMenuOpen(),t.announceAriaLiveContext({event:"menu"})}))},i.focusValue=function(e){var t=this.props,n=t.isMulti,r=t.isSearchable,i=this.state,o=i.selectValue,a=i.focusedValue;if(n){this.setState({focusedOption:null});var u=o.indexOf(a);a||(u=-1,this.announceAriaLiveContext({event:"value"}));var s=o.length-1,l=-1;if(o.length){switch(e){case"previous":l=0===u?0:-1===u?s:u-1;break;case"next":u>-1&&u0?a-1:i.length-1:"down"===e?o=(a+1)%i.length:"pageup"===e?(o=a-t)<0&&(o=0):"pagedown"===e?(o=a+t)>i.length-1&&(o=i.length-1):"last"===e&&(o=i.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:i[o],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:At(i[o])}})}},i.getTheme=function(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(kt):St({},kt,this.props.theme):kt},i.getCommonProps=function(){var e=this.clearValue,t=this.getStyles,n=this.setValue,r=this.selectOption,i=this.props,o=i.classNamePrefix,a=i.isMulti,u=i.isRtl,s=i.options,l=this.state.selectValue,c=this.hasValue();return{cx:ne.bind(null,o),clearValue:e,getStyles:t,getValue:function(){return l},hasValue:c,isMulti:a,isRtl:u,options:s,selectOption:r,setValue:n,selectProps:i,theme:this.getTheme()}},i.getNextFocusedValue=function(e){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var t=this.state,n=t.focusedValue,r=t.selectValue.indexOf(n);if(r>-1){if(e.indexOf(n)>-1)return n;if(r-1?t:e[0]},i.hasValue=function(){return this.state.selectValue.length>0},i.hasOptions=function(){return!!this.state.menuOptions.render.length},i.countOptions=function(){return this.state.menuOptions.focusable.length},i.isClearable=function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t},i.isOptionDisabled=function(e,t){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(e,t)},i.isOptionSelected=function(e,t){var n=this;if(t.indexOf(e)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(e,t);var r=this.getOptionValue(e);return t.some((function(e){return n.getOptionValue(e)===r}))},i.filterOption=function(e,t){return!this.props.filterOption||this.props.filterOption(e,t)},i.formatOptionLabel=function(e,t){if("function"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,r=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:r})}return this.getOptionLabel(e)},i.formatGroupLabel=function(e){return this.props.formatGroupLabel(e)},i.startListeningComposition=function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))},i.stopListeningComposition=function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))},i.startListeningToTouch=function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))},i.stopListeningToTouch=function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))},i.constructAriaLiveMessage=function(){var e=this.state,t=e.ariaLiveContext,n=e.selectValue,r=e.focusedValue,i=e.focusedOption,o=this.props,a=o.options,u=o.menuIsOpen,s=o.inputValue,l=o.screenReaderStatus;return(r?function(e){var t=e.focusedValue,n=e.getOptionLabel,r=e.selectValue;return"value "+n(t)+" focused, "+(r.indexOf(t)+1)+" of "+r.length+"."}({focusedValue:r,getOptionLabel:this.getOptionLabel,selectValue:n}):"")+" "+(i&&u?function(e){var t=e.focusedOption,n=e.getOptionLabel,r=e.options;return"option "+n(t)+" focused"+(t.isDisabled?" disabled":"")+", "+(r.indexOf(t)+1)+" of "+r.length+"."}({focusedOption:i,getOptionLabel:this.getOptionLabel,options:a}):"")+" "+function(e){var t=e.inputValue;return e.screenReaderMessage+(t?" for search term "+t:"")+"."}({inputValue:s,screenReaderMessage:l({count:this.countOptions()})})+" "+t},i.renderInput=function(){var e=this.props,t=e.isDisabled,n=e.isSearchable,r=e.inputId,i=e.inputValue,a=e.tabIndex,u=this.components.Input,s=this.state.inputIsHidden,l=r||this.getElementId("input"),c={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]};if(!n)return o.a.createElement(st,St({id:l,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:ee,onFocus:this.onInputFocus,readOnly:!0,disabled:t,tabIndex:a,value:""},c));var f=this.commonProps,p=f.cx,d=f.theme,h=f.selectProps;return o.a.createElement(u,St({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:p,getStyles:this.getStyles,id:l,innerRef:this.getInputRef,isDisabled:t,isHidden:s,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:h,spellCheck:"false",tabIndex:a,theme:d,type:"text",value:i},c))},i.renderPlaceholderOrValue=function(){var e=this,t=this.components,n=t.MultiValue,r=t.MultiValueContainer,i=t.MultiValueLabel,a=t.MultiValueRemove,u=t.SingleValue,s=t.Placeholder,l=this.commonProps,c=this.props,f=c.controlShouldRenderValue,p=c.isDisabled,d=c.isMulti,h=c.inputValue,v=c.placeholder,m=this.state,g=m.selectValue,b=m.focusedValue,y=m.isFocused;if(!this.hasValue()||!f)return h?null:o.a.createElement(s,St({},l,{key:"placeholder",isDisabled:p,isFocused:y}),v);if(d)return g.map((function(t,u){var s=t===b;return o.a.createElement(n,St({},l,{components:{Container:r,Label:i,Remove:a},isFocused:s,isDisabled:p,key:e.getOptionValue(t),index:u,removeProps:{onClick:function(){return e.removeValue(t)},onTouchEnd:function(){return e.removeValue(t)},onMouseDown:function(e){e.preventDefault(),e.stopPropagation()}},data:t}),e.formatOptionLabel(t,"value"))}));if(h)return null;var E=g[0];return o.a.createElement(u,St({},l,{data:E,isDisabled:p}),this.formatOptionLabel(E,"value"))},i.renderClearIndicator=function(){var e=this.components.ClearIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,i=n.isLoading,a=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||i)return null;var u={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return o.a.createElement(e,St({},t,{innerProps:u,isFocused:a}))},i.renderLoadingIndicator=function(){var e=this.components.LoadingIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,i=n.isLoading,a=this.state.isFocused;if(!e||!i)return null;return o.a.createElement(e,St({},t,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:a}))},i.renderIndicatorSeparator=function(){var e=this.components,t=e.DropdownIndicator,n=e.IndicatorSeparator;if(!t||!n)return null;var r=this.commonProps,i=this.props.isDisabled,a=this.state.isFocused;return o.a.createElement(n,St({},r,{isDisabled:i,isFocused:a}))},i.renderDropdownIndicator=function(){var e=this.components.DropdownIndicator;if(!e)return null;var t=this.commonProps,n=this.props.isDisabled,r=this.state.isFocused,i={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return o.a.createElement(e,St({},t,{innerProps:i,isDisabled:n,isFocused:r}))},i.renderMenu=function(){var e=this,t=this.components,n=t.Group,r=t.GroupHeading,i=t.Menu,a=t.MenuList,u=t.MenuPortal,s=t.LoadingMessage,l=t.NoOptionsMessage,c=t.Option,f=this.commonProps,p=this.state,d=p.focusedOption,h=p.menuOptions,v=this.props,m=v.captureMenuScroll,g=v.inputValue,b=v.isLoading,y=v.loadingMessage,E=v.minMenuHeight,_=v.maxMenuHeight,w=v.menuIsOpen,O=v.menuPlacement,C=v.menuPosition,A=v.menuPortalTarget,x=v.menuShouldBlockScroll,k=v.menuShouldScrollIntoView,S=v.noOptionsMessage,F=v.onMenuScrollToTop,D=v.onMenuScrollToBottom;if(!w)return null;var I,j=function(t){var n=d===t.data;return t.innerRef=n?e.getFocusedOptionRef:void 0,o.a.createElement(c,St({},f,t,{isFocused:n}),e.formatOptionLabel(t.data,"menu"))};if(this.hasOptions())I=h.render.map((function(t){if("group"===t.type){t.type;var i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,["type"]),a=t.key+"-heading";return o.a.createElement(n,St({},f,i,{Heading:r,headingProps:{id:a},label:e.formatGroupLabel(t.data)}),t.options.map((function(e){return j(e)})))}if("option"===t.type)return j(t)}));else if(b){var N=y({inputValue:g});if(null===N)return null;I=o.a.createElement(s,f,N)}else{var M=S({inputValue:g});if(null===M)return null;I=o.a.createElement(l,f,M)}var L={minMenuHeight:E,maxMenuHeight:_,menuPlacement:O,menuPosition:C,menuShouldScrollIntoView:k},P=o.a.createElement(ve,St({},f,L),(function(t){var n=t.ref,r=t.placerProps,u=r.placement,s=r.maxHeight;return o.a.createElement(i,St({},f,L,{innerRef:n,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove},isLoading:b,placement:u}),o.a.createElement(wt,{isEnabled:m,onTopArrive:F,onBottomArrive:D},o.a.createElement(Et,{isEnabled:x},o.a.createElement(a,St({},f,{innerRef:e.getMenuListRef,isLoading:b,maxHeight:s}),I))))}));return A||"fixed"===C?o.a.createElement(u,St({},f,{appendTo:A,controlElement:this.controlRef,menuPlacement:O,menuPosition:C}),P):P},i.renderFormField=function(){var e=this,t=this.props,n=t.delimiter,r=t.isDisabled,i=t.isMulti,a=t.name,u=this.state.selectValue;if(a&&!r){if(i){if(n){var s=u.map((function(t){return e.getOptionValue(t)})).join(n);return o.a.createElement("input",{name:a,type:"hidden",value:s})}var l=u.length>0?u.map((function(t,n){return o.a.createElement("input",{key:"i-"+n,name:a,type:"hidden",value:e.getOptionValue(t)})})):o.a.createElement("input",{name:a,type:"hidden"});return o.a.createElement("div",null,l)}var c=u[0]?this.getOptionValue(u[0]):"";return o.a.createElement("input",{name:a,type:"hidden",value:c})}},i.renderLiveRegion=function(){return this.state.isFocused?o.a.createElement(at,{"aria-live":"polite"},o.a.createElement("p",{id:"aria-selection-event"},"\xa0",this.state.ariaLiveSelection),o.a.createElement("p",{id:"aria-context"},"\xa0",this.constructAriaLiveMessage())):null},i.render=function(){var e=this.components,t=e.Control,n=e.IndicatorsContainer,r=e.SelectContainer,i=e.ValueContainer,a=this.props,u=a.className,s=a.id,l=a.isDisabled,c=a.menuIsOpen,f=this.state.isFocused,p=this.commonProps=this.getCommonProps();return o.a.createElement(r,St({},p,{className:u,innerProps:{id:s,onKeyDown:this.onKeyDown},isDisabled:l,isFocused:f}),this.renderLiveRegion(),o.a.createElement(t,St({},p,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:l,isFocused:f,menuIsOpen:c}),o.a.createElement(i,St({},p,{isDisabled:l}),this.renderPlaceholderOrValue(),this.renderInput()),o.a.createElement(n,St({},p,{isDisabled:l}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())},r}(i.Component);function Mt(){return(Mt=Object.assign||function(e){for(var t=1;t1?n-1:0),i=1;i=0||(i[n]=e[n]);return i}(t,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return o.a.createElement(Pt,Mt({},n,{ref:function(t){e.select=t},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))},r}(i.Component),Tt.defaultProps=Lt,Rt),Vt=n(266),zt=n.n(Vt),Ut=n(397),Wt=n.n(Ut),Ht=n(352);var $t=function(){return Object(i.useContext)(Ht.a)},Gt=37,qt=39;function Yt(e){var t=e.block,n=e.centered,r=e.changeSelectedValue,i=e.className,a=e.handleKeydown,u=e.style,s=e.values,l=e.selectedValue,c=e.tabRefs;return o.a.createElement("div",{className:n?"tabs--centered":null},o.a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:zt()("tabs",i,{"tabs--block":t}),style:u},s.map((function(e){var t=e.value,n=e.label;return o.a.createElement("li",{role:"tab",tabIndex:"0","aria-selected":l===t,className:zt()("tab-item",{"tab-item--active":l===t}),key:t,ref:function(e){return c.push(e)},onKeyDown:function(e){return a(c,e.target,e)},onFocus:function(){return r(t)},onClick:function(){return r(t)}},n)}))))}function Kt(e){var t=e.placeholder,n=e.selectedValue,r=e.changeSelectedValue,i=e.size,a=e.values,u=a;if(u[0].group){var s=_.groupBy(u,"group");u=Object.keys(s).map((function(e){return{label:e,options:s[e]}}))}return o.a.createElement(Bt,{className:"react-select-container react-select--"+i,classNamePrefix:"react-select",options:u,isClearable:n,placeholder:t,value:a.find((function(e){return e.value==n})),onChange:function(e){return r(e?e.value:null)}})}var Zt=function(e){e.block,e.centered;var t=e.children,n=e.defaultValue,a=e.groupId,u=e.label,s=e.placeholder,l=e.select,c=e.size,f=(e.style,e.values),p=e.urlKey,d=$t(),h=d.tabGroupChoices,v=d.setTabGroupChoices,m=Object(i.useState)(n),g=m[0],b=m[1];if(null!=a){var y=h[a];null!=y&&y!==g&&b(y)}var E=function(e){b(e),null!=a&&v(a,e)},_=[],w=function(e,t,n){switch(n.keyCode){case qt:!function(e,t){var n=e.indexOf(t)+1;e[n]?e[n].focus():e[0].focus()}(e,t);break;case Gt:!function(e,t){var n=e.indexOf(t)-1;e[n]?e[n].focus():e[e.length-1].focus()}(e,t)}};return Object(i.useEffect)((function(){if("undefined"!=typeof window&&window.location&&p){var e=Wt.a.parse(window.location.search);e[p]&&b(e[p])}}),[]),o.a.createElement(o.a.Fragment,null,o.a.createElement("div",{className:"margin-bottom--"+(c||"md")},u&&o.a.createElement("div",{className:"margin-vert--sm"},u),f.length>1&&(l?o.a.createElement(Kt,Object(r.a)({changeSelectedValue:E,handleKeydown:w,placeholder:s,selectedValue:g,size:c,tabRefs:_},e)):o.a.createElement(Yt,Object(r.a)({changeSelectedValue:E,handleKeydown:w,selectedValue:g,tabRefs:_},e)))),i.Children.toArray(t).filter((function(e){return e.props.value===g}))[0])},Xt=n(272),Jt=n(332),Qt=n(267),en=n(305),tn=n.n(en),nn=n(234),rn=n.n(nn),on=(n(235),Object(a.a)("h2")),an=[{title:"Ultra-Fast",icon:"zap",description:o.a.createElement(o.a.Fragment,null,"Built in ",o.a.createElement("a",{href:"https://go.dev/"},"Go"),", gnet is ",o.a.createElement("a",{href:"#performance"},"ultra-fast and memory efficient")," based on the event-driven mechanism. It's designed to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.")},{title:"Lock-Free",icon:"unlock",description:o.a.createElement(o.a.Fragment,null,"gnet is lock-free during the entire runtime, which keeps gnet free from synchronization issues and speeds it up.")},{title:"Concise & Easy-to-use APIs",icon:"layers",description:o.a.createElement(o.a.Fragment,null,"gnet provides concise and easy-to-use APIs for users, it only exposes the essential APIs and takes over most of the tough work for users, minimizing the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementations.")},{title:"Multiple Protocols",icon:"grid",description:o.a.createElement(o.a.Fragment,null,"gnet supports multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket, enabling you to develop a variety of networking applications.")},{title:"Cross Platform",icon:"cpu",description:o.a.createElement(o.a.Fragment,null,"gnet is devised as a cross-platform framework, as a result, it works faultlessly on multiple platforms: Linux, FreeBSD, DragonFly BSD, Windows.")},{title:"Powerful Libraries",icon:"briefcase",description:o.a.createElement(o.a.Fragment,null,"There is a rich set of libraries in gnet, such as memory pool, goroutine pool, elastic buffers, logging package, etc., which makes it convenient for developers to build fast and efficient networking applications.")}];function un(e){var t,n,i=e.features,a=[];for(t=0,n=i.length;t0&&i.a.createElement("div",{className:"row footer__links"},i.a.createElement("div",{className:"col col--5 footer__col"},i.a.createElement("div",{className:"margin-bottom--md"},i.a.createElement(f.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),i.a.createElement("div",{className:"margin-bottom--md"},i.a.createElement(N,{description:!1,width:"150px"})),i.a.createElement("div",null,i.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},i.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",i.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},i.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",i.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},i.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),u.map((function(e,t){return i.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?i.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?i.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?i.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):i.a.createElement("li",{key:e.href||e.to,className:"footer__item"},i.a.createElement(P,e))}))):null)}))),(l||o)&&i.a.createElement("div",{className:"text--center"},l&&l.src&&i.a.createElement("div",{className:"margin-bottom--sm"},l.href?i.a.createElement("a",{href:l.href,target:"_blank",rel:"noopener noreferrer",className:L.a.footerLogoLink},i.a.createElement(T,{alt:l.alt,url:c})):i.a.createElement(T,{alt:l.alt,url:c}),i.a.createElement("br",null),i.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:L.a.footerLogoLink},i.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),o,i.a.createElement("br",null),i.a.createElement("small",null,i.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",i.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},B=n(290),V=n(291),z=n(3);n(135);t.a=function(e){var t=Object(h.a)().siteConfig,n=void 0===t?{}:t,r=n.favicon,u=(n.tagline,n.title),s=n.themeConfig.image,l=n.url,c=e.children,f=e.title,p=e.noFooter,d=e.description,v=e.image,m=e.keywords,g=(e.permalink,e.version),b=f?f+" | "+u:u,y=v||s,E=l+Object(O.a)(y),_=Object(O.a)(r),w=Object(z.h)(),C=w?"https://gnet.host"+(w.pathname.endsWith("/")?w.pathname:w.pathname+"/"):null;return i.a.createElement(V.a,null,i.a.createElement(B.a,null,i.a.createElement(a.a,null,i.a.createElement("html",{lang:"en"}),i.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),b&&i.a.createElement("title",null,b),b&&i.a.createElement("meta",{property:"og:title",content:b}),r&&i.a.createElement("link",{rel:"shortcut icon",href:_}),d&&i.a.createElement("meta",{name:"description",content:d}),d&&i.a.createElement("meta",{property:"og:description",content:d}),g&&i.a.createElement("meta",{name:"docsearch:version",content:g}),m&&m.length&&i.a.createElement("meta",{name:"keywords",content:m.join(",")}),y&&i.a.createElement("meta",{property:"og:image",content:E}),y&&i.a.createElement("meta",{property:"twitter:image",content:E}),y&&i.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+b}),y&&i.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),y&&i.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),C&&i.a.createElement("meta",{property:"og:url",content:C}),i.a.createElement("meta",{name:"twitter:card",content:"summary"}),C&&i.a.createElement("link",{rel:"canonical",href:C})),i.a.createElement(o.a,null),i.a.createElement(I,null),i.a.createElement("div",{className:"main-wrapper"},c),!p&&i.a.createElement(R,null)))}},297:function(e,t,n){"use strict";(function(e){var r=n(1),i=(n(295),n(296),n(78),n(79),n(306),n(0)),o=n.n(i),a=n(307),u=n.n(a),s=n(320),l=n(52),c=n(266),f=n.n(c),p=n(315),d=n(308),h=n.n(d),v=n(267),m=n(276),g=n(136),b=n.n(g);(void 0!==e?e:window).Prism=l.a,n(309),n(310),n(311),n(312),n(313),n(314);var y=/{([\d,-]+)}/,E=/title=".*"/;t.a=function(e){var t=e.children,n=e.className,a=e.metastring,l=Object(v.a)().siteConfig.themeConfig.prism,c=void 0===l?{}:l,d=Object(i.useState)(!1),g=d[0],_=d[1],w=Object(i.useState)(!1),O=w[0],C=w[1];Object(i.useEffect)((function(){C(!0)}),[]);var A=Object(i.useRef)(null),x=Object(i.useRef)(null),k=[],S="",F=Object(m.a)().isDarkTheme,D=c.theme||p.a,I=c.darkTheme||D,j=F?I:D;if(a&&y.test(a)){var N=a.match(y)[1];k=h.a.parse(N).filter((function(e){return e>0}))}a&&E.test(a)&&(S=a.match(E)[0].split("title=")[1].replace(/"+/g,"")),Object(i.useEffect)((function(){var e;return x.current&&(e=new u.a(x.current,{target:function(){return A.current}})),function(){e&&e.destroy()}}),[x.current,A.current]);var M=n&&n.replace(/language-/,"");!M&&c.defaultLanguage&&(M=c.defaultLanguage);var L=function(){window.getSelection().empty(),_(!0),setTimeout((function(){return _(!1)}),2e3)};return o.a.createElement(s.a,Object(r.a)({},s.b,{key:O,theme:j,code:t.trim(),language:M}),(function(e){var t,n,i=e.className,a=e.style,u=e.tokens,s=e.getLineProps,l=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,S&&o.a.createElement("div",{style:a,className:b.a.codeBlockTitle},S),o.a.createElement("div",{className:b.a.codeBlockContent},o.a.createElement("button",{ref:x,type:"button","aria-label":"Copy code to clipboard",className:f()(b.a.copyButton,(t={},t[b.a.copyButtonWithTitle]=S,t)),onClick:L},g?"Copied":"Copy"),o.a.createElement("pre",{className:f()(i,b.a.codeBlock,(n={},n[b.a.codeBlockWithTitle]=S,n))},o.a.createElement("div",{ref:A,className:b.a.codeBlockLines,style:a},u.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=s({line:e,key:t});return k.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(r.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(r.a)({key:t},l({token:e,key:t})))})))}))))))}))}}).call(this,n(77))},305:function(e,t,n){(function(e,r){var i;(function(){var o="Expected a function",a="__lodash_placeholder__",u=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],s="[object Arguments]",l="[object Array]",c="[object Boolean]",f="[object Date]",p="[object Error]",d="[object Function]",h="[object GeneratorFunction]",v="[object Map]",m="[object Number]",g="[object Object]",b="[object RegExp]",y="[object Set]",E="[object String]",_="[object Symbol]",w="[object WeakMap]",O="[object ArrayBuffer]",C="[object DataView]",A="[object Float32Array]",x="[object Float64Array]",k="[object Int8Array]",S="[object Int16Array]",F="[object Int32Array]",D="[object Uint8Array]",I="[object Uint16Array]",j="[object Uint32Array]",N=/\b__p \+= '';/g,M=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,T=/[&<>"']/g,R=RegExp(P.source),B=RegExp(T.source),V=/<%-([\s\S]+?)%>/g,z=/<%([\s\S]+?)%>/g,U=/<%=([\s\S]+?)%>/g,W=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,$=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/[\\^$.*+?()[\]{}|]/g,q=RegExp(G.source),Y=/^\s+|\s+$/g,K=/^\s+/,Z=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,oe=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,ue=/^0o[0-7]+$/i,se=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ce=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",he="[\\ud800-\\udfff]",ve="["+de+"]",me="["+pe+"]",ge="\\d+",be="[\\u2700-\\u27bf]",ye="[a-z\\xdf-\\xf6\\xf8-\\xff]",Ee="[^\\ud800-\\udfff"+de+ge+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",_e="\\ud83c[\\udffb-\\udfff]",we="[^\\ud800-\\udfff]",Oe="(?:\\ud83c[\\udde6-\\uddff]){2}",Ce="[\\ud800-\\udbff][\\udc00-\\udfff]",Ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",xe="(?:"+ye+"|"+Ee+")",ke="(?:"+Ae+"|"+Ee+")",Se="(?:"+me+"|"+_e+")"+"?",Fe="[\\ufe0e\\ufe0f]?"+Se+("(?:\\u200d(?:"+[we,Oe,Ce].join("|")+")[\\ufe0e\\ufe0f]?"+Se+")*"),De="(?:"+[be,Oe,Ce].join("|")+")"+Fe,Ie="(?:"+[we+me+"?",me,Oe,Ce,he].join("|")+")",je=RegExp("['\u2019]","g"),Ne=RegExp(me,"g"),Me=RegExp(_e+"(?="+_e+")|"+Ie+Fe,"g"),Le=RegExp([Ae+"?"+ye+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[ve,Ae,"$"].join("|")+")",ke+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[ve,Ae+xe,"$"].join("|")+")",Ae+"?"+xe+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Ae+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ge,De].join("|"),"g"),Pe=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),Te=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Be=-1,Ve={};Ve[A]=Ve[x]=Ve[k]=Ve[S]=Ve[F]=Ve[D]=Ve["[object Uint8ClampedArray]"]=Ve[I]=Ve[j]=!0,Ve[s]=Ve[l]=Ve[O]=Ve[c]=Ve[C]=Ve[f]=Ve[p]=Ve[d]=Ve[v]=Ve[m]=Ve[g]=Ve[b]=Ve[y]=Ve[E]=Ve[w]=!1;var ze={};ze[s]=ze[l]=ze[O]=ze[C]=ze[c]=ze[f]=ze[A]=ze[x]=ze[k]=ze[S]=ze[F]=ze[v]=ze[m]=ze[g]=ze[b]=ze[y]=ze[E]=ze[_]=ze[D]=ze["[object Uint8ClampedArray]"]=ze[I]=ze[j]=!0,ze[p]=ze[d]=ze[w]=!1;var Ue={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},We=parseFloat,He=parseInt,$e="object"==typeof e&&e&&e.Object===Object&&e,Ge="object"==typeof self&&self&&self.Object===Object&&self,qe=$e||Ge||Function("return this")(),Ye=t&&!t.nodeType&&t,Ke=Ye&&"object"==typeof r&&r&&!r.nodeType&&r,Ze=Ke&&Ke.exports===Ye,Xe=Ze&&$e.process,Je=function(){try{var e=Ke&&Ke.require&&Ke.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(t){}}(),Qe=Je&&Je.isArrayBuffer,et=Je&&Je.isDate,tt=Je&&Je.isMap,nt=Je&&Je.isRegExp,rt=Je&&Je.isSet,it=Je&&Je.isTypedArray;function ot(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function at(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function pt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Mt(e,t){for(var n=e.length;n--&&_t(t,e[n],0)>-1;);return n}function Lt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Pt=xt({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"}),Tt=xt({"&":"&","<":"<",">":">",'"':""","'":"'"});function Rt(e){return"\\"+Ue[e]}function Bt(e){return Pe.test(e)}function Vt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function zt(e,t){return function(n){return e(t(n))}}function Ut(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"});var Yt=function e(t){var n,r=(t=null==t?qe:Yt.defaults(qe.Object(),t,Yt.pick(qe,Re))).Array,i=t.Date,pe=t.Error,de=t.Function,he=t.Math,ve=t.Object,me=t.RegExp,ge=t.String,be=t.TypeError,ye=r.prototype,Ee=de.prototype,_e=ve.prototype,we=t["__core-js_shared__"],Oe=Ee.toString,Ce=_e.hasOwnProperty,Ae=0,xe=(n=/[^.]+$/.exec(we&&we.keys&&we.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ke=_e.toString,Se=Oe.call(ve),Fe=qe._,De=me("^"+Oe.call(Ce).replace(G,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ie=Ze?t.Buffer:void 0,Me=t.Symbol,Pe=t.Uint8Array,Ue=Ie?Ie.allocUnsafe:void 0,$e=zt(ve.getPrototypeOf,ve),Ge=ve.create,Ye=_e.propertyIsEnumerable,Ke=ye.splice,Xe=Me?Me.isConcatSpreadable:void 0,Je=Me?Me.iterator:void 0,bt=Me?Me.toStringTag:void 0,xt=function(){try{var e=Qi(ve,"defineProperty");return e({},"",{}),e}catch(t){}}(),Kt=t.clearTimeout!==qe.clearTimeout&&t.clearTimeout,Zt=i&&i.now!==qe.Date.now&&i.now,Xt=t.setTimeout!==qe.setTimeout&&t.setTimeout,Jt=he.ceil,Qt=he.floor,en=ve.getOwnPropertySymbols,tn=Ie?Ie.isBuffer:void 0,nn=t.isFinite,rn=ye.join,on=zt(ve.keys,ve),an=he.max,un=he.min,sn=i.now,ln=t.parseInt,cn=he.random,fn=ye.reverse,pn=Qi(t,"DataView"),dn=Qi(t,"Map"),hn=Qi(t,"Promise"),vn=Qi(t,"Set"),mn=Qi(t,"WeakMap"),gn=Qi(ve,"create"),bn=mn&&new mn,yn={},En=ko(pn),_n=ko(dn),wn=ko(hn),On=ko(vn),Cn=ko(mn),An=Me?Me.prototype:void 0,xn=An?An.valueOf:void 0,kn=An?An.toString:void 0;function Sn(e){if(Ha(e)&&!Na(e)&&!(e instanceof jn)){if(e instanceof In)return e;if(Ce.call(e,"__wrapped__"))return So(e)}return new In(e)}var Fn=function(){function e(){}return function(t){if(!Wa(t))return{};if(Ge)return Ge(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Dn(){}function In(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function jn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Nn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Zn(e,t,n,r,i,o){var a,u=1&t,l=2&t,p=4&t;if(n&&(a=i?n(e,r,i,o):n(e)),void 0!==a)return a;if(!Wa(e))return e;var w=Na(e);if(w){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Ce.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!u)return gi(e,a)}else{var N=no(e),M=N==d||N==h;if(Ta(e))return fi(e,u);if(N==g||N==s||M&&!i){if(a=l||M?{}:io(e),!u)return l?function(e,t){return bi(e,to(e),t)}(e,function(e,t){return e&&bi(t,_u(t),e)}(a,e)):function(e,t){return bi(e,eo(e),t)}(e,Gn(a,e))}else{if(!ze[N])return i?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case O:return pi(e);case c:case f:return new r(+e);case C:return function(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case A:case x:case k:case S:case F:case D:case"[object Uint8ClampedArray]":case I:case j:return di(e,n);case v:return new r;case m:case E:return new r(e);case b:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new r;case _:return i=e,xn?ve(xn.call(i)):{}}var i}(e,N,u)}}o||(o=new Tn);var L=o.get(e);if(L)return L;o.set(e,a),Ka(e)?e.forEach((function(r){a.add(Zn(r,t,n,r,e,o))})):$a(e)&&e.forEach((function(r,i){a.set(i,Zn(r,t,n,i,e,o))}));var P=w?void 0:(p?l?Gi:$i:l?_u:Eu)(e);return ut(P||e,(function(r,i){P&&(r=e[i=r]),Wn(a,i,Zn(r,t,n,i,e,o))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var i=n[r],o=t[i],a=e[i];if(void 0===a&&!(i in e)||!o(a))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new be(o);return Eo((function(){e.apply(void 0,n)}),t)}function Qn(e,t,n,r){var i=-1,o=ft,a=!0,u=e.length,s=[],l=t.length;if(!u)return s;n&&(t=dt(t,Dt(n))),r?(o=pt,a=!1):t.length>=200&&(o=jt,a=!1,t=new Pn(t));e:for(;++i-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Hn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Ln.prototype.clear=function(){this.size=0,this.__data__={hash:new Nn,map:new(dn||Mn),string:new Nn}},Ln.prototype.delete=function(e){var t=Xi(this,e).delete(e);return this.size-=t?1:0,t},Ln.prototype.get=function(e){return Xi(this,e).get(e)},Ln.prototype.has=function(e){return Xi(this,e).has(e)},Ln.prototype.set=function(e,t){var n=Xi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Pn.prototype.add=Pn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(e){return this.__data__.has(e)},Tn.prototype.clear=function(){this.__data__=new Mn,this.size=0},Tn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Tn.prototype.get=function(e){return this.__data__.get(e)},Tn.prototype.has=function(e){return this.__data__.has(e)},Tn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ln(r)}return n.set(e,t),this.size=n.size,this};var er=_i(sr),tr=_i(lr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r0&&n(u)?t>1?or(u,t-1,n,r,i):ht(i,u):r||(i[i.length]=u)}return i}var ar=wi(),ur=wi(!0);function sr(e,t){return e&&ar(e,t,Eu)}function lr(e,t){return e&&ur(e,t,Eu)}function cr(e,t){return ct(t,(function(t){return Va(e[t])}))}function fr(e,t){for(var n=0,r=(t=ui(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&Ce.call(e,t)}function mr(e,t){return null!=e&&t in ve(e)}function gr(e,t,n){for(var i=n?pt:ft,o=e[0].length,a=e.length,u=a,s=r(a),l=1/0,c=[];u--;){var f=e[u];u&&t&&(f=dt(f,Dt(t))),l=un(f.length,l),s[u]=!n&&(t||o>=120&&f.length>=120)?new Pn(u&&f):void 0}f=e[0];var p=-1,d=s[0];e:for(;++p=u)return s;var l=n[r];return s*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)}))}function Nr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)u!==e&&Ke.call(u,s,1),Ke.call(e,s,1);return e}function Lr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;ao(i)?Ke.call(e,i,1):Qr(e,i)}}return e}function Pr(e,t){return e+Qt(cn()*(t-e+1))}function Tr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Qt(t/2))&&(e+=e)}while(t);return n}function Rr(e,t){return _o(vo(e,t,Gu),e+"")}function Br(e){return Bn(Fu(e))}function Vr(e,t){var n=Fu(e);return Co(n,Kn(t,0,n.length))}function zr(e,t,n,r){if(!Wa(e))return e;for(var i=-1,o=(t=ui(t,e)).length,a=o-1,u=e;null!=u&&++io?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=r(o);++i>>1,a=e[o];null!==a&&!Xa(a)&&(n?a<=t:a=200){var l=t?null:Ti(e);if(l)return Wt(l);a=!1,i=jt,s=new Pn}else s=t?[]:u;e:for(;++r=r?e:$r(e,t,n)}var ci=Kt||function(e){return qe.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ue?Ue(n):new e.constructor(n);return e.copy(r),r}function pi(e){var t=new e.constructor(e.byteLength);return new Pe(t).set(new Pe(e)),t}function di(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Xa(e),a=void 0!==t,u=null===t,s=t==t,l=Xa(t);if(!u&&!l&&!o&&e>t||o&&a&&s&&!u&&!l||r&&a&&s||!n&&s||!i)return 1;if(!r&&!o&&!l&&e1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,a&&uo(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=ve(t);++r-1?i[o?t[a]:a]:void 0}}function ki(e){return Hi((function(t){var n=t.length,r=n,i=In.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new be(o);if(i&&!u&&"wrapper"==Yi(a))var u=new In([],!0)}for(r=u?r:n;++r1&&y.reverse(),f&&lu))return!1;var l=o.get(e),c=o.get(t);if(l&&c)return l==t&&c==e;var f=-1,p=!0,d=2&n?new Pn:void 0;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return ut(u,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(J);return t?t[1].split(Q):[]}(r),n)))}function Oo(e){var t=0,n=0;return function(){var r=sn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Co(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yo(e,n)}));function ta(e){var t=Sn(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var ra=Hi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof jn&&ao(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[i],thisArg:void 0}),new In(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var ia=yi((function(e,t,n){Ce.call(e,n)?++e[n]:qn(e,n,1)}));var oa=xi(jo),aa=xi(No);function ua(e,t){return(Na(e)?ut:er)(e,Zi(t,3))}function sa(e,t){return(Na(e)?st:tr)(e,Zi(t,3))}var la=yi((function(e,t,n){Ce.call(e,n)?e[n].push(t):qn(e,n,[t])}));var ca=Rr((function(e,t,n){var i=-1,o="function"==typeof t,a=La(e)?r(e.length):[];return er(e,(function(e){a[++i]=o?ot(t,e,n):br(e,t,n)})),a})),fa=yi((function(e,t,n){qn(e,n,t)}));function pa(e,t){return(Na(e)?dt:kr)(e,Zi(t,3))}var da=yi((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ha=Rr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&uo(e,t[0],t[1])?t=[]:n>2&&uo(t[0],t[1],t[2])&&(t=[t[0]]),jr(e,or(t,1),[])})),va=Zt||function(){return qe.Date.now()};function ma(e,t,n){return t=n?void 0:t,Bi(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function ga(e,t){var n;if("function"!=typeof t)throw new be(o);return e=ru(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var ba=Rr((function(e,t,n){var r=1;if(n.length){var i=Ut(n,Ki(ba));r|=32}return Bi(e,r,t,n,i)})),ya=Rr((function(e,t,n){var r=3;if(n.length){var i=Ut(n,Ki(ya));r|=32}return Bi(t,r,e,n,i)}));function Ea(e,t,n){var r,i,a,u,s,l,c=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new be(o);function h(t){var n=r,o=i;return r=i=void 0,c=t,u=e.apply(o,n)}function v(e){return c=e,s=Eo(g,t),f?h(e):u}function m(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-c>=a}function g(){var e=va();if(m(e))return b(e);s=Eo(g,function(e){var n=t-(e-l);return p?un(n,a-(e-c)):n}(e))}function b(e){return s=void 0,d&&r?h(e):(r=i=void 0,u)}function y(){var e=va(),n=m(e);if(r=arguments,i=this,l=e,n){if(void 0===s)return v(l);if(p)return ci(s),s=Eo(g,t),h(l)}return void 0===s&&(s=Eo(g,t)),u}return t=ou(t)||0,Wa(n)&&(f=!!n.leading,a=(p="maxWait"in n)?an(ou(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),y.cancel=function(){void 0!==s&&ci(s),c=0,r=l=i=s=void 0},y.flush=function(){return void 0===s?u:b(va())},y}var _a=Rr((function(e,t){return Jn(e,1,t)})),wa=Rr((function(e,t,n){return Jn(e,ou(t)||0,n)}));function Oa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new be(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Oa.Cache||Ln),n}function Ca(e){if("function"!=typeof e)throw new be(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Oa.Cache=Ln;var Aa=si((function(e,t){var n=(t=1==t.length&&Na(t[0])?dt(t[0],Dt(Zi())):dt(or(t,1),Dt(Zi()))).length;return Rr((function(r){for(var i=-1,o=un(r.length,n);++i=t})),ja=yr(function(){return arguments}())?yr:function(e){return Ha(e)&&Ce.call(e,"callee")&&!Ye.call(e,"callee")},Na=r.isArray,Ma=Qe?Dt(Qe):function(e){return Ha(e)&&dr(e)==O};function La(e){return null!=e&&Ua(e.length)&&!Va(e)}function Pa(e){return Ha(e)&&La(e)}var Ta=tn||os,Ra=et?Dt(et):function(e){return Ha(e)&&dr(e)==f};function Ba(e){if(!Ha(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!qa(e)}function Va(e){if(!Wa(e))return!1;var t=dr(e);return t==d||t==h||"[object AsyncFunction]"==t||"[object Proxy]"==t}function za(e){return"number"==typeof e&&e==ru(e)}function Ua(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Wa(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ha(e){return null!=e&&"object"==typeof e}var $a=tt?Dt(tt):function(e){return Ha(e)&&no(e)==v};function Ga(e){return"number"==typeof e||Ha(e)&&dr(e)==m}function qa(e){if(!Ha(e)||dr(e)!=g)return!1;var t=$e(e);if(null===t)return!0;var n=Ce.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Oe.call(n)==Se}var Ya=nt?Dt(nt):function(e){return Ha(e)&&dr(e)==b};var Ka=rt?Dt(rt):function(e){return Ha(e)&&no(e)==y};function Za(e){return"string"==typeof e||!Na(e)&&Ha(e)&&dr(e)==E}function Xa(e){return"symbol"==typeof e||Ha(e)&&dr(e)==_}var Ja=it?Dt(it):function(e){return Ha(e)&&Ua(e.length)&&!!Ve[dr(e)]};var Qa=Mi(xr),eu=Mi((function(e,t){return e<=t}));function tu(e){if(!e)return[];if(La(e))return Za(e)?Gt(e):gi(e);if(Je&&e[Je])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Je]());var t=no(e);return(t==v?Vt:t==y?Wt:Fu)(e)}function nu(e){return e?(e=ou(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ru(e){var t=nu(e),n=t%1;return t==t?n?t-n:t:0}function iu(e){return e?Kn(ru(e),0,4294967295):0}function ou(e){if("number"==typeof e)return e;if(Xa(e))return NaN;if(Wa(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Wa(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Y,"");var n=oe.test(e);return n||ue.test(e)?He(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function au(e){return bi(e,_u(e))}function uu(e){return null==e?"":Xr(e)}var su=Ei((function(e,t){if(fo(t)||La(t))bi(t,Eu(t),e);else for(var n in t)Ce.call(t,n)&&Wn(e,n,t[n])})),lu=Ei((function(e,t){bi(t,_u(t),e)})),cu=Ei((function(e,t,n,r){bi(t,_u(t),e,r)})),fu=Ei((function(e,t,n,r){bi(t,Eu(t),e,r)})),pu=Hi(Yn);var du=Rr((function(e,t){e=ve(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&uo(t[0],t[1],i)&&(r=1);++n1),t})),bi(e,Gi(e),n),r&&(n=Zn(n,7,Ui));for(var i=t.length;i--;)Qr(n,t[i]);return n}));var Au=Hi((function(e,t){return null==e?{}:function(e,t){return Nr(e,t,(function(t,n){return mu(e,n)}))}(e,t)}));function xu(e,t){if(null==e)return{};var n=dt(Gi(e),(function(e){return[e]}));return t=Zi(t),Nr(e,n,(function(e,n){return t(e,n[0])}))}var ku=Ri(Eu),Su=Ri(_u);function Fu(e){return null==e?[]:It(e,Eu(e))}var Du=Ci((function(e,t,n){return t=t.toLowerCase(),e+(n?Iu(t):t)}));function Iu(e){return Bu(uu(e).toLowerCase())}function ju(e){return(e=uu(e))&&e.replace(le,Pt).replace(Ne,"")}var Nu=Ci((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Mu=Ci((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Lu=Oi("toLowerCase");var Pu=Ci((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Tu=Ci((function(e,t,n){return e+(n?" ":"")+Bu(t)}));var Ru=Ci((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Bu=Oi("toUpperCase");function Vu(e,t,n){return e=uu(e),void 0===(t=n?void 0:t)?function(e){return Te.test(e)}(e)?function(e){return e.match(Le)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var zu=Rr((function(e,t){try{return ot(e,void 0,t)}catch(n){return Ba(n)?n:new pe(n)}})),Uu=Hi((function(e,t){return ut(t,(function(t){t=xo(t),qn(e,t,ba(e[t],e))})),e}));function Wu(e){return function(){return e}}var Hu=ki(),$u=ki(!0);function Gu(e){return e}function qu(e){return Or("function"==typeof e?e:Zn(e,1))}var Yu=Rr((function(e,t){return function(n){return br(n,e,t)}})),Ku=Rr((function(e,t){return function(n){return br(e,n,t)}}));function Zu(e,t,n){var r=Eu(t),i=cr(t,r);null!=n||Wa(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=cr(t,Eu(t)));var o=!(Wa(n)&&"chain"in n&&!n.chain),a=Va(e);return ut(i,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,ht([this.value()],arguments))})})),e}function Xu(){}var Ju=Ii(dt),Qu=Ii(lt),es=Ii(gt);function ts(e){return so(e)?At(xo(e)):function(e){return function(t){return fr(t,e)}}(e)}var ns=Ni(),rs=Ni(!0);function is(){return[]}function os(){return!1}var as=Di((function(e,t){return e+t}),0),us=Pi("ceil"),ss=Di((function(e,t){return e/t}),1),ls=Pi("floor");var cs,fs=Di((function(e,t){return e*t}),1),ps=Pi("round"),ds=Di((function(e,t){return e-t}),0);return Sn.after=function(e,t){if("function"!=typeof t)throw new be(o);return e=ru(e),function(){if(--e<1)return t.apply(this,arguments)}},Sn.ary=ma,Sn.assign=su,Sn.assignIn=lu,Sn.assignInWith=cu,Sn.assignWith=fu,Sn.at=pu,Sn.before=ga,Sn.bind=ba,Sn.bindAll=Uu,Sn.bindKey=ya,Sn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Na(e)?e:[e]},Sn.chain=ta,Sn.chunk=function(e,t,n){t=(n?uo(e,t,n):void 0===t)?1:an(ru(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,a=0,u=r(Jt(i/t));oi?0:i+n),(r=void 0===r||r>i?i:ru(r))<0&&(r+=i),r=n>r?0:iu(r);n>>0)?(e=uu(e))&&("string"==typeof t||null!=t&&!Ya(t))&&!(t=Xr(t))&&Bt(e)?li(Gt(e),0,n):e.split(t,n):[]},Sn.spread=function(e,t){if("function"!=typeof e)throw new be(o);return t=null==t?0:an(ru(t),0),Rr((function(n){var r=n[t],i=li(n,0,t);return r&&ht(i,r),ot(e,this,i)}))},Sn.tail=function(e){var t=null==e?0:e.length;return t?$r(e,1,t):[]},Sn.take=function(e,t,n){return e&&e.length?$r(e,0,(t=n||void 0===t?1:ru(t))<0?0:t):[]},Sn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?$r(e,(t=r-(t=n||void 0===t?1:ru(t)))<0?0:t,r):[]},Sn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Zi(t,3),!1,!0):[]},Sn.takeWhile=function(e,t){return e&&e.length?ti(e,Zi(t,3)):[]},Sn.tap=function(e,t){return t(e),e},Sn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new be(o);return Wa(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ea(e,t,{leading:r,maxWait:t,trailing:i})},Sn.thru=na,Sn.toArray=tu,Sn.toPairs=ku,Sn.toPairsIn=Su,Sn.toPath=function(e){return Na(e)?dt(e,xo):Xa(e)?[e]:gi(Ao(uu(e)))},Sn.toPlainObject=au,Sn.transform=function(e,t,n){var r=Na(e),i=r||Ta(e)||Ja(e);if(t=Zi(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Wa(e)&&Va(o)?Fn($e(e)):{}}return(i?ut:sr)(e,(function(e,r,i){return t(n,e,r,i)})),n},Sn.unary=function(e){return ma(e,1)},Sn.union=Ho,Sn.unionBy=$o,Sn.unionWith=Go,Sn.uniq=function(e){return e&&e.length?Jr(e):[]},Sn.uniqBy=function(e,t){return e&&e.length?Jr(e,Zi(t,2)):[]},Sn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},Sn.unset=function(e,t){return null==e||Qr(e,t)},Sn.unzip=qo,Sn.unzipWith=Yo,Sn.update=function(e,t,n){return null==e?e:ei(e,t,ai(n))},Sn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,ai(n),r)},Sn.values=Fu,Sn.valuesIn=function(e){return null==e?[]:It(e,_u(e))},Sn.without=Ko,Sn.words=Vu,Sn.wrap=function(e,t){return xa(ai(t),e)},Sn.xor=Zo,Sn.xorBy=Xo,Sn.xorWith=Jo,Sn.zip=Qo,Sn.zipObject=function(e,t){return ii(e||[],t||[],Wn)},Sn.zipObjectDeep=function(e,t){return ii(e||[],t||[],zr)},Sn.zipWith=ea,Sn.entries=ku,Sn.entriesIn=Su,Sn.extend=lu,Sn.extendWith=cu,Zu(Sn,Sn),Sn.add=as,Sn.attempt=zu,Sn.camelCase=Du,Sn.capitalize=Iu,Sn.ceil=us,Sn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=ou(n))==n?n:0),void 0!==t&&(t=(t=ou(t))==t?t:0),Kn(ou(e),t,n)},Sn.clone=function(e){return Zn(e,4)},Sn.cloneDeep=function(e){return Zn(e,5)},Sn.cloneDeepWith=function(e,t){return Zn(e,5,t="function"==typeof t?t:void 0)},Sn.cloneWith=function(e,t){return Zn(e,4,t="function"==typeof t?t:void 0)},Sn.conformsTo=function(e,t){return null==t||Xn(e,t,Eu(t))},Sn.deburr=ju,Sn.defaultTo=function(e,t){return null==e||e!=e?t:e},Sn.divide=ss,Sn.endsWith=function(e,t,n){e=uu(e),t=Xr(t);var r=e.length,i=n=void 0===n?r:Kn(ru(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},Sn.eq=Fa,Sn.escape=function(e){return(e=uu(e))&&B.test(e)?e.replace(T,Tt):e},Sn.escapeRegExp=function(e){return(e=uu(e))&&q.test(e)?e.replace(G,"\\$&"):e},Sn.every=function(e,t,n){var r=Na(e)?lt:nr;return n&&uo(e,t,n)&&(t=void 0),r(e,Zi(t,3))},Sn.find=oa,Sn.findIndex=jo,Sn.findKey=function(e,t){return yt(e,Zi(t,3),sr)},Sn.findLast=aa,Sn.findLastIndex=No,Sn.findLastKey=function(e,t){return yt(e,Zi(t,3),lr)},Sn.floor=ls,Sn.forEach=ua,Sn.forEachRight=sa,Sn.forIn=function(e,t){return null==e?e:ar(e,Zi(t,3),_u)},Sn.forInRight=function(e,t){return null==e?e:ur(e,Zi(t,3),_u)},Sn.forOwn=function(e,t){return e&&sr(e,Zi(t,3))},Sn.forOwnRight=function(e,t){return e&&lr(e,Zi(t,3))},Sn.get=vu,Sn.gt=Da,Sn.gte=Ia,Sn.has=function(e,t){return null!=e&&ro(e,t,vr)},Sn.hasIn=mu,Sn.head=Lo,Sn.identity=Gu,Sn.includes=function(e,t,n,r){e=La(e)?e:Fu(e),n=n&&!r?ru(n):0;var i=e.length;return n<0&&(n=an(i+n,0)),Za(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&_t(e,t,n)>-1},Sn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ru(n);return i<0&&(i=an(r+i,0)),_t(e,t,i)},Sn.inRange=function(e,t,n){return t=nu(t),void 0===n?(n=t,t=0):n=nu(n),function(e,t,n){return e>=un(t,n)&&e=-9007199254740991&&e<=9007199254740991},Sn.isSet=Ka,Sn.isString=Za,Sn.isSymbol=Xa,Sn.isTypedArray=Ja,Sn.isUndefined=function(e){return void 0===e},Sn.isWeakMap=function(e){return Ha(e)&&no(e)==w},Sn.isWeakSet=function(e){return Ha(e)&&"[object WeakSet]"==dr(e)},Sn.join=function(e,t){return null==e?"":rn.call(e,t)},Sn.kebabCase=Nu,Sn.last=Bo,Sn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ru(n))<0?an(r+i,0):un(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):Et(e,Ot,i,!0)},Sn.lowerCase=Mu,Sn.lowerFirst=Lu,Sn.lt=Qa,Sn.lte=eu,Sn.max=function(e){return e&&e.length?rr(e,Gu,hr):void 0},Sn.maxBy=function(e,t){return e&&e.length?rr(e,Zi(t,2),hr):void 0},Sn.mean=function(e){return Ct(e,Gu)},Sn.meanBy=function(e,t){return Ct(e,Zi(t,2))},Sn.min=function(e){return e&&e.length?rr(e,Gu,xr):void 0},Sn.minBy=function(e,t){return e&&e.length?rr(e,Zi(t,2),xr):void 0},Sn.stubArray=is,Sn.stubFalse=os,Sn.stubObject=function(){return{}},Sn.stubString=function(){return""},Sn.stubTrue=function(){return!0},Sn.multiply=fs,Sn.nth=function(e,t){return e&&e.length?Ir(e,ru(t)):void 0},Sn.noConflict=function(){return qe._===this&&(qe._=Fe),this},Sn.noop=Xu,Sn.now=va,Sn.pad=function(e,t,n){e=uu(e);var r=(t=ru(t))?$t(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return ji(Qt(i),n)+e+ji(Jt(i),n)},Sn.padEnd=function(e,t,n){e=uu(e);var r=(t=ru(t))?$t(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=cn();return un(e+i*(t-e+We("1e-"+((i+"").length-1))),t)}return Pr(e,t)},Sn.reduce=function(e,t,n){var r=Na(e)?vt:kt,i=arguments.length<3;return r(e,Zi(t,4),n,i,er)},Sn.reduceRight=function(e,t,n){var r=Na(e)?mt:kt,i=arguments.length<3;return r(e,Zi(t,4),n,i,tr)},Sn.repeat=function(e,t,n){return t=(n?uo(e,t,n):void 0===t)?1:ru(t),Tr(uu(e),t)},Sn.replace=function(){var e=arguments,t=uu(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Sn.result=function(e,t,n){var r=-1,i=(t=ui(t,e)).length;for(i||(i=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=un(e,4294967295);e-=4294967295;for(var i=Ft(r,t=Zi(t));++n=o)return e;var u=n-$t(r);if(u<1)return r;var s=a?li(a,0,u).join(""):e.slice(0,u);if(void 0===i)return s+r;if(a&&(u+=s.length-u),Ya(i)){if(e.slice(u).search(i)){var l,c=s;for(i.global||(i=me(i.source,uu(re.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var f=l.index;s=s.slice(0,void 0===f?u:f)}}else if(e.indexOf(Xr(i),u)!=u){var p=s.lastIndexOf(i);p>-1&&(s=s.slice(0,p))}return s+r},Sn.unescape=function(e){return(e=uu(e))&&R.test(e)?e.replace(P,qt):e},Sn.uniqueId=function(e){var t=++Ae;return uu(e)+t},Sn.upperCase=Ru,Sn.upperFirst=Bu,Sn.each=ua,Sn.eachRight=sa,Sn.first=Lo,Zu(Sn,(cs={},sr(Sn,(function(e,t){Ce.call(Sn.prototype,t)||(cs[t]=e)})),cs),{chain:!1}),Sn.VERSION="4.17.19",ut(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Sn[e].placeholder=Sn})),ut(["drop","take"],(function(e,t){jn.prototype[e]=function(n){n=void 0===n?1:an(ru(n),0);var r=this.__filtered__&&!t?new jn(this):this.clone();return r.__filtered__?r.__takeCount__=un(n,r.__takeCount__):r.__views__.push({size:un(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},jn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),ut(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;jn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Zi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),ut(["head","last"],(function(e,t){var n="take"+(t?"Right":"");jn.prototype[e]=function(){return this[n](1).value()[0]}})),ut(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");jn.prototype[e]=function(){return this.__filtered__?new jn(this):this[n](1)}})),jn.prototype.compact=function(){return this.filter(Gu)},jn.prototype.find=function(e){return this.filter(e).head()},jn.prototype.findLast=function(e){return this.reverse().find(e)},jn.prototype.invokeMap=Rr((function(e,t){return"function"==typeof e?new jn(this):this.map((function(n){return br(n,e,t)}))})),jn.prototype.reject=function(e){return this.filter(Ca(Zi(e)))},jn.prototype.slice=function(e,t){e=ru(e);var n=this;return n.__filtered__&&(e>0||t<0)?new jn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ru(t))<0?n.dropRight(-t):n.take(t-e)),n)},jn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},jn.prototype.toArray=function(){return this.take(4294967295)},sr(jn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=Sn[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(Sn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,u=t instanceof jn,s=a[0],l=u||Na(t),c=function(e){var t=i.apply(Sn,ht([e],a));return r&&f?t[0]:t};l&&n&&"function"==typeof s&&1!=s.length&&(u=l=!1);var f=this.__chain__,p=!!this.__actions__.length,d=o&&!f,h=u&&!p;if(!o&&l){t=h?t:new jn(this);var v=e.apply(t,a);return v.__actions__.push({func:na,args:[c],thisArg:void 0}),new In(v,f)}return d&&h?e.apply(this,a):(v=this.thru(c),d?r?v.value()[0]:v.value():v)})})),ut(["pop","push","shift","sort","splice","unshift"],(function(e){var t=ye[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Sn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Na(i)?i:[],e)}return this[n]((function(n){return t.apply(Na(n)?n:[],e)}))}})),sr(jn.prototype,(function(e,t){var n=Sn[t];if(n){var r=n.name+"";Ce.call(yn,r)||(yn[r]=[]),yn[r].push({name:t,func:n})}})),yn[Si(void 0,2).name]=[{name:"wrapper",func:void 0}],jn.prototype.clone=function(){var e=new jn(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},jn.prototype.reverse=function(){if(this.__filtered__){var e=new jn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},jn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Na(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Sn.prototype.plant=function(e){for(var t,n=this;n instanceof Dn;){var r=So(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},Sn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof jn){var t=e;return this.__actions__.length&&(t=new jn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Wo],thisArg:void 0}),new In(t,this.__chain__)}return this.thru(Wo)},Sn.prototype.toJSON=Sn.prototype.valueOf=Sn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},Sn.prototype.first=Sn.prototype.head,Je&&(Sn.prototype[Je]=function(){return this}),Sn}();qe._=Yt,void 0===(i=function(){return Yt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n(77),n(340)(e))},332:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var r=n(267);function i(){var e=Object(r.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,n=Date.parse(t.date),i=new Date,o=Math.abs(i-n),a=Math.ceil(o/864e5),u=null;return"undefined"!=typeof window&&(u=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),a<30&&(!u||u=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(i),i.className=this.props.inputClassName,i.id=this.state.inputId,i.style=n,a.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),a.default.createElement("input",r({},i,{ref:this.inputRef})),a.default.createElement("div",{ref:this.sizerRef,style:l},e),this.props.placeholder?a.default.createElement("div",{ref:this.placeHolderSizerRef,style:l},this.props.placeholder):null)}}]),t}(o.Component);h.propTypes={className:u.default.string,defaultValue:u.default.any,extraWidth:u.default.oneOfType([u.default.number,u.default.string]),id:u.default.string,injectStyles:u.default.bool,inputClassName:u.default.string,inputRef:u.default.func,inputStyle:u.default.object,minWidth:u.default.oneOfType([u.default.number,u.default.string]),onAutosize:u.default.func,onChange:u.default.func,placeholder:u.default.string,placeholderIsMinWidth:u.default.bool,style:u.default.object,value:u.default.any},h.defaultProps={minWidth:1,injectStyles:!0},t.default=h},397:function(e,t,n){"use strict";var r=n(398),i=n(58);function o(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=i({arrayFormat:"none"},t)),r=Object.create(null);return"string"!=typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),i=t.shift(),o=t.length>0?t.join("="):void 0;o=void 0===o?null:decodeURIComponent(o),n(decodeURIComponent(i),o,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[o(t,e),"[",r,"]"].join(""):[o(t,e),"[",o(r,e),"]=",o(n,e)].join("")};case"bracket":return function(t,n){return null===n?o(t,e):[o(t,e),"[]=",o(n,e)].join("")};default:return function(t,n){return null===n?o(t,e):[o(t,e),"=",o(n,e)].join("")}}}(t=i({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var i=e[r];if(void 0===i)return"";if(null===i)return o(r,t);if(Array.isArray(i)){var a=[];return i.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return o(r,t)+"="+o(i,t)})).filter((function(e){return e.length>0})).join("&"):""}},398:function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}}}]); \ No newline at end of file +/*! For license information please see c4f5d8e4.38cfeaa6.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[91,4],{260:function(e,t,n){"use strict";n.r(t);var r=n(1),i=n(0),o=n.n(i),a=n(278),u=n(273),s=n(297),l=n(268),c=n(270),f=n.n(c);var p=function(e){return o.a.createElement(o.a.Fragment,null,e.children)};n(341),n(274),n(53),n(26),n(20),n(19);function d(e,t){if(e.length!==t.length)return!1;for(var n=0;nr&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(v,"$1"+e.trim());case 58:return e.trim()+t.replace(v,"$1"+e.trim());default:if(0<1*n&&0s.charCodeAt(8))break;case 115:a=a.replace(s,"-webkit-"+s)+";"+a;break;case 207:case 102:a=a.replace(s,"-webkit-"+(102u.charCodeAt(0)&&(u=u.trim()),u=[u],0d)&&(B=(U=U.replace(" ",":")).length),0=4;++r,i-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(i){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},k={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var S=/[A-Z]|^ms/g,F=/_EMO_([^_]+?)_([^]*?)_EMO_/g,D=function(e){return 45===e.charCodeAt(1)},I=function(e){return null!=e&&"boolean"!=typeof e},j=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return D(e)?e:e.replace(S,"-$&").toLowerCase()})),N=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(F,(function(e,t,n){return L={name:t,styles:n,next:L},t}))}return 1===k[e]||D(e)||"number"!=typeof t||0===t?t:t+"px"};function M(e,t,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return L={name:n.name,styles:n.styles,next:L},n.name;if(void 0!==n.styles){var i=n.next;if(void 0!==i)for(;void 0!==i;)L={name:i.name,styles:i.styles,next:L},i=i.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i-1}function oe(e){return ie(e)?window.pageYOffset:e.scrollTop}function ae(e,t){ie(e)?window.scrollTo(0,t):e.scrollTop=t}function ue(e,t,n,r){void 0===n&&(n=200),void 0===r&&(r=ee);var i=oe(e),o=t-i,a=0;!function t(){var u,s=o*((u=(u=a+=10)/n-1)*u*u+1)+i;ae(e,s),a=d)return{placement:"bottom",maxHeight:t};if(O>=d&&!a)return o&&ue(s,C,160),{placement:"bottom",maxHeight:t};if(!a&&O>=r||a&&_>=r)return o&&ue(s,C,160),{placement:"bottom",maxHeight:a?_-b:O-b};if("auto"===i||a){var x=t,k=a?E:w;return k>=r&&(x=Math.min(k-b-u.controlHeight,t)),{placement:"top",maxHeight:x}}if("bottom"===i)return ae(s,C),{placement:"bottom",maxHeight:t};break;case"top":if(E>=d)return{placement:"top",maxHeight:t};if(w>=d&&!a)return o&&ue(s,A,160),{placement:"top",maxHeight:t};if(!a&&w>=r||a&&E>=r){var S=t;return(!a&&w>=r||a&&E>=r)&&(S=a?E-y:w-y),o&&ue(s,A,160),{placement:"top",maxHeight:S}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'+i+'".')}return l}var he=function(e){return"auto"===e?"bottom":e},ve=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i=0||(i[n]=e[n]);return i}(e,["size"]);return q("svg",Se({height:t,width:t,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:Fe},n))},Ie=function(e){return q(De,Se({size:20},e),q("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},je=function(e){return q(De,Se({size:20},e),q("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},Ne=function(e){var t=e.isFocused,n=e.theme,r=n.spacing.baseUnit,i=n.colors;return{label:"indicatorContainer",color:t?i.neutral60:i.neutral20,display:"flex",padding:2*r,transition:"color 150ms",":hover":{color:t?i.neutral80:i.neutral40}}},Me=Ne,Le=Ne,Pe=function(){var e=R.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}(ke()),Te=function(e){var t=e.delay,n=e.offset;return q("span",{css:R({animation:Pe+" 1s ease-in-out "+t+"ms infinite;",backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":null,height:"1em",verticalAlign:"top",width:"1em"},"")})},Re=function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerProps,o=e.isRtl;return q("div",Se({},i,{css:r("loadingIndicator",e),className:n({indicator:!0,"loading-indicator":!0},t)}),q(Te,{delay:0,offset:o}),q(Te,{delay:160,offset:!0}),q(Te,{delay:320,offset:!o}))};function Be(){return(Be=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,["className","cx","getStyles","theme","selectProps"]));return q("div",Ve({css:r("groupHeading",Ve({theme:i},o)),className:n({"group-heading":!0},t)},o))},IndicatorsContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles;return q("div",{css:i("indicatorsContainer",e),className:r({indicators:!0},n)},t)},IndicatorSeparator:function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerProps;return q("span",Se({},i,{css:r("indicatorSeparator",e),className:n({"indicator-separator":!0},t)}))},Input:function(e){var t=e.className,n=e.cx,r=e.getStyles,i=e.innerRef,o=e.isHidden,a=e.isDisabled,u=e.theme,s=(e.selectProps,function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return q("div",{css:r("input",ze({theme:u},s))},q(ce.a,ze({className:n({input:!0},t),inputRef:i,inputStyle:Ue(o),disabled:a},s)))},LoadingIndicator:Re,Menu:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerRef,a=e.innerProps;return q("div",fe({css:i("menu",e),className:r({menu:!0},n)},a,{ref:o}),t)},MenuList:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isMulti,a=e.innerRef;return q("div",{css:i("menuList",e),className:r({"menu-list":!0,"menu-list--is-multi":o},n),ref:a},t)},MenuPortal:_e,LoadingMessage:Ee,NoOptionsMessage:ye,MultiValue:qe,MultiValueContainer:$e,MultiValueLabel:Ge,MultiValueRemove:function(e){var t=e.children,n=e.innerProps;return q("div",n,t||q(Ie,{size:14}))},Option:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isDisabled,a=e.isFocused,u=e.isSelected,s=e.innerRef,l=e.innerProps;return q("div",Ye({css:i("option",e),className:r({option:!0,"option--is-disabled":o,"option--is-focused":a,"option--is-selected":u},n),ref:s},l),t)},Placeholder:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerProps;return q("div",Ke({css:i("placeholder",e),className:r({placeholder:!0},n)},o),t)},SelectContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.innerProps,a=e.isDisabled,u=e.isRtl;return q("div",xe({css:i("container",e),className:r({"--is-disabled":a,"--is-rtl":u},n)},o),t)},SingleValue:function(e){var t=e.children,n=e.className,r=e.cx,i=e.getStyles,o=e.isDisabled,a=e.innerProps;return q("div",Ze({css:i("singleValue",e),className:r({"single-value":!0,"single-value--is-disabled":o},n)},a),t)},ValueContainer:function(e){var t=e.children,n=e.className,r=e.cx,i=e.isMulti,o=e.getStyles,a=e.hasValue;return q("div",{css:o("valueContainer",e),className:r({"value-container":!0,"value-container--is-multi":i,"value-container--has-value":a},n)},t)}},Qe=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],et=function(e){for(var t=0;t=0||(i[n]=e[n]);return i}(e,["in","out","onExited","appear","enter","exit","innerRef","emotion"]));return q("input",ut({ref:t},n,{css:R({label:"dummyInput",background:0,border:0,fontSize:"inherit",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(0)"},"")}))}var lt=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.props.innerRef(Object(X.findDOMNode)(this))},i.componentWillUnmount=function(){this.props.innerRef(null)},i.render=function(){return this.props.children},r}(i.Component),ct=["boxSizing","height","overflow","paddingRight","position"],ft={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function pt(e){e.preventDefault()}function dt(e){e.stopPropagation()}function ht(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function vt(){return"ontouchstart"in window||navigator.maxTouchPoints}var mt=!(!window.document||!window.document.createElement),gt=0,bt=function(e){var t,n;function r(){for(var t,n=arguments.length,r=new Array(n),i=0;i0,h=c-f-l,v=!1;h>n&&t.isBottom&&(o&&o(e),t.isBottom=!1),d&&t.isTop&&(u&&u(e),t.isTop=!1),d&&n>h?(i&&!t.isBottom&&i(e),p.scrollTop=c,v=!0,t.isBottom=!0):!d&&-n>l&&(a&&!t.isTop&&a(e),p.scrollTop=0,v=!0,t.isTop=!0),v&&t.cancelScroll(e)},t.onWheel=function(e){t.handleEventDelta(e,e.deltaY)},t.onTouchStart=function(e){t.touchStart=e.changedTouches[0].clientY},t.onTouchMove=function(e){var n=t.touchStart-e.changedTouches[0].clientY;t.handleEventDelta(e,n)},t.getScrollTarget=function(e){t.scrollTarget=e},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.startListening(this.scrollTarget)},i.componentWillUnmount=function(){this.stopListening(this.scrollTarget)},i.startListening=function(e){e&&("function"==typeof e.addEventListener&&e.addEventListener("wheel",this.onWheel,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchmove",this.onTouchMove,!1))},i.stopListening=function(e){"function"==typeof e.removeEventListener&&e.removeEventListener("wheel",this.onWheel,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchmove",this.onTouchMove,!1)},i.render=function(){return o.a.createElement(lt,{innerRef:this.getScrollTarget},this.props.children)},r}(i.Component);function wt(e){var t=e.isEnabled,n=void 0===t||t,r=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,["isEnabled"]);return n?o.a.createElement(_t,r):r.children}var Ot=function(e,t){void 0===t&&(t={});var n=t,r=n.isSearchable,i=n.isMulti,o=n.label,a=n.isDisabled;switch(e){case"menu":return"Use Up and Down to choose options"+(a?"":", press Enter to select the currently focused option")+", press Escape to exit the menu, press Tab to select the option and exit the menu.";case"input":return(o||"Select")+" is focused "+(r?",type to refine list":"")+", press Down to open the menu, "+(i?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}},Ct=function(e,t){var n=t.value,r=t.isDisabled;if(n)switch(e){case"deselect-option":case"pop-value":case"remove-value":return"option "+n+", deselected.";case"select-option":return r?"option "+n+" is disabled. Select another option.":"option "+n+", selected."}},At=function(e){return!!e.isDisabled};var xt={clearIndicator:Le,container:function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":null,pointerEvents:t?"none":null,position:"relative"}},control:function(e){var t=e.isDisabled,n=e.isFocused,r=e.theme,i=r.colors,o=r.borderRadius,a=r.spacing;return{label:"control",alignItems:"center",backgroundColor:t?i.neutral5:i.neutral0,borderColor:t?i.neutral10:n?i.primary:i.neutral20,borderRadius:o,borderStyle:"solid",borderWidth:1,boxShadow:n?"0 0 0 1px "+i.primary:null,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:a.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:n?i.primary:i.neutral30}}},dropdownIndicator:Me,group:function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},groupHeading:function(e){var t=e.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:"500",marginBottom:"0.25em",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:"uppercase"}},indicatorsContainer:function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing.baseUnit,i=n.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:t?i.neutral10:i.neutral20,marginBottom:2*r,marginTop:2*r,width:1}},input:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,i=n.colors;return{margin:r.baseUnit/2,paddingBottom:r.baseUnit/2,paddingTop:r.baseUnit/2,visibility:t?"hidden":"visible",color:i.neutral80}},loadingIndicator:function(e){var t=e.isFocused,n=e.size,r=e.theme,i=r.colors,o=r.spacing.baseUnit;return{label:"loadingIndicator",color:t?i.neutral60:i.neutral20,display:"flex",padding:2*o,transition:"color 150ms",alignSelf:"center",fontSize:n,lineHeight:1,marginRight:n,textAlign:"center",verticalAlign:"middle"}},loadingMessage:be,menu:function(e){var t,n=e.placement,r=e.theme,i=r.borderRadius,o=r.spacing,a=r.colors;return(t={label:"menu"})[function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(n)]="100%",t.backgroundColor=a.neutral0,t.borderRadius=i,t.boxShadow="0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",t.marginBottom=o.menuGutter,t.marginTop=o.menuGutter,t.position="absolute",t.width="100%",t.zIndex=1,t},menuList:function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:"auto",paddingBottom:n,paddingTop:n,position:"relative",WebkitOverflowScrolling:"touch"}},menuPortal:function(e){var t=e.rect,n=e.offset,r=e.position;return{left:t.left,position:r,top:n,width:t.width,zIndex:1}},multiValue:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius;return{label:"multiValue",backgroundColor:t.colors.neutral10,borderRadius:r/2,display:"flex",margin:n.baseUnit/2,minWidth:0}},multiValueLabel:function(e){var t=e.theme,n=t.borderRadius,r=t.colors,i=e.cropWithEllipsis;return{borderRadius:n/2,color:r.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:i?"ellipsis":null,whiteSpace:"nowrap"}},multiValueRemove:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius,i=t.colors;return{alignItems:"center",borderRadius:r/2,backgroundColor:e.isFocused&&i.dangerLight,display:"flex",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,":hover":{backgroundColor:i.dangerLight,color:i.danger}}},noOptionsMessage:ge,option:function(e){var t=e.isDisabled,n=e.isFocused,r=e.isSelected,i=e.theme,o=i.spacing,a=i.colors;return{label:"option",backgroundColor:r?a.primary:n?a.primary25:"transparent",color:t?a.neutral20:r?a.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:2*o.baseUnit+"px "+3*o.baseUnit+"px",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:!t&&(r?a.primary:a.primary50)}}},placeholder:function(e){var t=e.theme,n=t.spacing;return{label:"placeholder",color:t.colors.neutral50,marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2,position:"absolute",top:"50%",transform:"translateY(-50%)"}},singleValue:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,i=n.colors;return{label:"singleValue",color:t?i.neutral40:i.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2,maxWidth:"calc(100% - "+2*r.baseUnit+"px)",overflow:"hidden",position:"absolute",textOverflow:"ellipsis",whiteSpace:"nowrap",top:"50%",transform:"translateY(-50%)"}},valueContainer:function(e){var t=e.theme.spacing;return{alignItems:"center",display:"flex",flex:1,flexWrap:"wrap",padding:t.baseUnit/2+"px "+2*t.baseUnit+"px",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}};var kt={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}};function St(){return(St=Object.assign||function(e){for(var t=1;t-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:At,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(e){var t=e.count;return t+" result"+(1!==t?"s":"")+" available"},styles:{},tabIndex:"0",tabSelectsValue:!0},jt=1,Nt=function(e){var t,n;function r(t){var n;(n=e.call(this,t)||this).state={ariaLiveSelection:"",ariaLiveContext:"",focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,menuOptions:{render:[],focusable:[]},selectValue:[]},n.blockOptionHover=!1,n.isComposing=!1,n.clearFocusValueOnUpdate=!1,n.commonProps=void 0,n.components=void 0,n.hasGroups=!1,n.initialTouchX=0,n.initialTouchY=0,n.inputIsHiddenAfterUpdate=void 0,n.instancePrefix="",n.openAfterFocus=!1,n.scrollToFocusedOptionOnUpdate=!1,n.userIsDragging=void 0,n.controlRef=null,n.getControlRef=function(e){n.controlRef=e},n.focusedOptionRef=null,n.getFocusedOptionRef=function(e){n.focusedOptionRef=e},n.menuListRef=null,n.getMenuListRef=function(e){n.menuListRef=e},n.inputRef=null,n.getInputRef=function(e){n.inputRef=e},n.cacheComponents=function(e){n.components=Xe({},Je,{components:e}.components)},n.focus=n.focusInput,n.blur=n.blurInput,n.onChange=function(e,t){var r=n.props;(0,r.onChange)(e,St({},t,{name:r.name}))},n.setValue=function(e,t,r){void 0===t&&(t="set-value");var i=n.props,o=i.closeMenuOnSelect,a=i.isMulti;n.onInputChange("",{action:"set-value"}),o&&(n.inputIsHiddenAfterUpdate=!a,n.onMenuClose()),n.clearFocusValueOnUpdate=!0,n.onChange(e,{action:t,option:r})},n.selectOption=function(e){var t=n.props,r=t.blurInputOnSelect,i=t.isMulti,o=n.state.selectValue;if(i)if(n.isOptionSelected(e,o)){var a=n.getOptionValue(e);n.setValue(o.filter((function(e){return n.getOptionValue(e)!==a})),"deselect-option",e),n.announceAriaLiveSelection({event:"deselect-option",context:{value:n.getOptionLabel(e)}})}else n.isOptionDisabled(e,o)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue([].concat(o,[e]),"select-option",e),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));else n.isOptionDisabled(e,o)?n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e),isDisabled:!0}}):(n.setValue(e,"select-option"),n.announceAriaLiveSelection({event:"select-option",context:{value:n.getOptionLabel(e)}}));r&&n.blurInput()},n.removeValue=function(e){var t=n.state.selectValue,r=n.getOptionValue(e),i=t.filter((function(e){return n.getOptionValue(e)!==r}));n.onChange(i.length?i:null,{action:"remove-value",removedValue:e}),n.announceAriaLiveSelection({event:"remove-value",context:{value:e?n.getOptionLabel(e):""}}),n.focusInput()},n.clearValue=function(){var e=n.props.isMulti;n.onChange(e?[]:null,{action:"clear"})},n.popValue=function(){var e=n.state.selectValue,t=e[e.length-1],r=e.slice(0,e.length-1);n.announceAriaLiveSelection({event:"pop-value",context:{value:t?n.getOptionLabel(t):""}}),n.onChange(r.length?r:null,{action:"pop-value",removedValue:t})},n.getOptionLabel=function(e){return n.props.getOptionLabel(e)},n.getOptionValue=function(e){return n.props.getOptionValue(e)},n.getStyles=function(e,t){var r=xt[e](t);r.boxSizing="border-box";var i=n.props.styles[e];return i?i(r,t):r},n.getElementId=function(e){return n.instancePrefix+"-"+e},n.getActiveDescendentId=function(){var e=n.props.menuIsOpen,t=n.state,r=t.menuOptions,i=t.focusedOption;if(i&&e){var o=r.focusable.indexOf(i),a=r.render[o];return a&&a.key}},n.announceAriaLiveSelection=function(e){var t=e.event,r=e.context;n.setState({ariaLiveSelection:Ct(t,r)})},n.announceAriaLiveContext=function(e){var t=e.event,r=e.context;n.setState({ariaLiveContext:Ot(t,St({},r,{label:n.props["aria-label"]}))})},n.onMenuMouseDown=function(e){0===e.button&&(e.stopPropagation(),e.preventDefault(),n.focusInput())},n.onMenuMouseMove=function(e){n.blockOptionHover=!1},n.onControlMouseDown=function(e){var t=n.props.openMenuOnClick;n.state.isFocused?n.props.menuIsOpen?"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&n.onMenuClose():t&&n.openMenu("first"):(t&&(n.openAfterFocus=!0),n.focusInput()),"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&e.preventDefault()},n.onDropdownIndicatorMouseDown=function(e){if(!(e&&"mousedown"===e.type&&0!==e.button||n.props.isDisabled)){var t=n.props,r=t.isMulti,i=t.menuIsOpen;n.focusInput(),i?(n.inputIsHiddenAfterUpdate=!r,n.onMenuClose()):n.openMenu("first"),e.preventDefault(),e.stopPropagation()}},n.onClearIndicatorMouseDown=function(e){e&&"mousedown"===e.type&&0!==e.button||(n.clearValue(),e.stopPropagation(),n.openAfterFocus=!1,"touchend"===e.type?n.focusInput():setTimeout((function(){return n.focusInput()})))},n.onScroll=function(e){"boolean"==typeof n.props.closeMenuOnScroll?e.target instanceof HTMLElement&&ie(e.target)&&n.props.onMenuClose():"function"==typeof n.props.closeMenuOnScroll&&n.props.closeMenuOnScroll(e)&&n.props.onMenuClose()},n.onCompositionStart=function(){n.isComposing=!0},n.onCompositionEnd=function(){n.isComposing=!1},n.onTouchStart=function(e){var t=e.touches.item(0);t&&(n.initialTouchX=t.clientX,n.initialTouchY=t.clientY,n.userIsDragging=!1)},n.onTouchMove=function(e){var t=e.touches.item(0);if(t){var r=Math.abs(t.clientX-n.initialTouchX),i=Math.abs(t.clientY-n.initialTouchY);n.userIsDragging=r>5||i>5}},n.onTouchEnd=function(e){n.userIsDragging||(n.controlRef&&!n.controlRef.contains(e.target)&&n.menuListRef&&!n.menuListRef.contains(e.target)&&n.blurInput(),n.initialTouchX=0,n.initialTouchY=0)},n.onControlTouchEnd=function(e){n.userIsDragging||n.onControlMouseDown(e)},n.onClearIndicatorTouchEnd=function(e){n.userIsDragging||n.onClearIndicatorMouseDown(e)},n.onDropdownIndicatorTouchEnd=function(e){n.userIsDragging||n.onDropdownIndicatorMouseDown(e)},n.handleInputChange=function(e){var t=e.currentTarget.value;n.inputIsHiddenAfterUpdate=!1,n.onInputChange(t,{action:"input-change"}),n.onMenuOpen()},n.onInputFocus=function(e){var t=n.props,r=t.isSearchable,i=t.isMulti;n.props.onFocus&&n.props.onFocus(e),n.inputIsHiddenAfterUpdate=!1,n.announceAriaLiveContext({event:"input",context:{isSearchable:r,isMulti:i}}),n.setState({isFocused:!0}),(n.openAfterFocus||n.props.openMenuOnFocus)&&n.openMenu("first"),n.openAfterFocus=!1},n.onInputBlur=function(e){n.menuListRef&&n.menuListRef.contains(document.activeElement)?n.inputRef.focus():(n.props.onBlur&&n.props.onBlur(e),n.onInputChange("",{action:"input-blur"}),n.onMenuClose(),n.setState({focusedValue:null,isFocused:!1}))},n.onOptionHover=function(e){n.blockOptionHover||n.state.focusedOption===e||n.setState({focusedOption:e})},n.shouldHideSelectedOptions=function(){var e=n.props,t=e.hideSelectedOptions,r=e.isMulti;return void 0===t?r:t},n.onKeyDown=function(e){var t=n.props,r=t.isMulti,i=t.backspaceRemovesValue,o=t.escapeClearsValue,a=t.inputValue,u=t.isClearable,s=t.isDisabled,l=t.menuIsOpen,c=t.onKeyDown,f=t.tabSelectsValue,p=t.openMenuOnFocus,d=n.state,h=d.focusedOption,v=d.focusedValue,m=d.selectValue;if(!(s||"function"==typeof c&&(c(e),e.defaultPrevented))){switch(n.blockOptionHover=!0,e.key){case"ArrowLeft":if(!r||a)return;n.focusValue("previous");break;case"ArrowRight":if(!r||a)return;n.focusValue("next");break;case"Delete":case"Backspace":if(a)return;if(v)n.removeValue(v);else{if(!i)return;r?n.popValue():u&&n.clearValue()}break;case"Tab":if(n.isComposing)return;if(e.shiftKey||!l||!f||!h||p&&n.isOptionSelected(h,m))return;n.selectOption(h);break;case"Enter":if(229===e.keyCode)break;if(l){if(!h)return;if(n.isComposing)return;n.selectOption(h);break}return;case"Escape":l?(n.inputIsHiddenAfterUpdate=!1,n.onInputChange("",{action:"menu-close"}),n.onMenuClose()):u&&o&&n.clearValue();break;case" ":if(a)return;if(!l){n.openMenu("first");break}if(!h)return;n.selectOption(h);break;case"ArrowUp":l?n.focusOption("up"):n.openMenu("last");break;case"ArrowDown":l?n.focusOption("down"):n.openMenu("first");break;case"PageUp":if(!l)return;n.focusOption("pageup");break;case"PageDown":if(!l)return;n.focusOption("pagedown");break;case"Home":if(!l)return;n.focusOption("first");break;case"End":if(!l)return;n.focusOption("last");break;default:return}e.preventDefault()}},n.buildMenuOptions=function(e,t){var r=e.inputValue,i=void 0===r?"":r,o=e.options,a=function(e,r){var o=n.isOptionDisabled(e,t),a=n.isOptionSelected(e,t),u=n.getOptionLabel(e),s=n.getOptionValue(e);if(!(n.shouldHideSelectedOptions()&&a||!n.filterOption({label:u,value:s,data:e},i))){var l=o?void 0:function(){return n.onOptionHover(e)},c=o?void 0:function(){return n.selectOption(e)},f=n.getElementId("option")+"-"+r;return{innerProps:{id:f,onClick:c,onMouseMove:l,onMouseOver:l,tabIndex:-1},data:e,isDisabled:o,isSelected:a,key:f,label:u,type:"option",value:s}}};return o.reduce((function(e,t,r){if(t.options){n.hasGroups||(n.hasGroups=!0);var i=t.options.map((function(t,n){var i=a(t,r+"-"+n);return i&&e.focusable.push(t),i})).filter(Boolean);if(i.length){var o=n.getElementId("group")+"-"+r;e.render.push({type:"group",key:o,data:t,options:i})}}else{var u=a(t,""+r);u&&(e.render.push(u),e.focusable.push(t))}return e}),{render:[],focusable:[]})};var r=t.value;n.cacheComponents=h(n.cacheComponents,Ae).bind(Ft(Ft(n))),n.cacheComponents(t.components),n.instancePrefix="react-select-"+(n.props.instanceId||++jt);var i=re(r);n.buildMenuOptions=h(n.buildMenuOptions,(function(e,t){var n=e,r=n[0],i=n[1],o=t,a=o[0];return Ae(i,o[1])&&Ae(r.inputValue,a.inputValue)&&Ae(r.options,a.options)})).bind(Ft(Ft(n)));var o=t.menuIsOpen?n.buildMenuOptions(t,i):{render:[],focusable:[]};return n.state.menuOptions=o,n.state.selectValue=i,n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var i=r.prototype;return i.componentDidMount=function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()},i.UNSAFE_componentWillReceiveProps=function(e){var t=this.props,n=t.options,r=t.value,i=t.menuIsOpen,o=t.inputValue;if(this.cacheComponents(e.components),e.value!==r||e.options!==n||e.menuIsOpen!==i||e.inputValue!==o){var a=re(e.value),u=e.menuIsOpen?this.buildMenuOptions(e,a):{render:[],focusable:[]},s=this.getNextFocusedValue(a),l=this.getNextFocusedOption(u.focusable);this.setState({menuOptions:u,selectValue:a,focusedOption:l,focusedValue:s})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)},i.componentDidUpdate=function(e){var t,n,r,i,o,a=this.props,u=a.isDisabled,s=a.menuIsOpen,l=this.state.isFocused;(l&&!u&&e.isDisabled||l&&s&&!e.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(t=this.menuListRef,n=this.focusedOptionRef,r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),o=n.offsetHeight/3,i.bottom+o>r.bottom?ae(t,Math.min(n.offsetTop+n.clientHeight-t.offsetHeight+o,t.scrollHeight)):i.top-o-1&&(u=s)}this.scrollToFocusedOptionOnUpdate=!(i&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.setState({menuOptions:o,focusedValue:null,focusedOption:o.focusable[u]},(function(){t.onMenuOpen(),t.announceAriaLiveContext({event:"menu"})}))},i.focusValue=function(e){var t=this.props,n=t.isMulti,r=t.isSearchable,i=this.state,o=i.selectValue,a=i.focusedValue;if(n){this.setState({focusedOption:null});var u=o.indexOf(a);a||(u=-1,this.announceAriaLiveContext({event:"value"}));var s=o.length-1,l=-1;if(o.length){switch(e){case"previous":l=0===u?0:-1===u?s:u-1;break;case"next":u>-1&&u0?a-1:i.length-1:"down"===e?o=(a+1)%i.length:"pageup"===e?(o=a-t)<0&&(o=0):"pagedown"===e?(o=a+t)>i.length-1&&(o=i.length-1):"last"===e&&(o=i.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:i[o],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:At(i[o])}})}},i.getTheme=function(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(kt):St({},kt,this.props.theme):kt},i.getCommonProps=function(){var e=this.clearValue,t=this.getStyles,n=this.setValue,r=this.selectOption,i=this.props,o=i.classNamePrefix,a=i.isMulti,u=i.isRtl,s=i.options,l=this.state.selectValue,c=this.hasValue();return{cx:ne.bind(null,o),clearValue:e,getStyles:t,getValue:function(){return l},hasValue:c,isMulti:a,isRtl:u,options:s,selectOption:r,setValue:n,selectProps:i,theme:this.getTheme()}},i.getNextFocusedValue=function(e){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var t=this.state,n=t.focusedValue,r=t.selectValue.indexOf(n);if(r>-1){if(e.indexOf(n)>-1)return n;if(r-1?t:e[0]},i.hasValue=function(){return this.state.selectValue.length>0},i.hasOptions=function(){return!!this.state.menuOptions.render.length},i.countOptions=function(){return this.state.menuOptions.focusable.length},i.isClearable=function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t},i.isOptionDisabled=function(e,t){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(e,t)},i.isOptionSelected=function(e,t){var n=this;if(t.indexOf(e)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(e,t);var r=this.getOptionValue(e);return t.some((function(e){return n.getOptionValue(e)===r}))},i.filterOption=function(e,t){return!this.props.filterOption||this.props.filterOption(e,t)},i.formatOptionLabel=function(e,t){if("function"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,r=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:r})}return this.getOptionLabel(e)},i.formatGroupLabel=function(e){return this.props.formatGroupLabel(e)},i.startListeningComposition=function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))},i.stopListeningComposition=function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))},i.startListeningToTouch=function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))},i.stopListeningToTouch=function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))},i.constructAriaLiveMessage=function(){var e=this.state,t=e.ariaLiveContext,n=e.selectValue,r=e.focusedValue,i=e.focusedOption,o=this.props,a=o.options,u=o.menuIsOpen,s=o.inputValue,l=o.screenReaderStatus;return(r?function(e){var t=e.focusedValue,n=e.getOptionLabel,r=e.selectValue;return"value "+n(t)+" focused, "+(r.indexOf(t)+1)+" of "+r.length+"."}({focusedValue:r,getOptionLabel:this.getOptionLabel,selectValue:n}):"")+" "+(i&&u?function(e){var t=e.focusedOption,n=e.getOptionLabel,r=e.options;return"option "+n(t)+" focused"+(t.isDisabled?" disabled":"")+", "+(r.indexOf(t)+1)+" of "+r.length+"."}({focusedOption:i,getOptionLabel:this.getOptionLabel,options:a}):"")+" "+function(e){var t=e.inputValue;return e.screenReaderMessage+(t?" for search term "+t:"")+"."}({inputValue:s,screenReaderMessage:l({count:this.countOptions()})})+" "+t},i.renderInput=function(){var e=this.props,t=e.isDisabled,n=e.isSearchable,r=e.inputId,i=e.inputValue,a=e.tabIndex,u=this.components.Input,s=this.state.inputIsHidden,l=r||this.getElementId("input"),c={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]};if(!n)return o.a.createElement(st,St({id:l,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:ee,onFocus:this.onInputFocus,readOnly:!0,disabled:t,tabIndex:a,value:""},c));var f=this.commonProps,p=f.cx,d=f.theme,h=f.selectProps;return o.a.createElement(u,St({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:p,getStyles:this.getStyles,id:l,innerRef:this.getInputRef,isDisabled:t,isHidden:s,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:h,spellCheck:"false",tabIndex:a,theme:d,type:"text",value:i},c))},i.renderPlaceholderOrValue=function(){var e=this,t=this.components,n=t.MultiValue,r=t.MultiValueContainer,i=t.MultiValueLabel,a=t.MultiValueRemove,u=t.SingleValue,s=t.Placeholder,l=this.commonProps,c=this.props,f=c.controlShouldRenderValue,p=c.isDisabled,d=c.isMulti,h=c.inputValue,v=c.placeholder,m=this.state,g=m.selectValue,b=m.focusedValue,y=m.isFocused;if(!this.hasValue()||!f)return h?null:o.a.createElement(s,St({},l,{key:"placeholder",isDisabled:p,isFocused:y}),v);if(d)return g.map((function(t,u){var s=t===b;return o.a.createElement(n,St({},l,{components:{Container:r,Label:i,Remove:a},isFocused:s,isDisabled:p,key:e.getOptionValue(t),index:u,removeProps:{onClick:function(){return e.removeValue(t)},onTouchEnd:function(){return e.removeValue(t)},onMouseDown:function(e){e.preventDefault(),e.stopPropagation()}},data:t}),e.formatOptionLabel(t,"value"))}));if(h)return null;var E=g[0];return o.a.createElement(u,St({},l,{data:E,isDisabled:p}),this.formatOptionLabel(E,"value"))},i.renderClearIndicator=function(){var e=this.components.ClearIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,i=n.isLoading,a=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||i)return null;var u={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return o.a.createElement(e,St({},t,{innerProps:u,isFocused:a}))},i.renderLoadingIndicator=function(){var e=this.components.LoadingIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,i=n.isLoading,a=this.state.isFocused;if(!e||!i)return null;return o.a.createElement(e,St({},t,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:a}))},i.renderIndicatorSeparator=function(){var e=this.components,t=e.DropdownIndicator,n=e.IndicatorSeparator;if(!t||!n)return null;var r=this.commonProps,i=this.props.isDisabled,a=this.state.isFocused;return o.a.createElement(n,St({},r,{isDisabled:i,isFocused:a}))},i.renderDropdownIndicator=function(){var e=this.components.DropdownIndicator;if(!e)return null;var t=this.commonProps,n=this.props.isDisabled,r=this.state.isFocused,i={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return o.a.createElement(e,St({},t,{innerProps:i,isDisabled:n,isFocused:r}))},i.renderMenu=function(){var e=this,t=this.components,n=t.Group,r=t.GroupHeading,i=t.Menu,a=t.MenuList,u=t.MenuPortal,s=t.LoadingMessage,l=t.NoOptionsMessage,c=t.Option,f=this.commonProps,p=this.state,d=p.focusedOption,h=p.menuOptions,v=this.props,m=v.captureMenuScroll,g=v.inputValue,b=v.isLoading,y=v.loadingMessage,E=v.minMenuHeight,_=v.maxMenuHeight,w=v.menuIsOpen,O=v.menuPlacement,C=v.menuPosition,A=v.menuPortalTarget,x=v.menuShouldBlockScroll,k=v.menuShouldScrollIntoView,S=v.noOptionsMessage,F=v.onMenuScrollToTop,D=v.onMenuScrollToBottom;if(!w)return null;var I,j=function(t){var n=d===t.data;return t.innerRef=n?e.getFocusedOptionRef:void 0,o.a.createElement(c,St({},f,t,{isFocused:n}),e.formatOptionLabel(t.data,"menu"))};if(this.hasOptions())I=h.render.map((function(t){if("group"===t.type){t.type;var i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,["type"]),a=t.key+"-heading";return o.a.createElement(n,St({},f,i,{Heading:r,headingProps:{id:a},label:e.formatGroupLabel(t.data)}),t.options.map((function(e){return j(e)})))}if("option"===t.type)return j(t)}));else if(b){var N=y({inputValue:g});if(null===N)return null;I=o.a.createElement(s,f,N)}else{var M=S({inputValue:g});if(null===M)return null;I=o.a.createElement(l,f,M)}var L={minMenuHeight:E,maxMenuHeight:_,menuPlacement:O,menuPosition:C,menuShouldScrollIntoView:k},P=o.a.createElement(ve,St({},f,L),(function(t){var n=t.ref,r=t.placerProps,u=r.placement,s=r.maxHeight;return o.a.createElement(i,St({},f,L,{innerRef:n,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove},isLoading:b,placement:u}),o.a.createElement(wt,{isEnabled:m,onTopArrive:F,onBottomArrive:D},o.a.createElement(Et,{isEnabled:x},o.a.createElement(a,St({},f,{innerRef:e.getMenuListRef,isLoading:b,maxHeight:s}),I))))}));return A||"fixed"===C?o.a.createElement(u,St({},f,{appendTo:A,controlElement:this.controlRef,menuPlacement:O,menuPosition:C}),P):P},i.renderFormField=function(){var e=this,t=this.props,n=t.delimiter,r=t.isDisabled,i=t.isMulti,a=t.name,u=this.state.selectValue;if(a&&!r){if(i){if(n){var s=u.map((function(t){return e.getOptionValue(t)})).join(n);return o.a.createElement("input",{name:a,type:"hidden",value:s})}var l=u.length>0?u.map((function(t,n){return o.a.createElement("input",{key:"i-"+n,name:a,type:"hidden",value:e.getOptionValue(t)})})):o.a.createElement("input",{name:a,type:"hidden"});return o.a.createElement("div",null,l)}var c=u[0]?this.getOptionValue(u[0]):"";return o.a.createElement("input",{name:a,type:"hidden",value:c})}},i.renderLiveRegion=function(){return this.state.isFocused?o.a.createElement(at,{"aria-live":"polite"},o.a.createElement("p",{id:"aria-selection-event"},"\xa0",this.state.ariaLiveSelection),o.a.createElement("p",{id:"aria-context"},"\xa0",this.constructAriaLiveMessage())):null},i.render=function(){var e=this.components,t=e.Control,n=e.IndicatorsContainer,r=e.SelectContainer,i=e.ValueContainer,a=this.props,u=a.className,s=a.id,l=a.isDisabled,c=a.menuIsOpen,f=this.state.isFocused,p=this.commonProps=this.getCommonProps();return o.a.createElement(r,St({},p,{className:u,innerProps:{id:s,onKeyDown:this.onKeyDown},isDisabled:l,isFocused:f}),this.renderLiveRegion(),o.a.createElement(t,St({},p,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:l,isFocused:f,menuIsOpen:c}),o.a.createElement(i,St({},p,{isDisabled:l}),this.renderPlaceholderOrValue(),this.renderInput()),o.a.createElement(n,St({},p,{isDisabled:l}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())},r}(i.Component);function Mt(){return(Mt=Object.assign||function(e){for(var t=1;t1?n-1:0),i=1;i=0||(i[n]=e[n]);return i}(t,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return o.a.createElement(Pt,Mt({},n,{ref:function(t){e.select=t},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))},r}(i.Component),Tt.defaultProps=Lt,Rt),Vt=n(266),zt=n.n(Vt),Ut=n(397),Wt=n.n(Ut),Ht=n(352);var $t=function(){return Object(i.useContext)(Ht.a)},Gt=37,qt=39;function Yt(e){var t=e.block,n=e.centered,r=e.changeSelectedValue,i=e.className,a=e.handleKeydown,u=e.style,s=e.values,l=e.selectedValue,c=e.tabRefs;return o.a.createElement("div",{className:n?"tabs--centered":null},o.a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:zt()("tabs",i,{"tabs--block":t}),style:u},s.map((function(e){var t=e.value,n=e.label;return o.a.createElement("li",{role:"tab",tabIndex:"0","aria-selected":l===t,className:zt()("tab-item",{"tab-item--active":l===t}),key:t,ref:function(e){return c.push(e)},onKeyDown:function(e){return a(c,e.target,e)},onFocus:function(){return r(t)},onClick:function(){return r(t)}},n)}))))}function Kt(e){var t=e.placeholder,n=e.selectedValue,r=e.changeSelectedValue,i=e.size,a=e.values,u=a;if(u[0].group){var s=_.groupBy(u,"group");u=Object.keys(s).map((function(e){return{label:e,options:s[e]}}))}return o.a.createElement(Bt,{className:"react-select-container react-select--"+i,classNamePrefix:"react-select",options:u,isClearable:n,placeholder:t,value:a.find((function(e){return e.value==n})),onChange:function(e){return r(e?e.value:null)}})}var Zt=function(e){e.block,e.centered;var t=e.children,n=e.defaultValue,a=e.groupId,u=e.label,s=e.placeholder,l=e.select,c=e.size,f=(e.style,e.values),p=e.urlKey,d=$t(),h=d.tabGroupChoices,v=d.setTabGroupChoices,m=Object(i.useState)(n),g=m[0],b=m[1];if(null!=a){var y=h[a];null!=y&&y!==g&&b(y)}var E=function(e){b(e),null!=a&&v(a,e)},_=[],w=function(e,t,n){switch(n.keyCode){case qt:!function(e,t){var n=e.indexOf(t)+1;e[n]?e[n].focus():e[0].focus()}(e,t);break;case Gt:!function(e,t){var n=e.indexOf(t)-1;e[n]?e[n].focus():e[e.length-1].focus()}(e,t)}};return Object(i.useEffect)((function(){if("undefined"!=typeof window&&window.location&&p){var e=Wt.a.parse(window.location.search);e[p]&&b(e[p])}}),[]),o.a.createElement(o.a.Fragment,null,o.a.createElement("div",{className:"margin-bottom--"+(c||"md")},u&&o.a.createElement("div",{className:"margin-vert--sm"},u),f.length>1&&(l?o.a.createElement(Kt,Object(r.a)({changeSelectedValue:E,handleKeydown:w,placeholder:s,selectedValue:g,size:c,tabRefs:_},e)):o.a.createElement(Yt,Object(r.a)({changeSelectedValue:E,handleKeydown:w,selectedValue:g,tabRefs:_},e)))),i.Children.toArray(t).filter((function(e){return e.props.value===g}))[0])},Xt=n(272),Jt=n(332),Qt=n(267),en=n(305),tn=n.n(en),nn=n(234),rn=n.n(nn),on=(n(235),Object(a.a)("h2")),an=[{title:"Ultra-Fast",icon:"zap",description:o.a.createElement(o.a.Fragment,null,"Built in ",o.a.createElement("a",{href:"https://go.dev/"},"Go"),", gnet is ",o.a.createElement("a",{href:"#performance"},"ultra-fast and memory efficient")," based on the event-driven mechanism. It's designed to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.")},{title:"Lock-Free",icon:"unlock",description:o.a.createElement(o.a.Fragment,null,"gnet is lock-free during the entire runtime, which keeps gnet free from synchronization issues and speeds it up.")},{title:"Concise & Easy-to-use APIs",icon:"layers",description:o.a.createElement(o.a.Fragment,null,"gnet provides concise and easy-to-use APIs for users, it only exposes the essential APIs and takes over most of the tough work for users, minimizing the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementations.")},{title:"Multiple Protocols",icon:"grid",description:o.a.createElement(o.a.Fragment,null,"gnet supports multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket, enabling you to develop a variety of networking applications.")},{title:"Cross Platform",icon:"cpu",description:o.a.createElement(o.a.Fragment,null,"gnet is devised as a cross-platform framework, as a result, it works faultlessly on multiple platforms: Linux, FreeBSD, DragonFly BSD, Windows.")},{title:"Powerful Libraries",icon:"briefcase",description:o.a.createElement(o.a.Fragment,null,"There is a rich set of libraries in gnet, such as memory pool, goroutine pool, elastic buffers, logging package, etc., which makes it convenient for developers to build fast and efficient networking applications.")}];function un(e){var t,n,i=e.features,a=[];for(t=0,n=i.length;t0&&i.a.createElement("div",{className:"row footer__links"},i.a.createElement("div",{className:"col col--5 footer__col"},i.a.createElement("div",{className:"margin-bottom--md"},i.a.createElement(f.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),i.a.createElement("div",{className:"margin-bottom--md"},i.a.createElement(N,{description:!1,width:"150px"})),i.a.createElement("div",null,i.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},i.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",i.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},i.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",i.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},i.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),u.map((function(e,t){return i.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?i.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?i.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?i.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):i.a.createElement("li",{key:e.href||e.to,className:"footer__item"},i.a.createElement(P,e))}))):null)}))),(l||o)&&i.a.createElement("div",{className:"text--center"},l&&l.src&&i.a.createElement("div",{className:"margin-bottom--sm"},l.href?i.a.createElement("a",{href:l.href,target:"_blank",rel:"noopener noreferrer",className:L.a.footerLogoLink},i.a.createElement(T,{alt:l.alt,url:c})):i.a.createElement(T,{alt:l.alt,url:c}),i.a.createElement("br",null),i.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:L.a.footerLogoLink},i.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),o,i.a.createElement("br",null),i.a.createElement("small",null,i.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",i.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},B=n(290),V=n(291),z=n(3);n(135);t.a=function(e){var t=Object(h.a)().siteConfig,n=void 0===t?{}:t,r=n.favicon,u=(n.tagline,n.title),s=n.themeConfig.image,l=n.url,c=e.children,f=e.title,p=e.noFooter,d=e.description,v=e.image,m=e.keywords,g=(e.permalink,e.version),b=f?f+" | "+u:u,y=v||s,E=l+Object(O.a)(y),_=Object(O.a)(r),w=Object(z.h)(),C=w?"https://gnet.host"+(w.pathname.endsWith("/")?w.pathname:w.pathname+"/"):null;return i.a.createElement(V.a,null,i.a.createElement(B.a,null,i.a.createElement(a.a,null,i.a.createElement("html",{lang:"en"}),i.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),b&&i.a.createElement("title",null,b),b&&i.a.createElement("meta",{property:"og:title",content:b}),r&&i.a.createElement("link",{rel:"shortcut icon",href:_}),d&&i.a.createElement("meta",{name:"description",content:d}),d&&i.a.createElement("meta",{property:"og:description",content:d}),g&&i.a.createElement("meta",{name:"docsearch:version",content:g}),m&&m.length&&i.a.createElement("meta",{name:"keywords",content:m.join(",")}),y&&i.a.createElement("meta",{property:"og:image",content:E}),y&&i.a.createElement("meta",{property:"twitter:image",content:E}),y&&i.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+b}),y&&i.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),y&&i.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),C&&i.a.createElement("meta",{property:"og:url",content:C}),i.a.createElement("meta",{name:"twitter:card",content:"summary"}),C&&i.a.createElement("link",{rel:"canonical",href:C})),i.a.createElement(o.a,null),i.a.createElement(I,null),i.a.createElement("div",{className:"main-wrapper"},c),!p&&i.a.createElement(R,null)))}},297:function(e,t,n){"use strict";(function(e){var r=n(1),i=(n(295),n(296),n(78),n(79),n(306),n(0)),o=n.n(i),a=n(307),u=n.n(a),s=n(320),l=n(52),c=n(266),f=n.n(c),p=n(315),d=n(308),h=n.n(d),v=n(267),m=n(276),g=n(136),b=n.n(g);(void 0!==e?e:window).Prism=l.a,n(309),n(310),n(311),n(312),n(313),n(314);var y=/{([\d,-]+)}/,E=/title=".*"/;t.a=function(e){var t=e.children,n=e.className,a=e.metastring,l=Object(v.a)().siteConfig.themeConfig.prism,c=void 0===l?{}:l,d=Object(i.useState)(!1),g=d[0],_=d[1],w=Object(i.useState)(!1),O=w[0],C=w[1];Object(i.useEffect)((function(){C(!0)}),[]);var A=Object(i.useRef)(null),x=Object(i.useRef)(null),k=[],S="",F=Object(m.a)().isDarkTheme,D=c.theme||p.a,I=c.darkTheme||D,j=F?I:D;if(a&&y.test(a)){var N=a.match(y)[1];k=h.a.parse(N).filter((function(e){return e>0}))}a&&E.test(a)&&(S=a.match(E)[0].split("title=")[1].replace(/"+/g,"")),Object(i.useEffect)((function(){var e;return x.current&&(e=new u.a(x.current,{target:function(){return A.current}})),function(){e&&e.destroy()}}),[x.current,A.current]);var M=n&&n.replace(/language-/,"");!M&&c.defaultLanguage&&(M=c.defaultLanguage);var L=function(){window.getSelection().empty(),_(!0),setTimeout((function(){return _(!1)}),2e3)};return o.a.createElement(s.a,Object(r.a)({},s.b,{key:O,theme:j,code:t.trim(),language:M}),(function(e){var t,n,i=e.className,a=e.style,u=e.tokens,s=e.getLineProps,l=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,S&&o.a.createElement("div",{style:a,className:b.a.codeBlockTitle},S),o.a.createElement("div",{className:b.a.codeBlockContent},o.a.createElement("button",{ref:x,type:"button","aria-label":"Copy code to clipboard",className:f()(b.a.copyButton,(t={},t[b.a.copyButtonWithTitle]=S,t)),onClick:L},g?"Copied":"Copy"),o.a.createElement("pre",{className:f()(i,b.a.codeBlock,(n={},n[b.a.codeBlockWithTitle]=S,n))},o.a.createElement("div",{ref:A,className:b.a.codeBlockLines,style:a},u.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=s({line:e,key:t});return k.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(r.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(r.a)({key:t},l({token:e,key:t})))})))}))))))}))}}).call(this,n(77))},305:function(e,t,n){(function(e,r){var i;(function(){var o="Expected a function",a="__lodash_placeholder__",u=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],s="[object Arguments]",l="[object Array]",c="[object Boolean]",f="[object Date]",p="[object Error]",d="[object Function]",h="[object GeneratorFunction]",v="[object Map]",m="[object Number]",g="[object Object]",b="[object RegExp]",y="[object Set]",E="[object String]",_="[object Symbol]",w="[object WeakMap]",O="[object ArrayBuffer]",C="[object DataView]",A="[object Float32Array]",x="[object Float64Array]",k="[object Int8Array]",S="[object Int16Array]",F="[object Int32Array]",D="[object Uint8Array]",I="[object Uint16Array]",j="[object Uint32Array]",N=/\b__p \+= '';/g,M=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,T=/[&<>"']/g,R=RegExp(P.source),B=RegExp(T.source),V=/<%-([\s\S]+?)%>/g,z=/<%([\s\S]+?)%>/g,U=/<%=([\s\S]+?)%>/g,W=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,$=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/[\\^$.*+?()[\]{}|]/g,q=RegExp(G.source),Y=/^\s+|\s+$/g,K=/^\s+/,Z=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,oe=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,ue=/^0o[0-7]+$/i,se=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ce=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",he="[\\ud800-\\udfff]",ve="["+de+"]",me="["+pe+"]",ge="\\d+",be="[\\u2700-\\u27bf]",ye="[a-z\\xdf-\\xf6\\xf8-\\xff]",Ee="[^\\ud800-\\udfff"+de+ge+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",_e="\\ud83c[\\udffb-\\udfff]",we="[^\\ud800-\\udfff]",Oe="(?:\\ud83c[\\udde6-\\uddff]){2}",Ce="[\\ud800-\\udbff][\\udc00-\\udfff]",Ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",xe="(?:"+ye+"|"+Ee+")",ke="(?:"+Ae+"|"+Ee+")",Se="(?:"+me+"|"+_e+")"+"?",Fe="[\\ufe0e\\ufe0f]?"+Se+("(?:\\u200d(?:"+[we,Oe,Ce].join("|")+")[\\ufe0e\\ufe0f]?"+Se+")*"),De="(?:"+[be,Oe,Ce].join("|")+")"+Fe,Ie="(?:"+[we+me+"?",me,Oe,Ce,he].join("|")+")",je=RegExp("['\u2019]","g"),Ne=RegExp(me,"g"),Me=RegExp(_e+"(?="+_e+")|"+Ie+Fe,"g"),Le=RegExp([Ae+"?"+ye+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[ve,Ae,"$"].join("|")+")",ke+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[ve,Ae+xe,"$"].join("|")+")",Ae+"?"+xe+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Ae+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ge,De].join("|"),"g"),Pe=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),Te=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Be=-1,Ve={};Ve[A]=Ve[x]=Ve[k]=Ve[S]=Ve[F]=Ve[D]=Ve["[object Uint8ClampedArray]"]=Ve[I]=Ve[j]=!0,Ve[s]=Ve[l]=Ve[O]=Ve[c]=Ve[C]=Ve[f]=Ve[p]=Ve[d]=Ve[v]=Ve[m]=Ve[g]=Ve[b]=Ve[y]=Ve[E]=Ve[w]=!1;var ze={};ze[s]=ze[l]=ze[O]=ze[C]=ze[c]=ze[f]=ze[A]=ze[x]=ze[k]=ze[S]=ze[F]=ze[v]=ze[m]=ze[g]=ze[b]=ze[y]=ze[E]=ze[_]=ze[D]=ze["[object Uint8ClampedArray]"]=ze[I]=ze[j]=!0,ze[p]=ze[d]=ze[w]=!1;var Ue={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},We=parseFloat,He=parseInt,$e="object"==typeof e&&e&&e.Object===Object&&e,Ge="object"==typeof self&&self&&self.Object===Object&&self,qe=$e||Ge||Function("return this")(),Ye=t&&!t.nodeType&&t,Ke=Ye&&"object"==typeof r&&r&&!r.nodeType&&r,Ze=Ke&&Ke.exports===Ye,Xe=Ze&&$e.process,Je=function(){try{var e=Ke&&Ke.require&&Ke.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(t){}}(),Qe=Je&&Je.isArrayBuffer,et=Je&&Je.isDate,tt=Je&&Je.isMap,nt=Je&&Je.isRegExp,rt=Je&&Je.isSet,it=Je&&Je.isTypedArray;function ot(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function at(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function pt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Mt(e,t){for(var n=e.length;n--&&_t(t,e[n],0)>-1;);return n}function Lt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Pt=xt({\u00c0:"A",\u00c1:"A",\u00c2:"A",\u00c3:"A",\u00c4:"A",\u00c5:"A",\u00e0:"a",\u00e1:"a",\u00e2:"a",\u00e3:"a",\u00e4:"a",\u00e5:"a",\u00c7:"C",\u00e7:"c",\u00d0:"D",\u00f0:"d",\u00c8:"E",\u00c9:"E",\u00ca:"E",\u00cb:"E",\u00e8:"e",\u00e9:"e",\u00ea:"e",\u00eb:"e",\u00cc:"I",\u00cd:"I",\u00ce:"I",\u00cf:"I",\u00ec:"i",\u00ed:"i",\u00ee:"i",\u00ef:"i",\u00d1:"N",\u00f1:"n",\u00d2:"O",\u00d3:"O",\u00d4:"O",\u00d5:"O",\u00d6:"O",\u00d8:"O",\u00f2:"o",\u00f3:"o",\u00f4:"o",\u00f5:"o",\u00f6:"o",\u00f8:"o",\u00d9:"U",\u00da:"U",\u00db:"U",\u00dc:"U",\u00f9:"u",\u00fa:"u",\u00fb:"u",\u00fc:"u",\u00dd:"Y",\u00fd:"y",\u00ff:"y",\u00c6:"Ae",\u00e6:"ae",\u00de:"Th",\u00fe:"th",\u00df:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010a:"C",\u010c:"C",\u0107:"c",\u0109:"c",\u010b:"c",\u010d:"c",\u010e:"D",\u0110:"D",\u010f:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011a:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011b:"e",\u011c:"G",\u011e:"G",\u0120:"G",\u0122:"G",\u011d:"g",\u011f:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012a:"I",\u012c:"I",\u012e:"I",\u0130:"I",\u0129:"i",\u012b:"i",\u012d:"i",\u012f:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013b:"L",\u013d:"L",\u013f:"L",\u0141:"L",\u013a:"l",\u013c:"l",\u013e:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014a:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014b:"n",\u014c:"O",\u014e:"O",\u0150:"O",\u014d:"o",\u014f:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015a:"S",\u015c:"S",\u015e:"S",\u0160:"S",\u015b:"s",\u015d:"s",\u015f:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016a:"U",\u016c:"U",\u016e:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016b:"u",\u016d:"u",\u016f:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017b:"Z",\u017d:"Z",\u017a:"z",\u017c:"z",\u017e:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017f:"s"}),Tt=xt({"&":"&","<":"<",">":">",'"':""","'":"'"});function Rt(e){return"\\"+Ue[e]}function Bt(e){return Pe.test(e)}function Vt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function zt(e,t){return function(n){return e(t(n))}}function Ut(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"});var Yt=function e(t){var n,r=(t=null==t?qe:Yt.defaults(qe.Object(),t,Yt.pick(qe,Re))).Array,i=t.Date,pe=t.Error,de=t.Function,he=t.Math,ve=t.Object,me=t.RegExp,ge=t.String,be=t.TypeError,ye=r.prototype,Ee=de.prototype,_e=ve.prototype,we=t["__core-js_shared__"],Oe=Ee.toString,Ce=_e.hasOwnProperty,Ae=0,xe=(n=/[^.]+$/.exec(we&&we.keys&&we.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ke=_e.toString,Se=Oe.call(ve),Fe=qe._,De=me("^"+Oe.call(Ce).replace(G,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ie=Ze?t.Buffer:void 0,Me=t.Symbol,Pe=t.Uint8Array,Ue=Ie?Ie.allocUnsafe:void 0,$e=zt(ve.getPrototypeOf,ve),Ge=ve.create,Ye=_e.propertyIsEnumerable,Ke=ye.splice,Xe=Me?Me.isConcatSpreadable:void 0,Je=Me?Me.iterator:void 0,bt=Me?Me.toStringTag:void 0,xt=function(){try{var e=Qi(ve,"defineProperty");return e({},"",{}),e}catch(t){}}(),Kt=t.clearTimeout!==qe.clearTimeout&&t.clearTimeout,Zt=i&&i.now!==qe.Date.now&&i.now,Xt=t.setTimeout!==qe.setTimeout&&t.setTimeout,Jt=he.ceil,Qt=he.floor,en=ve.getOwnPropertySymbols,tn=Ie?Ie.isBuffer:void 0,nn=t.isFinite,rn=ye.join,on=zt(ve.keys,ve),an=he.max,un=he.min,sn=i.now,ln=t.parseInt,cn=he.random,fn=ye.reverse,pn=Qi(t,"DataView"),dn=Qi(t,"Map"),hn=Qi(t,"Promise"),vn=Qi(t,"Set"),mn=Qi(t,"WeakMap"),gn=Qi(ve,"create"),bn=mn&&new mn,yn={},En=ko(pn),_n=ko(dn),wn=ko(hn),On=ko(vn),Cn=ko(mn),An=Me?Me.prototype:void 0,xn=An?An.valueOf:void 0,kn=An?An.toString:void 0;function Sn(e){if(Ha(e)&&!Na(e)&&!(e instanceof jn)){if(e instanceof In)return e;if(Ce.call(e,"__wrapped__"))return So(e)}return new In(e)}var Fn=function(){function e(){}return function(t){if(!Wa(t))return{};if(Ge)return Ge(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Dn(){}function In(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function jn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Nn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Zn(e,t,n,r,i,o){var a,u=1&t,l=2&t,p=4&t;if(n&&(a=i?n(e,r,i,o):n(e)),void 0!==a)return a;if(!Wa(e))return e;var w=Na(e);if(w){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Ce.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!u)return gi(e,a)}else{var N=no(e),M=N==d||N==h;if(Ta(e))return fi(e,u);if(N==g||N==s||M&&!i){if(a=l||M?{}:io(e),!u)return l?function(e,t){return bi(e,to(e),t)}(e,function(e,t){return e&&bi(t,_u(t),e)}(a,e)):function(e,t){return bi(e,eo(e),t)}(e,Gn(a,e))}else{if(!ze[N])return i?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case O:return pi(e);case c:case f:return new r(+e);case C:return function(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case A:case x:case k:case S:case F:case D:case"[object Uint8ClampedArray]":case I:case j:return di(e,n);case v:return new r;case m:case E:return new r(e);case b:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new r;case _:return i=e,xn?ve(xn.call(i)):{}}var i}(e,N,u)}}o||(o=new Tn);var L=o.get(e);if(L)return L;o.set(e,a),Ka(e)?e.forEach((function(r){a.add(Zn(r,t,n,r,e,o))})):$a(e)&&e.forEach((function(r,i){a.set(i,Zn(r,t,n,i,e,o))}));var P=w?void 0:(p?l?Gi:$i:l?_u:Eu)(e);return ut(P||e,(function(r,i){P&&(r=e[i=r]),Wn(a,i,Zn(r,t,n,i,e,o))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var i=n[r],o=t[i],a=e[i];if(void 0===a&&!(i in e)||!o(a))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new be(o);return Eo((function(){e.apply(void 0,n)}),t)}function Qn(e,t,n,r){var i=-1,o=ft,a=!0,u=e.length,s=[],l=t.length;if(!u)return s;n&&(t=dt(t,Dt(n))),r?(o=pt,a=!1):t.length>=200&&(o=jt,a=!1,t=new Pn(t));e:for(;++i-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Hn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Ln.prototype.clear=function(){this.size=0,this.__data__={hash:new Nn,map:new(dn||Mn),string:new Nn}},Ln.prototype.delete=function(e){var t=Xi(this,e).delete(e);return this.size-=t?1:0,t},Ln.prototype.get=function(e){return Xi(this,e).get(e)},Ln.prototype.has=function(e){return Xi(this,e).has(e)},Ln.prototype.set=function(e,t){var n=Xi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Pn.prototype.add=Pn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(e){return this.__data__.has(e)},Tn.prototype.clear=function(){this.__data__=new Mn,this.size=0},Tn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Tn.prototype.get=function(e){return this.__data__.get(e)},Tn.prototype.has=function(e){return this.__data__.has(e)},Tn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ln(r)}return n.set(e,t),this.size=n.size,this};var er=_i(sr),tr=_i(lr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r0&&n(u)?t>1?or(u,t-1,n,r,i):ht(i,u):r||(i[i.length]=u)}return i}var ar=wi(),ur=wi(!0);function sr(e,t){return e&&ar(e,t,Eu)}function lr(e,t){return e&&ur(e,t,Eu)}function cr(e,t){return ct(t,(function(t){return Va(e[t])}))}function fr(e,t){for(var n=0,r=(t=ui(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&Ce.call(e,t)}function mr(e,t){return null!=e&&t in ve(e)}function gr(e,t,n){for(var i=n?pt:ft,o=e[0].length,a=e.length,u=a,s=r(a),l=1/0,c=[];u--;){var f=e[u];u&&t&&(f=dt(f,Dt(t))),l=un(f.length,l),s[u]=!n&&(t||o>=120&&f.length>=120)?new Pn(u&&f):void 0}f=e[0];var p=-1,d=s[0];e:for(;++p=u)return s;var l=n[r];return s*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)}))}function Nr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)u!==e&&Ke.call(u,s,1),Ke.call(e,s,1);return e}function Lr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;ao(i)?Ke.call(e,i,1):Qr(e,i)}}return e}function Pr(e,t){return e+Qt(cn()*(t-e+1))}function Tr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Qt(t/2))&&(e+=e)}while(t);return n}function Rr(e,t){return _o(vo(e,t,Gu),e+"")}function Br(e){return Bn(Fu(e))}function Vr(e,t){var n=Fu(e);return Co(n,Kn(t,0,n.length))}function zr(e,t,n,r){if(!Wa(e))return e;for(var i=-1,o=(t=ui(t,e)).length,a=o-1,u=e;null!=u&&++io?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=r(o);++i>>1,a=e[o];null!==a&&!Xa(a)&&(n?a<=t:a=200){var l=t?null:Ti(e);if(l)return Wt(l);a=!1,i=jt,s=new Pn}else s=t?[]:u;e:for(;++r=r?e:$r(e,t,n)}var ci=Kt||function(e){return qe.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ue?Ue(n):new e.constructor(n);return e.copy(r),r}function pi(e){var t=new e.constructor(e.byteLength);return new Pe(t).set(new Pe(e)),t}function di(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Xa(e),a=void 0!==t,u=null===t,s=t==t,l=Xa(t);if(!u&&!l&&!o&&e>t||o&&a&&s&&!u&&!l||r&&a&&s||!n&&s||!i)return 1;if(!r&&!o&&!l&&e1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,a&&uo(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=ve(t);++r-1?i[o?t[a]:a]:void 0}}function ki(e){return Hi((function(t){var n=t.length,r=n,i=In.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new be(o);if(i&&!u&&"wrapper"==Yi(a))var u=new In([],!0)}for(r=u?r:n;++r1&&y.reverse(),f&&lu))return!1;var l=o.get(e),c=o.get(t);if(l&&c)return l==t&&c==e;var f=-1,p=!0,d=2&n?new Pn:void 0;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return ut(u,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(J);return t?t[1].split(Q):[]}(r),n)))}function Oo(e){var t=0,n=0;return function(){var r=sn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Co(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yo(e,n)}));function ta(e){var t=Sn(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var ra=Hi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof jn&&ao(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[i],thisArg:void 0}),new In(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var ia=yi((function(e,t,n){Ce.call(e,n)?++e[n]:qn(e,n,1)}));var oa=xi(jo),aa=xi(No);function ua(e,t){return(Na(e)?ut:er)(e,Zi(t,3))}function sa(e,t){return(Na(e)?st:tr)(e,Zi(t,3))}var la=yi((function(e,t,n){Ce.call(e,n)?e[n].push(t):qn(e,n,[t])}));var ca=Rr((function(e,t,n){var i=-1,o="function"==typeof t,a=La(e)?r(e.length):[];return er(e,(function(e){a[++i]=o?ot(t,e,n):br(e,t,n)})),a})),fa=yi((function(e,t,n){qn(e,n,t)}));function pa(e,t){return(Na(e)?dt:kr)(e,Zi(t,3))}var da=yi((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ha=Rr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&uo(e,t[0],t[1])?t=[]:n>2&&uo(t[0],t[1],t[2])&&(t=[t[0]]),jr(e,or(t,1),[])})),va=Zt||function(){return qe.Date.now()};function ma(e,t,n){return t=n?void 0:t,Bi(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function ga(e,t){var n;if("function"!=typeof t)throw new be(o);return e=ru(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var ba=Rr((function(e,t,n){var r=1;if(n.length){var i=Ut(n,Ki(ba));r|=32}return Bi(e,r,t,n,i)})),ya=Rr((function(e,t,n){var r=3;if(n.length){var i=Ut(n,Ki(ya));r|=32}return Bi(t,r,e,n,i)}));function Ea(e,t,n){var r,i,a,u,s,l,c=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new be(o);function h(t){var n=r,o=i;return r=i=void 0,c=t,u=e.apply(o,n)}function v(e){return c=e,s=Eo(g,t),f?h(e):u}function m(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-c>=a}function g(){var e=va();if(m(e))return b(e);s=Eo(g,function(e){var n=t-(e-l);return p?un(n,a-(e-c)):n}(e))}function b(e){return s=void 0,d&&r?h(e):(r=i=void 0,u)}function y(){var e=va(),n=m(e);if(r=arguments,i=this,l=e,n){if(void 0===s)return v(l);if(p)return ci(s),s=Eo(g,t),h(l)}return void 0===s&&(s=Eo(g,t)),u}return t=ou(t)||0,Wa(n)&&(f=!!n.leading,a=(p="maxWait"in n)?an(ou(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),y.cancel=function(){void 0!==s&&ci(s),c=0,r=l=i=s=void 0},y.flush=function(){return void 0===s?u:b(va())},y}var _a=Rr((function(e,t){return Jn(e,1,t)})),wa=Rr((function(e,t,n){return Jn(e,ou(t)||0,n)}));function Oa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new be(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Oa.Cache||Ln),n}function Ca(e){if("function"!=typeof e)throw new be(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Oa.Cache=Ln;var Aa=si((function(e,t){var n=(t=1==t.length&&Na(t[0])?dt(t[0],Dt(Zi())):dt(or(t,1),Dt(Zi()))).length;return Rr((function(r){for(var i=-1,o=un(r.length,n);++i=t})),ja=yr(function(){return arguments}())?yr:function(e){return Ha(e)&&Ce.call(e,"callee")&&!Ye.call(e,"callee")},Na=r.isArray,Ma=Qe?Dt(Qe):function(e){return Ha(e)&&dr(e)==O};function La(e){return null!=e&&Ua(e.length)&&!Va(e)}function Pa(e){return Ha(e)&&La(e)}var Ta=tn||os,Ra=et?Dt(et):function(e){return Ha(e)&&dr(e)==f};function Ba(e){if(!Ha(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!qa(e)}function Va(e){if(!Wa(e))return!1;var t=dr(e);return t==d||t==h||"[object AsyncFunction]"==t||"[object Proxy]"==t}function za(e){return"number"==typeof e&&e==ru(e)}function Ua(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Wa(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ha(e){return null!=e&&"object"==typeof e}var $a=tt?Dt(tt):function(e){return Ha(e)&&no(e)==v};function Ga(e){return"number"==typeof e||Ha(e)&&dr(e)==m}function qa(e){if(!Ha(e)||dr(e)!=g)return!1;var t=$e(e);if(null===t)return!0;var n=Ce.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Oe.call(n)==Se}var Ya=nt?Dt(nt):function(e){return Ha(e)&&dr(e)==b};var Ka=rt?Dt(rt):function(e){return Ha(e)&&no(e)==y};function Za(e){return"string"==typeof e||!Na(e)&&Ha(e)&&dr(e)==E}function Xa(e){return"symbol"==typeof e||Ha(e)&&dr(e)==_}var Ja=it?Dt(it):function(e){return Ha(e)&&Ua(e.length)&&!!Ve[dr(e)]};var Qa=Mi(xr),eu=Mi((function(e,t){return e<=t}));function tu(e){if(!e)return[];if(La(e))return Za(e)?Gt(e):gi(e);if(Je&&e[Je])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Je]());var t=no(e);return(t==v?Vt:t==y?Wt:Fu)(e)}function nu(e){return e?(e=ou(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ru(e){var t=nu(e),n=t%1;return t==t?n?t-n:t:0}function iu(e){return e?Kn(ru(e),0,4294967295):0}function ou(e){if("number"==typeof e)return e;if(Xa(e))return NaN;if(Wa(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Wa(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Y,"");var n=oe.test(e);return n||ue.test(e)?He(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function au(e){return bi(e,_u(e))}function uu(e){return null==e?"":Xr(e)}var su=Ei((function(e,t){if(fo(t)||La(t))bi(t,Eu(t),e);else for(var n in t)Ce.call(t,n)&&Wn(e,n,t[n])})),lu=Ei((function(e,t){bi(t,_u(t),e)})),cu=Ei((function(e,t,n,r){bi(t,_u(t),e,r)})),fu=Ei((function(e,t,n,r){bi(t,Eu(t),e,r)})),pu=Hi(Yn);var du=Rr((function(e,t){e=ve(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&uo(t[0],t[1],i)&&(r=1);++n1),t})),bi(e,Gi(e),n),r&&(n=Zn(n,7,Ui));for(var i=t.length;i--;)Qr(n,t[i]);return n}));var Au=Hi((function(e,t){return null==e?{}:function(e,t){return Nr(e,t,(function(t,n){return mu(e,n)}))}(e,t)}));function xu(e,t){if(null==e)return{};var n=dt(Gi(e),(function(e){return[e]}));return t=Zi(t),Nr(e,n,(function(e,n){return t(e,n[0])}))}var ku=Ri(Eu),Su=Ri(_u);function Fu(e){return null==e?[]:It(e,Eu(e))}var Du=Ci((function(e,t,n){return t=t.toLowerCase(),e+(n?Iu(t):t)}));function Iu(e){return Bu(uu(e).toLowerCase())}function ju(e){return(e=uu(e))&&e.replace(le,Pt).replace(Ne,"")}var Nu=Ci((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Mu=Ci((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Lu=Oi("toLowerCase");var Pu=Ci((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Tu=Ci((function(e,t,n){return e+(n?" ":"")+Bu(t)}));var Ru=Ci((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Bu=Oi("toUpperCase");function Vu(e,t,n){return e=uu(e),void 0===(t=n?void 0:t)?function(e){return Te.test(e)}(e)?function(e){return e.match(Le)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var zu=Rr((function(e,t){try{return ot(e,void 0,t)}catch(n){return Ba(n)?n:new pe(n)}})),Uu=Hi((function(e,t){return ut(t,(function(t){t=xo(t),qn(e,t,ba(e[t],e))})),e}));function Wu(e){return function(){return e}}var Hu=ki(),$u=ki(!0);function Gu(e){return e}function qu(e){return Or("function"==typeof e?e:Zn(e,1))}var Yu=Rr((function(e,t){return function(n){return br(n,e,t)}})),Ku=Rr((function(e,t){return function(n){return br(e,n,t)}}));function Zu(e,t,n){var r=Eu(t),i=cr(t,r);null!=n||Wa(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=cr(t,Eu(t)));var o=!(Wa(n)&&"chain"in n&&!n.chain),a=Va(e);return ut(i,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,ht([this.value()],arguments))})})),e}function Xu(){}var Ju=Ii(dt),Qu=Ii(lt),es=Ii(gt);function ts(e){return so(e)?At(xo(e)):function(e){return function(t){return fr(t,e)}}(e)}var ns=Ni(),rs=Ni(!0);function is(){return[]}function os(){return!1}var as=Di((function(e,t){return e+t}),0),us=Pi("ceil"),ss=Di((function(e,t){return e/t}),1),ls=Pi("floor");var cs,fs=Di((function(e,t){return e*t}),1),ps=Pi("round"),ds=Di((function(e,t){return e-t}),0);return Sn.after=function(e,t){if("function"!=typeof t)throw new be(o);return e=ru(e),function(){if(--e<1)return t.apply(this,arguments)}},Sn.ary=ma,Sn.assign=su,Sn.assignIn=lu,Sn.assignInWith=cu,Sn.assignWith=fu,Sn.at=pu,Sn.before=ga,Sn.bind=ba,Sn.bindAll=Uu,Sn.bindKey=ya,Sn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Na(e)?e:[e]},Sn.chain=ta,Sn.chunk=function(e,t,n){t=(n?uo(e,t,n):void 0===t)?1:an(ru(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,a=0,u=r(Jt(i/t));oi?0:i+n),(r=void 0===r||r>i?i:ru(r))<0&&(r+=i),r=n>r?0:iu(r);n>>0)?(e=uu(e))&&("string"==typeof t||null!=t&&!Ya(t))&&!(t=Xr(t))&&Bt(e)?li(Gt(e),0,n):e.split(t,n):[]},Sn.spread=function(e,t){if("function"!=typeof e)throw new be(o);return t=null==t?0:an(ru(t),0),Rr((function(n){var r=n[t],i=li(n,0,t);return r&&ht(i,r),ot(e,this,i)}))},Sn.tail=function(e){var t=null==e?0:e.length;return t?$r(e,1,t):[]},Sn.take=function(e,t,n){return e&&e.length?$r(e,0,(t=n||void 0===t?1:ru(t))<0?0:t):[]},Sn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?$r(e,(t=r-(t=n||void 0===t?1:ru(t)))<0?0:t,r):[]},Sn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Zi(t,3),!1,!0):[]},Sn.takeWhile=function(e,t){return e&&e.length?ti(e,Zi(t,3)):[]},Sn.tap=function(e,t){return t(e),e},Sn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new be(o);return Wa(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ea(e,t,{leading:r,maxWait:t,trailing:i})},Sn.thru=na,Sn.toArray=tu,Sn.toPairs=ku,Sn.toPairsIn=Su,Sn.toPath=function(e){return Na(e)?dt(e,xo):Xa(e)?[e]:gi(Ao(uu(e)))},Sn.toPlainObject=au,Sn.transform=function(e,t,n){var r=Na(e),i=r||Ta(e)||Ja(e);if(t=Zi(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Wa(e)&&Va(o)?Fn($e(e)):{}}return(i?ut:sr)(e,(function(e,r,i){return t(n,e,r,i)})),n},Sn.unary=function(e){return ma(e,1)},Sn.union=Ho,Sn.unionBy=$o,Sn.unionWith=Go,Sn.uniq=function(e){return e&&e.length?Jr(e):[]},Sn.uniqBy=function(e,t){return e&&e.length?Jr(e,Zi(t,2)):[]},Sn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},Sn.unset=function(e,t){return null==e||Qr(e,t)},Sn.unzip=qo,Sn.unzipWith=Yo,Sn.update=function(e,t,n){return null==e?e:ei(e,t,ai(n))},Sn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,ai(n),r)},Sn.values=Fu,Sn.valuesIn=function(e){return null==e?[]:It(e,_u(e))},Sn.without=Ko,Sn.words=Vu,Sn.wrap=function(e,t){return xa(ai(t),e)},Sn.xor=Zo,Sn.xorBy=Xo,Sn.xorWith=Jo,Sn.zip=Qo,Sn.zipObject=function(e,t){return ii(e||[],t||[],Wn)},Sn.zipObjectDeep=function(e,t){return ii(e||[],t||[],zr)},Sn.zipWith=ea,Sn.entries=ku,Sn.entriesIn=Su,Sn.extend=lu,Sn.extendWith=cu,Zu(Sn,Sn),Sn.add=as,Sn.attempt=zu,Sn.camelCase=Du,Sn.capitalize=Iu,Sn.ceil=us,Sn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=ou(n))==n?n:0),void 0!==t&&(t=(t=ou(t))==t?t:0),Kn(ou(e),t,n)},Sn.clone=function(e){return Zn(e,4)},Sn.cloneDeep=function(e){return Zn(e,5)},Sn.cloneDeepWith=function(e,t){return Zn(e,5,t="function"==typeof t?t:void 0)},Sn.cloneWith=function(e,t){return Zn(e,4,t="function"==typeof t?t:void 0)},Sn.conformsTo=function(e,t){return null==t||Xn(e,t,Eu(t))},Sn.deburr=ju,Sn.defaultTo=function(e,t){return null==e||e!=e?t:e},Sn.divide=ss,Sn.endsWith=function(e,t,n){e=uu(e),t=Xr(t);var r=e.length,i=n=void 0===n?r:Kn(ru(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},Sn.eq=Fa,Sn.escape=function(e){return(e=uu(e))&&B.test(e)?e.replace(T,Tt):e},Sn.escapeRegExp=function(e){return(e=uu(e))&&q.test(e)?e.replace(G,"\\$&"):e},Sn.every=function(e,t,n){var r=Na(e)?lt:nr;return n&&uo(e,t,n)&&(t=void 0),r(e,Zi(t,3))},Sn.find=oa,Sn.findIndex=jo,Sn.findKey=function(e,t){return yt(e,Zi(t,3),sr)},Sn.findLast=aa,Sn.findLastIndex=No,Sn.findLastKey=function(e,t){return yt(e,Zi(t,3),lr)},Sn.floor=ls,Sn.forEach=ua,Sn.forEachRight=sa,Sn.forIn=function(e,t){return null==e?e:ar(e,Zi(t,3),_u)},Sn.forInRight=function(e,t){return null==e?e:ur(e,Zi(t,3),_u)},Sn.forOwn=function(e,t){return e&&sr(e,Zi(t,3))},Sn.forOwnRight=function(e,t){return e&&lr(e,Zi(t,3))},Sn.get=vu,Sn.gt=Da,Sn.gte=Ia,Sn.has=function(e,t){return null!=e&&ro(e,t,vr)},Sn.hasIn=mu,Sn.head=Lo,Sn.identity=Gu,Sn.includes=function(e,t,n,r){e=La(e)?e:Fu(e),n=n&&!r?ru(n):0;var i=e.length;return n<0&&(n=an(i+n,0)),Za(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&_t(e,t,n)>-1},Sn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ru(n);return i<0&&(i=an(r+i,0)),_t(e,t,i)},Sn.inRange=function(e,t,n){return t=nu(t),void 0===n?(n=t,t=0):n=nu(n),function(e,t,n){return e>=un(t,n)&&e=-9007199254740991&&e<=9007199254740991},Sn.isSet=Ka,Sn.isString=Za,Sn.isSymbol=Xa,Sn.isTypedArray=Ja,Sn.isUndefined=function(e){return void 0===e},Sn.isWeakMap=function(e){return Ha(e)&&no(e)==w},Sn.isWeakSet=function(e){return Ha(e)&&"[object WeakSet]"==dr(e)},Sn.join=function(e,t){return null==e?"":rn.call(e,t)},Sn.kebabCase=Nu,Sn.last=Bo,Sn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ru(n))<0?an(r+i,0):un(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):Et(e,Ot,i,!0)},Sn.lowerCase=Mu,Sn.lowerFirst=Lu,Sn.lt=Qa,Sn.lte=eu,Sn.max=function(e){return e&&e.length?rr(e,Gu,hr):void 0},Sn.maxBy=function(e,t){return e&&e.length?rr(e,Zi(t,2),hr):void 0},Sn.mean=function(e){return Ct(e,Gu)},Sn.meanBy=function(e,t){return Ct(e,Zi(t,2))},Sn.min=function(e){return e&&e.length?rr(e,Gu,xr):void 0},Sn.minBy=function(e,t){return e&&e.length?rr(e,Zi(t,2),xr):void 0},Sn.stubArray=is,Sn.stubFalse=os,Sn.stubObject=function(){return{}},Sn.stubString=function(){return""},Sn.stubTrue=function(){return!0},Sn.multiply=fs,Sn.nth=function(e,t){return e&&e.length?Ir(e,ru(t)):void 0},Sn.noConflict=function(){return qe._===this&&(qe._=Fe),this},Sn.noop=Xu,Sn.now=va,Sn.pad=function(e,t,n){e=uu(e);var r=(t=ru(t))?$t(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return ji(Qt(i),n)+e+ji(Jt(i),n)},Sn.padEnd=function(e,t,n){e=uu(e);var r=(t=ru(t))?$t(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=cn();return un(e+i*(t-e+We("1e-"+((i+"").length-1))),t)}return Pr(e,t)},Sn.reduce=function(e,t,n){var r=Na(e)?vt:kt,i=arguments.length<3;return r(e,Zi(t,4),n,i,er)},Sn.reduceRight=function(e,t,n){var r=Na(e)?mt:kt,i=arguments.length<3;return r(e,Zi(t,4),n,i,tr)},Sn.repeat=function(e,t,n){return t=(n?uo(e,t,n):void 0===t)?1:ru(t),Tr(uu(e),t)},Sn.replace=function(){var e=arguments,t=uu(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Sn.result=function(e,t,n){var r=-1,i=(t=ui(t,e)).length;for(i||(i=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=un(e,4294967295);e-=4294967295;for(var i=Ft(r,t=Zi(t));++n=o)return e;var u=n-$t(r);if(u<1)return r;var s=a?li(a,0,u).join(""):e.slice(0,u);if(void 0===i)return s+r;if(a&&(u+=s.length-u),Ya(i)){if(e.slice(u).search(i)){var l,c=s;for(i.global||(i=me(i.source,uu(re.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var f=l.index;s=s.slice(0,void 0===f?u:f)}}else if(e.indexOf(Xr(i),u)!=u){var p=s.lastIndexOf(i);p>-1&&(s=s.slice(0,p))}return s+r},Sn.unescape=function(e){return(e=uu(e))&&R.test(e)?e.replace(P,qt):e},Sn.uniqueId=function(e){var t=++Ae;return uu(e)+t},Sn.upperCase=Ru,Sn.upperFirst=Bu,Sn.each=ua,Sn.eachRight=sa,Sn.first=Lo,Zu(Sn,(cs={},sr(Sn,(function(e,t){Ce.call(Sn.prototype,t)||(cs[t]=e)})),cs),{chain:!1}),Sn.VERSION="4.17.19",ut(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Sn[e].placeholder=Sn})),ut(["drop","take"],(function(e,t){jn.prototype[e]=function(n){n=void 0===n?1:an(ru(n),0);var r=this.__filtered__&&!t?new jn(this):this.clone();return r.__filtered__?r.__takeCount__=un(n,r.__takeCount__):r.__views__.push({size:un(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},jn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),ut(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;jn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Zi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),ut(["head","last"],(function(e,t){var n="take"+(t?"Right":"");jn.prototype[e]=function(){return this[n](1).value()[0]}})),ut(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");jn.prototype[e]=function(){return this.__filtered__?new jn(this):this[n](1)}})),jn.prototype.compact=function(){return this.filter(Gu)},jn.prototype.find=function(e){return this.filter(e).head()},jn.prototype.findLast=function(e){return this.reverse().find(e)},jn.prototype.invokeMap=Rr((function(e,t){return"function"==typeof e?new jn(this):this.map((function(n){return br(n,e,t)}))})),jn.prototype.reject=function(e){return this.filter(Ca(Zi(e)))},jn.prototype.slice=function(e,t){e=ru(e);var n=this;return n.__filtered__&&(e>0||t<0)?new jn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ru(t))<0?n.dropRight(-t):n.take(t-e)),n)},jn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},jn.prototype.toArray=function(){return this.take(4294967295)},sr(jn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=Sn[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(Sn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,u=t instanceof jn,s=a[0],l=u||Na(t),c=function(e){var t=i.apply(Sn,ht([e],a));return r&&f?t[0]:t};l&&n&&"function"==typeof s&&1!=s.length&&(u=l=!1);var f=this.__chain__,p=!!this.__actions__.length,d=o&&!f,h=u&&!p;if(!o&&l){t=h?t:new jn(this);var v=e.apply(t,a);return v.__actions__.push({func:na,args:[c],thisArg:void 0}),new In(v,f)}return d&&h?e.apply(this,a):(v=this.thru(c),d?r?v.value()[0]:v.value():v)})})),ut(["pop","push","shift","sort","splice","unshift"],(function(e){var t=ye[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Sn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Na(i)?i:[],e)}return this[n]((function(n){return t.apply(Na(n)?n:[],e)}))}})),sr(jn.prototype,(function(e,t){var n=Sn[t];if(n){var r=n.name+"";Ce.call(yn,r)||(yn[r]=[]),yn[r].push({name:t,func:n})}})),yn[Si(void 0,2).name]=[{name:"wrapper",func:void 0}],jn.prototype.clone=function(){var e=new jn(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},jn.prototype.reverse=function(){if(this.__filtered__){var e=new jn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},jn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Na(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Sn.prototype.plant=function(e){for(var t,n=this;n instanceof Dn;){var r=So(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},Sn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof jn){var t=e;return this.__actions__.length&&(t=new jn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Wo],thisArg:void 0}),new In(t,this.__chain__)}return this.thru(Wo)},Sn.prototype.toJSON=Sn.prototype.valueOf=Sn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},Sn.prototype.first=Sn.prototype.head,Je&&(Sn.prototype[Je]=function(){return this}),Sn}();qe._=Yt,void 0===(i=function(){return Yt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n(77),n(340)(e))},332:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var r=n(267);function i(){var e=Object(r.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,n=Date.parse(t.date),i=new Date,o=Math.abs(i-n),a=Math.ceil(o/864e5),u=null;return"undefined"!=typeof window&&(u=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),a<30&&(!u||u=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(i),i.className=this.props.inputClassName,i.id=this.state.inputId,i.style=n,a.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),a.default.createElement("input",r({},i,{ref:this.inputRef})),a.default.createElement("div",{ref:this.sizerRef,style:l},e),this.props.placeholder?a.default.createElement("div",{ref:this.placeHolderSizerRef,style:l},this.props.placeholder):null)}}]),t}(o.Component);h.propTypes={className:u.default.string,defaultValue:u.default.any,extraWidth:u.default.oneOfType([u.default.number,u.default.string]),id:u.default.string,injectStyles:u.default.bool,inputClassName:u.default.string,inputRef:u.default.func,inputStyle:u.default.object,minWidth:u.default.oneOfType([u.default.number,u.default.string]),onAutosize:u.default.func,onChange:u.default.func,placeholder:u.default.string,placeholderIsMinWidth:u.default.bool,style:u.default.object,value:u.default.any},h.defaultProps={minWidth:1,injectStyles:!0},t.default=h},397:function(e,t,n){"use strict";var r=n(398),i=n(58);function o(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=i({arrayFormat:"none"},t)),r=Object.create(null);return"string"!=typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),i=t.shift(),o=t.length>0?t.join("="):void 0;o=void 0===o?null:decodeURIComponent(o),n(decodeURIComponent(i),o,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[o(t,e),"[",r,"]"].join(""):[o(t,e),"[",o(r,e),"]=",o(n,e)].join("")};case"bracket":return function(t,n){return null===n?o(t,e):[o(t,e),"[]=",o(n,e)].join("")};default:return function(t,n){return null===n?o(t,e):[o(t,e),"=",o(n,e)].join("")}}}(t=i({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var i=e[r];if(void 0===i)return"";if(null===i)return o(r,t);if(Array.isArray(i)){var a=[];return i.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return o(r,t)+"="+o(i,t)})).filter((function(e){return e.length>0})).join("&"):""}},398:function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}}}]); \ No newline at end of file diff --git a/c4f5d8e4.ee212d95.js.LICENSE.txt b/c4f5d8e4.38cfeaa6.js.LICENSE.txt similarity index 100% rename from c4f5d8e4.ee212d95.js.LICENSE.txt rename to c4f5d8e4.38cfeaa6.js.LICENSE.txt diff --git a/ccc49370.e198add5.js b/ccc49370.5197108f.js similarity index 99% rename from ccc49370.e198add5.js rename to ccc49370.5197108f.js index abdb6f0fc..d28fda8d5 100644 --- a/ccc49370.e198add5.js +++ b/ccc49370.5197108f.js @@ -1,2 +1,2 @@ -/*! For license information please see ccc49370.e198add5.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{264:function(e,t,a){"use strict";a.r(t);a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(328),i=a(273),c=(a(329),a(268));var o=function(e){var t=e.nextItem,a=e.prevItem;return r.a.createElement("nav",{className:"pagination-nav"},r.a.createElement("div",{className:"pagination-nav__item"},a&&r.a.createElement(c.a,{className:"pagination-nav__link",to:a.permalink},r.a.createElement("div",{className:"pagination-nav__link--sublabel"},"Previous Post"),r.a.createElement("div",{className:"pagination-nav__link--label"},"\xab ",a.title))),r.a.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t&&r.a.createElement(c.a,{className:"pagination-nav__link",to:t.permalink},r.a.createElement("div",{className:"pagination-nav__link--sublabel"},"Next Post"),r.a.createElement("div",{className:"pagination-nav__link--label"},t.title," \xbb"))))},s=a(299),D=a(265),m=a(293),d=a(266),E=a.n(d),g=a(294),f=a.n(g),b=a(275),p=a(332),h=a(317),v=a.n(h),F=a(239),y=a.n(F);t.default=function(e){var t=e.content,a=t.frontMatter,n=t.metadata,c=a.author_github,d=a.id,g=a.title,h=n.date,F=n.tags,C=v()(t.toString()),N=new Date(Date.parse(h)),_=Object(b.a)(F,"blog").find((function(e){return"domain"==e.category})),w=_?_.value:null,k=Object(p.a)();return k&&k.id==d&&Object(p.b)(),r.a.createElement(i.a,{title:n.title,description:n.description},r.a.createElement("article",{className:y.a.blogPost},r.a.createElement("header",{className:E()("hero","domain-bg","domain-bg--"+w,y.a.header)},r.a.createElement("div",{className:E()("container",y.a.headerContainer)},r.a.createElement("div",{class:"hero--avatar"},r.a.createElement(u.a,{github:c,size:"lg",nameSuffix:r.a.createElement(r.a.Fragment,null," / ",r.a.createElement("time",{pubdate:"pubdate",dateTime:N.toISOString()},f()(N,"mmm dS, yyyy"))," / ",C.text),rel:"author",subTitle:!1,vertical:!0})),r.a.createElement("h1",null,g),r.a.createElement("div",{className:"hero--subtitle"},n.description),r.a.createElement("div",{className:"hero--tags"},r.a.createElement(m.a,{colorProfile:"blog",tags:F})))),r.a.createElement("div",{className:"container container--xs margin-vert--xl"},r.a.createElement("section",{className:"markdown dropcap"},r.a.createElement(D.a,{components:s.a},r.a.createElement(t,null))),r.a.createElement("section",null,r.a.createElement("h2",null,"Like What You See?"),r.a.createElement(l.a,null)),(n.nextItem||n.prevItem)&&r.a.createElement("div",{className:"margin-vert--xl"},r.a.createElement(o,{nextItem:n.nextItem,prevItem:n.prevItem})))))}},265:function(e,t,a){"use strict";a.d(t,"a",(function(){return D})),a.d(t,"b",(function(){return E}));var n=a(0),r=a.n(n);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(S,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement(I,{alt:o.alt,url:s})):r.a.createElement(I,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),R=a(291),W=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,g=e.image,f=e.keywords,b=(e.permalink,e.version),p=D?D+" | "+i:i,h=g||c,v=o+Object(C.a)(h),F=Object(C.a)(n),y=Object(W.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(H.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),p&&r.a.createElement("title",null,p),p&&r.a.createElement("meta",{property:"og:title",content:p}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),b&&r.a.createElement("meta",{name:"docsearch:version",content:b}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),h&&r.a.createElement("meta",{property:"og:image",content:v}),h&&r.a.createElement("meta",{property:"twitter:image",content:v}),h&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+p}),h&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),h&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(L,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,g=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:g.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:g.github,target:"_blank",rel:o},g.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:g.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),g=e[d+"Day"](),f=e[d+"Month"](),b=e[d+"FullYear"](),p=e[d+"Hours"](),h=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),_={d:E,dd:o(E),ddd:c.i18n.dayNames[g],dddd:c.i18n.dayNames[g+7],m:f+1,mm:o(f+1),mmm:c.i18n.monthNames[f],mmmm:c.i18n.monthNames[f+12],yy:String(b).slice(2),yyyy:b,h:p%12||12,hh:o(p%12||12),H:p,HH:o(p),M:h,MM:o(h),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:p<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:p<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:p<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:p<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in _?_[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(O=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return w.current&&(e=new i.a(w.current,{target:function(){return _.current}})),function(){e&&e.destroy()}}),[w.current,_.current]);var x=a&&a.replace(/language-/,"");!x&&s.defaultLanguage&&(x=s.defaultLanguage);var B=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:x}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,O&&u.a.createElement("div",{style:l,className:p.a.codeBlockTitle},O),u.a.createElement("div",{className:p.a.codeBlockContent},u.a.createElement("button",{ref:w,type:"button","aria-label":"Copy code to clipboard",className:D()(p.a.copyButton,(t={},t[p.a.copyButtonWithTitle]=O,t)),onClick:B},b?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,p.a.codeBlock,(a={},a[p.a.codeBlockWithTitle]=O,a))},u.a.createElement("div",{ref:_,className:p.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return k.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,i=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?i((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&i((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),i=(a(299),a(265),a(293)),c=a(266),o=a.n(c),s=a(294),D=a.n(s),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,c=(e.truncated,e.isBlogPostPage,n.date),s=n.description,d=n.permalink,g=n.tags,f=a.author_github,b=a.title,p=E()(t.toString()),h=new Date(Date.parse(c)),v=Object(m.a)(g,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,b),r.a.createElement("div",{className:"subtitle"},s),r.a.createElement(u.a,{github:f,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:h.toISOString()},D()(h,"mmm dS, yyyy"))," / ",p.text),rel:"author"}),r.a.createElement(i.a,{colorProfile:"blog",tags:g})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,i=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[i]);)i--;for(r=l;r<=i;){for(;r<=i&&!a(e[r]);r++);for(u++;r<=i&&a(e[r]);r++);}var c=u/t.wordsPerMinute,o=60*c*1e3;return{text:Math.ceil(c.toFixed(2))+" min read",minutes:c,time:o,words:u}}},332:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),l=Math.ceil(u/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),l<30&&(!i||i=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=r.a.createContext({}),s=function(e){var t=r.a.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i({},t,{},e)),a},D=function(e){var t=s(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=Object(n.forwardRef)((function(e,t){var a=e.components,n=e.mdxType,u=e.originalType,l=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),D=s(a),d=n,E=D["".concat(l,".").concat(d)]||D[d]||m[d]||u;return a?r.a.createElement(E,i({ref:t},o,{components:a})):r.a.createElement(E,i({ref:t},o))}));function E(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var u=a.length,l=new Array(u);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var o=2;o0&&r.a.createElement("div",{className:"row footer__links"},r.a.createElement("div",{className:"col col--5 footer__col"},r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(D.a,{className:"navbar__logo",src:"/img/logo-light.svg",alt:"gnet",width:"150",height:"auto"})),r.a.createElement("div",{className:"margin-bottom--md"},r.a.createElement(S,{description:!1,width:"150px"})),r.a.createElement("div",null,r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank"},r.a.createElement("i",{className:"feather icon-twitter",alt:"gnet's Twitter"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank"},r.a.createElement("i",{className:"feather icon-github",alt:"gnet's Github Repo"})),"\xa0\xa0\xa0\xa0",r.a.createElement("a",{href:"https://strikefreedom.top/rss.xml",target:"_blank"},r.a.createElement("i",{className:"feather icon-rss",alt:"gnet's RSS feed"})))),i.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(P,e))}))):null)}))),(o||u)&&r.a.createElement("div",{className:"text--center"},o&&o.src&&r.a.createElement("div",{className:"margin-bottom--sm"},o.href?r.a.createElement("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement(I,{alt:o.alt,url:s})):r.a.createElement(I,{alt:o.alt,url:s}),r.a.createElement("br",null),r.a.createElement("a",{href:"https://www.digitalocean.com/",target:"_blank",rel:"noopener noreferrer",className:B.a.footerLogoLink},r.a.createElement("img",{alt:"DigitalOcean",src:"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg",width:"201px"}))),u,r.a.createElement("br",null),r.a.createElement("small",null,r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/security/policy"},"Security Policy"),"\xa0\u2022\xa0",r.a.createElement("a",{href:"https://github.com/panjf2000/gnet/blob/master/PRIVACY.md"},"Privacy Policy"))))):null},H=a(290),R=a(291),W=a(3);a(135);t.a=function(e){var t=Object(E.a)().siteConfig,a=void 0===t?{}:t,n=a.favicon,i=(a.tagline,a.title),c=a.themeConfig.image,o=a.url,s=e.children,D=e.title,m=e.noFooter,d=e.description,g=e.image,f=e.keywords,b=(e.permalink,e.version),p=D?D+" | "+i:i,h=g||c,v=o+Object(C.a)(h),F=Object(C.a)(n),y=Object(W.h)(),N=y?"https://gnet.host"+(y.pathname.endsWith("/")?y.pathname:y.pathname+"/"):null;return r.a.createElement(R.a,null,r.a.createElement(H.a,null,r.a.createElement(l.a,null,r.a.createElement("html",{lang:"en"}),r.a.createElement("meta",{httpEquiv:"x-ua-compatible",content:"ie=edge"}),p&&r.a.createElement("title",null,p),p&&r.a.createElement("meta",{property:"og:title",content:p}),n&&r.a.createElement("link",{rel:"shortcut icon",href:F}),d&&r.a.createElement("meta",{name:"description",content:d}),d&&r.a.createElement("meta",{property:"og:description",content:d}),b&&r.a.createElement("meta",{name:"docsearch:version",content:b}),f&&f.length&&r.a.createElement("meta",{name:"keywords",content:f.join(",")}),h&&r.a.createElement("meta",{property:"og:image",content:v}),h&&r.a.createElement("meta",{property:"twitter:image",content:v}),h&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+p}),h&&r.a.createElement("meta",{name:"twitter:site",content:"@vectordotdev"}),h&&r.a.createElement("meta",{name:"twitter:creator",content:"@vectordotdev"}),N&&r.a.createElement("meta",{property:"og:url",content:N}),r.a.createElement("meta",{name:"twitter:card",content:"summary"}),N&&r.a.createElement("link",{rel:"canonical",href:N})),r.a.createElement(u.a,null),r.a.createElement(A,null),r.a.createElement("div",{className:"main-wrapper"},s),!m&&r.a.createElement(L,null)))}},275:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));a(79),a(298),a(274),a(78);var n=a(279),r=a.n(n);function u(e,t){var a=new r.a;return e.map((function(e){var n=e;return"string"==typeof e&&(n={label:e,permalink:"/"+t+"/tags/"+a.slug(e)}),function(e,t){if(e.enriched)return e;var a=e.label.split(": ",2),n=a[0],r=a[1],u="primary";switch(n){case"domain":u="blue";break;case"type":u="pink";break;default:u="primary"}return{category:n,count:e.count,enriched:!0,label:e.label,permalink:e.permalink,style:u,value:r}}(n)}))}},277:function(e,t,a){var n=a(24).f,r=Function.prototype,u=/^\s*function ([^ (]*)/;"name"in r||a(10)&&n(r,"name",{configurable:!0,get:function(){try{return(""+this).match(u)[1]}catch(e){return""}}})},279:function(e,t,a){var n=a(288);e.exports=i;var r=Object.hasOwnProperty,u=/\s/g,l=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~\u2019]/g;function i(){if(!(this instanceof i))return new i;this.reset()}function c(e,t){return"string"!=typeof e?"":(t||(e=e.toLowerCase()),e.trim().replace(l,"").replace(n(),"").replace(u,"-"))}i.prototype.slug=function(e,t){for(var a=c(e,!0===t),n=a;r.call(this.occurrences,a);)this.occurrences[n]++,a=n+"-"+this.occurrences[n];return this.occurrences[a]=0,a},i.prototype.reset=function(){this.occurrences=Object.create(null)},i.slug=c},287:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(268),l=a(266),i=a.n(l);t.a=function(e){var t=e.count,a=e.label,n=e.permalink,l=e.style,c=e.value,o=e.valueOnly;return r.a.createElement(u.a,{to:n+"/",className:i()("badge","badge--rounded","badge--"+l)},o?c:a,t&&r.a.createElement(r.a.Fragment,null," (",t,")"))}},288:function(e,t){e.exports=function(){return/[\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\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\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\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-\uDD79\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED0\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3]|\uD83E[\uDD10-\uDD18\uDD80-\uDD84\uDDC0]|\uD83C\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uD83C\uDDFE\uD83C[\uDDEA\uDDF9]|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDFC\uD83C[\uDDEB\uDDF8]|\uD83C\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uD83C\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF]|\uD83C\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uD83C\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uD83C\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uD83C\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uD83C\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uD83C\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uD83C\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uD83C\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uD83C\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uD83C\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uD83C\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uD83C\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uD83C\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uD83C\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uD83C\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uD83C\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|[#\*0-9]\u20E3/g}},292:function(e,t,a){"use strict";a(277),a(274);var n=a(0),r=a.n(n),u=a(266),l=a.n(u),i=a(267);a(137);t.a=function(e){var t,a=e.bio,n=e.className,u=e.github,c=e.nameSuffix,o=e.rel,s=e.size,D=e.subTitle,m=e.vertical,d=Object(i.a)().siteConfig,E=(void 0===d?{}:d).customFields.metadata.team,g=E.find((function(e){return e.github==u}))||E.find((function(e){return"ben"==e.id}));return r.a.createElement("div",{className:l()("avatar",n,(t={},t["avatar--"+s]=s,t["avatar--vertical"]=m,t))},r.a.createElement("img",{className:l()("avatar__photo","avatar__photo--"+s),src:g.avatar}),r.a.createElement("div",{className:"avatar__intro"},r.a.createElement("div",{className:"avatar__name"},r.a.createElement("a",{href:g.github,target:"_blank",rel:o},g.name),c),D&&r.a.createElement("small",{className:"avatar__subtitle"},D),!D&&a&&r.a.createElement("small",{className:"avatar__subtitle",dangerouslySetInnerHTML:{__html:g.bio}})))}},293:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=(a(268),a(287)),i=a(266),c=a.n(i),o=a(275),s=a(138),D=a.n(s);t.a=function(e){var t,a=e.block,r=e.colorProfile,i=e.tags,s=e.valuesOnly,m=Object(o.a)(i,r);return u.a.createElement("span",{className:c()(D.a.tags,(t={},t[D.a.tagsBlock]=a,t))},m.map((function(e,t){return u.a.createElement(l.a,Object(n.a)({key:t,valueOnly:s},e))})))}},294:function(e,t,a){var n;!function(r){"use strict";var u,l,i,c=(u=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,i=/[^-+\dA-Z]/g,function(e,t,a,n){if(1!==arguments.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var r=(t=String(c.masks[t]||t||c.masks.default)).slice(0,4);"UTC:"!==r&&"GMT:"!==r||(t=t.slice(4),a=!0,"GMT:"===r&&(n=!0));var d=a?"getUTC":"get",E=e[d+"Date"](),g=e[d+"Day"](),f=e[d+"Month"](),b=e[d+"FullYear"](),p=e[d+"Hours"](),h=e[d+"Minutes"](),v=e[d+"Seconds"](),F=e[d+"Milliseconds"](),y=a?0:e.getTimezoneOffset(),C=s(e),N=D(e),_={d:E,dd:o(E),ddd:c.i18n.dayNames[g],dddd:c.i18n.dayNames[g+7],m:f+1,mm:o(f+1),mmm:c.i18n.monthNames[f],mmmm:c.i18n.monthNames[f+12],yy:String(b).slice(2),yyyy:b,h:p%12||12,hh:o(p%12||12),H:p,HH:o(p),M:h,MM:o(h),s:v,ss:o(v),l:o(F,3),L:o(Math.round(F/10)),t:p<12?c.i18n.timeNames[0]:c.i18n.timeNames[1],tt:p<12?c.i18n.timeNames[2]:c.i18n.timeNames[3],T:p<12?c.i18n.timeNames[4]:c.i18n.timeNames[5],TT:p<12?c.i18n.timeNames[6]:c.i18n.timeNames[7],Z:n?"GMT":a?"UTC":(String(e).match(l)||[""]).pop().replace(i,""),o:(y>0?"-":"+")+o(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][E%10>3?0:(E%100-E%10!=10)*E%10],W:C,N:N};return t.replace(u,(function(e){return e in _?_[e]:e.slice(1,e.length-1)}))});function o(e,t){for(e=String(e),t=t||2;e.length0}))}l&&v.test(l)&&(O=l.match(v)[0].split("title=")[1].replace(/"+/g,"")),Object(r.useEffect)((function(){var e;return w.current&&(e=new i.a(w.current,{target:function(){return _.current}})),function(){e&&e.destroy()}}),[w.current,_.current]);var x=a&&a.replace(/language-/,"");!x&&s.defaultLanguage&&(x=s.defaultLanguage);var B=function(){window.getSelection().empty(),F(!0),setTimeout((function(){return F(!1)}),2e3)};return u.a.createElement(c.a,Object(n.a)({},c.b,{key:C,theme:M,code:t.trim(),language:x}),(function(e){var t,a,r=e.className,l=e.style,i=e.tokens,c=e.getLineProps,o=e.getTokenProps;return u.a.createElement(u.a.Fragment,null,O&&u.a.createElement("div",{style:l,className:p.a.codeBlockTitle},O),u.a.createElement("div",{className:p.a.codeBlockContent},u.a.createElement("button",{ref:w,type:"button","aria-label":"Copy code to clipboard",className:D()(p.a.copyButton,(t={},t[p.a.copyButtonWithTitle]=O,t)),onClick:B},b?"Copied":"Copy"),u.a.createElement("pre",{className:D()(r,p.a.codeBlock,(a={},a[p.a.codeBlockWithTitle]=O,a))},u.a.createElement("div",{ref:_,className:p.a.codeBlockLines,style:l},i.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var a=c({line:e,key:t});return k.includes(t+1)&&(a.className=a.className+" docusaurus-highlight-code-line"),u.a.createElement("div",Object(n.a)({key:t},a),e.map((function(e,t){return u.a.createElement("span",Object(n.a)({key:t},o({token:e,key:t})))})))}))))))}))}}).call(this,a(77))},299:function(e,t,a){"use strict";var n=a(1),r=a(0),u=a.n(r),l=a(268),i=a(297),c=a(278),o=a(141),s=a.n(o);t.a={code:function(e){var t=e.children;return"string"==typeof t?u.a.createElement(i.a,e):t},a:function(e){return/\.[^./]+$/.test(e.href)?u.a.createElement("a",e):u.a.createElement(l.a,e)},pre:function(e){return u.a.createElement("div",Object(n.a)({className:s.a.mdxCodeBlock},e))},h1:Object(c.a)("h1"),h2:Object(c.a)("h2"),h3:Object(c.a)("h3"),h4:Object(c.a)("h4"),h5:Object(c.a)("h5"),h6:Object(c.a)("h6")}},316:function(e,t,a){"use strict";a(330);var n=a(8),r=a(81),u=a(10),l=/./.toString,i=function(e){a(15)(RegExp.prototype,"toString",e,!0)};a(13)((function(){return"/a/b"!=l.call({source:"a",flags:"b"})}))?i((function(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!u&&e instanceof RegExp?r.call(e):void 0)})):"toString"!=l.name&&i((function(){return l.call(this)}))},317:function(e,t,a){e.exports=a(331)},328:function(e,t,a){"use strict";var n=a(0),r=a.n(n),u=a(266),l=a.n(u);t.a=function(e){var t=e.github,a=e.inline,n=e.size,u=e.style,i=l()("panel","panel--button","panel--"+n,"panel--"+u,{"panel--button--inline":a});return r.a.createElement("div",{className:"row row--squished"},r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://twitter.com/panjf2000",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-twitter",title:"Twitter"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Follow @panjf2000"),r.a.createElement("div",{className:"panel--description"},"Get real-time updates!")))),0!=t&&r.a.createElement("div",{className:"col"},r.a.createElement("a",{href:"https://github.com/panjf2000/gnet",target:"_blank",className:i},r.a.createElement("div",{className:"panel--icon"},r.a.createElement("i",{className:"feather icon-github"})),r.a.createElement("div",null,r.a.createElement("div",{className:"panel--title"},"Star panjf2000/gnet"),r.a.createElement("div",{className:"panel--description"},"Star the repo to support us.")))))}},329:function(e,t,a){"use strict";a(274),a(316),a(19);var n=a(0),r=a.n(n),u=a(292),l=a(268),i=(a(299),a(265),a(293)),c=a(266),o=a.n(c),s=a(294),D=a.n(s),m=a(275),d=a(317),E=a.n(d);t.a=function(e){var t=e.children,a=e.frontMatter,n=e.metadata,c=(e.truncated,e.isBlogPostPage,n.date),s=n.description,d=n.permalink,g=n.tags,f=a.author_github,b=a.title,p=E()(t.toString()),h=new Date(Date.parse(c)),v=Object(m.a)(g,"blog").find((function(e){return"domain"==e.category})),F=v?v.value:null;return r.a.createElement(l.a,{to:d+"/",className:o()("panel","domain-bg","domain-bg--hover","domain-bg--"+F)},r.a.createElement("article",null,r.a.createElement("h2",null,b),r.a.createElement("div",{className:"subtitle"},s),r.a.createElement(u.a,{github:f,size:"sm",subTitle:r.a.createElement(r.a.Fragment,null,r.a.createElement("time",{pubdate:"pubdate",dateTime:h.toISOString()},D()(h,"mmm dS, yyyy"))," / ",p.text),rel:"author"}),r.a.createElement(i.a,{colorProfile:"blog",tags:g})))}},330:function(e,t,a){a(10)&&"g"!=/./g.flags&&a(24).f(RegExp.prototype,"flags",{configurable:!0,get:a(81)})},331:function(e,t,a){"use strict";function n(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}e.exports=function(e,t){var a,r,u=0,l=0,i=e.length-1;for((t=t||{}).wordsPerMinute=t.wordsPerMinute||200,a=t.wordBound||n;a(e[l]);)l++;for(;a(e[i]);)i--;for(r=l;r<=i;){for(;r<=i&&!a(e[r]);r++);for(u++;r<=i&&a(e[r]);r++);}var c=u/t.wordsPerMinute,o=60*c*1e3;return{text:Math.ceil(c.toFixed(2))+" min read",minutes:c,time:o,words:u}}},332:function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return u}));var n=a(267);function r(){var e=Object(n.a)().siteConfig,t=(void 0===e?{}:e).customFields.metadata.latest_post,a=Date.parse(t.date),r=new Date,u=Math.abs(r-a),l=Math.ceil(u/864e5),i=null;return"undefined"!=typeof window&&(i=new Date(parseInt(window.localStorage.getItem("blogViewedAt")||"0"))),l<30&&(!i||i - + @@ -29,18 +29,18 @@ - +
-

gnet Community

Join the gnet community. Connect with other gnet users and help make gnet better.

Meet The Team

Andy Pan is the creator of gnet and the only core contributor at present, hoping more developers will join me in the future.
+

gnet Community

Join the gnet community. Connect with other gnet users and help make gnet better.

Meet The Team

Andy Pan is the creator of gnet and the only core contributor at present, hoping more developers will join me in the future.
- + @@ -48,7 +48,7 @@ - + diff --git a/contact/index.html b/contact/index.html index 8e8df15e6..012a975bd 100644 --- a/contact/index.html +++ b/contact/index.html @@ -21,7 +21,7 @@ - + @@ -29,18 +29,18 @@ - +
-

Contact

gnet is an open-source software created by Andy Pan. You can contact the author using any of the options below.
+

Contact

gnet is an open-source software created by Andy Pan. You can contact the author using any of the options below.
- + @@ -48,7 +48,7 @@ - + diff --git a/docs/about/overview-zh/index.html b/docs/about/overview-zh/index.html index de2134ae9..b791cdde9 100644 --- a/docs/about/overview-zh/index.html +++ b/docs/about/overview-zh/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,12 +45,12 @@
-

预览

gnet 是什么?

gnet 是一个基于事件驱动的高性能和轻量级网络框架。这个框架是基于 epollkqueue 从零开发的,而且相比 Go net,它能以更低的内存占用实现更高的性能。

gnetnet 有着不一样的网络编程模式。因此,用 gnet 开发网络应用和用 net 开发区别很大,而且两者之间不可调和。社区里有其他同类的产品像是 libevent, libuv, netty, twisted, tornadognet 的底层工作原理和这些框架非常类似。

gnet 不是为了取代 net 而生的,而是在 Go 生态中为开发者提供一个开发性能敏感的网络服务的替代品。也正因如此,gnet 在功能上的全面性并不如 Go net,它只会提供网络应用所需的最核心的功能和最精简的 APIs,而且 gnet 也并没有打算变成一个无所不包的网络框架,因为我觉得 Go net 在这方面已经做得足够好了。

gnet 的卖点在于它是一个高性能、轻量级、非阻塞的纯 Go 语言实现的传输层(TCP/UDP/Unix Domain Socket)网络框架。开发者可以使用 gnet 来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络服务。比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。

gnet 衍生自另一个项目:evio,但拥有更丰富的功能特性,且性能远胜之。

功能

  • 基于多线程/协程网络模型的高性能事件驱动循环
  • 内置 goroutine 池,由开源库 ants 提供支持
  • 整个生命周期是无锁的
  • 简单易用的 APIs
  • 高效、可重用而且自动伸缩的内存 buffer:(Elastic-)Ring-Buffer, Linked-List-Buffer and Elastic-Mixed-Buffer
  • 多种网络协议/IPC 机制:TCPUDPUnix Domain Socket
  • 多种负载均衡算法:Round-Robin(轮询)Source-Addr-Hash(源地址哈希)Least-Connections(最少连接数)
  • 两种事件驱动机制:Linux 里的 epoll 以及 FreeBSD/DragonFly/Darwin 里的 kqueue
  • 灵活的事件定时器
  • 实现 gnet 客户端
  • 支持 Windows 平台 (仅用于开发环境的兼容性,不要在生产环境中使用)
  • 多网络地址绑定
  • 支持 TLS
  • 支持 io_uring

架构

多线程/Go程网络模型

主从多 Reactors

gnet 重新设计开发了一个新内置的多线程/Go程网络模型:『主从多 Reactors』,这也是 netty 默认的多线程网络模型,下面是这个模型的原理图:

multi_reactor

它的运行流程如下面的时序图:

reactor

主从多 Reactors + 线程/Go程池

你可能会问一个问题:如果我的业务逻辑是阻塞的,那么在 EventHandler.OnTraffic 注册方法里的逻辑也会阻塞,从而导致阻塞 event-loop 线程,这时候怎么办?

正如你所知,基于 gnet 编写你的网络服务器有一条最重要的原则:永远不能让你业务逻辑(一般写在 EventHandler.OnTraffic 里)阻塞 event-loop 线程,这也是 netty 的一条最重要的原则,否则的话将会极大地降低服务器的吞吐量。

我的回答是,基于gnet 的另一种多线程/Go程网络模型:『带线程/Go程池的主从多 Reactors』可以解决阻塞问题,这个新网络模型通过引入一个 worker pool 来解决业务逻辑阻塞的问题:它会在启动的时候初始化一个 worker pool,然后在把 EventHandler.OnTraffic 里面的阻塞代码放到 worker pool 里执行,从而避免阻塞 event-loop 线程。

模型的架构图如下所示:

multi_reactor_thread_pool

它的运行流程如下面的时序图:

multi-reactors

gnet 通过利用 ants goroutine 池(一个基于 Go 开发的高性能的 goroutine 池 ,实现了对大规模 goroutines 的调度管理、goroutines 复用)来实现『主从多 Reactors + 线程/Go程池』网络模型。关于 ants 的全部功能和使用,可以在 ants 文档 里找到。

gnet 内部集成了 ants 以及提供了 pool.goroutine.Default() 方法来初始化一个 ants goroutine 池,然后你可以把 EventHandler.OnTraffic 中阻塞的业务逻辑提交到 goroutine 池里执行,最后在 goroutine 池里的代码调用 gnet.Conn.AsyncWrite([]byte) 方法把处理完阻塞逻辑之后得到的输出数据异步写回客户端,这样就可以避免阻塞 event-loop 线程。

有关在 gnet 里使用 ants goroutine 池的细节可以到这里进一步了解。

关键设计

弹性内存 Buffer

Elastic Ring Buffer

Elastic Ring&Linked-list Buffer

gnet 内置了inbound 和 outbound 两个 buffers,分别用来缓冲输入输出的网络数据以及管理内存,gnet 里面的 inbound 和 outbound buffer 经过设计和调优,达到重用内存以及按需扩缩容的目的。

对于 TCP 协议的流数据,使用 gnet 不需要业务方为了解析应用层协议而自己维护和管理 buffers,gnet 会替业务方完成缓冲和管理网络数据的任务,降低业务代码的复杂性以及降低开发者的心智负担,使得开发者能够专注于业务逻辑而非一些底层实现。

+

预览

gnet 是什么?

gnet 是一个基于事件驱动的高性能和轻量级网络框架。这个框架是基于 epollkqueue 从零开发的,而且相比 Go net,它能以更低的内存占用实现更高的性能。

gnetnet 有着不一样的网络编程模式。因此,用 gnet 开发网络应用和用 net 开发区别很大,而且两者之间不可调和。社区里有其他同类的产品像是 libevent, libuv, netty, twisted, tornadognet 的底层工作原理和这些框架非常类似。

gnet 不是为了取代 net 而生的,而是在 Go 生态中为开发者提供一个开发性能敏感的网络服务的替代品。也正因如此,gnet 在功能上的全面性并不如 Go net,它只会提供网络应用所需的最核心的功能和最精简的 APIs,而且 gnet 也并没有打算变成一个无所不包的网络框架,因为我觉得 Go net 在这方面已经做得足够好了。

gnet 的卖点在于它是一个高性能、轻量级、非阻塞的纯 Go 语言实现的传输层(TCP/UDP/Unix Domain Socket)网络框架。开发者可以使用 gnet 来实现自己的应用层网络协议(HTTP、RPC、Redis、WebSocket 等等),从而构建出自己的应用层网络服务。比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。

gnet 衍生自另一个项目:evio,但拥有更丰富的功能特性,且性能远胜之。

功能

  • 基于多线程/协程网络模型的高性能事件驱动循环
  • 内置 goroutine 池,由开源库 ants 提供支持
  • 整个生命周期是无锁的
  • 简单易用的 APIs
  • 高效、可重用而且自动伸缩的内存 buffer:(Elastic-)Ring-Buffer, Linked-List-Buffer and Elastic-Mixed-Buffer
  • 多种网络协议/IPC 机制:TCPUDPUnix Domain Socket
  • 多种负载均衡算法:Round-Robin(轮询)Source-Addr-Hash(源地址哈希)Least-Connections(最少连接数)
  • 两种事件驱动机制:Linux 里的 epoll 以及 FreeBSD/DragonFly/Darwin 里的 kqueue
  • 灵活的事件定时器
  • 实现 gnet 客户端
  • 支持 Windows 平台 (仅用于开发环境的兼容性,不要在生产环境中使用)
  • 多网络地址绑定
  • 支持 TLS
  • 支持 io_uring

架构

多线程/Go程网络模型

主从多 Reactors

gnet 重新设计开发了一个新内置的多线程/Go程网络模型:『主从多 Reactors』,这也是 netty 默认的多线程网络模型,下面是这个模型的原理图:

multi_reactor

它的运行流程如下面的时序图:

reactor

主从多 Reactors + 线程/Go程池

你可能会问一个问题:如果我的业务逻辑是阻塞的,那么在 EventHandler.OnTraffic 注册方法里的逻辑也会阻塞,从而导致阻塞 event-loop 线程,这时候怎么办?

正如你所知,基于 gnet 编写你的网络服务器有一条最重要的原则:永远不能让你业务逻辑(一般写在 EventHandler.OnTraffic 里)阻塞 event-loop 线程,这也是 netty 的一条最重要的原则,否则的话将会极大地降低服务器的吞吐量。

我的回答是,基于gnet 的另一种多线程/Go程网络模型:『带线程/Go程池的主从多 Reactors』可以解决阻塞问题,这个新网络模型通过引入一个 worker pool 来解决业务逻辑阻塞的问题:它会在启动的时候初始化一个 worker pool,然后在把 EventHandler.OnTraffic 里面的阻塞代码放到 worker pool 里执行,从而避免阻塞 event-loop 线程。

模型的架构图如下所示:

multi_reactor_thread_pool

它的运行流程如下面的时序图:

multi-reactors

gnet 通过利用 ants goroutine 池(一个基于 Go 开发的高性能的 goroutine 池 ,实现了对大规模 goroutines 的调度管理、goroutines 复用)来实现『主从多 Reactors + 线程/Go程池』网络模型。关于 ants 的全部功能和使用,可以在 ants 文档 里找到。

gnet 内部集成了 ants 以及提供了 pool.goroutine.Default() 方法来初始化一个 ants goroutine 池,然后你可以把 EventHandler.OnTraffic 中阻塞的业务逻辑提交到 goroutine 池里执行,最后在 goroutine 池里的代码调用 gnet.Conn.AsyncWrite([]byte) 方法把处理完阻塞逻辑之后得到的输出数据异步写回客户端,这样就可以避免阻塞 event-loop 线程。

有关在 gnet 里使用 ants goroutine 池的细节可以到这里进一步了解。

关键设计

弹性内存 Buffer

Elastic Ring Buffer

Elastic Ring&Linked-list Buffer

gnet 内置了inbound 和 outbound 两个 buffers,分别用来缓冲输入输出的网络数据以及管理内存,gnet 里面的 inbound 和 outbound buffer 经过设计和调优,达到重用内存以及按需扩缩容的目的。

对于 TCP 协议的流数据,使用 gnet 不需要业务方为了解析应用层协议而自己维护和管理 buffers,gnet 会替业务方完成缓冲和管理网络数据的任务,降低业务代码的复杂性以及降低开发者的心智负担,使得开发者能够专注于业务逻辑而非一些底层实现。

- + @@ -60,7 +60,7 @@ - + diff --git a/docs/about/overview/index.html b/docs/about/overview/index.html index cc999956f..a7d3b8b13 100644 --- a/docs/about/overview/index.html +++ b/docs/about/overview/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,12 +45,12 @@
-

Overview

What is gnet?

gnet is an event-driven networking framework that is ultra-fast and lightweight. It is built from scratch by exploiting epoll and kqueue and it can achieve much higher performance with lower memory consumption than Go net in many specific scenarios.

gnet and net don't share the same philosophy about network programming. Thus, building network applications with gnet can be significantly different from building them with net, and the philosophies can't be harmonized. There are other similar products written in other programming languages in the community, such as libevent, libuv, netty, twisted, tornado, etc. which work in a similar pattern as gnet under the hood.

gnet is not designed to displace the Go net, but to create an alternative in the Go ecosystem for building performance-sensitive network services. As a result of which, gnet is not as comprehensive as Go net, it provides only the core functionalities (in a concise API set) required by a network application and it is not planned on being a coverall networking framework, as I think net has done a good enough job in that area.

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on the transport layer with TCP/UDP protocols and Unix Domain Socket. It enables developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network services. For instance, you get an HTTP Server if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet derives from the project: evio while having a much higher performance and more features.

Features

  • High-performance event-driven looping based on a networking model of multiple threads/goroutines
  • Built-in goroutine pool powered by the library ants
  • Lock-free during the entire runtime
  • Concise and easy-to-use APIs
  • Efficient, reusable, and elastic memory buffer: (Elastic-)Ring-Buffer, Linked-List-Buffer and Elastic-Mixed-Buffer
  • Multiple protocols/IPC mechanisms: TCP, UDP, and Unix Domain Socket
  • Multiple load-balancing algorithms: Round-Robin, Source-Addr-Hash, and Least-Connections
  • Two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD/DragonFly/Darwin
  • Flexible ticker event
  • Implementation of gnet Client
  • Windows platform support (For compatibility in development only, do not use it in production)
  • Multiple network addresses binding
  • TLS support
  • io_uring support

Architecture

Networking Model of Multiple Threads/Goroutines

Multiple Reactors

gnet redesigns and implements a new built-in networking model of multiple threads/goroutines: 『multiple reactors』 which is also the default networking model of multiple threads in netty, Here's the schematic diagram:

multi_reactor

and it works as the following sequence diagram:

reactor

Multiple Reactors + Goroutine Pool

You may ask me a question: what if my business logic in EventHandler.OnTraffic contains some blocking code which leads to blocking in event-loop of gnet, what is the solution for this kind of situation?

As you know, there is a most important tenet when writing code under gnet: you should never block the event-loop goroutine in the EventHandler.OnTraffic, which is also the most important tenet in netty, otherwise, it will result in a low throughput in your gnet server.

And the solution to that could be found in the subsequent networking model of multiple threads/goroutines in gnet: 『multiple reactors with thread/goroutine pool』which pulls you out from the blocking mire, it will construct a worker-pool with fixed capacity and put those blocking jobs in EventHandler.OnTraffic into the worker-pool to make the event-loop goroutines non-blocking.

The networking model:『multiple reactors with thread/goroutine pool』dissolves the blocking jobs by introducing a goroutine pool, as shown below:

multi_reactor_thread_pool

and it works as the following sequence diagram:

multi-reactors

gnet implements the networking model:『multiple reactors with thread/goroutine pool』by the aid of a high-performance goroutine pool called ants that allows you to manage and recycle a massive number of goroutines in your concurrent programs, the full features and usages in ants are documented here.

gnet integrates ants and provides the pool.goroutine.Default() method that you can call to instantiate a ants pool where you are able to put your blocking code logic and call the function gnet.Conn.AsyncWrite([]byte) to send out data asynchronously after you finish the blocking process and get the output data, which makes the goroutine of event-loop non-blocking.

The details about integrating gnet with ants are shown here.

Key designs

Elastic Buffer

Elastic Ring Buffer

Elastic Ring & Linked-list Buffer

There are two buffers inside gnet: inbound buffer (elastic-ring-buffer) and outbound buffer (elastic-ring&linked-list-buffer) to buffer and manage inbound/outbound network data, inbound and outbound buffers inside gnet are designed and tuned to reuse memory and be auto-scaling on demand.

The purpose of implementing inbound and outbound buffers in gnet is to transfer the logic of buffering and managing network data based on application protocol upon TCP stream from business server to framework and unify the network data buffer, which minimizes the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementation.

+

Overview

What is gnet?

gnet is an event-driven networking framework that is ultra-fast and lightweight. It is built from scratch by exploiting epoll and kqueue and it can achieve much higher performance with lower memory consumption than Go net in many specific scenarios.

gnet and net don't share the same philosophy about network programming. Thus, building network applications with gnet can be significantly different from building them with net, and the philosophies can't be harmonized. There are other similar products written in other programming languages in the community, such as libevent, libuv, netty, twisted, tornado, etc. which work in a similar pattern as gnet under the hood.

gnet is not designed to displace the Go net, but to create an alternative in the Go ecosystem for building performance-sensitive network services. As a result of which, gnet is not as comprehensive as Go net, it provides only the core functionalities (in a concise API set) required by a network application and it is not planned on being a coverall networking framework, as I think net has done a good enough job in that area.

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on the transport layer with TCP/UDP protocols and Unix Domain Socket. It enables developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network services. For instance, you get an HTTP Server if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet derives from the project: evio while having a much higher performance and more features.

Features

  • High-performance event-driven looping based on a networking model of multiple threads/goroutines
  • Built-in goroutine pool powered by the library ants
  • Lock-free during the entire runtime
  • Concise and easy-to-use APIs
  • Efficient, reusable, and elastic memory buffer: (Elastic-)Ring-Buffer, Linked-List-Buffer and Elastic-Mixed-Buffer
  • Multiple protocols/IPC mechanisms: TCP, UDP, and Unix Domain Socket
  • Multiple load-balancing algorithms: Round-Robin, Source-Addr-Hash, and Least-Connections
  • Two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD/DragonFly/Darwin
  • Flexible ticker event
  • Implementation of gnet Client
  • Windows platform support (For compatibility in development only, do not use it in production)
  • Multiple network addresses binding
  • TLS support
  • io_uring support

Architecture

Networking Model of Multiple Threads/Goroutines

Multiple Reactors

gnet redesigns and implements a new built-in networking model of multiple threads/goroutines: 『multiple reactors』 which is also the default networking model of multiple threads in netty, Here's the schematic diagram:

multi_reactor

and it works as the following sequence diagram:

reactor

Multiple Reactors + Goroutine Pool

You may ask me a question: what if my business logic in EventHandler.OnTraffic contains some blocking code which leads to blocking in event-loop of gnet, what is the solution for this kind of situation?

As you know, there is a most important tenet when writing code under gnet: you should never block the event-loop goroutine in the EventHandler.OnTraffic, which is also the most important tenet in netty, otherwise, it will result in a low throughput in your gnet server.

And the solution to that could be found in the subsequent networking model of multiple threads/goroutines in gnet: 『multiple reactors with thread/goroutine pool』which pulls you out from the blocking mire, it will construct a worker-pool with fixed capacity and put those blocking jobs in EventHandler.OnTraffic into the worker-pool to make the event-loop goroutines non-blocking.

The networking model:『multiple reactors with thread/goroutine pool』dissolves the blocking jobs by introducing a goroutine pool, as shown below:

multi_reactor_thread_pool

and it works as the following sequence diagram:

multi-reactors

gnet implements the networking model:『multiple reactors with thread/goroutine pool』by the aid of a high-performance goroutine pool called ants that allows you to manage and recycle a massive number of goroutines in your concurrent programs, the full features and usages in ants are documented here.

gnet integrates ants and provides the pool.goroutine.Default() method that you can call to instantiate a ants pool where you are able to put your blocking code logic and call the function gnet.Conn.AsyncWrite([]byte) to send out data asynchronously after you finish the blocking process and get the output data, which makes the goroutine of event-loop non-blocking.

The details about integrating gnet with ants are shown here.

Key designs

Elastic Buffer

Elastic Ring Buffer

Elastic Ring & Linked-list Buffer

There are two buffers inside gnet: inbound buffer (elastic-ring-buffer) and outbound buffer (elastic-ring&linked-list-buffer) to buffer and manage inbound/outbound network data, inbound and outbound buffers inside gnet are designed and tuned to reuse memory and be auto-scaling on demand.

The purpose of implementing inbound and outbound buffers in gnet is to transfer the logic of buffering and managing network data based on application protocol upon TCP stream from business server to framework and unify the network data buffer, which minimizes the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementation.

- + @@ -60,7 +60,7 @@ - + diff --git a/docs/benchmark/index.html b/docs/benchmark/index.html index 582fc2f33..a067825d0 100644 --- a/docs/benchmark/index.html +++ b/docs/benchmark/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,7 +45,7 @@
-

Benchmark

Benchmarks on TechEmpower

# Hardware Environment
* 28 HT Cores Intel(R) Xeon(R) Gold 5120 CPU @ 3.20GHz
* 32GB RAM
* Dedicated Cisco 10-gigabit Ethernet switch
* Debian 12 "bookworm"
* Go1.19.x linux/amd64

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.

To see the full ranking list, visit TechEmpower Benchmark Round 22.

Contrasts to the similar networking libraries

On Linux (epoll)

Test Environment

# Machine information
OS : Ubuntu 20.04/x86_64
CPU : 8 CPU cores, AMD EPYC 7K62 48-Core Processor
Memory : 16.0 GiB
+

Benchmark

Benchmarks on TechEmpower

# Hardware Environment
* 28 HT Cores Intel(R) Xeon(R) Gold 5120 CPU @ 3.20GHz
* 32GB RAM
* Dedicated Cisco 10-gigabit Ethernet switch
* Debian 12 "bookworm"
* Go1.19.x linux/amd64

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.

To see the full ranking list, visit TechEmpower Benchmark Round 22.

Contrasts to the similar networking libraries

On Linux (epoll)

Test Environment

# Machine information
OS : Ubuntu 20.04/x86_64
CPU : 8 CPU cores, AMD EPYC 7K62 48-Core Processor
Memory : 16.0 GiB
# Go version and settings
Go Version : go1.17.2 linux/amd64
GOMAXPROCS : 8
# Benchmark parameters
TCP connections : 1000/2000/5000/10000
Packet size : 512/1024/2048/4096/8192/16384/32768/65536 bytes
Test duration : 15s

Echo benchmark

On MacOS (kqueue)

Test Environment

# Machine information
OS : MacOS Big Sur/x86_64
CPU : 6 CPU cores, Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory : 16.0 GiB
# Go version and settings
Go Version : go1.16.5 darwin/amd64
GOMAXPROCS : 12
@@ -54,7 +54,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/docs/faq/index.html b/docs/faq/index.html index 8e3e3c51a..580a4dd40 100644 --- a/docs/faq/index.html +++ b/docs/faq/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,12 +45,12 @@
-

FAQ

Architecture & Code & Principles

Why is gnet so fast?

gnet's networking model is a Reactor networking model with a event-driven mechanism that is designed and tuned to manage millions of network connections and handle a zillion requests, which backs gnet up to be the fastest networking framework in Go, and all it takes is a few goroutines.

In addition to the first-class networking model, the implementation of auto-scaling and reusable elastic buffers in gnet is also one of the critical essentials for its high performance.

..., etc.

Stability

Is gnet production-ready?

Sure it is!

Actually, there are already many companies/organizations using gnet as the underlying network service in production and they have been worked well for a long time.

Here is a partial list of gnet use cases: https://gnet.host/#usecases.

..., etc.

Scope of application & usage

When should I use gnet instead of the standard net in Go?

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on transport layer with TCP/UDP protocols and Unix Domain Socket , so it allows developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network applications, for instance, you get an HTTP Server or Web Framework if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet is not designed to displace the standard Go net package, but to create a networking client/server framework for Go that performs on par with Redis and Haproxy for networking packets handling (although it does not limit itself to these areas), therefore, gnet is not as comprehensive as Go net, it only provides the core functionalities (by a concise API set) of a networking application and it is not planned on being a full-featured networking framework, as I think net has done a good enough job in this area.

In a word, if performance is not your top priority and you intend to take care of all corners during the networking development, then you should go with net, but if you are trying to build a insanely fast networking application with a very low resource footprint and looking for a solution, I believe gnet is the right choice for you.

How can I build networking applications of diverse protocols on top of gnet?

There are some examples powered by gnet framework, go check out those source code and get an initial perception about developing networking applications based on gnet, after that, you might want to read the documentations of gnet to learn all its APIs and try to write a demo application.

..., etc.

Contributing

How do I contribute to gnet?

gnet is open-source and welcomes contributions. A few guidelines to help you get started:

  1. Read our contribution guide.
  2. Start with good first issues.
  3. Join our chat if you have any questions. We are happy to help!
+

FAQ

Architecture & Code & Principles

Why is gnet so fast?

gnet's networking model is a Reactor networking model with a event-driven mechanism that is designed and tuned to manage millions of network connections and handle a zillion requests, which backs gnet up to be the fastest networking framework in Go, and all it takes is a few goroutines.

In addition to the first-class networking model, the implementation of auto-scaling and reusable elastic buffers in gnet is also one of the critical essentials for its high performance.

..., etc.

Stability

Is gnet production-ready?

Sure it is!

Actually, there are already many companies/organizations using gnet as the underlying network service in production and they have been worked well for a long time.

Here is a partial list of gnet use cases: https://gnet.host/#usecases.

..., etc.

Scope of application & usage

When should I use gnet instead of the standard net in Go?

gnet sells itself as a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go which works on transport layer with TCP/UDP protocols and Unix Domain Socket , so it allows developers to implement their own protocols(HTTP, RPC, WebSocket, Redis, etc.) of application layer upon gnet for building diversified network applications, for instance, you get an HTTP Server or Web Framework if you implement HTTP protocol upon gnet while you have a Redis Server done with the implementation of Redis protocol upon gnet and so on.

gnet is not designed to displace the standard Go net package, but to create a networking client/server framework for Go that performs on par with Redis and Haproxy for networking packets handling (although it does not limit itself to these areas), therefore, gnet is not as comprehensive as Go net, it only provides the core functionalities (by a concise API set) of a networking application and it is not planned on being a full-featured networking framework, as I think net has done a good enough job in this area.

In a word, if performance is not your top priority and you intend to take care of all corners during the networking development, then you should go with net, but if you are trying to build a insanely fast networking application with a very low resource footprint and looking for a solution, I believe gnet is the right choice for you.

How can I build networking applications of diverse protocols on top of gnet?

There are some examples powered by gnet framework, go check out those source code and get an initial perception about developing networking applications based on gnet, after that, you might want to read the documentations of gnet to learn all its APIs and try to write a demo application.

..., etc.

Contributing

How do I contribute to gnet?

gnet is open-source and welcomes contributions. A few guidelines to help you get started:

  1. Read our contribution guide.
  2. Start with good first issues.
  3. Join our chat if you have any questions. We are happy to help!
- + @@ -60,7 +60,7 @@ - + diff --git a/docs/index.html b/docs/index.html index 70d4547fa..b38ea3d9a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -17,7 +17,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html index 941360d66..40f2d9d87 100644 --- a/docs/quickstart/index.html +++ b/docs/quickstart/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,7 +45,7 @@
-

Quickstart

Installation

gnet is available as a Go module, with Go 1.11 Modules support (Go 1.11+), just simply import "github.com/panjf2000/gnet" in your source code and go [build|run|test] will download the necessary dependencies automatically.

V1

go get -u github.com/panjf2000/gnet

V2

go get -u github.com/panjf2000/gnet/v2

Example

package main
+

Quickstart

Installation

gnet is available as a Go module, with Go 1.11 Modules support (Go 1.11+), just simply import "github.com/panjf2000/gnet" in your source code and go [build|run|test] will download the necessary dependencies automatically.

V1

go get -u github.com/panjf2000/gnet

V2

go get -u github.com/panjf2000/gnet/v2

Example

package main
import (
"flag"
"fmt"
"log"
"github.com/panjf2000/gnet/v2"
)
type echoServer struct {
gnet.BuiltinEventEngine
@@ -58,7 +58,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/docs/tutorial/best-practices/index.html b/docs/tutorial/best-practices/index.html index c9b423077..6e1540a94 100644 --- a/docs/tutorial/best-practices/index.html +++ b/docs/tutorial/best-practices/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,12 +45,12 @@
-

Best practices

Never run blocking code in OnTraffic(), OnOpen() and OnClose()

The above three event handlers (callbacks) are executed in event-loops, therefore, running blocking code in them blocks event-loops, which means that the subsequent tasks will have to wait for the preceding blocking event handlers to complete before they get executed.

To avoid blocking event-loops, asynchronize your blocking code, for example by starting a goroutine with your blocking code and invoking Conn.AsyncWrite() or Conn.AsyncWritev() to send response data to the peer endpoint.

If you're not familiar with how gnet works, go back and read this.

Leverage Conn.Context() to monopolize data instead of sharing it across connections

It's recommended to use Conn.Context() to store necessary resource for each connection, so that each connection can take advantage of its exclusive resource, avoiding the contention of single resource across connections.

Either loop read data in OnTraffic() or invoke c.Wake() regularly

gnet leverages epoll/kqueue with level-triggered mode by default under the hood, you're able to switch to edge-triggered mode since v2.5.0. In LT mode, OnTraffic() might not be invoked constantly given there is data left in the inbound buffer of a gnet.Conn, OnTraffic() will be invoked only when there is data left in the socket recv buffer of the kernel. By contrast, in ET mode, OnTraffic() will be invoked only when new data arrives at the socket recv buffer of the kernel.

Thus, you should loop call c.Read()/c.Peek()/c.Next() on a connection in OnTraffic() to drain the inbound buffer for reading and decoding packets until you reach an incomplete packet, but if you don't, then make sure you call c.Wake() periodically, otherwise you may never get a chance to read the leftover data until the remote sends new data over and there are new arrivals of data on the socket recv buffer.

Enable poll_opt mode to boost performance

By default, gnet utilizes the standard package golang.org/x/sys/unix to implement pollers with epoll or kqueue, where a HASH map of fd->conn is introduced to help retrieve connections by file descriptors returned from pollers, but now you can run go build with build tags poll_opt, like this: go build -tags=poll_opt, and gnet will switch to the optimized implementations of pollers that invoke the system calls of epoll or kqueue directly and add file descriptors to the interest list along with storing the corresponding connection pointers into epoll_data or kevent, in which case gnet can get rid of the HASH MAP of fd->conn and regain each connection pointer by the conversion of void* pointer in the I/O event-looping. In theory, it ought to achieve a higher performance with this optimization.

Visit #230 for code details.

Enable gc_opt mode to reduce GC latency

By default, gnet uses map as the internal storage of connections, but now you can run go build with build tags gc_opt, like this: go build -tags=gc_opt, and gnet will switch to the optimized implementation of connections storage that uses a new data structure matrix for managing connections, in which case gnet eliminates the pointers in map to reduce the GC latency significantly.

Visit Announcing gnet v2.3.0 for more details.

To be continued

+

Best practices

Never run blocking code in OnTraffic(), OnOpen() and OnClose()

The above three event handlers (callbacks) are executed in event-loops, therefore, running blocking code in them blocks event-loops, which means that the subsequent tasks will have to wait for the preceding blocking event handlers to complete before they get executed.

To avoid blocking event-loops, asynchronize your blocking code, for example by starting a goroutine with your blocking code and invoking Conn.AsyncWrite() or Conn.AsyncWritev() to send response data to the peer endpoint.

If you're not familiar with how gnet works, go back and read this.

Leverage Conn.Context() to monopolize data instead of sharing it across connections

It's recommended to use Conn.Context() to store necessary resource for each connection, so that each connection can take advantage of its exclusive resource, avoiding the contention of single resource across connections.

Either loop read data in OnTraffic() or invoke c.Wake() regularly

gnet leverages epoll/kqueue with level-triggered mode by default under the hood, you're able to switch to edge-triggered mode since v2.5.0. In LT mode, OnTraffic() might not be invoked constantly given there is data left in the inbound buffer of a gnet.Conn, OnTraffic() will be invoked only when there is data left in the socket recv buffer of the kernel. By contrast, in ET mode, OnTraffic() will be invoked only when new data arrives at the socket recv buffer of the kernel.

Thus, you should loop call c.Read()/c.Peek()/c.Next() on a connection in OnTraffic() to drain the inbound buffer for reading and decoding packets until you reach an incomplete packet, but if you don't, then make sure you call c.Wake() periodically, otherwise you may never get a chance to read the leftover data until the remote sends new data over and there are new arrivals of data on the socket recv buffer.

Enable poll_opt mode to boost performance

By default, gnet utilizes the standard package golang.org/x/sys/unix to implement pollers with epoll or kqueue, where a HASH map of fd->conn is introduced to help retrieve connections by file descriptors returned from pollers, but now you can run go build with build tags poll_opt, like this: go build -tags=poll_opt, and gnet will switch to the optimized implementations of pollers that invoke the system calls of epoll or kqueue directly and add file descriptors to the interest list along with storing the corresponding connection pointers into epoll_data or kevent, in which case gnet can get rid of the HASH MAP of fd->conn and regain each connection pointer by the conversion of void* pointer in the I/O event-looping. In theory, it ought to achieve a higher performance with this optimization.

Visit #230 for code details.

Enable gc_opt mode to reduce GC latency

By default, gnet uses map as the internal storage of connections, but now you can run go build with build tags gc_opt, like this: go build -tags=gc_opt, and gnet will switch to the optimized implementation of connections storage that uses a new data structure matrix for managing connections, in which case gnet eliminates the pointers in map to reduce the GC latency significantly.

Visit Announcing gnet v2.3.0 for more details.

To be continued

- + @@ -60,7 +60,7 @@ - + diff --git a/docs/v1.x/doc-for-gnet-v1-zh/index.html b/docs/v1.x/doc-for-gnet-v1-zh/index.html index 8fc3240bc..ae4db163e 100644 --- a/docs/v1.x/doc-for-gnet-v1-zh/index.html +++ b/docs/v1.x/doc-for-gnet-v1-zh/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,7 +45,7 @@
-

gnet v1 文档

🎉 开始使用

前提

gnet 需要 Go 版本 >= 1.9。

安装

go get -u github.com/panjf2000/gnet

gnet 支持作为一个 Go module 被导入,基于 Go 1.11 Modules (Go 1.11+),只需要在你的项目里直接 import "github.com/panjf2000/gnet",然后运行 go [build|run|test] 自动下载和构建需要的依赖包。

使用示例

详细的文档在这里: gnet 接口文档,不过下面我们先来了解下使用 gnet 的简略方法。

gnet 来构建网络服务器是非常简单的,只需要实现 gnet.EventHandler接口然后把你关心的事件函数注册到里面,最后把它连同监听地址一起传递给 gnet.Serve 函数就完成了。在服务器开始工作之后,每一条到来的网络连接会在各个事件之间传递,如果你想在某个事件中关闭某条连接或者关掉整个服务器的话,直接在事件函数里把 gnet.Action 设置成 Close 或者 Shutdown 就行了。

Echo 服务器是一种最简单网络服务器,把它作为 gnet 的入门例子在再合适不过了,下面是一个最简单的 echo server,它监听了 9000 端口:

不带阻塞逻辑的 echo 服务器

Old version(<=v1.0.0-rc.4)
package main
+

gnet v1 文档

🎉 开始使用

前提

gnet 需要 Go 版本 >= 1.9。

安装

go get -u github.com/panjf2000/gnet

gnet 支持作为一个 Go module 被导入,基于 Go 1.11 Modules (Go 1.11+),只需要在你的项目里直接 import "github.com/panjf2000/gnet",然后运行 go [build|run|test] 自动下载和构建需要的依赖包。

使用示例

详细的文档在这里: gnet 接口文档,不过下面我们先来了解下使用 gnet 的简略方法。

gnet 来构建网络服务器是非常简单的,只需要实现 gnet.EventHandler接口然后把你关心的事件函数注册到里面,最后把它连同监听地址一起传递给 gnet.Serve 函数就完成了。在服务器开始工作之后,每一条到来的网络连接会在各个事件之间传递,如果你想在某个事件中关闭某条连接或者关掉整个服务器的话,直接在事件函数里把 gnet.Action 设置成 Close 或者 Shutdown 就行了。

Echo 服务器是一种最简单网络服务器,把它作为 gnet 的入门例子在再合适不过了,下面是一个最简单的 echo server,它监听了 9000 端口:

不带阻塞逻辑的 echo 服务器

Old version(<=v1.0.0-rc.4)
package main
import (
"log"
"github.com/panjf2000/gnet"
)
type echoServer struct {
gnet.EventServer
}
@@ -80,7 +80,7 @@ - + @@ -90,7 +90,7 @@ - + diff --git a/docs/v1.x/doc-for-gnet-v1/index.html b/docs/v1.x/doc-for-gnet-v1/index.html index 283e477d3..cf0cab736 100644 --- a/docs/v1.x/doc-for-gnet-v1/index.html +++ b/docs/v1.x/doc-for-gnet-v1/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,7 +45,7 @@
-

Doc for gnet v1

🎉 Getting Started

Prerequisites

gnet requires Go 1.9 or later.

Installation

go get -u github.com/panjf2000/gnet

gnet is available as a Go module, with Go 1.11 Modules support (Go 1.11+), just simply import "github.com/panjf2000/gnet" in your source code and go [build|run|test] will download the necessary dependencies automatically.

Usage Examples

The detailed documentation is located here: docs of gnet, but let's pass through the brief instructions first.

It is easy to create a network server with gnet. All you have to do is just to make your implementation of gnet.EventHandler interface and register your event-handler functions to it, then pass it to the gnet.Serve function along with the binding address(es). Each connection is represented as a gnet.Conn interface that is passed to various events to differentiate the clients. At any point you can close a connection or shutdown the server by return a Close or Shutdown action from an event function.

The simplest example to get you started playing with gnet would be the echo server. So here you are, a simplest echo server upon gnet that is listening on port 9000:

Echo server without blocking logic

Old version(<=v1.0.0-rc.4)
package main
+

Doc for gnet v1

🎉 Getting Started

Prerequisites

gnet requires Go 1.9 or later.

Installation

go get -u github.com/panjf2000/gnet

gnet is available as a Go module, with Go 1.11 Modules support (Go 1.11+), just simply import "github.com/panjf2000/gnet" in your source code and go [build|run|test] will download the necessary dependencies automatically.

Usage Examples

The detailed documentation is located here: docs of gnet, but let's pass through the brief instructions first.

It is easy to create a network server with gnet. All you have to do is just to make your implementation of gnet.EventHandler interface and register your event-handler functions to it, then pass it to the gnet.Serve function along with the binding address(es). Each connection is represented as a gnet.Conn interface that is passed to various events to differentiate the clients. At any point you can close a connection or shutdown the server by return a Close or Shutdown action from an event function.

The simplest example to get you started playing with gnet would be the echo server. So here you are, a simplest echo server upon gnet that is listening on port 9000:

Echo server without blocking logic

Old version(<=v1.0.0-rc.4)
package main
import (
"log"
"github.com/panjf2000/gnet"
)
type echoServer struct {
gnet.EventServer
}
@@ -81,7 +81,7 @@ - + @@ -91,7 +91,7 @@ - + diff --git a/highlights/2019-11-07-supported-multiple-codecs/index.html b/highlights/2019-11-07-supported-multiple-codecs/index.html index aac57f771..af6514d58 100644 --- a/highlights/2019-11-07-supported-multiple-codecs/index.html +++ b/highlights/2019-11-07-supported-multiple-codecs/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,13 +39,13 @@
-
/ Nov 7th, 2019 /

Support multiple codecs

Support multiple codecs to encode/decode TCP stream

About this change

In this change, gnet integrates multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, +

/ Nov 7th, 2019 /

Support multiple codecs

Support multiple codecs to encode/decode TCP stream

About this change

In this change, gnet integrates multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, in addition to these built-in codecs, gnet also supports customized codecs by functional option Codec.

Get This Change

This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through all those commits of new features if you are interested.

Like What You See?

- + @@ -55,7 +55,7 @@ - + diff --git a/highlights/2019-11-12-supported-windows/index.html b/highlights/2019-11-12-supported-windows/index.html index d01894c76..f2953c4d4 100644 --- a/highlights/2019-11-12-supported-windows/index.html +++ b/highlights/2019-11-12-supported-windows/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,13 +39,13 @@
-
/ Nov 12th, 2019 /

Supports Windows platform

Support Windows platform by Go standard net package

About this change

Before this change, gnet can only works on Linux and BSD-like platforms, now it also supports Windows platform, +

/ Nov 12th, 2019 /

Supports Windows platform

Support Windows platform by Go standard net package

About this change

Before this change, gnet can only works on Linux and BSD-like platforms, now it also supports Windows platform, which makes gnet a real cross-platform networking framework.

Get This Change

This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through all those commits of new features if you are interested.

Like What You See?

- + @@ -55,7 +55,7 @@ - + diff --git a/highlights/2020-03-13-released-first-version/index.html b/highlights/2020-03-13-released-first-version/index.html index 8931e3190..9ee8e21a2 100644 --- a/highlights/2020-03-13-released-first-version/index.html +++ b/highlights/2020-03-13-released-first-version/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Mar 13th, 2020 /

Released gnet v1.0.0

Released the official stable version of v1.0.0

Features

  • High-performance event-loop under networking model of multiple threads/goroutines
  • Built-in load balancing algorithm: Round-Robin
  • Built-in goroutine pool powered by the library ants
  • Built-in memory pool with bytes powered by the library bytebufferpool
  • Concise APIs
  • Efficient memory usage: Ring-Buffer
  • Supporting multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket
  • Supporting two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD
  • Supporting asynchronous write operation
  • Flexible ticker event
  • SO_REUSEPORT socket option
  • Built-in multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, also supporting customized codecs
  • Supporting Windows platform with event-driven mechanism of IOCP Go stdlib: net
  • Additional load-balancing algorithms: Random, Least-Connections, Consistent-hashing and so on
  • TLS support
  • Implementation of gnet Client

Get This Change

This change was made available in 1.0.0.

Like What You See?

+
/ Mar 13th, 2020 /

Released gnet v1.0.0

Released the official stable version of v1.0.0

Features

  • High-performance event-loop under networking model of multiple threads/goroutines
  • Built-in load balancing algorithm: Round-Robin
  • Built-in goroutine pool powered by the library ants
  • Built-in memory pool with bytes powered by the library bytebufferpool
  • Concise APIs
  • Efficient memory usage: Ring-Buffer
  • Supporting multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket
  • Supporting two event-driven mechanisms: epoll on Linux and kqueue on FreeBSD
  • Supporting asynchronous write operation
  • Flexible ticker event
  • SO_REUSEPORT socket option
  • Built-in multiple codecs to encode/decode network frames into/from TCP stream: LineBasedFrameCodec, DelimiterBasedFrameCodec, FixedLengthFrameCodec and LengthFieldBasedFrameCodec, referencing netty codec, also supporting customized codecs
  • Supporting Windows platform with event-driven mechanism of IOCP Go stdlib: net
  • Additional load-balancing algorithms: Random, Least-Connections, Consistent-hashing and so on
  • TLS support
  • Implementation of gnet Client

Get This Change

This change was made available in 1.0.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2020-03-31-supported-least-connections-load-balancing-algorithm/index.html b/highlights/2020-03-31-supported-least-connections-load-balancing-algorithm/index.html index 69ec9d7de..6ad89ea11 100644 --- a/highlights/2020-03-31-supported-least-connections-load-balancing-algorithm/index.html +++ b/highlights/2020-03-31-supported-least-connections-load-balancing-algorithm/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,13 +39,13 @@
-
/ Mar 31st, 2020 /

Support new load-balancing algorithm

Support new load-balancing algorithm of least-connections

About this change

In the past, gnet has only one load-balancing algorithm: Round-Robin, now it supports a new one: Least-Connections +

/ Mar 31st, 2020 /

Support new load-balancing algorithm

Support new load-balancing algorithm of least-connections

About this change

In the past, gnet has only one load-balancing algorithm: Round-Robin, now it supports a new one: Least-Connections and provide the new functional option LB, enabling users to switch load-balancing algorithm at their own sweet will.

Get This Change

This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through all those commits of new features if you are interested.

Like What You See?

- + @@ -55,7 +55,7 @@ - + diff --git a/highlights/2020-04-03-released-1-1-0/index.html b/highlights/2020-04-03-released-1-1-0/index.html index 32050eace..c6059eb15 100644 --- a/highlights/2020-04-03-released-1-1-0/index.html +++ b/highlights/2020-04-03-released-1-1-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Apr 3rd, 2020 /

Released gnet v1.1.0

Released the official stable version of v1.1.0

Features

  • Support new load-balancing algorithm of least-connections #63
  • Support new load-balancing algorithm of source-addr-hash #64
  • Add a new API to get the number of currently active connections 5ae4849

Bugfixes

  • Fix an issue of not recycling byte-buffers 3b6edfd
  • Fix a bug of reading data from the full ring-buffer a9caa26

Enhancements

  • Improve several methods of ring-buffer 828e845
  • Refine the range indexes when re-slicing 008c0c9
  • Lazily allocate memory for ring-buffers 095ef52

Docs

Misc

  • Rename the eventloop_group.go to load_balancing.go 24203f4
  • Add unit test for ring-buffer ecf3473072d1c02ca69b469d24c5581eae041d2f 94246dc

Get This Change

This change was made available in 1.1.0.

Like What You See?

+
/ Apr 3rd, 2020 /

Released gnet v1.1.0

Released the official stable version of v1.1.0

Features

  • Support new load-balancing algorithm of least-connections #63
  • Support new load-balancing algorithm of source-addr-hash #64
  • Add a new API to get the number of currently active connections 5ae4849

Bugfixes

  • Fix an issue of not recycling byte-buffers 3b6edfd
  • Fix a bug of reading data from the full ring-buffer a9caa26

Enhancements

  • Improve several methods of ring-buffer 828e845
  • Refine the range indexes when re-slicing 008c0c9
  • Lazily allocate memory for ring-buffers 095ef52

Docs

Misc

  • Rename the eventloop_group.go to load_balancing.go 24203f4
  • Add unit test for ring-buffer ecf3473072d1c02ca69b469d24c5581eae041d2f 94246dc

Get This Change

This change was made available in 1.1.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2020-05-11-released-1-2-0/index.html b/highlights/2020-05-11-released-1-2-0/index.html index 98ffa1698..805daf90b 100644 --- a/highlights/2020-05-11-released-1-2-0/index.html +++ b/highlights/2020-05-11-released-1-2-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ May 11th, 2020 /

Released gnet v1.2.0

Released the official stable version of v1.2.0

Features

  • Support graceful shutdown with OS signals (Fixes #82)

Enhancements

  • Improve the creation processes of netpoller (Fixes #72) ccc6c25
  • Reuse slice struct when resetting buffer 916c255
  • Make a big allocation on ring-buffer at the first time 61963bd

Docs

  • Update Features section in READMEs a0d53f5
  • Add a new article about gnet d500bf4
  • Supplement the missing acknowledgment item b031357

Misc

  • Enable ReadN(int) to handle corner cases 2e89e25
  • Leverage reviewdog as automated code review tool 5db42f9
  • Use customized logger to log errors instead of std log package 3a69701
  • Remove useless field of server 47817a0
  • Unexport some errors 5287bd8

Get This Change

This change was made available in 1.2.0.

Like What You See?

+
/ May 11th, 2020 /

Released gnet v1.2.0

Released the official stable version of v1.2.0

Features

  • Support graceful shutdown with OS signals (Fixes #82)

Enhancements

  • Improve the creation processes of netpoller (Fixes #72) ccc6c25
  • Reuse slice struct when resetting buffer 916c255
  • Make a big allocation on ring-buffer at the first time 61963bd

Docs

  • Update Features section in READMEs a0d53f5
  • Add a new article about gnet d500bf4
  • Supplement the missing acknowledgment item b031357

Misc

  • Enable ReadN(int) to handle corner cases 2e89e25
  • Leverage reviewdog as automated code review tool 5db42f9
  • Use customized logger to log errors instead of std log package 3a69701
  • Remove useless field of server 47817a0
  • Unexport some errors 5287bd8

Get This Change

This change was made available in 1.2.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2020-07-02-raw-syscalls-sockets/index.html b/highlights/2020-07-02-raw-syscalls-sockets/index.html index 829b1d1d1..12a9a5187 100644 --- a/highlights/2020-07-02-raw-syscalls-sockets/index.html +++ b/highlights/2020-07-02-raw-syscalls-sockets/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,13 +39,13 @@
-
/ Jul 2nd, 2020 /

New approach to create server sockets

Leverage system calls instead of `net` package to create sockets

About this change

Benefit from system calls provided by Go standard library, server listener sockets inside gnet have gotten rid of the Go net package eventually, +

/ Jul 2nd, 2020 /

New approach to create server sockets

Leverage system calls instead of `net` package to create sockets

About this change

Benefit from system calls provided by Go standard library, server listener sockets inside gnet have gotten rid of the Go net package eventually, there are no more methods from net package involved in the process of creating the listener of server socket, all by raw system calls.

Get This Change

This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through all those commits of new features if you are interested.

Like What You See?

- + @@ -55,7 +55,7 @@ - + diff --git a/highlights/2020-09-13-released-1-3-0/index.html b/highlights/2020-09-13-released-1-3-0/index.html index 2b91e664f..61c8e8ead 100644 --- a/highlights/2020-09-13-released-1-3-0/index.html +++ b/highlights/2020-09-13-released-1-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Sep 13th, 2020 /

Released gnet v1.3.0

Released the official stable version of v1.3.0

Features

  • Determine logging mode by environment variable 2a7977
  • Support locking each I/O event-loop goroutine to an OS thread 6fd641

Enhancements

  • Improve the implementation of Least-Connections load-balancing b6a5f5
  • Speed up the Least-Connections load-balancing b5fbbd
  • Leverage system calls instead of net package to create listeners ccc8c6
  • Refine the logging module f46da4
  • Reorg errors in gnet 1c2f4b
  • Move logging module into internal package 00af50
  • Take off the codec from eventloop bc85c3
  • Refactor for buffer in Conn 455c5a
  • Refactor the load-balancing algorithm of source addr hash abbf58
  • Make channel buffered if necessary 43f93c

Bugfixes

  • Fix a bug that led to negative counter of sync.WaitGroup on Windows 16ed4a
  • Add "windows" build tag under SO_REUSEPORT mode 7862f3
  • Supplement all the formal protocol formats of TCP and UDP 258253
  • Resolve the issue of closing one fd twice b5a5c7
  • Fix concurrent loopCloseConn causes panic #111
  • Eliminate duplicate calls to loopCloseConn a72f5f

Docs

  • Add a customized codec example #90
  • Add placeholder for user cases and new relevant article 5197f1
  • Renew results of techempower benchmark 61eee8
  • Add the list of donors 42e04d
  • Add xs:code 33a3e5
  • Build an official website for gnet 49363c
  • Move the majority of content to website and simplify READMEs 903ff8

Misc

  • Fix a typo and improve code comments 37d75c
  • Use SyscallError to wrap system calls errors c3907e
  • Refine go build tags of operating systems 637144
  • Format copyright info 6872c2
  • Remove all examples from the source-code repo a704e0
  • refine the usage of os.NewSyscallError 2d54d8

Get This Change

This change was made available in 1.3.0.

Like What You See?

+
/ Sep 13th, 2020 /

Released gnet v1.3.0

Released the official stable version of v1.3.0

Features

  • Determine logging mode by environment variable 2a7977
  • Support locking each I/O event-loop goroutine to an OS thread 6fd641

Enhancements

  • Improve the implementation of Least-Connections load-balancing b6a5f5
  • Speed up the Least-Connections load-balancing b5fbbd
  • Leverage system calls instead of net package to create listeners ccc8c6
  • Refine the logging module f46da4
  • Reorg errors in gnet 1c2f4b
  • Move logging module into internal package 00af50
  • Take off the codec from eventloop bc85c3
  • Refactor for buffer in Conn 455c5a
  • Refactor the load-balancing algorithm of source addr hash abbf58
  • Make channel buffered if necessary 43f93c

Bugfixes

  • Fix a bug that led to negative counter of sync.WaitGroup on Windows 16ed4a
  • Add "windows" build tag under SO_REUSEPORT mode 7862f3
  • Supplement all the formal protocol formats of TCP and UDP 258253
  • Resolve the issue of closing one fd twice b5a5c7
  • Fix concurrent loopCloseConn causes panic #111
  • Eliminate duplicate calls to loopCloseConn a72f5f

Docs

  • Add a customized codec example #90
  • Add placeholder for user cases and new relevant article 5197f1
  • Renew results of techempower benchmark 61eee8
  • Add the list of donors 42e04d
  • Add xs:code 33a3e5
  • Build an official website for gnet 49363c
  • Move the majority of content to website and simplify READMEs 903ff8

Misc

  • Fix a typo and improve code comments 37d75c
  • Use SyscallError to wrap system calls errors c3907e
  • Refine go build tags of operating systems 637144
  • Format copyright info 6872c2
  • Remove all examples from the source-code repo a704e0
  • refine the usage of os.NewSyscallError 2d54d8

Get This Change

This change was made available in 1.3.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2020-09-13-supported-locking-os-thread/index.html b/highlights/2020-09-13-supported-locking-os-thread/index.html index e4aa0bdc7..453c05b82 100644 --- a/highlights/2020-09-13-supported-locking-os-thread/index.html +++ b/highlights/2020-09-13-supported-locking-os-thread/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,13 +39,13 @@
-
/ Sep 13th, 2020 /

Support locking OS thread

Support locking each I/O event-loop goroutine to an OS thread

About this change

Add functional option LockOSThread used to determine whether each I/O event-loop is associated to an OS thread, it is useful when you need some kind of mechanisms like thread local storage, +

/ Sep 13th, 2020 /

Support locking OS thread

Support locking each I/O event-loop goroutine to an OS thread

About this change

Add functional option LockOSThread used to determine whether each I/O event-loop is associated to an OS thread, it is useful when you need some kind of mechanisms like thread local storage, or invoke certain C libraries (such as graphics lib: GLib) that require thread-level manipulation via cgo, or want all I/O event-loops to actually run in parallel for a potential higher performance.

Get This Change

This kind of change with the `new feature` tag brings new features to gnet. Feel free to have a galance through all those commits of new features if you are interested.

Like What You See?

- + @@ -55,7 +55,7 @@ - + diff --git a/highlights/2021-02-17-released-1-4-0/index.html b/highlights/2021-02-17-released-1-4-0/index.html index f4e86bd8d..35f6ab86a 100644 --- a/highlights/2021-02-17-released-1-4-0/index.html +++ b/highlights/2021-02-17-released-1-4-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Feb 17th, 2021 /

Released gnet v1.4.0

Released the official stable version of v1.4.0

Features

  • Support TCP_NODELAY socket option 525df8
  • Implement the lock-free queue for dispatching tasks faster #181

Enhancements

  • Shrink the ring-buffer for saving memory 14fd04
  • Improve event poll fc042c
  • Improve the buffered channels 83b96e
  • Shrink the poll event list when it need to 158763
  • Improve the I/O in event-loop c554f4
  • Prioritize writable events 0f08c8
  • Make it more robust when running async jobs 6509b8
  • Improve the poller waking logic 4d8acc

Bugfixes

  • Re-enqueue the subsequent jobs when a error occurs 1af3f6
  • Close and release a socket when error occurs 9d86c9
  • Check outbound buffer in case the socket has been released 035f61
  • Avoid starving sockets e31525

Docs

  • Enrich the doc about using UDP packets 0047c1
  • Add more user cases of gnet 076b16
  • Update benchmark results 028bab
  • Update the description about ring-buffer 38b086

Misc

  • Add one more donor 12bfa5
  • Refine code 2aee5a
  • Add comments on those core code 2404ed
  • Refine code and add comments 4ecbc5
  • Add a warning comment for OnOpened 0bddd0

Get This Change

This change was made available in 1.4.0.

Like What You See?

+
/ Feb 17th, 2021 /

Released gnet v1.4.0

Released the official stable version of v1.4.0

Features

  • Support TCP_NODELAY socket option 525df8
  • Implement the lock-free queue for dispatching tasks faster #181

Enhancements

  • Shrink the ring-buffer for saving memory 14fd04
  • Improve event poll fc042c
  • Improve the buffered channels 83b96e
  • Shrink the poll event list when it need to 158763
  • Improve the I/O in event-loop c554f4
  • Prioritize writable events 0f08c8
  • Make it more robust when running async jobs 6509b8
  • Improve the poller waking logic 4d8acc

Bugfixes

  • Re-enqueue the subsequent jobs when a error occurs 1af3f6
  • Close and release a socket when error occurs 9d86c9
  • Check outbound buffer in case the socket has been released 035f61
  • Avoid starving sockets e31525

Docs

  • Enrich the doc about using UDP packets 0047c1
  • Add more user cases of gnet 076b16
  • Update benchmark results 028bab
  • Update the description about ring-buffer 38b086

Misc

  • Add one more donor 12bfa5
  • Refine code 2aee5a
  • Add comments on those core code 2404ed
  • Refine code and add comments 4ecbc5
  • Add a warning comment for OnOpened 0bddd0

Get This Change

This change was made available in 1.4.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2021-07-11-released-1-5-0/index.html b/highlights/2021-07-11-released-1-5-0/index.html index 128258d44..a9495300d 100644 --- a/highlights/2021-07-11-released-1-5-0/index.html +++ b/highlights/2021-07-11-released-1-5-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Jul 11th, 2021 /

Released gnet v1.5.0

Released the official stable version of v1.5.0

Features

  • Move the logging module out of the internal package and refactor to make it serviceable for users d56606 b6b1cf 8837a9

Enhancements

  • Support writev and readv in eventloop f299a8
  • Reduce GC pause frequency for Conn.AsyncWrite (#218) 477bb4
  • Improve logging module 8837a9 b6b1cf
  • Refactor the inside AsyncTaskQueue to make it more generic 2d1a46
  • Reduce GC pause frequency for accepting connections 2d1a46

Docs

  • Add a new user case: Tencent Games b7ea83
  • Add a new donor ee965a

Misc

  • Add debugging log when error occurs in Accept() #222
  • Make some trivial changes to ring-buffer 1bdd3a

Get This Change

This change was made available in 1.5.0.

Like What You See?

+
/ Jul 11th, 2021 /

Released gnet v1.5.0

Released the official stable version of v1.5.0

Features

  • Move the logging module out of the internal package and refactor to make it serviceable for users d56606 b6b1cf 8837a9

Enhancements

  • Support writev and readv in eventloop f299a8
  • Reduce GC pause frequency for Conn.AsyncWrite (#218) 477bb4
  • Improve logging module 8837a9 b6b1cf
  • Refactor the inside AsyncTaskQueue to make it more generic 2d1a46
  • Reduce GC pause frequency for accepting connections 2d1a46

Docs

  • Add a new user case: Tencent Games b7ea83
  • Add a new donor ee965a

Misc

  • Add debugging log when error occurs in Accept() #222
  • Make some trivial changes to ring-buffer 1bdd3a

Get This Change

This change was made available in 1.5.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2021-07-20-released-1-5-2/index.html b/highlights/2021-07-20-released-1-5-2/index.html index 5afb2549d..09da3f986 100644 --- a/highlights/2021-07-20-released-1-5-2/index.html +++ b/highlights/2021-07-20-released-1-5-2/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Jul 20th, 2021 /

Released gnet v1.5.2

Released the official stable version of v1.5.2

Enhancements

About poller

By default, gnet utilizes the standard package golang.org/x/sys/unix to implement pollers with epoll or kqueue, where a HASH MAP of fd->conn is introduced to help retrieve connections by file descriptors returned from pollers, but now the user can run go build with build tags poll_opt, like this: go build -tags=poll_opt, and gnet then switch to the optimized implementations of pollers that invoke the system calls of epoll or kqueue directly and add file descriptors to the interest list along with storing the corresponding connection pointers into epoll_data or kevent, in which case gnet can get rid of the HASH MAP of fd->conn and regain each connection pointer by the conversion of void* pointer in the I/O event-looping. In theory, it ought to achieve a higher performance with this optimization.

See #230 for code details.

About ring-buffer

Adjust the growth strategy of ring-buffer, make it go more smoothly rather than simply doubling up (which may waste a huge amount of memory) in each buffer scaling. ccd37f fd8d27

Get This Change

This change was made available in 1.5.2.

Like What You See?

+
/ Jul 20th, 2021 /

Released gnet v1.5.2

Released the official stable version of v1.5.2

Enhancements

About poller

By default, gnet utilizes the standard package golang.org/x/sys/unix to implement pollers with epoll or kqueue, where a HASH MAP of fd->conn is introduced to help retrieve connections by file descriptors returned from pollers, but now the user can run go build with build tags poll_opt, like this: go build -tags=poll_opt, and gnet then switch to the optimized implementations of pollers that invoke the system calls of epoll or kqueue directly and add file descriptors to the interest list along with storing the corresponding connection pointers into epoll_data or kevent, in which case gnet can get rid of the HASH MAP of fd->conn and regain each connection pointer by the conversion of void* pointer in the I/O event-looping. In theory, it ought to achieve a higher performance with this optimization.

See #230 for code details.

About ring-buffer

Adjust the growth strategy of ring-buffer, make it go more smoothly rather than simply doubling up (which may waste a huge amount of memory) in each buffer scaling. ccd37f fd8d27

Get This Change

This change was made available in 1.5.2.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2021-12-05-released-1-6-0/index.html b/highlights/2021-12-05-released-1-6-0/index.html index 38357c1bf..66fd4dac8 100644 --- a/highlights/2021-12-05-released-1-6-0/index.html +++ b/highlights/2021-12-05-released-1-6-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Dec 5th, 2021 /

Released gnet v1.6.0

Released the official stable version of v1.6.0

gnet client is now available for production!

Features

  • Add a new event handler: AfterWrite() 6a654c
  • Implement the gnet client 2295e8 a5ac95 4db46d 802fa3 7159b9
  • Implement writev and readv on BSD-like OS's 60ba6d
  • Implement a mixed buffer of ring-buffer and list-buffer edbdf4
  • Invoke OnClosed() when a UDP socket is closed 7be4b2
  • Implement the gnet.Conn.AsyncWritev() 9a2032

Enhancements

  • Prevent the event-list from expanding or shrinking endlessly b220df
  • Reduce the potential system calls for waking pollers up 9ce41f
  • Eliminate the code for preventing false-sharing 0bfade
  • Support so_reuseaddr #280
  • Make several improvements for logger 58d203
  • Optimize the buffer management and network I/O 6aba6d
  • Improve the project layout 2e172b
  • Improve the logic of reading data from socket into ring-buffer a7f07b
  • Get as much data read from socket per loop as possible 148ee1
  • Improve the network read with ring-buffer and readv 0dcf59
  • Avoid memory allocations when calling readv 15611b
  • Refactor the logic of handling UDP sockets d72d3d
  • Make the mixed-buffer more flexible d72d3d
  • Improve the management logic of the mixed-buffer b8d571

Bugfixes

  • Resolve the data race of stdConn on Windows #235
  • Fix the data corruption in some default codecs a56d2f
  • Fix the issue of panic: runtime error: slice bounds out of range 30311e

Docs

Misc

Get This Change

This change was made available in 1.6.0.

Like What You See?

+
/ Dec 5th, 2021 /

Released gnet v1.6.0

Released the official stable version of v1.6.0

gnet client is now available for production!

Features

  • Add a new event handler: AfterWrite() 6a654c
  • Implement the gnet client 2295e8 a5ac95 4db46d 802fa3 7159b9
  • Implement writev and readv on BSD-like OS's 60ba6d
  • Implement a mixed buffer of ring-buffer and list-buffer edbdf4
  • Invoke OnClosed() when a UDP socket is closed 7be4b2
  • Implement the gnet.Conn.AsyncWritev() 9a2032

Enhancements

  • Prevent the event-list from expanding or shrinking endlessly b220df
  • Reduce the potential system calls for waking pollers up 9ce41f
  • Eliminate the code for preventing false-sharing 0bfade
  • Support so_reuseaddr #280
  • Make several improvements for logger 58d203
  • Optimize the buffer management and network I/O 6aba6d
  • Improve the project layout 2e172b
  • Improve the logic of reading data from socket into ring-buffer a7f07b
  • Get as much data read from socket per loop as possible 148ee1
  • Improve the network read with ring-buffer and readv 0dcf59
  • Avoid memory allocations when calling readv 15611b
  • Refactor the logic of handling UDP sockets d72d3d
  • Make the mixed-buffer more flexible d72d3d
  • Improve the management logic of the mixed-buffer b8d571

Bugfixes

  • Resolve the data race of stdConn on Windows #235
  • Fix the data corruption in some default codecs a56d2f
  • Fix the issue of panic: runtime error: slice bounds out of range 30311e

Docs

Misc

Get This Change

This change was made available in 1.6.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2022-02-27-release-of-gnet-v2/index.html b/highlights/2022-02-27-release-of-gnet-v2/index.html index fa47eadb5..b17215c9b 100644 --- a/highlights/2022-02-27-release-of-gnet-v2/index.html +++ b/highlights/2022-02-27-release-of-gnet-v2/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Feb 27th, 2022 /

Release of gnet v2.0.0

Release of the official stable version of v2.0.0

Today, I'm thrilled to announce the release of gnet v2.0.0, in which we've made plenty of significant improvements and optimizations: added and removed some APIs, redesigned and reimplemented the buffer, optimized the memory pool, etc.

Please visit Announcing gnet v2.0.0 blog post

Get This Change

This change was made available in 2.0.0.

Like What You See?

+
/ Feb 27th, 2022 /

Release of gnet v2.0.0

Release of the official stable version of v2.0.0

Today, I'm thrilled to announce the release of gnet v2.0.0, in which we've made plenty of significant improvements and optimizations: added and removed some APIs, redesigned and reimplemented the buffer, optimized the memory pool, etc.

Please visit Announcing gnet v2.0.0 blog post

Get This Change

This change was made available in 2.0.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2022-12-03-release-of-gnet-v2-2-0/index.html b/highlights/2022-12-03-release-of-gnet-v2-2-0/index.html index 58c9d04cd..2282c2bd8 100644 --- a/highlights/2022-12-03-release-of-gnet-v2-2-0/index.html +++ b/highlights/2022-12-03-release-of-gnet-v2-2-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Dec 3rd, 2022 /

Release of gnet v2.2.0

Release of the official stable version of v2.2.0

The release of v2.2.0 predominantly focuses on bug fixes and feature implementations.

It's worth noting that breaking changes have been made to the API, so please refer to the release notes for more information.

Get This Change

This change was made available in 2.2.0.

Like What You See?

+
/ Dec 3rd, 2022 /

Release of gnet v2.2.0

Release of the official stable version of v2.2.0

The release of v2.2.0 predominantly focuses on bug fixes and feature implementations.

It's worth noting that breaking changes have been made to the API, so please refer to the release notes for more information.

Get This Change

This change was made available in 2.2.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2023-05-19-release-candidate-for-gnet-v2-3-0/index.html b/highlights/2023-05-19-release-candidate-for-gnet-v2-3-0/index.html index 9a6294d81..4d47c3b09 100644 --- a/highlights/2023-05-19-release-candidate-for-gnet-v2-3-0/index.html +++ b/highlights/2023-05-19-release-candidate-for-gnet-v2-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,14 +39,14 @@
-
/ May 19th, 2023 /

Release candidate for gnet v2.3.0

The first release candidate for gnet v2.3.0

Intro

The two major updates in this release candidate are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
+
/ May 19th, 2023 /

Release candidate for gnet v2.3.0

The first release candidate for gnet v2.3.0

Intro

The two major updates in this release candidate are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
│ old │ new │
│ B/op │ B/op vs base │
GC4El100k/Run-4-eventloop-100000-10 27.50 ± 35% 25.50 ± 33% ~ (p=0.423 n=10)
GC4El200k/Run-4-eventloop-200000-10 27.50 ± 53% 20.50 ± 66% ~ (p=0.642 n=10)
GC4El500k/Run-4-eventloop-500000-10 16.00 ± ? 18.00 ± ? ~ (p=0.357 n=10)
geomean 22.96 21.11 -8.04%
│ old │ new │
│ allocs/op │ allocs/op vs base │
GC4El100k/Run-4-eventloop-100000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El200k/Run-4-eventloop-200000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El500k/Run-4-eventloop-500000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² +0.00% ²
¹ all samples are equal
² summaries must be >0 to compute geomean

The more connections there are, the more pronounced the effect.

While we have performed sufficient testing on matrix, we are still using map as the default connection storage in this RC version for the sake of caution, but you can enable the new data structure by specifying build tags: -tags=gc_opt. This can be considered as a precautionary measure so that in case matrix has any unexpected bugs, you can quickly fall back to the default map. We will consider promoting matrix to be the default storage for connections in a subsequent official release.

Another significant leap is #461, you can now run gnet on Windows, it should be noted that the Windows version of gnet is intended for development purposes and is not recommended for use in production.

Visit the release notes for more details.

Get This Change

This change was made available in 2.3.0-rc.1.

Like What You See?

- + @@ -56,7 +56,7 @@ - + diff --git a/highlights/2023-07-01-release-of-gnet-v2-3-0/index.html b/highlights/2023-07-01-release-of-gnet-v2-3-0/index.html index a59514907..9a4af2431 100644 --- a/highlights/2023-07-01-release-of-gnet-v2-3-0/index.html +++ b/highlights/2023-07-01-release-of-gnet-v2-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,14 +39,14 @@
-
/ Jul 1st, 2023 /

Release of gnet v2.3.0

Release of the official stable version of v2.3.0

Intro

The two major updates in this official release are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
+
/ Jul 1st, 2023 /

Release of gnet v2.3.0

Release of the official stable version of v2.3.0

Intro

The two major updates in this official release are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
│ old │ new │
│ sec/op │ sec/op vs base │
GC4El100k/Run-4-eventloop-100000-10 30.74m ± 3% 19.68m ± 10% -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10 63.64m ± 3% 38.16m ± 11% -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10 177.28m ± 8% 95.21m ± 4% -46.29% (p=0.000 n=10)
geomean 70.26m 41.51m -40.92%
│ old │ new │
│ B/op │ B/op vs base │
GC4El100k/Run-4-eventloop-100000-10 27.50 ± 35% 25.50 ± 33% ~ (p=0.423 n=10)
GC4El200k/Run-4-eventloop-200000-10 27.50 ± 53% 20.50 ± 66% ~ (p=0.642 n=10)
GC4El500k/Run-4-eventloop-500000-10 16.00 ± ? 18.00 ± ? ~ (p=0.357 n=10)
geomean 22.96 21.11 -8.04%
│ old │ new │
│ allocs/op │ allocs/op vs base │
GC4El100k/Run-4-eventloop-100000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El200k/Run-4-eventloop-200000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
GC4El500k/Run-4-eventloop-500000-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² +0.00% ²
¹ all samples are equal
² summaries must be >0 to compute geomean

The more connections there are, the more pronounced the effect.

While we have performed sufficient testing on matrix, we are still using map as the default connection storage in this RC version for the sake of caution, but you can enable the new data structure by specifying build tags: -tags=gc_opt. This can be considered as a precautionary measure so that in case matrix has any unexpected bugs, you can quickly fall back to the default map. We will consider promoting matrix to be the default storage for connections in a subsequent official release.

Another significant leap is #461, you can now run gnet on Windows, it should be noted that the Windows version of gnet is intended for development purposes and is not recommended for use in production.

Visit the release notes for more details.

Get This Change

This change was made available in 2.3.0.

Like What You See?

- + @@ -56,7 +56,7 @@ - + diff --git a/highlights/2023-11-11-gnet-techempower-benchmark-top1/index.html b/highlights/2023-11-11-gnet-techempower-benchmark-top1/index.html index 9dd2feb8b..3f50705f8 100644 --- a/highlights/2023-11-11-gnet-techempower-benchmark-top1/index.html +++ b/highlights/2023-11-11-gnet-techempower-benchmark-top1/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Nov 11th, 2023 /

Gnet tops the TechEmpower benchmark leaderboard

Gnet tops the TechEmpower benchmark leaderboard, becoming the world No. 1

Breaking News 🎉🎉🎉

TechEmpower Web Framework Benchmarks is a performance comparison of many web application frameworks executing fundamental tasks such as JSON serialization, database access, and server-side template composition.

gnet tops the leaderboard of TechEmpower Plaintext Benchmark in round 22, becoming the world No. 1.

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.

To see the full leaderboard, visit TechEmpower Benchmark Round 22.

Get This Change

This change was made available in 2.3.5.

Like What You See?

+
/ Nov 11th, 2023 /

Gnet tops the TechEmpower benchmark leaderboard

Gnet tops the TechEmpower benchmark leaderboard, becoming the world No. 1

Breaking News 🎉🎉🎉

TechEmpower Web Framework Benchmarks is a performance comparison of many web application frameworks executing fundamental tasks such as JSON serialization, database access, and server-side template composition.

gnet tops the leaderboard of TechEmpower Plaintext Benchmark in round 22, becoming the world No. 1.

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.

To see the full leaderboard, visit TechEmpower Benchmark Round 22.

Get This Change

This change was made available in 2.3.5.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2024-04-04-release-of-gnet-v2-4-0/index.html b/highlights/2024-04-04-release-of-gnet-v2-4-0/index.html index 1e7b84baa..81dfbb0d7 100644 --- a/highlights/2024-04-04-release-of-gnet-v2-4-0/index.html +++ b/highlights/2024-04-04-release-of-gnet-v2-4-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
+
- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2024-04-22-release-of-gnet-v2-5-0/index.html b/highlights/2024-04-22-release-of-gnet-v2-5-0/index.html index 57e695847..86ad6ea61 100644 --- a/highlights/2024-04-22-release-of-gnet-v2-5-0/index.html +++ b/highlights/2024-04-22-release-of-gnet-v2-5-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Apr 22nd, 2024 /

Release of gnet v2.5.0

Release of the official stable version of v2.5.0

I hereby announce the release of gnet v2.5.0, where we've added two major features of edge-triggered mode and multiple addresses bindings, along with a good deal of code refactoring and optimizations.

Please visit Announcing gnet v2.5.0 for more details.

Get This Change

This change was made available in 2.5.0.

Like What You See?

+
/ Apr 22nd, 2024 /

Release of gnet v2.5.0

Release of the official stable version of v2.5.0

I hereby announce the release of gnet v2.5.0, where we've added two major features of edge-triggered mode and multiple addresses bindings, along with a good deal of code refactoring and optimizations.

Please visit Announcing gnet v2.5.0 for more details.

Get This Change

This change was made available in 2.5.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/2024-11-09-release-of-gnet-v2-6-0/index.html b/highlights/2024-11-09-release-of-gnet-v2-6-0/index.html index bb68b76f8..a3afed392 100644 --- a/highlights/2024-11-09-release-of-gnet-v2-6-0/index.html +++ b/highlights/2024-11-09-release-of-gnet-v2-6-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@
-
/ Nov 9th, 2024 /

Release of gnet v2.6.0

Release of the official stable version of v2.6.0

I hereby announce the release of gnet v2.6.0, where we've added two major features of SO_BINDTODEVICE and configurable edge-triggered chunk, along with a few bug-fixes.

Another change to note is that starting with this release, the minimum required Go version to run gnet is 1.20!

Get This Change

This change was made available in 2.6.0.

Like What You See?

+
/ Nov 9th, 2024 /

Release of gnet v2.6.0

Release of the official stable version of v2.6.0

I hereby announce the release of gnet v2.6.0, where we've added two major features of SO_BINDTODEVICE and configurable edge-triggered chunk, along with a few bug-fixes.

Another change to note is that starting with this release, the minimum required Go version to run gnet is 1.20!

Get This Change

This change was made available in 2.6.0.

Like What You See?

- + @@ -54,7 +54,7 @@ - + diff --git a/highlights/index.html b/highlights/index.html index 0c9d09872..babf9c366 100644 --- a/highlights/index.html +++ b/highlights/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -79,12 +79,12 @@
-

gnet Highlights

New features & updates. Follow @panjf2000 for real-time updates!
+

gnet Highlights

New features & updates. Follow @panjf2000 for real-time updates!
- + @@ -94,7 +94,7 @@ - + diff --git a/highlights/tags/domain-load-balancing/index.html b/highlights/tags/domain-load-balancing/index.html index 096aeaec6..43b69cfb0 100644 --- a/highlights/tags/domain-load-balancing/index.html +++ b/highlights/tags/domain-load-balancing/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -43,12 +43,12 @@ - + @@ -58,7 +58,7 @@ - + diff --git a/highlights/tags/domain-os/index.html b/highlights/tags/domain-os/index.html index 5f21356b4..755b1e184 100644 --- a/highlights/tags/domain-os/index.html +++ b/highlights/tags/domain-os/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-socket/index.html b/highlights/tags/domain-socket/index.html index 6cd69239b..2c59d7955 100644 --- a/highlights/tags/domain-socket/index.html +++ b/highlights/tags/domain-socket/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-thread/index.html b/highlights/tags/domain-thread/index.html index 642d203bd..69955ca95 100644 --- a/highlights/tags/domain-thread/index.html +++ b/highlights/tags/domain-thread/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-0-0/index.html b/highlights/tags/domain-v-1-0-0/index.html index 1a68e4264..efc8cf536 100644 --- a/highlights/tags/domain-v-1-0-0/index.html +++ b/highlights/tags/domain-v-1-0-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-1-0/index.html b/highlights/tags/domain-v-1-1-0/index.html index 0c6a0ed37..af66fec47 100644 --- a/highlights/tags/domain-v-1-1-0/index.html +++ b/highlights/tags/domain-v-1-1-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-2-0/index.html b/highlights/tags/domain-v-1-2-0/index.html index c1b7e2a29..603aef519 100644 --- a/highlights/tags/domain-v-1-2-0/index.html +++ b/highlights/tags/domain-v-1-2-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-3-0/index.html b/highlights/tags/domain-v-1-3-0/index.html index f516f200c..454c2cc93 100644 --- a/highlights/tags/domain-v-1-3-0/index.html +++ b/highlights/tags/domain-v-1-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-4-0/index.html b/highlights/tags/domain-v-1-4-0/index.html index 103e5bbf3..0b29d0fac 100644 --- a/highlights/tags/domain-v-1-4-0/index.html +++ b/highlights/tags/domain-v-1-4-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-5-0/index.html b/highlights/tags/domain-v-1-5-0/index.html index f5cd6ff56..c72c34735 100644 --- a/highlights/tags/domain-v-1-5-0/index.html +++ b/highlights/tags/domain-v-1-5-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-5-2/index.html b/highlights/tags/domain-v-1-5-2/index.html index f46276101..ee97cf2de 100644 --- a/highlights/tags/domain-v-1-5-2/index.html +++ b/highlights/tags/domain-v-1-5-2/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-1-6-0/index.html b/highlights/tags/domain-v-1-6-0/index.html index 9cf82c967..b09a4b4e2 100644 --- a/highlights/tags/domain-v-1-6-0/index.html +++ b/highlights/tags/domain-v-1-6-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-0-0/index.html b/highlights/tags/domain-v-2-0-0/index.html index 717e5b79f..538e6f66a 100644 --- a/highlights/tags/domain-v-2-0-0/index.html +++ b/highlights/tags/domain-v-2-0-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-2-0/index.html b/highlights/tags/domain-v-2-2-0/index.html index 49e2072c9..3137f8c93 100644 --- a/highlights/tags/domain-v-2-2-0/index.html +++ b/highlights/tags/domain-v-2-2-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-3-0-rc-1/index.html b/highlights/tags/domain-v-2-3-0-rc-1/index.html index 9cd866b97..9a1c0bf9d 100644 --- a/highlights/tags/domain-v-2-3-0-rc-1/index.html +++ b/highlights/tags/domain-v-2-3-0-rc-1/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-3-0/index.html b/highlights/tags/domain-v-2-3-0/index.html index 8eb04cce7..5068c7476 100644 --- a/highlights/tags/domain-v-2-3-0/index.html +++ b/highlights/tags/domain-v-2-3-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-3-5/index.html b/highlights/tags/domain-v-2-3-5/index.html index 154c2ace1..cd9c5e568 100644 --- a/highlights/tags/domain-v-2-3-5/index.html +++ b/highlights/tags/domain-v-2-3-5/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-4-0/index.html b/highlights/tags/domain-v-2-4-0/index.html index b0a5f294d..87e6a5056 100644 --- a/highlights/tags/domain-v-2-4-0/index.html +++ b/highlights/tags/domain-v-2-4-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-5-0/index.html b/highlights/tags/domain-v-2-5-0/index.html index 3fa90075d..715268c43 100644 --- a/highlights/tags/domain-v-2-5-0/index.html +++ b/highlights/tags/domain-v-2-5-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/domain-v-2-6-0/index.html b/highlights/tags/domain-v-2-6-0/index.html index 4d9610dfe..3a350e8c6 100644 --- a/highlights/tags/domain-v-2-6-0/index.html +++ b/highlights/tags/domain-v-2-6-0/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/index.html b/highlights/tags/index.html index 9089eedbf..0bb52ca1c 100644 --- a/highlights/tags/index.html +++ b/highlights/tags/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -39,12 +39,12 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/highlights/tags/platform-arm-64/index.html b/highlights/tags/platform-arm-64/index.html index 8c2d17a0e..bd8076912 100644 --- a/highlights/tags/platform-arm-64/index.html +++ b/highlights/tags/platform-arm-64/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -43,12 +43,12 @@ - + @@ -58,7 +58,7 @@ - + diff --git a/highlights/tags/platform-windows/index.html b/highlights/tags/platform-windows/index.html index ff0433a58..970b3214f 100644 --- a/highlights/tags/platform-windows/index.html +++ b/highlights/tags/platform-windows/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/type-new-feature/index.html b/highlights/tags/type-new-feature/index.html index 27ab45c9b..e76da8be4 100644 --- a/highlights/tags/type-new-feature/index.html +++ b/highlights/tags/type-new-feature/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -47,12 +47,12 @@
- +
- + @@ -62,7 +62,7 @@ - + diff --git a/highlights/tags/type-optimization/index.html b/highlights/tags/type-optimization/index.html index d6d361abd..3261f7b22 100644 --- a/highlights/tags/type-optimization/index.html +++ b/highlights/tags/type-optimization/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -41,12 +41,12 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/highlights/tags/type-release/index.html b/highlights/tags/type-release/index.html index a5527dcd8..d245a50d8 100644 --- a/highlights/tags/type-release/index.html +++ b/highlights/tags/type-release/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -51,12 +51,12 @@
- +
- + @@ -66,7 +66,7 @@ - + diff --git a/highlights/tags/type-tag/index.html b/highlights/tags/type-tag/index.html index 5eee2e705..3e84646eb 100644 --- a/highlights/tags/type-tag/index.html +++ b/highlights/tags/type-tag/index.html @@ -21,7 +21,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -59,12 +59,12 @@
-

10 highlights tagged with "type: tag"

+

10 highlights tagged with "type: tag"

- + @@ -74,7 +74,7 @@ - + diff --git a/index.html b/index.html index ad9a8fde1..08ab123a4 100644 --- a/index.html +++ b/index.html @@ -21,7 +21,7 @@ - + @@ -31,18 +31,18 @@ - +
-

Build high-performance networking applications in Go

On top of a variety of protocols of HTTP, RPC, WebSocket, Redis, etc.

gnet is the fastest networking framework in Go.

Why gnet?

Ultra-Fast

Built in Go, gnet is ultra-fast and memory efficient based on the event-driven mechanism. It's designed to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.

Lock-Free

gnet is lock-free during the entire runtime, which keeps gnet free from synchronization issues and speeds it up.

Concise & Easy-to-use APIs

gnet provides concise and easy-to-use APIs for users, it only exposes the essential APIs and takes over most of the tough work for users, minimizing the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementations.

Multiple Protocols

gnet supports multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket, enabling you to develop a variety of networking applications.

Cross Platform

gnet is devised as a cross-platform framework, as a result, it works faultlessly on multiple platforms: Linux, FreeBSD, DragonFly BSD, Windows.

Powerful Libraries

There is a rich set of libraries in gnet, such as memory pool, goroutine pool, elastic buffers, logging package, etc., which makes it convenient for developers to build fast and efficient networking applications.

Networking model of multiple reactors

Learn how gnet works

Cross Platform

Built on Linux, FreeBSD, DragonFly BSD, Darwin, Windows
        
UNIX & Windows
X86_64, ARM64
Light-weight
Ultra-fast

How to install gnet

`gnet` is available as a Go module and we highly recommend that you use `gnet` via Go Modules, with Go 1.11 Modules enabled (Go 1.11+), you can just simply add `import "github.com/panjf2000/gnet/v2"` to the codebase and run `go mod download/go mod tidy` or `go [build|run|test]` to download the necessary dependencies automatically.

Run go get to download gnet:

With v2

go get -u github.com/panjf2000/gnet/v2

With v1

go get -u github.com/panjf2000/gnet

Performance

Benchmarks on TechEmpower
# Hardware Environment
* 28 HT Cores Intel(R) Xeon(R) Gold 5120 CPU @ 3.20GHz
* 32GB RAM
* Dedicated Cisco 10-gigabit Ethernet switch
* Debian 12 "bookworm"
* Go1.19.x linux/amd64

All languages

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

Go

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.


To check the full ranking list, visit TechEmpower Benchmark Round 22.

Note that the HTTP implementation of gnet on TechEmpower is half-baked and fine-tuned for benchmark purposes only and is far from production-ready.

Use cases

The following companies/organizations use gnet as the underlying network service in production.

If your projects are also using gnet, feel free to open a pull request refreshing this list.

+

Build high-performance networking applications in Go

On top of a variety of protocols of HTTP, RPC, WebSocket, Redis, etc.

gnet is the fastest networking framework in Go.

Why gnet?

Ultra-Fast

Built in Go, gnet is ultra-fast and memory efficient based on the event-driven mechanism. It's designed to create a networking server framework for Go that performs on par with Redis and Haproxy for networking packets handling.

Lock-Free

gnet is lock-free during the entire runtime, which keeps gnet free from synchronization issues and speeds it up.

Concise & Easy-to-use APIs

gnet provides concise and easy-to-use APIs for users, it only exposes the essential APIs and takes over most of the tough work for users, minimizing the complexity of business code so that developers are able to concentrate on business logic instead of the underlying implementations.

Multiple Protocols

gnet supports multiple protocols/IPC mechanism: TCP, UDP and Unix Domain Socket, enabling you to develop a variety of networking applications.

Cross Platform

gnet is devised as a cross-platform framework, as a result, it works faultlessly on multiple platforms: Linux, FreeBSD, DragonFly BSD, Windows.

Powerful Libraries

There is a rich set of libraries in gnet, such as memory pool, goroutine pool, elastic buffers, logging package, etc., which makes it convenient for developers to build fast and efficient networking applications.

Networking model of multiple reactors

Learn how gnet works

Cross Platform

Built on Linux, FreeBSD, DragonFly BSD, Darwin, Windows
        
UNIX & Windows
X86_64, ARM64
Light-weight
Ultra-fast

How to install gnet

`gnet` is available as a Go module and we highly recommend that you use `gnet` via Go Modules, with Go 1.11 Modules enabled (Go 1.11+), you can just simply add `import "github.com/panjf2000/gnet/v2"` to the codebase and run `go mod download/go mod tidy` or `go [build|run|test]` to download the necessary dependencies automatically.

Run go get to download gnet:

With v2

go get -u github.com/panjf2000/gnet/v2

With v1

go get -u github.com/panjf2000/gnet

Performance

Benchmarks on TechEmpower
# Hardware Environment
* 28 HT Cores Intel(R) Xeon(R) Gold 5120 CPU @ 3.20GHz
* 32GB RAM
* Dedicated Cisco 10-gigabit Ethernet switch
* Debian 12 "bookworm"
* Go1.19.x linux/amd64

All languages

This is a leaderboard of the top 50 out of 486 frameworks that encompass various programming languages worldwide, in which gnet is ranked first.

Go

This is the full framework ranking of Go and gnet tops all the other frameworks, which makes gnet the fastest networking framework in Go.


To check the full ranking list, visit TechEmpower Benchmark Round 22.

Note that the HTTP implementation of gnet on TechEmpower is half-baked and fine-tuned for benchmark purposes only and is far from production-ready.

Use cases

The following companies/organizations use gnet as the underlying network service in production.

If your projects are also using gnet, feel free to open a pull request refreshing this list.

- + @@ -52,7 +52,7 @@ - + diff --git a/runtime~main.588a5677.js b/runtime~main.adbdad8d.js similarity index 93% rename from runtime~main.588a5677.js rename to runtime~main.adbdad8d.js index f7ac63bf0..052bed557 100644 --- a/runtime~main.588a5677.js +++ b/runtime~main.adbdad8d.js @@ -1 +1 @@ -!function(e){function c(c){for(var d,a,r=c[0],n=c[1],o=c[2],u=0,i=[];u