diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f73e981..f329c09 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,7 @@ test-my-project: stage: test script: - go get github.com/client9/misspell/cmd/misspell - - misspell -error . + - find . -type f | grep -v webroot/assets | xargs misspell -error - ./.ci/check-gofmt - ./.ci/check-testfiles - go test $(go list ./... | grep -v /vendor/) -v -coverprofile .testCoverage.txt @@ -44,7 +44,10 @@ deploy: script: - go install "dev.sum7.eu/$CI_PROJECT_PATH" - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - 'which rsync || ( apt-get update -y && apt-get install rsync -y )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null + - rsync -e "ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT" -a --delete "/builds/$CI_PROJECT_PATH/webroot/" "$CI_PROJECT_NAME@$SSH_HOST":/opt/$CI_PROJECT_NAME/webroot/ + - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl stop $CI_PROJECT_NAME - scp -6 -o StrictHostKeyChecking=no -P $SSH_PORT "/go/bin/$CI_PROJECT_NAME" "$CI_PROJECT_NAME@$SSH_HOST":/opt/$CI_PROJECT_NAME/bin - - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl restart $CI_PROJECT_NAME + - ssh -6 -o StrictHostKeyChecking=no -p $SSH_PORT "$CI_PROJECT_NAME@$SSH_HOST" sudo /usr/bin/systemctl start $CI_PROJECT_NAME diff --git a/cmd/controller.go b/cmd/controller.go index 0754ba2..acfbbb6 100644 --- a/cmd/controller.go +++ b/cmd/controller.go @@ -1,6 +1,7 @@ package cmd import ( + "net" "os" "os/signal" "syscall" @@ -12,7 +13,9 @@ import ( "dev.sum7.eu/genofire/wifictld-analyzer/capture" "dev.sum7.eu/genofire/wifictld-analyzer/config" "dev.sum7.eu/genofire/wifictld-analyzer/controller" + "dev.sum7.eu/genofire/wifictld-analyzer/data" "dev.sum7.eu/genofire/wifictld-analyzer/database" + "dev.sum7.eu/genofire/wifictld-analyzer/web" ) // queryCmd represents the query command @@ -31,7 +34,26 @@ var controllerCmd = &cobra.Command{ ctr := controller.NewController(db) defer ctr.Close() - coll := capture.NewCollector(ctr.Handler, configObj.Interfaces) + var handlers []data.Handler + + if configObj.Webserver.Enable { + log.Infof("starting webserver on %s", configObj.Webserver.Bind) + srv := web.New(configObj.Webserver) + go srv.Start() + handlers = append(handlers, srv.Handler) + defer srv.Close() + } + + coll := capture.NewCollector(func(addr *net.UDPAddr, msg *data.SocketMSG) (*data.SocketMSG, error) { + for _, a := range handlers { + a(addr, msg) + } + if !configObj.Answer { + ctr.Handler(addr, msg) + return nil, nil + } + return ctr.Handler(addr, msg) + }, configObj.Interfaces) defer coll.Close() ctr.Send = coll.Send @@ -47,5 +69,5 @@ var controllerCmd = &cobra.Command{ } func init() { - RootCmd.AddCommand(controllerCmd) + RootCMD.AddCommand(controllerCmd) } diff --git a/cmd/dump.go b/cmd/dump.go index 2166b7f..5b4ce49 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -58,7 +58,7 @@ var dumpCmd = &cobra.Command{ } func init() { - RootCmd.AddCommand(dumpCmd) + RootCMD.AddCommand(dumpCmd) dumpCmd.Flags().IntVar(&port, "port", capture.Port, "define a port to listen (if not set or set to 0 the kernel will use a random free port at its own)") dumpCmd.Flags().StringVar(&ipAddress, "listen", capture.MulticastAddressDefault, "") } diff --git a/cmd/root.go b/cmd/root.go index 6c035e8..a3f3fb7 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,19 +6,22 @@ import ( "github.com/spf13/cobra" ) -var debug bool +var ( + debug bool + timestamps bool +) -// RootCmd represents the base command when called without any subcommands -var RootCmd = &cobra.Command{ +// RootCMD represents the base command when called without any subcommands +var RootCMD = &cobra.Command{ Use: "analyzer", Short: "wifictld analyzer", Long: `capture wifictld traffic and display thus`, } // Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. +// This is called by main.main(). It only needs to happen once to the RootCMD. func Execute() { - if err := RootCmd.Execute(); err != nil { + if err := RootCMD.Execute(); err != nil { log.Error(err) } } @@ -27,7 +30,11 @@ func init() { if debug { log.SetLevel(log.DebugLevel) } + log.SetFormatter(&log.TextFormatter{ + DisableTimestamp: timestamps, + }) log.Debug("show debug") }) - RootCmd.PersistentFlags().BoolVar(&debug, "v", false, "show debug log") + RootCMD.PersistentFlags().BoolVar(&debug, "v", false, "show debug log") + RootCMD.PersistentFlags().BoolVar(×tamps, "timestamps", false, "Enables timestamps for log output") } diff --git a/config/config.go b/config/config.go index d83ee12..3ab7d78 100644 --- a/config/config.go +++ b/config/config.go @@ -2,9 +2,12 @@ package config import ( "dev.sum7.eu/genofire/wifictld-analyzer/capture" + "dev.sum7.eu/genofire/wifictld-analyzer/web" ) type Config struct { StatePath string `toml:"state_path"` + Answer bool `toml:"answer"` + Webserver *web.Config `toml:"webserver"` Interfaces []*capture.IFaceConfig `toml:"interfaces"` } diff --git a/config_example.conf b/config_example.conf index 999bf8c..1132b6d 100644 --- a/config_example.conf +++ b/config_example.conf @@ -1,6 +1,13 @@ state_path = "/tmp/wifictld.json" +answer = false + + +[webserver] +enable = true +bind = ":8080" +webroot = "./webroot/" [[interfaces]] -ifname = "wlp4s0" -#port = 1000 -#ip_address = "ff02::31f1" +ifname = "wlp4s0" +#port = 1000 +#ip_address = "ff02::31f1" diff --git a/data/hwaddr.go b/data/hwaddr.go new file mode 100644 index 0000000..11ffa78 --- /dev/null +++ b/data/hwaddr.go @@ -0,0 +1,16 @@ +package data + +import "net" + +type HardwareAddr struct{ net.HardwareAddr } + +//MarshalJSON to bytearray +func (a HardwareAddr) MarshalText() ([]byte, error) { + return []byte(a.String()), nil +} + +// UnmarshalJSON from bytearray +func (a HardwareAddr) UnmarshalText(data []byte) (err error) { + a.HardwareAddr, err = net.ParseMAC(string(data)) + return +} diff --git a/data/socket_msg.go b/data/socket_msg.go index 2f94c39..ad43e30 100644 --- a/data/socket_msg.go +++ b/data/socket_msg.go @@ -3,7 +3,6 @@ package data import ( "encoding/binary" "fmt" - "net" "time" "github.com/bdlm/log" @@ -31,8 +30,8 @@ func (a SocketMSGType) Is(b SocketMSGType) bool { // SocketMSG package of wifictld format type SocketMSG struct { - Types SocketMSGType - Client *WifiClient + Types SocketMSGType `json:"types"` + Client *WifiClient `json:"client,omitempty"` } func NewSocketMSG(obj []byte) (*SocketMSG, error) { @@ -51,17 +50,17 @@ func (msg *SocketMSG) Marshal() ([]byte, error) { pos += 4 if msg.Types.Is(SocketMSGTypeClient) { - obj[pos] = msg.Client.Addr[0] + obj[pos] = msg.Client.Addr.HardwareAddr[0] pos++ - obj[pos] = msg.Client.Addr[1] + obj[pos] = msg.Client.Addr.HardwareAddr[1] pos++ - obj[pos] = msg.Client.Addr[2] + obj[pos] = msg.Client.Addr.HardwareAddr[2] pos++ - obj[pos] = msg.Client.Addr[3] + obj[pos] = msg.Client.Addr.HardwareAddr[3] pos++ - obj[pos] = msg.Client.Addr[4] + obj[pos] = msg.Client.Addr.HardwareAddr[4] pos++ - obj[pos] = msg.Client.Addr[5] + obj[pos] = msg.Client.Addr.HardwareAddr[5] pos++ binary.BigEndian.PutUint32(obj[pos:(pos+4)], uint32(msg.Client.Time.Unix())) pos += 4 @@ -100,7 +99,7 @@ func (msg *SocketMSG) Unmarshal(obj []byte) error { if msg.Types.Is(SocketMSGTypeClient) { msg.Client = &WifiClient{ - Addr: net.HardwareAddr(obj[pos:(pos + 6)]), + Addr: HardwareAddr{HardwareAddr: obj[pos:(pos + 6)]}, Time: time.Unix(int64(binary.BigEndian.Uint32(obj[(pos+6):(pos+10)])), 0), TryProbe: binary.BigEndian.Uint16(obj[(pos + 10):(pos + 12)]), TryAuth: binary.BigEndian.Uint16(obj[(pos + 12):(pos + 14)]), diff --git a/data/wifi_client.go b/data/wifi_client.go index d335cdc..cc90d2c 100644 --- a/data/wifi_client.go +++ b/data/wifi_client.go @@ -1,9 +1,6 @@ package data -import ( - "net" - "time" -) +import "time" const ( // default multicast group used by announced @@ -18,13 +15,13 @@ const ( // WifiClient datatype of wifictld type WifiClient struct { - Addr net.HardwareAddr - Time time.Time - TryProbe uint16 - TryAuth uint16 - Connected bool - Authed bool - FreqHighest uint16 - SignalLowFreq int16 - SignalHighFreq int16 + Addr HardwareAddr `json:"addr"` + Time time.Time `json:"time"` + TryProbe uint16 `json:"try_probe"` + TryAuth uint16 `json:"try_auth"` + Connected bool `json:"connected"` + Authed bool `json:"authed"` + FreqHighest uint16 `json:"freq_highest"` + SignalLowFreq int16 `json:"signal_low_freq"` + SignalHighFreq int16 `json:"signal_high_freq"` } diff --git a/database/client.go b/database/client.go index a2ca78e..1680ce3 100644 --- a/database/client.go +++ b/database/client.go @@ -11,17 +11,17 @@ import ( ) type Client struct { - AP *AP `json:"-"` - APAddr string `json:"ap"` - Addr net.HardwareAddr `json:"-"` - TryProbe uint16 `json:"try_probe"` - TryAuth uint16 `json:"try_auth"` - Connected bool `json:"connected"` - Authed bool `json:"authed"` - FreqHighest uint16 `json:"freq_highest"` - SignalLowFreq int16 `json:"signal_low_freq"` - SignalHighFreq int16 `json:"signal_high_freq"` - Lastseen jsontime.Time `json:"lastseen"` + AP *AP `json:"-"` + APAddr string `json:"ap"` + Addr data.HardwareAddr `json:"-"` + TryProbe uint16 `json:"try_probe"` + TryAuth uint16 `json:"try_auth"` + Connected bool `json:"connected"` + Authed bool `json:"authed"` + FreqHighest uint16 `json:"freq_highest"` + SignalLowFreq int16 `json:"signal_low_freq"` + SignalHighFreq int16 `json:"signal_high_freq"` + Lastseen jsontime.Time `json:"lastseen"` } func (db *DB) LearnClient(apIP net.IP, clientWifictl *data.WifiClient) bool { @@ -70,7 +70,7 @@ func (db *DB) LearnClient(apIP net.IP, clientWifictl *data.WifiClient) bool { return ret } -func (db *DB) GetClient(addr net.HardwareAddr) *data.WifiClient { +func (db *DB) GetClient(addr data.HardwareAddr) *data.WifiClient { client, ok := db.Clients[addr.String()] wClient := &data.WifiClient{ Addr: addr, diff --git a/database/main.go b/database/main.go index acfd91f..cf2ab84 100644 --- a/database/main.go +++ b/database/main.go @@ -1,7 +1,6 @@ package database import ( - "net" "time" "github.com/bdlm/log" @@ -25,7 +24,7 @@ func NewDB(path string) *DB { file.ReadJSON(path, db) for addr, client := range db.Clients { - client.Addr, _ = net.ParseMAC(addr) + client.Addr.UnmarshalText([]byte(addr)) if ap, ok := db.APs[client.APAddr]; ok { client.AP = ap } diff --git a/web/config.go b/web/config.go new file mode 100644 index 0000000..fb7763b --- /dev/null +++ b/web/config.go @@ -0,0 +1,7 @@ +package web + +type Config struct { + Enable bool `toml:"enable"` + Bind string `toml:"bind"` + Webroot string `toml:"webroot"` +} diff --git a/web/webserver.go b/web/webserver.go new file mode 100644 index 0000000..7c03738 --- /dev/null +++ b/web/webserver.go @@ -0,0 +1,54 @@ +package web + +import ( + "net" + "net/http" + + "github.com/NYTimes/gziphandler" + "github.com/bdlm/log" + + "dev.sum7.eu/genofire/golang-lib/websocket" + + "dev.sum7.eu/genofire/wifictld-analyzer/data" +) + +type Server struct { + web *http.Server + ws *websocket.WebsocketHandlerService +} + +// New creates a new webserver and starts it +func New(config *Config) *Server { + ws := websocket.NewWebsocketHandlerService() + ws.Listen("/ws") + + http.Handle("/", gziphandler.GzipHandler(http.FileServer(http.Dir(config.Webroot)))) + return &Server{ + web: &http.Server{ + Addr: config.Bind, + }, + ws: ws, + } +} + +func (srv *Server) Handler(addr *net.UDPAddr, msg *data.SocketMSG) (*data.SocketMSG, error) { + srv.ws.SendAll(&websocket.Message{ + Subject: "wifictld_pkg", + Body: map[string]interface{}{ + "ip": addr.IP, + "msg": msg, + }, + }) + return msg, nil +} +func (srv *Server) Start() { + // service connections + if err := srv.web.ListenAndServe(); err != http.ErrServerClosed { + log.Panicf("webserver crashed: %s", err) + } +} + +func (srv *Server) Close() { + srv.web.Close() + srv.ws.Close() +} diff --git a/web/webserver_test.go b/web/webserver_test.go new file mode 100644 index 0000000..7acea9f --- /dev/null +++ b/web/webserver_test.go @@ -0,0 +1,28 @@ +package web + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestWebserver(t *testing.T) { + assert := assert.New(t) + + srv := New(&Config{ + Bind: ":12345", + Webroot: "/tmp", + }) + assert.NotNil(srv) + + go srv.Start() + + time.Sleep(time.Millisecond * 200) + + assert.Panics(func() { + srv.Start() + }, "not allowed to listen twice") + + srv.Close() +} diff --git a/webroot/assets/get_assets.sh b/webroot/assets/get_assets.sh new file mode 100755 index 0000000..04537e7 --- /dev/null +++ b/webroot/assets/get_assets.sh @@ -0,0 +1,6 @@ +wget -O vanilla-framework.css https://assets.ubuntu.com/v1/vanilla-framework-version-1.8.1.min.css +wget -O vue.js https://cdn.jsdelivr.net/npm/vue@2.6.7/dist/vue.js +wget -O vue-route.js https://unpkg.com/vue-router/dist/vue-router.js +wget -O vuex.js https://unpkg.com/vuex@2.0.0/dist/vuex.min.js +wget -O vue-websocket.js https://raw.githubusercontent.com/nathantsoi/vue-native-websocket/master/dist/build.js +wget -O vue-websocket.js.map https://raw.githubusercontent.com/nathantsoi/vue-native-websocket/master/dist/build.js.map diff --git a/webroot/assets/vanilla-framework.css b/webroot/assets/vanilla-framework.css new file mode 100644 index 0000000..0b494a7 --- /dev/null +++ b/webroot/assets/vanilla-framework.css @@ -0,0 +1,3 @@ +.p-icon--chevron,.p-icon--close,.p-icon--code,.p-icon--collapse,.p-icon--contextual-menu,.p-icon--copy,.p-icon--delete,.p-icon--error,.p-icon--expand,.p-icon--external-link,.p-icon--help,.p-icon--information,.p-icon--menu,.p-icon--minus,.p-icon--plus,.p-icon--question,.p-icon--search,.p-icon--share,.p-icon--spinner,.p-icon--success,.p-icon--user,.p-icon--warning{height:1rem;width:1rem;background-position:50%;background-repeat:no-repeat;background-size:contain;display:inline-block;margin:0;padding:0;position:relative;top:-2px;vertical-align:sub}.p-icon--canonical,.p-icon--facebook,.p-icon--google,.p-icon--instagram,.p-icon--linkedin,.p-icon--twitter,.p-icon--ubuntu,.p-icon--youtube{height:2.5rem;width:2.5rem;display:inline-block}.p-media-object,.p-media-object--large{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;margin-bottom:1.5rem}.p-media-object__meta-list-item,.p-media-object__meta-list-item--date,.p-media-object__meta-list-item--location,.p-media-object__meta-list-item--venue{color:#111;padding-left:2rem}.p-media-object__meta-list-item--date,.p-media-object__meta-list-item--location,.p-media-object__meta-list-item--venue{background-position:0 75%;background-repeat:no-repeat;background-size:1rem} + +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}[type=checkbox],[type=radio]{box-sizing:border-box}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}blockquote{border-left:2px solid #666}blockquote>cite{display:block}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}button{background-color:#fff;border-color:#cdcdcd}button,button:visited{color:#111}button:active,button:hover{background-color:#f7f7f7;border-color:#cdcdcd}button.is--disabled:active,button.is--disabled:hover,button:disabled:active,button:disabled:hover{background-color:transparent;border-color:#cdcdcd}button .p-link--external{color:currentColor}.p-button,.p-button--base,.p-button--brand,.p-button--negative,.p-button--neutral,.p-button--positive,[type=submit],button{transition-duration:.165s;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(.55,.055,.675,.19);border-radius:.125rem;border-style:solid;border-width:1px;cursor:pointer;display:inline-block;font-size:1rem;font-weight:300;line-height:1.5rem;margin-bottom:1.7rem;padding:.3375rem 1rem;text-align:center;text-decoration:none}.p-button--base:focus,.p-button--brand:focus,.p-button--negative:focus,.p-button--neutral:focus,.p-button--positive:focus,.p-button:focus,:focus[type=submit],button:focus{outline:1px solid #19b6ee;outline-offset:2px}.p-button--base:active,.p-button--base:focus,.p-button--base:hover,.p-button--brand:active,.p-button--brand:focus,.p-button--brand:hover,.p-button--negative:active,.p-button--negative:focus,.p-button--negative:hover,.p-button--neutral:active,.p-button--neutral:focus,.p-button--neutral:hover,.p-button--positive:active,.p-button--positive:focus,.p-button--positive:hover,.p-button:active,.p-button:focus,.p-button:hover,:active[type=submit],:focus[type=submit],:hover[type=submit],button:active,button:focus,button:hover{text-decoration:none}.is--disabled.p-button,.is--disabled.p-button--base,.is--disabled.p-button--brand,.is--disabled.p-button--negative,.is--disabled.p-button--neutral,.is--disabled.p-button--positive,.is--disabled[type=submit],.p-button--base:disabled,.p-button--brand:disabled,.p-button--negative:disabled,.p-button--neutral:disabled,.p-button--positive:disabled,.p-button:disabled,:disabled[type=submit],button.is--disabled,button:disabled{cursor:not-allowed;opacity:.5}@media only screen and (max-width:460px){.p-button,.p-button--base,.p-button--brand,.p-button--negative,.p-button--neutral,.p-button--positive,[type=submit],button{width:100%}}@media only screen and (min-width:461px){.p-button,.p-button--base,.p-button--brand,.p-button--negative,.p-button--neutral,.p-button--positive,[type=submit],button{width:auto}.p-button--base:not(:last-of-type):not(:only-of-type),.p-button--brand:not(:last-of-type):not(:only-of-type),.p-button--negative:not(:last-of-type):not(:only-of-type),.p-button--neutral:not(:last-of-type):not(:only-of-type),.p-button--positive:not(:last-of-type):not(:only-of-type),.p-button:not(:last-of-type):not(:only-of-type),:not(:last-of-type):not(:only-of-type)[type=submit],button:not(:last-of-type):not(:only-of-type){margin-right:1rem}}table .p-button,table .p-button--base,table .p-button--brand,table .p-button--negative,table .p-button--neutral,table .p-button--positive,table [type=submit],table button{margin-bottom:.1rem;padding-bottom:.0875rem;padding-top:.0875rem}p .p-button,p .p-button--base,p .p-button--brand,p .p-button--negative,p .p-button--neutral,p .p-button--positive,p [type=submit],p button{margin-bottom:.6rem;margin-top:-.4rem}p+p>.p-button,p+p>.p-button--base,p+p>.p-button--brand,p+p>.p-button--negative,p+p>.p-button--neutral,p+p>.p-button--positive,p+p>[type=submit],p+p>button{margin-top:.6rem}@media only screen and (max-width:460px){p .p-button+.p-button,p .p-button+.p-button--base,p .p-button+.p-button--brand,p .p-button+.p-button--negative,p .p-button+.p-button--neutral,p .p-button+.p-button--positive,p .p-button+[type=submit],p .p-button+button,p .p-button--base+.p-button,p .p-button--base+.p-button--base,p .p-button--base+.p-button--brand,p .p-button--base+.p-button--negative,p .p-button--base+.p-button--neutral,p .p-button--base+.p-button--positive,p .p-button--base+[type=submit],p .p-button--base+button,p .p-button--brand+.p-button,p .p-button--brand+.p-button--base,p .p-button--brand+.p-button--brand,p .p-button--brand+.p-button--negative,p .p-button--brand+.p-button--neutral,p .p-button--brand+.p-button--positive,p .p-button--brand+[type=submit],p .p-button--brand+button,p .p-button--negative+.p-button,p .p-button--negative+.p-button--base,p .p-button--negative+.p-button--brand,p .p-button--negative+.p-button--negative,p .p-button--negative+.p-button--neutral,p .p-button--negative+.p-button--positive,p .p-button--negative+[type=submit],p .p-button--negative+button,p .p-button--neutral+.p-button,p .p-button--neutral+.p-button--base,p .p-button--neutral+.p-button--brand,p .p-button--neutral+.p-button--negative,p .p-button--neutral+.p-button--neutral,p .p-button--neutral+.p-button--positive,p .p-button--neutral+[type=submit],p .p-button--neutral+button,p .p-button--positive+.p-button,p .p-button--positive+.p-button--base,p .p-button--positive+.p-button--brand,p .p-button--positive+.p-button--negative,p .p-button--positive+.p-button--neutral,p .p-button--positive+.p-button--positive,p .p-button--positive+[type=submit],p .p-button--positive+button,p [type=submit]+.p-button,p [type=submit]+.p-button--base,p [type=submit]+.p-button--brand,p [type=submit]+.p-button--negative,p [type=submit]+.p-button--neutral,p [type=submit]+.p-button--positive,p [type=submit]+[type=submit],p [type=submit]+button,p button+.p-button,p button+.p-button--base,p button+.p-button--brand,p button+.p-button--negative,p button+.p-button--neutral,p button+.p-button--positive,p button+[type=submit],p button+button{margin-top:1.1rem}}code,kbd,samp{font-family:Ubuntu Mono,Consolas,Monaco,Courier,monospace;font-weight:300;text-align:left}code,pre{direction:ltr;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;white-space:pre-wrap;word-spacing:normal;word-wrap:break-word}code{display:inline}pre{background-color:#f7f7f7;border:1px solid #cdcdcd;border-radius:.125rem;color:#111;display:block;margin-bottom:1.5rem;margin-top:0;overflow:auto;padding:.5rem 1rem;text-align:left;text-shadow:none}.p-code-snippet,[type=color],[type=datatime-local],[type=date],[type=datetime],[type=email],[type=file],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{margin-bottom:.7rem;padding-bottom:.3375rem;padding-top:.3375rem}[type=color],[type=datatime-local],[type=date],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background-color:#fff;border:1px solid #cdcdcd;border-radius:.125rem;box-shadow:inset 0 1px 1px rgba(0,0,0,.12);color:#111;font-family:Ubuntu,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1rem;font-weight:300;line-height:1.5rem;min-width:10em;padding-left:.5rem;padding-right:.5rem;vertical-align:baseline;width:100%}:focus[type=color],:focus[type=datatime-local],:focus[type=date],:focus[type=datetime],:focus[type=email],:focus[type=month],:focus[type=number],:focus[type=password],:focus[type=search],:focus[type=tel],:focus[type=text],:focus[type=time],:focus[type=url],:focus[type=week],select:focus,textarea:focus{outline:1px solid #19b6ee;outline-offset:2px}table [type=color],table [type=datatime-local],table [type=date],table [type=datetime],table [type=email],table [type=month],table [type=number],table [type=password],table [type=search],table [type=tel],table [type=text],table [type=time],table [type=url],table [type=week],table select,table textarea{margin:0 0 .1rem;padding-bottom:.0875rem;padding-top:.0875rem}:active[type=color],:active[type=datatime-local],:active[type=date],:active[type=datetime],:active[type=email],:active[type=month],:active[type=number],:active[type=password],:active[type=search],:active[type=tel],:active[type=text],:active[type=time],:active[type=url],:active[type=week],select:active,textarea:active{border-color:#666;color:#111;outline:none}[type=color]::-webkit-input-placeholder,[type=datatime-local]::-webkit-input-placeholder,[type=date]::-webkit-input-placeholder,[type=datetime]::-webkit-input-placeholder,[type=email]::-webkit-input-placeholder,[type=month]::-webkit-input-placeholder,[type=number]::-webkit-input-placeholder,[type=password]::-webkit-input-placeholder,[type=search]::-webkit-input-placeholder,[type=tel]::-webkit-input-placeholder,[type=text]::-webkit-input-placeholder,[type=time]::-webkit-input-placeholder,[type=url]::-webkit-input-placeholder,[type=week]::-webkit-input-placeholder,select::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#666;opacity:1}[type=color]::-ms-input-placeholder,[type=datatime-local]::-ms-input-placeholder,[type=date]::-ms-input-placeholder,[type=datetime]::-ms-input-placeholder,[type=email]::-ms-input-placeholder,[type=month]::-ms-input-placeholder,[type=number]::-ms-input-placeholder,[type=password]::-ms-input-placeholder,[type=search]::-ms-input-placeholder,[type=tel]::-ms-input-placeholder,[type=text]::-ms-input-placeholder,[type=time]::-ms-input-placeholder,[type=url]::-ms-input-placeholder,[type=week]::-ms-input-placeholder,select::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#666;opacity:1}[type=color]::placeholder,[type=datatime-local]::placeholder,[type=date]::placeholder,[type=datetime]::placeholder,[type=email]::placeholder,[type=month]::placeholder,[type=number]::placeholder,[type=password]::placeholder,[type=search]::placeholder,[type=tel]::placeholder,[type=text]::placeholder,[type=time]::placeholder,[type=url]::placeholder,[type=week]::placeholder,select::placeholder,textarea::placeholder{color:#666;opacity:1}.has-error[type=color],.has-error[type=datatime-local],.has-error[type=date],.has-error[type=datetime],.has-error[type=email],.has-error[type=month],.has-error[type=number],.has-error[type=password],.has-error[type=search],.has-error[type=tel],.has-error[type=text],.has-error[type=time],.has-error[type=url],.has-error[type=week],select.has-error,textarea.has-error{border:1px solid #c7162b}.has-caution[type=color],.has-caution[type=datatime-local],.has-caution[type=date],.has-caution[type=datetime],.has-caution[type=email],.has-caution[type=month],.has-caution[type=number],.has-caution[type=password],.has-caution[type=search],.has-caution[type=tel],.has-caution[type=text],.has-caution[type=time],.has-caution[type=url],.has-caution[type=week],.has-warning[type=color],.has-warning[type=datatime-local],.has-warning[type=date],.has-warning[type=datetime],.has-warning[type=email],.has-warning[type=month],.has-warning[type=number],.has-warning[type=password],.has-warning[type=search],.has-warning[type=tel],.has-warning[type=text],.has-warning[type=time],.has-warning[type=url],.has-warning[type=week],select.has-caution,select.has-warning,textarea.has-caution,textarea.has-warning{border:1px solid #f99b11}.has-success[type=color],.has-success[type=datatime-local],.has-success[type=date],.has-success[type=datetime],.has-success[type=email],.has-success[type=month],.has-success[type=number],.has-success[type=password],.has-success[type=search],.has-success[type=tel],.has-success[type=text],.has-success[type=time],.has-success[type=url],.has-success[type=week],select.has-success,textarea.has-success{border:1px solid #0e8420}.has-information[type=color],.has-information[type=datatime-local],.has-information[type=date],.has-information[type=datetime],.has-information[type=email],.has-information[type=month],.has-information[type=number],.has-information[type=password],.has-information[type=search],.has-information[type=tel],.has-information[type=text],.has-information[type=time],.has-information[type=url],.has-information[type=week],select.has-information,textarea.has-information{border:1px solid #335280}[type=checkbox],[type=radio]{float:left;height:1.5rem;margin-bottom:0;margin-right:1.5rem;margin-top:0;padding:0;vertical-align:middle;width:auto}:focus[type=checkbox],:focus[type=radio]{outline:1px solid #19b6ee;outline-offset:0}.p-switch:disabled+.p-switch__slider,[disabled=disabled][type=checkbox]+label,[disabled=disabled][type=color],[disabled=disabled][type=datatime-local],[disabled=disabled][type=date],[disabled=disabled][type=datetime],[disabled=disabled][type=email],[disabled=disabled][type=month],[disabled=disabled][type=number],[disabled=disabled][type=password],[disabled=disabled][type=radio]+label,[disabled=disabled][type=search],[disabled=disabled][type=tel],[disabled=disabled][type=text],[disabled=disabled][type=time],[disabled=disabled][type=url],[disabled=disabled][type=week],[disabled][type=checkbox]+label,[disabled][type=color],[disabled][type=datatime-local],[disabled][type=date],[disabled][type=datetime],[disabled][type=email],[disabled][type=month],[disabled][type=number],[disabled][type=password],[disabled][type=radio]+label,[disabled][type=search],[disabled][type=tel],[disabled][type=text],[disabled][type=time],[disabled][type=url],[disabled][type=week],select[disabled=disabled],select[disabled],textarea[disabled=disabled],textarea[disabled]{cursor:not-allowed;opacity:.5}[readonly=readonly][type=color],[readonly=readonly][type=datatime-local],[readonly=readonly][type=date],[readonly=readonly][type=datetime],[readonly=readonly][type=email],[readonly=readonly][type=month],[readonly=readonly][type=number],[readonly=readonly][type=password],[readonly=readonly][type=search],[readonly=readonly][type=tel],[readonly=readonly][type=text],[readonly=readonly][type=time],[readonly=readonly][type=url],[readonly=readonly][type=week],[readonly][type=color],[readonly][type=datatime-local],[readonly][type=date],[readonly][type=datetime],[readonly][type=email],[readonly][type=month],[readonly][type=number],[readonly][type=password],[readonly][type=search],[readonly][type=tel],[readonly][type=text],[readonly][type=time],[readonly][type=url],[readonly][type=week],select[readonly=readonly],select[readonly],textarea[readonly=readonly],textarea[readonly]{color:#cdcdcd;cursor:default}:active[readonly=readonly][type=color],:active[readonly=readonly][type=datatime-local],:active[readonly=readonly][type=date],:active[readonly=readonly][type=datetime],:active[readonly=readonly][type=email],:active[readonly=readonly][type=month],:active[readonly=readonly][type=number],:active[readonly=readonly][type=password],:active[readonly=readonly][type=search],:active[readonly=readonly][type=tel],:active[readonly=readonly][type=text],:active[readonly=readonly][type=time],:active[readonly=readonly][type=url],:active[readonly=readonly][type=week],:active[readonly][type=color],:active[readonly][type=datatime-local],:active[readonly][type=date],:active[readonly][type=datetime],:active[readonly][type=email],:active[readonly][type=month],:active[readonly][type=number],:active[readonly][type=password],:active[readonly][type=search],:active[readonly][type=tel],:active[readonly][type=text],:active[readonly][type=time],:active[readonly][type=url],:active[readonly][type=week],:hover[readonly=readonly][type=color],:hover[readonly=readonly][type=datatime-local],:hover[readonly=readonly][type=date],:hover[readonly=readonly][type=datetime],:hover[readonly=readonly][type=email],:hover[readonly=readonly][type=month],:hover[readonly=readonly][type=number],:hover[readonly=readonly][type=password],:hover[readonly=readonly][type=search],:hover[readonly=readonly][type=tel],:hover[readonly=readonly][type=text],:hover[readonly=readonly][type=time],:hover[readonly=readonly][type=url],:hover[readonly=readonly][type=week],:hover[readonly][type=color],:hover[readonly][type=datatime-local],:hover[readonly][type=date],:hover[readonly][type=datetime],:hover[readonly][type=email],:hover[readonly][type=month],:hover[readonly][type=number],:hover[readonly][type=password],:hover[readonly][type=search],:hover[readonly][type=tel],:hover[readonly][type=text],:hover[readonly][type=time],:hover[readonly][type=url],:hover[readonly][type=week],select:active[readonly=readonly],select:active[readonly],select:hover[readonly=readonly],select:hover[readonly],textarea:active[readonly=readonly],textarea:active[readonly],textarea:hover[readonly=readonly],textarea:hover[readonly]{border-color:#666;outline:none}label{cursor:pointer;display:block;margin-bottom:.6rem}label.has-error{color:#c7162b}label.has-caution,label.has-warning{color:#f99b11}label.has-success{color:#0e8420}label.has-information{color:#335280}[type=file]{width:100%}[type=file]:focus{outline:1px solid #19b6ee;outline-offset:2px}[type=reset]{display:none}[type=search]{-moz-appearance:none;-webkit-appearance:none;appearance:none;border-radius:0}[type=search]::-webkit-search-results-decoration{display:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button;cursor:pointer}[type=checkbox]+label,[type=radio]+label{vertical-align:middle;width:100%}[type=radio]{margin-top:.4rem}[type=submit]{background-color:#0e8420;border-color:#0e8420;color:#fff}[type=submit]:visited{color:#fff}[type=submit]:active,[type=submit]:hover{background-color:#095615;border-color:#095615}[type=submit].is--disabled:active,[type=submit].is--disabled:hover,[type=submit]:disabled:active,[type=submit]:disabled:hover{background-color:#0e8420;border-color:#0e8420}[type=submit] .p-link--external{color:currentColor}select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjRweCIgd2lkdGg9IjEwcHgiIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAxMCA0Ij4gPHRpdGxlPmFjY29yZGlvbi1vcGVuPC90aXRsZT4gPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+IDxnIGlkPSJmaWx0ZXItcGFuZWwiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSIgZmlsbD0ibm9uZSI+ICA8ZyBpZD0iYWNjb3JkaW9uLW9wZW4iIGZpbGw9IiM4ODgiIHNrZXRjaDp0eXBlPSJNU0FydGJvYXJkR3JvdXAiPiAgIDxwYXRoIGlkPSJjaGV2cm9uIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIiBkPSJtNi4zNjEgMC44NjIzYzAuNTE4IDAuMzY1IDEuMDUyIDAuNzc4MSAxLjYwMSAxLjIzOCAwLjU0OSAwLjQ1ODUgMS4wODkgMC45NTE4IDEuNjIxIDEuNDc3MiAwLjE0MiAwLjE0MDQgMC4yODEgMC4yODIxIDAuNDE1IDAuNDIyNWgtMS41NDFjLTAuMzA0LTAuMjg4OC0wLjYyLTAuNTcwOS0wLjk0Ny0wLjg0NjMtMC4xMzc5LTAuMTE2MS0wLjI3NjgtMC4yMjk3LTAuNDE2OC0wLjM0MDgtMC4xNjM2LTAuMTI5Ny0wLjMyODYtMC4yNTU4LTAuNDk1NC0wLjM3ODMtMC4wODUyLTAuMDYyNS0wLjE3MDgtMC4xMjQxLTAuMjU2OC0wLjE4NDYtMC4zOTctMC4yODIxLTAuOTM1LTAuNjI1Ny0xLjMxNS0wLjg0NzZoLTAuMDU0Yy0wLjM4IDAuMjIxOS0wLjkxOCAwLjU2NTUtMS4zMTUgMC44NDc2LTAuMzk4IDAuMjgwNy0wLjc4OCAwLjU4MjktMS4xNjkgMC45MDM3LTAuMzI3IDAuMjc1NC0wLjY0MyAwLjU1NzUtMC45NDcgMC44NDYzaC0xLjU0MWMwLjEzNS0wLjE0MDQgMC4yNzMtMC4yODIxIDAuNDE1LTAuNDIyNSAwLjUzMi0wLjUyNTQgMS4wNzItMS4wMTg3IDEuNjIxLTEuNDc3MiAwLjU1LTAuNDU5OSAxLjA4My0wLjg3MyAxLjYwMS0xLjIzOCAwLjUxOS0wLjM2NDk3IDAuOTczLTAuNjUyNDEgMS4zNjItMC44NjIzIDAuMzkgMC4yMDk4OSAwLjg0NCAwLjQ5NzMzIDEuMzYyIDAuODYyM3oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuOTk5IDIpIHJvdGF0ZSgxODApIHRyYW5zbGF0ZSgtNC45OTkgLTIpIi8+ICA8L2c+IDwvZz48L3N2Zz4=") no-repeat;background-position:right .5rem center;background-size:.75rem;color:#111;min-height:24px;padding-right:1.5rem;text-indent:.01px;text-overflow:""}select:hover{cursor:pointer}select[multiple],select[size]{background-image:none;height:auto}select[multiple] option,select[size] option{font-weight:300;line-height:.875rem;padding:.5rem}textarea{margin-bottom:.7rem;overflow:auto;vertical-align:top}fieldset{background-color:#f7f7f7;border:0;border-radius:.125rem;color:#111}label{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}input[type=checkbox]{opacity:0;position:absolute}input[type=checkbox]+label{margin-bottom:1rem;margin-top:-.4rem;padding-left:2rem;position:relative}input[type=checkbox]+label:focus{outline:1px solid #19b6ee;outline-offset:2px}input[type=checkbox]+label:before{border:1px solid #cdcdcd;border-radius:.125rem;content:"";display:inline-block;height:1rem;left:0;top:.65rem;width:1rem}input[type=checkbox]+label:after{border-bottom:2px solid;border-left:2px solid;content:none;display:inline-block;height:7px;left:2px;top:12px;transform:rotate(-45deg);width:11px}input[type=checkbox]+label:after,input[type=checkbox]+label:before{display:inline-block;position:absolute}input[type=checkbox]:checked+label:after{content:""}hr{background-color:#cdcdcd;border:0;height:1px;margin-bottom:.9375rem;margin-top:0;position:relative;width:100%}hr+p{margin-top:-.5rem}.row.is-bordered{position:relative}.row.is-bordered:before{background:#cdcdcd;content:"";height:1px;margin-bottom:.9375rem;width:100%}a{color:#007aa6;text-decoration:none}a:focus{outline:thin dotted #cdcdcd}a:hover{cursor:pointer;text-decoration:underline}a:visited{color:#005573}li>ol,li>ul{margin-bottom:0;padding-top:0}li>ol>li:last-of-type,li>ul>li:last-of-type{padding-bottom:0}ol,ul{margin-bottom:1.5rem;margin-left:1rem;margin-top:0;padding-left:1rem}nav ol,nav ul{list-style:none;list-style-image:none}dl,li{margin:0;padding:0}dd{margin-left:1rem}dt{border-top:1px dotted #666}dt:first-of-type{border-top:0}img{border:0;border-radius:.125rem}svg:not(:root){overflow:hidden}figure{margin-bottom:1.5rem;margin-left:0;width:100%}figure caption,figure figcaption{display:block;font-style:italic;margin-top:.25rem;width:100%}audio,canvas,embed,iframe,object,video{display:block;margin:0 auto 20px;max-width:100%}audio:not([controls]){display:none;height:0}[hidden]{display:none}.p-card,.p-card--highlighted,.p-card--muted,.p-contextual-menu__dropdown,.p-modal__dialog,.p-notification,.p-notification--caution,.p-notification--information,.p-notification--negative,.p-notification--positive,.p-switch__slider,.p-switch__slider:before{border-radius:.125rem}.p-card--highlighted,.p-card--muted,.p-contextual-menu__dropdown,.p-modal__dialog,.p-notification,.p-notification--caution,.p-notification--information,.p-notification--negative,.p-notification--positive,.p-switch__slider:before{box-shadow:0 1px 5px 1px hsla(0,0%,7%,.2)}.p-card{border:.0625rem solid #cdcdcd}.p-card--muted{background-color:#f7f7f7;color:#111}.p-card,.p-card--highlighted,.p-contextual-menu__dropdown,.p-modal__dialog,.p-notification,.p-notification--caution,.p-notification--information,.p-notification--negative,.p-notification--positive{background-color:#fff;color:#111;margin-bottom:1.5rem;overflow:auto;padding:1rem}.p-tabs__list:after{background-color:#cdcdcd;content:"";height:.0625rem;left:0;position:absolute;right:0;bottom:0}.p-icon--canonical,.p-icon--chevron,.p-icon--close,.p-icon--code,.p-icon--collapse,.p-icon--contextual-menu,.p-icon--copy,.p-icon--delete,.p-icon--error,.p-icon--expand,.p-icon--external-link,.p-icon--facebook,.p-icon--google,.p-icon--help,.p-icon--information,.p-icon--instagram,.p-icon--linkedin,.p-icon--menu,.p-icon--minus,.p-icon--plus,.p-icon--question,.p-icon--search,.p-icon--share,.p-icon--spinner,.p-icon--success,.p-icon--twitter,.p-icon--ubuntu,.p-icon--user,.p-icon--warning,.p-icon--youtube,.p-switch__slider span,.u-hide-text,button.p-switch span{overflow:hidden;text-indent:calc(100% + 10rem);white-space:nowrap}.p-inline-images:after,.p-list-step:after,.p-list:after,.p-stepped-list--detailed:after,.u-clearfix:after{clear:both;content:"";display:block}table{border:0;border-collapse:collapse;margin-bottom:1.5rem;overflow-x:auto;table-layout:fixed;width:100%}td,th{font-weight:300;padding-left:0;text-align:left;text-overflow:ellipsis}@media screen and (min-width:768px){td:not(:last-child),th:not(:last-child){padding-right:1rem}}thead tr{border-bottom:1px solid #111;vertical-align:top}tbody tr:not(:first-child){border-top:1px solid #cdcdcd}.p-accordion__tab,.p-navigation--sidebar .sidebar__link,td,th{padding-bottom:.4375rem;padding-top:.5rem}@font-face{font-family:Ubuntu;font-style:normal;font-weight:300;src:url(https://assets.ubuntu.com/v1/e8c07df6-Ubuntu-L_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/8619add2-Ubuntu-L_W.woff) format("woff")}@font-face{font-family:Ubuntu;font-style:normal;font-weight:400;src:url(https://assets.ubuntu.com/v1/fff37993-Ubuntu-R_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/7af50859-Ubuntu-R_W.woff) format("woff")}@font-face{font-family:Ubuntu;font-style:italic;font-weight:300;src:url(https://assets.ubuntu.com/v1/f8097dea-Ubuntu-LI_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/8be89d02-Ubuntu-LI_W.woff) format("woff")}@font-face{font-family:Ubuntu;font-style:italic;font-weight:400;src:url(https://assets.ubuntu.com/v1/fca66073-ubuntu-ri-webfont.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/f0898c72-ubuntu-ri-webfont.woff) format("woff")}@font-face{font-family:Ubuntu;font-style:normal;font-weight:100;src:url(https://assets.ubuntu.com/v1/7f100985-Ubuntu-Th_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/502cc3a1-Ubuntu-Th_W.woff) format("woff")}@font-face{font-family:Ubuntu Mono;font-style:normal;font-weight:300;src:url(https://assets.ubuntu.com/v1/fdd692b9-UbuntuMono-R_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/85edb898-UbuntuMono-R_W.woff) format("woff")}@font-face{font-family:Ubuntu Mono;font-style:normal;font-weight:400;src:url(https://assets.ubuntu.com/v1/fdd692b9-UbuntuMono-R_W.woff2) format("woff2"),url(https://assets.ubuntu.com/v1/85edb898-UbuntuMono-R_W.woff) format("woff")}html{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#111;font-size:16px;font-smoothing:subpixel-antialiased;font-weight:300;line-height:1.5rem}[class^=p-heading--],h1,h2,h3,h4,h5,h6,html{font-family:Ubuntu,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}p:empty{line-height:0;margin:0;padding:0}button,input,select,textarea{font-family:Ubuntu,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}blockquote{margin-bottom:0;margin-left:0;margin-top:0;overflow:auto;padding-left:1.5rem}blockquote>p{font-style:italic}blockquote>cite{font-style:normal}small.dense{margin-bottom:1.2rem}sub,sup{line-height:0;position:relative;vertical-align:baseline}abbr[title]{border-bottom:.1em dotted;cursor:pointer;text-decoration:none}@media (max-width:768px){.p-heading--four+p,.p-heading--three+p,h3+p,h4+p{margin-top:-.5rem}}.p-heading--five+.p-heading--five,.p-heading--five+.p-heading--six,.p-heading--five+h5,.p-heading--five+h6,.p-heading--five+p,.p-heading--six+.p-heading--five,.p-heading--six+.p-heading--six,.p-heading--six+h5,.p-heading--six+h6,.p-heading--six+p,h5+.p-heading--five,h5+.p-heading--six,h5+h5,h5+h6,h5+p,h6+.p-heading--five,h6+.p-heading--six,h6+h5,h6+h6,h6+p{margin-top:0}.p-muted-heading+.p-heading--five,.p-muted-heading+.p-heading--six,.p-muted-heading+h5,.p-muted-heading+h6,.p-muted-heading+p{margin-top:-.5rem}.p-heading--five+p:not(.p-muted-heading),.p-heading--six+p:not(.p-muted-heading),h5+p:not(.p-muted-heading),h6+p:not(.p-muted-heading),p+p:not(.p-muted-heading){margin-top:-1rem}.p-heading-6+.p-heading--one,.p-heading-6+.p-heading--two,.p-heading-6+h1,.p-heading-6+h2,.p-heading--five+.p-heading--one,.p-heading--five+.p-heading--two,.p-heading--five+h1,.p-heading--five+h2,h5+.p-heading--one,h5+.p-heading--two,h5+h1,h5+h2,h6+.p-heading--one,h6+.p-heading--two,h6+h1,h6+h2,p+.p-heading--one,p+.p-heading--two,p+h1,p+h2,ul+.p-heading--one,ul+.p-heading--two,ul+h1,ul+h2{padding-top:2.2rem}@media (max-width:768px){.p-heading-6+.p-heading--one,.p-heading-6+.p-heading--two,.p-heading-6+h1,.p-heading-6+h2,.p-heading--five+.p-heading--one,.p-heading--five+.p-heading--two,.p-heading--five+h1,.p-heading--five+h2,h5+.p-heading--one,h5+.p-heading--two,h5+h1,h5+h2,h6+.p-heading--one,h6+.p-heading--two,h6+h1,h6+h2,p+.p-heading--one,p+.p-heading--two,p+h1,p+h2,ul+.p-heading--one,ul+.p-heading--two,ul+h1,ul+h2{padding-top:1.7rem}}p+.p-heading--two,p+h2{padding-top:2.2rem}@media (max-width:768px){p+.p-heading--two,p+h2{padding-top:1.6rem}}p+.p-heading--three,p+h3{padding-top:2.1rem}@media (max-width:768px){p+.p-heading--three,p+h3{padding-top:1.5rem}}p+.p-heading--four,p+h4{padding-top:1.55rem}p+.p-heading--five,p+.p-heading--six,p+h5,p+h6{padding-top:1.4rem}p+.p-muted-heading{padding-top:1rem}.p-heading--one,.p-media-object--large .p-media-object__title,h1{max-width:20em;font-size:2.91029rem;font-style:normal;font-weight:100;line-height:3.5rem;margin-bottom:2.3rem;margin-top:0;padding-top:.2rem}@media (max-width:768px){.p-heading--one,.p-media-object--large .p-media-object__title,h1{font-size:2.22819rem;line-height:3rem;margin-bottom:1.8rem;padding-top:.2rem}}.p-heading--two,h2{max-width:20em;font-size:2.22819rem;font-style:normal;font-weight:300;line-height:3rem;margin-bottom:1.8rem;margin-top:0;padding-top:.2rem}@media (max-width:768px){.p-heading--two,h2{font-size:1.83274rem;line-height:2.5rem;margin-bottom:1.4rem;padding-top:.1rem}}.p-heading--three,.p-list-step>li:before,.p-navigation--sidebar .p-navigation__logo,.p-stepped-list--detailed>li:before,h3{max-width:25em;font-size:1.70596rem;font-style:normal;font-weight:300;line-height:2.5rem;margin-bottom:1.4rem;margin-top:0;padding-top:.1rem}@media (max-width:768px){.p-heading--three,.p-list-step>li:before,.p-navigation--sidebar .p-navigation__logo,.p-stepped-list--detailed>li:before,h3{font-size:1.49271rem;line-height:2rem;margin-bottom:1rem;padding-top:0}}.p-heading--four,.p-matrix__title,.p-media-object__title,.p-modal__title,.p-pull-quote>p,.p-pull-quote__citation,h4{max-width:25em;font-size:1.30612rem;font-style:normal;font-weight:300;line-height:2rem;margin-bottom:.95rem;margin-top:0;padding-top:.05rem}@media (max-width:768px){.p-heading--four,.p-matrix__title,.p-media-object__title,.p-modal__title,.p-pull-quote>p,.p-pull-quote__citation,h4{font-size:1.22176rem;line-height:1.5rem;margin-bottom:.7rem;padding-top:.3rem}}.p-heading--five,h5{font-size:1rem;font-style:normal;font-weight:500}.p-heading--six,h6{font-size:1rem;font-style:italic;font-weight:300}.p-breadcrumbs__item,.p-footer__link,.p-heading--five,.p-heading--six,.p-navigation--sidebar .p-navigation__tagline,.p-notification__response,cite,dd,dt,h5,h6,label,p{line-height:1.5rem;margin-bottom:.1rem;margin-top:0;padding-top:.4rem}.p-footer__link,.p-heading--five,.p-heading--six,dd,h5,h6,p{margin-bottom:1.1rem}.p-form-help-text,.p-form-validation__message,.p-media-object__meta-list-item,.p-media-object__meta-list-item--date,.p-media-object__meta-list-item--location,.p-media-object__meta-list-item--venue,.p-muted-heading,.p-table--mobile-card tbody th:before,.p-table--mobile-card td:before,.p-tooltip__message,small,thead th{font-size:.875rem;line-height:1.25rem;margin-bottom:.7rem;padding-top:.05rem}.p-muted-heading,.p-table--mobile-card tbody th:before,.p-table--mobile-card td:before,thead th{color:#666;margin-bottom:.5rem;margin-top:0;text-transform:uppercase}.measure--p,.p-heading--five,.p-heading--six,h5,h6,p{max-width:38em}.p-notification__status,dt,strong{font-weight:400}.p-navigation{background-color:#fff;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;position:relative}@media (max-width:768px){.p-navigation{-ms-flex-direction:column;flex-direction:column}}.p-navigation a,.p-navigation a:focus,.p-navigation a:hover,.p-navigation a:visited{color:#111;text-decoration:none}.p-navigation:after{background:#cdcdcd;bottom:0;content:"";height:.0625rem;left:0;position:absolute;right:0}.p-navigation__banner{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-pack:justify;justify-content:space-between}.p-navigation__image{-ms-flex-item-align:center;align-self:center;max-height:2rem;min-height:1.5rem}.p-navigation__link>a{display:block;margin-bottom:0;position:relative}@media (max-width:768px){.p-navigation__link>a{padding:.75rem 1.5rem}.p-navigation__link>a:before{background:#cdcdcd;content:"";height:.0625rem;left:0;position:absolute;right:0;top:0}}@media (min-width:769px){.p-navigation__link>a{border-left:1px solid #cdcdcd;padding:.75rem 1rem}.p-navigation__link>a:before{background:#cdcdcd;bottom:0;content:"";height:.0625rem;left:0;position:absolute;right:0}}.p-navigation__link>a:hover{background-color:#f7f7f7}@media (min-width:769px){.p-navigation__link.is-selected>a{position:relative}.p-navigation__link.is-selected>a:before{bottom:0;background-color:#666;content:"";position:absolute;height:.1875rem;width:auto;left:-1px;right:-1px;z-index:1}}.p-navigation__links{list-style:none;margin:0;padding:0}@media (max-width:768px){.p-navigation__links{margin-top:-1px}}@media (min-width:769px){.p-navigation__links{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}.p-navigation__logo{-ms-flex:0 0 auto;flex:0 0 auto;height:3rem;margin:0 1rem 0 1.5rem}.p-navigation__logo,.p-navigation__logo .p-navigation__link{display:-ms-flexbox;display:flex}.p-navigation__nav{display:none}@media (max-width:768px){.p-navigation__nav{-ms-flex-direction:column;flex-direction:column}}@media (min-width:769px){.p-navigation__nav{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;width:100%}}.p-navigation .p-search-box{min-width:10em}@media (max-width:768px){.p-navigation .p-search-box{-ms-flex:1 0 auto;flex:1 0 auto;margin:-1px 1.5rem .5rem;-ms-flex-order:-1;order:-1}}@media (min-width:769px){.p-navigation .p-search-box{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;margin:.35rem 1rem auto auto;max-width:20rem;-ms-flex-order:1;order:1}}.p-navigation .row,.p-navigation__row{display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;width:100%}@media (max-width:768px){.p-navigation .row,.p-navigation__row{-ms-flex-direction:column;flex-direction:column}}.p-navigation:target .p-navigation__nav{display:-ms-flexbox;display:flex}.p-navigation:target .p-navigation__toggle--open{display:none}@media (max-width:768px){.p-navigation:target .p-navigation__toggle--close{display:block}}.p-navigation__toggle--close,.p-navigation__toggle--open{display:none;margin:0 1.5rem auto 1rem;padding:.75rem 0}@media (max-width:768px){.p-navigation__toggle--open{display:block}}.p-navigation .u-image-position .u-image-position--right{-ms-flex-order:2;order:2;position:relative;right:unset}.p-navigation--sidebar{background-color:#fff;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;position:relative;-ms-flex-direction:column;flex-direction:column;height:auto}@media (max-width:768px){.p-navigation--sidebar{-ms-flex-direction:column;flex-direction:column}}.p-navigation--sidebar a,.p-navigation--sidebar a:focus,.p-navigation--sidebar a:hover,.p-navigation--sidebar a:visited{color:#111;text-decoration:none}.p-navigation--sidebar:after{background:#cdcdcd;bottom:0;content:"";height:.0625rem;left:0;position:absolute;right:0}.p-navigation--sidebar__banner{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-pack:justify;justify-content:space-between}.p-navigation--sidebar__image{-ms-flex-item-align:center;align-self:center;max-height:2rem;min-height:1.5rem}.p-navigation--sidebar__link>a{display:block;margin-bottom:0;position:relative}@media (max-width:768px){.p-navigation--sidebar__link>a{padding:.75rem 1.5rem}.p-navigation--sidebar__link>a:before{background:#cdcdcd;content:"";height:.0625rem;left:0;position:absolute;right:0;top:0}}@media (min-width:769px){.p-navigation--sidebar__link>a{border-left:1px solid #cdcdcd;padding:.75rem 1rem}.p-navigation--sidebar__link>a:before{background:#cdcdcd;bottom:0;content:"";height:.0625rem;left:0;position:absolute;right:0}}.p-navigation--sidebar__link>a:hover{background-color:#f7f7f7}@media (min-width:769px){.p-navigation--sidebar__link.is-selected>a{position:relative}.p-navigation--sidebar__link.is-selected>a:before{bottom:0;background-color:#666;content:"";position:absolute;height:.1875rem;width:auto;left:-1px;right:-1px;z-index:1}}.p-navigation--sidebar__links{list-style:none;margin:0;padding:0}@media (max-width:768px){.p-navigation--sidebar__links{margin-top:-1px}}@media (min-width:769px){.p-navigation--sidebar__links{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}.p-navigation--sidebar__logo{-ms-flex:0 0 auto;flex:0 0 auto;height:3rem;margin:0 1rem 0 1.5rem}.p-navigation--sidebar__logo,.p-navigation--sidebar__logo .p-navigation__link{display:-ms-flexbox;display:flex}.p-navigation--sidebar__nav{display:none}@media (max-width:768px){.p-navigation--sidebar__nav{-ms-flex-direction:column;flex-direction:column}}@media (min-width:769px){.p-navigation--sidebar__nav{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;width:100%}}.p-navigation--sidebar .p-search-box{min-width:10em}@media (max-width:768px){.p-navigation--sidebar .p-search-box{-ms-flex:1 0 auto;flex:1 0 auto;margin:-1px 1.5rem .5rem;-ms-flex-order:-1;order:-1}}@media (min-width:769px){.p-navigation--sidebar .p-search-box{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;margin:.35rem 1rem auto auto;max-width:20rem;-ms-flex-order:1;order:1}}.p-navigation--sidebar .row,.p-navigation--sidebar__row{display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;width:100%}@media (max-width:768px){.p-navigation--sidebar .row,.p-navigation--sidebar__row{-ms-flex-direction:column;flex-direction:column}}.p-navigation--sidebar:target .p-navigation__nav{display:-ms-flexbox;display:flex}.p-navigation--sidebar:target .p-navigation__toggle--open{display:none}@media (max-width:768px){.p-navigation--sidebar:target .p-navigation__toggle--close{display:block}}.p-navigation--sidebar__toggle--close,.p-navigation--sidebar__toggle--open{display:none;margin:0 1.5rem auto 1rem;padding:.75rem 0}@media (max-width:768px){.p-navigation--sidebar__toggle--open{display:block}}.p-navigation--sidebar .u-image-position .u-image-position--right{-ms-flex-order:2;order:2;position:relative;right:unset}.p-navigation--sidebar .p-navigation__banner .row{-ms-flex-direction:row;flex-direction:row}.p-navigation--sidebar .sidebar__cta{margin-top:0}.p-navigation--sidebar .sidebar__cta .p-inline-list{display:inline-block}.p-navigation--sidebar .sidebar__cta [class^=p-icon]{cursor:pointer}@media (min-width:769px){.p-navigation--sidebar .sidebar__cta{display:none}}.p-navigation--sidebar .sidebar__content{background:#fff;width:100%}@media (min-width:769px){.p-navigation--sidebar .sidebar__content{display:block!important}}.p-navigation--sidebar .sidebar__link{color:#111;display:block;position:relative}.p-navigation--sidebar .sidebar__link:hover{color:#007aa6}.p-navigation--sidebar .sidebar__link:focus{outline:0}.p-navigation--sidebar .p-navigation__logo{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:0}.p-navigation--sidebar .p-navigation__logo .p-navigation__image{height:24px;width:auto}.p-navigation--sidebar .p-navigation__tagline{display:block}.p-navigation--sidebar .is-selected{font-weight:700}.p-navigation--sidebar .sidebar__first-level{padding-left:0}.p-navigation--sidebar .sidebar__third-level{background-color:#666;margin-right:-4rem;padding-left:4rem;position:relative;right:3rem}.p-navigation--sidebar .sidebar__second-level,.p-navigation--sidebar .sidebar__third-level{display:none;list-style:none;margin-left:0;padding-bottom:.25rem;padding-top:.25rem}.p-navigation--sidebar .sidebar__second-level .is-deepest-level,.p-navigation--sidebar .sidebar__third-level .is-deepest-level{background-color:#f7f7f7}.p-navigation--sidebar .p-icon--minus,.p-navigation--sidebar .p-icon--plus{perspective:800px;perspective-origin:50% 100px;position:absolute;right:1rem;top:.5rem;transition:all .5s ease-in-out}.p-navigation--sidebar .p-icon--minus{display:none}.p-navigation--sidebar .is-selected .p-icon--minus{display:block}.p-navigation--sidebar .is-selected .p-icon--plus{display:none}.p-navigation--sidebar .is-selected+.sidebar__second-level,.p-navigation--sidebar .is-selected+.sidebar__third-level{display:block}.p-accordion__list{list-style-type:none;margin:0 0 1.5rem;padding:0}.p-accordion__group:not(:last-child) .p-accordion__tab{border-bottom:1px solid #cdcdcd}.p-accordion__tab{background-position:top .84375rem right 1rem;background-repeat:no-repeat;background-color:inherit;border:0;border-radius:0;margin-bottom:0;padding-left:1rem;padding-right:1rem;text-align:left;transition-duration:0s;width:100%;z-index:2}.p-accordion__tab[aria-expanded=true]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cpath d='M0 5V4h9v1z' fill='%23666' fill-rule='evenodd'/%3E%3C/svg%3E");background-size:.75rem}.p-accordion__tab[aria-expanded=false]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cg fill='%23666' fill-rule='evenodd'%3E%3Cpath d='M4 0h1v9H4z'/%3E%3Cpath d='M0 5V4h9v1z'/%3E%3C/g%3E%3C/svg%3E");background-size:.75rem}.p-accordion__tab:focus{outline:1px solid #007aa6;outline-offset:2px}.p-accordion__panel{border-bottom:1px solid #cdcdcd;margin:0;overflow:auto;padding-left:2rem}.p-accordion__panel[aria-hidden=true]{display:none}.p-accordion p{margin-bottom:.6rem}.p-aside{border-top:1px solid #cdcdcd;font-size:.875rem;padding:0 1.5rem}@media (min-width:768px){.p-aside{border-left:1px solid #cdcdcd;border-top:0;padding:0 1rem}}.p-aside__header{color:#666;font-size:1rem;line-height:1.5;margin-bottom:1rem;text-transform:uppercase}.p-aside__section{padding:1rem 0}.p-aside__section:not(:last-child){border-bottom:1px dotted #cdcdcd}.p-aside__nav{list-style:none;margin:0;padding:0}.p-aside__nav .p-aside__link{border-bottom:0;color:#111;margin-bottom:.25rem}.p-aside__nav .p-aside__link:visited{color:#111}.p-aside__nav .p-aside__link:hover{color:#007aa6}.p-aside__nav .p-aside__link.is-active{font-weight:400;padding-left:.25rem}.p-breadcrumbs{list-style:none;margin:0;padding:0;width:100%}.p-breadcrumbs__item{display:inline-block;margin-bottom:.6rem}.p-breadcrumbs__item:not(:first-of-type){text-indent:1rem}.p-breadcrumbs__item:not(:first-of-type):before{content:"\203A";margin-left:-.75rem;margin-right:.5rem}.p-button{background-color:#fff;border-color:#cdcdcd}.p-button,.p-button:visited{color:#111}.p-button:active,.p-button:hover{background-color:#f7f7f7;border-color:#cdcdcd}.is--disabled.p-button:active,.is--disabled.p-button:hover,.p-button:disabled:active,.p-button:disabled:hover{background-color:#fff;border-color:#fff}.p-button .p-link--external{color:currentColor}.p-button--neutral{background-color:#fff;border-color:#cdcdcd;color:#111}.p-button--neutral:visited{color:#111}.p-button--neutral:active,.p-button--neutral:hover{background-color:#dedede;border-color:#cdcdcd}.is--disabled.p-button--neutral:active,.is--disabled.p-button--neutral:hover,.p-button--neutral:disabled:active,.p-button--neutral:disabled:hover{background-color:transparent;border-color:#cdcdcd}.p-button--neutral .p-link--external{color:currentColor}.p-button--brand{background-color:#333;border-color:#333;color:#fff}.p-button--brand:visited{color:#fff}.p-button--brand:active,.p-button--brand:hover{background-color:#1a1a1a;border-color:#1a1a1a}.is--disabled.p-button--brand:active,.is--disabled.p-button--brand:hover,.p-button--brand:disabled:active,.p-button--brand:disabled:hover{background-color:#333;border-color:#333}.p-button--brand .p-link--external{color:currentColor}.p-button--positive{background-color:#0e8420;border-color:#0e8420;color:#fff}.p-button--positive:visited{color:#fff}.p-button--positive:active,.p-button--positive:hover{background-color:#095615;border-color:#095615}.is--disabled.p-button--positive:active,.is--disabled.p-button--positive:hover,.p-button--positive:disabled:active,.p-button--positive:disabled:hover{background-color:#0e8420;border-color:#0e8420}.p-button--positive .p-link--external{color:currentColor}.p-button--negative{background-color:#c7162b;border-color:#c7162b;color:#fff}.p-button--negative:visited{color:#fff}.p-button--negative:active,.p-button--negative:hover{background-color:#991121;border-color:#991121}.is--disabled.p-button--negative:active,.is--disabled.p-button--negative:hover,.p-button--negative:disabled:active,.p-button--negative:disabled:hover{background-color:#c7162b;border-color:#c7162b}.p-button--negative .p-link--external{color:currentColor}.p-button--base{background-color:transparent;border-color:transparent;color:#111}.p-button--base:visited{color:#111}.p-button--base:active,.p-button--base:hover{background-color:#f7f7f7;border-color:transparent}.is--disabled.p-button--base:active,.is--disabled.p-button--base:hover,.p-button--base:disabled:active,.p-button--base:disabled:hover{background-color:transparent;border-color:#cdcdcd}.p-button--base .p-link--external{color:currentColor}@media (min-width:768px){[class^=p-button].is-inline{margin-left:1rem;width:auto}}.p-card{padding:.9375rem}.p-card--overlay{background:hsla(0,0%,100%,.9);color:#111}.p-card--muted,.p-card--overlay{margin-bottom:1.5rem;overflow:auto;padding:1rem}.p-card__image{margin-bottom:1rem;vertical-align:top;width:100%}.p-card__thumbnail{max-height:2rem}.p-card__content{margin-top:-1rem}.p-card__header{border-bottom:1px solid #cdcdcd;margin-bottom:1rem}.p-card__header>.p-link--soft{display:inline-block;overflow:auto}.p-code-numbered{counter-reset:a;padding:0}.p-code-numbered .code-line{display:inline-block;padding:.5rem 1rem 0 5.5rem;position:relative;width:100%}.p-code-numbered .code-line:empty{display:block;min-height:2.5rem}.p-code-numbered .code-line:last-of-type,.p-code-numbered .code-line:last-of-type:before{padding-bottom:.5rem}.p-code-numbered .code-line:before{background:#fff;border-right:1px solid #cdcdcd;color:#666;content:counter(a);counter-increment:a;display:inline-block;height:100%;left:0;padding:.5rem 1rem 0;pointer-events:none;position:absolute;text-align:right;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:4.5rem}.p-code-snippet{background-color:#fff;border:1px solid #cdcdcd;border-radius:.125rem;color:#111;display:-ms-flexbox;display:flex;overflow:hidden;padding-left:.5rem;padding-right:.5rem;position:relative;transition:border .2s,background-color .2s;width:100%}.p-code-snippet+.p-code-snippet{margin-top:0}.p-code-snippet__input{background-color:transparent;background-image:url('data:image/svg+xml;utf8, ');background-position:0;background-repeat:no-repeat;border:0;box-shadow:none;color:#666;font-family:Ubuntu Mono,Consolas,Monaco,Courier,monospace;font-weight:300;line-height:1.5rem;margin-bottom:0;padding:0;padding-left:1.5rem;width:100%}.p-code-snippet__action{background-color:#f7f7f7;background-image:url('data:image/svg+xml;utf8, ');background-position:50%;background-repeat:no-repeat;background-size:1rem;border-radius:0;display:block;height:100%;margin-bottom:0;margin-top:0;padding:0;position:absolute;right:0;text-indent:-9999px;top:0;width:40px}.p-code-snippet__action,.p-code-snippet__action:hover{border-color:transparent;border-left:1px solid #cdcdcd}.p-contextual-menu,.p-contextual-menu--center,.p-contextual-menu--left{display:inline-block;margin:0;position:relative}.p-contextual-menu__dropdown{display:none;margin:0;max-width:21rem;min-width:10rem;padding:0;position:absolute;right:0;top:calc(100% + .25rem);z-index:1}.p-contextual-menu__dropdown:after,.p-contextual-menu__dropdown:before{border-bottom:8px solid hsla(0,0%,7%,.05);border-left:8px solid transparent;border-right:8px solid transparent;bottom:100%;content:"";height:0;pointer-events:none;position:absolute;right:.5rem;width:0}.p-contextual-menu__dropdown:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;right:.6rem}.p-contextual-menu__dropdown[aria-hidden=false]{display:block}.p-contextual-menu__group{display:block;padding:.125rem 0}.p-contextual-menu__group+.p-contextual-menu__group{border-top:1px solid #cdcdcd;margin:0}.p-contextual-menu__link{border:0;clear:both;color:#111;display:block;line-height:1.5rem;margin:0;overflow:hidden;padding:.125rem .5rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.p-contextual-menu__link:hover{background-color:#f7f7f7;text-decoration:none}.p-contextual-menu--left .p-contextual-menu__dropdown{left:0}.p-contextual-menu--left .p-contextual-menu__dropdown:after,.p-contextual-menu--left .p-contextual-menu__dropdown:before{left:.5rem;right:auto}.p-contextual-menu--left .p-contextual-menu__dropdown:after{left:.6rem}.p-contextual-menu--center .p-contextual-menu__dropdown{left:50%;transform:translateX(-50%)}.p-contextual-menu--center .p-contextual-menu__dropdown:after,.p-contextual-menu--center .p-contextual-menu__dropdown:before{left:50%;right:auto;transform:translateX(-50%)}@media (min-width:768px){.p-divider{display:-ms-flexbox;display:flex}}@media (max-width:768px){.p-divider__block{padding-bottom:1.5rem}.p-divider__block:not(:first-child){border-top:1px solid #cdcdcd;padding-top:.9375rem}}@media (min-width:768px){.p-divider__block{padding-right:1rem}.p-divider__block:not(:first-child):before{border-left:1px solid #cdcdcd;bottom:.5rem;content:"";left:-1.5rem;position:absolute;top:.5rem}.p-divider__block:last-child{padding-right:0}}.p-footer{border-top:1px solid #cdcdcd;position:relative}@media only screen and (max-width:1030px){.p-footer{padding-bottom:2rem;padding-top:2rem}}@media only screen and (min-width:1030px){.p-footer{padding-bottom:4rem;padding-top:4rem}}.p-footer__copy{margin-bottom:0}.p-footer__links{margin:0;padding:0}@media (min-width:768px){.p-footer__links{margin-top:0}}.p-footer__nav{margin-top:0}p+.p-footer__nav{margin-top:-1rem}.p-footer__item{display:block}@media (min-width:768px){.p-footer__item{display:inline-block}}.p-footer__item:last-child a:after{opacity:0}.p-footer__link{border-bottom:0;color:#111;display:inline-block}.p-footer__link:visited{color:#000}.p-footer__link:hover{color:#007aa6}@media (min-width:768px){.p-footer__link{margin-right:1rem;position:relative}.p-footer__link:after{content:"\00b7";display:inline-block;font-size:1.5rem;position:absolute;right:-.75rem;top:.4rem}}.p-footer__link:hover:after{color:#111}.p-form-help-text{color:#666}.p-form-validation .p-form-help-text,input+.p-form-help-text{margin-top:-.2rem}.p-form-validation{color:#111;position:relative}.p-form-validation .p-form-validation__input{background-position:calc(100% - .5rem) 50%;background-repeat:no-repeat}.p-form-validation .p-form-validation__icon{position:relative}.p-form-validation .p-form-validation__icon:after{position:absolute;right:.5rem;top:calc(50% - .25rem)}.p-form-help-text .p-form-validation__message,input+.p-form-validation__message{margin-top:-.2rem}.is-error .p-form-validation__input{background-image:url(https://assets.ubuntu.com/v1/4b0cd7fc-icon-error.svg);border-color:#c7162b}.is-success .p-form-validation__input{background-image:url(https://assets.ubuntu.com/v1/94949185-icon-success.svg);border-color:#0e8420}.is-caution .p-form-validation__input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath stroke-linejoin='round' fill='%23f99b11' transform='matrix(2.28 0 0 2.437 -2180.8 -490.52)' stroke='%23f99b11' stroke-width='.848' d='M963.07 207.03h-6.15l3.08-5.33z'/%3E%3Cpath d='M7 5v5h2V5H7zm0 6v2h2v-2H7z' fill='%23111'/%3E%3C/g%3E%3C/svg%3E");border-color:#f99b11}.p-form--stacked{width:100%}@media screen and (min-width:768px){.p-form--stacked .p-form__group{-ms-flex-align:baseline;align-items:baseline;display:-ms-flexbox;display:flex;-ms-flex-flow:wrap;flex-flow:wrap}.p-form--stacked .p-form__group+.p-form__group{margin-top:.5rem}}@media screen and (min-width:768px){.p-form--stacked .p-form__label{-ms-flex-preferred-size:25%;flex-basis:25%;-ms-flex-positive:1;flex-grow:1;margin:0;max-width:25%;padding-right:.5rem}}@media screen and (min-width:768px){.p-form--stacked .p-form__control{-ms-flex-preferred-size:75%;flex-basis:75%;-ms-flex-positive:1;flex-grow:1;margin:0;max-width:75%}}@media screen and (min-width:768px){.p-form--inline{-ms-flex-align:baseline;align-items:baseline;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row}.p-form--inline>*{margin:0}}@media screen and (min-width:768px){.p-form--inline .p-form__group{display:-ms-inline-flexbox;display:inline-flex;width:auto}.p-form--inline .p-form__group+.p-form__group,.p-form--inline .p-form__group+[class*=p-button]{margin-left:1.5rem}.p-form--inline .p-form__group .p-form-validation__message,.p-form--inline .p-form__group .p-form__control,.p-form--inline .p-form__group .p-form__label{-ms-flex-item-align:baseline;align-self:baseline;box-sizing:border-box}.p-form--inline .p-form__group .p-form__label{-ms-flex-negative:0;flex-shrink:0;padding-right:1rem}.p-form--inline .p-form__group .p-form__control{display:inline-block}.p-form--inline .p-form__group .p-form-help-text,.p-form--inline .p-form__group .p-form-validation__message{clear:both;min-width:100%;width:0}}.p-form--inline [class*=p-button]{-ms-flex:initial;flex:initial;-ms-flex-negative:0;flex-shrink:0;margin-top:0}form+[class*=p-button]{margin-top:1.5rem}.row{width:100%}[grid-demo] [class*=col-]{background:#cdcdcd;margin-bottom:.5rem}[grid-outline] [class*=col-]{outline:1px solid #fff;padding:.5rem}@media screen and (max-width:400px){@-ms-viewport{width:320px}}img{max-width:100%;height:auto}@media \0screen{img{width:auto}}.row{*zoom:1;margin-right:auto;margin-left:auto;max-width:64.875rem;padding-left:1.5rem;padding-right:1.5rem}.row:after,.row:before{display:table;content:" "}.row:after{clear:both}.row .row{margin-right:0;margin-left:0;max-width:none;padding-right:0;padding-left:0}.mobile-col-1,.mobile-col-2,.mobile-col-3{display:block;float:left;min-height:1px;position:relative;*margin-right:-1px;margin-left:7.80829%}.first-mobile-col,.row .mobile-col-1:first-child,.row .mobile-col-2:first-child,.row .mobile-col-3:first-child{margin-left:0}.mobile-col-1{width:19.14379%}.mobile-col-2{width:46.09586%}.mobile-col-3{width:73.04793%}@media screen and (min-width:620px){.tablet-col-1,.tablet-col-2,.tablet-col-3,.tablet-col-4,.tablet-col-5{display:block;float:left;min-height:1px;position:relative;*margin-right:-1px;margin-left:4.93155%}.first-tablet-col,.row .tablet-col-1:first-child,.row .tablet-col-2:first-child,.row .tablet-col-3:first-child,.row .tablet-col-4:first-child,.row .tablet-col-5:first-child{margin-left:0}.tablet-col-1{width:12.55704%}.tablet-col-2{width:30.04563%}.tablet-col-3{width:47.53423%}.tablet-col-4{width:65.02282%}.tablet-col-5{width:82.51141%}}@media screen and (min-width:768px){.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11{display:block;float:left;min-height:1px;position:relative;*margin-right:-1px;margin-left:3.2877%}.first-col,.row .col-1:first-child,.row .col-2:first-child,.row .col-3:first-child,.row .col-4:first-child,.row .col-5:first-child,.row .col-6:first-child,.row .col-7:first-child,.row .col-8:first-child,.row .col-9:first-child,.row .col-10:first-child,.row .col-11:first-child{margin-left:0}.col-1{width:5.31961%}.col-2{width:13.92692%}.col-3{width:22.53423%}.col-4{width:31.14153%}.col-5{width:39.74884%}.col-6{width:48.35615%}.col-7{width:56.96346%}.col-8{width:65.57077%}.col-9{width:74.17808%}.col-10{width:82.78538%}.col-11{width:91.39269%}.prefix-1{padding-left:8.60731%}.prefix-2{padding-left:17.21462%}.prefix-3{padding-left:25.82192%}.prefix-4{padding-left:34.42923%}.prefix-5{padding-left:43.03654%}.prefix-6{padding-left:51.64385%}.prefix-7{padding-left:60.25116%}.prefix-8{padding-left:68.85847%}.prefix-9{padding-left:77.46577%}.prefix-10{padding-left:86.07308%}.prefix-11{padding-left:94.68039%}.suffix-1{padding-right:8.60731%}.suffix-2{padding-right:17.21462%}.suffix-3{padding-right:25.82192%}.suffix-4{padding-right:34.42923%}.suffix-5{padding-right:43.03654%}.suffix-6{padding-right:51.64385%}.suffix-7{padding-right:60.25116%}.suffix-8{padding-right:68.85847%}.suffix-9{padding-right:77.46577%}.suffix-10{padding-right:86.07308%}.suffix-11{padding-right:94.68039%}.push-1{left:8.60731%}.push-2{left:17.21462%}.push-3{left:25.82192%}.push-4{left:34.42923%}.push-5{left:43.03654%}.push-6{left:51.64385%}.push-7{left:60.25116%}.push-8{left:68.85847%}.push-9{left:77.46577%}.push-10{left:86.07308%}.push-11{left:94.68039%}.pull-1{right:8.60731%}.pull-2{right:17.21462%}.pull-3{right:25.82192%}.pull-4{right:34.42923%}.pull-5{right:43.03654%}.pull-6{right:51.64385%}.pull-7{right:60.25116%}.pull-8{right:68.85847%}.pull-9{right:77.46577%}.pull-10{right:86.07308%}.pull-11{right:94.68039%}.col-11 .col-1,.col-11 .col-2,.col-11 .col-3,.col-11 .col-4,.col-11 .col-5,.col-11 .col-6,.col-11 .col-7,.col-11 .col-8,.col-11 .col-9,.col-11 .col-10{margin-left:3.59733%}.col-11 .col-1{width:5.82061%}.col-11 .col-2{width:15.23855%}.col-11 .col-3{width:24.65649%}.col-11 .col-4{width:34.07442%}.col-11 .col-5{width:43.49236%}.col-11 .col-6{width:52.9103%}.col-11 .col-7{width:62.32824%}.col-11 .col-8{width:71.74618%}.col-11 .col-9{width:81.16412%}.col-11 .col-10{width:90.58206%}.col-10 .col-1,.col-10 .col-2,.col-10 .col-3,.col-10 .col-4,.col-10 .col-5,.col-10 .col-6,.col-10 .col-7,.col-10 .col-8,.col-10 .col-9{margin-left:3.97135%}.col-10 .col-1{width:6.42578%}.col-10 .col-2{width:16.82292%}.col-10 .col-3{width:27.22005%}.col-10 .col-4{width:37.61719%}.col-10 .col-5{width:48.01432%}.col-10 .col-6{width:58.41146%}.col-10 .col-7{width:68.80859%}.col-10 .col-8{width:79.20573%}.col-10 .col-9{width:89.60286%}.col-9 .col-1,.col-9 .col-2,.col-9 .col-3,.col-9 .col-4,.col-9 .col-5,.col-9 .col-6,.col-9 .col-7,.col-9 .col-8{margin-left:4.43217%}.col-9 .col-1{width:7.1714%}.col-9 .col-2{width:18.77498%}.col-9 .col-3{width:30.37855%}.col-9 .col-4{width:41.98213%}.col-9 .col-5{width:53.5857%}.col-9 .col-6{width:65.18928%}.col-9 .col-7{width:76.79285%}.col-9 .col-8{width:88.39643%}.col-8 .col-1,.col-8 .col-2,.col-8 .col-3,.col-8 .col-4,.col-8 .col-5,.col-8 .col-6,.col-8 .col-7{margin-left:5.01397%}.col-8 .col-1{width:8.11278%}.col-8 .col-2{width:21.23952%}.col-8 .col-3{width:34.36627%}.col-8 .col-4{width:47.49301%}.col-8 .col-5{width:60.61976%}.col-8 .col-6{width:73.74651%}.col-8 .col-7{width:86.87325%}.col-7 .col-1,.col-7 .col-2,.col-7 .col-3,.col-7 .col-4,.col-7 .col-5,.col-7 .col-6{margin-left:5.77159%}.col-7 .col-1{width:9.33863%}.col-7 .col-2{width:24.44886%}.col-7 .col-3{width:39.55909%}.col-7 .col-4{width:54.66932%}.col-7 .col-5{width:69.77954%}.col-7 .col-6{width:84.88977%}.col-6 .col-1,.col-6 .col-2,.col-6 .col-3,.col-6 .col-4,.col-6 .col-5{margin-left:6.79893%}.col-6 .col-1{width:11.00089%}.col-6 .col-2{width:28.80072%}.col-6 .col-3{width:46.60054%}.col-6 .col-4{width:64.40036%}.col-6 .col-5{width:82.20018%}.col-5 .col-1,.col-5 .col-2,.col-5 .col-3,.col-5 .col-4{margin-left:8.27118%}.col-5 .col-1{width:13.38305%}.col-5 .col-2{width:35.03729%}.col-5 .col-3{width:56.69153%}.col-5 .col-4{width:78.34576%}.col-4 .col-1,.col-4 .col-2,.col-4 .col-3{margin-left:10.55728%}.col-4 .col-1{width:17.08204%}.col-4 .col-2{width:44.72136%}.col-4 .col-3{width:72.36068%}.col-3 .col-1,.col-3 .col-2{margin-left:14.5898%}.col-3 .col-1{width:23.6068%}.col-3 .col-2{width:61.8034%}.col-2 .col-1{margin-left:23.6068%;width:38.1966%}}.row .center-col{float:none;margin-left:auto!important;margin-right:auto}@media screen and (max-width:619px){.hidden-mobile,.visible-desktop,.visible-tablet{display:none!important}}@media screen and (min-width:620px) and (max-width:767px){.hidden-tablet,.visible-desktop,.visible-mobile{display:none!important}}@media screen and (min-width:768px){.hidden-desktop,.visible-mobile,.visible-tablet{display:none!important}}.p-heading-icon{margin-bottom:1rem}@media (min-width:768px){.p-heading-icon{margin-bottom:0}}.p-heading-icon__header{display:-ms-flexbox;display:flex;margin-bottom:.75rem}.p-heading-icon__title{margin-bottom:0;padding-top:0}.p-heading-icon__img{-ms-flex-negative:0;flex-shrink:0;height:2.5rem;margin-right:1rem;width:2.5rem}@media (min-width:768px){.p-heading-icon__img{height:3.75rem;width:3.75rem}}.p-icon--plus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cg fill='%23666' fill-rule='evenodd'%3E%3Cpath d='M4 0h1v9H4z'/%3E%3Cpath d='M0 5V4h9v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--plus.is-light,[class*="--dark"] .p-icon--plus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cg fill='%23cdcdcd' fill-rule='evenodd'%3E%3Cpath d='M4 0h1v9H4z'/%3E%3Cpath d='M0 5V4h9v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--minus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cpath d='M0 5V4h9v1z' fill='%23666' fill-rule='evenodd'/%3E%3C/svg%3E")}.p-icon--minus.is-light,[class*="--dark"] .p-icon--minus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='9' width='9'%3E%3Cpath d='M0 5V4h9v1z' fill='%23cdcdcd' fill-rule='evenodd'/%3E%3C/svg%3E")}.p-icon--expand{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='15' width='15' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a'/%3E%3Cpath stroke='%23666' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23666' d='M7 4h1v7H7z'/%3E%3Cpath fill='%23666' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--expand.is-light,[class*="--dark"] .p-icon--expand{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='15' width='15' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a'/%3E%3Cpath stroke='%23cdcdcd' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23cdcdcd' d='M7 4h1v7H7z'/%3E%3Cpath fill='%23cdcdcd' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--collapse{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='15' width='15' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a'/%3E%3Cpath stroke='%23666' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23666' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--collapse.is-light,[class*="--dark"] .p-icon--collapse{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='15' width='15' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a'/%3E%3Cpath stroke='%23cdcdcd' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23cdcdcd' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--chevron{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='4' width='10'%3E%3Cpath d='M3.637 3.138A26.335 26.335 0 0 1 0 0h1.541a21.242 21.242 0 0 0 1.364 1.187 16.899 16.899 0 0 0 .752.563 19.8 19.8 0 0 0 1.315.848h.054a19.8 19.8 0 0 0 1.315-.848c.398-.28.788-.583 1.169-.904.327-.275.643-.557.947-.846h1.541a26.335 26.335 0 0 1-3.637 3.138c-.519.365-.973.652-1.362.862-.39-.21-.844-.497-1.362-.862z' fill='%23666' fill-rule='evenodd'/%3E%3C/svg%3E")}.p-icon--chevron.is-light,[class*="--dark"] .p-icon--chevron{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='4' width='10'%3E%3Cpath d='M3.637 3.138A26.335 26.335 0 0 1 0 0h1.541a21.242 21.242 0 0 0 1.364 1.187 16.899 16.899 0 0 0 .752.563 19.8 19.8 0 0 0 1.315.848h.054a19.8 19.8 0 0 0 1.315-.848c.398-.28.788-.583 1.169-.904.327-.275.643-.557.947-.846h1.541a26.335 26.335 0 0 1-3.637 3.138c-.519.365-.973.652-1.362.862-.39-.21-.844-.497-1.362-.862z' fill='%23cdcdcd' fill-rule='evenodd'/%3E%3C/svg%3E")}.p-icon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='90' width='90'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h90v90H0z'/%3E%3Cpath d='M14.52 6L6 14.52 36.48 45 6 75.49 14.52 84 45 53.52 75.48 84 84 75.49 53.52 45 84 14.52 75.48 6 45 36.49z' fill='%23666'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--close.is-light,[class*="--dark"] .p-icon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='90' width='90'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h90v90H0z'/%3E%3Cpath d='M14.52 6L6 14.52 36.48 45 6 75.49 14.52 84 45 53.52 75.48 84 84 75.49 53.52 45 84 14.52 75.48 6 45 36.49z' fill='%23cdcdcd'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--help{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath fill='none' color='%23000' d='M-.003.002h16v16h-16z'/%3E%3Cpath d='M8.004 5.23q-.431 0-.825.11-.394.098-.825.332l-.419-1.145q.456-.258 1.035-.406.59-.16 1.206-.16.739 0 1.219.21.48.196.763.504.283.308.394.677.111.37.111.714 0 .419-.16.751-.148.333-.382.616t-.504.542q-.271.246-.505.517-.234.258-.394.554-.148.295-.148.664v.148q0 .074.012.148h-1.28q-.025-.123-.037-.259-.012-.147-.012-.27 0-.407.135-.727.136-.32.345-.59t.443-.506q.246-.234.456-.467.209-.234.344-.48.136-.247.136-.542 0-.407-.283-.665-.271-.271-.825-.271zm.98 6.78q0 .43-.283.7-.284.272-.702.272-.406 0-.702-.271-.283-.271-.283-.702 0-.43.283-.702.296-.283.702-.283.418 0 .702.283.283.271.283.702z' fill='%23666'/%3E%3Cpath d='M2.064 1.002c-.591 0-1.067.476-1.067 1.067v11.867c0 .591.476 1.067 1.067 1.067H13.93c.591 0 1.067-.476 1.067-1.067V2.07c0-.591-.476-1.067-1.067-1.067zm-.067 1h12v12h-12z' fill='%23666' color='%23000'/%3E%3C/svg%3E")}.p-icon--help.is-light,[class*="--dark"] .p-icon--help{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath fill='none' color='%23000' d='M-.003.002h16v16h-16z'/%3E%3Cpath d='M8.004 5.23q-.431 0-.825.11-.394.098-.825.332l-.419-1.145q.456-.258 1.035-.406.59-.16 1.206-.16.739 0 1.219.21.48.196.763.504.283.308.394.677.111.37.111.714 0 .419-.16.751-.148.333-.382.616t-.504.542q-.271.246-.505.517-.234.258-.394.554-.148.295-.148.664v.148q0 .074.012.148h-1.28q-.025-.123-.037-.259-.012-.147-.012-.27 0-.407.135-.727.136-.32.345-.59t.443-.506q.246-.234.456-.467.209-.234.344-.48.136-.247.136-.542 0-.407-.283-.665-.271-.271-.825-.271zm.98 6.78q0 .43-.283.7-.284.272-.702.272-.406 0-.702-.271-.283-.271-.283-.702 0-.43.283-.702.296-.283.702-.283.418 0 .702.283.283.271.283.702z' fill='%23cdcdcd'/%3E%3Cpath d='M2.064 1.002c-.591 0-1.067.476-1.067 1.067v11.867c0 .591.476 1.067 1.067 1.067H13.93c.591 0 1.067-.476 1.067-1.067V2.07c0-.591-.476-1.067-1.067-1.067zm-.067 1h12v12h-12z' fill='%23cdcdcd' color='%23000'/%3E%3C/svg%3E")}.p-icon--information{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath d='M2.07 1c-.59 0-1.066.475-1.066 1.066v11.867c0 .591.475 1.067 1.066 1.067h11.867c.591 0 1.066-.476 1.066-1.067V2.066c0-.59-.475-1.066-1.066-1.066zm-.066 1h12v12h-12z' fill='%23666'/%3E%3Cpath d='M7 4v2h2V4zm0 3v5h2V7z' fill='%23666'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--information.is-light,[class*="--dark"] .p-icon--information{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath d='M2.07 1c-.59 0-1.066.475-1.066 1.066v11.867c0 .591.475 1.067 1.066 1.067h11.867c.591 0 1.066-.476 1.066-1.067V2.066c0-.59-.475-1.066-1.066-1.066zm-.066 1h12v12h-12z' fill='%23cdcdcd'/%3E%3Cpath d='M7 4v2h2V4zm0 3v5h2V7z' fill='%23cdcdcd'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--delete{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath style='text-decoration-color:%23000;isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none' d='M2 4v1h2V4H2zm11 0v1h2V4h-2zM2 6v8.506c0 .822.678 1.5 1.5 1.5h10c.822 0 1.5-.678 1.5-1.5V6h-2v7.506c0 .286-.214.5-.5.5h-8a.488.488 0 0 1-.5-.5V6H2z' fill='%23666'/%3E%3Cpath d='M6 0v3h1V1h3v2h1V0H6zM5 6h1v6H5zm3 0h1v6H8zm3 0h1v6h-1z' fill='%23666'/%3E%3Cpath style='text-decoration-color:%23000;isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none' d='M3.5 2C2.678 2 2 2.678 2 3.5V5h13V3.5c0-.822-.678-1.5-1.5-1.5h-10zM2 6v8.006h2V6H2zm11 0v8.006h2V6h-2z' fill='%23666'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--delete.is-light,[class*="--dark"] .p-icon--delete{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath style='text-decoration-color:%23000;isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none' d='M2 4v1h2V4H2zm11 0v1h2V4h-2zM2 6v8.506c0 .822.678 1.5 1.5 1.5h10c.822 0 1.5-.678 1.5-1.5V6h-2v7.506c0 .286-.214.5-.5.5h-8a.488.488 0 0 1-.5-.5V6H2z' fill='%23cdcdcd'/%3E%3Cpath d='M6 0v3h1V1h3v2h1V0H6zM5 6h1v6H5zm3 0h1v6H8zm3 0h1v6h-1z' fill='%23cdcdcd'/%3E%3Cpath style='text-decoration-color:%23000;isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none' d='M3.5 2C2.678 2 2 2.678 2 3.5V5h13V3.5c0-.822-.678-1.5-1.5-1.5h-10zM2 6v8.006h2V6H2zm11 0v8.006h2V6h-2z' fill='%23cdcdcd'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--error{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' viewBox='0 0 16.000017 16.000017' width='16'%3E%3Cg stroke-width='1.5' color='%23000'%3E%3Cpath d='M8 0C3.59 0 0 3.59 0 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8z' fill='%23c7162b'/%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath d='M5 5l6 6m0-6l-6 6' stroke-dashoffset='.8' stroke='%23fff' fill='none'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--warning{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath stroke-linejoin='round' fill='%23f99b11' transform='matrix(2.28 0 0 2.437 -2180.8 -490.52)' stroke='%23f99b11' stroke-width='.848' d='M963.07 207.03h-6.15l3.08-5.33z'/%3E%3Cpath d='M7 5v5h2V5H7zm0 6v2h2v-2H7z' fill='%23111'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--external-link{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath fill='none' d='M.003.001h16v16h-16z'/%3E%3Cpath d='M8.581 2.068S12.208.631 16-.005c.002 0 .002 0 .002.002v.006h.002c-.708 3.964-2.08 7.406-2.08 7.406L8.58 2.069z' fill='%23666'/%3E%3Cpath stroke-linejoin='round' d='M7.87 8.128l4.446-4.445' stroke='%23666' stroke-width='2' fill='none'/%3E%3Cpath d='M1.503 2.001c-.822 0-1.5.678-1.5 1.5v11c0 .823.678 1.5 1.5 1.5h11c.823 0 1.5-.677 1.5-1.5v-5.5h-2v4.5c0 .287-.214.5-.5.5h-9a.488.488 0 0 1-.5-.5v-9c0-.285.215-.5.5-.5h4.5v-2h-5.5z' fill='%23666'/%3E%3C/svg%3E")}.p-icon--external-link.is-light,[class*="--dark"] .p-icon--external-link{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath fill='none' d='M.003.001h16v16h-16z'/%3E%3Cpath d='M8.581 2.068S12.208.631 16-.005c.002 0 .002 0 .002.002v.006h.002c-.708 3.964-2.08 7.406-2.08 7.406L8.58 2.069z' fill='%23cdcdcd'/%3E%3Cpath stroke-linejoin='round' d='M7.87 8.128l4.446-4.445' stroke='%23cdcdcd' stroke-width='2' fill='none'/%3E%3Cpath d='M1.503 2.001c-.822 0-1.5.678-1.5 1.5v11c0 .823.678 1.5 1.5 1.5h11c.823 0 1.5-.677 1.5-1.5v-5.5h-2v4.5c0 .287-.214.5-.5.5h-9a.488.488 0 0 1-.5-.5v-9c0-.285.215-.5.5-.5h4.5v-2h-5.5z' fill='%23cdcdcd'/%3E%3C/svg%3E")}.p-icon--contextual-menu{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='14' width='6' viewBox='0 0 6 14'%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cpath d='M-10-6h26v26h-26z'/%3E%3Cpath fill-rule='nonzero' fill='%23666' d='M0 0v2h6V0M0 6v2h6V6m-6 6v2h6v-2'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--contextual-menu.is-light,[class*="--dark"] .p-icon--contextual-menu{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='14' width='6' viewBox='0 0 6 14'%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cpath d='M-10-6h26v26h-26z'/%3E%3Cpath fill-rule='nonzero' fill='%23cdcdcd' d='M0 0v2h6V0M0 6v2h6V6m-6 6v2h6v-2'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--code{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath opacity='.212' fill='none' d='M.005.002h16v16h-16z'/%3E%3Cpath d='M2.671 2.002c-1.778 0-2.666 0-2.666 2.068v8.866c0 2.067.888 2.066 2.666 2.066H13.34c1.778 0 2.666 0 2.666-2.066v-8.8c0-2.133-.888-2.134-2.666-2.134H2.671zm1.28 1.89h1.101v1.143c.339.028.642.078.91.148.268.064.48.128.635.192L6.333 6.42a6.601 6.601 0 0 0-.73-.222 3.858 3.858 0 0 0-.953-.106c-.382 0-.67.072-.86.213a.646.646 0 0 0-.285.56c0 .142.028.261.084.36a.875.875 0 0 0 .256.254c.113.07.25.142.412.213.162.063.346.13.55.201.29.113.561.233.815.36.261.12.487.266.678.435.19.163.34.356.445.582.113.226.17.494.17.805a1.8 1.8 0 0 1-.433 1.207c-.29.339-.766.558-1.43.657v1.324H3.95V11.97c-.508-.036-.922-.103-1.24-.201a4.692 4.692 0 0 1-.697-.286l.36-1.005a4.8 4.8 0 0 0 .814.306c.324.092.692.139 1.101.139.487 0 .823-.072 1.006-.213a.703.703 0 0 0 .287-.582.764.764 0 0 0-.117-.424 1.09 1.09 0 0 0-.328-.319 2.828 2.828 0 0 0-.508-.253c-.19-.078-.404-.158-.637-.243a8.505 8.505 0 0 1-.656-.265 2.866 2.866 0 0 1-.582-.36c-.17-.148-.306-.324-.412-.529s-.16-.456-.16-.752c0-.487.146-.901.435-1.24.29-.346.734-.567 1.334-.666V3.892zm4.054 8.096h3.99v.996h-3.99v-.996z' fill='%23666'/%3E%3C/svg%3E")}.p-icon--code.is-light,[class*="--dark"] .p-icon--code{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath opacity='.212' fill='none' d='M.005.002h16v16h-16z'/%3E%3Cpath d='M2.671 2.002c-1.778 0-2.666 0-2.666 2.068v8.866c0 2.067.888 2.066 2.666 2.066H13.34c1.778 0 2.666 0 2.666-2.066v-8.8c0-2.133-.888-2.134-2.666-2.134H2.671zm1.28 1.89h1.101v1.143c.339.028.642.078.91.148.268.064.48.128.635.192L6.333 6.42a6.601 6.601 0 0 0-.73-.222 3.858 3.858 0 0 0-.953-.106c-.382 0-.67.072-.86.213a.646.646 0 0 0-.285.56c0 .142.028.261.084.36a.875.875 0 0 0 .256.254c.113.07.25.142.412.213.162.063.346.13.55.201.29.113.561.233.815.36.261.12.487.266.678.435.19.163.34.356.445.582.113.226.17.494.17.805a1.8 1.8 0 0 1-.433 1.207c-.29.339-.766.558-1.43.657v1.324H3.95V11.97c-.508-.036-.922-.103-1.24-.201a4.692 4.692 0 0 1-.697-.286l.36-1.005a4.8 4.8 0 0 0 .814.306c.324.092.692.139 1.101.139.487 0 .823-.072 1.006-.213a.703.703 0 0 0 .287-.582.764.764 0 0 0-.117-.424 1.09 1.09 0 0 0-.328-.319 2.828 2.828 0 0 0-.508-.253c-.19-.078-.404-.158-.637-.243a8.505 8.505 0 0 1-.656-.265 2.866 2.866 0 0 1-.582-.36c-.17-.148-.306-.324-.412-.529s-.16-.456-.16-.752c0-.487.146-.901.435-1.24.29-.346.734-.567 1.334-.666V3.892zm4.054 8.096h3.99v.996h-3.99v-.996z' fill='%23cdcdcd'/%3E%3C/svg%3E")}.p-icon--menu{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='19' width='25' viewBox='0 0 79 60'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='%23666' d='M.995 0h78v12h-78zm0 24h78v12h-78zm0 24h78v12h-78z'/%3E%3Cpath d='M-5.005-15h90v90h-90z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--menu.is-light,[class*="--dark"] .p-icon--menu{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='19' width='25' viewBox='0 0 79 60'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='%23cdcdcd' d='M.995 0h78v12h-78zm0 24h78v12h-78zm0 24h78v12h-78z'/%3E%3Cpath d='M-5.005-15h90v90h-90z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--copy{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='17' width='16'%3E%3Cg fill='%23666' fill-rule='evenodd'%3E%3Cpath d='M10.587 1.8h3.259c.472 0 .846.053 1.161.2s.567.412.716.748c.298.67.266 1.491.277 2.613v8.479c-.011 1.121.021 1.942-.277 2.613-.149.335-.401.6-.716.747s-.689.2-1.161.2H4.154c-.472 0-.846-.053-1.16-.2s-.568-.412-.717-.747c-.246-.554-.268-1.21-.273-2.053h.803c.016.854.058 1.428.178 1.707.072.166.151.26.336.348s.477.145.896.145h9.566c.42 0 .712-.057.897-.145a.602.602 0 0 0 .335-.348c.143-.331.175-1.081.185-2.222V5.309c-.01-1.137-.042-1.885-.185-2.216a.603.603 0 0 0-.335-.348c-.185-.088-.477-.145-.897-.145h-3.538c.182-.225.304-.5.342-.8zm-3.174 0c.038.3.16.575.341.8H4.217c-.42 0-.712.057-.896.145a.603.603 0 0 0-.336.348c-.143.33-.175 1.079-.185 2.216V10.8H2V5.361c.01-1.122-.021-1.942.277-2.613.149-.336.401-.601.716-.748s.689-.2 1.16-.2h3.26z'/%3E%3Cpath fill-rule='nonzero' d='M11.398 1.8v2.4H6.6V1.8h1.6c0 .447.353.8.8.8a.794.794 0 0 0 .799-.8h1.6z'/%3E%3Cpath fill-rule='nonzero' d='M10.6 1.6c0 .879-.722 1.6-1.6 1.6-.879 0-1.6-.721-1.6-1.6C7.4.72 8.121 0 9 0c.879 0 1.6.72 1.6 1.6zm-.8 0c0-.447-.354-.8-.8-.8-.447 0-.8.353-.8.8 0 .446.353.8.8.8.446 0 .8-.354.8-.8z'/%3E%3Cpath d='M8.4 7.2H14v1H8.4zm0 2.4H14v1H8.4zM10 12h4v1h-4z'/%3E%3Cpath fill-rule='nonzero' d='M4.4 10s2.134 1.026 4 2.505h-.002C6.427 14.03 4.4 15 4.4 15v-5z'/%3E%3Cpath d='M0 11.6h4.4v2H0z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--copy.is-light,[class*="--dark"] .p-icon--copy{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='17' width='16'%3E%3Cg fill='%23cdcdcd' fill-rule='evenodd'%3E%3Cpath d='M10.587 1.8h3.259c.472 0 .846.053 1.161.2s.567.412.716.748c.298.67.266 1.491.277 2.613v8.479c-.011 1.121.021 1.942-.277 2.613-.149.335-.401.6-.716.747s-.689.2-1.161.2H4.154c-.472 0-.846-.053-1.16-.2s-.568-.412-.717-.747c-.246-.554-.268-1.21-.273-2.053h.803c.016.854.058 1.428.178 1.707.072.166.151.26.336.348s.477.145.896.145h9.566c.42 0 .712-.057.897-.145a.602.602 0 0 0 .335-.348c.143-.331.175-1.081.185-2.222V5.309c-.01-1.137-.042-1.885-.185-2.216a.603.603 0 0 0-.335-.348c-.185-.088-.477-.145-.897-.145h-3.538c.182-.225.304-.5.342-.8zm-3.174 0c.038.3.16.575.341.8H4.217c-.42 0-.712.057-.896.145a.603.603 0 0 0-.336.348c-.143.33-.175 1.079-.185 2.216V10.8H2V5.361c.01-1.122-.021-1.942.277-2.613.149-.336.401-.601.716-.748s.689-.2 1.16-.2h3.26z'/%3E%3Cpath fill-rule='nonzero' d='M11.398 1.8v2.4H6.6V1.8h1.6c0 .447.353.8.8.8a.794.794 0 0 0 .799-.8h1.6z'/%3E%3Cpath fill-rule='nonzero' d='M10.6 1.6c0 .879-.722 1.6-1.6 1.6-.879 0-1.6-.721-1.6-1.6C7.4.72 8.121 0 9 0c.879 0 1.6.72 1.6 1.6zm-.8 0c0-.447-.354-.8-.8-.8-.447 0-.8.353-.8.8 0 .446.353.8.8.8.446 0 .8-.354.8-.8z'/%3E%3Cpath d='M8.4 7.2H14v1H8.4zm0 2.4H14v1H8.4zM10 12h4v1h-4z'/%3E%3Cpath fill-rule='nonzero' d='M4.4 10s2.134 1.026 4 2.505h-.002C6.427 14.03 4.4 15 4.4 15v-5z'/%3E%3Cpath d='M0 11.6h4.4v2H0z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg transform='translate(-74.67 -285.57) scale(.66667)' color='%23000'%3E%3Cpath opacity='.05' fill='none' d='M112 452.36h24v-24h-24z'/%3E%3Cpath style='isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-indent:0;text-transform:none' d='M129.93 444.03l-2.27 2.273 6.07 6.07 2.27-2.27z' fill='%23666'/%3E%3Cellipse stroke-linejoin='round' stroke='%23666' rx='9.479' ry='9.479' cy='438.86' cx='122.5' stroke-linecap='round' stroke-width='2.041' fill='none'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--search.is-light,[class*="--dark"] .p-icon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg transform='translate(-74.67 -285.57) scale(.66667)' color='%23000'%3E%3Cpath opacity='.05' fill='none' d='M112 452.36h24v-24h-24z'/%3E%3Cpath style='isolation:auto;mix-blend-mode:normal;block-progression:tb;text-decoration-line:none;text-indent:0;text-transform:none' d='M129.93 444.03l-2.27 2.273 6.07 6.07 2.27-2.27z' fill='%23cdcdcd'/%3E%3Cellipse stroke-linejoin='round' stroke='%23cdcdcd' rx='9.479' ry='9.479' cy='438.86' cx='122.5' stroke-linecap='round' stroke-width='2.041' fill='none'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--success{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='17' height='17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(1 1)' fill='none' fill-rule='evenodd'%3E%3Ccircle stroke='%230e8420' stroke-width='1.5' fill='%230e8420' cx='7.25' cy='7.25' r='7.25'/%3E%3Cpath fill='%23fff' d='M11.05 4.173l-.066.058L6.25 8.378l-2.776-2.38-.839.948L6.25 10.75l5.5-5.787-.7-.79z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--share{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath style='block-progression:tb;text-decoration-line:none;text-indent:0;text-transform:none' d='M11.43.012a2.48 2.48 0 0 0-1.5.597l-.952.797v.574a6.7 6.7 0 0 1-.154 1.489c-.102.452-.286.84-.543 1.158a2.333 2.333 0 0 1-.999.756c-.421.185-.953.278-1.59.278-.622 0-1.072-.04-1.568-.112-.929.544-1.363 1.382-1.363 2.493s.53 1.732 1.363 2.53a14.294 14.294 0 0 1 1.569-.077c.636 0 1.168.093 1.59.278.42.174.751.427.998.756.257.318.44.7.543 1.152.103.452.154.95.154 1.495v.414l.922.78a2.49 2.49 0 0 0 1.813.63 2.49 2.49 0 0 0 1.713-.866 2.49 2.49 0 0 0 .57-1.833 2.49 2.49 0 0 0-.923-1.684l-.65-.55h-1.696a4 4 0 0 1-1.229-.182 2.59 2.59 0 0 1-.993-.55 2.54 2.54 0 0 1-.65-.934c-.16-.372-.242-.818-.242-1.335s.083-.967.242-1.347c.16-.38.377-.69.65-.934a2.83 2.83 0 0 1 .993-.55 4.25 4.25 0 0 1 1.23-.17h1.536l.821-.686c.798-.646 1.116-1.822.752-2.782-.363-.96-1.381-1.63-2.406-1.585z' fill='%23666'/%3E%3Cpath opacity='.1' fill='none' d='M-.003.005h16v16h-16z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--share.is-light,[class*="--dark"] .p-icon--share{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath style='block-progression:tb;text-decoration-line:none;text-indent:0;text-transform:none' d='M11.43.012a2.48 2.48 0 0 0-1.5.597l-.952.797v.574a6.7 6.7 0 0 1-.154 1.489c-.102.452-.286.84-.543 1.158a2.333 2.333 0 0 1-.999.756c-.421.185-.953.278-1.59.278-.622 0-1.072-.04-1.568-.112-.929.544-1.363 1.382-1.363 2.493s.53 1.732 1.363 2.53a14.294 14.294 0 0 1 1.569-.077c.636 0 1.168.093 1.59.278.42.174.751.427.998.756.257.318.44.7.543 1.152.103.452.154.95.154 1.495v.414l.922.78a2.49 2.49 0 0 0 1.813.63 2.49 2.49 0 0 0 1.713-.866 2.49 2.49 0 0 0 .57-1.833 2.49 2.49 0 0 0-.923-1.684l-.65-.55h-1.696a4 4 0 0 1-1.229-.182 2.59 2.59 0 0 1-.993-.55 2.54 2.54 0 0 1-.65-.934c-.16-.372-.242-.818-.242-1.335s.083-.967.242-1.347c.16-.38.377-.69.65-.934a2.83 2.83 0 0 1 .993-.55 4.25 4.25 0 0 1 1.23-.17h1.536l.821-.686c.798-.646 1.116-1.822.752-2.782-.363-.96-1.381-1.63-2.406-1.585z' fill='%23cdcdcd'/%3E%3Cpath opacity='.1' fill='none' d='M-.003.005h16v16h-16z'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--user{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath opacity='.12' fill='none' color='%23000' d='M15.997 15.998v-16h-16v16z'/%3E%3Cpath style='text-decoration-color:%23000;font-variant-numeric:normal;text-decoration-line:none;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;text-decoration-style:solid;font-variant-ligatures:normal;isolation:auto;text-transform:none' d='M8 0c-.587 0-1.142.109-1.651.329a3.795 3.795 0 0 0-1.329.912h-.004a4.235 4.235 0 0 0-.844 1.426 5.128 5.128 0 0 0-.299 1.787c0 .653.098 1.256.3 1.802a4.26 4.26 0 0 0 .843 1.41h.004c.25.264.531.49.841.676-.258.066-.701.144-.956.237-.878.322-1.617.766-2.196 1.334h-.004a5.586 5.586 0 0 0-1.286 2.03h-.002a7.541 7.541 0 0 0-.394 2.464v1.572L14.98 16v-1.572c0-.891-.139-1.7-.42-2.467a5.19 5.19 0 0 0-1.291-2.039c-.58-.567-1.316-1.011-2.194-1.333-.25-.093-.687-.17-.94-.236.31-.187.59-.414.834-.681.373-.397.661-.872.86-1.411a5.17 5.17 0 0 0 .3-1.803c0-.645-.098-1.243-.3-1.788a4.108 4.108 0 0 0-.86-1.427A3.652 3.652 0 0 0 9.652.33 4.14 4.14 0 0 0 8.001 0z' fill='%23666' color='%23000' white-space='normal'/%3E%3C/svg%3E")}.p-icon--user.is-light,[class*="--dark"] .p-icon--user{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath opacity='.12' fill='none' color='%23000' d='M15.997 15.998v-16h-16v16z'/%3E%3Cpath style='text-decoration-color:%23000;font-variant-numeric:normal;text-decoration-line:none;font-variant-position:normal;mix-blend-mode:normal;block-progression:tb;font-feature-settings:normal;shape-padding:0;font-variant-alternates:normal;text-indent:0;font-variant-caps:normal;text-decoration-style:solid;font-variant-ligatures:normal;isolation:auto;text-transform:none' d='M8 0c-.587 0-1.142.109-1.651.329a3.795 3.795 0 0 0-1.329.912h-.004a4.235 4.235 0 0 0-.844 1.426 5.128 5.128 0 0 0-.299 1.787c0 .653.098 1.256.3 1.802a4.26 4.26 0 0 0 .843 1.41h.004c.25.264.531.49.841.676-.258.066-.701.144-.956.237-.878.322-1.617.766-2.196 1.334h-.004a5.586 5.586 0 0 0-1.286 2.03h-.002a7.541 7.541 0 0 0-.394 2.464v1.572L14.98 16v-1.572c0-.891-.139-1.7-.42-2.467a5.19 5.19 0 0 0-1.291-2.039c-.58-.567-1.316-1.011-2.194-1.333-.25-.093-.687-.17-.94-.236.31-.187.59-.414.834-.681.373-.397.661-.872.86-1.411a5.17 5.17 0 0 0 .3-1.803c0-.645-.098-1.243-.3-1.788a4.108 4.108 0 0 0-.86-1.427A3.652 3.652 0 0 0 9.652.33 4.14 4.14 0 0 0 8.001 0z' fill='%23cdcdcd' color='%23000' white-space='normal'/%3E%3C/svg%3E")}.p-icon--question{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cpath fill='none' color='%23000' d='M-.003.002h16v16h-16z'/%3E%3Cpath d='M7.997.002c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.589 8-8-3.589-8-8-8z' fill='%23335280' color='%23000'/%3E%3Cpath d='M8.004 5.23q-.431 0-.825.11-.394.098-.825.332l-.419-1.145q.456-.258 1.035-.406.59-.16 1.206-.16.739 0 1.219.21.48.196.763.504.283.308.394.677.111.37.111.714 0 .419-.16.751-.148.333-.382.616t-.504.542q-.271.246-.505.517-.234.258-.394.554-.148.295-.148.664v.148q0 .074.012.148h-1.28q-.025-.123-.037-.259-.012-.147-.012-.27 0-.407.135-.727.136-.32.345-.59t.443-.506q.246-.234.456-.467.209-.234.344-.48.136-.247.136-.542 0-.407-.283-.665-.271-.271-.825-.271zm.98 6.78q0 .43-.283.7-.284.272-.702.272-.406 0-.702-.271-.283-.271-.283-.702 0-.43.283-.702.296-.283.702-.283.418 0 .702.283.283.271.283.702z' fill='%23fff'/%3E%3C/svg%3E")}.p-icon--spinner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' viewBox='0 0 24 24'%3E%3Ctitle%3Espinner-dark-grey%3C/title%3E%3Cpath d='M7.49 23.123a11.92 11.92 0 0 0 8.975 0c4.247-1.72 6.972-5.603 7.424-9.87l-1.136-.118c-.408 3.86-2.875 7.374-6.717 8.93a10.775 10.775 0 0 1-8.118 0l-.43 1.058zm-2.21-1.176a11.937 11.937 0 0 1-4.404-5.45C-1.284 11.146.686 5.15 5.28 2.05l.638.946C1.76 5.802-.02 11.228 1.934 16.068a10.785 10.785 0 0 0 3.985 4.933l-.64.947zm18.61-11.2a12.009 12.009 0 0 0-.81-3.242C20.602 1.363 13.623-1.605 7.49.877l.43 1.057c5.546-2.245 11.86.44 14.103 5.998.388.963.63 1.95.733 2.933l1.134-.12z' fill='%23666'/%3E%3C/svg%3E")}.p-icon--spinner.is-light,[class*="--dark"] .p-icon--spinner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' width='24' viewBox='0 0 24 24'%3E%3Ctitle%3Espinner-dark-grey%3C/title%3E%3Cpath d='M7.49 23.123a11.92 11.92 0 0 0 8.975 0c4.247-1.72 6.972-5.603 7.424-9.87l-1.136-.118c-.408 3.86-2.875 7.374-6.717 8.93a10.775 10.775 0 0 1-8.118 0l-.43 1.058zm-2.21-1.176a11.937 11.937 0 0 1-4.404-5.45C-1.284 11.146.686 5.15 5.28 2.05l.638.946C1.76 5.802-.02 11.228 1.934 16.068a10.785 10.785 0 0 0 3.985 4.933l-.64.947zm18.61-11.2a12.009 12.009 0 0 0-.81-3.242C20.602 1.363 13.623-1.605 7.49.877l.43 1.057c5.546-2.245 11.86.44 14.103 5.998.388.963.63 1.95.733 2.933l1.134-.12z' fill='%23cdcdcd'/%3E%3C/svg%3E")}.p-icon--facebook{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='40' width='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Ccircle id='a' cx='20' cy='20' r='20'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cuse fill='%23666' fill-rule='nonzero' xlink:href='%23a'/%3E%3Cpath d='M30.037 10.001c-3.92 0-6.603 2.449-6.603 6.945v3.526H19v5.255h4.434V40c1.82-.246 3.6-.728 5.3-1.438V25.727h4.423l.66-5.255h-5.084V17.47c0-1.522.48-3.085 2.55-2.563H34v-4.7c-.47-.064-2.085-.207-3.963-.207v.001z' fill='%23FFF' fill-rule='nonzero' mask='url(%23b)'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--facebook:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='40' width='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Ccircle id='a' cx='20' cy='20' r='20'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cuse fill='%233b5998' fill-rule='nonzero' xlink:href='%23a'/%3E%3Cpath d='M30.037 10.001c-3.92 0-6.603 2.449-6.603 6.945v3.526H19v5.255h4.434V40c1.82-.246 3.6-.728 5.3-1.438V25.727h4.423l.66-5.255h-5.084V17.47c0-1.522.48-3.085 2.55-2.563H34v-4.7c-.47-.064-2.085-.207-3.963-.207v.001z' fill='%23FFF' fill-rule='nonzero' mask='url(%23b)'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--google{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M20 0C8.955 0 0 8.955 0 20s8.955 20 20 20 20-8.955 20-20S31.045 0 20 0zm-4.862 26.805A6.799 6.799 0 0 1 8.333 20a6.799 6.799 0 0 1 6.805-6.805c1.839 0 3.374.67 4.559 1.778l-1.845 1.78c-.507-.486-1.39-1.05-2.714-1.05-2.323 0-4.218 1.925-4.218 4.299 0 2.373 1.897 4.298 4.218 4.298 2.694 0 3.707-1.937 3.86-2.937h-3.86V19.03h6.425c.06.34.107.68.107 1.128.002 3.887-2.605 6.647-6.532 6.647zm16.529-5.833H28.75v2.916h-1.945v-2.916h-2.917v-1.944h2.917v-2.916h1.945v2.916h2.917v1.944z' fill='%23666'/%3E%3C/svg%3E")}.p-icon--google:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M20 0C8.955 0 0 8.955 0 20s8.955 20 20 20 20-8.955 20-20S31.045 0 20 0zm-4.862 26.805A6.799 6.799 0 0 1 8.333 20a6.799 6.799 0 0 1 6.805-6.805c1.839 0 3.374.67 4.559 1.778l-1.845 1.78c-.507-.486-1.39-1.05-2.714-1.05-2.323 0-4.218 1.925-4.218 4.299 0 2.373 1.897 4.298 4.218 4.298 2.694 0 3.707-1.937 3.86-2.937h-3.86V19.03h6.425c.06.34.107.68.107 1.128.002 3.887-2.605 6.647-6.532 6.647zm16.529-5.833H28.75v2.916h-1.945v-2.916h-2.917v-1.944h2.917v-2.916h1.945v2.916h2.917v1.944z' fill='%23dd4b39'/%3E%3C/svg%3E")}.p-icon--twitter{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none'%3E%3Ccircle cx='20' cy='20' r='20' fill='%23666'/%3E%3Cpath d='M16.34 30.55c8.87 0 13.72-7.35 13.72-13.72 0-.21 0-.42-.01-.62.94-.68 1.76-1.53 2.41-2.5-.86.38-1.79.64-2.77.76 1-.6 1.76-1.54 2.12-2.67-.93.55-1.96.95-3.06 1.17a4.799 4.799 0 0 0-3.52-1.52c-2.66 0-4.82 2.16-4.82 4.82 0 .38.04.75.13 1.1a13.68 13.68 0 0 1-9.94-5.04c-.41.71-.65 1.54-.65 2.42a4.8 4.8 0 0 0 2.15 4.01c-.79-.02-1.53-.24-2.18-.6v.06c0 2.34 1.66 4.28 3.87 4.73a4.807 4.807 0 0 1-2.18.08 4.815 4.815 0 0 0 4.5 3.35 9.693 9.693 0 0 1-7.14 1.99c2.11 1.38 4.65 2.18 7.37 2.18' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--twitter:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none'%3E%3Ccircle cx='20' cy='20' r='20' fill='%231da1f2'/%3E%3Cpath d='M16.34 30.55c8.87 0 13.72-7.35 13.72-13.72 0-.21 0-.42-.01-.62.94-.68 1.76-1.53 2.41-2.5-.86.38-1.79.64-2.77.76 1-.6 1.76-1.54 2.12-2.67-.93.55-1.96.95-3.06 1.17a4.799 4.799 0 0 0-3.52-1.52c-2.66 0-4.82 2.16-4.82 4.82 0 .38.04.75.13 1.1a13.68 13.68 0 0 1-9.94-5.04c-.41.71-.65 1.54-.65 2.42a4.8 4.8 0 0 0 2.15 4.01c-.79-.02-1.53-.24-2.18-.6v.06c0 2.34 1.66 4.28 3.87 4.73a4.807 4.807 0 0 1-2.18.08 4.815 4.815 0 0 0 4.5 3.35 9.693 9.693 0 0 1-7.14 1.99c2.11 1.38 4.65 2.18 7.37 2.18' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--instagram{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 28.479h28.473V.009H0z'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='20' cy='20' r='20' fill='%23666' fill-rule='nonzero'/%3E%3Cg transform='translate(6 6)'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cpath d='M14.237.009c-3.867 0-4.352.016-5.87.086-1.515.069-2.55.31-3.456.661a6.994 6.994 0 0 0-2.522 1.642A6.978 6.978 0 0 0 .747 4.92C.395 5.826.155 6.86.086 8.376.016 9.894 0 10.379 0 14.246c0 3.866.016 4.35.086 5.87.069 1.515.31 2.55.661 3.455.364.936.851 1.73 1.642 2.522a6.98 6.98 0 0 0 2.522 1.642c.906.352 1.94.592 3.456.661 1.518.07 2.003.086 5.87.086 3.866 0 4.35-.016 5.87-.086 1.515-.069 2.55-.31 3.455-.661a6.98 6.98 0 0 0 2.522-1.642 6.98 6.98 0 0 0 1.642-2.522c.352-.905.592-1.94.661-3.456.07-1.518.086-2.003.086-5.87 0-3.866-.016-4.35-.086-5.87-.069-1.514-.31-2.55-.661-3.455a6.98 6.98 0 0 0-1.642-2.522A6.978 6.978 0 0 0 23.562.756c-.905-.352-1.94-.592-3.456-.661-1.518-.07-2.003-.086-5.87-.086zm0 2.565c3.8 0 4.251.015 5.752.083 1.388.063 2.142.295 2.644.49a4.41 4.41 0 0 1 1.637 1.065 4.41 4.41 0 0 1 1.065 1.637c.195.502.427 1.256.49 2.644.068 1.501.083 1.951.083 5.753 0 3.8-.015 4.251-.083 5.752-.063 1.388-.295 2.142-.49 2.644a4.41 4.41 0 0 1-1.065 1.637 4.41 4.41 0 0 1-1.637 1.065c-.502.195-1.256.427-2.644.49-1.5.068-1.95.083-5.752.083-3.802 0-4.252-.015-5.753-.083-1.388-.063-2.142-.295-2.644-.49a4.41 4.41 0 0 1-1.637-1.065 4.411 4.411 0 0 1-1.065-1.637c-.195-.502-.427-1.256-.49-2.644-.068-1.5-.083-1.951-.083-5.752 0-3.802.015-4.252.083-5.753.063-1.388.295-2.142.49-2.644a4.41 4.41 0 0 1 1.065-1.637A4.41 4.41 0 0 1 5.84 3.147c.502-.195 1.256-.427 2.644-.49 1.501-.068 1.951-.083 5.753-.083z' fill='%23FFF' mask='url(%23b)'/%3E%3C/g%3E%3Cpath d='M20.24 24.991a4.746 4.746 0 1 1 0-9.49 4.746 4.746 0 0 1 0 9.49zm0-12.056a7.31 7.31 0 1 0 0 14.621 7.31 7.31 0 0 0 0-14.621zm9.3-.289a1.708 1.708 0 1 1-3.416 0 1.708 1.708 0 0 1 3.417 0' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--instagram:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M0 28.479h28.473V.009H0z'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='20' cy='20' r='20' fill='%23fb3958' fill-rule='nonzero'/%3E%3Cg transform='translate(6 6)'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cpath d='M14.237.009c-3.867 0-4.352.016-5.87.086-1.515.069-2.55.31-3.456.661a6.994 6.994 0 0 0-2.522 1.642A6.978 6.978 0 0 0 .747 4.92C.395 5.826.155 6.86.086 8.376.016 9.894 0 10.379 0 14.246c0 3.866.016 4.35.086 5.87.069 1.515.31 2.55.661 3.455.364.936.851 1.73 1.642 2.522a6.98 6.98 0 0 0 2.522 1.642c.906.352 1.94.592 3.456.661 1.518.07 2.003.086 5.87.086 3.866 0 4.35-.016 5.87-.086 1.515-.069 2.55-.31 3.455-.661a6.98 6.98 0 0 0 2.522-1.642 6.98 6.98 0 0 0 1.642-2.522c.352-.905.592-1.94.661-3.456.07-1.518.086-2.003.086-5.87 0-3.866-.016-4.35-.086-5.87-.069-1.514-.31-2.55-.661-3.455a6.98 6.98 0 0 0-1.642-2.522A6.978 6.978 0 0 0 23.562.756c-.905-.352-1.94-.592-3.456-.661-1.518-.07-2.003-.086-5.87-.086zm0 2.565c3.8 0 4.251.015 5.752.083 1.388.063 2.142.295 2.644.49a4.41 4.41 0 0 1 1.637 1.065 4.41 4.41 0 0 1 1.065 1.637c.195.502.427 1.256.49 2.644.068 1.501.083 1.951.083 5.753 0 3.8-.015 4.251-.083 5.752-.063 1.388-.295 2.142-.49 2.644a4.41 4.41 0 0 1-1.065 1.637 4.41 4.41 0 0 1-1.637 1.065c-.502.195-1.256.427-2.644.49-1.5.068-1.95.083-5.752.083-3.802 0-4.252-.015-5.753-.083-1.388-.063-2.142-.295-2.644-.49a4.41 4.41 0 0 1-1.637-1.065 4.411 4.411 0 0 1-1.065-1.637c-.195-.502-.427-1.256-.49-2.644-.068-1.5-.083-1.951-.083-5.752 0-3.802.015-4.252.083-5.753.063-1.388.295-2.142.49-2.644a4.41 4.41 0 0 1 1.065-1.637A4.41 4.41 0 0 1 5.84 3.147c.502-.195 1.256-.427 2.644-.49 1.501-.068 1.951-.083 5.753-.083z' fill='%23FFF' mask='url(%23b)'/%3E%3C/g%3E%3Cpath d='M20.24 24.991a4.746 4.746 0 1 1 0-9.49 4.746 4.746 0 0 1 0 9.49zm0-12.056a7.31 7.31 0 1 0 0 14.621 7.31 7.31 0 0 0 0-14.621zm9.3-.289a1.708 1.708 0 1 1-3.416 0 1.708 1.708 0 0 1 3.417 0' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--linkedin{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23666' fill-rule='nonzero' cx='20' cy='20' r='20'/%3E%3Cpath d='M11.07 8.406a2.743 2.743 0 0 1 2.731 2.75c0 1.52-1.225 2.753-2.731 2.753a2.743 2.743 0 0 1-2.734-2.752 2.742 2.742 0 0 1 2.734-2.751zM8.712 31.268h4.713V15.997H8.712v15.271zm7.67-15.271h4.52v2.087h.064c.63-1.201 2.167-2.467 4.46-2.467 4.773 0 5.654 3.163 5.654 7.274v8.377h-4.71v-7.426c0-1.771-.032-4.05-2.45-4.05-2.452 0-2.828 1.93-2.828 3.921v7.555h-4.71V15.997' fill='%23FFFFFE'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--linkedin:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%230071a1' fill-rule='nonzero' cx='20' cy='20' r='20'/%3E%3Cpath d='M11.07 8.406a2.743 2.743 0 0 1 2.731 2.75c0 1.52-1.225 2.753-2.731 2.753a2.743 2.743 0 0 1-2.734-2.752 2.742 2.742 0 0 1 2.734-2.751zM8.712 31.268h4.713V15.997H8.712v15.271zm7.67-15.271h4.52v2.087h.064c.63-1.201 2.167-2.467 4.46-2.467 4.773 0 5.654 3.163 5.654 7.274v8.377h-4.71v-7.426c0-1.771-.032-4.05-2.45-4.05-2.452 0-2.828 1.93-2.828 3.921v7.555h-4.71V15.997' fill='%23FFFFFE'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--youtube{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M.009 18.367V.006h26.06v18.36z'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23666' fill-rule='nonzero' cx='20' cy='20' r='20'/%3E%3Cg transform='translate(7 11)'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cpath d='M25.524 2.868A3.275 3.275 0 0 0 23.22.548C21.187 0 13.034 0 13.034 0S4.882 0 2.85.548a3.275 3.275 0 0 0-2.305 2.32C0 4.914 0 9.183 0 9.183s0 4.27.545 6.316a3.276 3.276 0 0 0 2.305 2.32c2.032.548 10.184.548 10.184.548s8.153 0 10.185-.548a3.276 3.276 0 0 0 2.305-2.32c.545-2.047.545-6.316.545-6.316s0-4.269-.545-6.315' fill='%23FFF' mask='url(%23b)'/%3E%3C/g%3E%3Cpath fill='%23666' d='M17.368 24.06l6.814-3.876-6.814-3.877v7.753'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--youtube:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath id='a' d='M.009 18.367V.006h26.06v18.36z'/%3E%3C/defs%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23d9252a' fill-rule='nonzero' cx='20' cy='20' r='20'/%3E%3Cg transform='translate(7 11)'%3E%3Cmask id='b' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3C/mask%3E%3Cpath d='M25.524 2.868A3.275 3.275 0 0 0 23.22.548C21.187 0 13.034 0 13.034 0S4.882 0 2.85.548a3.275 3.275 0 0 0-2.305 2.32C0 4.914 0 9.183 0 9.183s0 4.27.545 6.316a3.276 3.276 0 0 0 2.305 2.32c2.032.548 10.184.548 10.184.548s8.153 0 10.185-.548a3.276 3.276 0 0 0 2.305-2.32c.545-2.047.545-6.316.545-6.316s0-4.269-.545-6.315' fill='%23FFF' mask='url(%23b)'/%3E%3C/g%3E%3Cpath fill='%23d9252a' d='M17.368 24.06l6.814-3.876-6.814-3.877v7.753'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--canonical{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M20 32.735c-7.036 0-12.736-5.7-12.736-12.736 0-7.034 5.7-12.734 12.736-12.734 7.036 0 12.736 5.7 12.736 12.734 0 7.036-5.7 12.736-12.736 12.736zM40 20c0 11.045-8.955 20-20 20S0 31.045 0 20C0 8.954 8.955 0 20 0s20 8.954 20 20zM20 4.865C11.636 4.865 4.864 11.642 4.864 20c0 8.36 6.772 15.135 15.136 15.135 8.364 0 15.136-6.775 15.136-15.135 0-8.358-6.772-15.135-15.136-15.135z' fill='%23666'/%3E%3C/svg%3E")}.p-icon--canonical:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M20 32.735c-7.036 0-12.736-5.7-12.736-12.736 0-7.034 5.7-12.734 12.736-12.734 7.036 0 12.736 5.7 12.736 12.734 0 7.036-5.7 12.736-12.736 12.736zM40 20c0 11.045-8.955 20-20 20S0 31.045 0 20C0 8.954 8.955 0 20 0s20 8.954 20 20zM20 4.865C11.636 4.865 4.864 11.642 4.864 20c0 8.36 6.772 15.135 15.136 15.135 8.364 0 15.136-6.775 15.136-15.135 0-8.358-6.772-15.135-15.136-15.135z' fill='%23772953'/%3E%3C/svg%3E")}.p-icon--ubuntu{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none'%3E%3Cpath d='M39.906 20.013c0 10.987-8.905 19.893-19.892 19.893C9.028 39.906.122 31 .122 20.013.122 9.028 9.028.122 20.014.122c10.987 0 19.892 8.905 19.892 19.891z' fill='%23666'/%3E%3Cpath d='M9.69 20.013a2.558 2.558 0 1 1-5.116 0 2.558 2.558 0 0 1 5.116 0zM24.241 32.45a2.559 2.559 0 0 0 4.43-2.558 2.557 2.557 0 1 0-4.43 2.558zm4.429-22.313a2.557 2.557 0 1 0-4.43-2.556 2.557 2.557 0 0 0 4.43 2.556zm-8.656 2.584a7.292 7.292 0 0 1 7.265 6.648l3.701-.059a10.954 10.954 0 0 0-3.227-7.094 3.591 3.591 0 0 1-3.097-.24A3.592 3.592 0 0 1 22.9 9.41c-.92-.25-1.888-.384-2.886-.384-1.75 0-3.404.41-4.874 1.137l1.801 3.234a7.278 7.278 0 0 1 3.073-.677zm-7.294 7.293a7.283 7.283 0 0 1 3.102-5.967l-1.9-3.177a11.005 11.005 0 0 0-4.533 6.341 3.59 3.59 0 0 1 1.343 2.803 3.592 3.592 0 0 1-1.343 2.804 11.01 11.01 0 0 0 4.532 6.343l1.9-3.177a7.286 7.286 0 0 1-3.1-5.97zm7.294 7.295a7.267 7.267 0 0 1-3.073-.678l-1.8 3.234a10.938 10.938 0 0 0 4.873 1.137c.998 0 1.966-.132 2.886-.383a3.587 3.587 0 0 1 1.756-2.564 3.591 3.591 0 0 1 3.097-.24 10.958 10.958 0 0 0 3.227-7.096l-3.701-.058a7.293 7.293 0 0 1-7.265 6.648z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--ubuntu:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cg fill='none'%3E%3Cpath d='M39.906 20.013c0 10.987-8.905 19.893-19.892 19.893C9.028 39.906.122 31 .122 20.013.122 9.028 9.028.122 20.014.122c10.987 0 19.892 8.905 19.892 19.891z' fill='%23e95420'/%3E%3Cpath d='M9.69 20.013a2.558 2.558 0 1 1-5.116 0 2.558 2.558 0 0 1 5.116 0zM24.241 32.45a2.559 2.559 0 0 0 4.43-2.558 2.557 2.557 0 1 0-4.43 2.558zm4.429-22.313a2.557 2.557 0 1 0-4.43-2.556 2.557 2.557 0 0 0 4.43 2.556zm-8.656 2.584a7.292 7.292 0 0 1 7.265 6.648l3.701-.059a10.954 10.954 0 0 0-3.227-7.094 3.591 3.591 0 0 1-3.097-.24A3.592 3.592 0 0 1 22.9 9.41c-.92-.25-1.888-.384-2.886-.384-1.75 0-3.404.41-4.874 1.137l1.801 3.234a7.278 7.278 0 0 1 3.073-.677zm-7.294 7.293a7.283 7.283 0 0 1 3.102-5.967l-1.9-3.177a11.005 11.005 0 0 0-4.533 6.341 3.59 3.59 0 0 1 1.343 2.803 3.592 3.592 0 0 1-1.343 2.804 11.01 11.01 0 0 0 4.532 6.343l1.9-3.177a7.286 7.286 0 0 1-3.1-5.97zm7.294 7.295a7.267 7.267 0 0 1-3.073-.678l-1.8 3.234a10.938 10.938 0 0 0 4.873 1.137c.998 0 1.966-.132 2.886-.383a3.587 3.587 0 0 1 1.756-2.564 3.591 3.591 0 0 1 3.097-.24 10.958 10.958 0 0 0 3.227-7.096l-3.701-.058a7.293 7.293 0 0 1-7.265 6.648z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E")}.p-icon--medium{height:1.25rem;width:1.25rem}.p-icon--large{height:1.5rem;width:1.5rem}.p-icon--x-large{height:1.75rem;width:1.75rem;height:2.25rem;width:2.25rem}.p-icon--xx-large{height:3rem;width:3rem}[class*=p-button-] [class*=p-icon-]{top:-1px;vertical-align:middle}.p-image--bordered{border:1px solid #cdcdcd}.p-image--shadowed{box-shadow:0 1px 5px 1px hsla(0,0%,80%,.2)}.p-inline-images{display:block;list-style:none;margin-left:0;padding-left:0;text-align:center}.p-inline-images__item{display:inline-block;margin:1rem;overflow:hidden;text-align:center;vertical-align:middle}@media only screen and (min-width:768px){.p-inline-images__item{margin:1.875rem}}.p-inline-images__item img,.p-inline-images__logo{max-height:3rem;max-width:7rem;width:auto}@media screen and (min-width:768px){.p-inline-images__item img,.p-inline-images__logo{max-height:5.5rem;max-width:9rem}}.p-inline-images__img{display:inline-block;margin:2rem;max-width:6rem;text-align:center;vertical-align:middle;width:100%}@media (min-width:768px){.p-inline-images__img{margin:3rem;max-width:11.25rem}}.p-link--soft{color:#111}.p-link--soft:visited{color:#111;text-decoration:none}.p-link--soft:hover{color:#007aa6}.p-link--soft.is-selected{font-weight:400}.p-link--strong{font-weight:400}.p-link--strong,.p-link--strong:visited{color:currentColor}.p-link--strong:hover{color:#007aa6;text-decoration:underline}.p-link--inverted{color:#f7f7f7;font-weight:400}.p-link--inverted:hover{color:#f7f7f7}.p-link--inverted:visited{color:#dedede}@supports ((-webkit-mask-size:1em) or (mask-size:1em)) or (-webkit-mask-size:1em){.p-link--external:after{-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23111' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E") no-repeat 0 0/cover;background-color:currentColor;content:"";margin:0 0 0 .25em;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23111' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E") no-repeat 0 0/cover;padding-right:.75em}.p-link--no-underline{border:0}}@supports not (((-webkit-mask-size:1em) or (mask-size:1em)) or (-webkit-mask-size:1em)){.p-link--external{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23007aa6' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E");background-position:100% 0;background-repeat:no-repeat;background-size:.75em;margin-top:-.25em;padding:.25em 1em 0 0}.p-link--external.p-link--soft,.p-link--external.p-link--strong,.p-link--external.sidebar__link{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23111' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-link--external.p-link--soft:hover,.p-link--external.sidebar__link:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23007aa6' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-link--external.p-link--inverted{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23f7f7f7' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23f7f7f7' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23f7f7f7' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-link--external.p-link--inverted:visited{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23dedede' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23dedede' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23dedede' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-link--external.sidebar__link{display:inline-block;padding:0 1em 1em 0}.p-link--no-underline{border:0}.p-button--base .p-link--external,.p-button--neutral .p-link--external,.p-button .p-link--external{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23111' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23111' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E");padding-top:0}.p-button--brand .p-link--external,.p-button--negative .p-link--external,.p-button--positive .p-link--external{padding-top:0}.p-button--brand .p-link--external,.p-button--negative .p-link--external,.p-button--positive .p-link--external,.p-strip--accent * .p-link--external.p-link--soft,.p-strip--dark * .p-link--external.p-link--soft,.p-strip--image.is-dark * .p-link--external.p-link--soft{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23fff' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23fff' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23fff' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-strip--accent * .p-link--external.p-link--soft:hover,.p-strip--dark * .p-link--external.p-link--soft:hover,.p-strip--image.is-dark * .p-link--external.p-link--soft:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23007aa6' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23007aa6' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}.p-strip--accent * .p-link--external.p-link--strong,.p-strip--dark * .p-link--external.p-link--strong,.p-strip--image.is-dark * .p-link--external.p-link--strong{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.75em' height='.75em' viewBox='0 0 16 16'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23fff' d='M4.867 1.313C.6 1.32.067 1.443.067 4.51v6.4c0 3.2.533 3.2 5.333 3.2h2.133c4.8 0 5.334 0 5.334-3.2v-1.6h-1.6v1.068c0 2.133 0 2.133-4.267 2.133H5.933c-4.266 0-4.266 0-4.266-2.132V5.044c0-1.93.034-2.112 3.2-2.13v-1.6z'/%3E%3Cpath d='M-1-1h16v16H-1'/%3E%3Cpath fill='%23fff' d='M6.435 2.16c.11-.446 7.113-2.196 7.448-1.86.335.334-1.416 7.335-1.863 7.447-.447.112-5.697-5.14-5.586-5.586z'/%3E%3Cpath fill='%23fff' d='M9.032 3.38L4.705 7.708l1.767 1.767L10.8 5.148'/%3E%3C/g%3E%3C/svg%3E")}}.p-top{border-bottom:1px dotted #cdcdcd;clear:both;margin:20px 0}.p-top__link{background:#fff;color:#111;float:right;margin-right:5px;padding:0 5px;position:relative;text-decoration:none;top:-.725rem}.p-list-tree .p-list-tree[aria-hidden=false]:after,.p-list-tree__item--group:after{background-position:50%;background-repeat:no-repeat;content:" ";display:block;height:.9375rem;left:-.75rem;pointer-events:none;position:absolute;top:.4rem;width:.9375rem}.p-list-tree{border-left:1px solid #cdcdcd;list-style-type:none;margin-left:1rem;padding:0 0 0 .25rem}.p-list-tree__item{margin-top:.125rem;padding-left:.8rem;position:relative}.p-list-tree__item:before{background:#cdcdcd;content:" ";display:block;height:1px;left:-.25rem;pointer-events:none;position:absolute;top:.8rem;width:.625rem}.p-list-tree__item--group:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='15' width='15' viewBox='0 0 15 15'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a' fill='%23FFF'/%3E%3Cpath stroke='%23888' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23888' d='M7 4h1v7H7z'/%3E%3Cpath fill='%23888' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E")}.p-list-tree__toggle{background:transparent;border:0;font-weight:400;margin:0 0 0 -1.75rem;padding:0 0 0 1.75rem;transition-duration:0s;width:auto}.p-list-tree__toggle:hover{background:transparent;color:#007aa6;text-decoration:underline}.p-list-tree__toggle:focus{background:transparent;outline:1px dotted #cdcdcd}.p-list-tree .p-list-tree{display:none;margin-left:0}.p-list-tree .p-list-tree[aria-hidden=false]{display:block}.p-list-tree .p-list-tree[aria-hidden=false]:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' height='15' width='15' viewBox='0 0 15 15'%3E%3Cdefs%3E%3Cpath id='a' d='M0 0h15v15H0z'/%3E%3C/defs%3E%3Cg fill-rule='evenodd' fill='none'%3E%3Cuse xlink:href='%23a' fill='%23FFF'/%3E%3Cpath stroke='%23888' d='M.5.5h14v14H.5z'/%3E%3Cpath fill='%23888' d='M4 8V7h7v1z'/%3E%3C/g%3E%3C/svg%3E");z-index:1}.p-list-step,.p-stepped-list--detailed{counter-reset:b;list-style:none;margin-left:4rem;padding-left:0}.p-list-step>li:before,.p-stepped-list--detailed>li:before{background-color:#666;border-radius:100%;color:#fff;content:counter(b);counter-increment:b;direction:rtl;display:inline-block;margin-left:-4rem;margin-top:.1rem;padding:0;position:absolute;text-align:center;width:2.5rem}@media (max-width:768px){.p-list-step>li:before,.p-stepped-list--detailed>li:before{margin-top:0;width:2rem}}.p-list{list-style:none;margin-left:0;padding-left:0}.p-list .p-list__item{padding-bottom:.25rem;padding-top:.25rem}form .p-list .p-list__item{padding-bottom:0;padding-top:0}form .p-list .p-list__item label{margin-bottom:.1rem}.p-list--divided{list-style:none;margin-left:0;padding-left:0}.p-list--divided .p-list__item{padding-bottom:.25rem;padding-top:.25rem}form .p-list--divided .p-list__item{padding-bottom:0;padding-top:0}form .p-list--divided .p-list__item label{margin-bottom:.1rem}.p-list--divided .p-list__item{position:relative}.p-list--divided .p-list__item:after{border-bottom:1px dotted #cdcdcd;bottom:0;content:"";height:1px;left:0;position:absolute;right:0}.p-list--divided .p-list__item .last-item:after,.p-list--divided .p-list__item:last-of-type:after{border-bottom:0}.p-list--divided.is-split .p-list__item:last-of-type{border-bottom:1px dotted #cdcdcd}.is-ticked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Ccircle fill='%23333' cx='7' cy='7' r='7'/%3E%3Cpath fill='%23fff' d='M6.1 10.813L2.41 8.105l1.184-1.613L5.9 8.187l4.393-4.394 1.414 1.414z'/%3E%3C/svg%3E");background-position-y:.5625rem;background-repeat:no-repeat;padding-left:2rem}.p-inline-list{margin-left:0;padding-left:0}.p-inline-list__item{display:inline;list-style:none;margin-right:1.25rem}.p-inline-list__item .last-item,.p-inline-list__item:last-of-type{margin-right:0}.p-inline-list--middot{margin-left:0;padding-left:0}.p-inline-list--middot .p-inline-list__item{display:inline;list-style:none;margin-right:1.25rem;margin-right:1.25em;position:relative}.p-inline-list--middot .p-inline-list__item .last-item,.p-inline-list--middot .p-inline-list__item:last-of-type{margin-right:0}.p-inline-list--middot .p-inline-list__item:after{color:#666;content:"\00b7";font-size:1.4em;line-height:0;position:absolute;right:-.5em;top:.4em}.p-inline-list--middot .p-inline-list__item:hover:after{color:#666}.p-inline-list--middot .p-inline-list__item .last-item:after,.p-inline-list--middot .p-inline-list__item:last-of-type:after{content:""}.p-list-step__item{float:none;margin-left:0;width:100%}.p-list-step__content{margin-top:-1rem}.p-list-step__bullet{display:none}@media (min-width:768px){.p-stepped-list--detailed .p-list-step__content{margin-top:0}.p-stepped-list--detailed .p-list-step__item{display:-ms-flexbox;display:flex;margin:0}.p-stepped-list--detailed .p-list-step__item>:nth-child(2n){margin-left:3.2877%}.p-stepped-list--detailed .p-list-step__item>:nth-child(2n),.p-stepped-list--detailed .p-list-step__item>:nth-child(odd){display:block;float:left;min-height:1px;position:relative;*margin-right:-1px;width:48.35615%}}@media (min-width:768px){@supports ((-webkit-columns:1) or (columns:1)){[class*=p-list].is-split{column-gap:2rem;columns:2}[class*=p-list].is-split .p-list__item{display:inline-block;width:100%}}@supports not ((-webkit-columns:1) or (columns:1)){[class*=p-list].is-split{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}[class*=p-list].is-split .p-list__item{width:calc(50% - .5rem)}}[class*=p-list].is-split:nth-child(2n-1){margin-right:1rem}}.p-matrix{-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin-bottom:1.5rem;margin-left:0;padding-left:0}.p-matrix,.p-matrix__item{display:-ms-flexbox;display:flex}.p-matrix__item{border-top:1px solid #cdcdcd;-ms-flex:1 1 auto;flex:1 1 auto;padding-bottom:1rem;padding-top:.9375rem}@media (min-width:620px){.p-matrix__item{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:33.333%}}@media (min-width:620px) and (max-width:1030px){.p-matrix__item{-ms-flex-direction:column;flex-direction:column}}@media (min-width:768px){.p-matrix__item{border-right:1px solid #cdcdcd;padding-left:1rem;padding-right:1rem;width:33.333%}.p-matrix__item:empty{display:block}.p-matrix__item:nth-child(3n+1){padding-left:0}.p-matrix__item:nth-child(3n+3){border-right:0}.p-matrix__item:first-child,.p-matrix__item:nth-child(2),.p-matrix__item:nth-child(3){border-top:0}}@media (min-width:1030px){.p-matrix__item{border-right:1px solid #cdcdcd;padding:1rem;width:33.333%}.p-matrix__item:empty{display:block}.p-matrix__item:nth-child(3n+1){padding-left:0}.p-matrix__item:nth-child(3n+3){border-right:0;padding-right:0}.p-matrix__item:last-child,.p-matrix__item:nth-last-child(2),.p-matrix__item:nth-last-child(3){border-bottom:0}}.p-matrix__img{-ms-flex-item-align:start;align-self:flex-start;margin-bottom:1rem;margin-right:1rem;max-height:3rem;max-width:3rem;width:auto}.p-matrix__content{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-direction:column;flex-direction:column;padding-right:1rem}@media (min-width:1030px){.p-matrix__content{width:calc(100% - 4rem)}}.p-matrix__title{margin-top:-.5rem}.p-matrix__desc{margin-bottom:.1rem;margin-top:-1rem}.p-matrix__desc>p:last-child{margin-bottom:0}.p-matrix__desc+.p-matrix__desc{margin-top:0}@media (max-width:768px){.p-matrix__desc{margin-top:-.5rem}}.p-media-object__image{-ms-flex-item-align:start;align-self:flex-start;border-radius:.125rem;-ms-flex-preferred-size:inherit;flex-basis:inherit;-ms-flex-negative:0;flex-shrink:0;margin-right:1rem;max-height:5rem;max-width:5rem;vertical-align:middle;width:auto}.p-media-object__content{margin-bottom:.6rem;margin-top:0}.p-media-object__image.is-round{border-radius:50%}.p-media-object__title{margin-bottom:.2rem;margin-top:-.5rem}@media only screen and (min-width:768px){.p-media-object__title{margin-bottom:-.05rem}}.p-media-object__meta-list{list-style:none;margin:0;padding-left:0;padding-top:.5rem}.p-media-object__meta-list-item--date{background-image:url('data:image/svg+xml;utf8,')}.p-media-object__meta-list-item--location{background-image:url('data:image/svg+xml;utf8,')}.p-media-object__meta-list-item--venue{background-image:url('data:image/svg+xml;utf8,')}.p-media-object--large .p-media-object__image{max-height:6rem;max-width:6rem}.p-media-object--large .p-media-object__title{margin-bottom:.3rem;margin-top:-.5rem}@media only screen and (min-width:768px){.p-media-object--large .p-media-object__title{margin-bottom:-.2rem}}.p-modal{-ms-flex-align:center;align-items:center;background:hsla(0,0%,7%,.85);content:"";display:-ms-flexbox;display:flex;height:100vh;-ms-flex-pack:center;justify-content:center;left:0;margin:0;padding:1.5rem;top:0;width:100%}.p-modal,.p-modal__dialog{overflow:scroll;position:absolute}.p-modal__dialog{bottom:1.5rem;left:1.5rem;max-width:64.875rem;right:1.5rem;top:1.5rem;width:auto}@media screen and (min-width:768px){.p-modal__dialog{bottom:auto;left:auto;overflow:visible;position:relative;right:auto;top:auto}}.p-modal__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.p-modal__title{-ms-flex-item-align:end;align-self:flex-end}.p-modal__close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='90' width='90'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h90v90H0z'/%3E%3Cpath d='M14.52 6L6 14.52 36.48 45 6 75.49 14.52 84 45 53.52 75.48 84 84 75.49 53.52 45 84 14.52 75.48 6 45 36.49z' fill='%23888'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:1rem;border:0;box-sizing:content-box;height:1rem;margin:-1rem -1rem 0 0;padding:1rem;text-indent:-999em;width:1rem}.p-modal__close:focus{outline:1px solid #007aa6;outline-offset:2px}.p-notification,.p-notification--caution,.p-notification--information,.p-notification--negative,.p-notification--positive{display:-ms-flexbox;display:flex;padding:0}.p-notification{position:relative}.p-notification:before{top:0;background-color:#666;content:"";position:absolute;height:.1875rem;width:auto;left:0;right:0}.p-notification+.p-notification{margin-top:1.5rem}.p-notification__response{background-position:1rem 1.15rem;background-repeat:no-repeat;background-size:1rem;padding:.9rem 1rem .5rem}.p-notification__action:before,.p-notification__status:after{content:" "}.p-notification .p-icon--close{background-color:transparent;background-size:1rem;border:0;margin:1.1875rem 1rem auto auto;padding:.5rem}.p-notification--floating,.p-notification__response{max-width:60em}.p-notification--positive{position:relative}.p-notification--positive:before{top:0;background-color:#0e8420;content:"";position:absolute;height:.1875rem;width:auto;left:0;right:0}.p-notification--positive .p-notification__response{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(1 1)' fill='none' fill-rule='evenodd'%3E%3Ccircle stroke='%230e8420' stroke-width='1.5' fill='%230e8420' cx='7.25' cy='7.25' r='7.25'/%3E%3Cpath fill='%23fff' d='M11.05 4.173l-.066.058L6.25 8.378l-2.776-2.38-.839.948L6.25 10.75l5.5-5.787-.7-.79z'/%3E%3C/g%3E%3C/svg%3E");padding-left:3rem}.p-notification--caution{position:relative}.p-notification--caution:before{top:0;background-color:#f99b11;content:"";position:absolute;height:.1875rem;width:auto;left:0;right:0}.p-notification--caution .p-notification__response{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16'%3E%3Cg color='%23000'%3E%3Cpath fill='none' d='M0 0h16v16H0z'/%3E%3Cpath stroke-linejoin='round' fill='%23f99b11' transform='matrix(2.28 0 0 2.437 -2180.8 -490.52)' stroke='%23f99b11' stroke-width='.848' d='M963.07 207.03h-6.15l3.08-5.33z'/%3E%3Cpath d='M7 5v5h2V5H7zm0 6v2h2v-2H7z' fill='%23111'/%3E%3C/g%3E%3C/svg%3E");padding-left:3rem}.p-notification--negative{position:relative}.p-notification--negative:before{top:0;background-color:#c7162b;content:"";position:absolute;height:.1875rem;width:auto;left:0;right:0}.p-notification--negative .p-notification__response{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='17' viewBox='0 0 16 17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 .362h16v16H0z'/%3E%3Ccircle stroke='%23c7162b' stroke-width='1.5' fill='%23c7162b' cx='8' cy='8.362' r='7.25'/%3E%3Cpath d='M5 5.362l6 6M11 5.362l-6 6' stroke='%23fff' stroke-width='1.5'/%3E%3C/g%3E%3C/svg%3E");padding-left:3rem}.p-notification--information{position:relative}.p-notification--information:before{top:0;background-color:#335280;content:"";position:absolute;height:.1875rem;width:auto;left:0;right:0}.p-pagination__link--next:after,.p-pagination__link--previous:before{color:#666;content:"\203A";font-size:2rem;position:absolute;top:1rem}.p-pagination{display:-ms-flexbox;display:flex;width:100%}.p-pagination__link,.p-pagination__link--next,.p-pagination__link--previous{margin-top:0;padding:1rem;position:relative;width:50%}.p-pagination__link--next:hover,.p-pagination__link--previous:hover,.p-pagination__link:hover{background:#f7f7f7;text-decoration:none}.p-pagination__link--previous{padding-left:2.5rem;text-align:left}@media (max-width:460px){.p-pagination__link--previous{width:auto}.p-pagination__link--previous:only-child{width:100%}.p-pagination__link--previous:not(:only-child) *{display:none;max-width:.25rem;padding-left:1.5rem}}.p-pagination__link--previous:before{left:.5rem;transform:scaleX(-1)}.p-pagination__link--next{padding-right:2.5rem;text-align:right}@media (max-width:460px){.p-pagination__link--next{width:100%}}.p-pagination__link--next:only-child{margin-left:auto}.p-pagination__link--next:after{right:.5rem}.p-pagination__label,.p-pagination__title{color:#111;display:block;margin-top:0;width:100%}.p-pagination__label{margin-bottom:.25rem}.p-pagination__title{font-size:1.125rem}@media (min-width:620px){.p-pagination__title{font-size:1.25rem}}.p-pull-quote{border:0;margin:1.5rem 0 2rem;overflow:visible;padding:0 2rem;position:relative}.p-pull-quote>p:first-of-type:before{color:#cdcdcd;display:inline-block;font-size:3rem;font-weight:700;max-width:1.25rem;position:absolute;content:"\201C\2002";left:.25rem;top:.05rem}@media (max-width:768px){.p-pull-quote>p:first-of-type:before{font-size:2.75rem;top:.3rem}}.p-pull-quote>p:last-of-type{margin-bottom:0}.p-pull-quote>p:last-of-type:after{color:#cdcdcd;display:inline-block;font-size:3rem;font-weight:700;max-width:1.25rem;position:absolute;content:"\2002\201E";margin-left:.25rem;margin-top:-2.2rem}@media (max-width:768px){.p-pull-quote>p:last-of-type:after{font-size:2.75rem;margin-top:-1.7rem}}.p-pull-quote__citation{font-style:italic;margin-top:.5rem}.p-search-box__button,.p-search-box__reset{background:#fff;border:1px solid #cdcdcd;display:block;height:100%;margin:0;padding:0 .5rem;position:absolute;top:0;width:2.5rem}.p-search-box__button:hover,.p-search-box__reset:hover{background:inherit}.p-search-box__button:hover:disabled,.p-search-box__reset:hover:disabled{cursor:not-allowed}.p-search-box{box-shadow:inset 0 1px 2px rgba(0,0,0,.12);display:-ms-flexbox;display:flex;margin-bottom:1.7rem;position:relative}.p-search-box__input{box-shadow:none;-ms-flex-positive:2;flex-grow:2;margin-bottom:0}.p-search-box__input::-webkit-search-cancel-button{-webkit-appearance:none}.p-search-box__input:not(:valid)~.p-search-box__reset{display:none}.p-search-box__button{right:0}.p-search-box__reset{border-left:0;border-right:0;right:2.5rem}.p-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:3px;margin:.5rem 0;padding:0;width:100%}.p-slider::-webkit-slider-runnable-track{border:1px solid #cdcdcd;border-radius:3px;height:6px}.p-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;border:0;border-radius:2px;box-shadow:0 0 2px 1px rgba(0,0,0,.2);height:24px;margin-top:-10.5px;width:24px}.p-slider::-webkit-slider-thumb:hover{cursor:pointer}.p-slider::-moz-range-track{background:#fff;border:1px solid #cdcdcd;border-radius:2px;height:4px}.p-slider::-moz-range-progress{background-color:#335280;border-radius:2px;height:4px}.p-slider::-moz-range-thumb{background:#fff;border:0;border-radius:2px;box-shadow:0 0 2px 1px rgba(0,0,0,.2);height:24px;width:24px}.p-slider::-moz-range-thumb:hover{cursor:pointer}.p-slider::-moz-focus-outer{border:0}.p-slider::-ms-track{background:transparent;border-color:transparent;border-width:12px;color:transparent;height:6px;width:calc(100% - 12px)}.p-slider::-ms-fill-lower{background:#335280;border:1px solid #cdcdcd;border-radius:2px}.p-slider::-ms-fill-upper{background:#fff;border:1px solid #cdcdcd;border-radius:2px}.p-slider::-ms-thumb{background:#fff;border:0;border-radius:2px;box-shadow:0 0 2px 1px rgba(0,0,0,.2);height:24px;margin:0 2px;width:24px}.p-slider::-ms-thumb:hover{cursor:pointer}.p-slider::-ms-tooltip{display:none}.p-slider:focus{outline:none}.p-slider:focus::-webkit-slider-thumb{outline:1px solid #19b6ee;outline-offset:2px}.p-slider:focus::-moz-range-thumb{outline:1px solid #19b6ee;outline-offset:2px}.p-slider:focus::-ms-thumb{outline:1px solid #19b6ee;outline-offset:2px}.p-slider:disabled{opacity:.5}.p-slider__wrapper{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;width:100%}.p-slider__input{height:2.625em;margin:0 0 0 1rem;min-width:3.5em;text-align:center;width:5%}@media only screen and (max-width:1030px){.is-shallow[class^=p-strip]{padding-bottom:1rem;padding-top:1rem}}@media only screen and (min-width:1030px){.is-shallow[class^=p-strip]{padding-bottom:2rem;padding-top:2rem}}@media only screen and (max-width:1030px){.p-strip,.p-strip--accent,.p-strip--dark,.p-strip--image,.p-strip--light{padding-bottom:2rem;padding-top:2rem}}@media only screen and (min-width:1030px){.p-strip,.p-strip--accent,.p-strip--dark,.p-strip--image,.p-strip--light{padding-bottom:4rem;padding-top:4rem}}@media only screen and (max-width:1030px){.is-deep[class^=p-strip]{padding:3rem 0}}@media only screen and (min-width:1030px){.is-deep[class^=p-strip]{padding:6rem 0}}.p-strip,.p-strip--accent,.p-strip--dark,.p-strip--image,.p-strip--light{clear:both;width:100%}.p-strip{background-color:transparent}.p-strip--light{background-color:#f7f7f7}.p-strip--dark{background-color:#111;color:#f7f7f7}.p-strip--accent{background-color:#333;color:#fff}.p-strip--image{background-repeat:no-repeat;background-size:cover}.p-strip--image.is-light{color:#000}.p-strip--image.is-dark{color:#fff}[class^=p-strip].is-bordered{border-bottom:1px solid #cdcdcd;margin-bottom:-.0625rem}.p-switch{height:1.5rem;margin:0;position:relative;width:3rem}.p-switch:checked+.p-switch__slider:before{left:50%}.p-switch:focus{outline:0}.p-switch:focus+.p-switch__slider{outline:1px solid #19b6ee;outline-offset:2px}.p-switch__slider{background:linear-gradient(90deg,#335280 50%,#cdcdcd 0);box-shadow:inset 0 2px 5px 0 hsla(0,0%,7%,.2);height:1.5rem;margin:.1rem 0 1rem;position:relative;width:3rem}.p-switch__slider:before{transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.215,.61,.355,1);background:#fff;content:"";height:1.5rem;left:0;position:absolute;width:1.5rem}button.p-switch{-ms-flex-align:stretch;align-items:stretch;border:0;display:-ms-inline-flexbox;display:inline-flex;height:1.5rem;padding:initial;width:3rem}button.p-switch :first-child,button.p-switch :last-child{box-shadow:inset 0 2px 5px 0 hsla(0,0%,7%,.2);line-height:1.5rem;margin:0;text-align:center;width:50%}button.p-switch :first-child{background-color:#335280;border-radius:2px 0 0 2px;color:#fff}button.p-switch :last-child{background-color:#cdcdcd;border-radius:0 2px 2px 0}button.p-switch:before{transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.215,.61,.355,1);background:inherit;background-color:#fff;border-radius:.125rem;box-shadow:0 1px 5px 1px hsla(0,0%,7%,.2);content:"";display:block;height:100%;left:0;max-height:2rem;padding:0;position:absolute;top:0;width:50%}button.p-switch:after{display:none}button.p-switch[aria-checked=true]:before{left:50%}.p-table-expanding{display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-ms-flex-pack:justify;justify-content:space-between}.p-table-expanding tbody{margin:0}.p-table-expanding tr{display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;width:100%}.p-table-expanding tr+tr{margin:0}.p-table-expanding td,.p-table-expanding th{display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-positive:1;flex-grow:1;margin:0;word-break:break-word}.p-table-expanding td.p-table-expanding__panel,.p-table-expanding th.p-table-expanding__panel{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.p-table-expanding td.p-table-expanding__panel[aria-hidden=true],.p-table-expanding th.p-table-expanding__panel[aria-hidden=true]{display:none}.p-table-expanding td.p-table-expanding__panel .row,.p-table-expanding th.p-table-expanding__panel .row{max-width:100%;padding:0;width:100%}@media screen and (max-width:1030px){.p-table--mobile-card thead{display:none}.p-table--mobile-card tbody{-ms-flex-pack:justify;justify-content:space-between}.p-table--mobile-card tbody,.p-table--mobile-card tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.p-table--mobile-card tr{border-top:1px solid #cdcdcd;margin:-1px 0 .5rem;width:100%}.p-table--mobile-card tbody th,.p-table--mobile-card td{-ms-flex-align:start;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:left!important;justify-content:left!important;margin:0;overflow:visible;padding-bottom:0;padding-top:0;text-align:left!important;width:25%}.p-table--mobile-card tbody th[aria-label],.p-table--mobile-card td[aria-label]{text-align:right}.p-table--mobile-card tbody th[aria-label]:before,.p-table--mobile-card td[aria-label]:before{content:attr(aria-label);display:block;-ms-flex:0 1 auto;flex:0 1 auto;margin-bottom:0;width:100%}.p-table--mobile-card tbody th.u-align--right,.p-table--mobile-card td.u-align--right{-ms-flex-pack:unset!important;justify-content:unset!important}.p-table--mobile-card .p-contextual-menu,.p-table--mobile-card .p-contextual-menu--center,.p-table--mobile-card .p-contextual-menu--left{width:100%}.p-table--mobile-card .p-contextual-menu--center [role=menuitem],.p-table--mobile-card .p-contextual-menu--left [role=menuitem],.p-table--mobile-card .p-contextual-menu [role=menuitem]{display:none}.p-table--mobile-card .p-contextual-menu__dropdown{box-shadow:none;display:block;max-width:100%;position:relative}.p-table--mobile-card .p-contextual-menu__dropdown:before{display:none}.p-table--mobile-card .p-contextual-menu__group{padding:0}.p-table--mobile-card .p-contextual-menu__group+.p-contextual-menu__group{margin-top:.5rem;padding-top:.5rem}.p-table--mobile-card .p-contextual-menu__link{border:1px solid #cdcdcd;border-radius:.125rem;box-sizing:border-box;color:#000;cursor:pointer;display:block;line-height:1rem;outline:none;padding:.5rem 1.5rem;text-align:center;text-decoration:none;width:100%}.p-table--mobile-card .p-contextual-menu__link+.p-contextual-menu__link{margin-top:.25rem}}.p-table--sortable th[role=columnheader][aria-sort=ascending]:after,.p-table--sortable th[role=columnheader][aria-sort=descending]:after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='4' width='10' viewBox='0 0 10 4'%3E%3Cpath d='M3.637 3.138c-.518-.365-1.052-.778-1.6-1.238C1.486 1.44.946.948.414.423.273.283.135.14 0 0h1.54c.305.29.62.57.948.846.138.116.277.23.417.34.163.13.328.257.495.38.085.062.17.123.257.184.397.282.935.626 1.315.848h.054c.38-.222.918-.566 1.315-.848.4-.28.79-.583 1.17-.904C7.837.57 8.153.29 8.457 0h1.54c-.134.14-.272.282-.414.422C9.05.948 8.51 1.442 7.963 1.9c-.55.46-1.084.873-1.602 1.238S5.39 3.79 5 4c-.39-.21-.845-.497-1.363-.862z' fill='%23888' fill-rule='evenodd'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100%;content:"";display:inline-block;height:.4rem;margin-left:.25rem;vertical-align:middle;width:1rem}.p-table--sortable{table-layout:fixed}.p-table--sortable th[role=columnheader][aria-sort]{-ms-flex-align:center;align-items:center;cursor:pointer;white-space:nowrap}.p-table--sortable th[role=columnheader][aria-sort=descending]:after{transform:rotate(180deg)}.p-table--sortable th[role=columnheader][aria-sort]:hover{color:#007aa6;text-decoration:underline}.p-tabs{border-radius:0;overflow:hidden;padding:0;position:relative}.p-tabs:before{bottom:0;color:#666;content:"\203A";display:block;font-size:2rem;line-height:1.5rem;padding-right:1.5rem;pointer-events:none;position:absolute;right:.5rem;text-align:right;top:15%;width:1rem;z-index:3}@media screen and (min-width:768px){.p-tabs:before{display:none}}.p-tabs__list{margin:0 auto 1rem;overflow-x:scroll;padding:0;position:relative;white-space:nowrap;width:100%}@media screen and (min-width:768px){.p-tabs__list{max-width:64.875rem;overflow:hidden}}.p-tabs__item{display:inline-block;float:none;margin:0;padding:0;width:auto}@media screen and (min-width:768px){.p-tabs__item{float:left}}.p-tabs__item:last-child{margin-right:3rem}@media screen and (min-width:768px){.p-tabs__item:last-child{margin-right:0}}.p-tabs__link{color:#000;display:inline-block;padding:.75rem 1rem}.p-tabs__link:active,.p-tabs__link:hover,.p-tabs__link:visited{color:#000;text-decoration:none}.p-tabs__link:hover,.p-tabs__link[aria-selected=true]{position:relative}.p-tabs__link:hover:before,.p-tabs__link[aria-selected=true]:before{bottom:0;background-color:#666;content:"";position:absolute;height:.1875rem;width:auto;left:-1px;right:-1px;z-index:1}.p-tooltip{position:relative}.p-tooltip__message{background-color:#111;border:0;border-radius:.125rem;color:#fff;display:none;left:0;margin-bottom:0;min-width:155px;padding:.5rem 1rem;position:absolute;text-align:left;text-decoration:initial;top:100%;transform:translateX(0) translateY(13px);white-space:pre;z-index:1}.p-tooltip__message:before{border-bottom:8px solid #111;border-left:8px solid transparent;border-right:8px solid transparent;bottom:100%;content:"";height:0;left:1rem;pointer-events:none;position:absolute;width:0}.p-tooltip:focus .p-tooltip__message,.p-tooltip:hover .p-tooltip__message{display:inline;text-decoration:initial}.p-tooltip--btm-center .p-tooltip__message{bottom:inherit;left:50%;top:100%;transform:translateX(-50%) translateY(13px)}.p-tooltip--btm-center .p-tooltip__message:before{left:50%;transform:translateX(-50%)}.p-tooltip--btm-right .p-tooltip__message{bottom:inherit;left:auto;right:0;top:100%;transform:translateY(13px)}.p-tooltip--btm-right .p-tooltip__message:before{left:auto;right:.5rem}.p-tooltip--top-left .p-tooltip__message{bottom:100%;left:0;top:auto;transform:translateX(0) translateY(-13px)}.p-tooltip--top-left .p-tooltip__message:before{border-bottom:8px solid transparent;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #111;bottom:-1rem;left:.5rem}.p-tooltip--top-center .p-tooltip__message{bottom:100%;left:50%;top:auto;transform:translateX(-50%) translateY(-13px)}.p-tooltip--top-center .p-tooltip__message:before{border-bottom:8px solid transparent;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #111;bottom:-1rem;left:50%;transform:translateX(-50%)}.p-tooltip--top-right .p-tooltip__message{bottom:100%;left:auto;right:0;top:auto;transform:translateX(0) translateY(-13px)}.p-tooltip--top-right .p-tooltip__message:before{border-bottom:8px solid transparent;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #111;bottom:-1rem;left:auto;right:.5rem}.p-tooltip--right .p-tooltip__message{bottom:inherit;left:100%;top:50%;transform:translateX(14px) translateY(-50%)}.p-tooltip--right .p-tooltip__message:before{border-bottom:8px solid transparent;border-left:8px solid transparent;border-right:8px solid #111;border-top:8px solid transparent;bottom:inherit;left:0;top:50%;transform:translateX(-16px) translateY(-50%)}.p-tooltip--left .p-tooltip__message{bottom:inherit;left:-16px;top:50%;transform:translateX(-100%) translateY(-50%)}.p-tooltip--left .p-tooltip__message:before{border-bottom:8px solid transparent;border-left:8px solid #111;border-right:8px solid transparent;border-top:8px solid transparent;bottom:inherit;left:100%;top:50%;transform:translateX(0) translateY(-50%)}.u-align--center{-ms-flex-pack:center!important;justify-content:center!important;text-align:center!important}.u-align--left{-ms-flex-pack:start!important;justify-content:flex-start!important;text-align:left!important}.u-align--right{-ms-flex-pack:end!important;justify-content:flex-end!important;text-align:right!important}.u-align--bottom{margin-top:auto!important}.u-align-text--center{margin-left:auto!important;margin-right:auto!important;text-align:center!important}.u-align-text--left{margin-right:auto!important;text-align:left!important}.u-align-text--right{margin-left:auto!important;text-align:right!important}.u-animation--spin{animation:a 1s infinite linear}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.u-baseline-grid{position:relative}.u-baseline-grid:after{background:linear-gradient(0deg,rgba(255,0,0,.3),rgba(255,0,0,.3) 1px,transparent 0,transparent);background-size:100% .5rem;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:4}.u-baseline-grid__toggle{bottom:1.5rem;position:fixed;right:1.5rem;z-index:5}.u-embedded-media{height:0;margin-top:.5rem;max-width:100%;overflow:hidden;padding-bottom:56.25%;position:relative}.u-embedded-media__element{height:100%;left:0;position:absolute;top:0;width:100%}@media only screen and (min-width:768px){.u-equal-height{display:-ms-flexbox;display:flex}}.u-float--right{float:right!important}.u-float--left{float:left!important}.u-float-right{float:right!important}@media (max-width:620px){.u-float-right--small{float:right!important}}@media (min-width:768px) and (max-width:1030px){.u-float-right--medium{float:right!important}}@media (min-width:1030px){.u-float-right--large{float:right!important}}.u-float-left{float:left!important}@media (max-width:620px){.u-float-left--small{float:left!important}}@media (min-width:768px) and (max-width:1030px){.u-float-left--medium{float:left!important}}@media (min-width:1030px){.u-float-left--large{float:left!important}}.u-hide{display:none!important}@media screen and (max-width:768px){.u-hide--small{display:none!important}}@media (min-width:768px) and (max-width:1030px){.u-hide--medium{display:none!important}}@media screen and (min-width:1030px){.u-hide--large{display:none!important}}@media (min-width:768px){.u-image-position{overflow:hidden;position:relative}.u-image-position .u-image-position--bottom,.u-image-position .u-image-position--left,.u-image-position .u-image-position--right,.u-image-position .u-image-position--top{margin:0;position:absolute}.u-image-position [class*=col-]{position:static}.u-image-position--top{top:0}.u-image-position--bottom{bottom:0}.u-image-position--left{left:0}.u-image-position--right{right:0}}.u-no-margin{margin:0!important}.u-no-margin--top{margin-top:0!important}.u-no-margin--right{margin-right:0!important}.u-no-margin--bottom{margin-bottom:0!important}.u-no-margin--left{margin-left:0!important}.u-off-screen{height:1px!important;left:-10000px!important;overflow:hidden!important;position:absolute!important;top:auto!important;width:1px!important}.u-no-padding{padding:0!important}.u-no-padding--top{padding-top:0!important}.u-no-padding--right{padding-right:0!important}.u-no-padding--bottom{padding-bottom:0!important}.u-no-padding--left{padding-left:0!important}.u-show{display:inherit!important}@media screen and (max-width:768px){.u-show--small{display:inherit!important}}@media (min-width:768px) and (max-width:1030px){.u-show--medium{display:inherit!important}}@media screen and (min-width:1030px){.u-show--large{display:inherit!important}}.u-sv0:after,.u-sv1:after,.u-sv2:after,.u-sv3:after,.u-sv-1:after,.u-sv-2:after,.u-sv-3:after{content:"";display:block;height:.0625rem;position:relative}.u-sv-3:after{margin-top:-1.5625rem}.u-sv-2:after{margin-top:-1.0625rem}.u-sv-1:after{margin-top:-.5625rem}.u-sv0:after{margin-top:-.0625rem}.u-sv1:after{margin-top:.4375rem}.u-sv2:after{margin-top:.9375rem}.u-sv3:after{margin-top:1.4375rem}@media (min-width:768px){.u-vertically-center{-ms-flex-align:center!important;align-items:center!important;display:-ms-flexbox!important;display:flex!important}.u-vertically-center>img{-ms-flex-item-align:center!important;align-self:center!important}}.u-hidden{display:none!important}@media screen and (max-width:768px){.u-hidden--small{display:none!important}}@media (min-width:768px) and (max-width:1030px){.u-hidden--medium{display:none!important}}@media screen and (min-width:1030px){.u-hidden--large{display:none!important}}.u-visible{display:inherit!important}@media screen and (max-width:768px){.u-visible--small{display:inherit!important}}@media (min-width:768px) and (max-width:1030px){.u-visible--medium{display:inherit!important}}@media screen and (min-width:1030px){.u-visible--large{display:inherit!important}} \ No newline at end of file diff --git a/webroot/assets/vue-route.js b/webroot/assets/vue-route.js new file mode 100644 index 0000000..c20aa9f --- /dev/null +++ b/webroot/assets/vue-route.js @@ -0,0 +1,2626 @@ +/*! + * vue-router v3.0.2 + * (c) 2018 Evan You + * @license MIT + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.VueRouter = factory()); +}(this, (function () { 'use strict'; + +/* */ + +function assert (condition, message) { + if (!condition) { + throw new Error(("[vue-router] " + message)) + } +} + +function warn (condition, message) { + if ("development" !== 'production' && !condition) { + typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); + } +} + +function isError (err) { + return Object.prototype.toString.call(err).indexOf('Error') > -1 +} + +function extend (a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a +} + +var View = { + name: 'RouterView', + functional: true, + props: { + name: { + type: String, + default: 'default' + } + }, + render: function render (_, ref) { + var props = ref.props; + var children = ref.children; + var parent = ref.parent; + var data = ref.data; + + // used by devtools to display a router-view badge + data.routerView = true; + + // directly use parent context's createElement() function + // so that components rendered by router-view can resolve named slots + var h = parent.$createElement; + var name = props.name; + var route = parent.$route; + var cache = parent._routerViewCache || (parent._routerViewCache = {}); + + // determine current view depth, also check to see if the tree + // has been toggled inactive but kept-alive. + var depth = 0; + var inactive = false; + while (parent && parent._routerRoot !== parent) { + if (parent.$vnode && parent.$vnode.data.routerView) { + depth++; + } + if (parent._inactive) { + inactive = true; + } + parent = parent.$parent; + } + data.routerViewDepth = depth; + + // render previous view if the tree is inactive and kept-alive + if (inactive) { + return h(cache[name], data, children) + } + + var matched = route.matched[depth]; + // render empty node if no matched route + if (!matched) { + cache[name] = null; + return h() + } + + var component = cache[name] = matched.components[name]; + + // attach instance registration hook + // this will be called in the instance's injected lifecycle hooks + data.registerRouteInstance = function (vm, val) { + // val could be undefined for unregistration + var current = matched.instances[name]; + if ( + (val && current !== vm) || + (!val && current === vm) + ) { + matched.instances[name] = val; + } + } + + // also register instance in prepatch hook + // in case the same component instance is reused across different routes + ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { + matched.instances[name] = vnode.componentInstance; + }; + + // resolve props + var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]); + if (propsToPass) { + // clone to prevent mutation + propsToPass = data.props = extend({}, propsToPass); + // pass non-declared props as attrs + var attrs = data.attrs = data.attrs || {}; + for (var key in propsToPass) { + if (!component.props || !(key in component.props)) { + attrs[key] = propsToPass[key]; + delete propsToPass[key]; + } + } + } + + return h(component, data, children) + } +} + +function resolveProps (route, config) { + switch (typeof config) { + case 'undefined': + return + case 'object': + return config + case 'function': + return config(route) + case 'boolean': + return config ? route.params : undefined + default: + { + warn( + false, + "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + + "expecting an object, function or boolean." + ); + } + } +} + +/* */ + +var encodeReserveRE = /[!'()*]/g; +var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; +var commaRE = /%2C/g; + +// fixed encodeURIComponent which is more conformant to RFC3986: +// - escapes [!'()*] +// - preserve commas +var encode = function (str) { return encodeURIComponent(str) + .replace(encodeReserveRE, encodeReserveReplacer) + .replace(commaRE, ','); }; + +var decode = decodeURIComponent; + +function resolveQuery ( + query, + extraQuery, + _parseQuery +) { + if ( extraQuery === void 0 ) extraQuery = {}; + + var parse = _parseQuery || parseQuery; + var parsedQuery; + try { + parsedQuery = parse(query || ''); + } catch (e) { + "development" !== 'production' && warn(false, e.message); + parsedQuery = {}; + } + for (var key in extraQuery) { + parsedQuery[key] = extraQuery[key]; + } + return parsedQuery +} + +function parseQuery (query) { + var res = {}; + + query = query.trim().replace(/^(\?|#|&)/, ''); + + if (!query) { + return res + } + + query.split('&').forEach(function (param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = decode(parts.shift()); + var val = parts.length > 0 + ? decode(parts.join('=')) + : null; + + if (res[key] === undefined) { + res[key] = val; + } else if (Array.isArray(res[key])) { + res[key].push(val); + } else { + res[key] = [res[key], val]; + } + }); + + return res +} + +function stringifyQuery (obj) { + var res = obj ? Object.keys(obj).map(function (key) { + var val = obj[key]; + + if (val === undefined) { + return '' + } + + if (val === null) { + return encode(key) + } + + if (Array.isArray(val)) { + var result = []; + val.forEach(function (val2) { + if (val2 === undefined) { + return + } + if (val2 === null) { + result.push(encode(key)); + } else { + result.push(encode(key) + '=' + encode(val2)); + } + }); + return result.join('&') + } + + return encode(key) + '=' + encode(val) + }).filter(function (x) { return x.length > 0; }).join('&') : null; + return res ? ("?" + res) : '' +} + +/* */ + +var trailingSlashRE = /\/?$/; + +function createRoute ( + record, + location, + redirectedFrom, + router +) { + var stringifyQuery$$1 = router && router.options.stringifyQuery; + + var query = location.query || {}; + try { + query = clone(query); + } catch (e) {} + + var route = { + name: location.name || (record && record.name), + meta: (record && record.meta) || {}, + path: location.path || '/', + hash: location.hash || '', + query: query, + params: location.params || {}, + fullPath: getFullPath(location, stringifyQuery$$1), + matched: record ? formatMatch(record) : [] + }; + if (redirectedFrom) { + route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1); + } + return Object.freeze(route) +} + +function clone (value) { + if (Array.isArray(value)) { + return value.map(clone) + } else if (value && typeof value === 'object') { + var res = {}; + for (var key in value) { + res[key] = clone(value[key]); + } + return res + } else { + return value + } +} + +// the starting route that represents the initial state +var START = createRoute(null, { + path: '/' +}); + +function formatMatch (record) { + var res = []; + while (record) { + res.unshift(record); + record = record.parent; + } + return res +} + +function getFullPath ( + ref, + _stringifyQuery +) { + var path = ref.path; + var query = ref.query; if ( query === void 0 ) query = {}; + var hash = ref.hash; if ( hash === void 0 ) hash = ''; + + var stringify = _stringifyQuery || stringifyQuery; + return (path || '/') + stringify(query) + hash +} + +function isSameRoute (a, b) { + if (b === START) { + return a === b + } else if (!b) { + return false + } else if (a.path && b.path) { + return ( + a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && + a.hash === b.hash && + isObjectEqual(a.query, b.query) + ) + } else if (a.name && b.name) { + return ( + a.name === b.name && + a.hash === b.hash && + isObjectEqual(a.query, b.query) && + isObjectEqual(a.params, b.params) + ) + } else { + return false + } +} + +function isObjectEqual (a, b) { + if ( a === void 0 ) a = {}; + if ( b === void 0 ) b = {}; + + // handle null value #1566 + if (!a || !b) { return a === b } + var aKeys = Object.keys(a); + var bKeys = Object.keys(b); + if (aKeys.length !== bKeys.length) { + return false + } + return aKeys.every(function (key) { + var aVal = a[key]; + var bVal = b[key]; + // check nested equality + if (typeof aVal === 'object' && typeof bVal === 'object') { + return isObjectEqual(aVal, bVal) + } + return String(aVal) === String(bVal) + }) +} + +function isIncludedRoute (current, target) { + return ( + current.path.replace(trailingSlashRE, '/').indexOf( + target.path.replace(trailingSlashRE, '/') + ) === 0 && + (!target.hash || current.hash === target.hash) && + queryIncludes(current.query, target.query) + ) +} + +function queryIncludes (current, target) { + for (var key in target) { + if (!(key in current)) { + return false + } + } + return true +} + +/* */ + +// work around weird flow bug +var toTypes = [String, Object]; +var eventTypes = [String, Array]; + +var Link = { + name: 'RouterLink', + props: { + to: { + type: toTypes, + required: true + }, + tag: { + type: String, + default: 'a' + }, + exact: Boolean, + append: Boolean, + replace: Boolean, + activeClass: String, + exactActiveClass: String, + event: { + type: eventTypes, + default: 'click' + } + }, + render: function render (h) { + var this$1 = this; + + var router = this.$router; + var current = this.$route; + var ref = router.resolve(this.to, current, this.append); + var location = ref.location; + var route = ref.route; + var href = ref.href; + + var classes = {}; + var globalActiveClass = router.options.linkActiveClass; + var globalExactActiveClass = router.options.linkExactActiveClass; + // Support global empty active class + var activeClassFallback = globalActiveClass == null + ? 'router-link-active' + : globalActiveClass; + var exactActiveClassFallback = globalExactActiveClass == null + ? 'router-link-exact-active' + : globalExactActiveClass; + var activeClass = this.activeClass == null + ? activeClassFallback + : this.activeClass; + var exactActiveClass = this.exactActiveClass == null + ? exactActiveClassFallback + : this.exactActiveClass; + var compareTarget = location.path + ? createRoute(null, location, null, router) + : route; + + classes[exactActiveClass] = isSameRoute(current, compareTarget); + classes[activeClass] = this.exact + ? classes[exactActiveClass] + : isIncludedRoute(current, compareTarget); + + var handler = function (e) { + if (guardEvent(e)) { + if (this$1.replace) { + router.replace(location); + } else { + router.push(location); + } + } + }; + + var on = { click: guardEvent }; + if (Array.isArray(this.event)) { + this.event.forEach(function (e) { on[e] = handler; }); + } else { + on[this.event] = handler; + } + + var data = { + class: classes + }; + + if (this.tag === 'a') { + data.on = on; + data.attrs = { href: href }; + } else { + // find the first child and apply listener and href + var a = findAnchor(this.$slots.default); + if (a) { + // in case the is a static node + a.isStatic = false; + var aData = a.data = extend({}, a.data); + aData.on = on; + var aAttrs = a.data.attrs = extend({}, a.data.attrs); + aAttrs.href = href; + } else { + // doesn't have child, apply listener to self + data.on = on; + } + } + + return h(this.tag, data, this.$slots.default) + } +} + +function guardEvent (e) { + // don't redirect with control keys + if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } + // don't redirect when preventDefault called + if (e.defaultPrevented) { return } + // don't redirect on right click + if (e.button !== undefined && e.button !== 0) { return } + // don't redirect if `target="_blank"` + if (e.currentTarget && e.currentTarget.getAttribute) { + var target = e.currentTarget.getAttribute('target'); + if (/\b_blank\b/i.test(target)) { return } + } + // this may be a Weex event which doesn't have this method + if (e.preventDefault) { + e.preventDefault(); + } + return true +} + +function findAnchor (children) { + if (children) { + var child; + for (var i = 0; i < children.length; i++) { + child = children[i]; + if (child.tag === 'a') { + return child + } + if (child.children && (child = findAnchor(child.children))) { + return child + } + } + } +} + +var _Vue; + +function install (Vue) { + if (install.installed && _Vue === Vue) { return } + install.installed = true; + + _Vue = Vue; + + var isDef = function (v) { return v !== undefined; }; + + var registerInstance = function (vm, callVal) { + var i = vm.$options._parentVnode; + if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { + i(vm, callVal); + } + }; + + Vue.mixin({ + beforeCreate: function beforeCreate () { + if (isDef(this.$options.router)) { + this._routerRoot = this; + this._router = this.$options.router; + this._router.init(this); + Vue.util.defineReactive(this, '_route', this._router.history.current); + } else { + this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; + } + registerInstance(this, this); + }, + destroyed: function destroyed () { + registerInstance(this); + } + }); + + Object.defineProperty(Vue.prototype, '$router', { + get: function get () { return this._routerRoot._router } + }); + + Object.defineProperty(Vue.prototype, '$route', { + get: function get () { return this._routerRoot._route } + }); + + Vue.component('RouterView', View); + Vue.component('RouterLink', Link); + + var strats = Vue.config.optionMergeStrategies; + // use the same hook merging strategy for route hooks + strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; +} + +/* */ + +var inBrowser = typeof window !== 'undefined'; + +/* */ + +function resolvePath ( + relative, + base, + append +) { + var firstChar = relative.charAt(0); + if (firstChar === '/') { + return relative + } + + if (firstChar === '?' || firstChar === '#') { + return base + relative + } + + var stack = base.split('/'); + + // remove trailing segment if: + // - not appending + // - appending to trailing slash (last segment is empty) + if (!append || !stack[stack.length - 1]) { + stack.pop(); + } + + // resolve relative path + var segments = relative.replace(/^\//, '').split('/'); + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + if (segment === '..') { + stack.pop(); + } else if (segment !== '.') { + stack.push(segment); + } + } + + // ensure leading slash + if (stack[0] !== '') { + stack.unshift(''); + } + + return stack.join('/') +} + +function parsePath (path) { + var hash = ''; + var query = ''; + + var hashIndex = path.indexOf('#'); + if (hashIndex >= 0) { + hash = path.slice(hashIndex); + path = path.slice(0, hashIndex); + } + + var queryIndex = path.indexOf('?'); + if (queryIndex >= 0) { + query = path.slice(queryIndex + 1); + path = path.slice(0, queryIndex); + } + + return { + path: path, + query: query, + hash: hash + } +} + +function cleanPath (path) { + return path.replace(/\/\//g, '/') +} + +var isarray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; + +/** + * Expose `pathToRegexp`. + */ +var pathToRegexp_1 = pathToRegexp; +var parse_1 = parse; +var compile_1 = compile; +var tokensToFunction_1 = tokensToFunction; +var tokensToRegExp_1 = tokensToRegExp; + +/** + * The main path matching regexp utility. + * + * @type {RegExp} + */ +var PATH_REGEXP = new RegExp([ + // Match escaped characters that would otherwise appear in future matches. + // This allows the user to escape special characters that won't transform. + '(\\\\.)', + // Match Express-style parameters and un-named parameters with a prefix + // and optional suffixes. Matches appear as: + // + // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] + // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] + // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] + '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' +].join('|'), 'g'); + +/** + * Parse a string for the raw tokens. + * + * @param {string} str + * @param {Object=} options + * @return {!Array} + */ +function parse (str, options) { + var tokens = []; + var key = 0; + var index = 0; + var path = ''; + var defaultDelimiter = options && options.delimiter || '/'; + var res; + + while ((res = PATH_REGEXP.exec(str)) != null) { + var m = res[0]; + var escaped = res[1]; + var offset = res.index; + path += str.slice(index, offset); + index = offset + m.length; + + // Ignore already escaped sequences. + if (escaped) { + path += escaped[1]; + continue + } + + var next = str[index]; + var prefix = res[2]; + var name = res[3]; + var capture = res[4]; + var group = res[5]; + var modifier = res[6]; + var asterisk = res[7]; + + // Push the current path onto the tokens. + if (path) { + tokens.push(path); + path = ''; + } + + var partial = prefix != null && next != null && next !== prefix; + var repeat = modifier === '+' || modifier === '*'; + var optional = modifier === '?' || modifier === '*'; + var delimiter = res[2] || defaultDelimiter; + var pattern = capture || group; + + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter: delimiter, + optional: optional, + repeat: repeat, + partial: partial, + asterisk: !!asterisk, + pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') + }); + } + + // Match any characters still remaining. + if (index < str.length) { + path += str.substr(index); + } + + // If the path exists, push it onto the end. + if (path) { + tokens.push(path); + } + + return tokens +} + +/** + * Compile a string to a template function for the path. + * + * @param {string} str + * @param {Object=} options + * @return {!function(Object=, Object=)} + */ +function compile (str, options) { + return tokensToFunction(parse(str, options)) +} + +/** + * Prettier encoding of URI path segments. + * + * @param {string} + * @return {string} + */ +function encodeURIComponentPretty (str) { + return encodeURI(str).replace(/[\/?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +/** + * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. + * + * @param {string} + * @return {string} + */ +function encodeAsterisk (str) { + return encodeURI(str).replace(/[?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +/** + * Expose a method for transforming tokens into the path function. + */ +function tokensToFunction (tokens) { + // Compile all the tokens into regexps. + var matches = new Array(tokens.length); + + // Compile all the patterns before compilation. + for (var i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$'); + } + } + + return function (obj, opts) { + var path = ''; + var data = obj || {}; + var options = opts || {}; + var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + path += token; + + continue + } + + var value = data[token.name]; + var segment; + + if (value == null) { + if (token.optional) { + // Prepend partial segment prefixes. + if (token.partial) { + path += token.prefix; + } + + continue + } else { + throw new TypeError('Expected "' + token.name + '" to be defined') + } + } + + if (isarray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') + } + + if (value.length === 0) { + if (token.optional) { + continue + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty') + } + } + + for (var j = 0; j < value.length; j++) { + segment = encode(value[j]); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment; + } + + continue + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') + } + + path += token.prefix + segment; + } + + return path + } +} + +/** + * Escape a regular expression string. + * + * @param {string} str + * @return {string} + */ +function escapeString (str) { + return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') +} + +/** + * Escape the capturing group by escaping special characters and meaning. + * + * @param {string} group + * @return {string} + */ +function escapeGroup (group) { + return group.replace(/([=!:$\/()])/g, '\\$1') +} + +/** + * Attach the keys as a property of the regexp. + * + * @param {!RegExp} re + * @param {Array} keys + * @return {!RegExp} + */ +function attachKeys (re, keys) { + re.keys = keys; + return re +} + +/** + * Get the flags for a regexp from the options. + * + * @param {Object} options + * @return {string} + */ +function flags (options) { + return options.sensitive ? '' : 'i' +} + +/** + * Pull out keys from a regexp. + * + * @param {!RegExp} path + * @param {!Array} keys + * @return {!RegExp} + */ +function regexpToRegexp (path, keys) { + // Use a negative lookahead to match only capturing groups. + var groups = path.source.match(/\((?!\?)/g); + + if (groups) { + for (var i = 0; i < groups.length; i++) { + keys.push({ + name: i, + prefix: null, + delimiter: null, + optional: false, + repeat: false, + partial: false, + asterisk: false, + pattern: null + }); + } + } + + return attachKeys(path, keys) +} + +/** + * Transform an array into a regexp. + * + * @param {!Array} path + * @param {Array} keys + * @param {!Object} options + * @return {!RegExp} + */ +function arrayToRegexp (path, keys, options) { + var parts = []; + + for (var i = 0; i < path.length; i++) { + parts.push(pathToRegexp(path[i], keys, options).source); + } + + var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); + + return attachKeys(regexp, keys) +} + +/** + * Create a path regexp from string input. + * + * @param {string} path + * @param {!Array} keys + * @param {!Object} options + * @return {!RegExp} + */ +function stringToRegexp (path, keys, options) { + return tokensToRegExp(parse(path, options), keys, options) +} + +/** + * Expose a function for taking tokens and returning a RegExp. + * + * @param {!Array} tokens + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ +function tokensToRegExp (tokens, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + var strict = options.strict; + var end = options.end !== false; + var route = ''; + + // Iterate over the tokens and create our regexp string. + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + route += escapeString(token); + } else { + var prefix = escapeString(token.prefix); + var capture = '(?:' + token.pattern + ')'; + + keys.push(token); + + if (token.repeat) { + capture += '(?:' + prefix + capture + ')*'; + } + + if (token.optional) { + if (!token.partial) { + capture = '(?:' + prefix + '(' + capture + '))?'; + } else { + capture = prefix + '(' + capture + ')?'; + } + } else { + capture = prefix + '(' + capture + ')'; + } + + route += capture; + } + } + + var delimiter = escapeString(options.delimiter || '/'); + var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; + + // In non-strict mode we allow a slash at the end of match. If the path to + // match already ends with a slash, we remove it for consistency. The slash + // is valid at the end of a path match, not in the middle. This is important + // in non-ending mode, where "/test/" shouldn't match "/test//route". + if (!strict) { + route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; + } + + if (end) { + route += '$'; + } else { + // In non-ending mode, we need the capturing groups to match as much as + // possible by using a positive lookahead to the end or next path segment. + route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; + } + + return attachKeys(new RegExp('^' + route, flags(options)), keys) +} + +/** + * Normalize the given path string, returning a regular expression. + * + * An empty array can be passed in for the keys, which will hold the + * placeholder key descriptions. For example, using `/user/:id`, `keys` will + * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. + * + * @param {(string|RegExp|Array)} path + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ +function pathToRegexp (path, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + if (path instanceof RegExp) { + return regexpToRegexp(path, /** @type {!Array} */ (keys)) + } + + if (isarray(path)) { + return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) + } + + return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) +} +pathToRegexp_1.parse = parse_1; +pathToRegexp_1.compile = compile_1; +pathToRegexp_1.tokensToFunction = tokensToFunction_1; +pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; + +/* */ + +// $flow-disable-line +var regexpCompileCache = Object.create(null); + +function fillParams ( + path, + params, + routeMsg +) { + try { + var filler = + regexpCompileCache[path] || + (regexpCompileCache[path] = pathToRegexp_1.compile(path)); + return filler(params || {}, { pretty: true }) + } catch (e) { + { + warn(false, ("missing param for " + routeMsg + ": " + (e.message))); + } + return '' + } +} + +/* */ + +function createRouteMap ( + routes, + oldPathList, + oldPathMap, + oldNameMap +) { + // the path list is used to control path matching priority + var pathList = oldPathList || []; + // $flow-disable-line + var pathMap = oldPathMap || Object.create(null); + // $flow-disable-line + var nameMap = oldNameMap || Object.create(null); + + routes.forEach(function (route) { + addRouteRecord(pathList, pathMap, nameMap, route); + }); + + // ensure wildcard routes are always at the end + for (var i = 0, l = pathList.length; i < l; i++) { + if (pathList[i] === '*') { + pathList.push(pathList.splice(i, 1)[0]); + l--; + i--; + } + } + + return { + pathList: pathList, + pathMap: pathMap, + nameMap: nameMap + } +} + +function addRouteRecord ( + pathList, + pathMap, + nameMap, + route, + parent, + matchAs +) { + var path = route.path; + var name = route.name; + { + assert(path != null, "\"path\" is required in a route configuration."); + assert( + typeof route.component !== 'string', + "route config \"component\" for path: " + (String(path || name)) + " cannot be a " + + "string id. Use an actual component instead." + ); + } + + var pathToRegexpOptions = route.pathToRegexpOptions || {}; + var normalizedPath = normalizePath( + path, + parent, + pathToRegexpOptions.strict + ); + + if (typeof route.caseSensitive === 'boolean') { + pathToRegexpOptions.sensitive = route.caseSensitive; + } + + var record = { + path: normalizedPath, + regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), + components: route.components || { default: route.component }, + instances: {}, + name: name, + parent: parent, + matchAs: matchAs, + redirect: route.redirect, + beforeEnter: route.beforeEnter, + meta: route.meta || {}, + props: route.props == null + ? {} + : route.components + ? route.props + : { default: route.props } + }; + + if (route.children) { + // Warn if route is named, does not redirect and has a default child route. + // If users navigate to this route by name, the default child will + // not be rendered (GH Issue #629) + { + if (route.name && !route.redirect && route.children.some(function (child) { return /^\/?$/.test(child.path); })) { + warn( + false, + "Named Route '" + (route.name) + "' has a default child route. " + + "When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), " + + "the default child route will not be rendered. Remove the name from " + + "this route and use the name of the default child route for named " + + "links instead." + ); + } + } + route.children.forEach(function (child) { + var childMatchAs = matchAs + ? cleanPath((matchAs + "/" + (child.path))) + : undefined; + addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); + }); + } + + if (route.alias !== undefined) { + var aliases = Array.isArray(route.alias) + ? route.alias + : [route.alias]; + + aliases.forEach(function (alias) { + var aliasRoute = { + path: alias, + children: route.children + }; + addRouteRecord( + pathList, + pathMap, + nameMap, + aliasRoute, + parent, + record.path || '/' // matchAs + ); + }); + } + + if (!pathMap[record.path]) { + pathList.push(record.path); + pathMap[record.path] = record; + } + + if (name) { + if (!nameMap[name]) { + nameMap[name] = record; + } else if ("development" !== 'production' && !matchAs) { + warn( + false, + "Duplicate named routes definition: " + + "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" + ); + } + } +} + +function compileRouteRegex (path, pathToRegexpOptions) { + var regex = pathToRegexp_1(path, [], pathToRegexpOptions); + { + var keys = Object.create(null); + regex.keys.forEach(function (key) { + warn(!keys[key.name], ("Duplicate param keys in route with path: \"" + path + "\"")); + keys[key.name] = true; + }); + } + return regex +} + +function normalizePath (path, parent, strict) { + if (!strict) { path = path.replace(/\/$/, ''); } + if (path[0] === '/') { return path } + if (parent == null) { return path } + return cleanPath(((parent.path) + "/" + path)) +} + +/* */ + +function normalizeLocation ( + raw, + current, + append, + router +) { + var next = typeof raw === 'string' ? { path: raw } : raw; + // named target + if (next.name || next._normalized) { + return next + } + + // relative params + if (!next.path && next.params && current) { + next = extend({}, next); + next._normalized = true; + var params = extend(extend({}, current.params), next.params); + if (current.name) { + next.name = current.name; + next.params = params; + } else if (current.matched.length) { + var rawPath = current.matched[current.matched.length - 1].path; + next.path = fillParams(rawPath, params, ("path " + (current.path))); + } else { + warn(false, "relative params navigation requires a current route."); + } + return next + } + + var parsedPath = parsePath(next.path || ''); + var basePath = (current && current.path) || '/'; + var path = parsedPath.path + ? resolvePath(parsedPath.path, basePath, append || next.append) + : basePath; + + var query = resolveQuery( + parsedPath.query, + next.query, + router && router.options.parseQuery + ); + + var hash = next.hash || parsedPath.hash; + if (hash && hash.charAt(0) !== '#') { + hash = "#" + hash; + } + + return { + _normalized: true, + path: path, + query: query, + hash: hash + } +} + +/* */ + + + +function createMatcher ( + routes, + router +) { + var ref = createRouteMap(routes); + var pathList = ref.pathList; + var pathMap = ref.pathMap; + var nameMap = ref.nameMap; + + function addRoutes (routes) { + createRouteMap(routes, pathList, pathMap, nameMap); + } + + function match ( + raw, + currentRoute, + redirectedFrom + ) { + var location = normalizeLocation(raw, currentRoute, false, router); + var name = location.name; + + if (name) { + var record = nameMap[name]; + { + warn(record, ("Route with name '" + name + "' does not exist")); + } + if (!record) { return _createRoute(null, location) } + var paramNames = record.regex.keys + .filter(function (key) { return !key.optional; }) + .map(function (key) { return key.name; }); + + if (typeof location.params !== 'object') { + location.params = {}; + } + + if (currentRoute && typeof currentRoute.params === 'object') { + for (var key in currentRoute.params) { + if (!(key in location.params) && paramNames.indexOf(key) > -1) { + location.params[key] = currentRoute.params[key]; + } + } + } + + if (record) { + location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); + return _createRoute(record, location, redirectedFrom) + } + } else if (location.path) { + location.params = {}; + for (var i = 0; i < pathList.length; i++) { + var path = pathList[i]; + var record$1 = pathMap[path]; + if (matchRoute(record$1.regex, location.path, location.params)) { + return _createRoute(record$1, location, redirectedFrom) + } + } + } + // no match + return _createRoute(null, location) + } + + function redirect ( + record, + location + ) { + var originalRedirect = record.redirect; + var redirect = typeof originalRedirect === 'function' + ? originalRedirect(createRoute(record, location, null, router)) + : originalRedirect; + + if (typeof redirect === 'string') { + redirect = { path: redirect }; + } + + if (!redirect || typeof redirect !== 'object') { + { + warn( + false, ("invalid redirect option: " + (JSON.stringify(redirect))) + ); + } + return _createRoute(null, location) + } + + var re = redirect; + var name = re.name; + var path = re.path; + var query = location.query; + var hash = location.hash; + var params = location.params; + query = re.hasOwnProperty('query') ? re.query : query; + hash = re.hasOwnProperty('hash') ? re.hash : hash; + params = re.hasOwnProperty('params') ? re.params : params; + + if (name) { + // resolved named direct + var targetRecord = nameMap[name]; + { + assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); + } + return match({ + _normalized: true, + name: name, + query: query, + hash: hash, + params: params + }, undefined, location) + } else if (path) { + // 1. resolve relative redirect + var rawPath = resolveRecordPath(path, record); + // 2. resolve params + var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); + // 3. rematch with existing query and hash + return match({ + _normalized: true, + path: resolvedPath, + query: query, + hash: hash + }, undefined, location) + } else { + { + warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); + } + return _createRoute(null, location) + } + } + + function alias ( + record, + location, + matchAs + ) { + var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); + var aliasedMatch = match({ + _normalized: true, + path: aliasedPath + }); + if (aliasedMatch) { + var matched = aliasedMatch.matched; + var aliasedRecord = matched[matched.length - 1]; + location.params = aliasedMatch.params; + return _createRoute(aliasedRecord, location) + } + return _createRoute(null, location) + } + + function _createRoute ( + record, + location, + redirectedFrom + ) { + if (record && record.redirect) { + return redirect(record, redirectedFrom || location) + } + if (record && record.matchAs) { + return alias(record, location, record.matchAs) + } + return createRoute(record, location, redirectedFrom, router) + } + + return { + match: match, + addRoutes: addRoutes + } +} + +function matchRoute ( + regex, + path, + params +) { + var m = path.match(regex); + + if (!m) { + return false + } else if (!params) { + return true + } + + for (var i = 1, len = m.length; i < len; ++i) { + var key = regex.keys[i - 1]; + var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i]; + if (key) { + // Fix #1994: using * with props: true generates a param named 0 + params[key.name || 'pathMatch'] = val; + } + } + + return true +} + +function resolveRecordPath (path, record) { + return resolvePath(path, record.parent ? record.parent.path : '/', true) +} + +/* */ + +var positionStore = Object.create(null); + +function setupScroll () { + // Fix for #1585 for Firefox + // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 + window.history.replaceState({ key: getStateKey() }, '', window.location.href.replace(window.location.origin, '')); + window.addEventListener('popstate', function (e) { + saveScrollPosition(); + if (e.state && e.state.key) { + setStateKey(e.state.key); + } + }); +} + +function handleScroll ( + router, + to, + from, + isPop +) { + if (!router.app) { + return + } + + var behavior = router.options.scrollBehavior; + if (!behavior) { + return + } + + { + assert(typeof behavior === 'function', "scrollBehavior must be a function"); + } + + // wait until re-render finishes before scrolling + router.app.$nextTick(function () { + var position = getScrollPosition(); + var shouldScroll = behavior.call(router, to, from, isPop ? position : null); + + if (!shouldScroll) { + return + } + + if (typeof shouldScroll.then === 'function') { + shouldScroll.then(function (shouldScroll) { + scrollToPosition((shouldScroll), position); + }).catch(function (err) { + { + assert(false, err.toString()); + } + }); + } else { + scrollToPosition(shouldScroll, position); + } + }); +} + +function saveScrollPosition () { + var key = getStateKey(); + if (key) { + positionStore[key] = { + x: window.pageXOffset, + y: window.pageYOffset + }; + } +} + +function getScrollPosition () { + var key = getStateKey(); + if (key) { + return positionStore[key] + } +} + +function getElementPosition (el, offset) { + var docEl = document.documentElement; + var docRect = docEl.getBoundingClientRect(); + var elRect = el.getBoundingClientRect(); + return { + x: elRect.left - docRect.left - offset.x, + y: elRect.top - docRect.top - offset.y + } +} + +function isValidPosition (obj) { + return isNumber(obj.x) || isNumber(obj.y) +} + +function normalizePosition (obj) { + return { + x: isNumber(obj.x) ? obj.x : window.pageXOffset, + y: isNumber(obj.y) ? obj.y : window.pageYOffset + } +} + +function normalizeOffset (obj) { + return { + x: isNumber(obj.x) ? obj.x : 0, + y: isNumber(obj.y) ? obj.y : 0 + } +} + +function isNumber (v) { + return typeof v === 'number' +} + +function scrollToPosition (shouldScroll, position) { + var isObject = typeof shouldScroll === 'object'; + if (isObject && typeof shouldScroll.selector === 'string') { + var el = document.querySelector(shouldScroll.selector); + if (el) { + var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {}; + offset = normalizeOffset(offset); + position = getElementPosition(el, offset); + } else if (isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + } else if (isObject && isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + + if (position) { + window.scrollTo(position.x, position.y); + } +} + +/* */ + +var supportsPushState = inBrowser && (function () { + var ua = window.navigator.userAgent; + + if ( + (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && + ua.indexOf('Mobile Safari') !== -1 && + ua.indexOf('Chrome') === -1 && + ua.indexOf('Windows Phone') === -1 + ) { + return false + } + + return window.history && 'pushState' in window.history +})(); + +// use User Timing api (if present) for more accurate key precision +var Time = inBrowser && window.performance && window.performance.now + ? window.performance + : Date; + +var _key = genKey(); + +function genKey () { + return Time.now().toFixed(3) +} + +function getStateKey () { + return _key +} + +function setStateKey (key) { + _key = key; +} + +function pushState (url, replace) { + saveScrollPosition(); + // try...catch the pushState call to get around Safari + // DOM Exception 18 where it limits to 100 pushState calls + var history = window.history; + try { + if (replace) { + history.replaceState({ key: _key }, '', url); + } else { + _key = genKey(); + history.pushState({ key: _key }, '', url); + } + } catch (e) { + window.location[replace ? 'replace' : 'assign'](url); + } +} + +function replaceState (url) { + pushState(url, true); +} + +/* */ + +function runQueue (queue, fn, cb) { + var step = function (index) { + if (index >= queue.length) { + cb(); + } else { + if (queue[index]) { + fn(queue[index], function () { + step(index + 1); + }); + } else { + step(index + 1); + } + } + }; + step(0); +} + +/* */ + +function resolveAsyncComponents (matched) { + return function (to, from, next) { + var hasAsync = false; + var pending = 0; + var error = null; + + flatMapComponents(matched, function (def, _, match, key) { + // if it's a function and doesn't have cid attached, + // assume it's an async component resolve function. + // we are not using Vue's default async resolving mechanism because + // we want to halt the navigation until the incoming component has been + // resolved. + if (typeof def === 'function' && def.cid === undefined) { + hasAsync = true; + pending++; + + var resolve = once(function (resolvedDef) { + if (isESModule(resolvedDef)) { + resolvedDef = resolvedDef.default; + } + // save resolved on async factory in case it's used elsewhere + def.resolved = typeof resolvedDef === 'function' + ? resolvedDef + : _Vue.extend(resolvedDef); + match.components[key] = resolvedDef; + pending--; + if (pending <= 0) { + next(); + } + }); + + var reject = once(function (reason) { + var msg = "Failed to resolve async component " + key + ": " + reason; + "development" !== 'production' && warn(false, msg); + if (!error) { + error = isError(reason) + ? reason + : new Error(msg); + next(error); + } + }); + + var res; + try { + res = def(resolve, reject); + } catch (e) { + reject(e); + } + if (res) { + if (typeof res.then === 'function') { + res.then(resolve, reject); + } else { + // new syntax in Vue 2.3 + var comp = res.component; + if (comp && typeof comp.then === 'function') { + comp.then(resolve, reject); + } + } + } + } + }); + + if (!hasAsync) { next(); } + } +} + +function flatMapComponents ( + matched, + fn +) { + return flatten(matched.map(function (m) { + return Object.keys(m.components).map(function (key) { return fn( + m.components[key], + m.instances[key], + m, key + ); }) + })) +} + +function flatten (arr) { + return Array.prototype.concat.apply([], arr) +} + +var hasSymbol = + typeof Symbol === 'function' && + typeof Symbol.toStringTag === 'symbol'; + +function isESModule (obj) { + return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') +} + +// in Webpack 2, require.ensure now also returns a Promise +// so the resolve/reject functions may get called an extra time +// if the user uses an arrow function shorthand that happens to +// return that Promise. +function once (fn) { + var called = false; + return function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (called) { return } + called = true; + return fn.apply(this, args) + } +} + +/* */ + +var History = function History (router, base) { + this.router = router; + this.base = normalizeBase(base); + // start with a route object that stands for "nowhere" + this.current = START; + this.pending = null; + this.ready = false; + this.readyCbs = []; + this.readyErrorCbs = []; + this.errorCbs = []; +}; + +History.prototype.listen = function listen (cb) { + this.cb = cb; +}; + +History.prototype.onReady = function onReady (cb, errorCb) { + if (this.ready) { + cb(); + } else { + this.readyCbs.push(cb); + if (errorCb) { + this.readyErrorCbs.push(errorCb); + } + } +}; + +History.prototype.onError = function onError (errorCb) { + this.errorCbs.push(errorCb); +}; + +History.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) { + var this$1 = this; + + var route = this.router.match(location, this.current); + this.confirmTransition(route, function () { + this$1.updateRoute(route); + onComplete && onComplete(route); + this$1.ensureURL(); + + // fire ready cbs once + if (!this$1.ready) { + this$1.ready = true; + this$1.readyCbs.forEach(function (cb) { cb(route); }); + } + }, function (err) { + if (onAbort) { + onAbort(err); + } + if (err && !this$1.ready) { + this$1.ready = true; + this$1.readyErrorCbs.forEach(function (cb) { cb(err); }); + } + }); +}; + +History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { + var this$1 = this; + + var current = this.current; + var abort = function (err) { + if (isError(err)) { + if (this$1.errorCbs.length) { + this$1.errorCbs.forEach(function (cb) { cb(err); }); + } else { + warn(false, 'uncaught error during route navigation:'); + console.error(err); + } + } + onAbort && onAbort(err); + }; + if ( + isSameRoute(route, current) && + // in the case the route map has been dynamically appended to + route.matched.length === current.matched.length + ) { + this.ensureURL(); + return abort() + } + + var ref = resolveQueue(this.current.matched, route.matched); + var updated = ref.updated; + var deactivated = ref.deactivated; + var activated = ref.activated; + + var queue = [].concat( + // in-component leave guards + extractLeaveGuards(deactivated), + // global before hooks + this.router.beforeHooks, + // in-component update hooks + extractUpdateHooks(updated), + // in-config enter guards + activated.map(function (m) { return m.beforeEnter; }), + // async components + resolveAsyncComponents(activated) + ); + + this.pending = route; + var iterator = function (hook, next) { + if (this$1.pending !== route) { + return abort() + } + try { + hook(route, current, function (to) { + if (to === false || isError(to)) { + // next(false) -> abort navigation, ensure current URL + this$1.ensureURL(true); + abort(to); + } else if ( + typeof to === 'string' || + (typeof to === 'object' && ( + typeof to.path === 'string' || + typeof to.name === 'string' + )) + ) { + // next('/') or next({ path: '/' }) -> redirect + abort(); + if (typeof to === 'object' && to.replace) { + this$1.replace(to); + } else { + this$1.push(to); + } + } else { + // confirm transition and pass on the value + next(to); + } + }); + } catch (e) { + abort(e); + } + }; + + runQueue(queue, iterator, function () { + var postEnterCbs = []; + var isValid = function () { return this$1.current === route; }; + // wait until async components are resolved before + // extracting in-component enter guards + var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid); + var queue = enterGuards.concat(this$1.router.resolveHooks); + runQueue(queue, iterator, function () { + if (this$1.pending !== route) { + return abort() + } + this$1.pending = null; + onComplete(route); + if (this$1.router.app) { + this$1.router.app.$nextTick(function () { + postEnterCbs.forEach(function (cb) { cb(); }); + }); + } + }); + }); +}; + +History.prototype.updateRoute = function updateRoute (route) { + var prev = this.current; + this.current = route; + this.cb && this.cb(route); + this.router.afterHooks.forEach(function (hook) { + hook && hook(route, prev); + }); +}; + +function normalizeBase (base) { + if (!base) { + if (inBrowser) { + // respect tag + var baseEl = document.querySelector('base'); + base = (baseEl && baseEl.getAttribute('href')) || '/'; + // strip full URL origin + base = base.replace(/^https?:\/\/[^\/]+/, ''); + } else { + base = '/'; + } + } + // make sure there's the starting slash + if (base.charAt(0) !== '/') { + base = '/' + base; + } + // remove trailing slash + return base.replace(/\/$/, '') +} + +function resolveQueue ( + current, + next +) { + var i; + var max = Math.max(current.length, next.length); + for (i = 0; i < max; i++) { + if (current[i] !== next[i]) { + break + } + } + return { + updated: next.slice(0, i), + activated: next.slice(i), + deactivated: current.slice(i) + } +} + +function extractGuards ( + records, + name, + bind, + reverse +) { + var guards = flatMapComponents(records, function (def, instance, match, key) { + var guard = extractGuard(def, name); + if (guard) { + return Array.isArray(guard) + ? guard.map(function (guard) { return bind(guard, instance, match, key); }) + : bind(guard, instance, match, key) + } + }); + return flatten(reverse ? guards.reverse() : guards) +} + +function extractGuard ( + def, + key +) { + if (typeof def !== 'function') { + // extend now so that global mixins are applied. + def = _Vue.extend(def); + } + return def.options[key] +} + +function extractLeaveGuards (deactivated) { + return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) +} + +function extractUpdateHooks (updated) { + return extractGuards(updated, 'beforeRouteUpdate', bindGuard) +} + +function bindGuard (guard, instance) { + if (instance) { + return function boundRouteGuard () { + return guard.apply(instance, arguments) + } + } +} + +function extractEnterGuards ( + activated, + cbs, + isValid +) { + return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) { + return bindEnterGuard(guard, match, key, cbs, isValid) + }) +} + +function bindEnterGuard ( + guard, + match, + key, + cbs, + isValid +) { + return function routeEnterGuard (to, from, next) { + return guard(to, from, function (cb) { + next(cb); + if (typeof cb === 'function') { + cbs.push(function () { + // #750 + // if a router-view is wrapped with an out-in transition, + // the instance may not have been registered at this time. + // we will need to poll for registration until current route + // is no longer valid. + poll(cb, match.instances, key, isValid); + }); + } + }) + } +} + +function poll ( + cb, // somehow flow cannot infer this is a function + instances, + key, + isValid +) { + if ( + instances[key] && + !instances[key]._isBeingDestroyed // do not reuse being destroyed instance + ) { + cb(instances[key]); + } else if (isValid()) { + setTimeout(function () { + poll(cb, instances, key, isValid); + }, 16); + } +} + +/* */ + +var HTML5History = (function (History$$1) { + function HTML5History (router, base) { + var this$1 = this; + + History$$1.call(this, router, base); + + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + setupScroll(); + } + + var initLocation = getLocation(this.base); + window.addEventListener('popstate', function (e) { + var current = this$1.current; + + // Avoiding first `popstate` event dispatched in some browsers but first + // history route not updated since async guard at the same time. + var location = getLocation(this$1.base); + if (this$1.current === START && location === initLocation) { + return + } + + this$1.transitionTo(location, function (route) { + if (supportsScroll) { + handleScroll(router, route, current, true); + } + }); + }); + } + + if ( History$$1 ) HTML5History.__proto__ = History$$1; + HTML5History.prototype = Object.create( History$$1 && History$$1.prototype ); + HTML5History.prototype.constructor = HTML5History; + + HTML5History.prototype.go = function go (n) { + window.history.go(n); + }; + + HTML5History.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + pushState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + replaceState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.ensureURL = function ensureURL (push) { + if (getLocation(this.base) !== this.current.fullPath) { + var current = cleanPath(this.base + this.current.fullPath); + push ? pushState(current) : replaceState(current); + } + }; + + HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { + return getLocation(this.base) + }; + + return HTML5History; +}(History)); + +function getLocation (base) { + var path = decodeURI(window.location.pathname); + if (base && path.indexOf(base) === 0) { + path = path.slice(base.length); + } + return (path || '/') + window.location.search + window.location.hash +} + +/* */ + +var HashHistory = (function (History$$1) { + function HashHistory (router, base, fallback) { + History$$1.call(this, router, base); + // check history fallback deeplinking + if (fallback && checkFallback(this.base)) { + return + } + ensureSlash(); + } + + if ( History$$1 ) HashHistory.__proto__ = History$$1; + HashHistory.prototype = Object.create( History$$1 && History$$1.prototype ); + HashHistory.prototype.constructor = HashHistory; + + // this is delayed until the app mounts + // to avoid the hashchange listener being fired too early + HashHistory.prototype.setupListeners = function setupListeners () { + var this$1 = this; + + var router = this.router; + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + setupScroll(); + } + + window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () { + var current = this$1.current; + if (!ensureSlash()) { + return + } + this$1.transitionTo(getHash(), function (route) { + if (supportsScroll) { + handleScroll(this$1.router, route, current, true); + } + if (!supportsPushState) { + replaceHash(route.fullPath); + } + }); + }); + }; + + HashHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + pushHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + replaceHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HashHistory.prototype.go = function go (n) { + window.history.go(n); + }; + + HashHistory.prototype.ensureURL = function ensureURL (push) { + var current = this.current.fullPath; + if (getHash() !== current) { + push ? pushHash(current) : replaceHash(current); + } + }; + + HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { + return getHash() + }; + + return HashHistory; +}(History)); + +function checkFallback (base) { + var location = getLocation(base); + if (!/^\/#/.test(location)) { + window.location.replace( + cleanPath(base + '/#' + location) + ); + return true + } +} + +function ensureSlash () { + var path = getHash(); + if (path.charAt(0) === '/') { + return true + } + replaceHash('/' + path); + return false +} + +function getHash () { + // We can't use window.location.hash here because it's not + // consistent across browsers - Firefox will pre-decode it! + var href = window.location.href; + var index = href.indexOf('#'); + return index === -1 ? '' : decodeURI(href.slice(index + 1)) +} + +function getUrl (path) { + var href = window.location.href; + var i = href.indexOf('#'); + var base = i >= 0 ? href.slice(0, i) : href; + return (base + "#" + path) +} + +function pushHash (path) { + if (supportsPushState) { + pushState(getUrl(path)); + } else { + window.location.hash = path; + } +} + +function replaceHash (path) { + if (supportsPushState) { + replaceState(getUrl(path)); + } else { + window.location.replace(getUrl(path)); + } +} + +/* */ + +var AbstractHistory = (function (History$$1) { + function AbstractHistory (router, base) { + History$$1.call(this, router, base); + this.stack = []; + this.index = -1; + } + + if ( History$$1 ) AbstractHistory.__proto__ = History$$1; + AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype ); + AbstractHistory.prototype.constructor = AbstractHistory; + + AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo(location, function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route); + this$1.index++; + onComplete && onComplete(route); + }, onAbort); + }; + + AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo(location, function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index).concat(route); + onComplete && onComplete(route); + }, onAbort); + }; + + AbstractHistory.prototype.go = function go (n) { + var this$1 = this; + + var targetIndex = this.index + n; + if (targetIndex < 0 || targetIndex >= this.stack.length) { + return + } + var route = this.stack[targetIndex]; + this.confirmTransition(route, function () { + this$1.index = targetIndex; + this$1.updateRoute(route); + }); + }; + + AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { + var current = this.stack[this.stack.length - 1]; + return current ? current.fullPath : '/' + }; + + AbstractHistory.prototype.ensureURL = function ensureURL () { + // noop + }; + + return AbstractHistory; +}(History)); + +/* */ + + + +var VueRouter = function VueRouter (options) { + if ( options === void 0 ) options = {}; + + this.app = null; + this.apps = []; + this.options = options; + this.beforeHooks = []; + this.resolveHooks = []; + this.afterHooks = []; + this.matcher = createMatcher(options.routes || [], this); + + var mode = options.mode || 'hash'; + this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false; + if (this.fallback) { + mode = 'hash'; + } + if (!inBrowser) { + mode = 'abstract'; + } + this.mode = mode; + + switch (mode) { + case 'history': + this.history = new HTML5History(this, options.base); + break + case 'hash': + this.history = new HashHistory(this, options.base, this.fallback); + break + case 'abstract': + this.history = new AbstractHistory(this, options.base); + break + default: + { + assert(false, ("invalid mode: " + mode)); + } + } +}; + +var prototypeAccessors = { currentRoute: { configurable: true } }; + +VueRouter.prototype.match = function match ( + raw, + current, + redirectedFrom +) { + return this.matcher.match(raw, current, redirectedFrom) +}; + +prototypeAccessors.currentRoute.get = function () { + return this.history && this.history.current +}; + +VueRouter.prototype.init = function init (app /* Vue component instance */) { + var this$1 = this; + + "development" !== 'production' && assert( + install.installed, + "not installed. Make sure to call `Vue.use(VueRouter)` " + + "before creating root instance." + ); + + this.apps.push(app); + + // main app already initialized. + if (this.app) { + return + } + + this.app = app; + + var history = this.history; + + if (history instanceof HTML5History) { + history.transitionTo(history.getCurrentLocation()); + } else if (history instanceof HashHistory) { + var setupHashListener = function () { + history.setupListeners(); + }; + history.transitionTo( + history.getCurrentLocation(), + setupHashListener, + setupHashListener + ); + } + + history.listen(function (route) { + this$1.apps.forEach(function (app) { + app._route = route; + }); + }); +}; + +VueRouter.prototype.beforeEach = function beforeEach (fn) { + return registerHook(this.beforeHooks, fn) +}; + +VueRouter.prototype.beforeResolve = function beforeResolve (fn) { + return registerHook(this.resolveHooks, fn) +}; + +VueRouter.prototype.afterEach = function afterEach (fn) { + return registerHook(this.afterHooks, fn) +}; + +VueRouter.prototype.onReady = function onReady (cb, errorCb) { + this.history.onReady(cb, errorCb); +}; + +VueRouter.prototype.onError = function onError (errorCb) { + this.history.onError(errorCb); +}; + +VueRouter.prototype.push = function push (location, onComplete, onAbort) { + this.history.push(location, onComplete, onAbort); +}; + +VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { + this.history.replace(location, onComplete, onAbort); +}; + +VueRouter.prototype.go = function go (n) { + this.history.go(n); +}; + +VueRouter.prototype.back = function back () { + this.go(-1); +}; + +VueRouter.prototype.forward = function forward () { + this.go(1); +}; + +VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { + var route = to + ? to.matched + ? to + : this.resolve(to).route + : this.currentRoute; + if (!route) { + return [] + } + return [].concat.apply([], route.matched.map(function (m) { + return Object.keys(m.components).map(function (key) { + return m.components[key] + }) + })) +}; + +VueRouter.prototype.resolve = function resolve ( + to, + current, + append +) { + var location = normalizeLocation( + to, + current || this.history.current, + append, + this + ); + var route = this.match(location, current); + var fullPath = route.redirectedFrom || route.fullPath; + var base = this.history.base; + var href = createHref(base, fullPath, this.mode); + return { + location: location, + route: route, + href: href, + // for backwards compat + normalizedTo: location, + resolved: route + } +}; + +VueRouter.prototype.addRoutes = function addRoutes (routes) { + this.matcher.addRoutes(routes); + if (this.history.current !== START) { + this.history.transitionTo(this.history.getCurrentLocation()); + } +}; + +Object.defineProperties( VueRouter.prototype, prototypeAccessors ); + +function registerHook (list, fn) { + list.push(fn); + return function () { + var i = list.indexOf(fn); + if (i > -1) { list.splice(i, 1); } + } +} + +function createHref (base, fullPath, mode) { + var path = mode === 'hash' ? '#' + fullPath : fullPath; + return base ? cleanPath(base + '/' + path) : path +} + +VueRouter.install = install; +VueRouter.version = '3.0.2'; + +if (inBrowser && window.Vue) { + window.Vue.use(VueRouter); +} + +return VueRouter; + +}))); diff --git a/webroot/assets/vue-websocket.js b/webroot/assets/vue-websocket.js new file mode 100644 index 0000000..b3ed931 --- /dev/null +++ b/webroot/assets/vue-websocket.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueNativeSock=e():t.VueNativeSock=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=1)}([function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n-1)&&(o.splice(r,1),this.listeners.set(t,o),!0)}},{key:"emit",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:{};if(!e)throw new Error("[vue-native-socket] cannot locate connection");var o=null;n.$setInstance=function(e){t.prototype.$socket=e},n.connectManually?(t.prototype.$connect=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n;o=new i.default(r,s),t.prototype.$socket=o.WebSocket},t.prototype.$disconnect=function(){o&&o.reconnection&&(o.reconnection=!1),t.prototype.$socket&&(t.prototype.$socket.close(),delete t.prototype.$socket)}):(o=new i.default(e,n),t.prototype.$socket=o.WebSocket);var r="undefined"!=typeof Proxy&&"function"==typeof Proxy&&/native code/.test(Proxy.toString());t.mixin({created:function(){var t=this,e=this,n=this.$options.sockets;r?(this.$options.sockets=new Proxy({},{set:function(t,n,o){return c.default.addListener(n,o,e),t[n]=o,!0},deleteProperty:function(t,n){return c.default.removeListener(n,e.$options.sockets[n],e),delete t.key,!0}}),n&&Object.keys(n).forEach(function(e){t.$options.sockets[e]=n[e]})):Object.seal(this.$options.sockets)},beforeDestroy:function(){var t=this;if(r){var e=this.$options.sockets;e&&Object.keys(e).forEach(function(e){delete t.$options.sockets[e]})}}})}}},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(o(this,t),this.format=n.format&&n.format.toLowerCase(),e.startsWith("//")){e=("https:"===window.location.protocol?"wss":"ws")+"://"+e}this.connectionUrl=e,this.opts=n,this.reconnection=this.opts.reconnection||!1,this.reconnectionAttempts=this.opts.reconnectionAttempts||1/0,this.reconnectionDelay=this.opts.reconnectionDelay||1e3,this.reconnectTimeoutId=0,this.reconnectionCount=0,this.passToStoreHandler=this.opts.passToStoreHandler||!1,this.connect(e,n),n.store&&(this.store=n.store),n.mutations&&(this.mutations=n.mutations),this.onEvent()}return r(t,[{key:"connect",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=n.protocol||"";return this.WebSocket=n.WebSocket||(""===o?new WebSocket(t):new WebSocket(t,o)),"json"===this.format&&("sendObj"in this.WebSocket||(this.WebSocket.sendObj=function(t){return e.WebSocket.send(JSON.stringify(t))})),this.WebSocket}},{key:"reconnect",value:function(){var t=this;this.reconnectionCount<=this.reconnectionAttempts?(this.reconnectionCount++,clearTimeout(this.reconnectTimeoutId),this.reconnectTimeoutId=setTimeout(function(){t.store&&t.passToStore("SOCKET_RECONNECT",t.reconnectionCount),t.connect(t.connectionUrl,t.opts),t.onEvent()},this.reconnectionDelay)):this.store&&this.passToStore("SOCKET_RECONNECT_ERROR",!0)}},{key:"onEvent",value:function(){var t=this;["onmessage","onclose","onerror","onopen"].forEach(function(e){t.WebSocket[e]=function(n){s.default.emit(e,n),t.store&&t.passToStore("SOCKET_"+e,n),t.reconnection&&"onopen"===e&&(t.opts.$setInstance(n.currentTarget),t.reconnectionCount=0),t.reconnection&&"onclose"===e&&t.reconnect()}})}},{key:"passToStore",value:function(t,e){this.passToStoreHandler?this.passToStoreHandler(t,e,this.defaultPassToStore.bind(this)):this.defaultPassToStore(t,e)}},{key:"defaultPassToStore",value:function(t,e){if(t.startsWith("SOCKET_")){var n="commit",o=t.toUpperCase(),r=e;"json"===this.format&&e.data&&(r=JSON.parse(e.data),r.mutation?o=[r.namespace||"",r.mutation].filter(function(t){return!!t}).join("/"):r.action&&(n="dispatch",o=[r.namespace||"",r.action].filter(function(t){return!!t}).join("/"))),this.mutations&&(o=this.mutations[o]||o),this.store[n](o,r)}}}]),t}();e.default=c}])}); \ No newline at end of file diff --git a/webroot/assets/vue-websocket.js.map b/webroot/assets/vue-websocket.js.map new file mode 100644 index 0000000..3c342a8 --- /dev/null +++ b/webroot/assets/vue-websocket.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap a4a46e3a6251c8ab77f7","webpack:///(webpack)/buildin/global.js","webpack:///./~/debug/browser.js","webpack:///./~/engine.io-parser/lib/browser.js","webpack:///./~/component-emitter/index.js","webpack:///./~/component-inherit/index.js","webpack:///./~/engine.io-client/lib/transport.js","webpack:///./~/engine.io-client/lib/xmlhttprequest.js","webpack:///./~/parseqs/index.js","webpack:///./~/socket.io-parser/index.js","webpack:///./src/Emitter.js","webpack:///./~/component-bind/index.js","webpack:///./~/engine.io-client/lib/transports/index.js","webpack:///./~/engine.io-client/lib/transports/polling.js","webpack:///./~/has-binary/index.js","webpack:///./~/indexof/index.js","webpack:///./~/isarray/index.js","webpack:///./~/parseuri/index.js","webpack:///./~/socket.io-client/lib/manager.js","webpack:///./~/socket.io-client/lib/on.js","webpack:///./~/socket.io-client/lib/socket.js","webpack:///./~/socket.io-parser/is-buffer.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/yeast/index.js","webpack:///./src/Main.js","webpack:///./~/after/index.js","webpack:///./~/arraybuffer.slice/index.js","webpack:///./src/Observer.js","webpack:///./~/backo2/index.js","webpack:///./~/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./~/blob/index.js","webpack:///./~/debug/debug.js","webpack:///./~/engine.io-client/index.js","webpack:///./~/engine.io-client/lib/index.js","webpack:///./~/engine.io-client/lib/socket.js","webpack:///./~/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./~/engine.io-client/lib/transports/polling-xhr.js","webpack:///./~/engine.io-client/lib/transports/websocket.js","webpack:///./~/engine.io-parser/lib/keys.js","webpack:///./~/has-cors/index.js","webpack:///./~/json3/lib/json3.js","webpack:///./~/ms/index.js","webpack:///./~/parsejson/index.js","webpack:///./~/process/browser.js","webpack:///./~/socket.io-client/lib/index.js","webpack:///./~/socket.io-client/lib/url.js","webpack:///./~/socket.io-parser/binary.js","webpack:///./~/socket.io-parser/~/component-emitter/index.js","webpack:///./~/socket.io-parser/~/debug/browser.js","webpack:///./~/socket.io-parser/~/debug/debug.js","webpack:///./~/socket.io-parser/~/ms/index.js","webpack:///./~/to-array/index.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./~/wtf-8/wtf-8.js","webpack:///ws (ignored)"],"names":["constructor","listeners","Map","addListener","label","callback","vm","has","set","get","push","removeListener","index","length","reduce","i","listener","splice","emit","args","forEach","call","install","Vue","connection","store","Error","observer","prototype","$socket","Socket","mixin","beforeCreate","sockets","$options","Proxy","target","key","value","Emitter","deleteProperty","Object","keys","beforeDestroy","onEvent","onevent","packet","data","commitStore","_this","on","toUpperCase","type","payload","split","_mutations","commit"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;AChEA;;AAEA;AACA,iBAAiB,aAAa,EAAE;;AAEhC;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;AChLA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,WAAW;;AAEX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA,YAAY,oBAAoB,oCAAoC;AACpE;;AAEA;;AAEA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kCAAkC,OAAO;AACzC;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,YAAY;AACxB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mDAAmD;AACnD,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,OAAO,OAAO;AACd;AACA;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,EAAE;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;AC/lBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACNA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AC5JA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;;AAEf;AACA;AACA;AACA,KAAK,YAAY;AACjB;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B;AAC1B,sBAAsB;AACtB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;;AAEA;AACA;AACA;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,W;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,oBAAoB;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,YAAY,cAAc;AAC1B;AACA;AACA;;AAEA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnZA,4CAAe,IAAI,MAAM;AACrBA,kBAAc;AACV,aAAKC,SAAL,GAAiB,IAAIC,GAAJ,EAAjB;AACH;;AAEDC,gBAAYC,KAAZ,EAAmBC,QAAnB,EAA6BC,EAA7B,EAAiC;AAC7B,YAAG,OAAOD,QAAP,IAAmB,UAAtB,EAAiC;AAC7B,iBAAKJ,SAAL,CAAeM,GAAf,CAAmBH,KAAnB,KAA6B,KAAKH,SAAL,CAAeO,GAAf,CAAmBJ,KAAnB,EAA0B,EAA1B,CAA7B;AACA,iBAAKH,SAAL,CAAeQ,GAAf,CAAmBL,KAAnB,EAA0BM,IAA1B,CAA+B,EAACL,UAAUA,QAAX,EAAqBC,IAAIA,EAAzB,EAA/B;;AAEA,mBAAO,IAAP;AACH;;AAED,eAAO,KAAP;AACH;;AAEDK,mBAAeP,KAAf,EAAsBC,QAAtB,EAAgCC,EAAhC,EAAoC;AAChC,YAAIL,YAAY,KAAKA,SAAL,CAAeQ,GAAf,CAAmBL,KAAnB,CAAhB;AAAA,YACIQ,KADJ;;AAGA,YAAIX,aAAaA,UAAUY,MAA3B,EAAmC;AAC/BD,oBAAQX,UAAUa,MAAV,CAAiB,CAACC,CAAD,EAAIC,QAAJ,EAAcJ,KAAd,KAAwB;AAC7C,uBAAQ,OAAOI,SAASX,QAAhB,IAA4B,UAA5B,IAA0CW,SAASX,QAAT,KAAsBA,QAAhE,IAA4EW,SAASV,EAAT,IAAeA,EAA5F,GACHS,IAAIH,KADD,GAEHG,CAFJ;AAGH,aAJO,EAIL,CAAC,CAJI,CAAR;;AAMA,gBAAIH,QAAQ,CAAC,CAAb,EAAgB;AACZX,0BAAUgB,MAAV,CAAiBL,KAAjB,EAAwB,CAAxB;AACA,qBAAKX,SAAL,CAAeO,GAAf,CAAmBJ,KAAnB,EAA0BH,SAA1B;AACA,uBAAO,IAAP;AACH;AACJ;AACD,eAAO,KAAP;AACH;;AAEDiB,SAAKd,KAAL,EAAY,GAAGe,IAAf,EAAqB;AACjB,YAAIlB,YAAY,KAAKA,SAAL,CAAeQ,GAAf,CAAmBL,KAAnB,CAAhB;;AAEA,YAAIH,aAAaA,UAAUY,MAA3B,EAAmC;AAC/BZ,sBAAUmB,OAAV,CAAmBJ,QAAD,IAAc;AAC5BA,yBAASX,QAAT,CAAkBgB,IAAlB,CAAuBL,SAASV,EAAhC,EAAmC,GAAGa,IAAtC;AACH,aAFD;AAGA,mBAAO,IAAP;AACH;AACD,eAAO,KAAP;AACH;;AA9CoB,CAAV,EAAf,C;;;;;;ACAA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;ACpDA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnPA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;ACzDA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,E;;;;;;ACTA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;AAEA,yGAAyG,IAAI,GAAG,IAAI,SAAS,IAAI;;AAEjI;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE;AACxE;;AAEA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wEAAwE;AACxE,kFAAkF;AAClF;AACA;;AAEA;AACA;;;;;;;;ACrCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG,OAAO;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9iBA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC,qBAAqB,kCAAkC,EAAE;AACzD,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,KAAK;AACL,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;;AAEA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACjaA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC,GAAG;AACH;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC,GAAG;AACH;AACA;AACA;AACA;;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,aAAa,gBAAgB;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,YAAY;;AAElB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnEA;AACA;;AAEA,kDAAe;;AAEXG,YAAQC,GAAR,EAAaC,UAAb,EAAyBC,KAAzB,EAA+B;;AAE3B,YAAG,CAACD,UAAJ,EAAgB,MAAM,IAAIE,KAAJ,CAAU,0CAAV,CAAN;;AAEhB,YAAIC,WAAW,IAAI,0DAAJ,CAAaH,UAAb,EAAyBC,KAAzB,CAAf;;AAEAF,YAAIK,SAAJ,CAAcC,OAAd,GAAwBF,SAASG,MAAjC;;AAEAP,YAAIQ,KAAJ,CAAU;AACNC,2BAAc;AACV,oBAAIC,UAAU,KAAKC,QAAL,CAAc,SAAd,CAAd;;AAEA,qBAAKA,QAAL,CAAcD,OAAd,GAAwB,IAAIE,KAAJ,CAAU,EAAV,EAAc;AAClC3B,yBAAK,CAAC4B,MAAD,EAASC,GAAT,EAAcC,KAAd,KAAwB;AACzBC,wBAAA,yDAAAA,CAAQpC,WAAR,CAAoBkC,GAApB,EAAyBC,KAAzB,EAAgC,IAAhC;AACAF,+BAAOC,GAAP,IAAcC,KAAd;AACA,+BAAO,IAAP;AACH,qBALiC;AAMlCE,oCAAgB,CAACJ,MAAD,EAASC,GAAT,KAAiB;AAC7BE,wBAAA,yDAAAA,CAAQ5B,cAAR,CAAuB0B,GAAvB,EAA4B,KAAKH,QAAL,CAAcD,OAAd,CAAsBI,GAAtB,CAA5B,EAAwD,IAAxD;AACA,+BAAOD,OAAOC,GAAd;AACA,+BAAO,IAAP;AACH;AAViC,iBAAd,CAAxB;;AAaA,oBAAGJ,OAAH,EAAW;AACPQ,2BAAOC,IAAP,CAAYT,OAAZ,EAAqBb,OAArB,CAA8BiB,GAAD,IAAS;AAClC,6BAAKH,QAAL,CAAcD,OAAd,CAAsBI,GAAtB,IAA6BJ,QAAQI,GAAR,CAA7B;AACH,qBAFD;AAGH;AACJ,aAtBK;AAuBNM,4BAAe;AACX,oBAAIV,UAAU,KAAKC,QAAL,CAAc,SAAd,CAAd;;AAEA,oBAAGD,OAAH,EAAW;AACPQ,2BAAOC,IAAP,CAAYT,OAAZ,EAAqBb,OAArB,CAA8BiB,GAAD,IAAS;AAClC,+BAAO,KAAKH,QAAL,CAAcD,OAAd,CAAsBI,GAAtB,CAAP;AACH,qBAFD;AAGH;AACJ;AA/BK,SAAV;AAkCH;;AA5CU,CAAf,C;;;;;;ACHA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,sCAAsC;;AAEhE,kBAAkB,gBAAgB;AAClC,gBAAgB,cAAc;AAC9B,oBAAoB,aAAa;;AAEjC;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;;;;;;;;;;;AC5BA;AACA;;AAEA,4CAAe,MAAK;;AAEhBrC,gBAAYwB,UAAZ,EAAwBC,KAAxB,EAA+B;;AAE3B,YAAG,OAAOD,UAAP,IAAqB,QAAxB,EAAiC;AAC7B,iBAAKM,MAAL,GAAc,wDAAAA,CAAON,UAAP,CAAd;AACH,SAFD,MAEK;AACD,iBAAKM,MAAL,GAAcN,UAAd;AACH;;AAED,YAAGC,KAAH,EAAU,KAAKA,KAAL,GAAaA,KAAb;;AAEV,aAAKmB,OAAL;AAEH;;AAEDA,cAAS;AACL,aAAKd,MAAL,CAAYe,OAAZ,GAAuBC,MAAD,IAAY;AAC9BP,YAAA,yDAAAA,CAAQrB,IAAR,CAAa4B,OAAOC,IAAP,CAAY,CAAZ,CAAb,EAA6BD,OAAOC,IAAP,CAAY,CAAZ,CAA7B;;AAEA,gBAAG,KAAKtB,KAAR,EAAe,KAAKuB,WAAL,CAAiB,YAAUF,OAAOC,IAAP,CAAY,CAAZ,CAA3B,EAA2CD,OAAOC,IAAP,CAAY,CAAZ,CAA3C;AAElB,SALD;;AAOA,YAAIE,QAAQ,IAAZ;;AAEA,SAAC,SAAD,EAAY,OAAZ,EAAqB,YAArB,EAAmC,WAAnC,EAAgD,mBAAhD,EAAqE,cAArE,EAAqF,iBAArF,EAAwG,kBAAxG,EAA4H,eAA5H,EAA6I,iBAA7I,EAAgK,YAAhK,EAA8K,MAA9K,EAAsL,MAAtL,EACK7B,OADL,CACckB,KAAD,IAAW;AAChBW,kBAAMnB,MAAN,CAAaoB,EAAb,CAAgBZ,KAAhB,EAAwBS,IAAD,IAAU;AAC7BR,gBAAA,yDAAAA,CAAQrB,IAAR,CAAaoB,KAAb,EAAoBS,IAApB;AACA,oBAAGE,MAAMxB,KAAT,EAAgBwB,MAAMD,WAAN,CAAkB,YAAUV,MAAMa,WAAN,EAA5B,EAAiDJ,IAAjD;AACnB,aAHD;AAIH,SANL;AAOH;;AAGDC,gBAAYI,IAAZ,EAAkBC,OAAlB,EAA0B;;AAEtB,YAAGD,KAAKE,KAAL,CAAW,GAAX,EAAgB,CAAhB,EAAmBH,WAAnB,OAAqC,QAAxC,EAAiD;;AAE7C,gBAAG,KAAK1B,KAAL,CAAW8B,UAAX,CAAsBH,IAAtB,CAAH,EACI,KAAK3B,KAAL,CAAW+B,MAAX,CAAkBJ,IAAlB,EAAwBC,OAAxB;AAEP;AAEJ;;AA7Ce,C;;;;;;;ACFpB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;AClED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC;;;;;;;;;AC9FD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B,4BAA4B;AAC5B,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACtMA;;;;;;;;ACAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F;;AAE3F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;;;;;;;;;AChuBA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;ACtOA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA,0BAA0B,iDAAiD;AAC3E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,2DAA2D;AAC3D;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvaA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;;;;;;;;;AC3RA;AACA;AACA;AACA,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;;;;;;sDChBA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,kCAAkC,iDAAiD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oDAAoD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B;AACvE;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6BAA6B;AAC7F,uEAAuE,iCAAiC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,4DAA4D;AAC5D;AACA;AACA,iDAAiD,MAAM;AACvD;AACA;AACA;AACA,eAAe;AACf,wDAAwD,0EAA0E,OAAO,0BAA0B,SAAS;AAC5K;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,gEAAgE,gBAAgB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,2BAA2B;AAC5F;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC,0CAA0C;AAC1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,KAAK;AACpD;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6FAA6F;AACrH,mEAAmE;AACnE;AACA;AACA;AACA;AACA,0BAA0B,mGAAmG;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mGAAmG;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA,qBAAqB;AACrB;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACr4BD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,mDAAmD,EAAE;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;AClLtC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AC3GA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AC1EA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;AACL;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC,UAAU;AACV;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA,KAAK;AACL,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,KAAK,yBAAyB;AAC9B,qBAAqB,gBAAgB;AACrC;AACA;AACA,KAAK,yDAAyD;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3IA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;;;;;;;AClKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B,4BAA4B;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;;;;;;ACpMA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;AC5HA;;AAEA;AACA;;AAEA;;AAEA,4BAA4B,iBAAiB;AAC7C;AACA;;AAEA;AACA;;;;;;;ACZA;;;;;;;;sDCAA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,KAAK;AACL,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF,mBAAmB;AACnB;AACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO;AACT;AACA;;AAEA,CAAC;;;;;;;;ACzOD,e","file":"build.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueSocketio\"] = factory();\n\telse\n\t\troot[\"VueSocketio\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 54);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a4a46e3a6251c8ab77f7","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() { return this; })();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0","\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (window.console && (console.firebug || (console.exception && console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs() {\n var args = arguments;\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return args;\n\n var c = 'color: ' + this.color;\n args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n return args;\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n return exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (typeof process !== 'undefined' && 'env' in process) {\n return process.env.DEBUG;\n }\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage(){\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/debug/browser.js\n// module id = 1\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('wtf-8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * [ ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if ('function' == typeof supportsBinary) {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if ('function' == typeof utf8encode) {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data)) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data == 'string') {\n if (data.charAt(0) == 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data);\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * :data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary == 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, true, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data != 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data == '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = ''\n , n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (':' != chr) {\n length += chr;\n } else {\n if ('' == length || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, true);\n\n if (err.type == packet.type && err.data == packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n }\n\n if (length != '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string>[...]\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n var numberTooLong = false;\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] == 255) break;\n\n if (msgLength.length > 310) {\n numberTooLong = true;\n break;\n }\n\n msgLength += tailArray[i];\n }\n\n if(numberTooLong) return callback(err, 0, 1);\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-parser/lib/browser.js\n// module id = 2\n// module chunks = 0","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/component-emitter/index.js\n// module id = 3\n// module chunks = 0","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/component-inherit/index.js\n// module id = 4\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/transport.js\n// module id = 5\n// module chunks = 0","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/xmlhttprequest.js\n// module id = 6\n// module chunks = 0","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parseqs/index.js\n// module id = 7\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar json = require('json3');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n var str = '';\n var nsp = false;\n\n // first is type\n str += obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) {\n str += obj.attachments;\n str += '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' != obj.nsp) {\n nsp = true;\n str += obj.nsp;\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n if (nsp) {\n str += ',';\n nsp = false;\n }\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n if (nsp) str += ',';\n str += json.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if ('string' == typeof obj) {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT == packet.type || exports.BINARY_ACK == packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var p = {};\n var i = 0;\n\n // look up type\n p.type = Number(str.charAt(0));\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT == p.type || exports.BINARY_ACK == p.type) {\n var buf = '';\n while (str.charAt(++i) != '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) != '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' == str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' == c) break;\n p.nsp += c;\n if (i == str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i == str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = json.parse(str);\n } catch(e){\n return error();\n }\n return p; \n};\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length == this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error(data){\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/socket.io-parser/index.js\n// module id = 8\n// module chunks = 0","export default new class {\n constructor() {\n this.listeners = new Map();\n }\n\n addListener(label, callback, vm) {\n if(typeof callback == 'function'){\n this.listeners.has(label) || this.listeners.set(label, []);\n this.listeners.get(label).push({callback: callback, vm: vm});\n\n return true\n }\n\n return false\n }\n\n removeListener(label, callback, vm) {\n let listeners = this.listeners.get(label),\n index;\n\n if (listeners && listeners.length) {\n index = listeners.reduce((i, listener, index) => {\n return (typeof listener.callback == 'function' && listener.callback === callback && listener.vm == vm) ?\n i = index :\n i;\n }, -1);\n\n if (index > -1) {\n listeners.splice(index, 1);\n this.listeners.set(label, listeners);\n return true;\n }\n }\n return false;\n }\n\n emit(label, ...args) {\n let listeners = this.listeners.get(label);\n\n if (listeners && listeners.length) {\n listeners.forEach((listener) => {\n listener.callback.call(listener.vm,...args)\n });\n return true;\n }\n return false;\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// ./src/Emitter.js","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/component-bind/index.js\n// module id = 10\n// module chunks = 0","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/transports/index.js\n// module id = 11\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/transports/polling.js\n// module id = 12\n// module chunks = 0","\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Right now only Buffer and ArrayBuffer are supported..\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary(data) {\n\n function _hasBinary(obj) {\n if (!obj) return false;\n\n if ( (global.Buffer && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer) ||\n (global.Blob && obj instanceof Blob) ||\n (global.File && obj instanceof File)\n ) {\n return true;\n }\n\n if (isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n if (_hasBinary(obj[i])) {\n return true;\n }\n }\n } else if (obj && 'object' == typeof obj) {\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && 'function' == typeof obj.toJSON) {\n obj = obj.toJSON();\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n return _hasBinary(data);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/has-binary/index.js\n// module id = 13\n// module chunks = 0","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/indexof/index.js\n// module id = 14\n// module chunks = 0","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 15\n// module chunks = 0","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parseuri/index.js\n// module id = 16\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n this.encoder = new parser.Encoder();\n this.decoder = new parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.engine.id;\n }\n }\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.engine.id;\n });\n\n if (this.autoConnect) {\n // manually call here since connecting evnet is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/socket.io-client/lib/manager.js\n// module id = 17\n// module chunks = 0","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/socket.io-client/lib/on.js\n// module id = 18\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar hasBin = require('has-binary');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var parserType = parser.EVENT; // default\n if (hasBin(args)) { parserType = parser.BINARY_EVENT; } // binary\n var packet = { type: parserType, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n this.packet({type: parser.CONNECT, query: this.query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n var type = hasBin(args) ? parser.BINARY_ACK : parser.ACK;\n self.packet({\n type: type,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/socket.io-client/lib/socket.js\n// module id = 19\n// module chunks = 0","\nmodule.exports = isBuf;\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (global.Buffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/socket.io-parser/is-buffer.js\n// module id = 20\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.l; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.i; }\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 21\n// module chunks = 0","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/yeast/index.js\n// module id = 22\n// module chunks = 0","import Observer from './Observer'\nimport Emitter from './Emitter'\n\nexport default {\n\n install(Vue, connection, store){\n\n if(!connection) throw new Error(\"[Vue-Socket.io] cannot locate connection\")\n\n let observer = new Observer(connection, store)\n\n Vue.prototype.$socket = observer.Socket;\n\n Vue.mixin({\n beforeCreate(){\n let sockets = this.$options['sockets']\n\n this.$options.sockets = new Proxy({}, {\n set: (target, key, value) => {\n Emitter.addListener(key, value, this)\n target[key] = value\n return true;\n },\n deleteProperty: (target, key) => {\n Emitter.removeListener(key, this.$options.sockets[key], this)\n delete target.key;\n return true\n }\n })\n\n if(sockets){\n Object.keys(sockets).forEach((key) => {\n this.$options.sockets[key] = sockets[key];\n });\n }\n },\n beforeDestroy(){\n let sockets = this.$options['sockets']\n\n if(sockets){\n Object.keys(sockets).forEach((key) => {\n delete this.$options.sockets[key]\n });\n }\n }\n })\n\n }\n\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/Main.js","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/after/index.js\n// module id = 24\n// module chunks = 0","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/arraybuffer.slice/index.js\n// module id = 25\n// module chunks = 0","import Emitter from './Emitter'\nimport Socket from 'socket.io-client'\n\nexport default class{\n\n constructor(connection, store) {\n\n if(typeof connection == 'string'){\n this.Socket = Socket(connection);\n }else{\n this.Socket = connection\n }\n\n if(store) this.store = store;\n\n this.onEvent()\n\n }\n\n onEvent(){\n this.Socket.onevent = (packet) => {\n Emitter.emit(packet.data[0], packet.data[1]);\n\n if(this.store) this.commitStore('SOCKET_'+packet.data[0], packet.data[1])\n\n };\n\n let _this = this;\n\n [\"connect\", \"error\", \"disconnect\", \"reconnect\", \"reconnect_attempt\", \"reconnecting\", \"reconnect_error\", \"reconnect_failed\", \"connect_error\", \"connect_timeout\", \"connecting\", \"ping\", \"pong\"]\n .forEach((value) => {\n _this.Socket.on(value, (data) => {\n Emitter.emit(value, data);\n if(_this.store) _this.commitStore('SOCKET_'+value.toUpperCase(), data)\n })\n })\n }\n\n\n commitStore(type, payload){\n\n if(type.split('_')[0].toUpperCase() === 'SOCKET'){\n\n if(this.store._mutations[type])\n this.store.commit(type, payload)\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Observer.js","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/backo2/index.js\n// module id = 27\n// module chunks = 0","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64-arraybuffer/lib/base64-arraybuffer.js\n// module id = 28\n// module chunks = 0","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/blob/index.js\n// module id = 29\n// module chunks = 0","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = debug.debug = debug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\nexports.formatters = {};\n\n/**\n * Previously assigned color.\n */\n\nvar prevColor = 0;\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\nfunction selectColor() {\n return exports.colors[prevColor++ % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction debug(namespace) {\n\n // define the `disabled` version\n function disabled() {\n }\n disabled.enabled = false;\n\n // define the `enabled` version\n function enabled() {\n\n var self = enabled;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // add the `color` if not set\n if (null == self.useColors) self.useColors = exports.useColors();\n if (null == self.color && self.useColors) self.color = selectColor();\n\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %o\n args = ['%o'].concat(args);\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting\n args = exports.formatArgs.apply(self, args);\n\n var logFn = enabled.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n enabled.enabled = true;\n\n var fn = exports.enabled(namespace) ? enabled : disabled;\n\n fn.namespace = namespace;\n\n return fn;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/[\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/debug/debug.js\n// module id = 30\n// module chunks = 0","\nmodule.exports = require('./lib/index');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/index.js\n// module id = 31\n// module chunks = 0","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/index.js\n// module id = 32\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parsejson = require('parsejson');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? null : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n agent: this.agent,\n hostname: this.hostname,\n port: this.port,\n secure: this.secure,\n path: this.path,\n query: query,\n forceJSONP: this.forceJSONP,\n jsonp: this.jsonp,\n forceBase64: this.forceBase64,\n enablesXDR: this.enablesXDR,\n timestampRequests: this.timestampRequests,\n timestampParam: this.timestampParam,\n policyPort: this.policyPort,\n socket: this,\n pfx: this.pfx,\n key: this.key,\n passphrase: this.passphrase,\n cert: this.cert,\n ca: this.ca,\n ciphers: this.ciphers,\n rejectUnauthorized: this.rejectUnauthorized,\n perMessageDeflate: this.perMessageDeflate,\n extraHeaders: this.extraHeaders,\n forceNode: this.forceNode,\n localAddress: this.localAddress\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(parsejson(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/engine.io-client/lib/socket.js\n// module id = 33\n// module chunks = 0","\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '