4 <meta charset=
"utf-8" />
5 <title>BIP39 - Mnemonic Code
</title>
7 * Bootstrap v3.2
.0 (http://getbootstrap.com)
8 * Copyright
2011-
2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0
.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:
100%;-ms-text-size-adjust:
100%}body{margin:
0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:
0}[hidden],template{display:none}a{background:
0 0}a:active,a:hover{outline:
0}abbr[title]{border-bottom:
1px dotted}b,strong{font-weight:
700}dfn{font-style:italic}h1{margin:
.67em
0;font-size:
2em}mark{color:#
000;background:#ff0}small{font-size:
80%}sub,sup{position:relative;font-size:
75%;line-height:
0;vertical-align:baseline}sup{top:-
.5em}sub{bottom:-
.25em}img{border:
0}svg:not(:root){overflow:hidden}figure{margin:
1em
40px}hr{height:
0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:
1em}button,input,optgroup,select,textarea{margin:
0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:
0;border:
0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:
0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:
.35em
.625em
.75em;margin:
0 2px;border:
1px solid silver}legend{padding:
0;border:
0}textarea{overflow:auto}optgroup{font-weight:
700}table{border-spacing:
0;border-collapse:collapse}td,th{padding:
0}@media print{*{color:#
000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:
1px solid #
999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:
100%!important}p,h2,h3{orphans:
3;widows:
3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn
>.caret,.dropup
>.btn
>.caret{border-top-color:#
000!important}.label{border:
1px solid #
000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:
1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:
1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:
400;line-height:
1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\
2a"}.glyphicon-plus:before{content:"\
2b"}.glyphicon-euro:before{content:"\
20ac"}.glyphicon-minus:before{content:"\
2212"}.glyphicon-cloud:before{content:"\
2601"}.glyphicon-envelope:before{content:"\
2709"}.glyphicon-pencil:before{content:"\
270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-
5-
1:before{content:"\e191"}.glyphicon-sound-
6-
1:before{content:"\e192"}.glyphicon-sound-
7-
1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:
10px;-webkit-tap-highlight-color:rgba(
0,
0,
0,
0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:
14px;line-height:
1.42857143;color:#
333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#
428bca;text-decoration:none}a:hover,a:focus{color:#
2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}figure{margin:
0}img{vertical-align:middle}.img-responsive,.thumbnail
>img,.thumbnail a
>img,.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{display:block;width:
100% \
9;max-width:
100%;height:auto}.img-rounded{border-radius:
6px}.img-thumbnail{display:inline-block;width:
100% \
9;max-width:
100%;height:auto;padding:
4px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.img-circle{border-radius:
50%}hr{margin-top:
20px;margin-bottom:
20px;border:
0;border-top:
1px solid #eee}.sr-only{position:absolute;width:
1px;height:
1px;padding:
0;margin:-
1px;overflow:hidden;clip:rect(
0,
0,
0,
0);border:
0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:
0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:
500;line-height:
1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:
400;line-height:
1;color:#
777}h1,.h1,h2,.h2,h3,.h3{margin-top:
20px;margin-bottom:
10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:
65%}h4,.h4,h5,.h5,h6,.h6{margin-top:
10px;margin-bottom:
10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:
75%}h1,.h1{font-size:
36px}h2,.h2{font-size:
30px}h3,.h3{font-size:
24px}h4,.h4{font-size:
18px}h5,.h5{font-size:
14px}h6,.h6{font-size:
12px}p{margin:
0 0 10px}.lead{margin-bottom:
20px;font-size:
16px;font-weight:
300;line-height:
1.4}@media (min-width:
768px){.lead{font-size:
21px}}small,.small{font-size:
85%}cite{font-style:normal}mark,.mark{padding:
.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#
777}.text-primary{color:#
428bca}a.text-primary:hover{color:#
3071a9}.text-success{color:#
3c763d}a.text-success:hover{color:#
2b542c}.text-info{color:#
31708f}a.text-info:hover{color:#
245269}.text-warning{color:#
8a6d3b}a.text-warning:hover{color:#
66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#
843534}.bg-primary{color:#fff;background-color:#
428bca}a.bg-primary:hover{background-color:#
3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:
9px;margin:
40px
0 20px;border-bottom:
1px solid #eee}ul,ol{margin-top:
0;margin-bottom:
10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:
0}.list-unstyled{padding-left:
0;list-style:none}.list-inline{padding-left:
0;margin-left:-
5px;list-style:none}.list-inline
>li{display:inline-block;padding-right:
5px;padding-left:
5px}dl{margin-top:
0;margin-bottom:
20px}dt,dd{line-height:
1.42857143}dt{font-weight:
700}dd{margin-left:
0}@media (min-width:
768px){.dl-horizontal dt{float:left;width:
160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:
180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:
1px dotted #
777}.initialism{font-size:
90%;text-transform:uppercase}blockquote{padding:
10px
20px;margin:
0 0 20px;font-size:
17.5px;border-left:
5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:
0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:
80%;line-height:
1.42857143;color:#
777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\
2014 \
00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:
15px;padding-left:
0;text-align:right;border-right:
5px solid #eee;border-left:
0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\
00A0 \
2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:
20px;font-style:normal;line-height:
1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:
2px
4px;font-size:
90%;color:#c7254e;background-color:#f9f2f4;border-radius:
4px}kbd{padding:
2px
4px;font-size:
90%;color:#fff;background-color:#
333;border-radius:
3px;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25)}kbd kbd{padding:
0;font-size:
100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:
9.5px;margin:
0 0 10px;font-size:
13px;line-height:
1.42857143;color:#
333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:
1px solid #ccc;border-radius:
4px}pre code{padding:
0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:
0}.pre-scrollable{max-height:
340px;overflow-y:scroll}.container{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}@media (min-width:
768px){.container{width:
750px}}@media (min-width:
992px){.container{width:
970px}}@media (min-width:
1200px){.container{width:
1170px}}.container-fluid{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}.row{margin-right:-
15px;margin-left:-
15px}.col-xs-
1,.col-sm-
1,.col-md-
1,.col-lg-
1,.col-xs-
2,.col-sm-
2,.col-md-
2,.col-lg-
2,.col-xs-
3,.col-sm-
3,.col-md-
3,.col-lg-
3,.col-xs-
4,.col-sm-
4,.col-md-
4,.col-lg-
4,.col-xs-
5,.col-sm-
5,.col-md-
5,.col-lg-
5,.col-xs-
6,.col-sm-
6,.col-md-
6,.col-lg-
6,.col-xs-
7,.col-sm-
7,.col-md-
7,.col-lg-
7,.col-xs-
8,.col-sm-
8,.col-md-
8,.col-lg-
8,.col-xs-
9,.col-sm-
9,.col-md-
9,.col-lg-
9,.col-xs-
10,.col-sm-
10,.col-md-
10,.col-lg-
10,.col-xs-
11,.col-sm-
11,.col-md-
11,.col-lg-
11,.col-xs-
12,.col-sm-
12,.col-md-
12,.col-lg-
12{position:relative;min-height:
1px;padding-right:
15px;padding-left:
15px}.col-xs-
1,.col-xs-
2,.col-xs-
3,.col-xs-
4,.col-xs-
5,.col-xs-
6,.col-xs-
7,.col-xs-
8,.col-xs-
9,.col-xs-
10,.col-xs-
11,.col-xs-
12{float:left}.col-xs-
12{width:
100%}.col-xs-
11{width:
91.66666667%}.col-xs-
10{width:
83.33333333%}.col-xs-
9{width:
75%}.col-xs-
8{width:
66.66666667%}.col-xs-
7{width:
58.33333333%}.col-xs-
6{width:
50%}.col-xs-
5{width:
41.66666667%}.col-xs-
4{width:
33.33333333%}.col-xs-
3{width:
25%}.col-xs-
2{width:
16.66666667%}.col-xs-
1{width:
8.33333333%}.col-xs-pull-
12{right:
100%}.col-xs-pull-
11{right:
91.66666667%}.col-xs-pull-
10{right:
83.33333333%}.col-xs-pull-
9{right:
75%}.col-xs-pull-
8{right:
66.66666667%}.col-xs-pull-
7{right:
58.33333333%}.col-xs-pull-
6{right:
50%}.col-xs-pull-
5{right:
41.66666667%}.col-xs-pull-
4{right:
33.33333333%}.col-xs-pull-
3{right:
25%}.col-xs-pull-
2{right:
16.66666667%}.col-xs-pull-
1{right:
8.33333333%}.col-xs-pull-
0{right:auto}.col-xs-push-
12{left:
100%}.col-xs-push-
11{left:
91.66666667%}.col-xs-push-
10{left:
83.33333333%}.col-xs-push-
9{left:
75%}.col-xs-push-
8{left:
66.66666667%}.col-xs-push-
7{left:
58.33333333%}.col-xs-push-
6{left:
50%}.col-xs-push-
5{left:
41.66666667%}.col-xs-push-
4{left:
33.33333333%}.col-xs-push-
3{left:
25%}.col-xs-push-
2{left:
16.66666667%}.col-xs-push-
1{left:
8.33333333%}.col-xs-push-
0{left:auto}.col-xs-offset-
12{margin-left:
100%}.col-xs-offset-
11{margin-left:
91.66666667%}.col-xs-offset-
10{margin-left:
83.33333333%}.col-xs-offset-
9{margin-left:
75%}.col-xs-offset-
8{margin-left:
66.66666667%}.col-xs-offset-
7{margin-left:
58.33333333%}.col-xs-offset-
6{margin-left:
50%}.col-xs-offset-
5{margin-left:
41.66666667%}.col-xs-offset-
4{margin-left:
33.33333333%}.col-xs-offset-
3{margin-left:
25%}.col-xs-offset-
2{margin-left:
16.66666667%}.col-xs-offset-
1{margin-left:
8.33333333%}.col-xs-offset-
0{margin-left:
0}@media (min-width:
768px){.col-sm-
1,.col-sm-
2,.col-sm-
3,.col-sm-
4,.col-sm-
5,.col-sm-
6,.col-sm-
7,.col-sm-
8,.col-sm-
9,.col-sm-
10,.col-sm-
11,.col-sm-
12{float:left}.col-sm-
12{width:
100%}.col-sm-
11{width:
91.66666667%}.col-sm-
10{width:
83.33333333%}.col-sm-
9{width:
75%}.col-sm-
8{width:
66.66666667%}.col-sm-
7{width:
58.33333333%}.col-sm-
6{width:
50%}.col-sm-
5{width:
41.66666667%}.col-sm-
4{width:
33.33333333%}.col-sm-
3{width:
25%}.col-sm-
2{width:
16.66666667%}.col-sm-
1{width:
8.33333333%}.col-sm-pull-
12{right:
100%}.col-sm-pull-
11{right:
91.66666667%}.col-sm-pull-
10{right:
83.33333333%}.col-sm-pull-
9{right:
75%}.col-sm-pull-
8{right:
66.66666667%}.col-sm-pull-
7{right:
58.33333333%}.col-sm-pull-
6{right:
50%}.col-sm-pull-
5{right:
41.66666667%}.col-sm-pull-
4{right:
33.33333333%}.col-sm-pull-
3{right:
25%}.col-sm-pull-
2{right:
16.66666667%}.col-sm-pull-
1{right:
8.33333333%}.col-sm-pull-
0{right:auto}.col-sm-push-
12{left:
100%}.col-sm-push-
11{left:
91.66666667%}.col-sm-push-
10{left:
83.33333333%}.col-sm-push-
9{left:
75%}.col-sm-push-
8{left:
66.66666667%}.col-sm-push-
7{left:
58.33333333%}.col-sm-push-
6{left:
50%}.col-sm-push-
5{left:
41.66666667%}.col-sm-push-
4{left:
33.33333333%}.col-sm-push-
3{left:
25%}.col-sm-push-
2{left:
16.66666667%}.col-sm-push-
1{left:
8.33333333%}.col-sm-push-
0{left:auto}.col-sm-offset-
12{margin-left:
100%}.col-sm-offset-
11{margin-left:
91.66666667%}.col-sm-offset-
10{margin-left:
83.33333333%}.col-sm-offset-
9{margin-left:
75%}.col-sm-offset-
8{margin-left:
66.66666667%}.col-sm-offset-
7{margin-left:
58.33333333%}.col-sm-offset-
6{margin-left:
50%}.col-sm-offset-
5{margin-left:
41.66666667%}.col-sm-offset-
4{margin-left:
33.33333333%}.col-sm-offset-
3{margin-left:
25%}.col-sm-offset-
2{margin-left:
16.66666667%}.col-sm-offset-
1{margin-left:
8.33333333%}.col-sm-offset-
0{margin-left:
0}}@media (min-width:
992px){.col-md-
1,.col-md-
2,.col-md-
3,.col-md-
4,.col-md-
5,.col-md-
6,.col-md-
7,.col-md-
8,.col-md-
9,.col-md-
10,.col-md-
11,.col-md-
12{float:left}.col-md-
12{width:
100%}.col-md-
11{width:
91.66666667%}.col-md-
10{width:
83.33333333%}.col-md-
9{width:
75%}.col-md-
8{width:
66.66666667%}.col-md-
7{width:
58.33333333%}.col-md-
6{width:
50%}.col-md-
5{width:
41.66666667%}.col-md-
4{width:
33.33333333%}.col-md-
3{width:
25%}.col-md-
2{width:
16.66666667%}.col-md-
1{width:
8.33333333%}.col-md-pull-
12{right:
100%}.col-md-pull-
11{right:
91.66666667%}.col-md-pull-
10{right:
83.33333333%}.col-md-pull-
9{right:
75%}.col-md-pull-
8{right:
66.66666667%}.col-md-pull-
7{right:
58.33333333%}.col-md-pull-
6{right:
50%}.col-md-pull-
5{right:
41.66666667%}.col-md-pull-
4{right:
33.33333333%}.col-md-pull-
3{right:
25%}.col-md-pull-
2{right:
16.66666667%}.col-md-pull-
1{right:
8.33333333%}.col-md-pull-
0{right:auto}.col-md-push-
12{left:
100%}.col-md-push-
11{left:
91.66666667%}.col-md-push-
10{left:
83.33333333%}.col-md-push-
9{left:
75%}.col-md-push-
8{left:
66.66666667%}.col-md-push-
7{left:
58.33333333%}.col-md-push-
6{left:
50%}.col-md-push-
5{left:
41.66666667%}.col-md-push-
4{left:
33.33333333%}.col-md-push-
3{left:
25%}.col-md-push-
2{left:
16.66666667%}.col-md-push-
1{left:
8.33333333%}.col-md-push-
0{left:auto}.col-md-offset-
12{margin-left:
100%}.col-md-offset-
11{margin-left:
91.66666667%}.col-md-offset-
10{margin-left:
83.33333333%}.col-md-offset-
9{margin-left:
75%}.col-md-offset-
8{margin-left:
66.66666667%}.col-md-offset-
7{margin-left:
58.33333333%}.col-md-offset-
6{margin-left:
50%}.col-md-offset-
5{margin-left:
41.66666667%}.col-md-offset-
4{margin-left:
33.33333333%}.col-md-offset-
3{margin-left:
25%}.col-md-offset-
2{margin-left:
16.66666667%}.col-md-offset-
1{margin-left:
8.33333333%}.col-md-offset-
0{margin-left:
0}}@media (min-width:
1200px){.col-lg-
1,.col-lg-
2,.col-lg-
3,.col-lg-
4,.col-lg-
5,.col-lg-
6,.col-lg-
7,.col-lg-
8,.col-lg-
9,.col-lg-
10,.col-lg-
11,.col-lg-
12{float:left}.col-lg-
12{width:
100%}.col-lg-
11{width:
91.66666667%}.col-lg-
10{width:
83.33333333%}.col-lg-
9{width:
75%}.col-lg-
8{width:
66.66666667%}.col-lg-
7{width:
58.33333333%}.col-lg-
6{width:
50%}.col-lg-
5{width:
41.66666667%}.col-lg-
4{width:
33.33333333%}.col-lg-
3{width:
25%}.col-lg-
2{width:
16.66666667%}.col-lg-
1{width:
8.33333333%}.col-lg-pull-
12{right:
100%}.col-lg-pull-
11{right:
91.66666667%}.col-lg-pull-
10{right:
83.33333333%}.col-lg-pull-
9{right:
75%}.col-lg-pull-
8{right:
66.66666667%}.col-lg-pull-
7{right:
58.33333333%}.col-lg-pull-
6{right:
50%}.col-lg-pull-
5{right:
41.66666667%}.col-lg-pull-
4{right:
33.33333333%}.col-lg-pull-
3{right:
25%}.col-lg-pull-
2{right:
16.66666667%}.col-lg-pull-
1{right:
8.33333333%}.col-lg-pull-
0{right:auto}.col-lg-push-
12{left:
100%}.col-lg-push-
11{left:
91.66666667%}.col-lg-push-
10{left:
83.33333333%}.col-lg-push-
9{left:
75%}.col-lg-push-
8{left:
66.66666667%}.col-lg-push-
7{left:
58.33333333%}.col-lg-push-
6{left:
50%}.col-lg-push-
5{left:
41.66666667%}.col-lg-push-
4{left:
33.33333333%}.col-lg-push-
3{left:
25%}.col-lg-push-
2{left:
16.66666667%}.col-lg-push-
1{left:
8.33333333%}.col-lg-push-
0{left:auto}.col-lg-offset-
12{margin-left:
100%}.col-lg-offset-
11{margin-left:
91.66666667%}.col-lg-offset-
10{margin-left:
83.33333333%}.col-lg-offset-
9{margin-left:
75%}.col-lg-offset-
8{margin-left:
66.66666667%}.col-lg-offset-
7{margin-left:
58.33333333%}.col-lg-offset-
6{margin-left:
50%}.col-lg-offset-
5{margin-left:
41.66666667%}.col-lg-offset-
4{margin-left:
33.33333333%}.col-lg-offset-
3{margin-left:
25%}.col-lg-offset-
2{margin-left:
16.66666667%}.col-lg-offset-
1{margin-left:
8.33333333%}.col-lg-offset-
0{margin-left:
0}}table{background-color:transparent}th{text-align:left}.table{width:
100%;max-width:
100%;margin-bottom:
20px}.table
>thead
>tr
>th,.table
>tbody
>tr
>th,.table
>tfoot
>tr
>th,.table
>thead
>tr
>td,.table
>tbody
>tr
>td,.table
>tfoot
>tr
>td{padding:
8px;line-height:
1.42857143;vertical-align:top;border-top:
1px solid #ddd}.table
>thead
>tr
>th{vertical-align:bottom;border-bottom:
2px solid #ddd}.table
>caption+thead
>tr:first-child
>th,.table
>colgroup+thead
>tr:first-child
>th,.table
>thead:first-child
>tr:first-child
>th,.table
>caption+thead
>tr:first-child
>td,.table
>colgroup+thead
>tr:first-child
>td,.table
>thead:first-child
>tr:first-child
>td{border-top:
0}.table
>tbody+tbody{border-top:
2px solid #ddd}.table .table{background-color:#fff}.table-condensed
>thead
>tr
>th,.table-condensed
>tbody
>tr
>th,.table-condensed
>tfoot
>tr
>th,.table-condensed
>thead
>tr
>td,.table-condensed
>tbody
>tr
>td,.table-condensed
>tfoot
>tr
>td{padding:
5px}.table-bordered{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>tbody
>tr
>th,.table-bordered
>tfoot
>tr
>th,.table-bordered
>thead
>tr
>td,.table-bordered
>tbody
>tr
>td,.table-bordered
>tfoot
>tr
>td{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>thead
>tr
>td{border-bottom-width:
2px}.table-striped
>tbody
>tr:nth-child(odd)
>td,.table-striped
>tbody
>tr:nth-child(odd)
>th{background-color:#f9f9f9}.table-hover
>tbody
>tr:hover
>td,.table-hover
>tbody
>tr:hover
>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table
>thead
>tr
>td.active,.table
>tbody
>tr
>td.active,.table
>tfoot
>tr
>td.active,.table
>thead
>tr
>th.active,.table
>tbody
>tr
>th.active,.table
>tfoot
>tr
>th.active,.table
>thead
>tr.active
>td,.table
>tbody
>tr.active
>td,.table
>tfoot
>tr.active
>td,.table
>thead
>tr.active
>th,.table
>tbody
>tr.active
>th,.table
>tfoot
>tr.active
>th{background-color:#f5f5f5}.table-hover
>tbody
>tr
>td.active:hover,.table-hover
>tbody
>tr
>th.active:hover,.table-hover
>tbody
>tr.active:hover
>td,.table-hover
>tbody
>tr:hover
>.active,.table-hover
>tbody
>tr.active:hover
>th{background-color:#e8e8e8}.table
>thead
>tr
>td.success,.table
>tbody
>tr
>td.success,.table
>tfoot
>tr
>td.success,.table
>thead
>tr
>th.success,.table
>tbody
>tr
>th.success,.table
>tfoot
>tr
>th.success,.table
>thead
>tr.success
>td,.table
>tbody
>tr.success
>td,.table
>tfoot
>tr.success
>td,.table
>thead
>tr.success
>th,.table
>tbody
>tr.success
>th,.table
>tfoot
>tr.success
>th{background-color:#dff0d8}.table-hover
>tbody
>tr
>td.success:hover,.table-hover
>tbody
>tr
>th.success:hover,.table-hover
>tbody
>tr.success:hover
>td,.table-hover
>tbody
>tr:hover
>.success,.table-hover
>tbody
>tr.success:hover
>th{background-color:#d0e9c6}.table
>thead
>tr
>td.info,.table
>tbody
>tr
>td.info,.table
>tfoot
>tr
>td.info,.table
>thead
>tr
>th.info,.table
>tbody
>tr
>th.info,.table
>tfoot
>tr
>th.info,.table
>thead
>tr.info
>td,.table
>tbody
>tr.info
>td,.table
>tfoot
>tr.info
>td,.table
>thead
>tr.info
>th,.table
>tbody
>tr.info
>th,.table
>tfoot
>tr.info
>th{background-color:#d9edf7}.table-hover
>tbody
>tr
>td.info:hover,.table-hover
>tbody
>tr
>th.info:hover,.table-hover
>tbody
>tr.info:hover
>td,.table-hover
>tbody
>tr:hover
>.info,.table-hover
>tbody
>tr.info:hover
>th{background-color:#c4e3f3}.table
>thead
>tr
>td.warning,.table
>tbody
>tr
>td.warning,.table
>tfoot
>tr
>td.warning,.table
>thead
>tr
>th.warning,.table
>tbody
>tr
>th.warning,.table
>tfoot
>tr
>th.warning,.table
>thead
>tr.warning
>td,.table
>tbody
>tr.warning
>td,.table
>tfoot
>tr.warning
>td,.table
>thead
>tr.warning
>th,.table
>tbody
>tr.warning
>th,.table
>tfoot
>tr.warning
>th{background-color:#fcf8e3}.table-hover
>tbody
>tr
>td.warning:hover,.table-hover
>tbody
>tr
>th.warning:hover,.table-hover
>tbody
>tr.warning:hover
>td,.table-hover
>tbody
>tr:hover
>.warning,.table-hover
>tbody
>tr.warning:hover
>th{background-color:#faf2cc}.table
>thead
>tr
>td.danger,.table
>tbody
>tr
>td.danger,.table
>tfoot
>tr
>td.danger,.table
>thead
>tr
>th.danger,.table
>tbody
>tr
>th.danger,.table
>tfoot
>tr
>th.danger,.table
>thead
>tr.danger
>td,.table
>tbody
>tr.danger
>td,.table
>tfoot
>tr.danger
>td,.table
>thead
>tr.danger
>th,.table
>tbody
>tr.danger
>th,.table
>tfoot
>tr.danger
>th{background-color:#f2dede}.table-hover
>tbody
>tr
>td.danger:hover,.table-hover
>tbody
>tr
>th.danger:hover,.table-hover
>tbody
>tr.danger:hover
>td,.table-hover
>tbody
>tr:hover
>.danger,.table-hover
>tbody
>tr.danger:hover
>th{background-color:#ebcccc}@media screen and (max-width:
767px){.table-responsive{width:
100%;margin-bottom:
15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:
1px solid #ddd}.table-responsive
>.table{margin-bottom:
0}.table-responsive
>.table
>thead
>tr
>th,.table-responsive
>.table
>tbody
>tr
>th,.table-responsive
>.table
>tfoot
>tr
>th,.table-responsive
>.table
>thead
>tr
>td,.table-responsive
>.table
>tbody
>tr
>td,.table-responsive
>.table
>tfoot
>tr
>td{white-space:nowrap}.table-responsive
>.table-bordered{border:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th,.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td{border-bottom:
0}}fieldset{min-width:
0;padding:
0;margin:
0;border:
0}legend{display:block;width:
100%;padding:
0;margin-bottom:
20px;font-size:
21px;line-height:inherit;color:#
333;border:
0;border-bottom:
1px solid #e5e5e5}label{display:inline-block;max-width:
100%;margin-bottom:
5px;font-weight:
700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:
4px
0 0;margin-top:
1px \
9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:
100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}output{display:block;padding-top:
7px;font-size:
14px;line-height:
1.42857143;color:#
555}.form-control{display:block;width:
100%;height:
34px;padding:
6px
12px;font-size:
14px;line-height:
1.42857143;color:#
555;background-color:#fff;background-image:none;border:
1px solid #ccc;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);-webkit-transition:border-color ease-in-out
.15s,-webkit-box-shadow ease-in-out
.15s;-o-transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s;transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s}.form-control:focus{border-color:#
66afe9;outline:
0;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6)}.form-control::-moz-placeholder{color:#
777;opacity:
1}.form-control:-ms-input-placeholder{color:#
777}.form-control::-webkit-input-placeholder{color:#
777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:
1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:
34px;line-height:
1.42857143 \
0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:
30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:
46px}.form-group{margin-bottom:
15px}.radio,.checkbox{position:relative;display:block;min-height:
20px;margin-top:
10px;margin-bottom:
10px}.radio label,.checkbox label{padding-left:
20px;margin-bottom:
0;font-weight:
400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:
4px \
9;margin-left:-
20px}.radio+.radio,.checkbox+.checkbox{margin-top:-
5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:
20px;margin-bottom:
0;font-weight:
400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:
0;margin-left:
10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:
7px;padding-bottom:
7px;margin-bottom:
0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:
0;padding-left:
0}.input-sm,.form-horizontal .form-group-sm .form-control{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-sm{height:
30px;line-height:
30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-lg{height:
46px;line-height:
46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:
42.5px}.form-control-feedback{position:absolute;top:
25px;right:
0;z-index:
2;display:block;width:
34px;height:
34px;line-height:
34px;text-align:center}.input-lg+.form-control-feedback{width:
46px;height:
46px;line-height:
46px}.input-sm+.form-control-feedback{width:
30px;height:
30px;line-height:
30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#
3c763d}.has-success .form-control{border-color:#
3c763d;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-success .form-control:focus{border-color:#
2b542c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168}.has-success .input-group-addon{color:#
3c763d;background-color:#dff0d8;border-color:#
3c763d}.has-success .form-control-feedback{color:#
3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#
8a6d3b}.has-warning .form-control{border-color:#
8a6d3b;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-warning .form-control:focus{border-color:#
66512c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b}.has-warning .input-group-addon{color:#
8a6d3b;background-color:#fcf8e3;border-color:#
8a6d3b}.has-warning .form-control-feedback{color:#
8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-error .form-control:focus{border-color:#
843534;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:
0}.help-block{display:block;margin-top:
5px;margin-bottom:
10px;color:#
737373}@media (min-width:
768px){.form-inline .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group
>.form-control{width:
100%}.form-inline .control-label{margin-bottom:
0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:
0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:
0}.form-inline .has-feedback .form-control-feedback{top:
0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:
7px;margin-top:
0;margin-bottom:
0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:
27px}.form-horizontal .form-group{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.form-horizontal .control-label{padding-top:
7px;margin-bottom:
0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:
0;right:
15px}@media (min-width:
768px){.form-horizontal .form-group-lg .control-label{padding-top:
14.3px}}@media (min-width:
768px){.form-horizontal .form-group-sm .control-label{padding-top:
6px}}.btn{display:inline-block;padding:
6px
12px;margin-bottom:
0;font-size:
14px;font-weight:
400;line-height:
1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:
1px solid transparent;border-radius:
4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}.btn:hover,.btn:focus{color:#
333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:
0;-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=
65);-webkit-box-shadow:none;box-shadow:none;opacity:
.65}.btn-default{color:#
333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{color:#
333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#
333}.btn-primary{color:#fff;background-color:#
428bca;border-color:#
357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{color:#fff;background-color:#
3071a9;border-color:#
285e8e}.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#
428bca;border-color:#
357ebd}.btn-primary .badge{color:#
428bca;background-color:#fff}.btn-success{color:#fff;background-color:#
5cb85c;border-color:#
4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{color:#fff;background-color:#
449d44;border-color:#
398439}.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#
5cb85c;border-color:#
4cae4c}.btn-success .badge{color:#
5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#
5bc0de;border-color:#
46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{color:#fff;background-color:#
31b0d5;border-color:#
269abc}.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#
5bc0de;border-color:#
46b8da}.btn-info .badge{color:#
5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:
400;color:#
428bca;cursor:pointer;border-radius:
0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#
2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#
777;text-decoration:none}.btn-lg,.btn-group-lg
>.btn{padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}.btn-sm,.btn-group-sm
>.btn{padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-xs,.btn-group-xs
>.btn{padding:
1px
5px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-block{display:block;width:
100%}.btn-block+.btn-block{margin-top:
5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:
100%}.fade{opacity:
0;-webkit-transition:opacity
.15s linear;-o-transition:opacity
.15s linear;transition:opacity
.15s linear}.fade.in{opacity:
1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:
0;overflow:hidden;-webkit-transition:height
.35s ease;-o-transition:height
.35s ease;transition:height
.35s ease}.caret{display:inline-block;width:
0;height:
0;margin-left:
2px;vertical-align:middle;border-top:
4px solid;border-right:
4px solid transparent;border-left:
4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:
0}.dropdown-menu{position:absolute;top:
100%;left:
0;z-index:
1000;display:none;float:left;min-width:
160px;padding:
5px
0;margin:
2px
0 0;font-size:
14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.15);border-radius:
4px;-webkit-box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175);box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175)}.dropdown-menu.pull-right{right:
0;left:auto}.dropdown-menu .divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu
>li
>a{display:block;padding:
3px
20px;clear:both;font-weight:
400;line-height:
1.42857143;color:#
333;white-space:nowrap}.dropdown-menu
>li
>a:hover,.dropdown-menu
>li
>a:focus{color:#
262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu
>.active
>a,.dropdown-menu
>.active
>a:hover,.dropdown-menu
>.active
>a:focus{color:#fff;text-decoration:none;background-color:#
428bca;outline:
0}.dropdown-menu
>.disabled
>a,.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{color:#
777}.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open
>.dropdown-menu{display:block}.open
>a{outline:
0}.dropdown-menu-right{right:
0;left:auto}.dropdown-menu-left{right:auto;left:
0}.dropdown-header{display:block;padding:
3px
20px;font-size:
12px;line-height:
1.42857143;color:#
777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
990}.pull-right
>.dropdown-menu{right:
0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:
0;border-bottom:
4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:
100%;margin-bottom:
1px}@media (min-width:
768px){.navbar-right .dropdown-menu{right:
0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:
0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group
>.btn,.btn-group-vertical
>.btn{position:relative;float:left}.btn-group
>.btn:hover,.btn-group-vertical
>.btn:hover,.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus,.btn-group
>.btn:active,.btn-group-vertical
>.btn:active,.btn-group
>.btn.active,.btn-group-vertical
>.btn.active{z-index:
2}.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus{outline:
0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-
1px}.btn-toolbar{margin-left:-
5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar
>.btn,.btn-toolbar
>.btn-group,.btn-toolbar
>.input-group{margin-left:
5px}.btn-group
>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:
0}.btn-group
>.btn:first-child{margin-left:
0}.btn-group
>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn:last-child:not(:first-child),.btn-group
>.dropdown-toggle:not(:first-child){border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group
>.btn-group{float:left}.btn-group
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group
>.btn-group:first-child
>.btn:last-child,.btn-group
>.btn-group:first-child
>.dropdown-toggle{border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn-group:last-child
>.btn:first-child{border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:
0}.btn-group
>.btn+.dropdown-toggle{padding-right:
8px;padding-left:
8px}.btn-group
>.btn-lg+.dropdown-toggle{padding-right:
12px;padding-left:
12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:
0}.btn-lg .caret{border-width:
5px
5px
0;border-bottom-width:
0}.dropup .btn-lg .caret{border-width:
0 5px
5px}.btn-group-vertical
>.btn,.btn-group-vertical
>.btn-group,.btn-group-vertical
>.btn-group
>.btn{display:block;float:none;width:
100%;max-width:
100%}.btn-group-vertical
>.btn-group
>.btn{float:none}.btn-group-vertical
>.btn+.btn,.btn-group-vertical
>.btn+.btn-group,.btn-group-vertical
>.btn-group+.btn,.btn-group-vertical
>.btn-group+.btn-group{margin-top:-
1px;margin-left:
0}.btn-group-vertical
>.btn:not(:first-child):not(:last-child){border-radius:
0}.btn-group-vertical
>.btn:first-child:not(:last-child){border-top-right-radius:
4px;border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn:last-child:not(:first-child){border-top-left-radius:
0;border-top-right-radius:
0;border-bottom-left-radius:
4px}.btn-group-vertical
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.btn:last-child,.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.dropdown-toggle{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn-group:last-child:not(:first-child)
>.btn:first-child{border-top-left-radius:
0;border-top-right-radius:
0}.btn-group-justified{display:table;width:
100%;table-layout:fixed;border-collapse:separate}.btn-group-justified
>.btn,.btn-group-justified
>.btn-group{display:table-cell;float:none;width:
1%}.btn-group-justified
>.btn-group .btn{width:
100%}.btn-group-justified
>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]
>.btn
>input[type=radio],[data-toggle=buttons]
>.btn
>input[type=checkbox]{position:absolute;z-index:-
1;filter:alpha(opacity=
0);opacity:
0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:
0;padding-left:
0}.input-group .form-control{position:relative;z-index:
2;float:left;width:
100%;margin-bottom:
0}.input-group-lg
>.form-control,.input-group-lg
>.input-group-addon,.input-group-lg
>.input-group-btn
>.btn{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-group-lg
>.form-control,select.input-group-lg
>.input-group-addon,select.input-group-lg
>.input-group-btn
>.btn{height:
46px;line-height:
46px}textarea.input-group-lg
>.form-control,textarea.input-group-lg
>.input-group-addon,textarea.input-group-lg
>.input-group-btn
>.btn,select[multiple].input-group-lg
>.form-control,select[multiple].input-group-lg
>.input-group-addon,select[multiple].input-group-lg
>.input-group-btn
>.btn{height:auto}.input-group-sm
>.form-control,.input-group-sm
>.input-group-addon,.input-group-sm
>.input-group-btn
>.btn{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-group-sm
>.form-control,select.input-group-sm
>.input-group-addon,select.input-group-sm
>.input-group-btn
>.btn{height:
30px;line-height:
30px}textarea.input-group-sm
>.form-control,textarea.input-group-sm
>.input-group-addon,textarea.input-group-sm
>.input-group-btn
>.btn,select[multiple].input-group-sm
>.form-control,select[multiple].input-group-sm
>.input-group-addon,select[multiple].input-group-sm
>.input-group-btn
>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:
0}.input-group-addon,.input-group-btn{width:
1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:
6px
12px;font-size:
14px;font-weight:
400;line-height:
1;color:#
555;text-align:center;background-color:#eee;border:
1px solid #ccc;border-radius:
4px}.input-group-addon.input-sm{padding:
5px
10px;font-size:
12px;border-radius:
3px}.input-group-addon.input-lg{padding:
10px
16px;font-size:
18px;border-radius:
6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:
0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group
>.btn,.input-group-btn:first-child
>.dropdown-toggle,.input-group-btn:last-child
>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child
>.btn-group:not(:last-child)
>.btn{border-top-right-radius:
0;border-bottom-right-radius:
0}.input-group-addon:first-child{border-right:
0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group
>.btn,.input-group-btn:last-child
>.dropdown-toggle,.input-group-btn:first-child
>.btn:not(:first-child),.input-group-btn:first-child
>.btn-group:not(:first-child)
>.btn{border-top-left-radius:
0;border-bottom-left-radius:
0}.input-group-addon:last-child{border-left:
0}.input-group-btn{position:relative;font-size:
0;white-space:nowrap}.input-group-btn
>.btn{position:relative}.input-group-btn
>.btn+.btn{margin-left:-
1px}.input-group-btn
>.btn:hover,.input-group-btn
>.btn:focus,.input-group-btn
>.btn:active{z-index:
2}.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group{margin-right:-
1px}.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group{margin-left:-
1px}.nav{padding-left:
0;margin-bottom:
0;list-style:none}.nav
>li{position:relative;display:block}.nav
>li
>a{position:relative;display:block;padding:
10px
15px}.nav
>li
>a:hover,.nav
>li
>a:focus{text-decoration:none;background-color:#eee}.nav
>li.disabled
>a{color:#
777}.nav
>li.disabled
>a:hover,.nav
>li.disabled
>a:focus{color:#
777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open
>a,.nav .open
>a:hover,.nav .open
>a:focus{background-color:#eee;border-color:#
428bca}.nav .nav-divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.nav
>li
>a
>img{max-width:none}.nav-tabs{border-bottom:
1px solid #ddd}.nav-tabs
>li{float:left;margin-bottom:-
1px}.nav-tabs
>li
>a{margin-right:
2px;line-height:
1.42857143;border:
1px solid transparent;border-radius:
4px
4px
0 0}.nav-tabs
>li
>a:hover{border-color:#eee #eee #ddd}.nav-tabs
>li.active
>a,.nav-tabs
>li.active
>a:hover,.nav-tabs
>li.active
>a:focus{color:#
555;cursor:default;background-color:#fff;border:
1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:
100%;border-bottom:
0}.nav-tabs.nav-justified
>li{float:none}.nav-tabs.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-tabs.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-tabs.nav-justified
>li{display:table-cell;width:
1%}.nav-tabs.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs.nav-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs.nav-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border-bottom-color:#fff}}.nav-pills
>li{float:left}.nav-pills
>li
>a{border-radius:
4px}.nav-pills
>li+li{margin-left:
2px}.nav-pills
>li.active
>a,.nav-pills
>li.active
>a:hover,.nav-pills
>li.active
>a:focus{color:#fff;background-color:#
428bca}.nav-stacked
>li{float:none}.nav-stacked
>li+li{margin-top:
2px;margin-left:
0}.nav-justified{width:
100%}.nav-justified
>li{float:none}.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-justified
>li{display:table-cell;width:
1%}.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs-justified{border-bottom:
0}.nav-tabs-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border-bottom-color:#fff}}.tab-content
>.tab-pane{display:none}.tab-content
>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-
1px;border-top-left-radius:
0;border-top-right-radius:
0}.navbar{position:relative;min-height:
50px;margin-bottom:
20px;border:
1px solid transparent}@media (min-width:
768px){.navbar{border-radius:
4px}}@media (min-width:
768px){.navbar-header{float:left}}.navbar-collapse{padding-right:
15px;padding-left:
15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:
768px){.navbar-collapse{width:auto;border-top:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:
0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:
0;padding-left:
0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
340px}@media (max-width:
480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
200px}}.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:
0;margin-left:
0}}.navbar-static-top{z-index:
1000;border-width:
0 0 1px}@media (min-width:
768px){.navbar-static-top{border-radius:
0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:
0;left:
0;z-index:
1030;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@media (min-width:
768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:
0}}.navbar-fixed-top{top:
0;border-width:
0 0 1px}.navbar-fixed-bottom{bottom:
0;margin-bottom:
0;border-width:
1px
0 0}.navbar-brand{float:left;height:
50px;padding:
15px
15px;font-size:
18px;line-height:
20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:
768px){.navbar
>.container .navbar-brand,.navbar
>.container-fluid .navbar-brand{margin-left:-
15px}}.navbar-toggle{position:relative;float:right;padding:
9px
10px;margin-top:
8px;margin-right:
15px;margin-bottom:
8px;background-color:transparent;background-image:none;border:
1px solid transparent;border-radius:
4px}.navbar-toggle:focus{outline:
0}.navbar-toggle .icon-bar{display:block;width:
22px;height:
2px;border-radius:
1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:
4px}@media (min-width:
768px){.navbar-toggle{display:none}}.navbar-nav{margin:
7.5px -
15px}.navbar-nav
>li
>a{padding-top:
10px;padding-bottom:
10px;line-height:
20px}@media (max-width:
767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:
0;background-color:transparent;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu
>li
>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:
5px
15px
5px
25px}.navbar-nav .open .dropdown-menu
>li
>a{line-height:
20px}.navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-nav .open .dropdown-menu
>li
>a:focus{background-image:none}}@media (min-width:
768px){.navbar-nav{float:left;margin:
0}.navbar-nav
>li{float:left}.navbar-nav
>li
>a{padding-top:
15px;padding-bottom:
15px}.navbar-nav.navbar-right:last-child{margin-right:-
15px}}@media (min-width:
768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:
10px
15px;margin-top:
8px;margin-right:-
15px;margin-bottom:
8px;margin-left:-
15px;border-top:
1px solid transparent;border-bottom:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1)}@media (min-width:
768px){.navbar-form .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group
>.form-control{width:
100%}.navbar-form .control-label{margin-bottom:
0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:
0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:
0}.navbar-form .has-feedback .form-control-feedback{top:
0}}@media (max-width:
767px){.navbar-form .form-group{margin-bottom:
5px}}@media (min-width:
768px){.navbar-form{width:auto;padding-top:
0;padding-bottom:
0;margin-right:
0;margin-left:
0;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-
15px}}.navbar-nav
>li
>.dropdown-menu{margin-top:
0;border-top-left-radius:
0;border-top-right-radius:
0}.navbar-fixed-bottom .navbar-nav
>li
>.dropdown-menu{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.navbar-btn{margin-top:
8px;margin-bottom:
8px}.navbar-btn.btn-sm{margin-top:
10px;margin-bottom:
10px}.navbar-btn.btn-xs{margin-top:
14px;margin-bottom:
14px}.navbar-text{margin-top:
15px;margin-bottom:
15px}@media (min-width:
768px){.navbar-text{float:left;margin-right:
15px;margin-left:
15px}.navbar-text.navbar-right:last-child{margin-right:
0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#
777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#
5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#
777}.navbar-default .navbar-nav
>li
>a{color:#
777}.navbar-default .navbar-nav
>li
>a:hover,.navbar-default .navbar-nav
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav
>.active
>a,.navbar-default .navbar-nav
>.active
>a:hover,.navbar-default .navbar-nav
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav
>.disabled
>a,.navbar-default .navbar-nav
>.disabled
>a:hover,.navbar-default .navbar-nav
>.disabled
>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#
888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav
>.open
>a,.navbar-default .navbar-nav
>.open
>a:hover,.navbar-default .navbar-nav
>.open
>a:focus{color:#
555;background-color:#e7e7e7}@media (max-width:
767px){.navbar-default .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#
777}.navbar-default .navbar-link:hover{color:#
333}.navbar-default .btn-link{color:#
777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#
333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#
222;border-color:#
080808}.navbar-inverse .navbar-brand{color:#
777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#
777}.navbar-inverse .navbar-nav
>li
>a{color:#
777}.navbar-inverse .navbar-nav
>li
>a:hover,.navbar-inverse .navbar-nav
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav
>.active
>a,.navbar-inverse .navbar-nav
>.active
>a:hover,.navbar-inverse .navbar-nav
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav
>.disabled
>a,.navbar-inverse .navbar-nav
>.disabled
>a:hover,.navbar-inverse .navbar-nav
>.disabled
>a:focus{color:#
444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#
333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#
333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#
101010}.navbar-inverse .navbar-nav
>.open
>a,.navbar-inverse .navbar-nav
>.open
>a:hover,.navbar-inverse .navbar-nav
>.open
>a:focus{color:#fff;background-color:#
080808}@media (max-width:
767px){.navbar-inverse .navbar-nav .open .dropdown-menu
>.dropdown-header{border-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#
444;background-color:transparent}}.navbar-inverse .navbar-link{color:#
777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#
777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#
444}.breadcrumb{padding:
8px
15px;margin-bottom:
20px;list-style:none;background-color:#f5f5f5;border-radius:
4px}.breadcrumb
>li{display:inline-block}.breadcrumb
>li+li:before{padding:
0 5px;color:#ccc;content:"/\
00a0"}.breadcrumb
>.active{color:#
777}.pagination{display:inline-block;padding-left:
0;margin:
20px
0;border-radius:
4px}.pagination
>li{display:inline}.pagination
>li
>a,.pagination
>li
>span{position:relative;float:left;padding:
6px
12px;margin-left:-
1px;line-height:
1.42857143;color:#
428bca;text-decoration:none;background-color:#fff;border:
1px solid #ddd}.pagination
>li:first-child
>a,.pagination
>li:first-child
>span{margin-left:
0;border-top-left-radius:
4px;border-bottom-left-radius:
4px}.pagination
>li:last-child
>a,.pagination
>li:last-child
>span{border-top-right-radius:
4px;border-bottom-right-radius:
4px}.pagination
>li
>a:hover,.pagination
>li
>span:hover,.pagination
>li
>a:focus,.pagination
>li
>span:focus{color:#
2a6496;background-color:#eee;border-color:#ddd}.pagination
>.active
>a,.pagination
>.active
>span,.pagination
>.active
>a:hover,.pagination
>.active
>span:hover,.pagination
>.active
>a:focus,.pagination
>.active
>span:focus{z-index:
2;color:#fff;cursor:default;background-color:#
428bca;border-color:#
428bca}.pagination
>.disabled
>span,.pagination
>.disabled
>span:hover,.pagination
>.disabled
>span:focus,.pagination
>.disabled
>a,.pagination
>.disabled
>a:hover,.pagination
>.disabled
>a:focus{color:#
777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg
>li
>a,.pagination-lg
>li
>span{padding:
10px
16px;font-size:
18px}.pagination-lg
>li:first-child
>a,.pagination-lg
>li:first-child
>span{border-top-left-radius:
6px;border-bottom-left-radius:
6px}.pagination-lg
>li:last-child
>a,.pagination-lg
>li:last-child
>span{border-top-right-radius:
6px;border-bottom-right-radius:
6px}.pagination-sm
>li
>a,.pagination-sm
>li
>span{padding:
5px
10px;font-size:
12px}.pagination-sm
>li:first-child
>a,.pagination-sm
>li:first-child
>span{border-top-left-radius:
3px;border-bottom-left-radius:
3px}.pagination-sm
>li:last-child
>a,.pagination-sm
>li:last-child
>span{border-top-right-radius:
3px;border-bottom-right-radius:
3px}.pager{padding-left:
0;margin:
20px
0;text-align:center;list-style:none}.pager li{display:inline}.pager li
>a,.pager li
>span{display:inline-block;padding:
5px
14px;background-color:#fff;border:
1px solid #ddd;border-radius:
15px}.pager li
>a:hover,.pager li
>a:focus{text-decoration:none;background-color:#eee}.pager .next
>a,.pager .next
>span{float:right}.pager .previous
>a,.pager .previous
>span{float:left}.pager .disabled
>a,.pager .disabled
>a:hover,.pager .disabled
>a:focus,.pager .disabled
>span{color:#
777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:
.2em
.6em
.3em;font-size:
75%;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:
.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-
1px}.label-default{background-color:#
777}.label-default[href]:hover,.label-default[href]:focus{background-color:#
5e5e5e}.label-primary{background-color:#
428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#
3071a9}.label-success{background-color:#
5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#
449d44}.label-info{background-color:#
5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#
31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:
10px;padding:
3px
7px;font-size:
12px;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#
777;border-radius:
10px}.badge:empty{display:none}.btn .badge{position:relative;top:-
1px}.btn-xs .badge{top:
0;padding:
1px
5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active
>.badge,.nav-pills
>.active
>a
>.badge{color:#
428bca;background-color:#fff}.nav-pills
>li
>a
>.badge{margin-left:
3px}.jumbotron{padding:
30px;margin-bottom:
30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:
15px;font-size:
21px;font-weight:
200}.jumbotron
>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:
6px}.jumbotron .container{max-width:
100%}@media screen and (min-width:
768px){.jumbotron{padding-top:
48px;padding-bottom:
48px}.container .jumbotron{padding-right:
60px;padding-left:
60px}.jumbotron h1,.jumbotron .h1{font-size:
63px}}.thumbnail{display:block;padding:
4px;margin-bottom:
20px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.thumbnail
>img,.thumbnail a
>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#
428bca}.thumbnail .caption{padding:
9px;color:#
333}.alert{padding:
15px;margin-bottom:
20px;border:
1px solid transparent;border-radius:
4px}.alert h4{margin-top:
0;color:inherit}.alert .alert-link{font-weight:
700}.alert
>p,.alert
>ul{margin-bottom:
0}.alert
>p+p{margin-top:
5px}.alert-dismissable,.alert-dismissible{padding-right:
35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-
2px;right:-
21px;color:inherit}.alert-success{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#
2b542c}.alert-info{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#
245269}.alert-warning{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#
66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#
843534}@-webkit-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@-o-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}.progress{height:
20px;margin-bottom:
20px;overflow:hidden;background-color:#f5f5f5;border-radius:
4px;-webkit-box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1);box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1)}.progress-bar{float:left;width:
0;height:
100%;font-size:
12px;line-height:
20px;color:#fff;text-align:center;background-color:#
428bca;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);-webkit-transition:width
.6s ease;-o-transition:width
.6s ease;transition:width
.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);-webkit-background-size:
40px
40px;background-size:
40px
40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes
2s linear infinite;-o-animation:progress-bar-stripes
2s linear infinite;animation:progress-bar-stripes
2s linear infinite}.progress-bar[
aria-valuenow="
1"],.progress-bar[
aria-valuenow="
2"]{min-width:
30px}.progress-bar[
aria-valuenow="
0"]{min-width:
30px;color:#
777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#
5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-info{background-color:#
5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.media,.media-body{overflow:hidden;zoom:
1}.media,.media .media{margin-top:
15px}.media:first-child{margin-top:
0}.media-object{display:block}.media-heading{margin:
0 0 5px}.media
>.pull-left{margin-right:
10px}.media
>.pull-right{margin-left:
10px}.media-list{padding-left:
0;list-style:none}.list-group{padding-left:
0;margin-bottom:
20px}.list-group-item{position:relative;display:block;padding:
10px
15px;margin-bottom:-
1px;background-color:#fff;border:
1px solid #ddd}.list-group-item:first-child{border-top-left-radius:
4px;border-top-right-radius:
4px}.list-group-item:last-child{margin-bottom:
0;border-bottom-right-radius:
4px;border-bottom-left-radius:
4px}.list-group-item
>.badge{float:right}.list-group-item
>.badge+.badge{margin-right:
5px}a.list-group-item{color:#
555}a.list-group-item .list-group-item-heading{color:#
333}a.list-group-item:hover,a.list-group-item:focus{color:#
555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#
777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#
777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:
2;color:#fff;background-color:#
428bca;border-color:#
428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading
>small,.list-group-item.active:hover .list-group-item-heading
>small,.list-group-item.active:focus .list-group-item-heading
>small,.list-group-item.active .list-group-item-heading
>.small,.list-group-item.active:hover .list-group-item-heading
>.small,.list-group-item.active:focus .list-group-item-heading
>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#
3c763d;background-color:#dff0d8}a.list-group-item-success{color:#
3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#
3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#
3c763d;border-color:#
3c763d}.list-group-item-info{color:#
31708f;background-color:#d9edf7}a.list-group-item-info{color:#
31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#
31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#
31708f;border-color:#
31708f}.list-group-item-warning{color:#
8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#
8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#
8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#
8a6d3b;border-color:#
8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:
0;margin-bottom:
5px}.list-group-item-text{margin-bottom:
0;line-height:
1.3}.panel{margin-bottom:
20px;background-color:#fff;border:
1px solid transparent;border-radius:
4px;-webkit-box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05)}.panel-body{padding:
15px}.panel-heading{padding:
10px
15px;border-bottom:
1px solid transparent;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel-heading
>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:
0;margin-bottom:
0;font-size:
16px;color:inherit}.panel-title
>a{color:inherit}.panel-footer{padding:
10px
15px;background-color:#f5f5f5;border-top:
1px solid #ddd;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.list-group{margin-bottom:
0}.panel
>.list-group .list-group-item{border-width:
1px
0;border-radius:
0}.panel
>.list-group:first-child .list-group-item:first-child{border-top:
0;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.list-group:last-child .list-group-item:last-child{border-bottom:
0;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:
0}.list-group+.panel-footer{border-top-width:
0}.panel
>.table,.panel
>.table-responsive
>.table,.panel
>.panel-collapse
>.table{margin-bottom:
0}.panel
>.table:first-child,.panel
>.table-responsive:first-child
>.table:first-child{border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child{border-top-left-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child{border-top-right-radius:
3px}.panel
>.table:last-child,.panel
>.table-responsive:last-child
>.table:last-child{border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child{border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child{border-bottom-right-radius:
3px}.panel
>.panel-body+.table,.panel
>.panel-body+.table-responsive{border-top:
1px solid #ddd}.panel
>.table
>tbody:first-child
>tr:first-child th,.panel
>.table
>tbody:first-child
>tr:first-child td{border-top:
0}.panel
>.table-bordered,.panel
>.table-responsive
>.table-bordered{border:
0}.panel
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-bordered
>tfoot
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.panel
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-bordered
>tfoot
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.panel
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-bordered
>tbody
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>th{border-bottom:
0}.panel
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-bordered
>tfoot
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th{border-bottom:
0}.panel
>.table-responsive{margin-bottom:
0;border:
0}.panel-group{margin-bottom:
20px}.panel-group .panel{margin-bottom:
0;border-radius:
4px}.panel-group .panel+.panel{margin-top:
5px}.panel-group .panel-heading{border-bottom:
0}.panel-group .panel-heading+.panel-collapse
>.panel-body{border-top:
1px solid #ddd}.panel-group .panel-footer{border-top:
0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:
1px solid #ddd}.panel-default{border-color:#ddd}.panel-default
>.panel-heading{color:#
333;background-color:#f5f5f5;border-color:#ddd}.panel-default
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ddd}.panel-default
>.panel-heading .badge{color:#f5f5f5;background-color:#
333}.panel-default
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#
428bca}.panel-primary
>.panel-heading{color:#fff;background-color:#
428bca;border-color:#
428bca}.panel-primary
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#
428bca}.panel-primary
>.panel-heading .badge{color:#
428bca;background-color:#fff}.panel-primary
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#
428bca}.panel-success{border-color:#d6e9c6}.panel-success
>.panel-heading{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#d6e9c6}.panel-success
>.panel-heading .badge{color:#dff0d8;background-color:#
3c763d}.panel-success
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info
>.panel-heading{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#bce8f1}.panel-info
>.panel-heading .badge{color:#d9edf7;background-color:#
31708f}.panel-info
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning
>.panel-heading{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#faebcc}.panel-warning
>.panel-heading .badge{color:#fcf8e3;background-color:#
8a6d3b}.panel-warning
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger
>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ebccd1}.panel-danger
>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:
0;padding:
0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:
0;bottom:
0;left:
0;width:
100%;height:
100%;border:
0}.embed-responsive.embed-responsive-
16by9{padding-bottom:
56.25%}.embed-responsive.embed-responsive-
4by3{padding-bottom:
75%}.well{min-height:
20px;padding:
19px;margin-bottom:
20px;background-color:#f5f5f5;border:
1px solid #e3e3e3;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05)}.well blockquote{border-color:#ddd;border-color:rgba(
0,
0,
0,
.15)}.well-lg{padding:
24px;border-radius:
6px}.well-sm{padding:
9px;border-radius:
3px}.close{float:right;font-size:
21px;font-weight:
700;line-height:
1;color:#
000;text-shadow:
0 1px
0 #fff;filter:alpha(opacity=
20);opacity:
.2}.close:hover,.close:focus{color:#
000;text-decoration:none;cursor:pointer;filter:alpha(opacity=
50);opacity:
.5}button.close{-webkit-appearance:none;padding:
0;cursor:pointer;background:
0 0;border:
0}.modal-open{overflow:hidden}.modal{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:
0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform
.3s ease-out;-o-transition:-o-transform
.3s ease-out;transition:transform
.3s ease-out;-webkit-transform:translate3d(
0,-
25%,
0);-o-transform:translate3d(
0,-
25%,
0);transform:translate3d(
0,-
25%,
0)}.modal.in .modal-dialog{-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:
10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #
999;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;outline:
0;-webkit-box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5);box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5)}.modal-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1040;background-color:#
000}.modal-backdrop.fade{filter:alpha(opacity=
0);opacity:
0}.modal-backdrop.in{filter:alpha(opacity=
50);opacity:
.5}.modal-header{min-height:
16.43px;padding:
15px;border-bottom:
1px solid #e5e5e5}.modal-header .close{margin-top:-
2px}.modal-title{margin:
0;line-height:
1.42857143}.modal-body{position:relative;padding:
15px}.modal-footer{padding:
15px;text-align:right;border-top:
1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:
0;margin-left:
5px}.modal-footer .btn-group .btn+.btn{margin-left:-
1px}.modal-footer .btn-block+.btn-block{margin-left:
0}.modal-scrollbar-measure{position:absolute;top:-
9999px;width:
50px;height:
50px;overflow:scroll}@media (min-width:
768px){.modal-dialog{width:
600px;margin:
30px auto}.modal-content{-webkit-box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5);box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5)}.modal-sm{width:
300px}}@media (min-width:
992px){.modal-lg{width:
900px}}.tooltip{position:absolute;z-index:
1070;display:block;font-size:
12px;line-height:
1.4;visibility:visible;filter:alpha(opacity=
0);opacity:
0}.tooltip.in{filter:alpha(opacity=
90);opacity:
.9}.tooltip.top{padding:
5px
0;margin-top:-
3px}.tooltip.right{padding:
0 5px;margin-left:
3px}.tooltip.bottom{padding:
5px
0;margin-top:
3px}.tooltip.left{padding:
0 5px;margin-left:-
3px}.tooltip-inner{max-width:
200px;padding:
3px
8px;color:#fff;text-align:center;text-decoration:none;background-color:#
000;border-radius:
4px}.tooltip-arrow{position:absolute;width:
0;height:
0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:
0;left:
50%;margin-left:-
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-left .tooltip-arrow{bottom:
0;left:
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-right .tooltip-arrow{right:
5px;bottom:
0;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.right .tooltip-arrow{top:
50%;left:
0;margin-top:-
5px;border-width:
5px
5px
5px
0;border-right-color:#
000}.tooltip.left .tooltip-arrow{top:
50%;right:
0;margin-top:-
5px;border-width:
5px
0 5px
5px;border-left-color:#
000}.tooltip.bottom .tooltip-arrow{top:
0;left:
50%;margin-left:-
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-left .tooltip-arrow{top:
0;left:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-right .tooltip-arrow{top:
0;right:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.popover{position:absolute;top:
0;left:
0;z-index:
1060;display:none;max-width:
276px;padding:
1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;-webkit-box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2);box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2)}.popover.top{margin-top:-
10px}.popover.right{margin-left:
10px}.popover.bottom{margin-top:
10px}.popover.left{margin-left:-
10px}.popover-title{padding:
8px
14px;margin:
0;font-size:
14px;font-weight:
400;line-height:
18px;background-color:#f7f7f7;border-bottom:
1px solid #ebebeb;border-radius:
5px
5px
0 0}.popover-content{padding:
9px
14px}.popover
>.arrow,.popover
>.arrow:after{position:absolute;display:block;width:
0;height:
0;border-color:transparent;border-style:solid}.popover
>.arrow{border-width:
11px}.popover
>.arrow:after{content:"";border-width:
10px}.popover.top
>.arrow{bottom:-
11px;left:
50%;margin-left:-
11px;border-top-color:#
999;border-top-color:rgba(
0,
0,
0,
.25);border-bottom-width:
0}.popover.top
>.arrow:after{bottom:
1px;margin-left:-
10px;content:" ";border-top-color:#fff;border-bottom-width:
0}.popover.right
>.arrow{top:
50%;left:-
11px;margin-top:-
11px;border-right-color:#
999;border-right-color:rgba(
0,
0,
0,
.25);border-left-width:
0}.popover.right
>.arrow:after{bottom:-
10px;left:
1px;content:" ";border-right-color:#fff;border-left-width:
0}.popover.bottom
>.arrow{top:-
11px;left:
50%;margin-left:-
11px;border-top-width:
0;border-bottom-color:#
999;border-bottom-color:rgba(
0,
0,
0,
.25)}.popover.bottom
>.arrow:after{top:
1px;margin-left:-
10px;content:" ";border-top-width:
0;border-bottom-color:#fff}.popover.left
>.arrow{top:
50%;right:-
11px;margin-top:-
11px;border-right-width:
0;border-left-color:#
999;border-left-color:rgba(
0,
0,
0,
.25)}.popover.left
>.arrow:after{right:
1px;bottom:-
10px;content:" ";border-right-width:
0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:
100%;overflow:hidden}.carousel-inner
>.item{position:relative;display:none;-webkit-transition:
.6s ease-in-out left;-o-transition:
.6s ease-in-out left;transition:
.6s ease-in-out left}.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{line-height:
1}.carousel-inner
>.active,.carousel-inner
>.next,.carousel-inner
>.prev{display:block}.carousel-inner
>.active{left:
0}.carousel-inner
>.next,.carousel-inner
>.prev{position:absolute;top:
0;width:
100%}.carousel-inner
>.next{left:
100%}.carousel-inner
>.prev{left:-
100%}.carousel-inner
>.next.left,.carousel-inner
>.prev.right{left:
0}.carousel-inner
>.active.left{left:-
100%}.carousel-inner
>.active.right{left:
100%}.carousel-control{position:absolute;top:
0;bottom:
0;left:
0;width:
15%;font-size:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6);filter:alpha(opacity=
50);opacity:
.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.5)),to(rgba(
0,
0,
0,
.0001)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
80000000', endColorstr='#
00000000', GradientType=
1);background-repeat:repeat-x}.carousel-control.right{right:
0;left:auto;background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.0001)),to(rgba(
0,
0,
0,
.5)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
00000000', endColorstr='#
80000000', GradientType=
1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=
90);outline:
0;opacity:
.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:
50%;z-index:
5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:
50%;margin-left:-
10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:
50%;margin-right:-
10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:
20px;height:
20px;margin-top:-
10px;font-family:serif}.carousel-control .icon-prev:before{content:'\
2039'}.carousel-control .icon-next:before{content:'\
203a'}.carousel-indicators{position:absolute;bottom:
10px;left:
50%;z-index:
15;width:
60%;padding-left:
0;margin-left:-
30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:
10px;height:
10px;margin:
1px;text-indent:-
999px;cursor:pointer;background-color:#
000 \
9;background-color:rgba(
0,
0,
0,
0);border:
1px solid #fff;border-radius:
10px}.carousel-indicators .active{width:
12px;height:
12px;margin:
0;background-color:#fff}.carousel-caption{position:absolute;right:
15%;bottom:
20px;left:
15%;z-index:
10;padding-top:
20px;padding-bottom:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:
768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:
30px;height:
30px;margin-top:-
15px;font-size:
30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-
15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-
15px}.carousel-caption{right:
20%;left:
20%;padding-bottom:
30px}.carousel-indicators{bottom:
20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical
>.btn-group:before,.btn-group-vertical
>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical
>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:
0/
0 a;color:transparent;text-shadow:none;background-color:transparent;border:
0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:
767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:
767px){.visible-xs-block{display:block!important}}@media (max-width:
767px){.visible-xs-inline{display:inline!important}}@media (max-width:
767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-block{display:block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline{display:inline!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-block{display:block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline{display:inline!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:
1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:
1200px){.visible-lg-block{display:block!important}}@media (min-width:
1200px){.visible-lg-inline{display:inline!important}}@media (min-width:
1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:
767px){.hidden-xs{display:none!important}}@media (min-width:
768px) and (max-width:
991px){.hidden-sm{display:none!important}}@media (min-width:
992px) and (max-width:
1199px){.hidden-md{display:none!important}}@media (min-width:
1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
</style>
11 <style>/* keyboard - jQuery UI Widget */
20 -ms-touch-action: manipulation;
21 touch-action: manipulation;
23 .ui-keyboard-has-focus {
36 -moz-user-focus: ignore;
38 .ui-keyboard-button span {
42 display: inline-block;
44 .ui-keyboard-button-endrow {
50 /* see http://nicolasgallagher.com/another-css-image-replacement-technique/ */
51 .ui-keyboard-space span, .ui-keyboard-empty span {
56 .ui-keyboard-preview-wrapper {
61 /* width is calculated in IE, since
99% =
99% full browser width =( */
62 .ui-keyboard-preview {
75 .ui-keyboard-input-current {
76 -moz-box-shadow:
0 0 5px #
4d90fe;
77 -webkit-box-shadow:
0 0 5px #
4d90fe;
78 box-shadow:
0 0 5px #
4d90fe;
80 .ui-keyboard-placeholder {
83 /* disabled or readonly inputs, or use
84 input[disabled='disabled'] { color: #f00; } */
85 .ui-keyboard-nokeyboard {
90 display: inline-block;
96 .ui-keyboard-NBSP span, .ui-keyboard-ZWSP span, .ui-keyboard-ZWNJ span,
97 .ui-keyboard-ZWJ span, .ui-keyboard-LRM span, .ui-keyboard-RLM span {
103 /* combo key styling - toggles diacritics on/off */
104 .ui-keyboard-button.ui-keyboard-combo.ui-state-default {
105 border-color: #ffaf0f;
108 /* (in)valid inputs */
109 button.ui-keyboard-accept.ui-keyboard-valid-input {
114 button.ui-keyboard-accept.ui-keyboard-valid-input:not([disabled]):hover {
117 button.ui-keyboard-accept.ui-keyboard-invalid-input {
122 filter: alpha(opacity=
50);
124 button.ui-keyboard-accept.ui-keyboard-invalid-input:not([disabled]):hover {
128 /*** Caret extension definition ***/
129 /* margin-top =
> is added to the caret height (top & bottom) */
136 /*** jQuery Mobile definitions ***/
137 /* jQuery Mobile styles - need wider buttons because of font size and
138 text-overflow:ellipsis */
139 div.ui-body.ui-keyboard button.ui-keyboard-button.ui-btn {
141 border-color: transparent;
143 .ui-body .ui-keyboard-button {
146 display: inline-block;
148 .ui-body .ui-keyboard-widekey {
151 .ui-body .ui-keyboard-space {
154 .ui-body .ui-keyboard-space span {
155 visibility: hidden; /* hides the ellipsis */
157 .ui-body .ui-keyboard-keyset {
160 .ui-body input.ui-input-text, .ui-body textarea.ui-input-text {
164 /* over-ride padding set by mobile ui theme - needed because the mobile script
165 wraps button text with several more spans */
166 .ui-body .ui-btn-inner {
173 font-size:
13px; /* mobile default size is
13px */
176 /* override Bootstrap excessive button padding */
177 button.ui-keyboard-button.btn {
181 /* enable/disable icons */
182 button.ui-keyboard-toggle span {
185 display: inline-block;
186 background-repeat: no-repeat;
187 background-position: center center;
188 background-size: contain;
190 /* unlocked icon (keyboard enabled) */
191 button.ui-keyboard-toggle span {
192 /* light theme unlocked icon - fill: #
111 */
193 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==);
195 .ui-keyboard-dark-theme button.ui-keyboard-toggle span {
196 /* dark theme unlocked icon - fill: #eee */
197 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTguNyw0LjRINy41SDUuMHYtMS45YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41djEuOWgxLjIgdi0xLjljMC0wLjcsMC42LTEuMiwxLjItMS4yczEuMiwwLjYsMS4yLDEuMnYxLjljLTAuNywwLTEuMiwwLjYtMS4yLDEuMlY4LjggYzAsMC43LDAuNiwxLjIsMS4yLDEuMmg1LjBDOS40LDEwLDEwLDkuNCwxMCw4LjhWNS42QzEwLDUuMCw5LjQsNC40LDguOCw0LjR6IE02LjYsNy40djEuMCBjMCwwLjItMC4xLDAuMy0wLjMsMC4zUzYuMCw4LjYsNi4wLDguNFY3LjRjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zLDAuMy0wLjYsMC42LTAuNiBTNi45LDYuNiw2LjksNi45QzYuOSw3LjEsNi44LDcuMyw2LjYsNy40eiIvPjwvc3ZnPg==);
200 /* locked icon (keyboard disabled) */
201 button.ui-keyboard-toggle.ui-keyboard-disabled span {
202 /* light theme locked icon - fill: #
111 */
203 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iIzExMSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=);
205 .ui-keyboard-dark-theme button.ui-keyboard-toggle.ui-keyboard-disabled span {
206 /* dark theme locked icon - fill: #eee */
207 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgZmlsbD0iI2VlZSI+PHBhdGggZD0iTTcuNCA0LjRWMi41YzAtMS40LTEuMS0yLjUtMi41LTIuNWMtMS40IDAtMi41IDEuMS0yLjUgMi41djEuOSBjLTAuNyAwLTEuMiAwLjUtMS4yIDEuMnYzLjFDMS4zIDkuNCAxLjggMTAgMi41IDEwaDQuOWMwLjcgMCAxLjItMC42IDEuMi0xLjJWNS42IEM4LjcgNC45IDguMSA0LjQgNy40IDQuNHogTTUuMyA3LjR2MS4wYzAgMC4yLTAuMSAwLjMtMC4zIDAuM2MtMC4yIDAtMC4zLTAuMS0wLjMtMC4zVjcuNCBjLTAuMi0wLjEtMC4zLTAuMy0wLjMtMC41YzAtMC4zIDAuMy0wLjYgMC42LTAuNmMwLjMgMCAwLjYgMC4zIDAuNiAwLjYgQzUuNiA3LjEgNS41IDcuMyA1LjMgNy40eiBNNi4yIDQuNEgzLjdWMi41YzAtMC43IDAuNS0xLjIgMS4yLTEuMmMwLjcgMCAxLjIgMC42IDEuMiAxLjIgVjQuNHoiLz48L3N2Zz4=);
210 .ui-keyboard.ui-keyboard-disabled button:not(.ui-keyboard-toggle),
211 .ui-keyboard.ui-keyboard-disabled input {
215 /*** Alt-Keys Popup extension ***/
216 /* clickable overlay on top of keyboard to hide the popup */
217 .ui-keyboard-overlay {
223 background: rgba(
0,
0,
0,
0.5);
225 /* the actual popup styling, class names from the css.container option are also
228 display: inline-block;
229 /* default buttons are
2em wide +
.1em margin on either side (set in
230 .ui-keyboard-button definition); so use multiples of
2.2em for a max-width
231 if you don't want any extra white space on the sides, e.g.
232 5 buttons *
2.2em =
11em,
233 6 buttons *
2.2em =
13.2em, etc
235 max-width:
22em; /*
10 buttons */
238 /*** Extender keyboard extension ***/
239 div.ui-keyboard-extender {
242 button.ui-keyboard-extender span {
245 display: inline-block;
247 background-repeat: no-repeat;
248 background-position: center center;
249 background-size: contain;
250 /* light theme extender icon - fill: #
111 */
251 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6IzExMSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzExMSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+);
253 .ui-keyboard-dark-theme button.ui-keyboard-extender span {
254 /* dark theme extender icon - fill: #eee */
255 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImZpbGw6I2VlZSI+PGc+PHBhdGggc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2VlZSIgZD0iTSAwLjUsNC41IDE1LjUsNC41IDE1LjUsMTUuNSAwLjUsMTUuNSBaIj48L3BhdGg+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iMiIgeT0iNiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjYiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSI4IiB5PSI2Ij48L3JlY3Q+PHBhdGggZD0ibSAxMSw2IDMsMCAwLDUgLTIsMCAwLC0zIC0xLDAgeiI+PC9wYXRoPjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjEyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjIiIHg9IjUiIHk9IjEyIj48L3JlY3Q+PHJlY3Qgd2lkdGg9IjIiIGhlaWdodD0iMiIgeD0iOSIgeT0iOSI+PC9yZWN0PjxyZWN0IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHg9IjYiIHk9IjkiPjwvcmVjdD48cmVjdCB3aWR0aD0iMiIgaGVpZ2h0PSIyIiB4PSIyIiB5PSIxMiI+PC9yZWN0PjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHg9IjIiIHk9IjkiPjwvcmVjdD48L2c+PC9zdmc+);
258 /* Media Queries (optimized for jQuery UI themes;
259 may be slightly off in jQuery Mobile themes) */
260 /*
240 x
320 (small phone) */
261 @media all and (max-width:
319px) {
265 .ui-keyboard .ui-keyboard-input {
268 /* I don't own an iPhone so I have no idea how small this really is... is it
269 even clickable with your finger? */
274 .ui-body .ui-keyboard-button {
278 .ui-body .ui-keyboard-widekey {
281 .ui-body .ui-keyboard-space {
284 .ui-body .ui-btn-inner {
290 /*
320 x
480 (iPhone) */
291 @media all and (min-width:
320px) and (max-width:
479px) {
295 .ui-keyboard .ui-keyboard-input {
298 /* I don't own an iPhone so I have no idea how small this really is... is it
299 even clickable with your finger? */
304 .ui-body .ui-keyboard-button {
308 .ui-body .ui-keyboard-widekey {
311 .ui-body .ui-keyboard-space {
314 .ui-body .ui-btn-inner {
320 /*
480 x
640 (small tablet) */
321 @media all and (min-width:
480px) and (max-width:
767px) {
325 .ui-keyboard .ui-keyboard-input {
332 .ui-body .ui-keyboard-button {
335 .ui-body .ui-btn-inner {
341 <style>.ui-keyboard-has-focus {
342 background: #eeeeee
50% bottom repeat-x;
345 border-color: #cccccc;
348 <meta content=
"Mnemonic code for generating deterministic keys" name=
"description"/>
349 <meta content=
"width=device-width, initial-scale=1.0" name=
"viewport" />
350 <meta content=
"bitcoin mnemonic converter" name=
"description" />
351 <meta content=
"Ian Coleman" name=
"author" />
352 <link type=
"image/x-icon" rel=
"icon" href=
"data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
356 padding-bottom:
32px;
358 .form-control[readonly] {
361 .feedback-container {
371 background-color: orange;
375 border:
2px solid #
555;
377 border-bottom-left-radius:
20px
20px;
378 border-bottom-right-radius:
20px
20px;
382 box-shadow: inset
0 1px
1px rgba(
0,
0,
0,
.0);
383 -webkit-box-shadow: inset
0 1px
1px rgba(
0,
0,
0,
.0);
386 word-break: keep-all;
388 .generate-container .strength {
389 /* override mobile width from bootstrap */
390 width: auto!important;
391 display: inline-block;
396 .languages a:nth-of-type(
1) {
401 font-family: monospace;
403 .entropy-container .filtered,
404 .entropy-container .binary {
405 word-wrap: break-word;
407 .entropy-container li {
431 background-color: #FFF;
432 border:
1px solid #CCC;
444 border-bottom:
1px dashed #
000;
445 text-decoration: none;
450 <div class=
"container">
452 <h1 class=
"text-center">Mnemonic Code Converter
</h1>
455 <div class=
"col-md-12">
457 <form class=
"form-horizontal" role=
"form">
458 <div class=
"form-group">
459 <div class=
"col-sm-2"></div>
460 <div class=
"col-sm-10">
461 <p data-translate
>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).
</p>
462 <p data-translate-html
>
463 For more info see the
464 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target=
"_blank">BIP39 spec
</a>.
468 <div class=
"form-group generate-container">
469 <label class=
"col-sm-2 control-label"></label>
470 <div class=
"col-sm-10">
471 <div class=
"form-inline">
472 <div class=
"input-group-inline">
473 <span data-translate
>Generate a random mnemonic, or enter your own below
</span>:
474 <button class=
"btn generate">Generate
</button>
475 <select id=
"strength" class=
"strength form-control">
476 <option value=
"3">3</option>
477 <option value=
"6">6</option>
478 <option value=
"9">9</option>
479 <option value=
"12">12</option>
480 <option value=
"15" selected
>15</option>
481 <option value=
"18">18</option>
482 <option value=
"21">21</option>
483 <option value=
"24">24</option>
485 <span data-translate
>words
</span>
490 <div class=
"entropy-container hidden">
491 <div class=
"form-group text-danger">
492 <label class=
"col-sm-2 control-label" data-translate
>Warning
</label>
493 <div class=
"col-sm-10 form-control-static">
494 <span data-translate
>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.
</span>
495 <a href=
"#entropy-notes" data-translate
>Read more
</a>
498 <div class=
"form-group">
499 <label for=
"entropy" class=
"col-sm-2 control-label" data-translate
>Entropy
</label>
500 <div class=
"col-sm-7">
501 <textarea id=
"entropy" rows=
"2" class=
"entropy form-control virtual-keyboard" placeholder=
"Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder
></textarea>
503 <label class=
"col-sm-3 control-label" data-translate
>Strength
</label>
504 <div class=
"strength col-sm-3 form-control-static"></div>
505 <label class=
"col-sm-3 control-label" data-translate
>Event Count
</label>
506 <div class=
"event-count col-sm-3 form-control-static"></div>
509 <label class=
"col-sm-3 control-label" data-translate
>Entropy Type
</label>
510 <div class=
"type col-sm-3 form-control-static"></div>
511 <label class=
"col-sm-3 control-label" data-translate
>Bits Per Event
</label>
512 <div class=
"bits-per-event col-sm-3 form-control-static"></div>
515 <label class=
"col-sm-3 control-label" data-translate
>Word Count
</label>
516 <div class=
"word-count col-sm-3 form-control-static"></div>
517 <label class=
"col-sm-3 control-label" data-translate
><span class=
"more-info" data-translate-title
title=
"Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits
</span></label>
518 <div class=
"bits col-sm-3 form-control-static"></div>
520 <label class=
"col-sm-3 control-label" data-translate
>Filtered Entropy
</label>
521 <div class=
"filtered col-sm-9 form-control-static"></div>
522 <label class=
"col-sm-3 control-label" data-translate
>Raw Binary
</label>
523 <div class=
"binary col-sm-9 form-control-static"></div>
524 <label class=
"col-sm-3 control-label" data-translate
>Mnemonic Length
</label>
525 <div class=
"col-sm-9">
526 <select class=
"mnemonic-length form-control">
527 <option value=
"raw" selected data-translate
>Use Raw Entropy (
3 words per
32 bits)
</option>
528 <option value=
"12">12 <span data-translate
>Words
</span></option>
529 <option value=
"15">15 <span data-translate
>Words
</option>
530 <option value=
"18">18 <span data-translate
>Words
</span></option>
531 <option value=
"21">21 <span data-translate
>Words
</span></option>
532 <option value=
"24">24 <span data-translate
>Words
</span></option>
536 <div class=
"col-sm-3">
537 <p data-translate
>Valid entropy values include:
</p>
539 <li><strong data-translate
>Binary
</strong> [
0-
1]
<br>101010011</li>
540 <li><strong data-translate
>Base
6</strong> [
0-
5]
<br>123434014</li>
541 <li><strong data-translate
>Dice
</strong> [
1-
6]
<br>62535634</li>
542 <li><strong data-translate
>Base
10</strong> [
0-
9]
<br>90834528</li>
543 <li><strong data-translate
>Hex
</strong> [
0-
9A-F]
<br>4187a8bfd9
</li>
544 <li><strong data-translate
>Card
</strong> [A2-
9TJQK][CDHS]
<br>ahqs9dtc
</li>
549 <div class=
"form-group">
550 <div class=
"col-sm-2"></div>
551 <div class=
"col-sm-10 checkbox">
553 <input type=
"checkbox" class=
"use-entropy">
554 <span data-translate
>Supply my own source of entropy
</span>
558 <div class=
"form-group">
559 <label class=
"col-sm-2 control-label" data-translate
>Mnemonic Language
</label>
560 <div class=
"col-sm-10 languages">
561 <div class=
"form-control no-border">
562 <a href=
"#english">English
</a>
563 <a href=
"#japanese" title=
"Japanese">日本語
</a>
564 <a href=
"#spanish" title=
"Spanish">Español
</a>
565 <a href=
"#chinese_simplified" title=
"Chinese (Simplified)">中文(简体)
</a>
566 <a href=
"#chinese_traditional" title=
"Chinese (Traditional)">中文(繁體)
</a>
567 <a href=
"#french" title=
"French">Français
</a>
568 <a href=
"#italian" title=
"Italian">Italiano
</a>
572 <div class=
"form-group">
573 <label for=
"phrase" class=
"col-sm-2 control-label" data-translate
>BIP39 Mnemonic
</label>
574 <div class=
"col-sm-10">
575 <textarea id=
"phrase" class=
"phrase form-control" data-show-qr
></textarea>
578 <div class=
"form-group">
579 <label for=
"passphrase" class=
"col-sm-2 control-label" data-translate
>BIP39 Passphrase (optional)
</label>
580 <div class=
"col-sm-10">
581 <textarea id=
"passphrase" class=
"passphrase form-control"></textarea>
584 <div class=
"form-group">
585 <label for=
"seed" class=
"col-sm-2 control-label" data-translate
>BIP39 Seed
</label>
586 <div class=
"col-sm-10">
587 <textarea id=
"seed" class=
"seed form-control" readonly=
"readonly" data-show-qr
></textarea>
590 <div class=
"form-group">
591 <label for=
"network-phrase" class=
"col-sm-2 control-label" data-translate
>Coin
</label>
592 <div class=
"col-sm-10">
593 <select id=
"network-phrase" class=
"network form-control">
594 <!-- populated by javascript -->
598 <div class=
"form-group">
599 <label for=
"root-key" class=
"col-sm-2 control-label" data-translate
>BIP32 Root Key
</label>
600 <div class=
"col-sm-10">
601 <textarea id=
"root-key" class=
"root-key form-control" data-show-qr
></textarea>
611 <div class=
"col-md-12">
612 <h2>Derivation Path
</h2>
613 <ul class=
"derivation-type nav nav-tabs" role=
"tablist">
614 <li id=
"bip44-tab" class=
"active">
615 <a href=
"#bip44" role=
"tab" data-toggle=
"tab">BIP44
</a>
618 <a href=
"#bip32" role=
"tab" data-toggle=
"tab">BIP32
</a>
621 <div class=
"derivation-type tab-content">
622 <div id=
"bip44" class=
"tab-pane active">
623 <form class=
"form-horizontal" role=
"form">
625 <div class=
"col-sm-2"></div>
626 <div class=
"col-sm-10">
627 <p data-translate-html
>
628 For more info see the
629 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">BIP44 spec
</a>.
632 <div class=
"form-group">
633 <label for=
"purpose" class=
"col-sm-2 control-label">
634 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target=
"_blank" data-translate
>Purpose
</a>
636 <div class=
"col-sm-10">
637 <input id=
"purpose" type=
"text" class=
"purpose form-control" value=
"44">
640 <div class=
"form-group">
641 <label for=
"coin" class=
"col-sm-2 control-label">
642 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target=
"_blank" data-translate
>Coin
</a>
644 <div class=
"col-sm-10">
645 <input id=
"coin" type=
"text" class=
"coin form-control" value=
"0">
648 <div class=
"form-group">
649 <label for=
"account" class=
"col-sm-2 control-label">
650 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target=
"_blank" data-translate
>Account
</a>
652 <div class=
"col-sm-10">
653 <input id=
"account" type=
"text" class=
"account form-control" value=
"0">
656 <div class=
"form-group">
657 <label for=
"change" class=
"col-sm-2 control-label">
658 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target=
"_blank" data-translate
>External / Internal
</a>
660 <div class=
"col-sm-10">
661 <input id=
"change" type=
"text" class=
"change form-control" value=
"0">
664 <div class=
"form-group">
665 <label class=
"col-sm-2 control-label">
667 <div class=
"col-sm-10">
668 <p data-translate
>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.
</p>
671 <div class=
"form-group">
672 <label for=
"account-xprv" class=
"col-sm-2 control-label">
673 <span data-translate
>Account Extended Private Key
</span>
675 <div class=
"col-sm-10">
676 <textarea id=
"account-xprv" type=
"text" class=
"account-xprv form-control" readonly data-show-qr
></textarea>
679 <div class=
"form-group">
680 <label for=
"account-xpub" class=
"col-sm-2 control-label">
681 <span data-translate
>Account Extended Public Key
</span>
683 <div class=
"col-sm-10">
684 <textarea id=
"account-xpub" type=
"text" class=
"account-xpub form-control" readonly data-show-qr
></textarea>
687 <div class=
"form-group">
688 <label class=
"col-sm-2 control-label">
690 <div class=
"col-sm-10">
691 <p data-translate
>The BIP32 derivation path and extended keys are the basis for the derived addresses.
</p>
694 <div class=
"form-group">
695 <label for=
"bip44-path" class=
"col-sm-2 control-label" data-translate
>BIP32 Derivation Path
</label>
696 <div class=
"col-sm-10">
697 <input id=
"bip44-path" type=
"text" class=
"path form-control" value=
"m/44'/0'/0'/0" readonly=
"readonly">
702 <div id=
"bip32" class=
"tab-pane">
703 <form class=
"form-horizontal" role=
"form">
705 <div class=
"col-sm-2"></div>
706 <div class=
"col-sm-10">
708 For more info see the
709 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">BIP32 spec
</a>
712 <div class=
"form-group">
713 <label for=
"bip32-client" class=
"col-sm-2 control-label" data-translate
>Client
</label>
714 <div class=
"col-sm-10">
715 <select id=
"bip32-client" class=
"client form-control">
716 <option value=
"custom">Custom derivation path
</option>
717 <!-- populated by javascript -->
721 <div class=
"form-group">
722 <label for=
"bip32-path" class=
"col-sm-2 control-label" data-translate
>BIP32 Derivation Path
</label>
723 <div class=
"col-sm-10">
724 <input id=
"bip32-path" type=
"text" class=
"path form-control" value=
"m/0">
727 <div class=
"form-group">
728 <div class=
"col-sm-2"></div>
729 <label class=
"col-sm-10">
730 <input class=
"hardened-addresses" type=
"checkbox">
731 <span data-translate
>Use hardened addresses
</span>
734 <div class=
"form-group">
735 <label for=
"core-path" class=
"col-sm-2 control-label" data-translate
>Bitcoin Core
</label>
736 <div class=
"col-sm-10">
737 <p class=
"form-control no-border" data-translate-html
>
738 Use path
<code>m/
0'/
0'
</code> with hardened addresses.
740 <p class=
"form-control no-border" data-translate-html
>
741 For more info see the
742 <a href=
"https://github.com/bitcoin/bitcoin/pull/8035" target=
"_blank">Bitcoin Core BIP32 implementation
</a>
746 <div class=
"form-group">
747 <label for=
"core-path" class=
"col-sm-2 control-label" data-translate
>Multibit
</label>
748 <div class=
"col-sm-10">
749 <p class=
"form-control no-border">
750 <span data-translate-html
>Use path
<code>m/
0'/
0</code>.
</span>
752 <p class=
"form-control no-border">
753 <span data-translate
>For more info see
</span>
754 <a href=
"https://multibit.org/" target=
"_blank">MultiBit HD
</a>
758 <div class=
"form-group">
759 <label class=
"col-sm-2 control-label" data-translate
>Block Explorers
</label>
760 <div class=
"col-sm-10">
761 <p class=
"form-control no-border">
762 <span data-translate-html
>Use path
<code>m/
44'/
0'/
0'
</code>.
</span>
763 <span data-translate-html
>Only enter the
<code>xpub
</code> extended key into block explorer search fields, never the
<code>xprv
</code> key.
</span>
765 <p class=
"form-control no-border">
766 <span data-translate
>Can be used with
</span>:
767 <a href=
"https://blockchain.info/" target=
"_blank">blockchain.info
</a>
774 <form class=
"form-horizontal" role=
"form">
775 <div class=
"form-group">
776 <label for=
"extended-priv-key" class=
"col-sm-2 control-label" data-translate
>BIP32 Extended Private Key
</label>
777 <div class=
"col-sm-10">
778 <textarea id=
"extended-priv-key" class=
"extended-priv-key form-control" readonly=
"readonly" data-show-qr
></textarea>
781 <div class=
"form-group">
782 <label for=
"extended-pub-key" class=
"col-sm-2 control-label" data-translate
>BIP32 Extended Public Key
</label>
783 <div class=
"col-sm-10">
784 <textarea id=
"extended-pub-key" class=
"extended-pub-key form-control" readonly=
"readonly" data-show-qr
></textarea>
794 <div class=
"col-md-12">
795 <h2>Derived Addresses
</h2>
796 <p data-translate
>Note these addreses are derived from the BIP32 Extended Key
</p>
797 <table class=
"table table-striped">
800 <div class=
"input-group">
801 <span data-translate
>Path
</span>
802 <button class=
"index-toggle" data-translate
>Toggle
</button>
806 <div class=
"input-group">
807 <span data-translate
>Address
</span>
808 <button class=
"address-toggle" data-translate
>Toggle
</button>
812 <div class=
"input-group">
813 <span data-translate
>Public Key
</span>
814 <button class=
"public-key-toggle" data-translate
>Toggle
</button>
818 <div class=
"input-group">
819 <span data-translate
>Private Key
</span>
820 <button class=
"private-key-toggle" data-translate
>Toggle
</button>
824 <tbody class=
"addresses monospace">
825 <tr><td> </td><td> </td><td> </td><td> </td></tr>
826 <tr><td> </td><td> </td><td> </td><td> </td></tr>
827 <tr><td> </td><td> </td><td> </td><td> </td></tr>
828 <tr><td> </td><td> </td><td> </td><td> </td></tr>
829 <tr><td> </td><td> </td><td> </td><td> </td></tr>
834 <span data-translate
>Show more rows
</span>:
835 <input type=
"number" class=
"rows-to-add" value=
"20">
836 <button class=
"more" data-translate
>Show
</button>
841 <div class=
"col-md-12">
842 <h2 data-translate
>More info
</h2>
843 <h3>BIP39
<span class=
"small" data-translate
>Mnemonic code for generating deterministic keys
</span></h3>
844 <p data-translate-html
>
846 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec
</a>
848 <h3>BIP32
<span class=
"small" data-translate
>Hierarchical Deterministic Wallets
</span></h3>
849 <p data-translate-html
>
851 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">official BIP32 spec
</a>
853 <p data-translate-html
>
855 <a href=
"http://bip32.org/" target=
"_blank">bip32.org
</a>
857 <h3>BIP44
<span class=
"small" data-translate
>Multi-Account Hierarchy for Deterministic Wallets
</span></h3>
858 <p data-translate-html
>
860 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">official BIP44 spec
</a>
862 <h3 data-translate
>Private Keys
</h3>
864 <span data-translate-html
>
866 <a href=
"https://web.archive.org/web/20150707020924/https://brainwallet.org/" target=
"_blank">brainwallet.org
</a>.
868 <span data-translate
>Be careful - it can be easy to make mistakes if you don't know what you're doing.
</span>
870 <h3 id=
"entropy-notes" data-translate
>Entropy
</h3>
872 <span data-translate-html
>
873 Entropy values must be sourced from a
874 <a href=
"https://en.wikipedia.org/wiki/Random_number_generation" target=
"_blank">strong source of randomness
</a>.
876 <span data-translate
>This means flipping a fair coin, rolling a fair dice, noise measurements etc.
</span>
877 <span data-translate-html
>
878 Do
<strong>NOT
</strong> use phrases from books, lyrics from songs, your birthday or steet address,
879 keyboard mashing, or anything you
<i>think
</i> is random, because chances are overwhelming it isn't
880 random enough for the needs of this tool.
884 <strong><span data-translate
>Do not store entropy.
</span></strong>
887 <span data-translate
>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.
</span>
888 <span data-translate
>Instead of storing entropy, store the mnemonic generated from the entropy.
</span>
889 <span data-translate-html
><a href=
"https://en.wikipedia.org/wiki/Steganography#Physical" target=
"_blank">Steganography
</a> may be beneficial when storing the mnemonic.
</span>
892 <span data-translate-html
>
893 The random mnemonic generator on this page uses a
894 <a href=
"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target=
"_blank">cryptographically secure random number generator
</a>.
896 <span data-translate
>The built in random generator can generally be trusted more than your own intuition about randomness.
</span>
897 <span data-translate
>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.
</span>
898 <span data-translate
>In that case you might choose to use your own source of entropy.
</span>
901 <a href=
"https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target=
"_blank" data-translate
>You are not a good source of entropy.
</a>
903 <h3 data-translate
>License
</h3>
905 <span data-translate-html
>Please refer to
<a href=
"https://github.com/iancoleman/bip39/blob/master/LICENSE" target=
"_blank">the software license
</a> for more detail.
908 <p data-translate
>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
</p>
915 <div class=
"col-md-12">
917 <h2 data-translate
>Offline Usage
</h2>
920 You can use this tool without having to be online.
923 In your browser, select file save-as, and save this page
927 Double-click that file to open it in a browser
928 on any offline computer.
931 <span data-translate
>Alternatively, download the file from the repository
</span>
933 <a href=
"https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39
</a>
942 <div class=
"col-md-12">
944 <h2 data-translate
>This project is
100% open-source code
</h2>
947 <span data-translate
>Get the source code from the repository
</span>
949 <a href=
"https://github.com/iancoleman/bip39" target=
"_blank">
950 https://github.com/iancoleman/bip39
954 <h3 data-translate
>Libraries
</h3>
957 <span>BitcoinJS -
</span>
958 <a href=
"https://github.com/bitcoinjs/bitcoinjs-lib" target=
"_blank">
959 https://github.com/bitcoinjs/bitcoinjs-lib
964 <span>jsBIP39 -
</span>
965 <a href=
"https://github.com/iancoleman/jsbip39" target=
"_blank">
966 https://github.com/iancoleman/jsbip39
972 <a href=
"https://github.com/bitwiseshiftleft/sjcl" target=
"_blank">
973 https://github.com/bitwiseshiftleft/sjcl
978 <span>jQuery -
</span>
979 <a href=
"https://jquery.com/" target=
"_blank">
985 <span>Twitter Bootstrap -
</span>
986 <a href=
"http://getbootstrap.com/" target=
"_blank">
987 http://getbootstrap.com/
996 <div class=
"qr-container hidden">
997 <div class=
"qr-hint bg-primary hidden" data-translate
>Click field to hide QR
</div>
998 <div class=
"qr-hint bg-primary" data-translate
>Click field to show QR
</div>
999 <div class=
"qr-hider hidden">
1000 <div class=
"qr-image"></div>
1001 <div class=
"qr-warning bg-primary" data-translate
>Caution: Scanner may keep history
</div>
1005 <div class=
"feedback-container">
1006 <div class=
"feedback">Loading...
</div>
1009 <script type=
"text/template" id=
"address-row-template">
1011 <td class=
"index"><span></span></td>
1012 <td class=
"address"><span data-show-qr
></span></td>
1013 <td class=
"pubkey"><span data-show-qr
></span></td>
1014 <td class=
"privkey"><span data-show-qr
></span></td>
1018 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
1019 // Required for ethereumjs-utils.js when run in phantomjs-
2.1.1
1020 // but is not required in any modern browsers.
1021 // For more information, see
1022 // https://www.bountysource.com/issues/
38485709-error-rendering-plot-with-phantomjs
1024 //----------------------------------------------------------------------
1026 // ECMAScript
2015 Polyfills
1028 //----------------------------------------------------------------------
1030 (function (global) {
1033 // Set this to always override native implementations, for testing
1034 // the polyfill in browsers with partial/full ES2015 support.
1035 var OVERRIDE_NATIVE_FOR_TESTING = false;
1037 var undefined = (void
0); // Paranoia
1041 function strict(o) {
1042 return o === global ? undefined : o;
1045 function hook(o, p, f) {
1047 console.assert(typeof op === 'function', 'Hooking a non-function');
1049 var o = strict(this);
1050 var r = f.apply(o, arguments);
1051 return r !== undefined ? r : op.apply(o, arguments);
1055 function isSymbol(s) {
1056 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
1059 function getPropertyDescriptor(target, name) {
1060 var desc = Object.getOwnPropertyDescriptor(target, name);
1061 var proto = Object.getPrototypeOf(target);
1062 while (!desc && proto) {
1063 desc = Object.getOwnPropertyDescriptor(proto, name);
1064 proto = Object.getPrototypeOf(proto);
1069 var enqueue = (function(nativePromise, nativeSetImmediate) {
1071 return function(job) { nativePromise.resolve().then(function() { job(); }); };
1072 if (nativeSetImmediate)
1073 return function(job) { nativeSetImmediate(job); };
1074 return function(job) { setTimeout(job,
0); };
1075 }(global['Promise'], global['setImmediate']));
1077 function define(o, p, v, override) {
1078 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
1081 if (typeof v === 'function') {
1082 // Sanity check that functions are appropriately named (where possible)
1083 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
1084 Object.defineProperty(o, p, {
1091 Object.defineProperty(o, p, {
1093 configurable: false,
1100 function set_internal(o, p, v) {
1101 Object.defineProperty(o, p, {
1103 configurable: false,
1109 // Snapshot intrinsic functions
1110 var $isNaN = global.isNaN,
1111 $parseInt = global.parseInt,
1112 $parseFloat = global.parseFloat;
1115 LOG10E = Math.LOG10E,
1125 random = Math.random,
1128 var orig_match = String.prototype.match,
1129 orig_replace = String.prototype.replace,
1130 orig_search = String.prototype.search,
1131 orig_split = String.prototype.split;
1133 // These are used for implementing the polyfills, but not exported.
1135 // Inspired by https://gist.github.com/
1638059
1137 function EphemeronTable() {
1138 var secretKey = ObjectCreate(null);
1140 function conceal(o) {
1141 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
1142 Object.defineProperty(o, 'valueOf', {
1143 value: (function(secretKey) {
1144 return function (k) {
1145 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
1155 function reveal(o) {
1156 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
1157 return v === o ? null : v;
1162 secretKey = ObjectCreate(null);
1164 remove: function(key) {
1165 var secrets = reveal(key);
1166 if (secrets && HasOwnProperty(secrets, 'value')) {
1167 delete secrets.value;
1172 get: function(key, defaultValue) {
1173 var secrets = reveal(key);
1174 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
1176 has: function(key) {
1177 var secrets = reveal(key);
1178 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
1180 set: function(key, value) {
1181 var secrets = reveal(key) || conceal(key);
1182 secrets.value = value;
1187 var empty = Object.create(null);
1189 //----------------------------------------------------------------------
1192 // http://www.ecma-international.org/ecma-
262/
6.0/
1194 //----------------------------------------------------------------------
1196 // ---------------------------------------
1197 //
19.4 Symbol Objects
1198 // ---------------------------------------
1200 // NOTE: Symbols are defined here - out of spec order - since we need the
1201 // properties and prototype to be populated for other polyfills.
1203 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
1207 var secret = Object.create(null);
1209 symbolForKey = function(k) {
1210 return symbolMap[k];
1213 var GlobalSymbolRegistry = [];
1215 function unique(bits) {
1216 return Array(bits +
1).join('x').replace(/x/g, function() {
1217 return random() <
0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1221 //
19.4.1 The Symbol Constructor
1222 //
19.4.1.1 Symbol ( description=undefined )
1223 function Symbol(description) {
1224 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1225 if (this instanceof Symbol && arguments[
1] !== secret) throw TypeError();
1227 var descString = description === undefined ? undefined : String(description);
1229 set_internal(this, '[[SymbolData]]', unique(
128));
1230 set_internal(this, '[[Description]]', descString);
1232 symbolMap[this] = this;
1236 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1237 global.Symbol = Symbol;
1239 //
19.4.2 Properties of the Symbol Constructor
1241 //
19.4.2.1 Symbol.for (key)
1242 define(Symbol, 'for', function for_(key) {
1243 var stringKey = String(key);
1244 for (var i =
0; i < GlobalSymbolRegistry.length; ++i) {
1245 var e = GlobalSymbolRegistry[i];
1246 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1248 var newSymbol = Symbol(key);
1249 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1253 //
19.4.2.2 Symbol.hasInstance
1254 //
19.4.2.3 Symbol.isConcatSpreadable
1256 //
19.4.2.4 Symbol.iterator
1257 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1259 //
19.4.2.5 Symbol.keyFor (sym)
1260 define(Symbol, 'keyFor', function keyFor(sym) {
1261 if (!(sym instanceof Symbol)) throw TypeError();
1262 for (var i =
0; i < GlobalSymbolRegistry.length; ++i) {
1263 var e = GlobalSymbolRegistry[i];
1264 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1269 //
19.4.2.6 Symbol.match
1270 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1272 //
19.4.2.7 Symbol.prototype
1274 //
19.4.2.8 Symbol.replace
1275 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1277 //
19.4.2.9 Symbol.search
1278 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1280 //
19.4.2.10 Symbol.species
1282 //
19.4.2.11 Symbol.search
1283 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1285 //
19.4.2.12 Symbol.toPrimitive
1287 //
19.4.2.13 Symbol.toStringTag
1288 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1290 //
19.4.2.14 Symbol.unscopables
1292 //
19.4.3 Properties of the Symbol Prototype Object
1293 //
19.4.3.1 Symbol.prototype.constructor
1295 //
19.4.3.2 Symbol.prototype.toString ( )
1296 Object.defineProperty(Symbol.prototype, 'toString', {
1297 value: function toString() {
1298 var s = strict(this);
1299 var desc = s['[[Description]]'];
1300 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1302 configurable: true, writeable: true, enumerable: false });
1304 //
19.4.3.3 Symbol.prototype.valueOf ( )
1305 Object.defineProperty(Symbol.prototype, 'valueOf', {
1306 value: function valueOf() {
1307 // To prevent automatic string conversion:
1310 // Spec has approximately the following:
1311 //var s = strict(this);
1312 //if (Type(s) === 'symbol') return s;
1313 //if (Type(s) !== 'object') throw TypeError();
1314 //if (!('[[SymbolData]]' in s)) throw TypeError();
1315 //return s['[[SymbolData]]'];
1317 configurable: true, writeable: true, enumerable: false });
1319 //
19.4.3.4 Symbol.prototype [ @@toStringTag ]
1320 // (Done later to polyfill partial implementations)
1322 //
19.4.4 Properties of Symbol Instances
1325 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1327 // Defined here so that other prototypes can reference it
1328 //
25.1.2 The %IteratorPrototype% Object
1329 var $IteratorPrototype$ = {};
1331 //----------------------------------------
1332 //
6 ECMAScript Data Types and Values
1333 //----------------------------------------
1335 //
6.1 ECMAScript Language Types
1337 // "Type(x)" is used as shorthand for "the type of x"...
1340 case 'undefined': return 'undefined';
1341 case 'boolean': return 'boolean';
1342 case 'number': return 'number';
1343 case 'string': return 'string';
1344 case 'symbol': return 'symbol';
1346 if (v === null) return 'null';
1347 if (v instanceof global.Symbol) return 'symbol';
1352 //
6.1.5.1 Well-Known Symbols
1353 var $$iterator = global.Symbol.iterator,
1354 $$match = global.Symbol.match,
1355 $$replace = global.Symbol.replace,
1356 $$search = global.Symbol.search,
1357 $$split = global.Symbol.split,
1358 $$toStringTag = global.Symbol.toStringTag;
1360 //----------------------------------------
1361 //
7 Abstract Operations
1362 //----------------------------------------
1364 //----------------------------------------
1365 //
7.1 Type Conversion
1366 //----------------------------------------
1368 //
7.1.1 ToPrimitive ( input [, PreferredType] )
1369 // just use valueOf()
1371 //
7.1.2 ToBoolean ( argument )
1372 // just use Boolean()
1374 //
7.1.3 ToNumber ( argument )
1375 // just use Number()
1377 //
7.1.4 ToInteger ( argument )
1378 function ToInteger(n) {
1380 if ($isNaN(n)) return
0;
1381 if (n ===
0 || n === Infinity || n === -Infinity) return n;
1382 return ((n <
0) ? -
1 :
1) * floor(abs(n));
1385 //
7.1.5 ToInt32 ( argument )
1386 function ToInt32(v) { return v
>> 0; }
1388 //
7.1.6 ToUint32 ( argument )
1389 function ToUint32(v) { return v
>>> 0; }
1391 //
7.1.7 ToInt16 ( argument )
1392 function ToInt16(v) { return (v <<
16)
>> 16; }
1394 //
7.1.8 ToUint16 ( argument )
1395 function ToUint16(v) { return v &
0xFFFF; }
1397 //
7.1.9 ToInt8 ( argument )
1398 function ToInt8(v) { return (v <<
24)
>> 24; }
1400 //
7.1.10 ToUint8 ( argument )
1401 function ToUint8(v) { return v &
0xFF; }
1403 //
7.1.11 ToUint8Clamp ( argument )
1404 function ToUint8Clamp(argument) {
1405 var number = Number(argument);
1406 if ($isNaN(number)) return
0;
1407 if (number <=
0) return
0;
1408 if (number
>=
255) return
255;
1409 var f = floor(number);
1410 if ((f +
0.5) < number) return f +
1;
1411 if (number < (f +
0.5)) return f;
1412 if (f %
2) return f +
1;
1416 //
7.1.12 ToString ( argument )
1417 // just use String()
1419 //
7.1.13 ToObject ( argument )
1420 function ToObject(v) {
1421 if (v === null || v === undefined) throw TypeError();
1425 //
7.1.14 ToPropertyKey ( argument )
1426 function ToPropertyKey(v) {
1430 //
7.1.15 ToLength ( argument )
1431 function ToLength(v) {
1432 var len = ToInteger(v);
1433 if (len <=
0) return
0;
1434 if (len === Infinity) return
0x20000000000000 -
1; //
2^
53-
1
1435 return min(len,
0x20000000000000 -
1); //
2^
53-
1
1438 //
7.1.16 CanonicalNumericIndexString ( argument )
1440 //----------------------------------------
1441 //
7.2 Testing and Comparison Operations
1442 //----------------------------------------
1444 //
7.2.1 RequireObjectCoercible ( argument )
1445 //
7.2.2 IsArray ( argument )
1447 //
7.2.3 IsCallable ( argument )
1448 function IsCallable(o) { return typeof o === 'function'; }
1450 //
7.2.4 IsConstructor ( argument )
1451 function IsConstructor(o) {
1452 // Hacks for Safari
7 TypedArray XXXConstructor objects
1453 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1454 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1455 // TODO: Can this be improved on?
1456 return typeof o === 'function';
1459 //
7.2.5 IsExtensible (O)
1460 //
7.2.6 IsInteger ( argument )
1462 //
7.2.7 IsPropertyKey ( argument )
1463 function IsPropertyKey(argument) {
1464 if (Type(argument) === 'string') return true;
1465 if (Type(argument) === 'symbol') return true;
1469 //
7.2.8 IsRegExp ( argument )
1470 //
7.2.5 IsConstructor ( argument )
1472 //
7.2.9 SameValue(x, y)
1473 function SameValue(x, y) {
1474 if (typeof x !== typeof y) return false;
1479 if (x !== x && y !== y) return true;
1480 if (x ===
0 && y ===
0) return
1/x ===
1/y;
1490 //
7.2.10 SameValueZero(x, y)
1491 function SameValueZero(x, y) {
1492 if (typeof x !== typeof y) return false;
1497 if (x !== x && y !== y) return true;
1507 //----------------------------------------
1508 //
7.3 Operations on Objects
1509 //----------------------------------------
1512 // - just use o.p or o[p]
1514 //
7.3.2 GetV (V, P)
1515 function GetV(v, p) {
1516 var o = ToObject(v);
1520 //
7.3.3 Set (O, P, V, Throw)
1521 // - just use o.p = v or o[p] = v
1526 //
7.3.9 GetMethod (O, P)
1527 function GetMethod(o, p) {
1528 var func = GetV(o, p);
1529 if (func === undefined || func === null) return undefined;
1530 if (!IsCallable(func)) throw TypeError();
1534 //
7.3.10 HasProperty (O, P)
1535 function HasProperty(o, p) {
1537 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1538 if (Type(o) !== 'object') return false;
1539 o = Object.getPrototypeOf(o);
1544 //
7.3.11 HasOwnProperty (O, P)
1545 function HasOwnProperty(o, p) {
1546 return Object.prototype.hasOwnProperty.call(o, p);
1549 //----------------------------------------
1550 //
7.4 Operations on Iterator Objects
1551 //----------------------------------------
1553 //
7.4.1 GetIterator ( obj, method )
1554 function GetIterator(obj, method) {
1555 if (arguments.length <
2)
1556 method = GetMethod(obj, $$iterator);
1557 var iterator = method.call(obj);
1558 if (Type(iterator) !== 'object') throw TypeError();
1562 //
7.4.2 IteratorNext ( iterator, value )
1563 function IteratorNext(iterator, value) {
1564 if (arguments.length <
2)
1565 var result = iterator.next();
1567 result = iterator.next(value);
1568 if (Type(result) !== 'object') throw TypeError();
1572 //
7.4.3 IteratorComplete ( iterResult )
1573 function IteratorComplete(iterResult) {
1574 console.assert(Type(iterResult) === 'object');
1575 return Boolean(iterResult.done);
1578 //
7.4.4 IteratorValue ( iterResult )
1579 function IteratorValue(iterResult) {
1580 console.assert(Type(iterResult) === 'object');
1581 return iterResult.value;
1584 //
7.4.5 IteratorStep ( iterator )
1585 function IteratorStep( iterator, value ) {
1586 var result = IteratorNext(iterator, value);
1587 var done = result['done'];
1588 if (Boolean(done) === true) return false;
1592 //
7.4.6 IteratorClose( iterator, completion )
1593 function IteratorClose( iterator, completion ) {
1594 console.assert(Type(iterator) === 'object');
1595 var _return = GetMethod(iterator, 'return');
1596 if (_return === undefined) return completion;
1598 var innerResult = _return[iterator]();
1600 // TODO: If completion.[[type]] is throw, return completion
1603 if (Type(innerResult) !== 'object') throw TypeError();
1607 //
7.4.7 CreateIterResultObject (value, done)
1608 function CreateIterResultObject(value, done) {
1609 console.assert(Type(done) === 'boolean');
1611 obj["value"] = value;
1616 //
7.4.8 CreateListIterator (list)
1617 //
7.4.8.1 ListIterator next( )
1618 //
7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1619 //
7.4.9.1 CompoundIterator next( )
1621 //----------------------------------------
1622 //
8 Executable Code and Execution Contexts
1623 //----------------------------------------
1625 //----------------------------------------
1626 //
8.4 Jobs and Job Queues
1627 //----------------------------------------
1629 //
8.4.1 EnqueueJob ( queueName, job, arguments)
1630 function EnqueueJob(queueName, job, args) {
1631 var fn = function() { job.apply(undefined, args); };
1635 //
8.4.2 NextJob result
1636 function NextJob(result) {
1640 //----------------------------------------
1641 //
9 Ordinary and Exotic Objects Behaviors
1642 //----------------------------------------
1644 //
9.1.11 [[Enumerate]] ()
1645 function Enumerate(obj) {
1647 if (Object(obj) !== obj) return e;
1648 var visited = new Set;
1649 while (obj !== null) {
1650 Object.getOwnPropertyNames(obj).forEach(function(name) {
1651 if (!visited.has(name)) {
1652 var desc = Object.getOwnPropertyDescriptor(obj, name);
1655 if (desc.enumerable) e.push(name);
1659 obj = Object.getPrototypeOf(obj);
1661 return e[$$iterator]();
1664 //
9.1.12 [[OwnPropertyKeys]] ( )
1665 function OwnPropertyKeys(o) {
1666 return Object.getOwnPropertyNames(o);
1669 //
9.1.13 ObjectCreate(proto, internalSlotsList)
1670 function ObjectCreate(proto, internalSlotsList) {
1671 return Object.create(proto, internalSlotsList);
1674 // ---------------------------------------
1675 //
19 Fundamental Objects
1676 // ---------------------------------------
1678 // ---------------------------------------
1679 //
19.1 Object Objects
1680 // ---------------------------------------
1682 //
19.1.1 The Object Constructor
1683 //
19.1.1.1 Object ( [ value ] )
1684 //
19.1.2 Properties of the Object Constructor
1685 //
19.1.2.1 Object.assign ( target, ...sources )
1688 function assign(target, /*...*/sources) {
1689 var to = ToObject(target);
1690 if (arguments.length <
2) return to;
1692 var sourcesIndex =
1;
1693 while (sourcesIndex < arguments.length) {
1694 var nextSource = arguments[sourcesIndex++];
1695 if (nextSource === undefined || nextSource === null) {
1698 var from = ToObject(nextSource);
1699 keys = OwnPropertyKeys(from);
1701 for (var keysIndex =
0; keysIndex < keys.length; ++keysIndex) {
1702 var nextKey = keys[keysIndex];
1703 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1704 if (desc !== undefined && desc.enumerable) {
1705 var propValue = from[nextKey];
1706 to[nextKey] = propValue;
1713 //
19.1.2.2 Object.create ( O [ , Properties ] )
1714 //
19.1.2.3 Object.defineProperties ( O, Properties )
1715 //
19.1.2.4 Object.defineProperty ( O, P, Attributes )
1716 //
19.1.2.5 Object.freeze ( O )
1717 //
19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1720 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1721 $getOwnPropertyNames = Object.getOwnPropertyNames,
1722 $keys = Object.keys,
1723 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1725 function isStringKey(k) { return !symbolForKey(k); }
1727 //
19.1.2.7 Object.getOwnPropertyNames ( O )
1729 Object, 'getOwnPropertyNames',
1730 function getOwnPropertyNames(o) {
1731 if (Object.prototype.toString.call(o) === '[object Window]') {
1732 // Workaround for cross-realm calling by IE itself.
1733 // https://github.com/inexorabletash/polyfill/issues/
96
1735 return $getOwnPropertyNames(o).filter(isStringKey);
1737 return $window_names.slice();
1740 return $getOwnPropertyNames(o).filter(isStringKey);
1743 //
19.1.2.8 Object.getOwnPropertySymbols ( O )
1745 Object, 'getOwnPropertySymbols',
1746 function getOwnPropertySymbols(o) {
1747 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1750 //
19.1.2.14 Object.keys ( O )
1754 return $keys(o).filter(isStringKey);
1758 //
19.1.2.9 Object.getPrototypeOf ( O )
1759 //
19.1.2.10 Object.is ( value1, value2 )
1762 function is(value1, value2) {
1763 return SameValue(value1, value2);
1766 //
19.1.2.11 Object.isExtensible ( O )
1767 //
19.1.2.12 Object.isFrozen ( O )
1768 //
19.1.2.13 Object.isSealed ( O )
1770 //
19.1.2.14 Object.keys ( O )
1773 //
19.1.2.15 Object.preventExtensions ( O )
1774 //
19.1.2.16 Object.prototype
1775 //
19.1.2.17 Object.seal ( O )
1777 //
19.1.2.18 Object.setPrototypeOf ( O, proto )
1779 Object, 'setPrototypeOf',
1780 function setPrototypeOf(o, proto) {
1781 if (Type(o) !== 'object') throw TypeError();
1782 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1783 o.__proto__ = proto;
1788 //
19.1.3 Properties of the Object Prototype Object
1789 //
19.1.3.1 Object.prototype.constructor
1790 //
19.1.3.2 Object.prototype.hasOwnProperty ( V )
1791 //
19.1.3.3 Object.prototype.isPrototypeOf ( V )
1792 //
19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1793 //
19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1794 //
19.1.3.6 Object.prototype.toString ( )
1795 hook(Object.prototype, 'toString',
1797 var o = strict(this);
1798 if (o === Object(o) && $$toStringTag in o) {
1799 return '[object ' + o[$$toStringTag] + ']';
1804 //
19.1.3.7 Object.prototype.valueOf ( )
1805 //
19.1.4 Properties of Object Instances
1807 // ---------------------------------------
1808 //
19.2 Function Objects
1809 // ---------------------------------------
1811 //
19.2.1 The Function Constructor
1812 //
19.2.1.1 Function ( p1, p2, … , pn, body )
1813 //
19.2.2 Properties of the Function Constructor
1814 //
19.2.2.1 Function.length
1815 //
19.2.2.2 Function.prototype
1816 //
19.2.3 Properties of the Function Prototype Object
1817 //
19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1818 //
19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1819 //
19.2.3.3 Function.prototype.call (thisArg , ...args)
1820 //
19.2.3.4 Function.prototype.constructor
1821 //
19.2.3.5 Function.prototype.toString ( )
1822 //
19.2.3.6 Function.prototype[@@hasInstance] ( V )
1823 //
19.2.4 Function Instances
1826 //
19.2.4.3 prototype
1828 // (No polyfillable changes from ES5)
1830 // ---------------------------------------
1831 //
19.3 Boolean Objects
1832 // ---------------------------------------
1834 //
19.3.1 The Boolean Constructor
1835 //
19.3.1.1 Boolean ( value )
1836 //
19.3.2 Properties of the Boolean Constructor
1837 //
19.3.2.1 Boolean.prototype
1838 //
19.3.3 Properties of the Boolean Prototype Object
1839 //
19.3.3.1 Boolean.prototype.constructor
1840 //
19.3.3.2 Boolean.prototype.toString ( )
1841 //
19.3.3.3 Boolean.prototype.valueOf ( )
1842 //
19.3.4 Properties of Boolean Instances
1844 // (No polyfillable changes from ES5)
1846 // ---------------------------------------
1847 //
19.4 Symbol Objects
1848 // ---------------------------------------
1850 // Moved earlier in this script, so that other polyfills can depend on them.
1852 //
19.4.3.4 Symbol.prototype [ @@toStringTag ]
1853 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1855 // ---------------------------------------
1856 //
19.5 Error Objects
1857 // ---------------------------------------
1859 //
19.5.1 The Error Constructor
1860 //
19.5.1.1 Error ( message )
1861 //
19.5.1.2 new Error( ...argumentsList )
1862 //
19.5.2 Properties of the Error Constructor
1863 //
19.5.2.1 Error.prototype
1864 //
19.5.3 Properties of the Error Prototype Object
1865 //
19.5.3.1 Error.prototype.constructor
1866 //
19.5.3.2 Error.prototype.message
1867 //
19.5.3.3 Error.prototype.name
1868 //
19.5.3.4 Error.prototype.toString ( )
1869 //
19.5.4 Properties of Error Instances
1870 //
19.5.5 Native Error Types Used in This Standard
1871 //
19.5.5.1 EvalError
1872 //
19.5.5.2 RangeError
1873 //
19.5.5.3 ReferenceError
1874 //
19.5.5.4 SyntaxError
1875 //
19.5.5.5 TypeError
1876 //
19.5.5.6 URIError
1877 //
19.5.6 NativeError Object Structure
1878 //
19.5.6.1 NativeError Constructors
1879 //
19.5.6.1.1 NativeError ( message )
1880 //
19.5.6.1.2 new NativeError ( ...argumentsList )
1881 //
19.5.6.2 Properties of the NativeError Constructors
1882 //
19.5.6.2.1 NativeError.prototype
1883 //
19.5.6.3 Properties of the NativeError Prototype Objects
1884 //
19.5.6.4 Properties of NativeError Instances
1886 // (No polyfillable changes from ES5)
1888 // ---------------------------------------
1889 //
20 Numbers and Dates
1890 // ---------------------------------------
1892 // ---------------------------------------
1893 //
20.1 Number Objects
1894 // ---------------------------------------
1896 //
20.1.1 The Number Constructor
1897 //
20.1.1.1 Number ( [ value ] )
1898 //
20.1.1.2 new Number ( ...argumentsList )
1899 //
20.1.2 Properties of the Number Constructor
1901 //
20.1.2.1 Number.EPSILON
1906 for (next =
1;
1 + next !==
1; next = next /
2)
1911 //
20.1.2.2 Number.isFinite ( number )
1914 function isFinite(number) {
1915 if (Type(number) !== 'number') return false;
1916 if (number !== number || number === +Infinity || number === -Infinity) return false;
1920 //
20.1.2.3 Number.isInteger ( number )
1922 Number, 'isInteger',
1923 function isInteger(number) {
1924 if (Type(number) !== 'number') return false;
1925 if (number !== number || number === +Infinity || number === -Infinity) return false;
1926 var integer = ToInteger(number);
1927 if (integer !== number) return false;
1931 //
20.1.2.4 Number.isNaN ( number )
1934 function isNaN(number) {
1935 if (Type(number) !== 'number') return false;
1936 if (number !== number) return true;
1940 //
20.1.2.5 Number.isSafeInteger ( number )
1942 Number, 'isSafeInteger',
1943 function isSafeInteger(number) {
1944 if (Type(number) !== 'number') return false;
1945 if (number !== number || number === +Infinity || number === -Infinity) return false;
1946 var integer = ToInteger(number);
1947 if (integer !== number) return false;
1948 if (abs(integer) <= (
0x20000000000000 -
1)) //
2^
53-
1
1953 //
20.1.2.6 Number.MAX_SAFE_INTEGER
1955 Number, 'MAX_SAFE_INTEGER',
1956 9007199254740991); //
2^
53-
1
1958 //
20.1.2.7 Number.MAX_VALUE
1960 //
20.1.2.8 Number.MIN_SAFE_INTEGER
1962 Number, 'MIN_SAFE_INTEGER',
1963 -
9007199254740991); // -
2^
53+
1
1965 //
20.1.2.9 Number.MIN_VALUE
1966 //
20.1.2.10 Number.NaN
1967 //
20.1.2.11 Number.NEGATIVE_INFINITY
1969 //
20.1.2.12 Number.parseFloat ( string )
1970 define(Number, 'parseFloat', $parseFloat);
1972 //
20.1.2.13 Number.parseInt ( string, radix )
1973 define(Number, 'parseInt', $parseInt);
1975 //
20.1.2.14 Number.POSITIVE_INFINITY
1976 //
20.1.2.15 Number.prototype
1978 //
20.1.3 Properties of the Number Prototype Object
1979 //
20.1.3.1 Number.prototype.constructor
1980 //
20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1981 //
20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1982 //
20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1983 //
20.1.3.5 Number.prototype.toPrecision ( precision )
1984 //
20.1.3.6 Number.prototype.toString ( [ radix ] )
1985 //
20.1.3.7 Number.prototype.valueOf ( )
1986 //
20.1.4 Properties of Number Instances
1988 // ---------------------------------------
1989 //
20.2 The Math Object
1990 // ---------------------------------------
1992 //
20.2.1 Value Properties of the Math Object
1994 //
20.2.1.2 Math.LN10
1995 //
20.2.1.3 Math.LN2
1996 //
20.2.1.4 Math.LOG10E
1997 //
20.2.1.5 Math.LOG2E
1999 //
20.2.1.7 Math.SQRT1_2
2000 //
20.2.1.8 Math.SQRT2
2002 //
20.2.1.9 Math [ @@toStringTag ]
2003 define(Math, $$toStringTag, 'Math');
2005 //
20.2.2 Function Properties of the Math Object
2006 //
20.2.2.1 Math.abs ( x )
2007 //
20.2.2.2 Math.acos ( x )
2009 //
20.2.2.3 Math.acosh(x)
2014 return log(x + sqrt(x * x -
1));
2017 //
20.2.2.4 Math.asin ( x )
2019 //
20.2.2.5 Math.asinh( x )
2024 if (SameValue(x, -
0)) {
2027 var s = sqrt(x * x +
1);
2028 return (s === -x) ? log(
0) : log(x + s);
2031 //
20.2.2.6 Math.atan ( x )
2033 //
20.2.2.7 Math.atanh( x )
2038 return (x ===
0) ? x : log((
1 + x) / (
1 - x)) /
2;
2041 //
20.2.2.8 Math.atan2 ( y, x )
2043 //
20.2.2.9 Math.cbrt ( x )
2051 var r = pow(abs(x),
1/
3);
2053 return r + (r * (t-r) / (
2*r + t));
2056 //
20.2.2.10 Math.ceil ( x )
2058 //
20.2.2.11 Math.clz32 ( x )
2063 return (x &
0xf0) ? (x &
0x80 ?
0 : x &
0x40 ?
1 : x &
0x20 ?
2 :
3) :
2064 (x &
0x08 ?
4 : x &
0x04 ?
5 : x &
0x02 ?
6 : x &
0x01 ?
7 :
8);
2067 return x &
0xff000000 ? clz8(x
>> 24) :
2068 x &
0xff0000 ? clz8(x
>> 16) +
8 :
2069 x &
0xff00 ? clz8(x
>> 8) +
16 : clz8(x) +
24;
2074 //
20.2.2.12 Math.cos ( x )
2076 //
20.2.2.13 Math.cosh ( x )
2081 return (pow(E, x) + pow(E, -x)) /
2;
2084 //
20.2.2.14 Math.exp ( x )
2086 //
20.2.2.15 Math.expm1 ( x )
2091 // from: http://www.johndcook.com/cpp_log1p.html
2092 if (SameValue(x, -
0)) {
2094 } else if (abs(x) <
1e-5) {
2095 return x +
0.5 * x * x; // two terms of Taylor expansion
2101 //
20.2.2.16 Math.floor ( x )
2103 //
20.2.2.17 Math.fround ( x )
2106 function fround(x) {
2110 if (
1/x === +Infinity ||
1/x === -Infinity || x === +Infinity || x === -Infinity) {
2113 return (new Float32Array([x]))[
0];
2116 //
20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
2121 var m =
0, sawNaN = false;
2122 for (var i =
0; i < arguments.length; ++i) {
2123 var n = abs(Number(arguments[i]));
2124 if (n === Infinity) return n;
2125 if (n !== n) sawNaN = true;
2129 if (sawNaN) return NaN;
2130 if (m ===
0) return +
0;
2132 for (i =
0; i < values.length; ++i) {
2133 var r = values[i] / m;
2136 return m * sqrt(sum);
2139 //
20.2.2.19 Math.imul ( x, y )
2142 function imul(x, y) {
2143 var a = ToUint32(x);
2144 var b = ToUint32(y);
2145 // (slow but accurate)
2146 var ah = (a
>>> 16) &
0xffff;
2147 var al = a &
0xffff;
2148 var bh = (b
>>> 16) &
0xffff;
2149 var bl = b &
0xffff;
2150 return ((al * bl) + (((ah * bl + al * bh) <<
16)
>>> 0)|
0);
2151 }, ('imul' in Math && Math.imul(
1,
0x80000000) ===
0) // Safari
7 bug
2154 //
20.2.2.20 Math.log ( x )
2156 //
20.2.2.21 Math.log1p ( x )
2161 // from: http://www.johndcook.com/cpp_expm1.html
2164 } else if (SameValue(x, -
0)) {
2166 } else if (abs(x)
> 1e-4) {
2169 return (-
0.5 * x +
1) * x;
2173 //
20.2.2.22 Math.log10 ( x )
2178 return log(x) * LOG10E;
2181 //
20.2.2.23 Math.log2 ( x )
2186 return log(x) * LOG2E;
2189 //
20.2.2.24 Math.max ( value1, value2 , ...values )
2190 //
20.2.2.25 Math.min ( value1, value2 , ...values )
2191 //
20.2.2.26 Math.pow ( x, y )
2192 //
20.2.2.27 Math.random ( )
2193 //
20.2.2.28 Math.round ( x )
2195 //
20.2.2.29 Math.sign(x)
2200 return x <
0 ? -
1 : x
> 0 ?
1 : x;
2203 //
20.2.2.30 Math.sin ( x )
2205 //
20.2.2.31 Math.sinh( x )
2210 return SameValue(x, -
0) ? x : (pow(E, x) - pow(E, -x)) /
2;
2213 //
20.2.2.32 Math.sqrt ( x )
2214 //
20.2.2.33 Math.tan ( x )
2216 //
20.2.2.34 Math.tanh ( x )
2221 var n = pow(E,
2 * x) -
1,
2222 d = pow(E,
2 * x) +
1;
2223 if (SameValue(x, -
0))
2225 return (n === d) ?
1 : n / d; // Handle Infinity/Infinity
2228 //
20.2.2.35 Math.trunc ( x )
2233 return $isNaN(x) ? NaN :
2234 x <
0 ? ceil(x) : floor(x);
2237 // ---------------------------------------
2238 //
20.3 Date Objects
2239 // ---------------------------------------
2241 //
20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2242 //
20.3.1.1 Time Values and Time Range
2243 //
20.3.1.2 Day Number and Time within Day
2244 //
20.3.1.3 Year Number
2245 //
20.3.1.4 Month Number
2246 //
20.3.1.5 Date Number
2247 //
20.3.1.6 Week Day
2248 //
20.3.1.7 Local Time Zone Adjustment
2249 //
20.3.1.8 Daylight Saving Time Adjustment
2250 //
20.3.1.9 Local Time
2251 //
20.3.1.10 Hours, Minutes, Second, and Milliseconds
2252 //
20.3.1.11 MakeTime (hour, min, sec, ms)
2253 //
20.3.1.12 MakeDay (year, month, date)
2254 //
20.3.1.13 MakeDate (day, time)
2255 //
20.3.1.14 TimeClip (time)
2256 //
20.3.1.15 Date Time String Format
2257 //
20.3.1.15.1 Extended years
2258 //
20.3.2 The Date Constructor
2259 //
20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2260 //
20.3.2.2 Date ( value )
2261 //
20.3.2.3 Date ( )
2262 //
20.3.3 Properties of the Date Constructor
2263 //
20.3.3.1 Date.now ( )
2264 //
20.3.3.2 Date.parse (string)
2265 //
20.3.3.3 Date.prototype
2266 //
20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2267 //
20.3.4 Properties of the Date Prototype Object
2268 //
20.3.4.1 Date.prototype.constructor
2269 //
20.3.4.2 Date.prototype.getDate ( )
2270 //
20.3.4.3 Date.prototype.getDay ( )
2271 //
20.3.4.4 Date.prototype.getFullYear ( )
2272 //
20.3.4.5 Date.prototype.getHours ( )
2273 //
20.3.4.6 Date.prototype.getMilliseconds ( )
2274 //
20.3.4.7 Date.prototype.getMinutes ( )
2275 //
20.3.4.8 Date.prototype.getMonth ( )
2276 //
20.3.4.9 Date.prototype.getSeconds ( )
2277 //
20.3.4.10 Date.prototype.getTime ( )
2278 //
20.3.4.11 Date.prototype.getTimezoneOffset ( )
2279 //
20.3.4.12 Date.prototype.getUTCDate ( )
2280 //
20.3.4.13 Date.prototype.getUTCDay ( )
2281 //
20.3.4.14 Date.prototype.getUTCFullYear ( )
2282 //
20.3.4.15 Date.prototype.getUTCHours ( )
2283 //
20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2284 //
20.3.4.17 Date.prototype.getUTCMinutes ( )
2285 //
20.3.4.18 Date.prototype.getUTCMonth ( )
2286 //
20.3.4.19 Date.prototype.getUTCSeconds ( )
2287 //
20.3.4.20 Date.prototype.setDate ( date )
2288 //
20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2289 //
20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2290 //
20.3.4.23 Date.prototype.setMilliseconds ( ms )
2291 //
20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2292 //
20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2293 //
20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2294 //
20.3.4.27 Date.prototype.setTime ( time )
2295 //
20.3.4.28 Date.prototype.setUTCDate ( date )
2296 //
20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2297 //
20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2298 //
20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2299 //
20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2300 //
20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2301 //
20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2302 //
20.3.4.35 Date.prototype.toDateString ( )
2303 //
20.3.4.36 Date.prototype.toISOString ( )
2304 //
20.3.4.37 Date.prototype.toJSON ( key )
2305 //
20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2306 //
20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2307 //
20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2308 //
20.3.4.41 Date.prototype.toString ( )
2309 //
20.3.4.42 Date.prototype.toTimeString ( )
2310 //
20.3.4.43 Date.prototype.toUTCString ( )
2311 //
20.3.4.44 Date.prototype.valueOf ( )
2312 //
20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2313 //
20.3.5 Properties of Date Instances
2315 // (No polyfillable changes from ES5)
2317 // ---------------------------------------
2318 //
21 Text Processing
2319 // ---------------------------------------
2321 var string_regexp_dispatch = (function() {
2322 var faux = {}, secret = Symbol();
2323 faux[Symbol.match] = function() { return secret; };
2324 return (
"").match(faux) === secret;
2327 //
21.1 String Objects
2328 //
21.1.1 The String Constructor
2329 //
21.1.1.1 String ( value )
2330 //
21.1.2 Properties of the String Constructor
2331 //
21.1.2.1 String.fromCharCode ( ...codeUnits )
2333 //
21.1.2.2 String.fromCodePoint ( ...codePoints )
2335 String, 'fromCodePoint',
2336 function fromCodePoint(/*...codePoints*/) {
2337 var codePoints = arguments,
2338 length = codePoints.length,
2341 while (nextIndex < length) {
2342 var next = codePoints[nextIndex];
2343 var nextCP = Number(next);
2344 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2345 nextCP <
0 || nextCP
> 0x10FFFF) {
2346 throw RangeError('Invalid code point ' + nextCP);
2348 if (nextCP <
0x10000) {
2349 elements.push(String.fromCharCode(nextCP));
2352 elements.push(String.fromCharCode((nextCP
>> 10) +
0xD800));
2353 elements.push(String.fromCharCode((nextCP %
0x400) +
0xDC00));
2357 return elements.join('');
2360 //
21.1.2.3 String.prototype
2362 //
21.1.2.4 String.raw ( template , ...substitutions )
2365 function raw(template /*, ...substitutions*/) {
2366 var substitutions = [].slice.call(arguments,
1);
2368 var cooked = Object(template);
2369 var rawValue = cooked['raw'];
2370 var raw = Object(rawValue);
2371 var len = raw['length'];
2372 var literalSegments = ToLength(len);
2373 if (literalSegments <=
0) return '';
2374 var stringElements = [];
2377 var next = raw[nextIndex];
2378 var nextSeg = String(next);
2379 stringElements.push(nextSeg);
2380 if (nextIndex +
1 === literalSegments)
2381 return stringElements.join('');
2382 next = substitutions[nextIndex];
2383 var nextSub = String(next);
2384 stringElements.push(nextSub);
2385 nextIndex = nextIndex +
1;
2389 // See https://githib.com/inexorabletash/uate for a more useful version.
2391 //
21.1.3 Properties of the String Prototype Object
2392 //
21.1.3.1 String.prototype.charAt ( pos )
2393 //
21.1.3.2 String.prototype.charCodeAt ( pos )
2395 //
21.1.3.3 String.prototype.codePointAt ( pos )
2397 String.prototype, 'codePointAt',
2398 function codePointAt(pos) {
2399 var o = strict(this);
2401 var position = ToInteger(pos);
2402 var size = s.length;
2403 if (position <
0 || position
>= size) return undefined;
2404 var first = s.charCodeAt(position);
2405 if (first <
0xD800 || first
> 0xDBFF || position +
1 === size) return first;
2406 var second = s.charCodeAt(position +
1);
2407 if (second <
0xDC00 || second
> 0xDFFF) return first;
2408 return ((first -
0xD800) *
1024) + (second -
0xDC00) +
0x10000;
2411 //
21.1.3.4 String.prototype.concat ( ...args )
2412 //
21.1.3.5 String.prototype.constructor
2414 //
21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2416 String.prototype, 'endsWith',
2417 function endsWith(searchString) {
2418 var endPosition = arguments[
1];
2420 var o = strict(this);
2422 var searchStr = String(searchString);
2424 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2425 var end = min(max(pos,
0), len);
2426 var searchLength = searchStr.length;
2427 var start = end - searchLength;
2428 if (start <
0) return false;
2429 if (s.substring(start, start + searchLength) === searchStr) return true;
2433 //
21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2435 String.prototype, 'includes',
2436 function includes(searchString) {
2437 var position = arguments[
1];
2439 var o = strict(this);
2441 var searchStr = String(searchString);
2442 var pos = ToInteger(position);
2444 var start = min(max(pos,
0), len);
2445 return s.indexOf(searchStr, start) !== -
1;
2448 //
21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2449 //
21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2450 //
21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2451 //
21.1.3.11 String.prototype.match ( regexp )
2453 String.prototype, 'match',
2454 function match(regexp) {
2455 var o = strict(this);
2457 if (HasProperty(regexp, $$match)) var rx = regexp;
2458 else rx = new RegExp(regexp);
2459 return rx[$$match](s);
2460 }, !string_regexp_dispatch);
2462 //
21.1.3.12 String.prototype.normalize ( [ form ] )
2464 // Not practical due to table sizes; if needed, pull in:
2465 // https://github.com/walling/unorm/
2467 //
21.1.3.13 String.prototype.repeat ( count )
2469 String.prototype, 'repeat',
2470 function repeat(count) {
2471 var o = strict(this);
2473 var n = ToInteger(count);
2474 if (n <
0) throw RangeError();
2475 if (n === Infinity) throw RangeError();
2476 var t = new Array(n +
1).join(s);
2480 //
21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2482 String.prototype, 'replace',
2483 function replace(searchValue, replaceValue) {
2484 var o = strict(this);
2485 if (HasProperty(searchValue, $$replace))
2486 return searchValue[$$replace](o, replaceValue);
2487 return orig_replace.call(o, searchValue, replaceValue);
2488 }, !string_regexp_dispatch);
2490 //
21.1.3.15 String.prototype.search ( regexp )
2492 String.prototype, 'search',
2493 function search(regexp) {
2494 var o = strict(this);
2495 var string = String(o);
2496 if (HasProperty(regexp, $$search)) var rx = regexp;
2497 else rx = new RegExp(regexp);
2498 return rx[$$search](string);
2499 }, !string_regexp_dispatch);
2501 //
21.1.3.16 String.prototype.slice ( start, end )
2502 //
21.1.3.17 String.prototype.split ( separator, limit )
2504 String.prototype, 'split',
2505 function split(separator, limit) {
2506 var o = strict(this);
2507 if (HasProperty(separator, $$split))
2508 return separator[$$split](o, limit);
2509 return orig_split.call(o, separator, limit);
2510 }, !string_regexp_dispatch);
2512 //
21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2514 String.prototype, 'startsWith',
2515 function startsWith(searchString) {
2516 var position = arguments[
1];
2518 var o = strict(this);
2520 var searchStr = String(searchString);
2521 var pos = ToInteger(position);
2523 var start = min(max(pos,
0), len);
2524 var searchLength = searchStr.length;
2525 if (searchLength + start
> len) return false;
2526 if (s.substring(start, start + searchLength) === searchStr) return true;
2530 //
21.1.3.19 String.prototype.substring ( start, end )
2531 //
21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2532 //
21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2533 //
21.1.3.22 String.prototype.toLowerCase ( )
2534 //
21.1.3.23 String.prototype.toString ( )
2535 //
21.1.3.24 String.prototype.toUpperCase ( )
2536 //
21.1.3.25 String.prototype.trim ( )
2537 //
21.1.3.26 String.prototype.valueOf ( )
2539 //
21.1.3.27 String.prototype [ @@iterator ]( )
2541 String.prototype, $$iterator,
2542 function entries() {
2543 return CreateStringIterator(this, 'value');
2546 //
21.1.4 Properties of String Instances
2549 //
21.1.5 String Iterator Objects
2551 function StringIterator() {}
2553 //
21.1.5.1 CreateStringIterator Abstract Operation
2554 function CreateStringIterator(string, kind) {
2555 var s = String(string);
2556 var iterator = new StringIterator;
2557 set_internal(iterator, '[[IteratedString]]', s);
2558 set_internal(iterator, '[[StringIteratorNextIndex]]',
0);
2559 set_internal(iterator, '[[StringIterationKind]]', kind);
2563 //
21.1.5.2 The %StringIteratorPrototype% Object
2564 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2565 StringIterator.prototype = $StringIteratorPrototype$;
2567 //
21.1.5.2.1 %StringIteratorPrototype%.next ( )
2569 $StringIteratorPrototype$, 'next',
2571 var o = ToObject(this);
2572 var s = String(o['[[IteratedString]]']),
2573 index = o['[[StringIteratorNextIndex]]'],
2576 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2577 return CreateIterResultObject(undefined, true);
2579 var cp = s.codePointAt(index);
2580 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp
> 0xFFFF ?
2 :
1));
2581 return CreateIterResultObject(String.fromCodePoint(cp), false);
2584 //
21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2585 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2587 //
21.1.5.3 Properties of String Iterator Instances
2589 // ---------------------------------------
2590 //
21.2 RegExp (Regular Expression) Objects
2591 // ---------------------------------------
2594 //
21.2.2 Pattern Semantics
2595 //
21.2.2.1 Notation
2597 //
21.2.2.3 Disjunction
2598 //
21.2.2.4 Alternative
2600 //
21.2.2.6 Assertion
2601 //
21.2.2.7 Quantifier
2603 //
21.2.2.9 AtomEscape
2604 //
21.2.2.10 CharacterEscape
2605 //
21.2.2.11 DecimalEscape
2606 //
21.2.2.12 CharacterClassEscape
2607 //
21.2.2.13 CharacterClass
2608 //
21.2.2.14 ClassRanges
2609 //
21.2.2.15 NonemptyClassRanges
2610 //
21.2.2.16 NonemptyClassRangesNoDash
2611 //
21.2.2.17 ClassAtom
2612 //
21.2.2.18 ClassAtomNoDash
2613 //
21.2.2.19 ClassEscape
2614 //
21.2.3 The RegExp Constructor
2615 //
21.2.3.1 RegExp ( pattern, flags )
2616 //
21.2.3.2 new RegExp( ...argumentsList )
2617 //
21.2.3.3 Abstract Operations for the RegExp Constructor
2618 //
21.2.4 Properties of the RegExp Constructor
2619 //
21.2.4.1 RegExp.prototype
2620 //
21.2.5 Properties of the RegExp Prototype Object
2621 //
21.2.5.1 RegExp.prototype.constructor
2622 //
21.2.5.2 RegExp.prototype.exec ( string )
2624 //
21.2.5.3 get RegExp.prototype.flags
2625 if (!('flags' in RegExp.prototype)) {
2626 Object.defineProperty(
2627 RegExp.prototype, 'flags', {
2629 var s = String(this);
2630 return s.substring(s.lastIndexOf('/') +
1);
2635 //
21.2.5.4 get RegExp.prototype.global
2636 //
21.2.5.5 get RegExp.prototype.ignoreCase
2638 //
21.2.5.6 RegExp.prototype [ @@match ] ( string )
2639 define(RegExp.prototype, $$match, function(string) {
2640 var o = strict(this);
2641 return orig_match.call(string, o);
2644 //
21.2.5.7 get RegExp.prototype.multiline
2646 //
21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2647 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2648 var o = strict(this);
2649 return orig_replace.call(string, o, replaceValue);
2652 //
21.2.5.9 RegExp.prototype [ @@search ] ( string )
2653 define(RegExp.prototype, $$search, function(string) {
2654 var o = strict(this);
2655 return orig_search.call(string, o);
2658 //
21.2.5.10 get RegExp.prototype.source
2660 //
21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2661 define(RegExp.prototype, $$split, function(string, limit) {
2662 var o = strict(this);
2663 return orig_split.call(string, o, limit);
2666 //
21.2.5.12 get RegExp.prototype.sticky
2667 //
21.2.5.13 RegExp.prototype.test( S )
2668 //
21.2.5.14 RegExp.prototype.toString ( )
2669 //
21.2.5.15 get RegExp.prototype.unicode
2671 //
21.2.6 Properties of RegExp Instances
2672 //
21.2.6.1 lastIndex
2674 // (No polyfillable changes from ES5)
2676 // ---------------------------------------
2677 //
22 Indexed Collections
2678 // ---------------------------------------
2680 // ---------------------------------------
2681 //
22.1 Array Objects
2682 // ---------------------------------------
2684 //
22.1.1 The Array Constructor
2685 //
22.1.1.1 Array ( )
2686 //
22.1.1.2 Array (len)
2687 //
22.1.1.3 Array (...items )
2689 //
22.1.2 Properties of the Array Constructor
2691 //
22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2694 function from(items) {
2695 var mapfn = arguments[
1];
2696 var thisArg = arguments[
2];
2698 var c = strict(this);
2699 if (mapfn === undefined) {
2700 var mapping = false;
2702 if (!IsCallable(mapfn)) throw TypeError();
2706 var usingIterator = GetMethod(items, $$iterator);
2707 if (usingIterator !== undefined) {
2708 if (IsConstructor(c)) {
2713 var iterator = GetIterator(items, usingIterator);
2716 var next = IteratorStep(iterator);
2717 if (next === false) {
2721 var nextValue = IteratorValue(next);
2723 var mappedValue = mapfn.call(t, nextValue);
2725 mappedValue = nextValue;
2730 var arrayLike = ToObject(items);
2731 var lenValue = arrayLike.length;
2732 var len = ToLength(lenValue);
2733 if (IsConstructor(c)) {
2740 var kValue = arrayLike[k];
2742 mappedValue = mapfn.call(t, kValue, k);
2744 mappedValue = kValue;
2752 //
22.1.2.2 Array.isArray ( arg )
2754 //
22.1.2.3 Array.of ( ...items )
2758 var items = arguments;
2760 var lenValue = items.length;
2761 var len = ToUint32(lenValue);
2762 var c = strict(this), a;
2763 if (IsConstructor(c)) {
2778 //
22.1.2.4 Array.prototype
2779 //
22.1.2.5 get Array [ @@species ]
2780 //
22.1.3 Properties of the Array Prototype Object
2781 //
22.1.3.1 Array.prototype.concat ( ...arguments )
2782 //
22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2783 //
22.1.3.2 Array.prototype.constructor
2784 //
22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2786 Array.prototype, 'copyWithin',
2787 function copyWithin(target, start/*, end*/) {
2788 var end = arguments[
2];
2790 var o = ToObject(this);
2791 var lenVal = o.length;
2792 var len = ToLength(lenVal);
2794 var relativeTarget = ToInteger(target);
2796 if (relativeTarget <
0)
2797 to = max(len + relativeTarget,
0);
2799 to = min(relativeTarget, len);
2800 var relativeStart = ToInteger(start);
2802 if (relativeStart <
0)
2803 from = max(len + relativeStart,
0);
2805 from = min(relativeStart, len);
2807 if (end === undefined)
2810 relativeEnd = ToInteger(end);
2812 if (relativeEnd <
0)
2813 final = max(len + relativeEnd,
0);
2815 final = min(relativeEnd, len);
2816 var count = min(final - from, len - to);
2818 if (from < to && to < from + count) {
2820 from = from + count -
1;
2821 to = to + count -
1;
2826 var fromKey = String(from);
2827 var toKey = String(to);
2828 var fromPresent = HasProperty(o, fromKey);
2830 var fromVal = o[fromKey];
2835 from = from + direction;
2836 to = to + direction;
2842 //
22.1.3.4 Array.prototype.entries ( )
2843 var nativeArrayIteratorMethods =
2844 ('entries' in Array.prototype && 'next' in [].entries());
2847 Array.prototype, 'entries',
2848 function entries() {
2849 return CreateArrayIterator(this, 'key+value');
2850 }, !nativeArrayIteratorMethods);
2852 //
22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2854 //
22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2856 Array.prototype, 'fill',
2857 function fill(value/*, start, end*/) {
2858 var start = arguments[
1],
2861 var o = ToObject(this);
2862 var lenVal = o.length;
2863 var len = ToLength(lenVal);
2865 var relativeStart = ToInteger(start);
2867 if (relativeStart <
0)
2868 k = max((len + relativeStart),
0);
2870 k = min(relativeStart, len);
2872 if (end === undefined)
2875 relativeEnd = ToInteger(end);
2877 if (relativeEnd <
0)
2878 final = max((len + relativeEnd),
0);
2880 final = min(relativeEnd, len);
2889 //
22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2891 //
22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2893 Array.prototype, 'find',
2894 function find(predicate) {
2895 var o = ToObject(this);
2896 var lenValue = o.length;
2897 var len = ToInteger(lenValue);
2898 if (!IsCallable(predicate)) throw TypeError();
2899 var t = arguments.length
> 1 ? arguments[
1] : undefined;
2903 var kPresent = HasProperty(o, pk);
2906 var testResult = predicate.call(t, kValue, k, o);
2907 if (Boolean(testResult)) {
2916 //
22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2918 Array.prototype, 'findIndex',
2919 function findIndex(predicate) {
2920 var o = ToObject(this);
2921 var lenValue = o.length;
2922 var len = ToLength(lenValue);
2923 if (!IsCallable(predicate)) throw TypeError();
2924 var t = arguments.length
> 1 ? arguments[
1] : undefined;
2928 var kPresent = HasProperty(o, pk);
2931 var testResult = predicate.call(t, kValue, k, o);
2932 if (Boolean(testResult)) {
2941 //
22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2942 //
22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2943 //
22.1.3.12 Array.prototype.join (separator)
2945 //
22.1.3.13 Array.prototype.keys ( )
2947 Array.prototype, 'keys',
2949 return CreateArrayIterator(this, 'key');
2950 }, !nativeArrayIteratorMethods);
2952 //
22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2953 //
22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2954 //
22.1.3.16 Array.prototype.pop ( )
2955 //
22.1.3.17 Array.prototype.push ( ...items )
2956 //
22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2957 //
22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2958 //
22.1.3.20 Array.prototype.reverse ( )
2959 //
22.1.3.21 Array.prototype.shift ( )
2960 //
22.1.3.22 Array.prototype.slice (start, end)
2961 //
22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2962 //
22.1.3.24 Array.prototype.sort (comparefn)
2963 //
22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2964 //
22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2965 //
22.1.3.27 Array.prototype.toString ( )
2966 //
22.1.3.28 Array.prototype.unshift ( ...items )
2968 //
22.1.3.29 Array.prototype.values ( )
2970 Array.prototype, 'values',
2972 return CreateArrayIterator(this, 'value');
2973 }, !nativeArrayIteratorMethods);
2975 //
22.1.3.30 Array.prototype [ @@iterator ] ( )
2977 Array.prototype, $$iterator,
2978 Array.prototype.values
2981 //
22.1.3.31 Array.prototype [ @@unscopables ]
2982 //
22.1.4 Properties of Array Instances
2985 //
22.1.5 Array Iterator Objects
2986 function ArrayIterator() {}
2988 //
22.1.5.1 CreateArrayIterator Abstract Operation
2989 function CreateArrayIterator(array, kind) {
2990 var o = ToObject(array);
2991 var iterator = new ArrayIterator;
2992 set_internal(iterator, '[[IteratedObject]]', o);
2993 set_internal(iterator, '[[ArrayIteratorNextIndex]]',
0);
2994 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2998 //
22.1.5.2 The %ArrayIteratorPrototype% Object
2999 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
3000 ArrayIterator.prototype = $ArrayIteratorPrototype$;
3002 //
22.1.5.2.1 %ArrayIteratorPrototype%. next( )
3004 $ArrayIteratorPrototype$, 'next',
3006 var o = strict(this);
3007 if (Type(o) !== 'object') throw TypeError();
3008 var a = o['[[IteratedObject]]'],
3009 index = o['[[ArrayIteratorNextIndex]]'],
3010 itemKind = o['[[ArrayIterationKind]]'],
3011 lenValue = a.length,
3012 len = ToUint32(lenValue),
3015 if (itemKind.indexOf('sparse') !== -
1) {
3017 while (!found && index < len) {
3018 elementKey = String(index);
3019 found = HasProperty(a, elementKey);
3026 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
3027 return CreateIterResultObject(undefined, true);
3030 set_internal(o, '[[ArrayIteratorNextIndex]]', index +
1);
3031 if (itemKind.indexOf('value') !== -
1)
3032 elementValue = a[elementKey];
3033 if (itemKind.indexOf('key+value') !== -
1)
3034 return CreateIterResultObject([elementKey, elementValue], false);
3035 if (itemKind.indexOf('key') !== -
1)
3036 return CreateIterResultObject(elementKey, false);
3037 if (itemKind === 'value')
3038 return CreateIterResultObject(elementValue, false);
3039 throw Error('Internal error');
3042 //
22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
3043 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
3045 //
22.1.5.3 Properties of Array Iterator Instances
3048 // ---------------------------------------
3049 //
22.2 TypedArray Objects
3050 // ---------------------------------------
3052 // See typedarray.js for TypedArray polyfill
3054 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
3055 'Int16Array', 'Uint16Array',
3056 'Int32Array', 'Uint32Array',
3057 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
3058 if (!($TypedArrayName$ in global))
3060 var $TypedArray$ = global[$TypedArrayName$];
3062 //
22.2.1 The %TypedArray% Intrinsic Object
3063 //
22.2.1.1 %TypedArray% ( length )
3064 //
22.2.1.2 %TypedArray% ( typedArray )
3065 //
22.2.1.3 %TypedArray% ( object )
3066 //
22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
3067 //
22.2.1.5 %TypedArray% ( all other argument combinations )
3068 //
22.2.2 Properties of the %TypedArray% Intrinsic Object
3070 //
22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
3072 $TypedArray$, 'from',
3073 function from(source) {
3074 var mapfn = arguments[
1];
3075 var thisArg = arguments[
2];
3077 var c = strict(this);
3078 if (!IsConstructor(c)) throw TypeError();
3079 if (mapfn === undefined) {
3080 var mapping = false;
3082 if (IsCallable(mapfn)) throw TypeError();
3086 var usingIterator = GetMethod(source, $$iterator);
3087 if (usingIterator !== undefined) {
3088 var iterator = GetIterator(source, usingIterator);
3091 while (next !== false) {
3092 next = IteratorStep(iterator);
3093 if (next !== false) {
3094 var nextValue = IteratorValue(next);
3095 values.push(nextValue);
3098 var len = values.length;
3099 var newObj = new c(len);
3102 var kValue = values.shift();
3104 var mappedValue = mapfn.call(t, kValue);
3106 mappedValue = kValue;
3108 newObj[k] = mappedValue;
3111 console.assert(values.length ===
0);
3114 var arrayLike = ToObject(source);
3115 var lenValue = arrayLike.length;
3116 len = ToLength(lenValue);
3117 newObj = new c(len);
3120 kValue = arrayLike[k];
3122 mappedValue = mapfn.call(t, kValue, k);
3124 mappedValue = kValue;
3126 newObj[k] = mappedValue;
3132 //
22.2.2.2 %TypedArray%.of ( ...items )
3136 var items = arguments;
3138 var len = items.length;
3139 var c = strict(this);
3140 var newObj = new c(len);
3143 newObj[k] = items[k];
3149 //
22.2.2.3 %TypedArray%.prototype
3150 //
22.2.2.4 get %TypedArray% [ @@species ]
3151 //
22.2.3 Properties of the %TypedArrayPrototype% Object
3152 //
22.2.3.1 get %TypedArray%.prototype.buffer
3153 //
22.2.3.2 get %TypedArray%.prototype.byteLength
3154 //
22.2.3.3 get %TypedArray%.prototype.byteOffset
3155 //
22.2.3.4 %TypedArray%.prototype.constructor
3157 //
22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
3158 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
3160 //
22.2.3.6 %TypedArray%.prototype.entries ( )
3161 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
3163 //
22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
3164 define($TypedArray$.prototype, 'every', Array.prototype.every);
3166 //
22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
3168 $TypedArray$.prototype, 'fill',
3169 //Array.prototype.fill // Doesn't work in Safari
7
3170 function fill(value/*, start, end*/) {
3171 var start = arguments[
1],
3174 var o = ToObject(this);
3175 var lenVal = o.length;
3176 var len = ToLength(lenVal);
3178 var relativeStart = ToInteger(start);
3180 if (relativeStart <
0) k = max((len + relativeStart),
0);
3181 else k = min(relativeStart, len);
3183 if (end === undefined) relativeEnd = len;
3184 else relativeEnd = ToInteger(end);
3186 if (relativeEnd <
0) final = max((len + relativeEnd),
0);
3187 else final = min(relativeEnd, len);
3196 //
22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
3198 $TypedArray$.prototype, 'filter',
3199 function filter(callbackfn) {
3200 var thisArg = arguments[
1];
3202 var o = ToObject(this);
3203 var lenVal = o.length;
3204 var len = ToLength(lenVal);
3205 if (!IsCallable(callbackfn)) throw TypeError();
3207 var c = o.constructor;
3213 var selected = callbackfn.call(t, kValue, k, o);
3220 var a = new c(captured);
3222 for (var i =
0; i < kept.length; ++i) {
3230 //
22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3231 define($TypedArray$.prototype, 'find', Array.prototype.find);
3233 //
22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3234 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3236 //
22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3237 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3239 //
22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3240 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3242 //
22.2.3.14 %TypedArray%.prototype.join ( separator )
3243 define($TypedArray$.prototype, 'join', Array.prototype.join);
3245 //
22.2.3.15 %TypedArray%.prototype.keys ( )
3246 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3248 //
22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3249 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3251 //
22.2.3.17 get %TypedArray%.prototype.length
3253 //
22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3255 $TypedArray$.prototype, 'map',
3256 function map(callbackfn) {
3257 var thisArg = arguments[
1];
3259 var o = ToObject(this);
3260 var lenValue = o.length;
3261 var len = ToLength(lenValue);
3262 if (!IsCallable(callbackfn)) throw TypeError();
3265 var c = o.constructor;
3266 if (IsConstructor(c))
3268 if (a === undefined)
3272 var kPresent = HasProperty(o, k);
3275 var mappedValue = callbackfn.call(t, kValue, k, o);
3283 //
22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3284 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3286 //
22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3287 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3289 //
22.2.3.21 %TypedArray%.prototype.reverse ( )
3290 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3292 //
22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3293 //
22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3294 //
22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3296 //
22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3298 $TypedArray$.prototype, 'slice',
3299 function slice(start, end) {
3300 var o = ToObject(this);
3301 var lenVal = o.length;
3302 var len = ToLength(lenVal);
3303 var relativeStart = ToInteger(start);
3304 var k = (relativeStart <
0) ? max(len + relativeStart,
0) : min(relativeStart, len);
3305 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3306 var final = (relativeEnd <
0) ? max(len + relativeEnd,
0) : min(relativeEnd, len);
3307 var count = final - k;
3308 var c = o.constructor;
3309 if (IsConstructor(c)) {
3310 var a = new c(count);
3324 //
22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3325 define($TypedArray$.prototype, 'some', Array.prototype.some);
3327 //
22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3329 $TypedArray$.prototype, 'sort',
3331 var comparefn = arguments[
0];
3333 function sortCompare(x, y) {
3334 console.assert(Type(x) === 'number' && Type(y) === 'number');
3335 if (x !== x && y !== y) return +
0;
3336 if (x !== x) return
1;
3337 if (y !== y) return -
1;
3338 if (comparefn !== undefined) {
3339 return comparefn(x, y);
3341 if (x < y) return -
1;
3342 if (x
> y) return
1;
3345 return Array.prototype.sort.call(this, sortCompare);
3348 //
22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3349 //
22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3350 //
22.2.3.28 %TypedArray%.prototype.toString ( )
3352 //
22.2.3.29 %TypedArray%.prototype.values ( )
3353 define($TypedArray$.prototype, 'values', Array.prototype.values);
3355 //
22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3357 $TypedArray$.prototype, $$iterator,
3358 $TypedArray$.prototype.values
3361 //
22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3362 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3364 //
22.2.4 The TypedArray Constructors
3365 //
22.2.4.1TypedArray( ... argumentsList)
3366 //
22.2.5 Properties of the TypedArray Constructors
3367 //
22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3368 //
22.2.5.2 TypedArray.prototype
3369 //
22.2.6 Properties of TypedArray Prototype Objects
3370 //
22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3371 //
22.2.6.2 TypedArray.prototype.constructor
3372 //
22.2.7 Properties of TypedArray Instances
3375 // ---------------------------------------
3376 //
23 Keyed Collection
3377 // ---------------------------------------
3379 // ---------------------------------------
3381 // ---------------------------------------
3384 //
23.1.1 The Map Constructor
3386 //
23.1.1.1 Map ( [ iterable ] )
3388 function Map(/*iterable*/) {
3389 var map = strict(this);
3390 var iterable = arguments[
0];
3392 if (Type(map) !== 'object') throw TypeError();
3393 if ('[[MapData]]' in map) throw TypeError();
3395 if (iterable !== undefined) {
3396 var adder = map['set'];
3397 if (!IsCallable(adder)) throw TypeError();
3398 var iter = GetIterator(ToObject(iterable));
3400 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3401 if (iter === undefined) return map;
3403 var next = IteratorStep(iter);
3406 var nextItem = IteratorValue(next);
3407 if (Type(nextItem) !== 'object') throw TypeError();
3408 var k = nextItem[
0];
3409 var v = nextItem[
1];
3410 adder.call(map, k, v);
3416 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3417 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3418 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3419 (new global.Map([['a',
1]]).size !==
1))
3423 function MapDataIndexOf(mapData, key) {
3425 if (key === key) return mapData.keys.indexOf(key);
3426 // Slow case for NaN
3427 for (i =
0; i < mapData.keys.length; i +=
1)
3428 if (SameValueZero(mapData.keys[i], key)) return i;
3432 //
23.1.1.2 new Map ( ... argumentsList )
3433 //
23.1.2 Properties of the Map Constructor
3434 //
23.1.2.1 Map.prototype
3435 var $MapPrototype$ = {};
3436 Map.prototype = $MapPrototype$;
3438 //
23.1.2.2 get Map [ @@species ]
3440 //
23.1.3 Properties of the Map Prototype Object
3441 //
23.1.3.1 Map.prototype.clear ()
3443 Map.prototype, 'clear',
3445 var m = strict(this);
3446 if (Type(m) !== 'object') throw TypeError();
3447 if (!('[[MapData]]' in m)) throw TypeError();
3448 if (m['[[MapData]]'] === undefined) throw TypeError();
3449 var entries = m['[[MapData]]'];
3450 entries.keys.length =
0;
3451 entries.values.length =
0;
3455 //
23.1.3.2 Map.prototype.constructor
3457 //
23.1.3.3 Map.prototype.delete ( key )
3459 Map.prototype, 'delete',
3460 function delete_(key) {
3461 var m = strict(this);
3462 if (Type(m) !== 'object') throw TypeError();
3463 if (!('[[MapData]]' in m)) throw TypeError();
3464 if (m['[[MapData]]'] === undefined) throw TypeError();
3465 var entries = m['[[MapData]]'];
3466 var i = MapDataIndexOf(entries, key);
3467 if (i <
0) return false;
3468 entries.keys[i] = empty;
3469 entries.values[i] = empty;
3473 //
23.1.3.4 Map.prototype.entries ( )
3475 Map.prototype, 'entries',
3476 function entries() {
3477 var m = strict(this);
3478 if (Type(m) !== 'object') throw TypeError();
3479 return CreateMapIterator(m, 'key+value');
3482 //
23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3484 Map.prototype, 'forEach',
3485 function forEach(callbackfn /*, thisArg*/) {
3486 var thisArg = arguments[
1];
3488 var m = strict(this);
3489 if (Type(m) !== 'object') throw TypeError();
3490 if (!('[[MapData]]' in m)) throw TypeError();
3491 if (m['[[MapData]]'] === undefined) throw TypeError();
3492 var entries = m['[[MapData]]'];
3494 if (!IsCallable(callbackfn)) {
3495 throw TypeError('First argument to forEach is not callable.');
3497 for (var i =
0; i < entries.keys.length; ++i) {
3498 if (entries.keys[i] !== empty) {
3499 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3505 //
23.1.3.6 Map.prototype.get ( key )
3507 Map.prototype, 'get',
3509 var m = strict(this);
3510 if (Type(m) !== 'object') throw TypeError();
3511 if (!('[[MapData]]' in m)) throw TypeError();
3512 if (m['[[MapData]]'] === undefined) throw TypeError();
3513 var entries = m['[[MapData]]'];
3514 var i = MapDataIndexOf(entries, key);
3515 if (i
>=
0) return entries.values[i];
3519 //
23.1.3.7 Map.prototype.has ( key )
3521 Map.prototype, 'has',
3523 var m = strict(this);
3524 if (Type(m) !== 'object') throw TypeError();
3525 if (!('[[MapData]]' in m)) throw TypeError();
3526 if (m['[[MapData]]'] === undefined) throw TypeError();
3527 var entries = m['[[MapData]]'];
3528 if (MapDataIndexOf(entries, key)
>=
0) return true;
3532 //
23.1.3.8 Map.prototype.keys ( )
3534 Map.prototype, 'keys',
3536 var m = strict(this);
3537 if (Type(m) !== 'object') throw TypeError();
3538 return CreateMapIterator(m, 'key');
3541 //
23.1.3.9 Map.prototype.set ( key , value )
3543 Map.prototype, 'set',
3544 function set(key, value) {
3545 var m = strict(this);
3546 if (Type(m) !== 'object') throw TypeError();
3547 if (!('[[MapData]]' in m)) throw TypeError();
3548 if (m['[[MapData]]'] === undefined) throw TypeError();
3549 var entries = m['[[MapData]]'];
3550 var i = MapDataIndexOf(entries, key);
3551 if (i <
0) i = entries.keys.length;
3552 if (SameValue(key, -
0)) key =
0;
3553 entries.keys[i] = key;
3554 entries.values[i] = value;
3558 //
23.1.3.10 get Map.prototype.size
3559 Object.defineProperty(
3560 Map.prototype, 'size', {
3562 var m = strict(this);
3563 if (Type(m) !== 'object') throw TypeError();
3564 if (!('[[MapData]]' in m)) throw TypeError();
3565 if (m['[[MapData]]'] === undefined) throw TypeError();
3566 var entries = m['[[MapData]]'];
3568 for (var i =
0; i < entries.keys.length; ++i) {
3569 if (entries.keys[i] !== empty)
3576 //
23.1.3.11 Map.prototype.values ( )
3578 Map.prototype, 'values',
3580 var m = strict(this);
3581 if (Type(m) !== 'object') throw TypeError();
3582 return CreateMapIterator(m, 'value');
3585 //
23.1.3.12 Map.prototype [ @@iterator ]( )
3587 Map.prototype, $$iterator,
3589 var m = strict(this);
3590 if (Type(m) !== 'object') throw TypeError();
3591 return CreateMapIterator(m, 'key+value');
3594 //
23.1.3.13 Map.prototype [ @@toStringTag ]
3595 define(global.Map.prototype, $$toStringTag, 'Map');
3597 //
23.1.4 Properties of Map Instances
3598 //
23.1.5 Map Iterator Objects
3601 function MapIterator() {}
3603 //
23.1.5.1 CreateMapIterator Abstract Operation
3604 function CreateMapIterator(map, kind) {
3605 if (Type(map) !== 'object') throw TypeError();
3606 if (!('[[MapData]]' in map)) throw TypeError();
3607 if (map['[[MapData]]'] === undefined) throw TypeError();
3608 var iterator = new MapIterator;
3609 set_internal(iterator, '[[Map]]', map);
3610 set_internal(iterator, '[[MapNextIndex]]',
0);
3611 set_internal(iterator, '[[MapIterationKind]]', kind);
3615 //
23.1.5.2 The %MapIteratorPrototype% Object
3616 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3617 MapIterator.prototype = $MapIteratorPrototype$;
3619 //
23.1.5.2.1 %MapIteratorPrototype%.next ( )
3621 $MapIteratorPrototype$, 'next',
3623 var o = strict(this);
3624 if (Type(o) !== 'object') throw TypeError();
3625 var m = o['[[Map]]'],
3626 index = o['[[MapNextIndex]]'],
3627 itemKind = o['[[MapIterationKind]]'],
3628 entries = m['[[MapData]]'];
3629 while (index < entries.keys.length) {
3630 var e = {key: entries.keys[index], value: entries.values[index]};
3632 set_internal(o, '[[MapNextIndex]]', index);
3633 if (e.key !== empty) {
3634 if (itemKind === 'key') {
3635 return CreateIterResultObject(e.key, false);
3636 } else if (itemKind === 'value') {
3637 return CreateIterResultObject(e.value, false);
3639 return CreateIterResultObject([e.key, e.value], false);
3643 return CreateIterResultObject(undefined, true);
3646 //
23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3647 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3649 //
23.1.5.3 Properties of Map Iterator Instances
3652 // ---------------------------------------
3654 // ---------------------------------------
3657 //
23.2.1 The Set Constructor
3658 //
23.2.1.1 Set ( [ iterable ] )
3661 function Set(/*iterable*/) {
3662 var set = strict(this);
3663 var iterable = arguments[
0];
3665 if (Type(set) !== 'object') throw TypeError();
3666 if ('[[SetData]]' in set) throw TypeError();
3668 if (iterable !== undefined) {
3669 var adder = set['add'];
3670 if (!IsCallable(adder)) throw TypeError();
3671 var iter = GetIterator(ToObject(iterable));
3673 set_internal(set, '[[SetData]]', []);
3674 if (iter === undefined) return set;
3676 var next = IteratorStep(iter);
3679 var nextValue = IteratorValue(next);
3680 adder.call(set, nextValue);
3686 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3687 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3688 (new global.Set([
1]).size !==
1))
3691 function SetDataIndexOf(setData, key) {
3694 return setData.indexOf(key);
3695 // Slow case for NaN
3696 for (i =
0; i < setData.length; i +=
1)
3697 if (SameValueZero(setData[i], key)) return i;
3701 //
23.2.1.2 new Set ( ...argumentsList )
3702 //
23.2.2 Properties of the Set Constructor
3704 //
23.2.2.1 Set.prototype
3705 var $SetPrototype$ = {};
3706 Set.prototype = $SetPrototype$;
3708 //
23.2.2.2 get Set [ @@species ]
3709 //
23.2.3 Properties of the Set Prototype Object
3711 //
23.2.3.1 Set.prototype.add (value )
3713 Set.prototype, 'add',
3714 function add(value) {
3715 var s = strict(this);
3716 if (Type(s) !== 'object') throw TypeError();
3717 if (!('[[SetData]]' in s)) throw TypeError();
3718 if (s['[[SetData]]'] === undefined) throw TypeError();
3719 if (SameValue(value, -
0)) value =
0;
3720 var entries = s['[[SetData]]'];
3721 var i = SetDataIndexOf(entries, value);
3722 if (i <
0) i = s['[[SetData]]'].length;
3723 s['[[SetData]]'][i] = value;
3728 //
23.2.3.2 Set.prototype.clear ()
3730 Set.prototype, 'clear',
3732 var s = strict(this);
3733 if (Type(s) !== 'object') throw TypeError();
3734 if (!('[[SetData]]' in s)) throw TypeError();
3735 if (s['[[SetData]]'] === undefined) throw TypeError();
3736 var entries = s['[[SetData]]'];
3741 //
23.2.3.3 Set.prototype.constructor
3742 //
23.2.3.4 Set.prototype.delete ( value )
3744 Set.prototype, 'delete',
3745 function delete_(value) {
3746 var s = strict(this);
3747 if (Type(s) !== 'object') throw TypeError();
3748 if (!('[[SetData]]' in s)) throw TypeError();
3749 if (s['[[SetData]]'] === undefined) throw TypeError();
3750 var entries = s['[[SetData]]'];
3751 var i = SetDataIndexOf(entries, value);
3752 if (i <
0) return false;
3757 //
23.2.3.5 Set.prototype.entries ( )
3759 Set.prototype, 'entries',
3760 function entries() {
3761 var s = strict(this);
3762 if (Type(s) !== 'object') throw TypeError();
3763 return CreateSetIterator(s, 'key+value');
3766 //
23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3768 Set.prototype, 'forEach',
3769 function forEach(callbackfn/*, thisArg*/) {
3770 var thisArg = arguments[
1];
3772 var s = strict(this);
3773 if (Type(s) !== 'object') throw TypeError();
3774 if (!('[[SetData]]' in s)) throw TypeError();
3775 if (s['[[SetData]]'] === undefined) throw TypeError();
3776 var entries = s['[[SetData]]'];
3778 if (!IsCallable(callbackfn)) {
3779 throw TypeError('First argument to forEach is not callable.');
3781 for (var i =
0; i < entries.length; ++i) {
3782 if (entries[i] !== empty) {
3783 callbackfn.call(thisArg, entries[i], entries[i], s);
3788 //
23.2.3.7 Set.prototype.has ( value )
3790 Set.prototype, 'has',
3792 var s = strict(this);
3793 if (Type(s) !== 'object') throw TypeError();
3794 if (!('[[SetData]]' in s)) throw TypeError();
3795 if (s['[[SetData]]'] === undefined) throw TypeError();
3796 var entries = s['[[SetData]]'];
3797 return SetDataIndexOf(entries, key) !== -
1;
3800 //
23.2.3.8 Set.prototype.keys ( )
3801 // See Set.prototype.values
3803 //
23.2.3.9 get Set.prototype.size
3804 Object.defineProperty(
3805 Set.prototype, 'size', {
3807 var s = strict(this);
3808 if (Type(s) !== 'object') throw TypeError();
3809 if (!('[[SetData]]' in s)) throw TypeError();
3810 if (s['[[SetData]]'] === undefined) throw TypeError();
3811 var entries = s['[[SetData]]'];
3813 for (var i =
0; i < entries.length; ++i) {
3814 if (entries[i] !== empty)
3821 //
23.2.3.10 Set.prototype.values ( )
3823 Set.prototype, 'values',
3825 var s = strict(this);
3826 if (Type(s) !== 'object') throw TypeError();
3827 return CreateSetIterator(s, 'value');
3829 // NOTE: function name is still 'values':
3830 Set.prototype.keys = Set.prototype.values;
3832 //
23.2.3.11 Set.prototype [@@iterator ] ( )
3834 Set.prototype, $$iterator,
3836 var s = strict(this);
3837 if (Type(s) !== 'object') throw TypeError();
3838 return CreateSetIterator(s);
3841 //
23.2.3.12 Set.prototype [ @@toStringTag ]
3842 define(global.Set.prototype, $$toStringTag, 'Set');
3844 //
23.2.4 Properties of Set Instances
3845 //
23.2.5 Set Iterator Objects
3847 function SetIterator() {}
3849 //
23.2.5.1 CreateSetIterator Abstract Operation
3850 function CreateSetIterator(set, kind) {
3851 if (Type(set) !== 'object') throw TypeError();
3852 if (!('[[SetData]]' in set)) throw TypeError();
3853 if (set['[[SetData]]'] === undefined) throw TypeError();
3854 var iterator = new SetIterator;
3855 set_internal(iterator, '[[IteratedSet]]', set);
3856 set_internal(iterator, '[[SetNextIndex]]',
0);
3857 set_internal(iterator, '[[SetIterationKind]]', kind);
3861 //
23.2.5.2 The %SetIteratorPrototype% Object
3862 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3863 SetIterator.prototype = $SetIteratorPrototype$;
3865 //
23.2.5.2.1 %SetIteratorPrototype%.next( )
3867 $SetIteratorPrototype$, 'next',
3869 var o = strict(this);
3870 if (Type(o) !== 'object') throw TypeError();
3871 var s = o['[[IteratedSet]]'],
3872 index = o['[[SetNextIndex]]'],
3873 itemKind = o['[[SetIterationKind]]'],
3874 entries = s['[[SetData]]'];
3875 while (index < entries.length) {
3876 var e = entries[index];
3878 set_internal(o, '[[SetNextIndex]]', index);
3880 if (itemKind === 'key+value')
3881 return CreateIterResultObject([e, e], false);
3882 return CreateIterResultObject(e, false);
3885 return CreateIterResultObject(undefined, true);
3888 //
23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3889 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3891 //
23.2.5.3 Properties of Set Iterator Instances
3895 // ---------------------------------------
3896 //
23.3 WeakMap Objects
3897 // ---------------------------------------
3900 //
23.3.1 The WeakMap Constructor
3901 //
23.3.1.1 WeakMap ( [ iterable ] )
3903 function WeakMap(/*iterable*/) {
3904 var map = strict(this);
3905 var iterable = arguments[
0];
3907 if (Type(map) !== 'object') throw TypeError();
3908 if ('[[WeakMapData]]' in map) throw TypeError();
3910 if (iterable !== undefined) {
3911 var adder = map['set'];
3912 if (!IsCallable(adder)) throw TypeError();
3913 var iter = GetIterator(ToObject(iterable));
3915 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3916 if (iter === undefined) return map;
3918 var next = IteratorStep(iter);
3921 var nextValue = IteratorValue(next);
3922 if (Type(nextValue) !== 'object') throw TypeError();
3923 var k = nextValue[
0];
3924 var v = nextValue[
1];
3925 adder.call(map, k, v);
3931 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3932 global.WeakMap = WeakMap;
3934 //
23.3.2 Properties of the WeakMap Constructor
3935 //
23.3.2.1 WeakMap.prototype
3936 var $WeakMapPrototype$ = {};
3937 WeakMap.prototype = $WeakMapPrototype$;
3941 //
23.3.2.2 WeakMap[ @@create ] ( )
3942 //
23.3.3 Properties of the WeakMap Prototype Object
3944 //
23.3.3.1 WeakMap.prototype.constructor
3946 //
23.3.3.2 WeakMap.prototype.delete ( key )
3948 WeakMap.prototype, 'delete',
3949 function delete_(key) {
3950 var M = strict(this);
3951 if (Type(M) !== 'object') throw TypeError();
3952 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3953 if (Type(key) !== 'object') throw TypeError('Expected object');
3954 return M['[[WeakMapData]]'].remove(key);
3957 //
23.3.3.3 WeakMap.prototype.get ( key )
3959 WeakMap.prototype, 'get',
3960 function get(key, defaultValue) {
3961 var M = strict(this);
3962 if (Type(M) !== 'object') throw TypeError();
3963 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3964 if (Type(key) !== 'object') throw TypeError('Expected object');
3965 return M['[[WeakMapData]]'].get(key, defaultValue);
3968 //
23.3.3.4 WeakMap.prototype.has ( key )
3970 WeakMap.prototype, 'has',
3972 var M = strict(this);
3973 if (Type(M) !== 'object') throw TypeError();
3974 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3975 if (Type(key) !== 'object') throw TypeError('Expected object');
3976 return M['[[WeakMapData]]'].has(key);
3979 //
23.3.3.5 WeakMap.prototype.set ( key , value )
3981 WeakMap.prototype, 'set',
3982 function set(key, value) {
3983 var M = strict(this);
3984 if (Type(M) !== 'object') throw TypeError();
3985 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3986 if (Type(key) !== 'object') throw TypeError('Expected object');
3987 M['[[WeakMapData]]'].set(key, value);
3991 //
23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3992 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3994 //
23.3.4 Properties of WeakMap Instances
3996 // Polyfills for incomplete native implementations:
3998 var wm = new global.WeakMap();
3999 var orig = global.WeakMap.prototype.set;
4000 define(global.WeakMap.prototype, 'set', function set() {
4001 orig.apply(this, arguments);
4003 }, wm.set({},
0) !== wm);
4007 // ---------------------------------------
4008 //
23.4 WeakSet Objects
4009 // ---------------------------------------
4012 //
23.4.1 The WeakSet Constructor
4013 //
23.4.1.1 WeakSet ( [ iterable ] )
4015 function WeakSet(/*iterable*/) {
4016 var set = strict(this);
4017 var iterable = arguments[
0];
4019 if (Type(set) !== 'object') throw TypeError();
4020 if ('[[WeakSetData]]' in set) throw TypeError();
4022 if (iterable !== undefined) {
4023 var adder = set['add'];
4024 if (!IsCallable(adder)) throw TypeError();
4025 var iter = GetIterator(ToObject(iterable));
4027 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
4028 if (iter === undefined) return set;
4030 var next = IteratorStep(iter);
4033 var nextValue = IteratorValue(next);
4034 adder.call(set, nextValue);
4040 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4041 global.WeakSet = WeakSet;
4043 //
23.4.2 Properties of the WeakSet Constructor
4044 //
23.4.2.1 WeakSet.prototype
4045 var $WeakSetPrototype$ = {};
4046 WeakSet.prototype = $WeakSetPrototype$;
4048 //
23.4.3 Properties of the WeakSet Prototype Object
4049 //
23.4.3.1 WeakSet.prototype.add (value )
4051 WeakSet.prototype, 'add',
4052 function add(value) {
4053 var S = strict(this);
4054 if (Type(S) !== 'object') throw TypeError();
4055 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
4056 if (Type(value) !== 'object') throw TypeError('Expected object');
4057 S['[[WeakSetData]]'].set(value, true);
4061 //
23.4.3.2 WeakSet.prototype.constructor
4062 //
23.4.3.3 WeakSet.prototype.delete ( value )
4064 WeakSet.prototype, 'delete',
4065 function delete_(value) {
4066 var S = strict(this);
4067 if (Type(S) !== 'object') throw TypeError();
4068 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
4069 if (Type(value) !== 'object') throw TypeError('Expected object');
4070 return S['[[WeakSetData]]'].remove(value);
4073 //
23.4.3.4 WeakSet.prototype.has ( value )
4075 WeakSet.prototype, 'has',
4077 var S = strict(this);
4078 if (Type(S) !== 'object') throw TypeError();
4079 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
4080 if (Type(key) !== 'object') throw TypeError('Expected object');
4081 return S['[[WeakSetData]]'].has(key);
4084 //
23.4.3.5 WeakSet.prototype [ @@toStringTag ]
4085 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
4087 //
23.4.4 Properties of WeakSet Instances
4089 // Polyfills for incomplete native implementations:
4091 var ws = new global.WeakSet();
4092 var orig = global.WeakSet.prototype.add;
4093 define(global.WeakSet.prototype, 'add', function add() {
4094 orig.apply(this, arguments);
4096 }, ws.add({}) !== ws);
4100 // ---------------------------------------
4101 //
24 Structured Data
4102 // ---------------------------------------
4104 // ---------------------------------------
4105 //
24.1 ArrayBuffer Objects
4106 // ---------------------------------------
4108 // See typedarray.js for TypedArray polyfill
4111 if (!('ArrayBuffer' in global))
4114 //
24.1.1 Abstract Operations For ArrayBuffer Objects
4115 //
24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
4116 //
24.1.1.2 IsDetachedBuffer( arrayBuffer )
4117 //
24.1.1.3 DetachArrayBuffer( arrayBuffer )
4118 //
24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
4119 //
24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
4120 //
24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
4121 //
24.1.2 The ArrayBuffer Constructor
4122 //
24.1.2.1 ArrayBuffer( length )
4123 //
24.1.3 Properties of the ArrayBuffer Constructor
4125 //
24.1.3.1 ArrayBuffer.isView ( arg )
4127 ArrayBuffer, 'isView',
4128 function isView(arg) {
4129 if (Type(arg) !== 'object') return false;
4130 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
4134 //
24.1.3.2 ArrayBuffer.prototype
4135 //
24.1.3.3 get ArrayBuffer [ @@species ]
4136 //
24.1.4 Properties of the ArrayBuffer Prototype Object
4137 //
24.1.4.1 get ArrayBuffer.prototype.byteLength
4138 //
24.1.4.2 ArrayBuffer.prototype.constructor
4139 //
24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
4141 //
24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
4142 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
4144 //
24.1.5 Properties of the ArrayBuffer Instances
4147 // ---------------------------------------
4148 //
24.2 DataView Objects
4149 // ---------------------------------------
4151 // See typedarray.js for TypedArray polyfill
4154 if (!('DataView' in global))
4157 //
24.2.1 Abstract Operations For DataView Objects
4158 //
24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
4159 //
24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
4160 //
24.2.2 The DataView Constructor
4161 //
24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
4162 //
24.2.3 Properties of the DataView Constructor
4163 //
24.2.3.1 DataView.prototype
4164 //
24.2.4 Properties of the DataView Prototype Object
4165 //
24.2.4.1 get DataView.prototype.buffer
4166 //
24.2.4.2 get DataView.prototype.byteLength
4167 //
24.2.4.3 get DataView.prototype.byteOffset
4168 //
24.2.4.4 DataView.prototype.constructor
4169 //
24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
4170 //
24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
4171 //
24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
4172 //
24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
4173 //
24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
4174 //
24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
4175 //
24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
4176 //
24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
4177 //
24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
4178 //
24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
4179 //
24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
4180 //
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
4181 //
24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
4182 //
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
4183 //
24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
4184 //
24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
4186 //
24.2.4.21 DataView.prototype[ @@toStringTag ]
4187 define(DataView.prototype, $$toStringTag, 'DataView');
4189 //
24.2.5 Properties of DataView Instances
4192 // ---------------------------------------
4193 //
24.3 The JSON Object
4194 // ---------------------------------------
4196 //
24.3.1 JSON.parse ( text [ , reviver ] )
4197 //
24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
4198 //
24.3.3 JSON [ @@toStringTag ]
4199 define(JSON, $$toStringTag, 'JSON');
4201 // ---------------------------------------
4203 // ---------------------------------------
4205 //
25.1.1 Common Iteration Interfaces
4206 //
25.1.1.1 The Iterable Interface
4207 //
25.1.1.2 The Iterator Interface
4208 //
25.1.1.3 The IteratorResult Interface
4210 //
25.1.2 The %IteratorPrototype% Object
4211 // Defined earlier, so other prototypes can reference it.
4212 //
25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
4213 define($IteratorPrototype$, $$iterator, function() {
4218 // ---------------------------------------
4219 //
25.4 Promise Objects
4220 // ---------------------------------------
4223 //
25.4 Promise Objects
4225 //
25.4.1 Promise Abstract Operations
4227 //
25.4.1.1 PromiseCapability Records
4228 //
25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4230 function IfAbruptRejectPromise(value, capability) {
4231 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4232 return capability['[[Promise]]'];
4235 //
25.4.1.2 PromiseReaction Records
4237 //
25.4.1.3 CreateResolvingFunctions ( promise )
4239 function CreateResolvingFunctions(promise) {
4240 var alreadyResolved = {'[[value]]': false};
4241 var resolve = PromiseResolveFunction();
4242 set_internal(resolve, '[[Promise]]', promise);
4243 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4244 var reject = PromiseRejectFunction();
4245 set_internal(reject, '[[Promise]]', promise);
4246 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4247 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4250 //
25.4.1.3.1 Promise Reject Functions
4252 function PromiseRejectFunction() {
4253 var F = function(reason) {
4254 console.assert(Type(F['[[Promise]]']) === 'object');
4255 var promise = F['[[Promise]]'];
4256 var alreadyResolved = F['[[AlreadyResolved]]'];
4257 if (alreadyResolved['[[value]]']) return undefined;
4258 set_internal(alreadyResolved, '[[value]]', true);
4259 return RejectPromise(promise, reason);
4264 //
25.4.1.3.2 Promise Resolve Functions
4266 function PromiseResolveFunction() {
4267 var F = function(resolution) {
4268 console.assert(Type(F['[[Promise]]']) === 'object');
4269 var promise = F['[[Promise]]'];
4270 var alreadyResolved = F['[[AlreadyResolved]]'];
4271 if (alreadyResolved['[[value]]']) return undefined;
4272 set_internal(alreadyResolved, '[[value]]', true);
4274 if (SameValue(resolution, promise)) {
4275 var selfResolutionError = TypeError();
4276 return RejectPromise(promise, selfResolutionError);
4278 if (Type(resolution) !== 'object')
4279 return FulfillPromise(promise, resolution);
4281 var then = resolution['then'];
4283 return RejectPromise(promise, then);
4285 if (!IsCallable(then))
4286 return FulfillPromise(promise, resolution);
4287 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4293 //
25.4.1.4 FulfillPromise ( promise, value )
4295 function FulfillPromise(promise, value) {
4296 console.assert(promise['[[PromiseState]]'] === 'pending');
4297 var reactions = promise['[[PromiseFulfillReactions]]'];
4298 set_internal(promise, '[[PromiseResult]]', value);
4299 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4300 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4301 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4302 return TriggerPromiseReactions(reactions, value);
4305 //
25.4.1.5 NewPromiseCapability ( C )
4307 function NewPromiseCapability(c) {
4308 // To keep Promise hermetic, this doesn't look much like the spec.
4309 return CreatePromiseCapabilityRecord(undefined, c);
4312 //
25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4314 function CreatePromiseCapabilityRecord(promise, constructor) {
4315 // To keep Promise hermetic, this doesn't look much like the spec.
4316 console.assert(IsConstructor(constructor));
4317 var promiseCapability = {};
4318 set_internal(promiseCapability, '[[Promise]]', promise);
4319 set_internal(promiseCapability, '[[Resolve]]', undefined);
4320 set_internal(promiseCapability, '[[Reject]]', undefined);
4321 var executor = GetCapabilitiesExecutor();
4322 set_internal(executor, '[[Capability]]', promiseCapability);
4324 // NOTE: Differs from spec; object is constructed here
4325 var constructorResult = promise = new constructor(executor);
4326 set_internal(promiseCapability, '[[Promise]]', promise);
4328 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4329 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4330 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4331 return promiseCapability;
4334 //
25.4.1.5.2 GetCapabilitiesExecutor Functions
4336 function GetCapabilitiesExecutor() {
4337 var F = function(resolve, reject) {
4338 console.assert(F['[[Capability]]']);
4339 var promiseCapability = F['[[Capability]]'];
4340 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4341 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4342 set_internal(promiseCapability, '[[Resolve]]', resolve);
4343 set_internal(promiseCapability, '[[Reject]]', reject);
4349 //
25.4.1.6 IsPromise ( x )
4351 function IsPromise(x) {
4352 if (Type(x) !== 'object') return false;
4353 if (!('[[PromiseState]]' in x)) return false;
4354 if (x['[[PromiseState]]'] === undefined) return false;
4358 //
25.4.1.7 RejectPromise ( promise, reason )
4360 function RejectPromise(promise, reason) {
4361 console.assert(promise['[[PromiseState]]'] === 'pending');
4362 var reactions = promise['[[PromiseRejectReactions]]'];
4363 set_internal(promise, '[[PromiseResult]]', reason);
4364 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4365 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4366 set_internal(promise, '[[PromiseState]]', 'rejected');
4367 return TriggerPromiseReactions(reactions, reason);
4370 //
25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4372 function TriggerPromiseReactions(reactions, argument) {
4373 for (var i =
0, len = reactions.length; i < len; ++i)
4374 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4378 //
25.4.2 Promise Jobs
4380 //
25.4.2.1 PromiseReactionJob ( reaction, argument )
4382 function PromiseReactionJob(reaction, argument) {
4383 var promiseCapability = reaction['[[Capabilities]]'];
4384 var handler = reaction['[[Handler]]'];
4385 var handlerResult, status;
4387 if (handler === 'Identity') handlerResult = argument;
4388 else if (handler === 'Thrower') throw argument;
4389 else handlerResult = handler.call(undefined, argument);
4390 } catch (handlerResult) {
4391 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4392 NextJob(status); return;
4394 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4398 //
25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4400 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4401 // SPEC BUG: promise vs. promiseToResolve
4402 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4404 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4405 resolvingFunctions['[[Reject]]']);
4406 } catch (thenCallResult) {
4407 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4408 NextJob(status); return;
4410 NextJob(thenCallResult);
4413 //
25.4.3 The Promise Constructor
4415 //
25.4.3.1 Promise ( executor )
4417 function Promise(executor) {
4418 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4419 Object.defineProperty(this, '[[PromiseState]]', config);
4420 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4421 Object.defineProperty(this, '[[PromiseResult]]', config);
4422 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4423 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4426 if (Type(promise) !== 'object') throw new TypeError();
4427 if (!('[[PromiseState]]' in promise)) throw TypeError();
4428 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4429 if (!IsCallable(executor)) throw TypeError();
4431 set_internal(promise, '[[PromiseConstructor]]', Promise);
4433 return InitializePromise(promise, executor);
4436 //
25.4.3.1.1 InitializePromise ( promise, executor )
4438 function InitializePromise(promise, executor) {
4439 console.assert('[[PromiseState]]' in promise);
4440 console.assert(IsCallable(executor));
4441 set_internal(promise, '[[PromiseState]]', 'pending');
4442 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4443 set_internal(promise, '[[PromiseRejectReactions]]', []);
4444 var resolvingFunctions = CreateResolvingFunctions(promise);
4446 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4447 resolvingFunctions['[[Reject]]']);
4448 } catch (completion) {
4449 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4454 //
25.4.4 Properties of the Promise Constructor
4455 //
25.4.4.1 Promise.all ( iterable )
4457 define(Promise, 'all', function all(iterable) {
4458 var c = strict(this);
4459 var promiseCapability = NewPromiseCapability(c);
4461 var iterator = GetIterator(iterable);
4463 promiseCapability['[[Reject]]'].call(undefined, value);
4464 return promiseCapability['[[Promise]]'];
4467 var remainingElementsCount = { value:
1 };
4471 var next = IteratorStep(iterator);
4473 promiseCapability['[[Reject]]'].call(undefined, value);
4474 return promiseCapability['[[Promise]]'];
4477 remainingElementsCount.value -=
1;
4478 if (remainingElementsCount.value ===
0) {
4479 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4483 return promiseCapability['[[Promise]]'];
4486 var nextValue = IteratorValue(next);
4488 promiseCapability['[[Reject]]'].call(undefined, value);
4489 return promiseCapability['[[Promise]]'];
4492 var nextPromise = c.resolve(nextValue);
4494 promiseCapability['[[Reject]]'].call(undefined, value);
4495 return promiseCapability['[[Promise]]'];
4497 var resolveElement = PromiseAllResolveElementFunction();
4498 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4499 set_internal(resolveElement, '[[Index]]', index);
4500 set_internal(resolveElement, '[[Values]]', values);
4501 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4502 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4503 remainingElementsCount.value +=
1;
4505 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4507 promiseCapability['[[Reject]]'].call(undefined, value);
4508 return promiseCapability['[[Promise]]'];
4514 //
25.4.4.1.1 Promise.all Resolve Element Functions
4516 function PromiseAllResolveElementFunction() {
4517 var F = function(x) {
4518 var alreadyCalled = F['[[AlreadyCalled]]'];
4519 if (alreadyCalled.value) return undefined;
4520 alreadyCalled.value = true;
4521 var index = F['[[Index]]'];
4522 var values = F['[[Values]]'];
4523 var promiseCapability = F['[[Capabilities]]'];
4524 var remainingElementsCount = F['[[RemainingElements]]'];
4528 promiseCapability['[[Reject]]'].call(undefined, result);
4529 return promiseCapability['[[Promise]]'];
4531 remainingElementsCount.value -=
1;
4532 if (remainingElementsCount.value ===
0)
4533 return promiseCapability['[[Resolve]]'].call(undefined, values);
4539 //
25.4.4.2 Promise.prototype
4541 Promise.prototype = {};
4543 //
25.4.4.3 Promise.race ( iterable )
4545 define(Promise, 'race', function race(iterable) {
4546 var c = strict(this);
4547 var promiseCapability = NewPromiseCapability(c);
4549 var iterator = GetIterator(iterable);
4551 promiseCapability['[[Reject]]'].call(undefined, value);
4552 return promiseCapability['[[Promise]]'];
4556 var next = IteratorStep(iterator);
4558 promiseCapability['[[Reject]]'].call(undefined, value);
4559 return promiseCapability['[[Promise]]'];
4561 if (!next) return promiseCapability['[[Promise]]'];
4563 var nextValue = IteratorValue(next);
4565 promiseCapability['[[Reject]]'].call(undefined, value);
4566 return promiseCapability['[[Promise]]'];
4569 var nextPromise = c.resolve(nextValue);
4571 promiseCapability['[[Reject]]'].call(undefined, value);
4572 return promiseCapability['[[Promise]]'];
4575 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4577 promiseCapability['[[Reject]]'].call(undefined, value);
4578 return promiseCapability['[[Promise]]'];
4583 //
25.4.4.4 Promise.reject ( r )
4585 define(Promise, 'reject', function reject(r) {
4586 var c = strict(this);
4587 var promiseCapability = NewPromiseCapability(c);
4588 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4589 return promiseCapability['[[Promise]]'];
4592 //
25.4.4.5 Promise.resolve ( x )
4594 define(Promise, 'resolve', function resolve(x) {
4595 var c = strict(this);
4597 var constructor = x['[[PromiseConstructor]]'];
4598 if (SameValue(constructor, c)) return x;
4600 var promiseCapability = NewPromiseCapability(c);
4601 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4602 return promiseCapability['[[Promise]]'];
4605 //
25.4.4.6 Promise [ @@create ] ( )
4606 //
25.4.4.6.1 AllocatePromise ( constructor )
4607 //
25.4.5 Properties of the Promise Prototype Object
4608 //
25.4.5.1 Promise.prototype.catch ( onRejected )
4610 define(Promise.prototype, 'catch', function catch_(onRejected) {
4612 return promise.then(undefined, onRejected);
4615 //
25.4.5.2 Promise.prototype.constructor
4617 Promise.prototype.constructor = Promise;
4619 //
25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4621 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4623 if (!IsPromise(promise)) throw TypeError();
4624 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4625 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4626 var c = promise.constructor;
4627 var promiseCapability = NewPromiseCapability(c);
4628 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4629 '[[Handler]]': onFulfilled };
4630 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4631 '[[Handler]]': onRejected };
4632 if (promise['[[PromiseState]]'] === 'pending') {
4633 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4634 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4635 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4636 var value = promise['[[PromiseResult]]'];
4637 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4638 } else if (promise['[[PromiseState]]'] === 'rejected') {
4639 var reason = promise['[[PromiseResult]]'];
4640 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4642 return promiseCapability['[[Promise]]'];
4645 //
25.4.6 Properties of Promise Instances
4647 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4648 global.Promise = Promise;
4650 // Patch early Promise.cast vs. Promise.resolve implementations
4651 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4654 //
25.4.5.1 Promise.prototype [ @@toStringTag ]
4655 define(Promise.prototype, $$toStringTag, 'Promise');
4657 // ---------------------------------------
4659 // ---------------------------------------
4662 //
26.1 The Reflect Object
4663 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4664 global.Reflect = {};
4666 //
26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4669 function apply(target, thisArgument, argumentsList) {
4670 if (!IsCallable(target)) throw TypeError();
4671 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4674 //
26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4676 Reflect, 'construct',
4677 function construct(target, argumentsList) {
4678 return __cons(target, argumentsList);
4681 //
26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4683 Reflect, 'defineProperty',
4684 function defineProperty(target, propertyKey, attributes) {
4686 Object.defineProperty(target, propertyKey, attributes);
4693 //
26.1.4 Reflect.deleteProperty ( target, propertyKey )
4695 Reflect, 'deleteProperty',
4696 function deleteProperty(target,name) {
4698 delete target[name];
4699 return !HasOwnProperty(target, name);
4705 //
26.1.5 Reflect.enumerate ( target )
4707 Reflect, 'enumerate',
4708 function enumerate(target) {
4709 target = ToObject(target);
4710 var iterator = Enumerate(target);
4714 //
26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4717 function get(target, name, receiver) {
4718 target = ToObject(target);
4719 name = String(name);
4720 receiver = (receiver === undefined) ? target : ToObject(receiver);
4721 var desc = getPropertyDescriptor(target, name);
4722 if (desc && 'get' in desc)
4723 return Function.prototype.call.call(desc['get'], receiver);
4724 return target[name];
4727 //
26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4729 Reflect, 'getOwnPropertyDescriptor',
4730 Object.getOwnPropertyDescriptor);
4732 //
26.1.8 Reflect.getPrototypeOf ( target )
4734 Reflect, 'getPrototypeOf',
4735 Object.getPrototypeOf);
4737 //
26.1.9 Reflect.has ( target, propertyKey )
4740 function has(target,name) {
4741 return String(name) in ToObject(target);
4744 //
26.1.10 Reflect.isExtensible (target)
4746 Reflect, 'isExtensible',
4747 Object.isExtensible);
4749 //
26.1.11 Reflect.ownKeys ( target )
4752 function ownKeys(target) {
4753 var obj = ToObject(target);
4754 return Object.getOwnPropertyNames(obj);
4757 //
26.1.12 Reflect.preventExtensions ( target )
4759 Reflect, 'preventExtensions',
4760 function preventExtensions(target) {
4761 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4764 //
26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4767 function set(target, name, value, receiver) {
4768 target = ToObject(target);
4769 name = String(name);
4770 receiver = (receiver === undefined) ? target : ToObject(receiver);
4771 var desc = getPropertyDescriptor(target, name);
4773 if (desc && 'set' in desc)
4774 Function.prototype.call.call(desc['set'], receiver, value);
4776 target[name] = value;
4783 //
26.1.14 Reflect.setPrototypeOf ( target, proto )
4785 Reflect, 'setPrototypeOf',
4786 function setPrototypeOf(target, proto) {
4788 target.__proto__ = proto;
4789 return Reflect.getPrototypeOf(target) === proto;
4797 // ---------------------------------------
4798 //
26.2 Proxy Objects
4799 // ---------------------------------------
4801 // Not polyfillable.
4805 // This helper is defined outside the main scope so that the use of
4806 // 'eval' does not taint the scope for minifiers.
4807 function __cons(t, a) {
4808 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4811 <script>(function (root) {
4814 /***** unorm.js *****/
4817 * UnicodeNormalizer
1.0.0
4818 * Copyright (c)
2008 Matsuza
4819 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
4820 * $Date:
2008-
06-
05 16:
44:
17 +
0200 (Thu,
05 Jun
2008) $
4824 var DEFAULT_FEATURE = [null,
0, {}];
4825 var CACHE_THRESHOLD =
10;
4826 var SBase =
0xAC00, LBase =
0x1100, VBase =
0x1161, TBase =
0x11A7, LCount =
19, VCount =
21, TCount =
28;
4827 var NCount = VCount * TCount; //
588
4828 var SCount = LCount * NCount; //
11172
4830 var UChar = function(cp, feature){
4831 this.codepoint = cp;
4832 this.feature = feature;
4837 var cacheCounter = [];
4838 for (var i =
0; i <=
0xFF; ++i){
4839 cacheCounter[i] =
0;
4842 function fromCache(next, cp, needFeature){
4843 var ret = cache[cp];
4845 ret = next(cp, needFeature);
4846 if(!!ret.feature && ++cacheCounter[(cp
>> 8) &
0xFF]
> CACHE_THRESHOLD){
4853 function fromData(next, cp, needFeature){
4854 var hash = cp &
0xFF00;
4855 var dunit = UChar.udata[hash] || {};
4857 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
4859 function fromCpOnly(next, cp, needFeature){
4860 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
4862 function fromRuleBasedJamo(next, cp, needFeature){
4864 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
4865 return next(cp, needFeature);
4867 if(LBase <= cp && cp < LBase + LCount){
4869 var base = (cp - LBase) * VCount;
4870 for (j =
0; j < VCount; ++j){
4871 c[VBase + j] = SBase + TCount * (j + base);
4873 return new UChar(cp, [,,c]);
4876 var SIndex = cp - SBase;
4877 var TIndex = SIndex % TCount;
4880 feature[
0] = [SBase + SIndex - TIndex, TBase + TIndex];
4882 feature[
0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
4884 for (j =
1; j < TCount; ++j){
4885 feature[
2][TBase + j] = cp + j;
4888 return new UChar(cp, feature);
4890 function fromCpFilter(next, cp, needFeature){
4891 return cp <
60 ||
13311 < cp && cp <
42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
4894 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
4896 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
4897 return function (cp, needFeature) {
4898 return strategy(next, cp, needFeature);
4902 UChar.isHighSurrogate = function(cp){
4903 return cp
>=
0xD800 && cp <=
0xDBFF;
4905 UChar.isLowSurrogate = function(cp){
4906 return cp
>=
0xDC00 && cp <=
0xDFFF;
4909 UChar.prototype.prepFeature = function(){
4911 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
4915 UChar.prototype.toString = function(){
4916 if(this.codepoint <
0x10000){
4917 return String.fromCharCode(this.codepoint);
4919 var x = this.codepoint -
0x10000;
4920 return String.fromCharCode(Math.floor(x /
0x400) +
0xD800, x %
0x400 +
0xDC00);
4924 UChar.prototype.getDecomp = function(){
4926 return this.feature[
0] || null;
4929 UChar.prototype.isCompatibility = function(){
4931 return !!this.feature[
1] && (this.feature[
1] & (
1 <<
8));
4933 UChar.prototype.isExclude = function(){
4935 return !!this.feature[
1] && (this.feature[
1] & (
1 <<
9));
4937 UChar.prototype.getCanonicalClass = function(){
4939 return !!this.feature[
1] ? (this.feature[
1] &
0xff) :
0;
4941 UChar.prototype.getComposite = function(following){
4943 if(!this.feature[
2]){
4946 var cp = this.feature[
2][following.codepoint];
4947 return cp ? UChar.fromCharCode(cp) : null;
4950 var UCharIterator = function(str){
4954 UCharIterator.prototype.next = function(){
4955 if(!!this.str && this.cursor < this.str.length){
4956 var cp = this.str.charCodeAt(this.cursor++);
4958 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
4959 cp = (cp -
0xD800) *
0x400 + (d -
0xDC00) +
0x10000;
4962 return UChar.fromCharCode(cp);
4969 var RecursDecompIterator = function(it, cano){
4971 this.canonical = cano;
4975 RecursDecompIterator.prototype.next = function(){
4976 function recursiveDecomp(cano, uchar){
4977 var decomp = uchar.getDecomp();
4978 if(!!decomp && !(cano && uchar.isCompatibility())){
4980 for(var i =
0; i < decomp.length; ++i){
4981 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
4982 ret = ret.concat(a);
4989 if(this.resBuf.length ===
0){
4990 var uchar = this.it.next();
4994 this.resBuf = recursiveDecomp(this.canonical, uchar);
4996 return this.resBuf.shift();
4999 var DecompIterator = function(it){
5004 DecompIterator.prototype.next = function(){
5006 if(this.resBuf.length ===
0){
5008 var uchar = this.it.next();
5012 cc = uchar.getCanonicalClass();
5013 var inspt = this.resBuf.length;
5015 for(; inspt
> 0; --inspt){
5016 var uchar2 = this.resBuf[inspt -
1];
5017 var cc2 = uchar2.getCanonicalClass();
5023 this.resBuf.splice(inspt,
0, uchar);
5026 return this.resBuf.shift();
5029 var CompIterator = function(it){
5033 this.lastClass = null;
5036 CompIterator.prototype.next = function(){
5037 while(this.resBuf.length ===
0){
5038 var uchar = this.it.next();
5040 this.resBuf = this.procBuf;
5044 if(this.procBuf.length ===
0){
5045 this.lastClass = uchar.getCanonicalClass();
5046 this.procBuf.push(uchar);
5048 var starter = this.procBuf[
0];
5049 var composite = starter.getComposite(uchar);
5050 var cc = uchar.getCanonicalClass();
5051 if(!!composite && (this.lastClass < cc || this.lastClass ===
0)){
5052 this.procBuf[
0] = composite;
5055 this.resBuf = this.procBuf;
5058 this.lastClass = cc;
5059 this.procBuf.push(uchar);
5063 return this.resBuf.shift();
5066 var createIterator = function(mode, str){
5069 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
5071 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
5073 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
5075 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
5077 throw mode +
" is invalid";
5079 var normalize = function(mode, str){
5080 var it = createIterator(mode, str);
5083 while(!!(uchar = it.next())){
5084 ret += uchar.toString();
5091 return normalize(
"NFD", str);
5095 return normalize(
"NFKD", str);
5099 return normalize(
"NFC", str);
5103 return normalize(
"NFKC", str);
5108 0:{
60:[,,{
824:
8814}],
61:[,,{
824:
8800}],
62:[,,{
824:
8815}],
65:[,,{
768:
192,
769:
193,
770:
194,
771:
195,
772:
256,
774:
258,
775:
550,
776:
196,
777:
7842,
778:
197,
780:
461,
783:
512,
785:
514,
803:
7840,
805:
7680,
808:
260}],
66:[,,{
775:
7682,
803:
7684,
817:
7686}],
67:[,,{
769:
262,
770:
264,
775:
266,
780:
268,
807:
199}],
68:[,,{
775:
7690,
780:
270,
803:
7692,
807:
7696,
813:
7698,
817:
7694}],
69:[,,{
768:
200,
769:
201,
770:
202,
771:
7868,
772:
274,
774:
276,
775:
278,
776:
203,
777:
7866,
780:
282,
783:
516,
785:
518,
803:
7864,
807:
552,
808:
280,
813:
7704,
816:
7706}],
70:[,,{
775:
7710}],
71:[,,{
769:
500,
770:
284,
772:
7712,
774:
286,
775:
288,
780:
486,
807:
290}],
72:[,,{
770:
292,
775:
7714,
776:
7718,
780:
542,
803:
7716,
807:
7720,
814:
7722}],
73:[,,{
768:
204,
769:
205,
770:
206,
771:
296,
772:
298,
774:
300,
775:
304,
776:
207,
777:
7880,
780:
463,
783:
520,
785:
522,
803:
7882,
808:
302,
816:
7724}],
74:[,,{
770:
308}],
75:[,,{
769:
7728,
780:
488,
803:
7730,
807:
310,
817:
7732}],
76:[,,{
769:
313,
780:
317,
803:
7734,
807:
315,
813:
7740,
817:
7738}],
77:[,,{
769:
7742,
775:
7744,
803:
7746}],
78:[,,{
768:
504,
769:
323,
771:
209,
775:
7748,
780:
327,
803:
7750,
807:
325,
813:
7754,
817:
7752}],
79:[,,{
768:
210,
769:
211,
770:
212,
771:
213,
772:
332,
774:
334,
775:
558,
776:
214,
777:
7886,
779:
336,
780:
465,
783:
524,
785:
526,
795:
416,
803:
7884,
808:
490}],
80:[,,{
769:
7764,
775:
7766}],
82:[,,{
769:
340,
775:
7768,
780:
344,
783:
528,
785:
530,
803:
7770,
807:
342,
817:
7774}],
83:[,,{
769:
346,
770:
348,
775:
7776,
780:
352,
803:
7778,
806:
536,
807:
350}],
84:[,,{
775:
7786,
780:
356,
803:
7788,
806:
538,
807:
354,
813:
7792,
817:
7790}],
85:[,,{
768:
217,
769:
218,
770:
219,
771:
360,
772:
362,
774:
364,
776:
220,
777:
7910,
778:
366,
779:
368,
780:
467,
783:
532,
785:
534,
795:
431,
803:
7908,
804:
7794,
808:
370,
813:
7798,
816:
7796}],
86:[,,{
771:
7804,
803:
7806}],
87:[,,{
768:
7808,
769:
7810,
770:
372,
775:
7814,
776:
7812,
803:
7816}],
88:[,,{
775:
7818,
776:
7820}],
89:[,,{
768:
7922,
769:
221,
770:
374,
771:
7928,
772:
562,
775:
7822,
776:
376,
777:
7926,
803:
7924}],
90:[,,{
769:
377,
770:
7824,
775:
379,
780:
381,
803:
7826,
817:
7828}],
97:[,,{
768:
224,
769:
225,
770:
226,
771:
227,
772:
257,
774:
259,
775:
551,
776:
228,
777:
7843,
778:
229,
780:
462,
783:
513,
785:
515,
803:
7841,
805:
7681,
808:
261}],
98:[,,{
775:
7683,
803:
7685,
817:
7687}],
99:[,,{
769:
263,
770:
265,
775:
267,
780:
269,
807:
231}],
100:[,,{
775:
7691,
780:
271,
803:
7693,
807:
7697,
813:
7699,
817:
7695}],
101:[,,{
768:
232,
769:
233,
770:
234,
771:
7869,
772:
275,
774:
277,
775:
279,
776:
235,
777:
7867,
780:
283,
783:
517,
785:
519,
803:
7865,
807:
553,
808:
281,
813:
7705,
816:
7707}],
102:[,,{
775:
7711}],
103:[,,{
769:
501,
770:
285,
772:
7713,
774:
287,
775:
289,
780:
487,
807:
291}],
104:[,,{
770:
293,
775:
7715,
776:
7719,
780:
543,
803:
7717,
807:
7721,
814:
7723,
817:
7830}],
105:[,,{
768:
236,
769:
237,
770:
238,
771:
297,
772:
299,
774:
301,
776:
239,
777:
7881,
780:
464,
783:
521,
785:
523,
803:
7883,
808:
303,
816:
7725}],
106:[,,{
770:
309,
780:
496}],
107:[,,{
769:
7729,
780:
489,
803:
7731,
807:
311,
817:
7733}],
108:[,,{
769:
314,
780:
318,
803:
7735,
807:
316,
813:
7741,
817:
7739}],
109:[,,{
769:
7743,
775:
7745,
803:
7747}],
110:[,,{
768:
505,
769:
324,
771:
241,
775:
7749,
780:
328,
803:
7751,
807:
326,
813:
7755,
817:
7753}],
111:[,,{
768:
242,
769:
243,
770:
244,
771:
245,
772:
333,
774:
335,
775:
559,
776:
246,
777:
7887,
779:
337,
780:
466,
783:
525,
785:
527,
795:
417,
803:
7885,
808:
491}],
112:[,,{
769:
7765,
775:
7767}],
114:[,,{
769:
341,
775:
7769,
780:
345,
783:
529,
785:
531,
803:
7771,
807:
343,
817:
7775}],
115:[,,{
769:
347,
770:
349,
775:
7777,
780:
353,
803:
7779,
806:
537,
807:
351}],
116:[,,{
775:
7787,
776:
7831,
780:
357,
803:
7789,
806:
539,
807:
355,
813:
7793,
817:
7791}],
117:[,,{
768:
249,
769:
250,
770:
251,
771:
361,
772:
363,
774:
365,
776:
252,
777:
7911,
778:
367,
779:
369,
780:
468,
783:
533,
785:
535,
795:
432,
803:
7909,
804:
7795,
808:
371,
813:
7799,
816:
7797}],
118:[,,{
771:
7805,
803:
7807}],
119:[,,{
768:
7809,
769:
7811,
770:
373,
775:
7815,
776:
7813,
778:
7832,
803:
7817}],
120:[,,{
775:
7819,
776:
7821}],
121:[,,{
768:
7923,
769:
253,
770:
375,
771:
7929,
772:
563,
775:
7823,
776:
255,
777:
7927,
778:
7833,
803:
7925}],
122:[,,{
769:
378,
770:
7825,
775:
380,
780:
382,
803:
7827,
817:
7829}],
160:[[
32],
256],
168:[[
32,
776],
256,{
768:
8173,
769:
901,
834:
8129}],
170:[[
97],
256],
175:[[
32,
772],
256],
178:[[
50],
256],
179:[[
51],
256],
180:[[
32,
769],
256],
181:[[
956],
256],
184:[[
32,
807],
256],
185:[[
49],
256],
186:[[
111],
256],
188:[[
49,
8260,
52],
256],
189:[[
49,
8260,
50],
256],
190:[[
51,
8260,
52],
256],
192:[[
65,
768]],
193:[[
65,
769]],
194:[[
65,
770],,{
768:
7846,
769:
7844,
771:
7850,
777:
7848}],
195:[[
65,
771]],
196:[[
65,
776],,{
772:
478}],
197:[[
65,
778],,{
769:
506}],
198:[,,{
769:
508,
772:
482}],
199:[[
67,
807],,{
769:
7688}],
200:[[
69,
768]],
201:[[
69,
769]],
202:[[
69,
770],,{
768:
7872,
769:
7870,
771:
7876,
777:
7874}],
203:[[
69,
776]],
204:[[
73,
768]],
205:[[
73,
769]],
206:[[
73,
770]],
207:[[
73,
776],,{
769:
7726}],
209:[[
78,
771]],
210:[[
79,
768]],
211:[[
79,
769]],
212:[[
79,
770],,{
768:
7890,
769:
7888,
771:
7894,
777:
7892}],
213:[[
79,
771],,{
769:
7756,
772:
556,
776:
7758}],
214:[[
79,
776],,{
772:
554}],
216:[,,{
769:
510}],
217:[[
85,
768]],
218:[[
85,
769]],
219:[[
85,
770]],
220:[[
85,
776],,{
768:
475,
769:
471,
772:
469,
780:
473}],
221:[[
89,
769]],
224:[[
97,
768]],
225:[[
97,
769]],
226:[[
97,
770],,{
768:
7847,
769:
7845,
771:
7851,
777:
7849}],
227:[[
97,
771]],
228:[[
97,
776],,{
772:
479}],
229:[[
97,
778],,{
769:
507}],
230:[,,{
769:
509,
772:
483}],
231:[[
99,
807],,{
769:
7689}],
232:[[
101,
768]],
233:[[
101,
769]],
234:[[
101,
770],,{
768:
7873,
769:
7871,
771:
7877,
777:
7875}],
235:[[
101,
776]],
236:[[
105,
768]],
237:[[
105,
769]],
238:[[
105,
770]],
239:[[
105,
776],,{
769:
7727}],
241:[[
110,
771]],
242:[[
111,
768]],
243:[[
111,
769]],
244:[[
111,
770],,{
768:
7891,
769:
7889,
771:
7895,
777:
7893}],
245:[[
111,
771],,{
769:
7757,
772:
557,
776:
7759}],
246:[[
111,
776],,{
772:
555}],
248:[,,{
769:
511}],
249:[[
117,
768]],
250:[[
117,
769]],
251:[[
117,
770]],
252:[[
117,
776],,{
768:
476,
769:
472,
772:
470,
780:
474}],
253:[[
121,
769]],
255:[[
121,
776]]},
5109 256:{
256:[[
65,
772]],
257:[[
97,
772]],
258:[[
65,
774],,{
768:
7856,
769:
7854,
771:
7860,
777:
7858}],
259:[[
97,
774],,{
768:
7857,
769:
7855,
771:
7861,
777:
7859}],
260:[[
65,
808]],
261:[[
97,
808]],
262:[[
67,
769]],
263:[[
99,
769]],
264:[[
67,
770]],
265:[[
99,
770]],
266:[[
67,
775]],
267:[[
99,
775]],
268:[[
67,
780]],
269:[[
99,
780]],
270:[[
68,
780]],
271:[[
100,
780]],
274:[[
69,
772],,{
768:
7700,
769:
7702}],
275:[[
101,
772],,{
768:
7701,
769:
7703}],
276:[[
69,
774]],
277:[[
101,
774]],
278:[[
69,
775]],
279:[[
101,
775]],
280:[[
69,
808]],
281:[[
101,
808]],
282:[[
69,
780]],
283:[[
101,
780]],
284:[[
71,
770]],
285:[[
103,
770]],
286:[[
71,
774]],
287:[[
103,
774]],
288:[[
71,
775]],
289:[[
103,
775]],
290:[[
71,
807]],
291:[[
103,
807]],
292:[[
72,
770]],
293:[[
104,
770]],
296:[[
73,
771]],
297:[[
105,
771]],
298:[[
73,
772]],
299:[[
105,
772]],
300:[[
73,
774]],
301:[[
105,
774]],
302:[[
73,
808]],
303:[[
105,
808]],
304:[[
73,
775]],
306:[[
73,
74],
256],
307:[[
105,
106],
256],
308:[[
74,
770]],
309:[[
106,
770]],
310:[[
75,
807]],
311:[[
107,
807]],
313:[[
76,
769]],
314:[[
108,
769]],
315:[[
76,
807]],
316:[[
108,
807]],
317:[[
76,
780]],
318:[[
108,
780]],
319:[[
76,
183],
256],
320:[[
108,
183],
256],
323:[[
78,
769]],
324:[[
110,
769]],
325:[[
78,
807]],
326:[[
110,
807]],
327:[[
78,
780]],
328:[[
110,
780]],
329:[[
700,
110],
256],
332:[[
79,
772],,{
768:
7760,
769:
7762}],
333:[[
111,
772],,{
768:
7761,
769:
7763}],
334:[[
79,
774]],
335:[[
111,
774]],
336:[[
79,
779]],
337:[[
111,
779]],
340:[[
82,
769]],
341:[[
114,
769]],
342:[[
82,
807]],
343:[[
114,
807]],
344:[[
82,
780]],
345:[[
114,
780]],
346:[[
83,
769],,{
775:
7780}],
347:[[
115,
769],,{
775:
7781}],
348:[[
83,
770]],
349:[[
115,
770]],
350:[[
83,
807]],
351:[[
115,
807]],
352:[[
83,
780],,{
775:
7782}],
353:[[
115,
780],,{
775:
7783}],
354:[[
84,
807]],
355:[[
116,
807]],
356:[[
84,
780]],
357:[[
116,
780]],
360:[[
85,
771],,{
769:
7800}],
361:[[
117,
771],,{
769:
7801}],
362:[[
85,
772],,{
776:
7802}],
363:[[
117,
772],,{
776:
7803}],
364:[[
85,
774]],
365:[[
117,
774]],
366:[[
85,
778]],
367:[[
117,
778]],
368:[[
85,
779]],
369:[[
117,
779]],
370:[[
85,
808]],
371:[[
117,
808]],
372:[[
87,
770]],
373:[[
119,
770]],
374:[[
89,
770]],
375:[[
121,
770]],
376:[[
89,
776]],
377:[[
90,
769]],
378:[[
122,
769]],
379:[[
90,
775]],
380:[[
122,
775]],
381:[[
90,
780]],
382:[[
122,
780]],
383:[[
115],
256,{
775:
7835}],
416:[[
79,
795],,{
768:
7900,
769:
7898,
771:
7904,
777:
7902,
803:
7906}],
417:[[
111,
795],,{
768:
7901,
769:
7899,
771:
7905,
777:
7903,
803:
7907}],
431:[[
85,
795],,{
768:
7914,
769:
7912,
771:
7918,
777:
7916,
803:
7920}],
432:[[
117,
795],,{
768:
7915,
769:
7913,
771:
7919,
777:
7917,
803:
7921}],
439:[,,{
780:
494}],
452:[[
68,
381],
256],
453:[[
68,
382],
256],
454:[[
100,
382],
256],
455:[[
76,
74],
256],
456:[[
76,
106],
256],
457:[[
108,
106],
256],
458:[[
78,
74],
256],
459:[[
78,
106],
256],
460:[[
110,
106],
256],
461:[[
65,
780]],
462:[[
97,
780]],
463:[[
73,
780]],
464:[[
105,
780]],
465:[[
79,
780]],
466:[[
111,
780]],
467:[[
85,
780]],
468:[[
117,
780]],
469:[[
220,
772]],
470:[[
252,
772]],
471:[[
220,
769]],
472:[[
252,
769]],
473:[[
220,
780]],
474:[[
252,
780]],
475:[[
220,
768]],
476:[[
252,
768]],
478:[[
196,
772]],
479:[[
228,
772]],
480:[[
550,
772]],
481:[[
551,
772]],
482:[[
198,
772]],
483:[[
230,
772]],
486:[[
71,
780]],
487:[[
103,
780]],
488:[[
75,
780]],
489:[[
107,
780]],
490:[[
79,
808],,{
772:
492}],
491:[[
111,
808],,{
772:
493}],
492:[[
490,
772]],
493:[[
491,
772]],
494:[[
439,
780]],
495:[[
658,
780]],
496:[[
106,
780]],
497:[[
68,
90],
256],
498:[[
68,
122],
256],
499:[[
100,
122],
256],
500:[[
71,
769]],
501:[[
103,
769]],
504:[[
78,
768]],
505:[[
110,
768]],
506:[[
197,
769]],
507:[[
229,
769]],
508:[[
198,
769]],
509:[[
230,
769]],
510:[[
216,
769]],
511:[[
248,
769]],
66045:[,
220]},
5110 512:{
512:[[
65,
783]],
513:[[
97,
783]],
514:[[
65,
785]],
515:[[
97,
785]],
516:[[
69,
783]],
517:[[
101,
783]],
518:[[
69,
785]],
519:[[
101,
785]],
520:[[
73,
783]],
521:[[
105,
783]],
522:[[
73,
785]],
523:[[
105,
785]],
524:[[
79,
783]],
525:[[
111,
783]],
526:[[
79,
785]],
527:[[
111,
785]],
528:[[
82,
783]],
529:[[
114,
783]],
530:[[
82,
785]],
531:[[
114,
785]],
532:[[
85,
783]],
533:[[
117,
783]],
534:[[
85,
785]],
535:[[
117,
785]],
536:[[
83,
806]],
537:[[
115,
806]],
538:[[
84,
806]],
539:[[
116,
806]],
542:[[
72,
780]],
543:[[
104,
780]],
550:[[
65,
775],,{
772:
480}],
551:[[
97,
775],,{
772:
481}],
552:[[
69,
807],,{
774:
7708}],
553:[[
101,
807],,{
774:
7709}],
554:[[
214,
772]],
555:[[
246,
772]],
556:[[
213,
772]],
557:[[
245,
772]],
558:[[
79,
775],,{
772:
560}],
559:[[
111,
775],,{
772:
561}],
560:[[
558,
772]],
561:[[
559,
772]],
562:[[
89,
772]],
563:[[
121,
772]],
658:[,,{
780:
495}],
688:[[
104],
256],
689:[[
614],
256],
690:[[
106],
256],
691:[[
114],
256],
692:[[
633],
256],
693:[[
635],
256],
694:[[
641],
256],
695:[[
119],
256],
696:[[
121],
256],
728:[[
32,
774],
256],
729:[[
32,
775],
256],
730:[[
32,
778],
256],
731:[[
32,
808],
256],
732:[[
32,
771],
256],
733:[[
32,
779],
256],
736:[[
611],
256],
737:[[
108],
256],
738:[[
115],
256],
739:[[
120],
256],
740:[[
661],
256],
66272:[,
220]},
5111 768:{
768:[,
230],
769:[,
230],
770:[,
230],
771:[,
230],
772:[,
230],
773:[,
230],
774:[,
230],
775:[,
230],
776:[,
230,{
769:
836}],
777:[,
230],
778:[,
230],
779:[,
230],
780:[,
230],
781:[,
230],
782:[,
230],
783:[,
230],
784:[,
230],
785:[,
230],
786:[,
230],
787:[,
230],
788:[,
230],
789:[,
232],
790:[,
220],
791:[,
220],
792:[,
220],
793:[,
220],
794:[,
232],
795:[,
216],
796:[,
220],
797:[,
220],
798:[,
220],
799:[,
220],
800:[,
220],
801:[,
202],
802:[,
202],
803:[,
220],
804:[,
220],
805:[,
220],
806:[,
220],
807:[,
202],
808:[,
202],
809:[,
220],
810:[,
220],
811:[,
220],
812:[,
220],
813:[,
220],
814:[,
220],
815:[,
220],
816:[,
220],
817:[,
220],
818:[,
220],
819:[,
220],
820:[,
1],
821:[,
1],
822:[,
1],
823:[,
1],
824:[,
1],
825:[,
220],
826:[,
220],
827:[,
220],
828:[,
220],
829:[,
230],
830:[,
230],
831:[,
230],
832:[[
768],
230],
833:[[
769],
230],
834:[,
230],
835:[[
787],
230],
836:[[
776,
769],
230],
837:[,
240],
838:[,
230],
839:[,
220],
840:[,
220],
841:[,
220],
842:[,
230],
843:[,
230],
844:[,
230],
845:[,
220],
846:[,
220],
848:[,
230],
849:[,
230],
850:[,
230],
851:[,
220],
852:[,
220],
853:[,
220],
854:[,
220],
855:[,
230],
856:[,
232],
857:[,
220],
858:[,
220],
859:[,
230],
860:[,
233],
861:[,
234],
862:[,
234],
863:[,
233],
864:[,
234],
865:[,
234],
866:[,
233],
867:[,
230],
868:[,
230],
869:[,
230],
870:[,
230],
871:[,
230],
872:[,
230],
873:[,
230],
874:[,
230],
875:[,
230],
876:[,
230],
877:[,
230],
878:[,
230],
879:[,
230],
884:[[
697]],
890:[[
32,
837],
256],
894:[[
59]],
900:[[
32,
769],
256],
901:[[
168,
769]],
902:[[
913,
769]],
903:[[
183]],
904:[[
917,
769]],
905:[[
919,
769]],
906:[[
921,
769]],
908:[[
927,
769]],
910:[[
933,
769]],
911:[[
937,
769]],
912:[[
970,
769]],
913:[,,{
768:
8122,
769:
902,
772:
8121,
774:
8120,
787:
7944,
788:
7945,
837:
8124}],
917:[,,{
768:
8136,
769:
904,
787:
7960,
788:
7961}],
919:[,,{
768:
8138,
769:
905,
787:
7976,
788:
7977,
837:
8140}],
921:[,,{
768:
8154,
769:
906,
772:
8153,
774:
8152,
776:
938,
787:
7992,
788:
7993}],
927:[,,{
768:
8184,
769:
908,
787:
8008,
788:
8009}],
929:[,,{
788:
8172}],
933:[,,{
768:
8170,
769:
910,
772:
8169,
774:
8168,
776:
939,
788:
8025}],
937:[,,{
768:
8186,
769:
911,
787:
8040,
788:
8041,
837:
8188}],
938:[[
921,
776]],
939:[[
933,
776]],
940:[[
945,
769],,{
837:
8116}],
941:[[
949,
769]],
942:[[
951,
769],,{
837:
8132}],
943:[[
953,
769]],
944:[[
971,
769]],
945:[,,{
768:
8048,
769:
940,
772:
8113,
774:
8112,
787:
7936,
788:
7937,
834:
8118,
837:
8115}],
949:[,,{
768:
8050,
769:
941,
787:
7952,
788:
7953}],
951:[,,{
768:
8052,
769:
942,
787:
7968,
788:
7969,
834:
8134,
837:
8131}],
953:[,,{
768:
8054,
769:
943,
772:
8145,
774:
8144,
776:
970,
787:
7984,
788:
7985,
834:
8150}],
959:[,,{
768:
8056,
769:
972,
787:
8000,
788:
8001}],
961:[,,{
787:
8164,
788:
8165}],
965:[,,{
768:
8058,
769:
973,
772:
8161,
774:
8160,
776:
971,
787:
8016,
788:
8017,
834:
8166}],
969:[,,{
768:
8060,
769:
974,
787:
8032,
788:
8033,
834:
8182,
837:
8179}],
970:[[
953,
776],,{
768:
8146,
769:
912,
834:
8151}],
971:[[
965,
776],,{
768:
8162,
769:
944,
834:
8167}],
972:[[
959,
769]],
973:[[
965,
769]],
974:[[
969,
769],,{
837:
8180}],
976:[[
946],
256],
977:[[
952],
256],
978:[[
933],
256,{
769:
979,
776:
980}],
979:[[
978,
769]],
980:[[
978,
776]],
981:[[
966],
256],
982:[[
960],
256],
1008:[[
954],
256],
1009:[[
961],
256],
1010:[[
962],
256],
1012:[[
920],
256],
1013:[[
949],
256],
1017:[[
931],
256],
66422:[,
230],
66423:[,
230],
66424:[,
230],
66425:[,
230],
66426:[,
230]},
5112 1024:{
1024:[[
1045,
768]],
1025:[[
1045,
776]],
1027:[[
1043,
769]],
1030:[,,{
776:
1031}],
1031:[[
1030,
776]],
1036:[[
1050,
769]],
1037:[[
1048,
768]],
1038:[[
1059,
774]],
1040:[,,{
774:
1232,
776:
1234}],
1043:[,,{
769:
1027}],
1045:[,,{
768:
1024,
774:
1238,
776:
1025}],
1046:[,,{
774:
1217,
776:
1244}],
1047:[,,{
776:
1246}],
1048:[,,{
768:
1037,
772:
1250,
774:
1049,
776:
1252}],
1049:[[
1048,
774]],
1050:[,,{
769:
1036}],
1054:[,,{
776:
1254}],
1059:[,,{
772:
1262,
774:
1038,
776:
1264,
779:
1266}],
1063:[,,{
776:
1268}],
1067:[,,{
776:
1272}],
1069:[,,{
776:
1260}],
1072:[,,{
774:
1233,
776:
1235}],
1075:[,,{
769:
1107}],
1077:[,,{
768:
1104,
774:
1239,
776:
1105}],
1078:[,,{
774:
1218,
776:
1245}],
1079:[,,{
776:
1247}],
1080:[,,{
768:
1117,
772:
1251,
774:
1081,
776:
1253}],
1081:[[
1080,
774]],
1082:[,,{
769:
1116}],
1086:[,,{
776:
1255}],
1091:[,,{
772:
1263,
774:
1118,
776:
1265,
779:
1267}],
1095:[,,{
776:
1269}],
1099:[,,{
776:
1273}],
1101:[,,{
776:
1261}],
1104:[[
1077,
768]],
1105:[[
1077,
776]],
1107:[[
1075,
769]],
1110:[,,{
776:
1111}],
1111:[[
1110,
776]],
1116:[[
1082,
769]],
1117:[[
1080,
768]],
1118:[[
1091,
774]],
1140:[,,{
783:
1142}],
1141:[,,{
783:
1143}],
1142:[[
1140,
783]],
1143:[[
1141,
783]],
1155:[,
230],
1156:[,
230],
1157:[,
230],
1158:[,
230],
1159:[,
230],
1217:[[
1046,
774]],
1218:[[
1078,
774]],
1232:[[
1040,
774]],
1233:[[
1072,
774]],
1234:[[
1040,
776]],
1235:[[
1072,
776]],
1238:[[
1045,
774]],
1239:[[
1077,
774]],
1240:[,,{
776:
1242}],
1241:[,,{
776:
1243}],
1242:[[
1240,
776]],
1243:[[
1241,
776]],
1244:[[
1046,
776]],
1245:[[
1078,
776]],
1246:[[
1047,
776]],
1247:[[
1079,
776]],
1250:[[
1048,
772]],
1251:[[
1080,
772]],
1252:[[
1048,
776]],
1253:[[
1080,
776]],
1254:[[
1054,
776]],
1255:[[
1086,
776]],
1256:[,,{
776:
1258}],
1257:[,,{
776:
1259}],
1258:[[
1256,
776]],
1259:[[
1257,
776]],
1260:[[
1069,
776]],
1261:[[
1101,
776]],
1262:[[
1059,
772]],
1263:[[
1091,
772]],
1264:[[
1059,
776]],
1265:[[
1091,
776]],
1266:[[
1059,
779]],
1267:[[
1091,
779]],
1268:[[
1063,
776]],
1269:[[
1095,
776]],
1272:[[
1067,
776]],
1273:[[
1099,
776]]},
5113 1280:{
1415:[[
1381,
1410],
256],
1425:[,
220],
1426:[,
230],
1427:[,
230],
1428:[,
230],
1429:[,
230],
1430:[,
220],
1431:[,
230],
1432:[,
230],
1433:[,
230],
1434:[,
222],
1435:[,
220],
1436:[,
230],
1437:[,
230],
1438:[,
230],
1439:[,
230],
1440:[,
230],
1441:[,
230],
1442:[,
220],
1443:[,
220],
1444:[,
220],
1445:[,
220],
1446:[,
220],
1447:[,
220],
1448:[,
230],
1449:[,
230],
1450:[,
220],
1451:[,
230],
1452:[,
230],
1453:[,
222],
1454:[,
228],
1455:[,
230],
1456:[,
10],
1457:[,
11],
1458:[,
12],
1459:[,
13],
1460:[,
14],
1461:[,
15],
1462:[,
16],
1463:[,
17],
1464:[,
18],
1465:[,
19],
1466:[,
19],
1467:[,
20],
1468:[,
21],
1469:[,
22],
1471:[,
23],
1473:[,
24],
1474:[,
25],
1476:[,
230],
1477:[,
220],
1479:[,
18]},
5114 1536:{
1552:[,
230],
1553:[,
230],
1554:[,
230],
1555:[,
230],
1556:[,
230],
1557:[,
230],
1558:[,
230],
1559:[,
230],
1560:[,
30],
1561:[,
31],
1562:[,
32],
1570:[[
1575,
1619]],
1571:[[
1575,
1620]],
1572:[[
1608,
1620]],
1573:[[
1575,
1621]],
1574:[[
1610,
1620]],
1575:[,,{
1619:
1570,
1620:
1571,
1621:
1573}],
1608:[,,{
1620:
1572}],
1610:[,,{
1620:
1574}],
1611:[,
27],
1612:[,
28],
1613:[,
29],
1614:[,
30],
1615:[,
31],
1616:[,
32],
1617:[,
33],
1618:[,
34],
1619:[,
230],
1620:[,
230],
1621:[,
220],
1622:[,
220],
1623:[,
230],
1624:[,
230],
1625:[,
230],
1626:[,
230],
1627:[,
230],
1628:[,
220],
1629:[,
230],
1630:[,
230],
1631:[,
220],
1648:[,
35],
1653:[[
1575,
1652],
256],
1654:[[
1608,
1652],
256],
1655:[[
1735,
1652],
256],
1656:[[
1610,
1652],
256],
1728:[[
1749,
1620]],
1729:[,,{
1620:
1730}],
1730:[[
1729,
1620]],
1746:[,,{
1620:
1747}],
1747:[[
1746,
1620]],
1749:[,,{
1620:
1728}],
1750:[,
230],
1751:[,
230],
1752:[,
230],
1753:[,
230],
1754:[,
230],
1755:[,
230],
1756:[,
230],
1759:[,
230],
1760:[,
230],
1761:[,
230],
1762:[,
230],
1763:[,
220],
1764:[,
230],
1767:[,
230],
1768:[,
230],
1770:[,
220],
1771:[,
230],
1772:[,
230],
1773:[,
220]},
5115 1792:{
1809:[,
36],
1840:[,
230],
1841:[,
220],
1842:[,
230],
1843:[,
230],
1844:[,
220],
1845:[,
230],
1846:[,
230],
1847:[,
220],
1848:[,
220],
1849:[,
220],
1850:[,
230],
1851:[,
220],
1852:[,
220],
1853:[,
230],
1854:[,
220],
1855:[,
230],
1856:[,
230],
1857:[,
230],
1858:[,
220],
1859:[,
230],
1860:[,
220],
1861:[,
230],
1862:[,
220],
1863:[,
230],
1864:[,
220],
1865:[,
230],
1866:[,
230],
2027:[,
230],
2028:[,
230],
2029:[,
230],
2030:[,
230],
2031:[,
230],
2032:[,
230],
2033:[,
230],
2034:[,
220],
2035:[,
230]},
5116 2048:{
2070:[,
230],
2071:[,
230],
2072:[,
230],
2073:[,
230],
2075:[,
230],
2076:[,
230],
2077:[,
230],
2078:[,
230],
2079:[,
230],
2080:[,
230],
2081:[,
230],
2082:[,
230],
2083:[,
230],
2085:[,
230],
2086:[,
230],
2087:[,
230],
2089:[,
230],
2090:[,
230],
2091:[,
230],
2092:[,
230],
2093:[,
230],
2137:[,
220],
2138:[,
220],
2139:[,
220],
2276:[,
230],
2277:[,
230],
2278:[,
220],
2279:[,
230],
2280:[,
230],
2281:[,
220],
2282:[,
230],
2283:[,
230],
2284:[,
230],
2285:[,
220],
2286:[,
220],
2287:[,
220],
2288:[,
27],
2289:[,
28],
2290:[,
29],
2291:[,
230],
2292:[,
230],
2293:[,
230],
2294:[,
220],
2295:[,
230],
2296:[,
230],
2297:[,
220],
2298:[,
220],
2299:[,
230],
2300:[,
230],
2301:[,
230],
2302:[,
230],
2303:[,
230]},
5117 2304:{
2344:[,,{
2364:
2345}],
2345:[[
2344,
2364]],
2352:[,,{
2364:
2353}],
2353:[[
2352,
2364]],
2355:[,,{
2364:
2356}],
2356:[[
2355,
2364]],
2364:[,
7],
2381:[,
9],
2385:[,
230],
2386:[,
220],
2387:[,
230],
2388:[,
230],
2392:[[
2325,
2364],
512],
2393:[[
2326,
2364],
512],
2394:[[
2327,
2364],
512],
2395:[[
2332,
2364],
512],
2396:[[
2337,
2364],
512],
2397:[[
2338,
2364],
512],
2398:[[
2347,
2364],
512],
2399:[[
2351,
2364],
512],
2492:[,
7],
2503:[,,{
2494:
2507,
2519:
2508}],
2507:[[
2503,
2494]],
2508:[[
2503,
2519]],
2509:[,
9],
2524:[[
2465,
2492],
512],
2525:[[
2466,
2492],
512],
2527:[[
2479,
2492],
512]},
5118 2560:{
2611:[[
2610,
2620],
512],
2614:[[
2616,
2620],
512],
2620:[,
7],
2637:[,
9],
2649:[[
2582,
2620],
512],
2650:[[
2583,
2620],
512],
2651:[[
2588,
2620],
512],
2654:[[
2603,
2620],
512],
2748:[,
7],
2765:[,
9],
68109:[,
220],
68111:[,
230],
68152:[,
230],
68153:[,
1],
68154:[,
220],
68159:[,
9],
68325:[,
230],
68326:[,
220]},
5119 2816:{
2876:[,
7],
2887:[,,{
2878:
2891,
2902:
2888,
2903:
2892}],
2888:[[
2887,
2902]],
2891:[[
2887,
2878]],
2892:[[
2887,
2903]],
2893:[,
9],
2908:[[
2849,
2876],
512],
2909:[[
2850,
2876],
512],
2962:[,,{
3031:
2964}],
2964:[[
2962,
3031]],
3014:[,,{
3006:
3018,
3031:
3020}],
3015:[,,{
3006:
3019}],
3018:[[
3014,
3006]],
3019:[[
3015,
3006]],
3020:[[
3014,
3031]],
3021:[,
9]},
5120 3072:{
3142:[,,{
3158:
3144}],
3144:[[
3142,
3158]],
3149:[,
9],
3157:[,
84],
3158:[,
91],
3260:[,
7],
3263:[,,{
3285:
3264}],
3264:[[
3263,
3285]],
3270:[,,{
3266:
3274,
3285:
3271,
3286:
3272}],
3271:[[
3270,
3285]],
3272:[[
3270,
3286]],
3274:[[
3270,
3266],,{
3285:
3275}],
3275:[[
3274,
3285]],
3277:[,
9]},
5121 3328:{
3398:[,,{
3390:
3402,
3415:
3404}],
3399:[,,{
3390:
3403}],
3402:[[
3398,
3390]],
3403:[[
3399,
3390]],
3404:[[
3398,
3415]],
3405:[,
9],
3530:[,
9],
3545:[,,{
3530:
3546,
3535:
3548,
3551:
3550}],
3546:[[
3545,
3530]],
3548:[[
3545,
3535],,{
3530:
3549}],
3549:[[
3548,
3530]],
3550:[[
3545,
3551]]},
5122 3584:{
3635:[[
3661,
3634],
256],
3640:[,
103],
3641:[,
103],
3642:[,
9],
3656:[,
107],
3657:[,
107],
3658:[,
107],
3659:[,
107],
3763:[[
3789,
3762],
256],
3768:[,
118],
3769:[,
118],
3784:[,
122],
3785:[,
122],
3786:[,
122],
3787:[,
122],
3804:[[
3755,
3737],
256],
3805:[[
3755,
3745],
256]},
5123 3840:{
3852:[[
3851],
256],
3864:[,
220],
3865:[,
220],
3893:[,
220],
3895:[,
220],
3897:[,
216],
3907:[[
3906,
4023],
512],
3917:[[
3916,
4023],
512],
3922:[[
3921,
4023],
512],
3927:[[
3926,
4023],
512],
3932:[[
3931,
4023],
512],
3945:[[
3904,
4021],
512],
3953:[,
129],
3954:[,
130],
3955:[[
3953,
3954],
512],
3956:[,
132],
3957:[[
3953,
3956],
512],
3958:[[
4018,
3968],
512],
3959:[[
4018,
3969],
256],
3960:[[
4019,
3968],
512],
3961:[[
4019,
3969],
256],
3962:[,
130],
3963:[,
130],
3964:[,
130],
3965:[,
130],
3968:[,
130],
3969:[[
3953,
3968],
512],
3970:[,
230],
3971:[,
230],
3972:[,
9],
3974:[,
230],
3975:[,
230],
3987:[[
3986,
4023],
512],
3997:[[
3996,
4023],
512],
4002:[[
4001,
4023],
512],
4007:[[
4006,
4023],
512],
4012:[[
4011,
4023],
512],
4025:[[
3984,
4021],
512],
4038:[,
220]},
5124 4096:{
4133:[,,{
4142:
4134}],
4134:[[
4133,
4142]],
4151:[,
7],
4153:[,
9],
4154:[,
9],
4237:[,
220],
4348:[[
4316],
256],
69702:[,
9],
69759:[,
9],
69785:[,,{
69818:
69786}],
69786:[[
69785,
69818]],
69787:[,,{
69818:
69788}],
69788:[[
69787,
69818]],
69797:[,,{
69818:
69803}],
69803:[[
69797,
69818]],
69817:[,
9],
69818:[,
7]},
5125 4352:{
69888:[,
230],
69889:[,
230],
69890:[,
230],
69934:[[
69937,
69927]],
69935:[[
69938,
69927]],
69937:[,,{
69927:
69934}],
69938:[,,{
69927:
69935}],
69939:[,
9],
69940:[,
9],
70003:[,
7],
70080:[,
9]},
5126 4608:{
70197:[,
9],
70198:[,
7],
70377:[,
7],
70378:[,
9]},
5127 4864:{
4957:[,
230],
4958:[,
230],
4959:[,
230],
70460:[,
7],
70471:[,,{
70462:
70475,
70487:
70476}],
70475:[[
70471,
70462]],
70476:[[
70471,
70487]],
70477:[,
9],
70502:[,
230],
70503:[,
230],
70504:[,
230],
70505:[,
230],
70506:[,
230],
70507:[,
230],
70508:[,
230],
70512:[,
230],
70513:[,
230],
70514:[,
230],
70515:[,
230],
70516:[,
230]},
5128 5120:{
70841:[,,{
70832:
70844,
70842:
70843,
70845:
70846}],
70843:[[
70841,
70842]],
70844:[[
70841,
70832]],
70846:[[
70841,
70845]],
70850:[,
9],
70851:[,
7]},
5129 5376:{
71096:[,,{
71087:
71098}],
71097:[,,{
71087:
71099}],
71098:[[
71096,
71087]],
71099:[[
71097,
71087]],
71103:[,
9],
71104:[,
7]},
5130 5632:{
71231:[,
9],
71350:[,
9],
71351:[,
7]},
5131 5888:{
5908:[,
9],
5940:[,
9],
6098:[,
9],
6109:[,
230]},
5133 6400:{
6457:[,
222],
6458:[,
230],
6459:[,
220]},
5134 6656:{
6679:[,
230],
6680:[,
220],
6752:[,
9],
6773:[,
230],
6774:[,
230],
6775:[,
230],
6776:[,
230],
6777:[,
230],
6778:[,
230],
6779:[,
230],
6780:[,
230],
6783:[,
220],
6832:[,
230],
6833:[,
230],
6834:[,
230],
6835:[,
230],
6836:[,
230],
6837:[,
220],
6838:[,
220],
6839:[,
220],
6840:[,
220],
6841:[,
220],
6842:[,
220],
6843:[,
230],
6844:[,
230],
6845:[,
220]},
5135 6912:{
6917:[,,{
6965:
6918}],
6918:[[
6917,
6965]],
6919:[,,{
6965:
6920}],
6920:[[
6919,
6965]],
6921:[,,{
6965:
6922}],
6922:[[
6921,
6965]],
6923:[,,{
6965:
6924}],
6924:[[
6923,
6965]],
6925:[,,{
6965:
6926}],
6926:[[
6925,
6965]],
6929:[,,{
6965:
6930}],
6930:[[
6929,
6965]],
6964:[,
7],
6970:[,,{
6965:
6971}],
6971:[[
6970,
6965]],
6972:[,,{
6965:
6973}],
6973:[[
6972,
6965]],
6974:[,,{
6965:
6976}],
6975:[,,{
6965:
6977}],
6976:[[
6974,
6965]],
6977:[[
6975,
6965]],
6978:[,,{
6965:
6979}],
6979:[[
6978,
6965]],
6980:[,
9],
7019:[,
230],
7020:[,
220],
7021:[,
230],
7022:[,
230],
7023:[,
230],
7024:[,
230],
7025:[,
230],
7026:[,
230],
7027:[,
230],
7082:[,
9],
7083:[,
9],
7142:[,
7],
7154:[,
9],
7155:[,
9]},
5136 7168:{
7223:[,
7],
7376:[,
230],
7377:[,
230],
7378:[,
230],
7380:[,
1],
7381:[,
220],
7382:[,
220],
7383:[,
220],
7384:[,
220],
7385:[,
220],
7386:[,
230],
7387:[,
230],
7388:[,
220],
7389:[,
220],
7390:[,
220],
7391:[,
220],
7392:[,
230],
7394:[,
1],
7395:[,
1],
7396:[,
1],
7397:[,
1],
7398:[,
1],
7399:[,
1],
7400:[,
1],
7405:[,
220],
7412:[,
230],
7416:[,
230],
7417:[,
230]},
5137 7424:{
7468:[[
65],
256],
7469:[[
198],
256],
7470:[[
66],
256],
7472:[[
68],
256],
7473:[[
69],
256],
7474:[[
398],
256],
7475:[[
71],
256],
7476:[[
72],
256],
7477:[[
73],
256],
7478:[[
74],
256],
7479:[[
75],
256],
7480:[[
76],
256],
7481:[[
77],
256],
7482:[[
78],
256],
7484:[[
79],
256],
7485:[[
546],
256],
7486:[[
80],
256],
7487:[[
82],
256],
7488:[[
84],
256],
7489:[[
85],
256],
7490:[[
87],
256],
7491:[[
97],
256],
7492:[[
592],
256],
7493:[[
593],
256],
7494:[[
7426],
256],
7495:[[
98],
256],
7496:[[
100],
256],
7497:[[
101],
256],
7498:[[
601],
256],
7499:[[
603],
256],
7500:[[
604],
256],
7501:[[
103],
256],
7503:[[
107],
256],
7504:[[
109],
256],
7505:[[
331],
256],
7506:[[
111],
256],
7507:[[
596],
256],
7508:[[
7446],
256],
7509:[[
7447],
256],
7510:[[
112],
256],
7511:[[
116],
256],
7512:[[
117],
256],
7513:[[
7453],
256],
7514:[[
623],
256],
7515:[[
118],
256],
7516:[[
7461],
256],
7517:[[
946],
256],
7518:[[
947],
256],
7519:[[
948],
256],
7520:[[
966],
256],
7521:[[
967],
256],
7522:[[
105],
256],
7523:[[
114],
256],
7524:[[
117],
256],
7525:[[
118],
256],
7526:[[
946],
256],
7527:[[
947],
256],
7528:[[
961],
256],
7529:[[
966],
256],
7530:[[
967],
256],
7544:[[
1085],
256],
7579:[[
594],
256],
7580:[[
99],
256],
7581:[[
597],
256],
7582:[[
240],
256],
7583:[[
604],
256],
7584:[[
102],
256],
7585:[[
607],
256],
7586:[[
609],
256],
7587:[[
613],
256],
7588:[[
616],
256],
7589:[[
617],
256],
7590:[[
618],
256],
7591:[[
7547],
256],
7592:[[
669],
256],
7593:[[
621],
256],
7594:[[
7557],
256],
7595:[[
671],
256],
7596:[[
625],
256],
7597:[[
624],
256],
7598:[[
626],
256],
7599:[[
627],
256],
7600:[[
628],
256],
7601:[[
629],
256],
7602:[[
632],
256],
7603:[[
642],
256],
7604:[[
643],
256],
7605:[[
427],
256],
7606:[[
649],
256],
7607:[[
650],
256],
7608:[[
7452],
256],
7609:[[
651],
256],
7610:[[
652],
256],
7611:[[
122],
256],
7612:[[
656],
256],
7613:[[
657],
256],
7614:[[
658],
256],
7615:[[
952],
256],
7616:[,
230],
7617:[,
230],
7618:[,
220],
7619:[,
230],
7620:[,
230],
7621:[,
230],
7622:[,
230],
7623:[,
230],
7624:[,
230],
7625:[,
230],
7626:[,
220],
7627:[,
230],
7628:[,
230],
7629:[,
234],
7630:[,
214],
7631:[,
220],
7632:[,
202],
7633:[,
230],
7634:[,
230],
7635:[,
230],
7636:[,
230],
7637:[,
230],
7638:[,
230],
7639:[,
230],
7640:[,
230],
7641:[,
230],
7642:[,
230],
7643:[,
230],
7644:[,
230],
7645:[,
230],
7646:[,
230],
7647:[,
230],
7648:[,
230],
7649:[,
230],
7650:[,
230],
7651:[,
230],
7652:[,
230],
7653:[,
230],
7654:[,
230],
7655:[,
230],
7656:[,
230],
7657:[,
230],
7658:[,
230],
7659:[,
230],
7660:[,
230],
7661:[,
230],
7662:[,
230],
7663:[,
230],
7664:[,
230],
7665:[,
230],
7666:[,
230],
7667:[,
230],
7668:[,
230],
7669:[,
230],
7676:[,
233],
7677:[,
220],
7678:[,
230],
7679:[,
220]},
5138 7680:{
7680:[[
65,
805]],
7681:[[
97,
805]],
7682:[[
66,
775]],
7683:[[
98,
775]],
7684:[[
66,
803]],
7685:[[
98,
803]],
7686:[[
66,
817]],
7687:[[
98,
817]],
7688:[[
199,
769]],
7689:[[
231,
769]],
7690:[[
68,
775]],
7691:[[
100,
775]],
7692:[[
68,
803]],
7693:[[
100,
803]],
7694:[[
68,
817]],
7695:[[
100,
817]],
7696:[[
68,
807]],
7697:[[
100,
807]],
7698:[[
68,
813]],
7699:[[
100,
813]],
7700:[[
274,
768]],
7701:[[
275,
768]],
7702:[[
274,
769]],
7703:[[
275,
769]],
7704:[[
69,
813]],
7705:[[
101,
813]],
7706:[[
69,
816]],
7707:[[
101,
816]],
7708:[[
552,
774]],
7709:[[
553,
774]],
7710:[[
70,
775]],
7711:[[
102,
775]],
7712:[[
71,
772]],
7713:[[
103,
772]],
7714:[[
72,
775]],
7715:[[
104,
775]],
7716:[[
72,
803]],
7717:[[
104,
803]],
7718:[[
72,
776]],
7719:[[
104,
776]],
7720:[[
72,
807]],
7721:[[
104,
807]],
7722:[[
72,
814]],
7723:[[
104,
814]],
7724:[[
73,
816]],
7725:[[
105,
816]],
7726:[[
207,
769]],
7727:[[
239,
769]],
7728:[[
75,
769]],
7729:[[
107,
769]],
7730:[[
75,
803]],
7731:[[
107,
803]],
7732:[[
75,
817]],
7733:[[
107,
817]],
7734:[[
76,
803],,{
772:
7736}],
7735:[[
108,
803],,{
772:
7737}],
7736:[[
7734,
772]],
7737:[[
7735,
772]],
7738:[[
76,
817]],
7739:[[
108,
817]],
7740:[[
76,
813]],
7741:[[
108,
813]],
7742:[[
77,
769]],
7743:[[
109,
769]],
7744:[[
77,
775]],
7745:[[
109,
775]],
7746:[[
77,
803]],
7747:[[
109,
803]],
7748:[[
78,
775]],
7749:[[
110,
775]],
7750:[[
78,
803]],
7751:[[
110,
803]],
7752:[[
78,
817]],
7753:[[
110,
817]],
7754:[[
78,
813]],
7755:[[
110,
813]],
7756:[[
213,
769]],
7757:[[
245,
769]],
7758:[[
213,
776]],
7759:[[
245,
776]],
7760:[[
332,
768]],
7761:[[
333,
768]],
7762:[[
332,
769]],
7763:[[
333,
769]],
7764:[[
80,
769]],
7765:[[
112,
769]],
7766:[[
80,
775]],
7767:[[
112,
775]],
7768:[[
82,
775]],
7769:[[
114,
775]],
7770:[[
82,
803],,{
772:
7772}],
7771:[[
114,
803],,{
772:
7773}],
7772:[[
7770,
772]],
7773:[[
7771,
772]],
7774:[[
82,
817]],
7775:[[
114,
817]],
7776:[[
83,
775]],
7777:[[
115,
775]],
7778:[[
83,
803],,{
775:
7784}],
7779:[[
115,
803],,{
775:
7785}],
7780:[[
346,
775]],
7781:[[
347,
775]],
7782:[[
352,
775]],
7783:[[
353,
775]],
7784:[[
7778,
775]],
7785:[[
7779,
775]],
7786:[[
84,
775]],
7787:[[
116,
775]],
7788:[[
84,
803]],
7789:[[
116,
803]],
7790:[[
84,
817]],
7791:[[
116,
817]],
7792:[[
84,
813]],
7793:[[
116,
813]],
7794:[[
85,
804]],
7795:[[
117,
804]],
7796:[[
85,
816]],
7797:[[
117,
816]],
7798:[[
85,
813]],
7799:[[
117,
813]],
7800:[[
360,
769]],
7801:[[
361,
769]],
7802:[[
362,
776]],
7803:[[
363,
776]],
7804:[[
86,
771]],
7805:[[
118,
771]],
7806:[[
86,
803]],
7807:[[
118,
803]],
7808:[[
87,
768]],
7809:[[
119,
768]],
7810:[[
87,
769]],
7811:[[
119,
769]],
7812:[[
87,
776]],
7813:[[
119,
776]],
7814:[[
87,
775]],
7815:[[
119,
775]],
7816:[[
87,
803]],
7817:[[
119,
803]],
7818:[[
88,
775]],
7819:[[
120,
775]],
7820:[[
88,
776]],
7821:[[
120,
776]],
7822:[[
89,
775]],
7823:[[
121,
775]],
7824:[[
90,
770]],
7825:[[
122,
770]],
7826:[[
90,
803]],
7827:[[
122,
803]],
7828:[[
90,
817]],
7829:[[
122,
817]],
7830:[[
104,
817]],
7831:[[
116,
776]],
7832:[[
119,
778]],
7833:[[
121,
778]],
7834:[[
97,
702],
256],
7835:[[
383,
775]],
7840:[[
65,
803],,{
770:
7852,
774:
7862}],
7841:[[
97,
803],,{
770:
7853,
774:
7863}],
7842:[[
65,
777]],
7843:[[
97,
777]],
7844:[[
194,
769]],
7845:[[
226,
769]],
7846:[[
194,
768]],
7847:[[
226,
768]],
7848:[[
194,
777]],
7849:[[
226,
777]],
7850:[[
194,
771]],
7851:[[
226,
771]],
7852:[[
7840,
770]],
7853:[[
7841,
770]],
7854:[[
258,
769]],
7855:[[
259,
769]],
7856:[[
258,
768]],
7857:[[
259,
768]],
7858:[[
258,
777]],
7859:[[
259,
777]],
7860:[[
258,
771]],
7861:[[
259,
771]],
7862:[[
7840,
774]],
7863:[[
7841,
774]],
7864:[[
69,
803],,{
770:
7878}],
7865:[[
101,
803],,{
770:
7879}],
7866:[[
69,
777]],
7867:[[
101,
777]],
7868:[[
69,
771]],
7869:[[
101,
771]],
7870:[[
202,
769]],
7871:[[
234,
769]],
7872:[[
202,
768]],
7873:[[
234,
768]],
7874:[[
202,
777]],
7875:[[
234,
777]],
7876:[[
202,
771]],
7877:[[
234,
771]],
7878:[[
7864,
770]],
7879:[[
7865,
770]],
7880:[[
73,
777]],
7881:[[
105,
777]],
7882:[[
73,
803]],
7883:[[
105,
803]],
7884:[[
79,
803],,{
770:
7896}],
7885:[[
111,
803],,{
770:
7897}],
7886:[[
79,
777]],
7887:[[
111,
777]],
7888:[[
212,
769]],
7889:[[
244,
769]],
7890:[[
212,
768]],
7891:[[
244,
768]],
7892:[[
212,
777]],
7893:[[
244,
777]],
7894:[[
212,
771]],
7895:[[
244,
771]],
7896:[[
7884,
770]],
7897:[[
7885,
770]],
7898:[[
416,
769]],
7899:[[
417,
769]],
7900:[[
416,
768]],
7901:[[
417,
768]],
7902:[[
416,
777]],
7903:[[
417,
777]],
7904:[[
416,
771]],
7905:[[
417,
771]],
7906:[[
416,
803]],
7907:[[
417,
803]],
7908:[[
85,
803]],
7909:[[
117,
803]],
7910:[[
85,
777]],
7911:[[
117,
777]],
7912:[[
431,
769]],
7913:[[
432,
769]],
7914:[[
431,
768]],
7915:[[
432,
768]],
7916:[[
431,
777]],
7917:[[
432,
777]],
7918:[[
431,
771]],
7919:[[
432,
771]],
7920:[[
431,
803]],
7921:[[
432,
803]],
7922:[[
89,
768]],
7923:[[
121,
768]],
7924:[[
89,
803]],
7925:[[
121,
803]],
7926:[[
89,
777]],
7927:[[
121,
777]],
7928:[[
89,
771]],
7929:[[
121,
771]]},
5139 7936:{
7936:[[
945,
787],,{
768:
7938,
769:
7940,
834:
7942,
837:
8064}],
7937:[[
945,
788],,{
768:
7939,
769:
7941,
834:
7943,
837:
8065}],
7938:[[
7936,
768],,{
837:
8066}],
7939:[[
7937,
768],,{
837:
8067}],
7940:[[
7936,
769],,{
837:
8068}],
7941:[[
7937,
769],,{
837:
8069}],
7942:[[
7936,
834],,{
837:
8070}],
7943:[[
7937,
834],,{
837:
8071}],
7944:[[
913,
787],,{
768:
7946,
769:
7948,
834:
7950,
837:
8072}],
7945:[[
913,
788],,{
768:
7947,
769:
7949,
834:
7951,
837:
8073}],
7946:[[
7944,
768],,{
837:
8074}],
7947:[[
7945,
768],,{
837:
8075}],
7948:[[
7944,
769],,{
837:
8076}],
7949:[[
7945,
769],,{
837:
8077}],
7950:[[
7944,
834],,{
837:
8078}],
7951:[[
7945,
834],,{
837:
8079}],
7952:[[
949,
787],,{
768:
7954,
769:
7956}],
7953:[[
949,
788],,{
768:
7955,
769:
7957}],
7954:[[
7952,
768]],
7955:[[
7953,
768]],
7956:[[
7952,
769]],
7957:[[
7953,
769]],
7960:[[
917,
787],,{
768:
7962,
769:
7964}],
7961:[[
917,
788],,{
768:
7963,
769:
7965}],
7962:[[
7960,
768]],
7963:[[
7961,
768]],
7964:[[
7960,
769]],
7965:[[
7961,
769]],
7968:[[
951,
787],,{
768:
7970,
769:
7972,
834:
7974,
837:
8080}],
7969:[[
951,
788],,{
768:
7971,
769:
7973,
834:
7975,
837:
8081}],
7970:[[
7968,
768],,{
837:
8082}],
7971:[[
7969,
768],,{
837:
8083}],
7972:[[
7968,
769],,{
837:
8084}],
7973:[[
7969,
769],,{
837:
8085}],
7974:[[
7968,
834],,{
837:
8086}],
7975:[[
7969,
834],,{
837:
8087}],
7976:[[
919,
787],,{
768:
7978,
769:
7980,
834:
7982,
837:
8088}],
7977:[[
919,
788],,{
768:
7979,
769:
7981,
834:
7983,
837:
8089}],
7978:[[
7976,
768],,{
837:
8090}],
7979:[[
7977,
768],,{
837:
8091}],
7980:[[
7976,
769],,{
837:
8092}],
7981:[[
7977,
769],,{
837:
8093}],
7982:[[
7976,
834],,{
837:
8094}],
7983:[[
7977,
834],,{
837:
8095}],
7984:[[
953,
787],,{
768:
7986,
769:
7988,
834:
7990}],
7985:[[
953,
788],,{
768:
7987,
769:
7989,
834:
7991}],
7986:[[
7984,
768]],
7987:[[
7985,
768]],
7988:[[
7984,
769]],
7989:[[
7985,
769]],
7990:[[
7984,
834]],
7991:[[
7985,
834]],
7992:[[
921,
787],,{
768:
7994,
769:
7996,
834:
7998}],
7993:[[
921,
788],,{
768:
7995,
769:
7997,
834:
7999}],
7994:[[
7992,
768]],
7995:[[
7993,
768]],
7996:[[
7992,
769]],
7997:[[
7993,
769]],
7998:[[
7992,
834]],
7999:[[
7993,
834]],
8000:[[
959,
787],,{
768:
8002,
769:
8004}],
8001:[[
959,
788],,{
768:
8003,
769:
8005}],
8002:[[
8000,
768]],
8003:[[
8001,
768]],
8004:[[
8000,
769]],
8005:[[
8001,
769]],
8008:[[
927,
787],,{
768:
8010,
769:
8012}],
8009:[[
927,
788],,{
768:
8011,
769:
8013}],
8010:[[
8008,
768]],
8011:[[
8009,
768]],
8012:[[
8008,
769]],
8013:[[
8009,
769]],
8016:[[
965,
787],,{
768:
8018,
769:
8020,
834:
8022}],
8017:[[
965,
788],,{
768:
8019,
769:
8021,
834:
8023}],
8018:[[
8016,
768]],
8019:[[
8017,
768]],
8020:[[
8016,
769]],
8021:[[
8017,
769]],
8022:[[
8016,
834]],
8023:[[
8017,
834]],
8025:[[
933,
788],,{
768:
8027,
769:
8029,
834:
8031}],
8027:[[
8025,
768]],
8029:[[
8025,
769]],
8031:[[
8025,
834]],
8032:[[
969,
787],,{
768:
8034,
769:
8036,
834:
8038,
837:
8096}],
8033:[[
969,
788],,{
768:
8035,
769:
8037,
834:
8039,
837:
8097}],
8034:[[
8032,
768],,{
837:
8098}],
8035:[[
8033,
768],,{
837:
8099}],
8036:[[
8032,
769],,{
837:
8100}],
8037:[[
8033,
769],,{
837:
8101}],
8038:[[
8032,
834],,{
837:
8102}],
8039:[[
8033,
834],,{
837:
8103}],
8040:[[
937,
787],,{
768:
8042,
769:
8044,
834:
8046,
837:
8104}],
8041:[[
937,
788],,{
768:
8043,
769:
8045,
834:
8047,
837:
8105}],
8042:[[
8040,
768],,{
837:
8106}],
8043:[[
8041,
768],,{
837:
8107}],
8044:[[
8040,
769],,{
837:
8108}],
8045:[[
8041,
769],,{
837:
8109}],
8046:[[
8040,
834],,{
837:
8110}],
8047:[[
8041,
834],,{
837:
8111}],
8048:[[
945,
768],,{
837:
8114}],
8049:[[
940]],
8050:[[
949,
768]],
8051:[[
941]],
8052:[[
951,
768],,{
837:
8130}],
8053:[[
942]],
8054:[[
953,
768]],
8055:[[
943]],
8056:[[
959,
768]],
8057:[[
972]],
8058:[[
965,
768]],
8059:[[
973]],
8060:[[
969,
768],,{
837:
8178}],
8061:[[
974]],
8064:[[
7936,
837]],
8065:[[
7937,
837]],
8066:[[
7938,
837]],
8067:[[
7939,
837]],
8068:[[
7940,
837]],
8069:[[
7941,
837]],
8070:[[
7942,
837]],
8071:[[
7943,
837]],
8072:[[
7944,
837]],
8073:[[
7945,
837]],
8074:[[
7946,
837]],
8075:[[
7947,
837]],
8076:[[
7948,
837]],
8077:[[
7949,
837]],
8078:[[
7950,
837]],
8079:[[
7951,
837]],
8080:[[
7968,
837]],
8081:[[
7969,
837]],
8082:[[
7970,
837]],
8083:[[
7971,
837]],
8084:[[
7972,
837]],
8085:[[
7973,
837]],
8086:[[
7974,
837]],
8087:[[
7975,
837]],
8088:[[
7976,
837]],
8089:[[
7977,
837]],
8090:[[
7978,
837]],
8091:[[
7979,
837]],
8092:[[
7980,
837]],
8093:[[
7981,
837]],
8094:[[
7982,
837]],
8095:[[
7983,
837]],
8096:[[
8032,
837]],
8097:[[
8033,
837]],
8098:[[
8034,
837]],
8099:[[
8035,
837]],
8100:[[
8036,
837]],
8101:[[
8037,
837]],
8102:[[
8038,
837]],
8103:[[
8039,
837]],
8104:[[
8040,
837]],
8105:[[
8041,
837]],
8106:[[
8042,
837]],
8107:[[
8043,
837]],
8108:[[
8044,
837]],
8109:[[
8045,
837]],
8110:[[
8046,
837]],
8111:[[
8047,
837]],
8112:[[
945,
774]],
8113:[[
945,
772]],
8114:[[
8048,
837]],
8115:[[
945,
837]],
8116:[[
940,
837]],
8118:[[
945,
834],,{
837:
8119}],
8119:[[
8118,
837]],
8120:[[
913,
774]],
8121:[[
913,
772]],
8122:[[
913,
768]],
8123:[[
902]],
8124:[[
913,
837]],
8125:[[
32,
787],
256],
8126:[[
953]],
8127:[[
32,
787],
256,{
768:
8141,
769:
8142,
834:
8143}],
8128:[[
32,
834],
256],
8129:[[
168,
834]],
8130:[[
8052,
837]],
8131:[[
951,
837]],
8132:[[
942,
837]],
8134:[[
951,
834],,{
837:
8135}],
8135:[[
8134,
837]],
8136:[[
917,
768]],
8137:[[
904]],
8138:[[
919,
768]],
8139:[[
905]],
8140:[[
919,
837]],
8141:[[
8127,
768]],
8142:[[
8127,
769]],
8143:[[
8127,
834]],
8144:[[
953,
774]],
8145:[[
953,
772]],
8146:[[
970,
768]],
8147:[[
912]],
8150:[[
953,
834]],
8151:[[
970,
834]],
8152:[[
921,
774]],
8153:[[
921,
772]],
8154:[[
921,
768]],
8155:[[
906]],
8157:[[
8190,
768]],
8158:[[
8190,
769]],
8159:[[
8190,
834]],
8160:[[
965,
774]],
8161:[[
965,
772]],
8162:[[
971,
768]],
8163:[[
944]],
8164:[[
961,
787]],
8165:[[
961,
788]],
8166:[[
965,
834]],
8167:[[
971,
834]],
8168:[[
933,
774]],
8169:[[
933,
772]],
8170:[[
933,
768]],
8171:[[
910]],
8172:[[
929,
788]],
8173:[[
168,
768]],
8174:[[
901]],
8175:[[
96]],
8178:[[
8060,
837]],
8179:[[
969,
837]],
8180:[[
974,
837]],
8182:[[
969,
834],,{
837:
8183}],
8183:[[
8182,
837]],
8184:[[
927,
768]],
8185:[[
908]],
8186:[[
937,
768]],
8187:[[
911]],
8188:[[
937,
837]],
8189:[[
180]],
8190:[[
32,
788],
256,{
768:
8157,
769:
8158,
834:
8159}]},
5140 8192:{
8192:[[
8194]],
8193:[[
8195]],
8194:[[
32],
256],
8195:[[
32],
256],
8196:[[
32],
256],
8197:[[
32],
256],
8198:[[
32],
256],
8199:[[
32],
256],
8200:[[
32],
256],
8201:[[
32],
256],
8202:[[
32],
256],
8209:[[
8208],
256],
8215:[[
32,
819],
256],
8228:[[
46],
256],
8229:[[
46,
46],
256],
8230:[[
46,
46,
46],
256],
8239:[[
32],
256],
8243:[[
8242,
8242],
256],
8244:[[
8242,
8242,
8242],
256],
8246:[[
8245,
8245],
256],
8247:[[
8245,
8245,
8245],
256],
8252:[[
33,
33],
256],
8254:[[
32,
773],
256],
8263:[[
63,
63],
256],
8264:[[
63,
33],
256],
8265:[[
33,
63],
256],
8279:[[
8242,
8242,
8242,
8242],
256],
8287:[[
32],
256],
8304:[[
48],
256],
8305:[[
105],
256],
8308:[[
52],
256],
8309:[[
53],
256],
8310:[[
54],
256],
8311:[[
55],
256],
8312:[[
56],
256],
8313:[[
57],
256],
8314:[[
43],
256],
8315:[[
8722],
256],
8316:[[
61],
256],
8317:[[
40],
256],
8318:[[
41],
256],
8319:[[
110],
256],
8320:[[
48],
256],
8321:[[
49],
256],
8322:[[
50],
256],
8323:[[
51],
256],
8324:[[
52],
256],
8325:[[
53],
256],
8326:[[
54],
256],
8327:[[
55],
256],
8328:[[
56],
256],
8329:[[
57],
256],
8330:[[
43],
256],
8331:[[
8722],
256],
8332:[[
61],
256],
8333:[[
40],
256],
8334:[[
41],
256],
8336:[[
97],
256],
8337:[[
101],
256],
8338:[[
111],
256],
8339:[[
120],
256],
8340:[[
601],
256],
8341:[[
104],
256],
8342:[[
107],
256],
8343:[[
108],
256],
8344:[[
109],
256],
8345:[[
110],
256],
8346:[[
112],
256],
8347:[[
115],
256],
8348:[[
116],
256],
8360:[[
82,
115],
256],
8400:[,
230],
8401:[,
230],
8402:[,
1],
8403:[,
1],
8404:[,
230],
8405:[,
230],
8406:[,
230],
8407:[,
230],
8408:[,
1],
8409:[,
1],
8410:[,
1],
8411:[,
230],
8412:[,
230],
8417:[,
230],
8421:[,
1],
8422:[,
1],
8423:[,
230],
8424:[,
220],
8425:[,
230],
8426:[,
1],
8427:[,
1],
8428:[,
220],
8429:[,
220],
8430:[,
220],
8431:[,
220],
8432:[,
230]},
5141 8448:{
8448:[[
97,
47,
99],
256],
8449:[[
97,
47,
115],
256],
8450:[[
67],
256],
8451:[[
176,
67],
256],
8453:[[
99,
47,
111],
256],
8454:[[
99,
47,
117],
256],
8455:[[
400],
256],
8457:[[
176,
70],
256],
8458:[[
103],
256],
8459:[[
72],
256],
8460:[[
72],
256],
8461:[[
72],
256],
8462:[[
104],
256],
8463:[[
295],
256],
8464:[[
73],
256],
8465:[[
73],
256],
8466:[[
76],
256],
8467:[[
108],
256],
8469:[[
78],
256],
8470:[[
78,
111],
256],
8473:[[
80],
256],
8474:[[
81],
256],
8475:[[
82],
256],
8476:[[
82],
256],
8477:[[
82],
256],
8480:[[
83,
77],
256],
8481:[[
84,
69,
76],
256],
8482:[[
84,
77],
256],
8484:[[
90],
256],
8486:[[
937]],
8488:[[
90],
256],
8490:[[
75]],
8491:[[
197]],
8492:[[
66],
256],
8493:[[
67],
256],
8495:[[
101],
256],
8496:[[
69],
256],
8497:[[
70],
256],
8499:[[
77],
256],
8500:[[
111],
256],
8501:[[
1488],
256],
8502:[[
1489],
256],
8503:[[
1490],
256],
8504:[[
1491],
256],
8505:[[
105],
256],
8507:[[
70,
65,
88],
256],
8508:[[
960],
256],
8509:[[
947],
256],
8510:[[
915],
256],
8511:[[
928],
256],
8512:[[
8721],
256],
8517:[[
68],
256],
8518:[[
100],
256],
8519:[[
101],
256],
8520:[[
105],
256],
8521:[[
106],
256],
8528:[[
49,
8260,
55],
256],
8529:[[
49,
8260,
57],
256],
8530:[[
49,
8260,
49,
48],
256],
8531:[[
49,
8260,
51],
256],
8532:[[
50,
8260,
51],
256],
8533:[[
49,
8260,
53],
256],
8534:[[
50,
8260,
53],
256],
8535:[[
51,
8260,
53],
256],
8536:[[
52,
8260,
53],
256],
8537:[[
49,
8260,
54],
256],
8538:[[
53,
8260,
54],
256],
8539:[[
49,
8260,
56],
256],
8540:[[
51,
8260,
56],
256],
8541:[[
53,
8260,
56],
256],
8542:[[
55,
8260,
56],
256],
8543:[[
49,
8260],
256],
8544:[[
73],
256],
8545:[[
73,
73],
256],
8546:[[
73,
73,
73],
256],
8547:[[
73,
86],
256],
8548:[[
86],
256],
8549:[[
86,
73],
256],
8550:[[
86,
73,
73],
256],
8551:[[
86,
73,
73,
73],
256],
8552:[[
73,
88],
256],
8553:[[
88],
256],
8554:[[
88,
73],
256],
8555:[[
88,
73,
73],
256],
8556:[[
76],
256],
8557:[[
67],
256],
8558:[[
68],
256],
8559:[[
77],
256],
8560:[[
105],
256],
8561:[[
105,
105],
256],
8562:[[
105,
105,
105],
256],
8563:[[
105,
118],
256],
8564:[[
118],
256],
8565:[[
118,
105],
256],
8566:[[
118,
105,
105],
256],
8567:[[
118,
105,
105,
105],
256],
8568:[[
105,
120],
256],
8569:[[
120],
256],
8570:[[
120,
105],
256],
8571:[[
120,
105,
105],
256],
8572:[[
108],
256],
8573:[[
99],
256],
8574:[[
100],
256],
8575:[[
109],
256],
8585:[[
48,
8260,
51],
256],
8592:[,,{
824:
8602}],
8594:[,,{
824:
8603}],
8596:[,,{
824:
8622}],
8602:[[
8592,
824]],
8603:[[
8594,
824]],
8622:[[
8596,
824]],
8653:[[
8656,
824]],
8654:[[
8660,
824]],
8655:[[
8658,
824]],
8656:[,,{
824:
8653}],
8658:[,,{
824:
8655}],
8660:[,,{
824:
8654}]},
5142 8704:{
8707:[,,{
824:
8708}],
8708:[[
8707,
824]],
8712:[,,{
824:
8713}],
8713:[[
8712,
824]],
8715:[,,{
824:
8716}],
8716:[[
8715,
824]],
8739:[,,{
824:
8740}],
8740:[[
8739,
824]],
8741:[,,{
824:
8742}],
8742:[[
8741,
824]],
8748:[[
8747,
8747],
256],
8749:[[
8747,
8747,
8747],
256],
8751:[[
8750,
8750],
256],
8752:[[
8750,
8750,
8750],
256],
8764:[,,{
824:
8769}],
8769:[[
8764,
824]],
8771:[,,{
824:
8772}],
8772:[[
8771,
824]],
8773:[,,{
824:
8775}],
8775:[[
8773,
824]],
8776:[,,{
824:
8777}],
8777:[[
8776,
824]],
8781:[,,{
824:
8813}],
8800:[[
61,
824]],
8801:[,,{
824:
8802}],
8802:[[
8801,
824]],
8804:[,,{
824:
8816}],
8805:[,,{
824:
8817}],
8813:[[
8781,
824]],
8814:[[
60,
824]],
8815:[[
62,
824]],
8816:[[
8804,
824]],
8817:[[
8805,
824]],
8818:[,,{
824:
8820}],
8819:[,,{
824:
8821}],
8820:[[
8818,
824]],
8821:[[
8819,
824]],
8822:[,,{
824:
8824}],
8823:[,,{
824:
8825}],
8824:[[
8822,
824]],
8825:[[
8823,
824]],
8826:[,,{
824:
8832}],
8827:[,,{
824:
8833}],
8828:[,,{
824:
8928}],
8829:[,,{
824:
8929}],
8832:[[
8826,
824]],
8833:[[
8827,
824]],
8834:[,,{
824:
8836}],
8835:[,,{
824:
8837}],
8836:[[
8834,
824]],
8837:[[
8835,
824]],
8838:[,,{
824:
8840}],
8839:[,,{
824:
8841}],
8840:[[
8838,
824]],
8841:[[
8839,
824]],
8849:[,,{
824:
8930}],
8850:[,,{
824:
8931}],
8866:[,,{
824:
8876}],
8872:[,,{
824:
8877}],
8873:[,,{
824:
8878}],
8875:[,,{
824:
8879}],
8876:[[
8866,
824]],
8877:[[
8872,
824]],
8878:[[
8873,
824]],
8879:[[
8875,
824]],
8882:[,,{
824:
8938}],
8883:[,,{
824:
8939}],
8884:[,,{
824:
8940}],
8885:[,,{
824:
8941}],
8928:[[
8828,
824]],
8929:[[
8829,
824]],
8930:[[
8849,
824]],
8931:[[
8850,
824]],
8938:[[
8882,
824]],
8939:[[
8883,
824]],
8940:[[
8884,
824]],
8941:[[
8885,
824]]},
5143 8960:{
9001:[[
12296]],
9002:[[
12297]]},
5144 9216:{
9312:[[
49],
256],
9313:[[
50],
256],
9314:[[
51],
256],
9315:[[
52],
256],
9316:[[
53],
256],
9317:[[
54],
256],
9318:[[
55],
256],
9319:[[
56],
256],
9320:[[
57],
256],
9321:[[
49,
48],
256],
9322:[[
49,
49],
256],
9323:[[
49,
50],
256],
9324:[[
49,
51],
256],
9325:[[
49,
52],
256],
9326:[[
49,
53],
256],
9327:[[
49,
54],
256],
9328:[[
49,
55],
256],
9329:[[
49,
56],
256],
9330:[[
49,
57],
256],
9331:[[
50,
48],
256],
9332:[[
40,
49,
41],
256],
9333:[[
40,
50,
41],
256],
9334:[[
40,
51,
41],
256],
9335:[[
40,
52,
41],
256],
9336:[[
40,
53,
41],
256],
9337:[[
40,
54,
41],
256],
9338:[[
40,
55,
41],
256],
9339:[[
40,
56,
41],
256],
9340:[[
40,
57,
41],
256],
9341:[[
40,
49,
48,
41],
256],
9342:[[
40,
49,
49,
41],
256],
9343:[[
40,
49,
50,
41],
256],
9344:[[
40,
49,
51,
41],
256],
9345:[[
40,
49,
52,
41],
256],
9346:[[
40,
49,
53,
41],
256],
9347:[[
40,
49,
54,
41],
256],
9348:[[
40,
49,
55,
41],
256],
9349:[[
40,
49,
56,
41],
256],
9350:[[
40,
49,
57,
41],
256],
9351:[[
40,
50,
48,
41],
256],
9352:[[
49,
46],
256],
9353:[[
50,
46],
256],
9354:[[
51,
46],
256],
9355:[[
52,
46],
256],
9356:[[
53,
46],
256],
9357:[[
54,
46],
256],
9358:[[
55,
46],
256],
9359:[[
56,
46],
256],
9360:[[
57,
46],
256],
9361:[[
49,
48,
46],
256],
9362:[[
49,
49,
46],
256],
9363:[[
49,
50,
46],
256],
9364:[[
49,
51,
46],
256],
9365:[[
49,
52,
46],
256],
9366:[[
49,
53,
46],
256],
9367:[[
49,
54,
46],
256],
9368:[[
49,
55,
46],
256],
9369:[[
49,
56,
46],
256],
9370:[[
49,
57,
46],
256],
9371:[[
50,
48,
46],
256],
9372:[[
40,
97,
41],
256],
9373:[[
40,
98,
41],
256],
9374:[[
40,
99,
41],
256],
9375:[[
40,
100,
41],
256],
9376:[[
40,
101,
41],
256],
9377:[[
40,
102,
41],
256],
9378:[[
40,
103,
41],
256],
9379:[[
40,
104,
41],
256],
9380:[[
40,
105,
41],
256],
9381:[[
40,
106,
41],
256],
9382:[[
40,
107,
41],
256],
9383:[[
40,
108,
41],
256],
9384:[[
40,
109,
41],
256],
9385:[[
40,
110,
41],
256],
9386:[[
40,
111,
41],
256],
9387:[[
40,
112,
41],
256],
9388:[[
40,
113,
41],
256],
9389:[[
40,
114,
41],
256],
9390:[[
40,
115,
41],
256],
9391:[[
40,
116,
41],
256],
9392:[[
40,
117,
41],
256],
9393:[[
40,
118,
41],
256],
9394:[[
40,
119,
41],
256],
9395:[[
40,
120,
41],
256],
9396:[[
40,
121,
41],
256],
9397:[[
40,
122,
41],
256],
9398:[[
65],
256],
9399:[[
66],
256],
9400:[[
67],
256],
9401:[[
68],
256],
9402:[[
69],
256],
9403:[[
70],
256],
9404:[[
71],
256],
9405:[[
72],
256],
9406:[[
73],
256],
9407:[[
74],
256],
9408:[[
75],
256],
9409:[[
76],
256],
9410:[[
77],
256],
9411:[[
78],
256],
9412:[[
79],
256],
9413:[[
80],
256],
9414:[[
81],
256],
9415:[[
82],
256],
9416:[[
83],
256],
9417:[[
84],
256],
9418:[[
85],
256],
9419:[[
86],
256],
9420:[[
87],
256],
9421:[[
88],
256],
9422:[[
89],
256],
9423:[[
90],
256],
9424:[[
97],
256],
9425:[[
98],
256],
9426:[[
99],
256],
9427:[[
100],
256],
9428:[[
101],
256],
9429:[[
102],
256],
9430:[[
103],
256],
9431:[[
104],
256],
9432:[[
105],
256],
9433:[[
106],
256],
9434:[[
107],
256],
9435:[[
108],
256],
9436:[[
109],
256],
9437:[[
110],
256],
9438:[[
111],
256],
9439:[[
112],
256],
9440:[[
113],
256],
9441:[[
114],
256],
9442:[[
115],
256],
9443:[[
116],
256],
9444:[[
117],
256],
9445:[[
118],
256],
9446:[[
119],
256],
9447:[[
120],
256],
9448:[[
121],
256],
9449:[[
122],
256],
9450:[[
48],
256]},
5145 10752:{
10764:[[
8747,
8747,
8747,
8747],
256],
10868:[[
58,
58,
61],
256],
10869:[[
61,
61],
256],
10870:[[
61,
61,
61],
256],
10972:[[
10973,
824],
512]},
5146 11264:{
11388:[[
106],
256],
11389:[[
86],
256],
11503:[,
230],
11504:[,
230],
11505:[,
230]},
5147 11520:{
11631:[[
11617],
256],
11647:[,
9],
11744:[,
230],
11745:[,
230],
11746:[,
230],
11747:[,
230],
11748:[,
230],
11749:[,
230],
11750:[,
230],
11751:[,
230],
11752:[,
230],
11753:[,
230],
11754:[,
230],
11755:[,
230],
11756:[,
230],
11757:[,
230],
11758:[,
230],
11759:[,
230],
11760:[,
230],
11761:[,
230],
11762:[,
230],
11763:[,
230],
11764:[,
230],
11765:[,
230],
11766:[,
230],
11767:[,
230],
11768:[,
230],
11769:[,
230],
11770:[,
230],
11771:[,
230],
11772:[,
230],
11773:[,
230],
11774:[,
230],
11775:[,
230]},
5148 11776:{
11935:[[
27597],
256],
12019:[[
40863],
256]},
5149 12032:{
12032:[[
19968],
256],
12033:[[
20008],
256],
12034:[[
20022],
256],
12035:[[
20031],
256],
12036:[[
20057],
256],
12037:[[
20101],
256],
12038:[[
20108],
256],
12039:[[
20128],
256],
12040:[[
20154],
256],
12041:[[
20799],
256],
12042:[[
20837],
256],
12043:[[
20843],
256],
12044:[[
20866],
256],
12045:[[
20886],
256],
12046:[[
20907],
256],
12047:[[
20960],
256],
12048:[[
20981],
256],
12049:[[
20992],
256],
12050:[[
21147],
256],
12051:[[
21241],
256],
12052:[[
21269],
256],
12053:[[
21274],
256],
12054:[[
21304],
256],
12055:[[
21313],
256],
12056:[[
21340],
256],
12057:[[
21353],
256],
12058:[[
21378],
256],
12059:[[
21430],
256],
12060:[[
21448],
256],
12061:[[
21475],
256],
12062:[[
22231],
256],
12063:[[
22303],
256],
12064:[[
22763],
256],
12065:[[
22786],
256],
12066:[[
22794],
256],
12067:[[
22805],
256],
12068:[[
22823],
256],
12069:[[
22899],
256],
12070:[[
23376],
256],
12071:[[
23424],
256],
12072:[[
23544],
256],
12073:[[
23567],
256],
12074:[[
23586],
256],
12075:[[
23608],
256],
12076:[[
23662],
256],
12077:[[
23665],
256],
12078:[[
24027],
256],
12079:[[
24037],
256],
12080:[[
24049],
256],
12081:[[
24062],
256],
12082:[[
24178],
256],
12083:[[
24186],
256],
12084:[[
24191],
256],
12085:[[
24308],
256],
12086:[[
24318],
256],
12087:[[
24331],
256],
12088:[[
24339],
256],
12089:[[
24400],
256],
12090:[[
24417],
256],
12091:[[
24435],
256],
12092:[[
24515],
256],
12093:[[
25096],
256],
12094:[[
25142],
256],
12095:[[
25163],
256],
12096:[[
25903],
256],
12097:[[
25908],
256],
12098:[[
25991],
256],
12099:[[
26007],
256],
12100:[[
26020],
256],
12101:[[
26041],
256],
12102:[[
26080],
256],
12103:[[
26085],
256],
12104:[[
26352],
256],
12105:[[
26376],
256],
12106:[[
26408],
256],
12107:[[
27424],
256],
12108:[[
27490],
256],
12109:[[
27513],
256],
12110:[[
27571],
256],
12111:[[
27595],
256],
12112:[[
27604],
256],
12113:[[
27611],
256],
12114:[[
27663],
256],
12115:[[
27668],
256],
12116:[[
27700],
256],
12117:[[
28779],
256],
12118:[[
29226],
256],
12119:[[
29238],
256],
12120:[[
29243],
256],
12121:[[
29247],
256],
12122:[[
29255],
256],
12123:[[
29273],
256],
12124:[[
29275],
256],
12125:[[
29356],
256],
12126:[[
29572],
256],
12127:[[
29577],
256],
12128:[[
29916],
256],
12129:[[
29926],
256],
12130:[[
29976],
256],
12131:[[
29983],
256],
12132:[[
29992],
256],
12133:[[
30000],
256],
12134:[[
30091],
256],
12135:[[
30098],
256],
12136:[[
30326],
256],
12137:[[
30333],
256],
12138:[[
30382],
256],
12139:[[
30399],
256],
12140:[[
30446],
256],
12141:[[
30683],
256],
12142:[[
30690],
256],
12143:[[
30707],
256],
12144:[[
31034],
256],
12145:[[
31160],
256],
12146:[[
31166],
256],
12147:[[
31348],
256],
12148:[[
31435],
256],
12149:[[
31481],
256],
12150:[[
31859],
256],
12151:[[
31992],
256],
12152:[[
32566],
256],
12153:[[
32593],
256],
12154:[[
32650],
256],
12155:[[
32701],
256],
12156:[[
32769],
256],
12157:[[
32780],
256],
12158:[[
32786],
256],
12159:[[
32819],
256],
12160:[[
32895],
256],
12161:[[
32905],
256],
12162:[[
33251],
256],
12163:[[
33258],
256],
12164:[[
33267],
256],
12165:[[
33276],
256],
12166:[[
33292],
256],
12167:[[
33307],
256],
12168:[[
33311],
256],
12169:[[
33390],
256],
12170:[[
33394],
256],
12171:[[
33400],
256],
12172:[[
34381],
256],
12173:[[
34411],
256],
12174:[[
34880],
256],
12175:[[
34892],
256],
12176:[[
34915],
256],
12177:[[
35198],
256],
12178:[[
35211],
256],
12179:[[
35282],
256],
12180:[[
35328],
256],
12181:[[
35895],
256],
12182:[[
35910],
256],
12183:[[
35925],
256],
12184:[[
35960],
256],
12185:[[
35997],
256],
12186:[[
36196],
256],
12187:[[
36208],
256],
12188:[[
36275],
256],
12189:[[
36523],
256],
12190:[[
36554],
256],
12191:[[
36763],
256],
12192:[[
36784],
256],
12193:[[
36789],
256],
12194:[[
37009],
256],
12195:[[
37193],
256],
12196:[[
37318],
256],
12197:[[
37324],
256],
12198:[[
37329],
256],
12199:[[
38263],
256],
12200:[[
38272],
256],
12201:[[
38428],
256],
12202:[[
38582],
256],
12203:[[
38585],
256],
12204:[[
38632],
256],
12205:[[
38737],
256],
12206:[[
38750],
256],
12207:[[
38754],
256],
12208:[[
38761],
256],
12209:[[
38859],
256],
12210:[[
38893],
256],
12211:[[
38899],
256],
12212:[[
38913],
256],
12213:[[
39080],
256],
12214:[[
39131],
256],
12215:[[
39135],
256],
12216:[[
39318],
256],
12217:[[
39321],
256],
12218:[[
39340],
256],
12219:[[
39592],
256],
12220:[[
39640],
256],
12221:[[
39647],
256],
12222:[[
39717],
256],
12223:[[
39727],
256],
12224:[[
39730],
256],
12225:[[
39740],
256],
12226:[[
39770],
256],
12227:[[
40165],
256],
12228:[[
40565],
256],
12229:[[
40575],
256],
12230:[[
40613],
256],
12231:[[
40635],
256],
12232:[[
40643],
256],
12233:[[
40653],
256],
12234:[[
40657],
256],
12235:[[
40697],
256],
12236:[[
40701],
256],
12237:[[
40718],
256],
12238:[[
40723],
256],
12239:[[
40736],
256],
12240:[[
40763],
256],
12241:[[
40778],
256],
12242:[[
40786],
256],
12243:[[
40845],
256],
12244:[[
40860],
256],
12245:[[
40864],
256]},
5150 12288:{
12288:[[
32],
256],
12330:[,
218],
12331:[,
228],
12332:[,
232],
12333:[,
222],
12334:[,
224],
12335:[,
224],
12342:[[
12306],
256],
12344:[[
21313],
256],
12345:[[
21316],
256],
12346:[[
21317],
256],
12358:[,,{
12441:
12436}],
12363:[,,{
12441:
12364}],
12364:[[
12363,
12441]],
12365:[,,{
12441:
12366}],
12366:[[
12365,
12441]],
12367:[,,{
12441:
12368}],
12368:[[
12367,
12441]],
12369:[,,{
12441:
12370}],
12370:[[
12369,
12441]],
12371:[,,{
12441:
12372}],
12372:[[
12371,
12441]],
12373:[,,{
12441:
12374}],
12374:[[
12373,
12441]],
12375:[,,{
12441:
12376}],
12376:[[
12375,
12441]],
12377:[,,{
12441:
12378}],
12378:[[
12377,
12441]],
12379:[,,{
12441:
12380}],
12380:[[
12379,
12441]],
12381:[,,{
12441:
12382}],
12382:[[
12381,
12441]],
12383:[,,{
12441:
12384}],
12384:[[
12383,
12441]],
12385:[,,{
12441:
12386}],
12386:[[
12385,
12441]],
12388:[,,{
12441:
12389}],
12389:[[
12388,
12441]],
12390:[,,{
12441:
12391}],
12391:[[
12390,
12441]],
12392:[,,{
12441:
12393}],
12393:[[
12392,
12441]],
12399:[,,{
12441:
12400,
12442:
12401}],
12400:[[
12399,
12441]],
12401:[[
12399,
12442]],
12402:[,,{
12441:
12403,
12442:
12404}],
12403:[[
12402,
12441]],
12404:[[
12402,
12442]],
12405:[,,{
12441:
12406,
12442:
12407}],
12406:[[
12405,
12441]],
12407:[[
12405,
12442]],
12408:[,,{
12441:
12409,
12442:
12410}],
12409:[[
12408,
12441]],
12410:[[
12408,
12442]],
12411:[,,{
12441:
12412,
12442:
12413}],
12412:[[
12411,
12441]],
12413:[[
12411,
12442]],
12436:[[
12358,
12441]],
12441:[,
8],
12442:[,
8],
12443:[[
32,
12441],
256],
12444:[[
32,
12442],
256],
12445:[,,{
12441:
12446}],
12446:[[
12445,
12441]],
12447:[[
12424,
12426],
256],
12454:[,,{
12441:
12532}],
12459:[,,{
12441:
12460}],
12460:[[
12459,
12441]],
12461:[,,{
12441:
12462}],
12462:[[
12461,
12441]],
12463:[,,{
12441:
12464}],
12464:[[
12463,
12441]],
12465:[,,{
12441:
12466}],
12466:[[
12465,
12441]],
12467:[,,{
12441:
12468}],
12468:[[
12467,
12441]],
12469:[,,{
12441:
12470}],
12470:[[
12469,
12441]],
12471:[,,{
12441:
12472}],
12472:[[
12471,
12441]],
12473:[,,{
12441:
12474}],
12474:[[
12473,
12441]],
12475:[,,{
12441:
12476}],
12476:[[
12475,
12441]],
12477:[,,{
12441:
12478}],
12478:[[
12477,
12441]],
12479:[,,{
12441:
12480}],
12480:[[
12479,
12441]],
12481:[,,{
12441:
12482}],
12482:[[
12481,
12441]],
12484:[,,{
12441:
12485}],
12485:[[
12484,
12441]],
12486:[,,{
12441:
12487}],
12487:[[
12486,
12441]],
12488:[,,{
12441:
12489}],
12489:[[
12488,
12441]],
12495:[,,{
12441:
12496,
12442:
12497}],
12496:[[
12495,
12441]],
12497:[[
12495,
12442]],
12498:[,,{
12441:
12499,
12442:
12500}],
12499:[[
12498,
12441]],
12500:[[
12498,
12442]],
12501:[,,{
12441:
12502,
12442:
12503}],
12502:[[
12501,
12441]],
12503:[[
12501,
12442]],
12504:[,,{
12441:
12505,
12442:
12506}],
12505:[[
12504,
12441]],
12506:[[
12504,
12442]],
12507:[,,{
12441:
12508,
12442:
12509}],
12508:[[
12507,
12441]],
12509:[[
12507,
12442]],
12527:[,,{
12441:
12535}],
12528:[,,{
12441:
12536}],
12529:[,,{
12441:
12537}],
12530:[,,{
12441:
12538}],
12532:[[
12454,
12441]],
12535:[[
12527,
12441]],
12536:[[
12528,
12441]],
12537:[[
12529,
12441]],
12538:[[
12530,
12441]],
12541:[,,{
12441:
12542}],
12542:[[
12541,
12441]],
12543:[[
12467,
12488],
256]},
5151 12544:{
12593:[[
4352],
256],
12594:[[
4353],
256],
12595:[[
4522],
256],
12596:[[
4354],
256],
12597:[[
4524],
256],
12598:[[
4525],
256],
12599:[[
4355],
256],
12600:[[
4356],
256],
12601:[[
4357],
256],
12602:[[
4528],
256],
12603:[[
4529],
256],
12604:[[
4530],
256],
12605:[[
4531],
256],
12606:[[
4532],
256],
12607:[[
4533],
256],
12608:[[
4378],
256],
12609:[[
4358],
256],
12610:[[
4359],
256],
12611:[[
4360],
256],
12612:[[
4385],
256],
12613:[[
4361],
256],
12614:[[
4362],
256],
12615:[[
4363],
256],
12616:[[
4364],
256],
12617:[[
4365],
256],
12618:[[
4366],
256],
12619:[[
4367],
256],
12620:[[
4368],
256],
12621:[[
4369],
256],
12622:[[
4370],
256],
12623:[[
4449],
256],
12624:[[
4450],
256],
12625:[[
4451],
256],
12626:[[
4452],
256],
12627:[[
4453],
256],
12628:[[
4454],
256],
12629:[[
4455],
256],
12630:[[
4456],
256],
12631:[[
4457],
256],
12632:[[
4458],
256],
12633:[[
4459],
256],
12634:[[
4460],
256],
12635:[[
4461],
256],
12636:[[
4462],
256],
12637:[[
4463],
256],
12638:[[
4464],
256],
12639:[[
4465],
256],
12640:[[
4466],
256],
12641:[[
4467],
256],
12642:[[
4468],
256],
12643:[[
4469],
256],
12644:[[
4448],
256],
12645:[[
4372],
256],
12646:[[
4373],
256],
12647:[[
4551],
256],
12648:[[
4552],
256],
12649:[[
4556],
256],
12650:[[
4558],
256],
12651:[[
4563],
256],
12652:[[
4567],
256],
12653:[[
4569],
256],
12654:[[
4380],
256],
12655:[[
4573],
256],
12656:[[
4575],
256],
12657:[[
4381],
256],
12658:[[
4382],
256],
12659:[[
4384],
256],
12660:[[
4386],
256],
12661:[[
4387],
256],
12662:[[
4391],
256],
12663:[[
4393],
256],
12664:[[
4395],
256],
12665:[[
4396],
256],
12666:[[
4397],
256],
12667:[[
4398],
256],
12668:[[
4399],
256],
12669:[[
4402],
256],
12670:[[
4406],
256],
12671:[[
4416],
256],
12672:[[
4423],
256],
12673:[[
4428],
256],
12674:[[
4593],
256],
12675:[[
4594],
256],
12676:[[
4439],
256],
12677:[[
4440],
256],
12678:[[
4441],
256],
12679:[[
4484],
256],
12680:[[
4485],
256],
12681:[[
4488],
256],
12682:[[
4497],
256],
12683:[[
4498],
256],
12684:[[
4500],
256],
12685:[[
4510],
256],
12686:[[
4513],
256],
12690:[[
19968],
256],
12691:[[
20108],
256],
12692:[[
19977],
256],
12693:[[
22235],
256],
12694:[[
19978],
256],
12695:[[
20013],
256],
12696:[[
19979],
256],
12697:[[
30002],
256],
12698:[[
20057],
256],
12699:[[
19993],
256],
12700:[[
19969],
256],
12701:[[
22825],
256],
12702:[[
22320],
256],
12703:[[
20154],
256]},
5152 12800:{
12800:[[
40,
4352,
41],
256],
12801:[[
40,
4354,
41],
256],
12802:[[
40,
4355,
41],
256],
12803:[[
40,
4357,
41],
256],
12804:[[
40,
4358,
41],
256],
12805:[[
40,
4359,
41],
256],
12806:[[
40,
4361,
41],
256],
12807:[[
40,
4363,
41],
256],
12808:[[
40,
4364,
41],
256],
12809:[[
40,
4366,
41],
256],
12810:[[
40,
4367,
41],
256],
12811:[[
40,
4368,
41],
256],
12812:[[
40,
4369,
41],
256],
12813:[[
40,
4370,
41],
256],
12814:[[
40,
4352,
4449,
41],
256],
12815:[[
40,
4354,
4449,
41],
256],
12816:[[
40,
4355,
4449,
41],
256],
12817:[[
40,
4357,
4449,
41],
256],
12818:[[
40,
4358,
4449,
41],
256],
12819:[[
40,
4359,
4449,
41],
256],
12820:[[
40,
4361,
4449,
41],
256],
12821:[[
40,
4363,
4449,
41],
256],
12822:[[
40,
4364,
4449,
41],
256],
12823:[[
40,
4366,
4449,
41],
256],
12824:[[
40,
4367,
4449,
41],
256],
12825:[[
40,
4368,
4449,
41],
256],
12826:[[
40,
4369,
4449,
41],
256],
12827:[[
40,
4370,
4449,
41],
256],
12828:[[
40,
4364,
4462,
41],
256],
12829:[[
40,
4363,
4457,
4364,
4453,
4523,
41],
256],
12830:[[
40,
4363,
4457,
4370,
4462,
41],
256],
12832:[[
40,
19968,
41],
256],
12833:[[
40,
20108,
41],
256],
12834:[[
40,
19977,
41],
256],
12835:[[
40,
22235,
41],
256],
12836:[[
40,
20116,
41],
256],
12837:[[
40,
20845,
41],
256],
12838:[[
40,
19971,
41],
256],
12839:[[
40,
20843,
41],
256],
12840:[[
40,
20061,
41],
256],
12841:[[
40,
21313,
41],
256],
12842:[[
40,
26376,
41],
256],
12843:[[
40,
28779,
41],
256],
12844:[[
40,
27700,
41],
256],
12845:[[
40,
26408,
41],
256],
12846:[[
40,
37329,
41],
256],
12847:[[
40,
22303,
41],
256],
12848:[[
40,
26085,
41],
256],
12849:[[
40,
26666,
41],
256],
12850:[[
40,
26377,
41],
256],
12851:[[
40,
31038,
41],
256],
12852:[[
40,
21517,
41],
256],
12853:[[
40,
29305,
41],
256],
12854:[[
40,
36001,
41],
256],
12855:[[
40,
31069,
41],
256],
12856:[[
40,
21172,
41],
256],
12857:[[
40,
20195,
41],
256],
12858:[[
40,
21628,
41],
256],
12859:[[
40,
23398,
41],
256],
12860:[[
40,
30435,
41],
256],
12861:[[
40,
20225,
41],
256],
12862:[[
40,
36039,
41],
256],
12863:[[
40,
21332,
41],
256],
12864:[[
40,
31085,
41],
256],
12865:[[
40,
20241,
41],
256],
12866:[[
40,
33258,
41],
256],
12867:[[
40,
33267,
41],
256],
12868:[[
21839],
256],
12869:[[
24188],
256],
12870:[[
25991],
256],
12871:[[
31631],
256],
12880:[[
80,
84,
69],
256],
12881:[[
50,
49],
256],
12882:[[
50,
50],
256],
12883:[[
50,
51],
256],
12884:[[
50,
52],
256],
12885:[[
50,
53],
256],
12886:[[
50,
54],
256],
12887:[[
50,
55],
256],
12888:[[
50,
56],
256],
12889:[[
50,
57],
256],
12890:[[
51,
48],
256],
12891:[[
51,
49],
256],
12892:[[
51,
50],
256],
12893:[[
51,
51],
256],
12894:[[
51,
52],
256],
12895:[[
51,
53],
256],
12896:[[
4352],
256],
12897:[[
4354],
256],
12898:[[
4355],
256],
12899:[[
4357],
256],
12900:[[
4358],
256],
12901:[[
4359],
256],
12902:[[
4361],
256],
12903:[[
4363],
256],
12904:[[
4364],
256],
12905:[[
4366],
256],
12906:[[
4367],
256],
12907:[[
4368],
256],
12908:[[
4369],
256],
12909:[[
4370],
256],
12910:[[
4352,
4449],
256],
12911:[[
4354,
4449],
256],
12912:[[
4355,
4449],
256],
12913:[[
4357,
4449],
256],
12914:[[
4358,
4449],
256],
12915:[[
4359,
4449],
256],
12916:[[
4361,
4449],
256],
12917:[[
4363,
4449],
256],
12918:[[
4364,
4449],
256],
12919:[[
4366,
4449],
256],
12920:[[
4367,
4449],
256],
12921:[[
4368,
4449],
256],
12922:[[
4369,
4449],
256],
12923:[[
4370,
4449],
256],
12924:[[
4366,
4449,
4535,
4352,
4457],
256],
12925:[[
4364,
4462,
4363,
4468],
256],
12926:[[
4363,
4462],
256],
12928:[[
19968],
256],
12929:[[
20108],
256],
12930:[[
19977],
256],
12931:[[
22235],
256],
12932:[[
20116],
256],
12933:[[
20845],
256],
12934:[[
19971],
256],
12935:[[
20843],
256],
12936:[[
20061],
256],
12937:[[
21313],
256],
12938:[[
26376],
256],
12939:[[
28779],
256],
12940:[[
27700],
256],
12941:[[
26408],
256],
12942:[[
37329],
256],
12943:[[
22303],
256],
12944:[[
26085],
256],
12945:[[
26666],
256],
12946:[[
26377],
256],
12947:[[
31038],
256],
12948:[[
21517],
256],
12949:[[
29305],
256],
12950:[[
36001],
256],
12951:[[
31069],
256],
12952:[[
21172],
256],
12953:[[
31192],
256],
12954:[[
30007],
256],
12955:[[
22899],
256],
12956:[[
36969],
256],
12957:[[
20778],
256],
12958:[[
21360],
256],
12959:[[
27880],
256],
12960:[[
38917],
256],
12961:[[
20241],
256],
12962:[[
20889],
256],
12963:[[
27491],
256],
12964:[[
19978],
256],
12965:[[
20013],
256],
12966:[[
19979],
256],
12967:[[
24038],
256],
12968:[[
21491],
256],
12969:[[
21307],
256],
12970:[[
23447],
256],
12971:[[
23398],
256],
12972:[[
30435],
256],
12973:[[
20225],
256],
12974:[[
36039],
256],
12975:[[
21332],
256],
12976:[[
22812],
256],
12977:[[
51,
54],
256],
12978:[[
51,
55],
256],
12979:[[
51,
56],
256],
12980:[[
51,
57],
256],
12981:[[
52,
48],
256],
12982:[[
52,
49],
256],
12983:[[
52,
50],
256],
12984:[[
52,
51],
256],
12985:[[
52,
52],
256],
12986:[[
52,
53],
256],
12987:[[
52,
54],
256],
12988:[[
52,
55],
256],
12989:[[
52,
56],
256],
12990:[[
52,
57],
256],
12991:[[
53,
48],
256],
12992:[[
49,
26376],
256],
12993:[[
50,
26376],
256],
12994:[[
51,
26376],
256],
12995:[[
52,
26376],
256],
12996:[[
53,
26376],
256],
12997:[[
54,
26376],
256],
12998:[[
55,
26376],
256],
12999:[[
56,
26376],
256],
13000:[[
57,
26376],
256],
13001:[[
49,
48,
26376],
256],
13002:[[
49,
49,
26376],
256],
13003:[[
49,
50,
26376],
256],
13004:[[
72,
103],
256],
13005:[[
101,
114,
103],
256],
13006:[[
101,
86],
256],
13007:[[
76,
84,
68],
256],
13008:[[
12450],
256],
13009:[[
12452],
256],
13010:[[
12454],
256],
13011:[[
12456],
256],
13012:[[
12458],
256],
13013:[[
12459],
256],
13014:[[
12461],
256],
13015:[[
12463],
256],
13016:[[
12465],
256],
13017:[[
12467],
256],
13018:[[
12469],
256],
13019:[[
12471],
256],
13020:[[
12473],
256],
13021:[[
12475],
256],
13022:[[
12477],
256],
13023:[[
12479],
256],
13024:[[
12481],
256],
13025:[[
12484],
256],
13026:[[
12486],
256],
13027:[[
12488],
256],
13028:[[
12490],
256],
13029:[[
12491],
256],
13030:[[
12492],
256],
13031:[[
12493],
256],
13032:[[
12494],
256],
13033:[[
12495],
256],
13034:[[
12498],
256],
13035:[[
12501],
256],
13036:[[
12504],
256],
13037:[[
12507],
256],
13038:[[
12510],
256],
13039:[[
12511],
256],
13040:[[
12512],
256],
13041:[[
12513],
256],
13042:[[
12514],
256],
13043:[[
12516],
256],
13044:[[
12518],
256],
13045:[[
12520],
256],
13046:[[
12521],
256],
13047:[[
12522],
256],
13048:[[
12523],
256],
13049:[[
12524],
256],
13050:[[
12525],
256],
13051:[[
12527],
256],
13052:[[
12528],
256],
13053:[[
12529],
256],
13054:[[
12530],
256]},
5153 13056:{
13056:[[
12450,
12497,
12540,
12488],
256],
13057:[[
12450,
12523,
12501,
12449],
256],
13058:[[
12450,
12531,
12506,
12450],
256],
13059:[[
12450,
12540,
12523],
256],
13060:[[
12452,
12491,
12531,
12464],
256],
13061:[[
12452,
12531,
12481],
256],
13062:[[
12454,
12457,
12531],
256],
13063:[[
12456,
12473,
12463,
12540,
12489],
256],
13064:[[
12456,
12540,
12459,
12540],
256],
13065:[[
12458,
12531,
12473],
256],
13066:[[
12458,
12540,
12512],
256],
13067:[[
12459,
12452,
12522],
256],
13068:[[
12459,
12521,
12483,
12488],
256],
13069:[[
12459,
12525,
12522,
12540],
256],
13070:[[
12460,
12525,
12531],
256],
13071:[[
12460,
12531,
12510],
256],
13072:[[
12462,
12460],
256],
13073:[[
12462,
12491,
12540],
256],
13074:[[
12461,
12517,
12522,
12540],
256],
13075:[[
12462,
12523,
12480,
12540],
256],
13076:[[
12461,
12525],
256],
13077:[[
12461,
12525,
12464,
12521,
12512],
256],
13078:[[
12461,
12525,
12513,
12540,
12488,
12523],
256],
13079:[[
12461,
12525,
12527,
12483,
12488],
256],
13080:[[
12464,
12521,
12512],
256],
13081:[[
12464,
12521,
12512,
12488,
12531],
256],
13082:[[
12463,
12523,
12476,
12452,
12525],
256],
13083:[[
12463,
12525,
12540,
12493],
256],
13084:[[
12465,
12540,
12473],
256],
13085:[[
12467,
12523,
12490],
256],
13086:[[
12467,
12540,
12509],
256],
13087:[[
12469,
12452,
12463,
12523],
256],
13088:[[
12469,
12531,
12481,
12540,
12512],
256],
13089:[[
12471,
12522,
12531,
12464],
256],
13090:[[
12475,
12531,
12481],
256],
13091:[[
12475,
12531,
12488],
256],
13092:[[
12480,
12540,
12473],
256],
13093:[[
12487,
12471],
256],
13094:[[
12489,
12523],
256],
13095:[[
12488,
12531],
256],
13096:[[
12490,
12494],
256],
13097:[[
12494,
12483,
12488],
256],
13098:[[
12495,
12452,
12484],
256],
13099:[[
12497,
12540,
12475,
12531,
12488],
256],
13100:[[
12497,
12540,
12484],
256],
13101:[[
12496,
12540,
12524,
12523],
256],
13102:[[
12500,
12450,
12473,
12488,
12523],
256],
13103:[[
12500,
12463,
12523],
256],
13104:[[
12500,
12467],
256],
13105:[[
12499,
12523],
256],
13106:[[
12501,
12449,
12521,
12483,
12489],
256],
13107:[[
12501,
12451,
12540,
12488],
256],
13108:[[
12502,
12483,
12471,
12455,
12523],
256],
13109:[[
12501,
12521,
12531],
256],
13110:[[
12504,
12463,
12479,
12540,
12523],
256],
13111:[[
12506,
12477],
256],
13112:[[
12506,
12491,
12498],
256],
13113:[[
12504,
12523,
12484],
256],
13114:[[
12506,
12531,
12473],
256],
13115:[[
12506,
12540,
12472],
256],
13116:[[
12505,
12540,
12479],
256],
13117:[[
12509,
12452,
12531,
12488],
256],
13118:[[
12508,
12523,
12488],
256],
13119:[[
12507,
12531],
256],
13120:[[
12509,
12531,
12489],
256],
13121:[[
12507,
12540,
12523],
256],
13122:[[
12507,
12540,
12531],
256],
13123:[[
12510,
12452,
12463,
12525],
256],
13124:[[
12510,
12452,
12523],
256],
13125:[[
12510,
12483,
12495],
256],
13126:[[
12510,
12523,
12463],
256],
13127:[[
12510,
12531,
12471,
12519,
12531],
256],
13128:[[
12511,
12463,
12525,
12531],
256],
13129:[[
12511,
12522],
256],
13130:[[
12511,
12522,
12496,
12540,
12523],
256],
13131:[[
12513,
12460],
256],
13132:[[
12513,
12460,
12488,
12531],
256],
13133:[[
12513,
12540,
12488,
12523],
256],
13134:[[
12516,
12540,
12489],
256],
13135:[[
12516,
12540,
12523],
256],
13136:[[
12518,
12450,
12531],
256],
13137:[[
12522,
12483,
12488,
12523],
256],
13138:[[
12522,
12521],
256],
13139:[[
12523,
12500,
12540],
256],
13140:[[
12523,
12540,
12502,
12523],
256],
13141:[[
12524,
12512],
256],
13142:[[
12524,
12531,
12488,
12466,
12531],
256],
13143:[[
12527,
12483,
12488],
256],
13144:[[
48,
28857],
256],
13145:[[
49,
28857],
256],
13146:[[
50,
28857],
256],
13147:[[
51,
28857],
256],
13148:[[
52,
28857],
256],
13149:[[
53,
28857],
256],
13150:[[
54,
28857],
256],
13151:[[
55,
28857],
256],
13152:[[
56,
28857],
256],
13153:[[
57,
28857],
256],
13154:[[
49,
48,
28857],
256],
13155:[[
49,
49,
28857],
256],
13156:[[
49,
50,
28857],
256],
13157:[[
49,
51,
28857],
256],
13158:[[
49,
52,
28857],
256],
13159:[[
49,
53,
28857],
256],
13160:[[
49,
54,
28857],
256],
13161:[[
49,
55,
28857],
256],
13162:[[
49,
56,
28857],
256],
13163:[[
49,
57,
28857],
256],
13164:[[
50,
48,
28857],
256],
13165:[[
50,
49,
28857],
256],
13166:[[
50,
50,
28857],
256],
13167:[[
50,
51,
28857],
256],
13168:[[
50,
52,
28857],
256],
13169:[[
104,
80,
97],
256],
13170:[[
100,
97],
256],
13171:[[
65,
85],
256],
13172:[[
98,
97,
114],
256],
13173:[[
111,
86],
256],
13174:[[
112,
99],
256],
13175:[[
100,
109],
256],
13176:[[
100,
109,
178],
256],
13177:[[
100,
109,
179],
256],
13178:[[
73,
85],
256],
13179:[[
24179,
25104],
256],
13180:[[
26157,
21644],
256],
13181:[[
22823,
27491],
256],
13182:[[
26126,
27835],
256],
13183:[[
26666,
24335,
20250,
31038],
256],
13184:[[
112,
65],
256],
13185:[[
110,
65],
256],
13186:[[
956,
65],
256],
13187:[[
109,
65],
256],
13188:[[
107,
65],
256],
13189:[[
75,
66],
256],
13190:[[
77,
66],
256],
13191:[[
71,
66],
256],
13192:[[
99,
97,
108],
256],
13193:[[
107,
99,
97,
108],
256],
13194:[[
112,
70],
256],
13195:[[
110,
70],
256],
13196:[[
956,
70],
256],
13197:[[
956,
103],
256],
13198:[[
109,
103],
256],
13199:[[
107,
103],
256],
13200:[[
72,
122],
256],
13201:[[
107,
72,
122],
256],
13202:[[
77,
72,
122],
256],
13203:[[
71,
72,
122],
256],
13204:[[
84,
72,
122],
256],
13205:[[
956,
8467],
256],
13206:[[
109,
8467],
256],
13207:[[
100,
8467],
256],
13208:[[
107,
8467],
256],
13209:[[
102,
109],
256],
13210:[[
110,
109],
256],
13211:[[
956,
109],
256],
13212:[[
109,
109],
256],
13213:[[
99,
109],
256],
13214:[[
107,
109],
256],
13215:[[
109,
109,
178],
256],
13216:[[
99,
109,
178],
256],
13217:[[
109,
178],
256],
13218:[[
107,
109,
178],
256],
13219:[[
109,
109,
179],
256],
13220:[[
99,
109,
179],
256],
13221:[[
109,
179],
256],
13222:[[
107,
109,
179],
256],
13223:[[
109,
8725,
115],
256],
13224:[[
109,
8725,
115,
178],
256],
13225:[[
80,
97],
256],
13226:[[
107,
80,
97],
256],
13227:[[
77,
80,
97],
256],
13228:[[
71,
80,
97],
256],
13229:[[
114,
97,
100],
256],
13230:[[
114,
97,
100,
8725,
115],
256],
13231:[[
114,
97,
100,
8725,
115,
178],
256],
13232:[[
112,
115],
256],
13233:[[
110,
115],
256],
13234:[[
956,
115],
256],
13235:[[
109,
115],
256],
13236:[[
112,
86],
256],
13237:[[
110,
86],
256],
13238:[[
956,
86],
256],
13239:[[
109,
86],
256],
13240:[[
107,
86],
256],
13241:[[
77,
86],
256],
13242:[[
112,
87],
256],
13243:[[
110,
87],
256],
13244:[[
956,
87],
256],
13245:[[
109,
87],
256],
13246:[[
107,
87],
256],
13247:[[
77,
87],
256],
13248:[[
107,
937],
256],
13249:[[
77,
937],
256],
13250:[[
97,
46,
109,
46],
256],
13251:[[
66,
113],
256],
13252:[[
99,
99],
256],
13253:[[
99,
100],
256],
13254:[[
67,
8725,
107,
103],
256],
13255:[[
67,
111,
46],
256],
13256:[[
100,
66],
256],
13257:[[
71,
121],
256],
13258:[[
104,
97],
256],
13259:[[
72,
80],
256],
13260:[[
105,
110],
256],
13261:[[
75,
75],
256],
13262:[[
75,
77],
256],
13263:[[
107,
116],
256],
13264:[[
108,
109],
256],
13265:[[
108,
110],
256],
13266:[[
108,
111,
103],
256],
13267:[[
108,
120],
256],
13268:[[
109,
98],
256],
13269:[[
109,
105,
108],
256],
13270:[[
109,
111,
108],
256],
13271:[[
80,
72],
256],
13272:[[
112,
46,
109,
46],
256],
13273:[[
80,
80,
77],
256],
13274:[[
80,
82],
256],
13275:[[
115,
114],
256],
13276:[[
83,
118],
256],
13277:[[
87,
98],
256],
13278:[[
86,
8725,
109],
256],
13279:[[
65,
8725,
109],
256],
13280:[[
49,
26085],
256],
13281:[[
50,
26085],
256],
13282:[[
51,
26085],
256],
13283:[[
52,
26085],
256],
13284:[[
53,
26085],
256],
13285:[[
54,
26085],
256],
13286:[[
55,
26085],
256],
13287:[[
56,
26085],
256],
13288:[[
57,
26085],
256],
13289:[[
49,
48,
26085],
256],
13290:[[
49,
49,
26085],
256],
13291:[[
49,
50,
26085],
256],
13292:[[
49,
51,
26085],
256],
13293:[[
49,
52,
26085],
256],
13294:[[
49,
53,
26085],
256],
13295:[[
49,
54,
26085],
256],
13296:[[
49,
55,
26085],
256],
13297:[[
49,
56,
26085],
256],
13298:[[
49,
57,
26085],
256],
13299:[[
50,
48,
26085],
256],
13300:[[
50,
49,
26085],
256],
13301:[[
50,
50,
26085],
256],
13302:[[
50,
51,
26085],
256],
13303:[[
50,
52,
26085],
256],
13304:[[
50,
53,
26085],
256],
13305:[[
50,
54,
26085],
256],
13306:[[
50,
55,
26085],
256],
13307:[[
50,
56,
26085],
256],
13308:[[
50,
57,
26085],
256],
13309:[[
51,
48,
26085],
256],
13310:[[
51,
49,
26085],
256],
13311:[[
103,
97,
108],
256]},
5154 27136:{
92912:[,
1],
92913:[,
1],
92914:[,
1],
92915:[,
1],
92916:[,
1]},
5155 27392:{
92976:[,
230],
92977:[,
230],
92978:[,
230],
92979:[,
230],
92980:[,
230],
92981:[,
230],
92982:[,
230]},
5156 42496:{
42607:[,
230],
42612:[,
230],
42613:[,
230],
42614:[,
230],
42615:[,
230],
42616:[,
230],
42617:[,
230],
42618:[,
230],
42619:[,
230],
42620:[,
230],
42621:[,
230],
42652:[[
1098],
256],
42653:[[
1100],
256],
42655:[,
230],
42736:[,
230],
42737:[,
230]},
5157 42752:{
42864:[[
42863],
256],
43000:[[
294],
256],
43001:[[
339],
256]},
5158 43008:{
43014:[,
9],
43204:[,
9],
43232:[,
230],
43233:[,
230],
43234:[,
230],
43235:[,
230],
43236:[,
230],
43237:[,
230],
43238:[,
230],
43239:[,
230],
43240:[,
230],
43241:[,
230],
43242:[,
230],
43243:[,
230],
43244:[,
230],
43245:[,
230],
43246:[,
230],
43247:[,
230],
43248:[,
230],
43249:[,
230]},
5159 43264:{
43307:[,
220],
43308:[,
220],
43309:[,
220],
43347:[,
9],
43443:[,
7],
43456:[,
9]},
5160 43520:{
43696:[,
230],
43698:[,
230],
43699:[,
230],
43700:[,
220],
43703:[,
230],
43704:[,
230],
43710:[,
230],
43711:[,
230],
43713:[,
230],
43766:[,
9]},
5161 43776:{
43868:[[
42791],
256],
43869:[[
43831],
256],
43870:[[
619],
256],
43871:[[
43858],
256],
44013:[,
9]},
5162 48128:{
113822:[,
1]},
5163 53504:{
119134:[[
119127,
119141],
512],
119135:[[
119128,
119141],
512],
119136:[[
119135,
119150],
512],
119137:[[
119135,
119151],
512],
119138:[[
119135,
119152],
512],
119139:[[
119135,
119153],
512],
119140:[[
119135,
119154],
512],
119141:[,
216],
119142:[,
216],
119143:[,
1],
119144:[,
1],
119145:[,
1],
119149:[,
226],
119150:[,
216],
119151:[,
216],
119152:[,
216],
119153:[,
216],
119154:[,
216],
119163:[,
220],
119164:[,
220],
119165:[,
220],
119166:[,
220],
119167:[,
220],
119168:[,
220],
119169:[,
220],
119170:[,
220],
119173:[,
230],
119174:[,
230],
119175:[,
230],
119176:[,
230],
119177:[,
230],
119178:[,
220],
119179:[,
220],
119210:[,
230],
119211:[,
230],
119212:[,
230],
119213:[,
230],
119227:[[
119225,
119141],
512],
119228:[[
119226,
119141],
512],
119229:[[
119227,
119150],
512],
119230:[[
119228,
119150],
512],
119231:[[
119227,
119151],
512],
119232:[[
119228,
119151],
512]},
5164 53760:{
119362:[,
230],
119363:[,
230],
119364:[,
230]},
5165 54272:{
119808:[[
65],
256],
119809:[[
66],
256],
119810:[[
67],
256],
119811:[[
68],
256],
119812:[[
69],
256],
119813:[[
70],
256],
119814:[[
71],
256],
119815:[[
72],
256],
119816:[[
73],
256],
119817:[[
74],
256],
119818:[[
75],
256],
119819:[[
76],
256],
119820:[[
77],
256],
119821:[[
78],
256],
119822:[[
79],
256],
119823:[[
80],
256],
119824:[[
81],
256],
119825:[[
82],
256],
119826:[[
83],
256],
119827:[[
84],
256],
119828:[[
85],
256],
119829:[[
86],
256],
119830:[[
87],
256],
119831:[[
88],
256],
119832:[[
89],
256],
119833:[[
90],
256],
119834:[[
97],
256],
119835:[[
98],
256],
119836:[[
99],
256],
119837:[[
100],
256],
119838:[[
101],
256],
119839:[[
102],
256],
119840:[[
103],
256],
119841:[[
104],
256],
119842:[[
105],
256],
119843:[[
106],
256],
119844:[[
107],
256],
119845:[[
108],
256],
119846:[[
109],
256],
119847:[[
110],
256],
119848:[[
111],
256],
119849:[[
112],
256],
119850:[[
113],
256],
119851:[[
114],
256],
119852:[[
115],
256],
119853:[[
116],
256],
119854:[[
117],
256],
119855:[[
118],
256],
119856:[[
119],
256],
119857:[[
120],
256],
119858:[[
121],
256],
119859:[[
122],
256],
119860:[[
65],
256],
119861:[[
66],
256],
119862:[[
67],
256],
119863:[[
68],
256],
119864:[[
69],
256],
119865:[[
70],
256],
119866:[[
71],
256],
119867:[[
72],
256],
119868:[[
73],
256],
119869:[[
74],
256],
119870:[[
75],
256],
119871:[[
76],
256],
119872:[[
77],
256],
119873:[[
78],
256],
119874:[[
79],
256],
119875:[[
80],
256],
119876:[[
81],
256],
119877:[[
82],
256],
119878:[[
83],
256],
119879:[[
84],
256],
119880:[[
85],
256],
119881:[[
86],
256],
119882:[[
87],
256],
119883:[[
88],
256],
119884:[[
89],
256],
119885:[[
90],
256],
119886:[[
97],
256],
119887:[[
98],
256],
119888:[[
99],
256],
119889:[[
100],
256],
119890:[[
101],
256],
119891:[[
102],
256],
119892:[[
103],
256],
119894:[[
105],
256],
119895:[[
106],
256],
119896:[[
107],
256],
119897:[[
108],
256],
119898:[[
109],
256],
119899:[[
110],
256],
119900:[[
111],
256],
119901:[[
112],
256],
119902:[[
113],
256],
119903:[[
114],
256],
119904:[[
115],
256],
119905:[[
116],
256],
119906:[[
117],
256],
119907:[[
118],
256],
119908:[[
119],
256],
119909:[[
120],
256],
119910:[[
121],
256],
119911:[[
122],
256],
119912:[[
65],
256],
119913:[[
66],
256],
119914:[[
67],
256],
119915:[[
68],
256],
119916:[[
69],
256],
119917:[[
70],
256],
119918:[[
71],
256],
119919:[[
72],
256],
119920:[[
73],
256],
119921:[[
74],
256],
119922:[[
75],
256],
119923:[[
76],
256],
119924:[[
77],
256],
119925:[[
78],
256],
119926:[[
79],
256],
119927:[[
80],
256],
119928:[[
81],
256],
119929:[[
82],
256],
119930:[[
83],
256],
119931:[[
84],
256],
119932:[[
85],
256],
119933:[[
86],
256],
119934:[[
87],
256],
119935:[[
88],
256],
119936:[[
89],
256],
119937:[[
90],
256],
119938:[[
97],
256],
119939:[[
98],
256],
119940:[[
99],
256],
119941:[[
100],
256],
119942:[[
101],
256],
119943:[[
102],
256],
119944:[[
103],
256],
119945:[[
104],
256],
119946:[[
105],
256],
119947:[[
106],
256],
119948:[[
107],
256],
119949:[[
108],
256],
119950:[[
109],
256],
119951:[[
110],
256],
119952:[[
111],
256],
119953:[[
112],
256],
119954:[[
113],
256],
119955:[[
114],
256],
119956:[[
115],
256],
119957:[[
116],
256],
119958:[[
117],
256],
119959:[[
118],
256],
119960:[[
119],
256],
119961:[[
120],
256],
119962:[[
121],
256],
119963:[[
122],
256],
119964:[[
65],
256],
119966:[[
67],
256],
119967:[[
68],
256],
119970:[[
71],
256],
119973:[[
74],
256],
119974:[[
75],
256],
119977:[[
78],
256],
119978:[[
79],
256],
119979:[[
80],
256],
119980:[[
81],
256],
119982:[[
83],
256],
119983:[[
84],
256],
119984:[[
85],
256],
119985:[[
86],
256],
119986:[[
87],
256],
119987:[[
88],
256],
119988:[[
89],
256],
119989:[[
90],
256],
119990:[[
97],
256],
119991:[[
98],
256],
119992:[[
99],
256],
119993:[[
100],
256],
119995:[[
102],
256],
119997:[[
104],
256],
119998:[[
105],
256],
119999:[[
106],
256],
120000:[[
107],
256],
120001:[[
108],
256],
120002:[[
109],
256],
120003:[[
110],
256],
120005:[[
112],
256],
120006:[[
113],
256],
120007:[[
114],
256],
120008:[[
115],
256],
120009:[[
116],
256],
120010:[[
117],
256],
120011:[[
118],
256],
120012:[[
119],
256],
120013:[[
120],
256],
120014:[[
121],
256],
120015:[[
122],
256],
120016:[[
65],
256],
120017:[[
66],
256],
120018:[[
67],
256],
120019:[[
68],
256],
120020:[[
69],
256],
120021:[[
70],
256],
120022:[[
71],
256],
120023:[[
72],
256],
120024:[[
73],
256],
120025:[[
74],
256],
120026:[[
75],
256],
120027:[[
76],
256],
120028:[[
77],
256],
120029:[[
78],
256],
120030:[[
79],
256],
120031:[[
80],
256],
120032:[[
81],
256],
120033:[[
82],
256],
120034:[[
83],
256],
120035:[[
84],
256],
120036:[[
85],
256],
120037:[[
86],
256],
120038:[[
87],
256],
120039:[[
88],
256],
120040:[[
89],
256],
120041:[[
90],
256],
120042:[[
97],
256],
120043:[[
98],
256],
120044:[[
99],
256],
120045:[[
100],
256],
120046:[[
101],
256],
120047:[[
102],
256],
120048:[[
103],
256],
120049:[[
104],
256],
120050:[[
105],
256],
120051:[[
106],
256],
120052:[[
107],
256],
120053:[[
108],
256],
120054:[[
109],
256],
120055:[[
110],
256],
120056:[[
111],
256],
120057:[[
112],
256],
120058:[[
113],
256],
120059:[[
114],
256],
120060:[[
115],
256],
120061:[[
116],
256],
120062:[[
117],
256],
120063:[[
118],
256]},
5166 54528:{
120064:[[
119],
256],
120065:[[
120],
256],
120066:[[
121],
256],
120067:[[
122],
256],
120068:[[
65],
256],
120069:[[
66],
256],
120071:[[
68],
256],
120072:[[
69],
256],
120073:[[
70],
256],
120074:[[
71],
256],
120077:[[
74],
256],
120078:[[
75],
256],
120079:[[
76],
256],
120080:[[
77],
256],
120081:[[
78],
256],
120082:[[
79],
256],
120083:[[
80],
256],
120084:[[
81],
256],
120086:[[
83],
256],
120087:[[
84],
256],
120088:[[
85],
256],
120089:[[
86],
256],
120090:[[
87],
256],
120091:[[
88],
256],
120092:[[
89],
256],
120094:[[
97],
256],
120095:[[
98],
256],
120096:[[
99],
256],
120097:[[
100],
256],
120098:[[
101],
256],
120099:[[
102],
256],
120100:[[
103],
256],
120101:[[
104],
256],
120102:[[
105],
256],
120103:[[
106],
256],
120104:[[
107],
256],
120105:[[
108],
256],
120106:[[
109],
256],
120107:[[
110],
256],
120108:[[
111],
256],
120109:[[
112],
256],
120110:[[
113],
256],
120111:[[
114],
256],
120112:[[
115],
256],
120113:[[
116],
256],
120114:[[
117],
256],
120115:[[
118],
256],
120116:[[
119],
256],
120117:[[
120],
256],
120118:[[
121],
256],
120119:[[
122],
256],
120120:[[
65],
256],
120121:[[
66],
256],
120123:[[
68],
256],
120124:[[
69],
256],
120125:[[
70],
256],
120126:[[
71],
256],
120128:[[
73],
256],
120129:[[
74],
256],
120130:[[
75],
256],
120131:[[
76],
256],
120132:[[
77],
256],
120134:[[
79],
256],
120138:[[
83],
256],
120139:[[
84],
256],
120140:[[
85],
256],
120141:[[
86],
256],
120142:[[
87],
256],
120143:[[
88],
256],
120144:[[
89],
256],
120146:[[
97],
256],
120147:[[
98],
256],
120148:[[
99],
256],
120149:[[
100],
256],
120150:[[
101],
256],
120151:[[
102],
256],
120152:[[
103],
256],
120153:[[
104],
256],
120154:[[
105],
256],
120155:[[
106],
256],
120156:[[
107],
256],
120157:[[
108],
256],
120158:[[
109],
256],
120159:[[
110],
256],
120160:[[
111],
256],
120161:[[
112],
256],
120162:[[
113],
256],
120163:[[
114],
256],
120164:[[
115],
256],
120165:[[
116],
256],
120166:[[
117],
256],
120167:[[
118],
256],
120168:[[
119],
256],
120169:[[
120],
256],
120170:[[
121],
256],
120171:[[
122],
256],
120172:[[
65],
256],
120173:[[
66],
256],
120174:[[
67],
256],
120175:[[
68],
256],
120176:[[
69],
256],
120177:[[
70],
256],
120178:[[
71],
256],
120179:[[
72],
256],
120180:[[
73],
256],
120181:[[
74],
256],
120182:[[
75],
256],
120183:[[
76],
256],
120184:[[
77],
256],
120185:[[
78],
256],
120186:[[
79],
256],
120187:[[
80],
256],
120188:[[
81],
256],
120189:[[
82],
256],
120190:[[
83],
256],
120191:[[
84],
256],
120192:[[
85],
256],
120193:[[
86],
256],
120194:[[
87],
256],
120195:[[
88],
256],
120196:[[
89],
256],
120197:[[
90],
256],
120198:[[
97],
256],
120199:[[
98],
256],
120200:[[
99],
256],
120201:[[
100],
256],
120202:[[
101],
256],
120203:[[
102],
256],
120204:[[
103],
256],
120205:[[
104],
256],
120206:[[
105],
256],
120207:[[
106],
256],
120208:[[
107],
256],
120209:[[
108],
256],
120210:[[
109],
256],
120211:[[
110],
256],
120212:[[
111],
256],
120213:[[
112],
256],
120214:[[
113],
256],
120215:[[
114],
256],
120216:[[
115],
256],
120217:[[
116],
256],
120218:[[
117],
256],
120219:[[
118],
256],
120220:[[
119],
256],
120221:[[
120],
256],
120222:[[
121],
256],
120223:[[
122],
256],
120224:[[
65],
256],
120225:[[
66],
256],
120226:[[
67],
256],
120227:[[
68],
256],
120228:[[
69],
256],
120229:[[
70],
256],
120230:[[
71],
256],
120231:[[
72],
256],
120232:[[
73],
256],
120233:[[
74],
256],
120234:[[
75],
256],
120235:[[
76],
256],
120236:[[
77],
256],
120237:[[
78],
256],
120238:[[
79],
256],
120239:[[
80],
256],
120240:[[
81],
256],
120241:[[
82],
256],
120242:[[
83],
256],
120243:[[
84],
256],
120244:[[
85],
256],
120245:[[
86],
256],
120246:[[
87],
256],
120247:[[
88],
256],
120248:[[
89],
256],
120249:[[
90],
256],
120250:[[
97],
256],
120251:[[
98],
256],
120252:[[
99],
256],
120253:[[
100],
256],
120254:[[
101],
256],
120255:[[
102],
256],
120256:[[
103],
256],
120257:[[
104],
256],
120258:[[
105],
256],
120259:[[
106],
256],
120260:[[
107],
256],
120261:[[
108],
256],
120262:[[
109],
256],
120263:[[
110],
256],
120264:[[
111],
256],
120265:[[
112],
256],
120266:[[
113],
256],
120267:[[
114],
256],
120268:[[
115],
256],
120269:[[
116],
256],
120270:[[
117],
256],
120271:[[
118],
256],
120272:[[
119],
256],
120273:[[
120],
256],
120274:[[
121],
256],
120275:[[
122],
256],
120276:[[
65],
256],
120277:[[
66],
256],
120278:[[
67],
256],
120279:[[
68],
256],
120280:[[
69],
256],
120281:[[
70],
256],
120282:[[
71],
256],
120283:[[
72],
256],
120284:[[
73],
256],
120285:[[
74],
256],
120286:[[
75],
256],
120287:[[
76],
256],
120288:[[
77],
256],
120289:[[
78],
256],
120290:[[
79],
256],
120291:[[
80],
256],
120292:[[
81],
256],
120293:[[
82],
256],
120294:[[
83],
256],
120295:[[
84],
256],
120296:[[
85],
256],
120297:[[
86],
256],
120298:[[
87],
256],
120299:[[
88],
256],
120300:[[
89],
256],
120301:[[
90],
256],
120302:[[
97],
256],
120303:[[
98],
256],
120304:[[
99],
256],
120305:[[
100],
256],
120306:[[
101],
256],
120307:[[
102],
256],
120308:[[
103],
256],
120309:[[
104],
256],
120310:[[
105],
256],
120311:[[
106],
256],
120312:[[
107],
256],
120313:[[
108],
256],
120314:[[
109],
256],
120315:[[
110],
256],
120316:[[
111],
256],
120317:[[
112],
256],
120318:[[
113],
256],
120319:[[
114],
256]},
5167 54784:{
120320:[[
115],
256],
120321:[[
116],
256],
120322:[[
117],
256],
120323:[[
118],
256],
120324:[[
119],
256],
120325:[[
120],
256],
120326:[[
121],
256],
120327:[[
122],
256],
120328:[[
65],
256],
120329:[[
66],
256],
120330:[[
67],
256],
120331:[[
68],
256],
120332:[[
69],
256],
120333:[[
70],
256],
120334:[[
71],
256],
120335:[[
72],
256],
120336:[[
73],
256],
120337:[[
74],
256],
120338:[[
75],
256],
120339:[[
76],
256],
120340:[[
77],
256],
120341:[[
78],
256],
120342:[[
79],
256],
120343:[[
80],
256],
120344:[[
81],
256],
120345:[[
82],
256],
120346:[[
83],
256],
120347:[[
84],
256],
120348:[[
85],
256],
120349:[[
86],
256],
120350:[[
87],
256],
120351:[[
88],
256],
120352:[[
89],
256],
120353:[[
90],
256],
120354:[[
97],
256],
120355:[[
98],
256],
120356:[[
99],
256],
120357:[[
100],
256],
120358:[[
101],
256],
120359:[[
102],
256],
120360:[[
103],
256],
120361:[[
104],
256],
120362:[[
105],
256],
120363:[[
106],
256],
120364:[[
107],
256],
120365:[[
108],
256],
120366:[[
109],
256],
120367:[[
110],
256],
120368:[[
111],
256],
120369:[[
112],
256],
120370:[[
113],
256],
120371:[[
114],
256],
120372:[[
115],
256],
120373:[[
116],
256],
120374:[[
117],
256],
120375:[[
118],
256],
120376:[[
119],
256],
120377:[[
120],
256],
120378:[[
121],
256],
120379:[[
122],
256],
120380:[[
65],
256],
120381:[[
66],
256],
120382:[[
67],
256],
120383:[[
68],
256],
120384:[[
69],
256],
120385:[[
70],
256],
120386:[[
71],
256],
120387:[[
72],
256],
120388:[[
73],
256],
120389:[[
74],
256],
120390:[[
75],
256],
120391:[[
76],
256],
120392:[[
77],
256],
120393:[[
78],
256],
120394:[[
79],
256],
120395:[[
80],
256],
120396:[[
81],
256],
120397:[[
82],
256],
120398:[[
83],
256],
120399:[[
84],
256],
120400:[[
85],
256],
120401:[[
86],
256],
120402:[[
87],
256],
120403:[[
88],
256],
120404:[[
89],
256],
120405:[[
90],
256],
120406:[[
97],
256],
120407:[[
98],
256],
120408:[[
99],
256],
120409:[[
100],
256],
120410:[[
101],
256],
120411:[[
102],
256],
120412:[[
103],
256],
120413:[[
104],
256],
120414:[[
105],
256],
120415:[[
106],
256],
120416:[[
107],
256],
120417:[[
108],
256],
120418:[[
109],
256],
120419:[[
110],
256],
120420:[[
111],
256],
120421:[[
112],
256],
120422:[[
113],
256],
120423:[[
114],
256],
120424:[[
115],
256],
120425:[[
116],
256],
120426:[[
117],
256],
120427:[[
118],
256],
120428:[[
119],
256],
120429:[[
120],
256],
120430:[[
121],
256],
120431:[[
122],
256],
120432:[[
65],
256],
120433:[[
66],
256],
120434:[[
67],
256],
120435:[[
68],
256],
120436:[[
69],
256],
120437:[[
70],
256],
120438:[[
71],
256],
120439:[[
72],
256],
120440:[[
73],
256],
120441:[[
74],
256],
120442:[[
75],
256],
120443:[[
76],
256],
120444:[[
77],
256],
120445:[[
78],
256],
120446:[[
79],
256],
120447:[[
80],
256],
120448:[[
81],
256],
120449:[[
82],
256],
120450:[[
83],
256],
120451:[[
84],
256],
120452:[[
85],
256],
120453:[[
86],
256],
120454:[[
87],
256],
120455:[[
88],
256],
120456:[[
89],
256],
120457:[[
90],
256],
120458:[[
97],
256],
120459:[[
98],
256],
120460:[[
99],
256],
120461:[[
100],
256],
120462:[[
101],
256],
120463:[[
102],
256],
120464:[[
103],
256],
120465:[[
104],
256],
120466:[[
105],
256],
120467:[[
106],
256],
120468:[[
107],
256],
120469:[[
108],
256],
120470:[[
109],
256],
120471:[[
110],
256],
120472:[[
111],
256],
120473:[[
112],
256],
120474:[[
113],
256],
120475:[[
114],
256],
120476:[[
115],
256],
120477:[[
116],
256],
120478:[[
117],
256],
120479:[[
118],
256],
120480:[[
119],
256],
120481:[[
120],
256],
120482:[[
121],
256],
120483:[[
122],
256],
120484:[[
305],
256],
120485:[[
567],
256],
120488:[[
913],
256],
120489:[[
914],
256],
120490:[[
915],
256],
120491:[[
916],
256],
120492:[[
917],
256],
120493:[[
918],
256],
120494:[[
919],
256],
120495:[[
920],
256],
120496:[[
921],
256],
120497:[[
922],
256],
120498:[[
923],
256],
120499:[[
924],
256],
120500:[[
925],
256],
120501:[[
926],
256],
120502:[[
927],
256],
120503:[[
928],
256],
120504:[[
929],
256],
120505:[[
1012],
256],
120506:[[
931],
256],
120507:[[
932],
256],
120508:[[
933],
256],
120509:[[
934],
256],
120510:[[
935],
256],
120511:[[
936],
256],
120512:[[
937],
256],
120513:[[
8711],
256],
120514:[[
945],
256],
120515:[[
946],
256],
120516:[[
947],
256],
120517:[[
948],
256],
120518:[[
949],
256],
120519:[[
950],
256],
120520:[[
951],
256],
120521:[[
952],
256],
120522:[[
953],
256],
120523:[[
954],
256],
120524:[[
955],
256],
120525:[[
956],
256],
120526:[[
957],
256],
120527:[[
958],
256],
120528:[[
959],
256],
120529:[[
960],
256],
120530:[[
961],
256],
120531:[[
962],
256],
120532:[[
963],
256],
120533:[[
964],
256],
120534:[[
965],
256],
120535:[[
966],
256],
120536:[[
967],
256],
120537:[[
968],
256],
120538:[[
969],
256],
120539:[[
8706],
256],
120540:[[
1013],
256],
120541:[[
977],
256],
120542:[[
1008],
256],
120543:[[
981],
256],
120544:[[
1009],
256],
120545:[[
982],
256],
120546:[[
913],
256],
120547:[[
914],
256],
120548:[[
915],
256],
120549:[[
916],
256],
120550:[[
917],
256],
120551:[[
918],
256],
120552:[[
919],
256],
120553:[[
920],
256],
120554:[[
921],
256],
120555:[[
922],
256],
120556:[[
923],
256],
120557:[[
924],
256],
120558:[[
925],
256],
120559:[[
926],
256],
120560:[[
927],
256],
120561:[[
928],
256],
120562:[[
929],
256],
120563:[[
1012],
256],
120564:[[
931],
256],
120565:[[
932],
256],
120566:[[
933],
256],
120567:[[
934],
256],
120568:[[
935],
256],
120569:[[
936],
256],
120570:[[
937],
256],
120571:[[
8711],
256],
120572:[[
945],
256],
120573:[[
946],
256],
120574:[[
947],
256],
120575:[[
948],
256]},
5168 55040:{
120576:[[
949],
256],
120577:[[
950],
256],
120578:[[
951],
256],
120579:[[
952],
256],
120580:[[
953],
256],
120581:[[
954],
256],
120582:[[
955],
256],
120583:[[
956],
256],
120584:[[
957],
256],
120585:[[
958],
256],
120586:[[
959],
256],
120587:[[
960],
256],
120588:[[
961],
256],
120589:[[
962],
256],
120590:[[
963],
256],
120591:[[
964],
256],
120592:[[
965],
256],
120593:[[
966],
256],
120594:[[
967],
256],
120595:[[
968],
256],
120596:[[
969],
256],
120597:[[
8706],
256],
120598:[[
1013],
256],
120599:[[
977],
256],
120600:[[
1008],
256],
120601:[[
981],
256],
120602:[[
1009],
256],
120603:[[
982],
256],
120604:[[
913],
256],
120605:[[
914],
256],
120606:[[
915],
256],
120607:[[
916],
256],
120608:[[
917],
256],
120609:[[
918],
256],
120610:[[
919],
256],
120611:[[
920],
256],
120612:[[
921],
256],
120613:[[
922],
256],
120614:[[
923],
256],
120615:[[
924],
256],
120616:[[
925],
256],
120617:[[
926],
256],
120618:[[
927],
256],
120619:[[
928],
256],
120620:[[
929],
256],
120621:[[
1012],
256],
120622:[[
931],
256],
120623:[[
932],
256],
120624:[[
933],
256],
120625:[[
934],
256],
120626:[[
935],
256],
120627:[[
936],
256],
120628:[[
937],
256],
120629:[[
8711],
256],
120630:[[
945],
256],
120631:[[
946],
256],
120632:[[
947],
256],
120633:[[
948],
256],
120634:[[
949],
256],
120635:[[
950],
256],
120636:[[
951],
256],
120637:[[
952],
256],
120638:[[
953],
256],
120639:[[
954],
256],
120640:[[
955],
256],
120641:[[
956],
256],
120642:[[
957],
256],
120643:[[
958],
256],
120644:[[
959],
256],
120645:[[
960],
256],
120646:[[
961],
256],
120647:[[
962],
256],
120648:[[
963],
256],
120649:[[
964],
256],
120650:[[
965],
256],
120651:[[
966],
256],
120652:[[
967],
256],
120653:[[
968],
256],
120654:[[
969],
256],
120655:[[
8706],
256],
120656:[[
1013],
256],
120657:[[
977],
256],
120658:[[
1008],
256],
120659:[[
981],
256],
120660:[[
1009],
256],
120661:[[
982],
256],
120662:[[
913],
256],
120663:[[
914],
256],
120664:[[
915],
256],
120665:[[
916],
256],
120666:[[
917],
256],
120667:[[
918],
256],
120668:[[
919],
256],
120669:[[
920],
256],
120670:[[
921],
256],
120671:[[
922],
256],
120672:[[
923],
256],
120673:[[
924],
256],
120674:[[
925],
256],
120675:[[
926],
256],
120676:[[
927],
256],
120677:[[
928],
256],
120678:[[
929],
256],
120679:[[
1012],
256],
120680:[[
931],
256],
120681:[[
932],
256],
120682:[[
933],
256],
120683:[[
934],
256],
120684:[[
935],
256],
120685:[[
936],
256],
120686:[[
937],
256],
120687:[[
8711],
256],
120688:[[
945],
256],
120689:[[
946],
256],
120690:[[
947],
256],
120691:[[
948],
256],
120692:[[
949],
256],
120693:[[
950],
256],
120694:[[
951],
256],
120695:[[
952],
256],
120696:[[
953],
256],
120697:[[
954],
256],
120698:[[
955],
256],
120699:[[
956],
256],
120700:[[
957],
256],
120701:[[
958],
256],
120702:[[
959],
256],
120703:[[
960],
256],
120704:[[
961],
256],
120705:[[
962],
256],
120706:[[
963],
256],
120707:[[
964],
256],
120708:[[
965],
256],
120709:[[
966],
256],
120710:[[
967],
256],
120711:[[
968],
256],
120712:[[
969],
256],
120713:[[
8706],
256],
120714:[[
1013],
256],
120715:[[
977],
256],
120716:[[
1008],
256],
120717:[[
981],
256],
120718:[[
1009],
256],
120719:[[
982],
256],
120720:[[
913],
256],
120721:[[
914],
256],
120722:[[
915],
256],
120723:[[
916],
256],
120724:[[
917],
256],
120725:[[
918],
256],
120726:[[
919],
256],
120727:[[
920],
256],
120728:[[
921],
256],
120729:[[
922],
256],
120730:[[
923],
256],
120731:[[
924],
256],
120732:[[
925],
256],
120733:[[
926],
256],
120734:[[
927],
256],
120735:[[
928],
256],
120736:[[
929],
256],
120737:[[
1012],
256],
120738:[[
931],
256],
120739:[[
932],
256],
120740:[[
933],
256],
120741:[[
934],
256],
120742:[[
935],
256],
120743:[[
936],
256],
120744:[[
937],
256],
120745:[[
8711],
256],
120746:[[
945],
256],
120747:[[
946],
256],
120748:[[
947],
256],
120749:[[
948],
256],
120750:[[
949],
256],
120751:[[
950],
256],
120752:[[
951],
256],
120753:[[
952],
256],
120754:[[
953],
256],
120755:[[
954],
256],
120756:[[
955],
256],
120757:[[
956],
256],
120758:[[
957],
256],
120759:[[
958],
256],
120760:[[
959],
256],
120761:[[
960],
256],
120762:[[
961],
256],
120763:[[
962],
256],
120764:[[
963],
256],
120765:[[
964],
256],
120766:[[
965],
256],
120767:[[
966],
256],
120768:[[
967],
256],
120769:[[
968],
256],
120770:[[
969],
256],
120771:[[
8706],
256],
120772:[[
1013],
256],
120773:[[
977],
256],
120774:[[
1008],
256],
120775:[[
981],
256],
120776:[[
1009],
256],
120777:[[
982],
256],
120778:[[
988],
256],
120779:[[
989],
256],
120782:[[
48],
256],
120783:[[
49],
256],
120784:[[
50],
256],
120785:[[
51],
256],
120786:[[
52],
256],
120787:[[
53],
256],
120788:[[
54],
256],
120789:[[
55],
256],
120790:[[
56],
256],
120791:[[
57],
256],
120792:[[
48],
256],
120793:[[
49],
256],
120794:[[
50],
256],
120795:[[
51],
256],
120796:[[
52],
256],
120797:[[
53],
256],
120798:[[
54],
256],
120799:[[
55],
256],
120800:[[
56],
256],
120801:[[
57],
256],
120802:[[
48],
256],
120803:[[
49],
256],
120804:[[
50],
256],
120805:[[
51],
256],
120806:[[
52],
256],
120807:[[
53],
256],
120808:[[
54],
256],
120809:[[
55],
256],
120810:[[
56],
256],
120811:[[
57],
256],
120812:[[
48],
256],
120813:[[
49],
256],
120814:[[
50],
256],
120815:[[
51],
256],
120816:[[
52],
256],
120817:[[
53],
256],
120818:[[
54],
256],
120819:[[
55],
256],
120820:[[
56],
256],
120821:[[
57],
256],
120822:[[
48],
256],
120823:[[
49],
256],
120824:[[
50],
256],
120825:[[
51],
256],
120826:[[
52],
256],
120827:[[
53],
256],
120828:[[
54],
256],
120829:[[
55],
256],
120830:[[
56],
256],
120831:[[
57],
256]},
5169 59392:{
125136:[,
220],
125137:[,
220],
125138:[,
220],
125139:[,
220],
125140:[,
220],
125141:[,
220],
125142:[,
220]},
5170 60928:{
126464:[[
1575],
256],
126465:[[
1576],
256],
126466:[[
1580],
256],
126467:[[
1583],
256],
126469:[[
1608],
256],
126470:[[
1586],
256],
126471:[[
1581],
256],
126472:[[
1591],
256],
126473:[[
1610],
256],
126474:[[
1603],
256],
126475:[[
1604],
256],
126476:[[
1605],
256],
126477:[[
1606],
256],
126478:[[
1587],
256],
126479:[[
1593],
256],
126480:[[
1601],
256],
126481:[[
1589],
256],
126482:[[
1602],
256],
126483:[[
1585],
256],
126484:[[
1588],
256],
126485:[[
1578],
256],
126486:[[
1579],
256],
126487:[[
1582],
256],
126488:[[
1584],
256],
126489:[[
1590],
256],
126490:[[
1592],
256],
126491:[[
1594],
256],
126492:[[
1646],
256],
126493:[[
1722],
256],
126494:[[
1697],
256],
126495:[[
1647],
256],
126497:[[
1576],
256],
126498:[[
1580],
256],
126500:[[
1607],
256],
126503:[[
1581],
256],
126505:[[
1610],
256],
126506:[[
1603],
256],
126507:[[
1604],
256],
126508:[[
1605],
256],
126509:[[
1606],
256],
126510:[[
1587],
256],
126511:[[
1593],
256],
126512:[[
1601],
256],
126513:[[
1589],
256],
126514:[[
1602],
256],
126516:[[
1588],
256],
126517:[[
1578],
256],
126518:[[
1579],
256],
126519:[[
1582],
256],
126521:[[
1590],
256],
126523:[[
1594],
256],
126530:[[
1580],
256],
126535:[[
1581],
256],
126537:[[
1610],
256],
126539:[[
1604],
256],
126541:[[
1606],
256],
126542:[[
1587],
256],
126543:[[
1593],
256],
126545:[[
1589],
256],
126546:[[
1602],
256],
126548:[[
1588],
256],
126551:[[
1582],
256],
126553:[[
1590],
256],
126555:[[
1594],
256],
126557:[[
1722],
256],
126559:[[
1647],
256],
126561:[[
1576],
256],
126562:[[
1580],
256],
126564:[[
1607],
256],
126567:[[
1581],
256],
126568:[[
1591],
256],
126569:[[
1610],
256],
126570:[[
1603],
256],
126572:[[
1605],
256],
126573:[[
1606],
256],
126574:[[
1587],
256],
126575:[[
1593],
256],
126576:[[
1601],
256],
126577:[[
1589],
256],
126578:[[
1602],
256],
126580:[[
1588],
256],
126581:[[
1578],
256],
126582:[[
1579],
256],
126583:[[
1582],
256],
126585:[[
1590],
256],
126586:[[
1592],
256],
126587:[[
1594],
256],
126588:[[
1646],
256],
126590:[[
1697],
256],
126592:[[
1575],
256],
126593:[[
1576],
256],
126594:[[
1580],
256],
126595:[[
1583],
256],
126596:[[
1607],
256],
126597:[[
1608],
256],
126598:[[
1586],
256],
126599:[[
1581],
256],
126600:[[
1591],
256],
126601:[[
1610],
256],
126603:[[
1604],
256],
126604:[[
1605],
256],
126605:[[
1606],
256],
126606:[[
1587],
256],
126607:[[
1593],
256],
126608:[[
1601],
256],
126609:[[
1589],
256],
126610:[[
1602],
256],
126611:[[
1585],
256],
126612:[[
1588],
256],
126613:[[
1578],
256],
126614:[[
1579],
256],
126615:[[
1582],
256],
126616:[[
1584],
256],
126617:[[
1590],
256],
126618:[[
1592],
256],
126619:[[
1594],
256],
126625:[[
1576],
256],
126626:[[
1580],
256],
126627:[[
1583],
256],
126629:[[
1608],
256],
126630:[[
1586],
256],
126631:[[
1581],
256],
126632:[[
1591],
256],
126633:[[
1610],
256],
126635:[[
1604],
256],
126636:[[
1605],
256],
126637:[[
1606],
256],
126638:[[
1587],
256],
126639:[[
1593],
256],
126640:[[
1601],
256],
126641:[[
1589],
256],
126642:[[
1602],
256],
126643:[[
1585],
256],
126644:[[
1588],
256],
126645:[[
1578],
256],
126646:[[
1579],
256],
126647:[[
1582],
256],
126648:[[
1584],
256],
126649:[[
1590],
256],
126650:[[
1592],
256],
126651:[[
1594],
256]},
5171 61696:{
127232:[[
48,
46],
256],
127233:[[
48,
44],
256],
127234:[[
49,
44],
256],
127235:[[
50,
44],
256],
127236:[[
51,
44],
256],
127237:[[
52,
44],
256],
127238:[[
53,
44],
256],
127239:[[
54,
44],
256],
127240:[[
55,
44],
256],
127241:[[
56,
44],
256],
127242:[[
57,
44],
256],
127248:[[
40,
65,
41],
256],
127249:[[
40,
66,
41],
256],
127250:[[
40,
67,
41],
256],
127251:[[
40,
68,
41],
256],
127252:[[
40,
69,
41],
256],
127253:[[
40,
70,
41],
256],
127254:[[
40,
71,
41],
256],
127255:[[
40,
72,
41],
256],
127256:[[
40,
73,
41],
256],
127257:[[
40,
74,
41],
256],
127258:[[
40,
75,
41],
256],
127259:[[
40,
76,
41],
256],
127260:[[
40,
77,
41],
256],
127261:[[
40,
78,
41],
256],
127262:[[
40,
79,
41],
256],
127263:[[
40,
80,
41],
256],
127264:[[
40,
81,
41],
256],
127265:[[
40,
82,
41],
256],
127266:[[
40,
83,
41],
256],
127267:[[
40,
84,
41],
256],
127268:[[
40,
85,
41],
256],
127269:[[
40,
86,
41],
256],
127270:[[
40,
87,
41],
256],
127271:[[
40,
88,
41],
256],
127272:[[
40,
89,
41],
256],
127273:[[
40,
90,
41],
256],
127274:[[
12308,
83,
12309],
256],
127275:[[
67],
256],
127276:[[
82],
256],
127277:[[
67,
68],
256],
127278:[[
87,
90],
256],
127280:[[
65],
256],
127281:[[
66],
256],
127282:[[
67],
256],
127283:[[
68],
256],
127284:[[
69],
256],
127285:[[
70],
256],
127286:[[
71],
256],
127287:[[
72],
256],
127288:[[
73],
256],
127289:[[
74],
256],
127290:[[
75],
256],
127291:[[
76],
256],
127292:[[
77],
256],
127293:[[
78],
256],
127294:[[
79],
256],
127295:[[
80],
256],
127296:[[
81],
256],
127297:[[
82],
256],
127298:[[
83],
256],
127299:[[
84],
256],
127300:[[
85],
256],
127301:[[
86],
256],
127302:[[
87],
256],
127303:[[
88],
256],
127304:[[
89],
256],
127305:[[
90],
256],
127306:[[
72,
86],
256],
127307:[[
77,
86],
256],
127308:[[
83,
68],
256],
127309:[[
83,
83],
256],
127310:[[
80,
80,
86],
256],
127311:[[
87,
67],
256],
127338:[[
77,
67],
256],
127339:[[
77,
68],
256],
127376:[[
68,
74],
256]},
5172 61952:{
127488:[[
12411,
12363],
256],
127489:[[
12467,
12467],
256],
127490:[[
12469],
256],
127504:[[
25163],
256],
127505:[[
23383],
256],
127506:[[
21452],
256],
127507:[[
12487],
256],
127508:[[
20108],
256],
127509:[[
22810],
256],
127510:[[
35299],
256],
127511:[[
22825],
256],
127512:[[
20132],
256],
127513:[[
26144],
256],
127514:[[
28961],
256],
127515:[[
26009],
256],
127516:[[
21069],
256],
127517:[[
24460],
256],
127518:[[
20877],
256],
127519:[[
26032],
256],
127520:[[
21021],
256],
127521:[[
32066],
256],
127522:[[
29983],
256],
127523:[[
36009],
256],
127524:[[
22768],
256],
127525:[[
21561],
256],
127526:[[
28436],
256],
127527:[[
25237],
256],
127528:[[
25429],
256],
127529:[[
19968],
256],
127530:[[
19977],
256],
127531:[[
36938],
256],
127532:[[
24038],
256],
127533:[[
20013],
256],
127534:[[
21491],
256],
127535:[[
25351],
256],
127536:[[
36208],
256],
127537:[[
25171],
256],
127538:[[
31105],
256],
127539:[[
31354],
256],
127540:[[
21512],
256],
127541:[[
28288],
256],
127542:[[
26377],
256],
127543:[[
26376],
256],
127544:[[
30003],
256],
127545:[[
21106],
256],
127546:[[
21942],
256],
127552:[[
12308,
26412,
12309],
256],
127553:[[
12308,
19977,
12309],
256],
127554:[[
12308,
20108,
12309],
256],
127555:[[
12308,
23433,
12309],
256],
127556:[[
12308,
28857,
12309],
256],
127557:[[
12308,
25171,
12309],
256],
127558:[[
12308,
30423,
12309],
256],
127559:[[
12308,
21213,
12309],
256],
127560:[[
12308,
25943,
12309],
256],
127568:[[
24471],
256],
127569:[[
21487],
256]},
5173 63488:{
194560:[[
20029]],
194561:[[
20024]],
194562:[[
20033]],
194563:[[
131362]],
194564:[[
20320]],
194565:[[
20398]],
194566:[[
20411]],
194567:[[
20482]],
194568:[[
20602]],
194569:[[
20633]],
194570:[[
20711]],
194571:[[
20687]],
194572:[[
13470]],
194573:[[
132666]],
194574:[[
20813]],
194575:[[
20820]],
194576:[[
20836]],
194577:[[
20855]],
194578:[[
132380]],
194579:[[
13497]],
194580:[[
20839]],
194581:[[
20877]],
194582:[[
132427]],
194583:[[
20887]],
194584:[[
20900]],
194585:[[
20172]],
194586:[[
20908]],
194587:[[
20917]],
194588:[[
168415]],
194589:[[
20981]],
194590:[[
20995]],
194591:[[
13535]],
194592:[[
21051]],
194593:[[
21062]],
194594:[[
21106]],
194595:[[
21111]],
194596:[[
13589]],
194597:[[
21191]],
194598:[[
21193]],
194599:[[
21220]],
194600:[[
21242]],
194601:[[
21253]],
194602:[[
21254]],
194603:[[
21271]],
194604:[[
21321]],
194605:[[
21329]],
194606:[[
21338]],
194607:[[
21363]],
194608:[[
21373]],
194609:[[
21375]],
194610:[[
21375]],
194611:[[
21375]],
194612:[[
133676]],
194613:[[
28784]],
194614:[[
21450]],
194615:[[
21471]],
194616:[[
133987]],
194617:[[
21483]],
194618:[[
21489]],
194619:[[
21510]],
194620:[[
21662]],
194621:[[
21560]],
194622:[[
21576]],
194623:[[
21608]],
194624:[[
21666]],
194625:[[
21750]],
194626:[[
21776]],
194627:[[
21843]],
194628:[[
21859]],
194629:[[
21892]],
194630:[[
21892]],
194631:[[
21913]],
194632:[[
21931]],
194633:[[
21939]],
194634:[[
21954]],
194635:[[
22294]],
194636:[[
22022]],
194637:[[
22295]],
194638:[[
22097]],
194639:[[
22132]],
194640:[[
20999]],
194641:[[
22766]],
194642:[[
22478]],
194643:[[
22516]],
194644:[[
22541]],
194645:[[
22411]],
194646:[[
22578]],
194647:[[
22577]],
194648:[[
22700]],
194649:[[
136420]],
194650:[[
22770]],
194651:[[
22775]],
194652:[[
22790]],
194653:[[
22810]],
194654:[[
22818]],
194655:[[
22882]],
194656:[[
136872]],
194657:[[
136938]],
194658:[[
23020]],
194659:[[
23067]],
194660:[[
23079]],
194661:[[
23000]],
194662:[[
23142]],
194663:[[
14062]],
194664:[[
14076]],
194665:[[
23304]],
194666:[[
23358]],
194667:[[
23358]],
194668:[[
137672]],
194669:[[
23491]],
194670:[[
23512]],
194671:[[
23527]],
194672:[[
23539]],
194673:[[
138008]],
194674:[[
23551]],
194675:[[
23558]],
194676:[[
24403]],
194677:[[
23586]],
194678:[[
14209]],
194679:[[
23648]],
194680:[[
23662]],
194681:[[
23744]],
194682:[[
23693]],
194683:[[
138724]],
194684:[[
23875]],
194685:[[
138726]],
194686:[[
23918]],
194687:[[
23915]],
194688:[[
23932]],
194689:[[
24033]],
194690:[[
24034]],
194691:[[
14383]],
194692:[[
24061]],
194693:[[
24104]],
194694:[[
24125]],
194695:[[
24169]],
194696:[[
14434]],
194697:[[
139651]],
194698:[[
14460]],
194699:[[
24240]],
194700:[[
24243]],
194701:[[
24246]],
194702:[[
24266]],
194703:[[
172946]],
194704:[[
24318]],
194705:[[
140081]],
194706:[[
140081]],
194707:[[
33281]],
194708:[[
24354]],
194709:[[
24354]],
194710:[[
14535]],
194711:[[
144056]],
194712:[[
156122]],
194713:[[
24418]],
194714:[[
24427]],
194715:[[
14563]],
194716:[[
24474]],
194717:[[
24525]],
194718:[[
24535]],
194719:[[
24569]],
194720:[[
24705]],
194721:[[
14650]],
194722:[[
14620]],
194723:[[
24724]],
194724:[[
141012]],
194725:[[
24775]],
194726:[[
24904]],
194727:[[
24908]],
194728:[[
24910]],
194729:[[
24908]],
194730:[[
24954]],
194731:[[
24974]],
194732:[[
25010]],
194733:[[
24996]],
194734:[[
25007]],
194735:[[
25054]],
194736:[[
25074]],
194737:[[
25078]],
194738:[[
25104]],
194739:[[
25115]],
194740:[[
25181]],
194741:[[
25265]],
194742:[[
25300]],
194743:[[
25424]],
194744:[[
142092]],
194745:[[
25405]],
194746:[[
25340]],
194747:[[
25448]],
194748:[[
25475]],
194749:[[
25572]],
194750:[[
142321]],
194751:[[
25634]],
194752:[[
25541]],
194753:[[
25513]],
194754:[[
14894]],
194755:[[
25705]],
194756:[[
25726]],
194757:[[
25757]],
194758:[[
25719]],
194759:[[
14956]],
194760:[[
25935]],
194761:[[
25964]],
194762:[[
143370]],
194763:[[
26083]],
194764:[[
26360]],
194765:[[
26185]],
194766:[[
15129]],
194767:[[
26257]],
194768:[[
15112]],
194769:[[
15076]],
194770:[[
20882]],
194771:[[
20885]],
194772:[[
26368]],
194773:[[
26268]],
194774:[[
32941]],
194775:[[
17369]],
194776:[[
26391]],
194777:[[
26395]],
194778:[[
26401]],
194779:[[
26462]],
194780:[[
26451]],
194781:[[
144323]],
194782:[[
15177]],
194783:[[
26618]],
194784:[[
26501]],
194785:[[
26706]],
194786:[[
26757]],
194787:[[
144493]],
194788:[[
26766]],
194789:[[
26655]],
194790:[[
26900]],
194791:[[
15261]],
194792:[[
26946]],
194793:[[
27043]],
194794:[[
27114]],
194795:[[
27304]],
194796:[[
145059]],
194797:[[
27355]],
194798:[[
15384]],
194799:[[
27425]],
194800:[[
145575]],
194801:[[
27476]],
194802:[[
15438]],
194803:[[
27506]],
194804:[[
27551]],
194805:[[
27578]],
194806:[[
27579]],
194807:[[
146061]],
194808:[[
138507]],
194809:[[
146170]],
194810:[[
27726]],
194811:[[
146620]],
194812:[[
27839]],
194813:[[
27853]],
194814:[[
27751]],
194815:[[
27926]]},
5174 63744:{
63744:[[
35912]],
63745:[[
26356]],
63746:[[
36554]],
63747:[[
36040]],
63748:[[
28369]],
63749:[[
20018]],
63750:[[
21477]],
63751:[[
40860]],
63752:[[
40860]],
63753:[[
22865]],
63754:[[
37329]],
63755:[[
21895]],
63756:[[
22856]],
63757:[[
25078]],
63758:[[
30313]],
63759:[[
32645]],
63760:[[
34367]],
63761:[[
34746]],
63762:[[
35064]],
63763:[[
37007]],
63764:[[
27138]],
63765:[[
27931]],
63766:[[
28889]],
63767:[[
29662]],
63768:[[
33853]],
63769:[[
37226]],
63770:[[
39409]],
63771:[[
20098]],
63772:[[
21365]],
63773:[[
27396]],
63774:[[
29211]],
63775:[[
34349]],
63776:[[
40478]],
63777:[[
23888]],
63778:[[
28651]],
63779:[[
34253]],
63780:[[
35172]],
63781:[[
25289]],
63782:[[
33240]],
63783:[[
34847]],
63784:[[
24266]],
63785:[[
26391]],
63786:[[
28010]],
63787:[[
29436]],
63788:[[
37070]],
63789:[[
20358]],
63790:[[
20919]],
63791:[[
21214]],
63792:[[
25796]],
63793:[[
27347]],
63794:[[
29200]],
63795:[[
30439]],
63796:[[
32769]],
63797:[[
34310]],
63798:[[
34396]],
63799:[[
36335]],
63800:[[
38706]],
63801:[[
39791]],
63802:[[
40442]],
63803:[[
30860]],
63804:[[
31103]],
63805:[[
32160]],
63806:[[
33737]],
63807:[[
37636]],
63808:[[
40575]],
63809:[[
35542]],
63810:[[
22751]],
63811:[[
24324]],
63812:[[
31840]],
63813:[[
32894]],
63814:[[
29282]],
63815:[[
30922]],
63816:[[
36034]],
63817:[[
38647]],
63818:[[
22744]],
63819:[[
23650]],
63820:[[
27155]],
63821:[[
28122]],
63822:[[
28431]],
63823:[[
32047]],
63824:[[
32311]],
63825:[[
38475]],
63826:[[
21202]],
63827:[[
32907]],
63828:[[
20956]],
63829:[[
20940]],
63830:[[
31260]],
63831:[[
32190]],
63832:[[
33777]],
63833:[[
38517]],
63834:[[
35712]],
63835:[[
25295]],
63836:[[
27138]],
63837:[[
35582]],
63838:[[
20025]],
63839:[[
23527]],
63840:[[
24594]],
63841:[[
29575]],
63842:[[
30064]],
63843:[[
21271]],
63844:[[
30971]],
63845:[[
20415]],
63846:[[
24489]],
63847:[[
19981]],
63848:[[
27852]],
63849:[[
25976]],
63850:[[
32034]],
63851:[[
21443]],
63852:[[
22622]],
63853:[[
30465]],
63854:[[
33865]],
63855:[[
35498]],
63856:[[
27578]],
63857:[[
36784]],
63858:[[
27784]],
63859:[[
25342]],
63860:[[
33509]],
63861:[[
25504]],
63862:[[
30053]],
63863:[[
20142]],
63864:[[
20841]],
63865:[[
20937]],
63866:[[
26753]],
63867:[[
31975]],
63868:[[
33391]],
63869:[[
35538]],
63870:[[
37327]],
63871:[[
21237]],
63872:[[
21570]],
63873:[[
22899]],
63874:[[
24300]],
63875:[[
26053]],
63876:[[
28670]],
63877:[[
31018]],
63878:[[
38317]],
63879:[[
39530]],
63880:[[
40599]],
63881:[[
40654]],
63882:[[
21147]],
63883:[[
26310]],
63884:[[
27511]],
63885:[[
36706]],
63886:[[
24180]],
63887:[[
24976]],
63888:[[
25088]],
63889:[[
25754]],
63890:[[
28451]],
63891:[[
29001]],
63892:[[
29833]],
63893:[[
31178]],
63894:[[
32244]],
63895:[[
32879]],
63896:[[
36646]],
63897:[[
34030]],
63898:[[
36899]],
63899:[[
37706]],
63900:[[
21015]],
63901:[[
21155]],
63902:[[
21693]],
63903:[[
28872]],
63904:[[
35010]],
63905:[[
35498]],
63906:[[
24265]],
63907:[[
24565]],
63908:[[
25467]],
63909:[[
27566]],
63910:[[
31806]],
63911:[[
29557]],
63912:[[
20196]],
63913:[[
22265]],
63914:[[
23527]],
63915:[[
23994]],
63916:[[
24604]],
63917:[[
29618]],
63918:[[
29801]],
63919:[[
32666]],
63920:[[
32838]],
63921:[[
37428]],
63922:[[
38646]],
63923:[[
38728]],
63924:[[
38936]],
63925:[[
20363]],
63926:[[
31150]],
63927:[[
37300]],
63928:[[
38584]],
63929:[[
24801]],
63930:[[
20102]],
63931:[[
20698]],
63932:[[
23534]],
63933:[[
23615]],
63934:[[
26009]],
63935:[[
27138]],
63936:[[
29134]],
63937:[[
30274]],
63938:[[
34044]],
63939:[[
36988]],
63940:[[
40845]],
63941:[[
26248]],
63942:[[
38446]],
63943:[[
21129]],
63944:[[
26491]],
63945:[[
26611]],
63946:[[
27969]],
63947:[[
28316]],
63948:[[
29705]],
63949:[[
30041]],
63950:[[
30827]],
63951:[[
32016]],
63952:[[
39006]],
63953:[[
20845]],
63954:[[
25134]],
63955:[[
38520]],
63956:[[
20523]],
63957:[[
23833]],
63958:[[
28138]],
63959:[[
36650]],
63960:[[
24459]],
63961:[[
24900]],
63962:[[
26647]],
63963:[[
29575]],
63964:[[
38534]],
63965:[[
21033]],
63966:[[
21519]],
63967:[[
23653]],
63968:[[
26131]],
63969:[[
26446]],
63970:[[
26792]],
63971:[[
27877]],
63972:[[
29702]],
63973:[[
30178]],
63974:[[
32633]],
63975:[[
35023]],
63976:[[
35041]],
63977:[[
37324]],
63978:[[
38626]],
63979:[[
21311]],
63980:[[
28346]],
63981:[[
21533]],
63982:[[
29136]],
63983:[[
29848]],
63984:[[
34298]],
63985:[[
38563]],
63986:[[
40023]],
63987:[[
40607]],
63988:[[
26519]],
63989:[[
28107]],
63990:[[
33256]],
63991:[[
31435]],
63992:[[
31520]],
63993:[[
31890]],
63994:[[
29376]],
63995:[[
28825]],
63996:[[
35672]],
63997:[[
20160]],
63998:[[
33590]],
63999:[[
21050]],
194816:[[
27966]],
194817:[[
28023]],
194818:[[
27969]],
194819:[[
28009]],
194820:[[
28024]],
194821:[[
28037]],
194822:[[
146718]],
194823:[[
27956]],
194824:[[
28207]],
194825:[[
28270]],
194826:[[
15667]],
194827:[[
28363]],
194828:[[
28359]],
194829:[[
147153]],
194830:[[
28153]],
194831:[[
28526]],
194832:[[
147294]],
194833:[[
147342]],
194834:[[
28614]],
194835:[[
28729]],
194836:[[
28702]],
194837:[[
28699]],
194838:[[
15766]],
194839:[[
28746]],
194840:[[
28797]],
194841:[[
28791]],
194842:[[
28845]],
194843:[[
132389]],
194844:[[
28997]],
194845:[[
148067]],
194846:[[
29084]],
194847:[[
148395]],
194848:[[
29224]],
194849:[[
29237]],
194850:[[
29264]],
194851:[[
149000]],
194852:[[
29312]],
194853:[[
29333]],
194854:[[
149301]],
194855:[[
149524]],
194856:[[
29562]],
194857:[[
29579]],
194858:[[
16044]],
194859:[[
29605]],
194860:[[
16056]],
194861:[[
16056]],
194862:[[
29767]],
194863:[[
29788]],
194864:[[
29809]],
194865:[[
29829]],
194866:[[
29898]],
194867:[[
16155]],
194868:[[
29988]],
194869:[[
150582]],
194870:[[
30014]],
194871:[[
150674]],
194872:[[
30064]],
194873:[[
139679]],
194874:[[
30224]],
194875:[[
151457]],
194876:[[
151480]],
194877:[[
151620]],
194878:[[
16380]],
194879:[[
16392]],
194880:[[
30452]],
194881:[[
151795]],
194882:[[
151794]],
194883:[[
151833]],
194884:[[
151859]],
194885:[[
30494]],
194886:[[
30495]],
194887:[[
30495]],
194888:[[
30538]],
194889:[[
16441]],
194890:[[
30603]],
194891:[[
16454]],
194892:[[
16534]],
194893:[[
152605]],
194894:[[
30798]],
194895:[[
30860]],
194896:[[
30924]],
194897:[[
16611]],
194898:[[
153126]],
194899:[[
31062]],
194900:[[
153242]],
194901:[[
153285]],
194902:[[
31119]],
194903:[[
31211]],
194904:[[
16687]],
194905:[[
31296]],
194906:[[
31306]],
194907:[[
31311]],
194908:[[
153980]],
194909:[[
154279]],
194910:[[
154279]],
194911:[[
31470]],
194912:[[
16898]],
194913:[[
154539]],
194914:[[
31686]],
194915:[[
31689]],
194916:[[
16935]],
194917:[[
154752]],
194918:[[
31954]],
194919:[[
17056]],
194920:[[
31976]],
194921:[[
31971]],
194922:[[
32000]],
194923:[[
155526]],
194924:[[
32099]],
194925:[[
17153]],
194926:[[
32199]],
194927:[[
32258]],
194928:[[
32325]],
194929:[[
17204]],
194930:[[
156200]],
194931:[[
156231]],
194932:[[
17241]],
194933:[[
156377]],
194934:[[
32634]],
194935:[[
156478]],
194936:[[
32661]],
194937:[[
32762]],
194938:[[
32773]],
194939:[[
156890]],
194940:[[
156963]],
194941:[[
32864]],
194942:[[
157096]],
194943:[[
32880]],
194944:[[
144223]],
194945:[[
17365]],
194946:[[
32946]],
194947:[[
33027]],
194948:[[
17419]],
194949:[[
33086]],
194950:[[
23221]],
194951:[[
157607]],
194952:[[
157621]],
194953:[[
144275]],
194954:[[
144284]],
194955:[[
33281]],
194956:[[
33284]],
194957:[[
36766]],
194958:[[
17515]],
194959:[[
33425]],
194960:[[
33419]],
194961:[[
33437]],
194962:[[
21171]],
194963:[[
33457]],
194964:[[
33459]],
194965:[[
33469]],
194966:[[
33510]],
194967:[[
158524]],
194968:[[
33509]],
194969:[[
33565]],
194970:[[
33635]],
194971:[[
33709]],
194972:[[
33571]],
194973:[[
33725]],
194974:[[
33767]],
194975:[[
33879]],
194976:[[
33619]],
194977:[[
33738]],
194978:[[
33740]],
194979:[[
33756]],
194980:[[
158774]],
194981:[[
159083]],
194982:[[
158933]],
194983:[[
17707]],
194984:[[
34033]],
194985:[[
34035]],
194986:[[
34070]],
194987:[[
160714]],
194988:[[
34148]],
194989:[[
159532]],
194990:[[
17757]],
194991:[[
17761]],
194992:[[
159665]],
194993:[[
159954]],
194994:[[
17771]],
194995:[[
34384]],
194996:[[
34396]],
194997:[[
34407]],
194998:[[
34409]],
194999:[[
34473]],
195000:[[
34440]],
195001:[[
34574]],
195002:[[
34530]],
195003:[[
34681]],
195004:[[
34600]],
195005:[[
34667]],
195006:[[
34694]],
195007:[[
17879]],
195008:[[
34785]],
195009:[[
34817]],
195010:[[
17913]],
195011:[[
34912]],
195012:[[
34915]],
195013:[[
161383]],
195014:[[
35031]],
195015:[[
35038]],
195016:[[
17973]],
195017:[[
35066]],
195018:[[
13499]],
195019:[[
161966]],
195020:[[
162150]],
195021:[[
18110]],
195022:[[
18119]],
195023:[[
35488]],
195024:[[
35565]],
195025:[[
35722]],
195026:[[
35925]],
195027:[[
162984]],
195028:[[
36011]],
195029:[[
36033]],
195030:[[
36123]],
195031:[[
36215]],
195032:[[
163631]],
195033:[[
133124]],
195034:[[
36299]],
195035:[[
36284]],
195036:[[
36336]],
195037:[[
133342]],
195038:[[
36564]],
195039:[[
36664]],
195040:[[
165330]],
195041:[[
165357]],
195042:[[
37012]],
195043:[[
37105]],
195044:[[
37137]],
195045:[[
165678]],
195046:[[
37147]],
195047:[[
37432]],
195048:[[
37591]],
195049:[[
37592]],
195050:[[
37500]],
195051:[[
37881]],
195052:[[
37909]],
195053:[[
166906]],
195054:[[
38283]],
195055:[[
18837]],
195056:[[
38327]],
195057:[[
167287]],
195058:[[
18918]],
195059:[[
38595]],
195060:[[
23986]],
195061:[[
38691]],
195062:[[
168261]],
195063:[[
168474]],
195064:[[
19054]],
195065:[[
19062]],
195066:[[
38880]],
195067:[[
168970]],
195068:[[
19122]],
195069:[[
169110]],
195070:[[
38923]],
195071:[[
38923]]},
5175 64000:{
64000:[[
20999]],
64001:[[
24230]],
64002:[[
25299]],
64003:[[
31958]],
64004:[[
23429]],
64005:[[
27934]],
64006:[[
26292]],
64007:[[
36667]],
64008:[[
34892]],
64009:[[
38477]],
64010:[[
35211]],
64011:[[
24275]],
64012:[[
20800]],
64013:[[
21952]],
64016:[[
22618]],
64018:[[
26228]],
64021:[[
20958]],
64022:[[
29482]],
64023:[[
30410]],
64024:[[
31036]],
64025:[[
31070]],
64026:[[
31077]],
64027:[[
31119]],
64028:[[
38742]],
64029:[[
31934]],
64030:[[
32701]],
64032:[[
34322]],
64034:[[
35576]],
64037:[[
36920]],
64038:[[
37117]],
64042:[[
39151]],
64043:[[
39164]],
64044:[[
39208]],
64045:[[
40372]],
64046:[[
37086]],
64047:[[
38583]],
64048:[[
20398]],
64049:[[
20711]],
64050:[[
20813]],
64051:[[
21193]],
64052:[[
21220]],
64053:[[
21329]],
64054:[[
21917]],
64055:[[
22022]],
64056:[[
22120]],
64057:[[
22592]],
64058:[[
22696]],
64059:[[
23652]],
64060:[[
23662]],
64061:[[
24724]],
64062:[[
24936]],
64063:[[
24974]],
64064:[[
25074]],
64065:[[
25935]],
64066:[[
26082]],
64067:[[
26257]],
64068:[[
26757]],
64069:[[
28023]],
64070:[[
28186]],
64071:[[
28450]],
64072:[[
29038]],
64073:[[
29227]],
64074:[[
29730]],
64075:[[
30865]],
64076:[[
31038]],
64077:[[
31049]],
64078:[[
31048]],
64079:[[
31056]],
64080:[[
31062]],
64081:[[
31069]],
64082:[[
31117]],
64083:[[
31118]],
64084:[[
31296]],
64085:[[
31361]],
64086:[[
31680]],
64087:[[
32244]],
64088:[[
32265]],
64089:[[
32321]],
64090:[[
32626]],
64091:[[
32773]],
64092:[[
33261]],
64093:[[
33401]],
64094:[[
33401]],
64095:[[
33879]],
64096:[[
35088]],
64097:[[
35222]],
64098:[[
35585]],
64099:[[
35641]],
64100:[[
36051]],
64101:[[
36104]],
64102:[[
36790]],
64103:[[
36920]],
64104:[[
38627]],
64105:[[
38911]],
64106:[[
38971]],
64107:[[
24693]],
64108:[[
148206]],
64109:[[
33304]],
64112:[[
20006]],
64113:[[
20917]],
64114:[[
20840]],
64115:[[
20352]],
64116:[[
20805]],
64117:[[
20864]],
64118:[[
21191]],
64119:[[
21242]],
64120:[[
21917]],
64121:[[
21845]],
64122:[[
21913]],
64123:[[
21986]],
64124:[[
22618]],
64125:[[
22707]],
64126:[[
22852]],
64127:[[
22868]],
64128:[[
23138]],
64129:[[
23336]],
64130:[[
24274]],
64131:[[
24281]],
64132:[[
24425]],
64133:[[
24493]],
64134:[[
24792]],
64135:[[
24910]],
64136:[[
24840]],
64137:[[
24974]],
64138:[[
24928]],
64139:[[
25074]],
64140:[[
25140]],
64141:[[
25540]],
64142:[[
25628]],
64143:[[
25682]],
64144:[[
25942]],
64145:[[
26228]],
64146:[[
26391]],
64147:[[
26395]],
64148:[[
26454]],
64149:[[
27513]],
64150:[[
27578]],
64151:[[
27969]],
64152:[[
28379]],
64153:[[
28363]],
64154:[[
28450]],
64155:[[
28702]],
64156:[[
29038]],
64157:[[
30631]],
64158:[[
29237]],
64159:[[
29359]],
64160:[[
29482]],
64161:[[
29809]],
64162:[[
29958]],
64163:[[
30011]],
64164:[[
30237]],
64165:[[
30239]],
64166:[[
30410]],
64167:[[
30427]],
64168:[[
30452]],
64169:[[
30538]],
64170:[[
30528]],
64171:[[
30924]],
64172:[[
31409]],
64173:[[
31680]],
64174:[[
31867]],
64175:[[
32091]],
64176:[[
32244]],
64177:[[
32574]],
64178:[[
32773]],
64179:[[
33618]],
64180:[[
33775]],
64181:[[
34681]],
64182:[[
35137]],
64183:[[
35206]],
64184:[[
35222]],
64185:[[
35519]],
64186:[[
35576]],
64187:[[
35531]],
64188:[[
35585]],
64189:[[
35582]],
64190:[[
35565]],
64191:[[
35641]],
64192:[[
35722]],
64193:[[
36104]],
64194:[[
36664]],
64195:[[
36978]],
64196:[[
37273]],
64197:[[
37494]],
64198:[[
38524]],
64199:[[
38627]],
64200:[[
38742]],
64201:[[
38875]],
64202:[[
38911]],
64203:[[
38923]],
64204:[[
38971]],
64205:[[
39698]],
64206:[[
40860]],
64207:[[
141386]],
64208:[[
141380]],
64209:[[
144341]],
64210:[[
15261]],
64211:[[
16408]],
64212:[[
16441]],
64213:[[
152137]],
64214:[[
154832]],
64215:[[
163539]],
64216:[[
40771]],
64217:[[
40846]],
195072:[[
38953]],
195073:[[
169398]],
195074:[[
39138]],
195075:[[
19251]],
195076:[[
39209]],
195077:[[
39335]],
195078:[[
39362]],
195079:[[
39422]],
195080:[[
19406]],
195081:[[
170800]],
195082:[[
39698]],
195083:[[
40000]],
195084:[[
40189]],
195085:[[
19662]],
195086:[[
19693]],
195087:[[
40295]],
195088:[[
172238]],
195089:[[
19704]],
195090:[[
172293]],
195091:[[
172558]],
195092:[[
172689]],
195093:[[
40635]],
195094:[[
19798]],
195095:[[
40697]],
195096:[[
40702]],
195097:[[
40709]],
195098:[[
40719]],
195099:[[
40726]],
195100:[[
40763]],
195101:[[
173568]]},
5176 64256:{
64256:[[
102,
102],
256],
64257:[[
102,
105],
256],
64258:[[
102,
108],
256],
64259:[[
102,
102,
105],
256],
64260:[[
102,
102,
108],
256],
64261:[[
383,
116],
256],
64262:[[
115,
116],
256],
64275:[[
1396,
1398],
256],
64276:[[
1396,
1381],
256],
64277:[[
1396,
1387],
256],
64278:[[
1406,
1398],
256],
64279:[[
1396,
1389],
256],
64285:[[
1497,
1460],
512],
64286:[,
26],
64287:[[
1522,
1463],
512],
64288:[[
1506],
256],
64289:[[
1488],
256],
64290:[[
1491],
256],
64291:[[
1492],
256],
64292:[[
1499],
256],
64293:[[
1500],
256],
64294:[[
1501],
256],
64295:[[
1512],
256],
64296:[[
1514],
256],
64297:[[
43],
256],
64298:[[
1513,
1473],
512],
64299:[[
1513,
1474],
512],
64300:[[
64329,
1473],
512],
64301:[[
64329,
1474],
512],
64302:[[
1488,
1463],
512],
64303:[[
1488,
1464],
512],
64304:[[
1488,
1468],
512],
64305:[[
1489,
1468],
512],
64306:[[
1490,
1468],
512],
64307:[[
1491,
1468],
512],
64308:[[
1492,
1468],
512],
64309:[[
1493,
1468],
512],
64310:[[
1494,
1468],
512],
64312:[[
1496,
1468],
512],
64313:[[
1497,
1468],
512],
64314:[[
1498,
1468],
512],
64315:[[
1499,
1468],
512],
64316:[[
1500,
1468],
512],
64318:[[
1502,
1468],
512],
64320:[[
1504,
1468],
512],
64321:[[
1505,
1468],
512],
64323:[[
1507,
1468],
512],
64324:[[
1508,
1468],
512],
64326:[[
1510,
1468],
512],
64327:[[
1511,
1468],
512],
64328:[[
1512,
1468],
512],
64329:[[
1513,
1468],
512],
64330:[[
1514,
1468],
512],
64331:[[
1493,
1465],
512],
64332:[[
1489,
1471],
512],
64333:[[
1499,
1471],
512],
64334:[[
1508,
1471],
512],
64335:[[
1488,
1500],
256],
64336:[[
1649],
256],
64337:[[
1649],
256],
64338:[[
1659],
256],
64339:[[
1659],
256],
64340:[[
1659],
256],
64341:[[
1659],
256],
64342:[[
1662],
256],
64343:[[
1662],
256],
64344:[[
1662],
256],
64345:[[
1662],
256],
64346:[[
1664],
256],
64347:[[
1664],
256],
64348:[[
1664],
256],
64349:[[
1664],
256],
64350:[[
1658],
256],
64351:[[
1658],
256],
64352:[[
1658],
256],
64353:[[
1658],
256],
64354:[[
1663],
256],
64355:[[
1663],
256],
64356:[[
1663],
256],
64357:[[
1663],
256],
64358:[[
1657],
256],
64359:[[
1657],
256],
64360:[[
1657],
256],
64361:[[
1657],
256],
64362:[[
1700],
256],
64363:[[
1700],
256],
64364:[[
1700],
256],
64365:[[
1700],
256],
64366:[[
1702],
256],
64367:[[
1702],
256],
64368:[[
1702],
256],
64369:[[
1702],
256],
64370:[[
1668],
256],
64371:[[
1668],
256],
64372:[[
1668],
256],
64373:[[
1668],
256],
64374:[[
1667],
256],
64375:[[
1667],
256],
64376:[[
1667],
256],
64377:[[
1667],
256],
64378:[[
1670],
256],
64379:[[
1670],
256],
64380:[[
1670],
256],
64381:[[
1670],
256],
64382:[[
1671],
256],
64383:[[
1671],
256],
64384:[[
1671],
256],
64385:[[
1671],
256],
64386:[[
1677],
256],
64387:[[
1677],
256],
64388:[[
1676],
256],
64389:[[
1676],
256],
64390:[[
1678],
256],
64391:[[
1678],
256],
64392:[[
1672],
256],
64393:[[
1672],
256],
64394:[[
1688],
256],
64395:[[
1688],
256],
64396:[[
1681],
256],
64397:[[
1681],
256],
64398:[[
1705],
256],
64399:[[
1705],
256],
64400:[[
1705],
256],
64401:[[
1705],
256],
64402:[[
1711],
256],
64403:[[
1711],
256],
64404:[[
1711],
256],
64405:[[
1711],
256],
64406:[[
1715],
256],
64407:[[
1715],
256],
64408:[[
1715],
256],
64409:[[
1715],
256],
64410:[[
1713],
256],
64411:[[
1713],
256],
64412:[[
1713],
256],
64413:[[
1713],
256],
64414:[[
1722],
256],
64415:[[
1722],
256],
64416:[[
1723],
256],
64417:[[
1723],
256],
64418:[[
1723],
256],
64419:[[
1723],
256],
64420:[[
1728],
256],
64421:[[
1728],
256],
64422:[[
1729],
256],
64423:[[
1729],
256],
64424:[[
1729],
256],
64425:[[
1729],
256],
64426:[[
1726],
256],
64427:[[
1726],
256],
64428:[[
1726],
256],
64429:[[
1726],
256],
64430:[[
1746],
256],
64431:[[
1746],
256],
64432:[[
1747],
256],
64433:[[
1747],
256],
64467:[[
1709],
256],
64468:[[
1709],
256],
64469:[[
1709],
256],
64470:[[
1709],
256],
64471:[[
1735],
256],
64472:[[
1735],
256],
64473:[[
1734],
256],
64474:[[
1734],
256],
64475:[[
1736],
256],
64476:[[
1736],
256],
64477:[[
1655],
256],
64478:[[
1739],
256],
64479:[[
1739],
256],
64480:[[
1733],
256],
64481:[[
1733],
256],
64482:[[
1737],
256],
64483:[[
1737],
256],
64484:[[
1744],
256],
64485:[[
1744],
256],
64486:[[
1744],
256],
64487:[[
1744],
256],
64488:[[
1609],
256],
64489:[[
1609],
256],
64490:[[
1574,
1575],
256],
64491:[[
1574,
1575],
256],
64492:[[
1574,
1749],
256],
64493:[[
1574,
1749],
256],
64494:[[
1574,
1608],
256],
64495:[[
1574,
1608],
256],
64496:[[
1574,
1735],
256],
64497:[[
1574,
1735],
256],
64498:[[
1574,
1734],
256],
64499:[[
1574,
1734],
256],
64500:[[
1574,
1736],
256],
64501:[[
1574,
1736],
256],
64502:[[
1574,
1744],
256],
64503:[[
1574,
1744],
256],
64504:[[
1574,
1744],
256],
64505:[[
1574,
1609],
256],
64506:[[
1574,
1609],
256],
64507:[[
1574,
1609],
256],
64508:[[
1740],
256],
64509:[[
1740],
256],
64510:[[
1740],
256],
64511:[[
1740],
256]},
5177 64512:{
64512:[[
1574,
1580],
256],
64513:[[
1574,
1581],
256],
64514:[[
1574,
1605],
256],
64515:[[
1574,
1609],
256],
64516:[[
1574,
1610],
256],
64517:[[
1576,
1580],
256],
64518:[[
1576,
1581],
256],
64519:[[
1576,
1582],
256],
64520:[[
1576,
1605],
256],
64521:[[
1576,
1609],
256],
64522:[[
1576,
1610],
256],
64523:[[
1578,
1580],
256],
64524:[[
1578,
1581],
256],
64525:[[
1578,
1582],
256],
64526:[[
1578,
1605],
256],
64527:[[
1578,
1609],
256],
64528:[[
1578,
1610],
256],
64529:[[
1579,
1580],
256],
64530:[[
1579,
1605],
256],
64531:[[
1579,
1609],
256],
64532:[[
1579,
1610],
256],
64533:[[
1580,
1581],
256],
64534:[[
1580,
1605],
256],
64535:[[
1581,
1580],
256],
64536:[[
1581,
1605],
256],
64537:[[
1582,
1580],
256],
64538:[[
1582,
1581],
256],
64539:[[
1582,
1605],
256],
64540:[[
1587,
1580],
256],
64541:[[
1587,
1581],
256],
64542:[[
1587,
1582],
256],
64543:[[
1587,
1605],
256],
64544:[[
1589,
1581],
256],
64545:[[
1589,
1605],
256],
64546:[[
1590,
1580],
256],
64547:[[
1590,
1581],
256],
64548:[[
1590,
1582],
256],
64549:[[
1590,
1605],
256],
64550:[[
1591,
1581],
256],
64551:[[
1591,
1605],
256],
64552:[[
1592,
1605],
256],
64553:[[
1593,
1580],
256],
64554:[[
1593,
1605],
256],
64555:[[
1594,
1580],
256],
64556:[[
1594,
1605],
256],
64557:[[
1601,
1580],
256],
64558:[[
1601,
1581],
256],
64559:[[
1601,
1582],
256],
64560:[[
1601,
1605],
256],
64561:[[
1601,
1609],
256],
64562:[[
1601,
1610],
256],
64563:[[
1602,
1581],
256],
64564:[[
1602,
1605],
256],
64565:[[
1602,
1609],
256],
64566:[[
1602,
1610],
256],
64567:[[
1603,
1575],
256],
64568:[[
1603,
1580],
256],
64569:[[
1603,
1581],
256],
64570:[[
1603,
1582],
256],
64571:[[
1603,
1604],
256],
64572:[[
1603,
1605],
256],
64573:[[
1603,
1609],
256],
64574:[[
1603,
1610],
256],
64575:[[
1604,
1580],
256],
64576:[[
1604,
1581],
256],
64577:[[
1604,
1582],
256],
64578:[[
1604,
1605],
256],
64579:[[
1604,
1609],
256],
64580:[[
1604,
1610],
256],
64581:[[
1605,
1580],
256],
64582:[[
1605,
1581],
256],
64583:[[
1605,
1582],
256],
64584:[[
1605,
1605],
256],
64585:[[
1605,
1609],
256],
64586:[[
1605,
1610],
256],
64587:[[
1606,
1580],
256],
64588:[[
1606,
1581],
256],
64589:[[
1606,
1582],
256],
64590:[[
1606,
1605],
256],
64591:[[
1606,
1609],
256],
64592:[[
1606,
1610],
256],
64593:[[
1607,
1580],
256],
64594:[[
1607,
1605],
256],
64595:[[
1607,
1609],
256],
64596:[[
1607,
1610],
256],
64597:[[
1610,
1580],
256],
64598:[[
1610,
1581],
256],
64599:[[
1610,
1582],
256],
64600:[[
1610,
1605],
256],
64601:[[
1610,
1609],
256],
64602:[[
1610,
1610],
256],
64603:[[
1584,
1648],
256],
64604:[[
1585,
1648],
256],
64605:[[
1609,
1648],
256],
64606:[[
32,
1612,
1617],
256],
64607:[[
32,
1613,
1617],
256],
64608:[[
32,
1614,
1617],
256],
64609:[[
32,
1615,
1617],
256],
64610:[[
32,
1616,
1617],
256],
64611:[[
32,
1617,
1648],
256],
64612:[[
1574,
1585],
256],
64613:[[
1574,
1586],
256],
64614:[[
1574,
1605],
256],
64615:[[
1574,
1606],
256],
64616:[[
1574,
1609],
256],
64617:[[
1574,
1610],
256],
64618:[[
1576,
1585],
256],
64619:[[
1576,
1586],
256],
64620:[[
1576,
1605],
256],
64621:[[
1576,
1606],
256],
64622:[[
1576,
1609],
256],
64623:[[
1576,
1610],
256],
64624:[[
1578,
1585],
256],
64625:[[
1578,
1586],
256],
64626:[[
1578,
1605],
256],
64627:[[
1578,
1606],
256],
64628:[[
1578,
1609],
256],
64629:[[
1578,
1610],
256],
64630:[[
1579,
1585],
256],
64631:[[
1579,
1586],
256],
64632:[[
1579,
1605],
256],
64633:[[
1579,
1606],
256],
64634:[[
1579,
1609],
256],
64635:[[
1579,
1610],
256],
64636:[[
1601,
1609],
256],
64637:[[
1601,
1610],
256],
64638:[[
1602,
1609],
256],
64639:[[
1602,
1610],
256],
64640:[[
1603,
1575],
256],
64641:[[
1603,
1604],
256],
64642:[[
1603,
1605],
256],
64643:[[
1603,
1609],
256],
64644:[[
1603,
1610],
256],
64645:[[
1604,
1605],
256],
64646:[[
1604,
1609],
256],
64647:[[
1604,
1610],
256],
64648:[[
1605,
1575],
256],
64649:[[
1605,
1605],
256],
64650:[[
1606,
1585],
256],
64651:[[
1606,
1586],
256],
64652:[[
1606,
1605],
256],
64653:[[
1606,
1606],
256],
64654:[[
1606,
1609],
256],
64655:[[
1606,
1610],
256],
64656:[[
1609,
1648],
256],
64657:[[
1610,
1585],
256],
64658:[[
1610,
1586],
256],
64659:[[
1610,
1605],
256],
64660:[[
1610,
1606],
256],
64661:[[
1610,
1609],
256],
64662:[[
1610,
1610],
256],
64663:[[
1574,
1580],
256],
64664:[[
1574,
1581],
256],
64665:[[
1574,
1582],
256],
64666:[[
1574,
1605],
256],
64667:[[
1574,
1607],
256],
64668:[[
1576,
1580],
256],
64669:[[
1576,
1581],
256],
64670:[[
1576,
1582],
256],
64671:[[
1576,
1605],
256],
64672:[[
1576,
1607],
256],
64673:[[
1578,
1580],
256],
64674:[[
1578,
1581],
256],
64675:[[
1578,
1582],
256],
64676:[[
1578,
1605],
256],
64677:[[
1578,
1607],
256],
64678:[[
1579,
1605],
256],
64679:[[
1580,
1581],
256],
64680:[[
1580,
1605],
256],
64681:[[
1581,
1580],
256],
64682:[[
1581,
1605],
256],
64683:[[
1582,
1580],
256],
64684:[[
1582,
1605],
256],
64685:[[
1587,
1580],
256],
64686:[[
1587,
1581],
256],
64687:[[
1587,
1582],
256],
64688:[[
1587,
1605],
256],
64689:[[
1589,
1581],
256],
64690:[[
1589,
1582],
256],
64691:[[
1589,
1605],
256],
64692:[[
1590,
1580],
256],
64693:[[
1590,
1581],
256],
64694:[[
1590,
1582],
256],
64695:[[
1590,
1605],
256],
64696:[[
1591,
1581],
256],
64697:[[
1592,
1605],
256],
64698:[[
1593,
1580],
256],
64699:[[
1593,
1605],
256],
64700:[[
1594,
1580],
256],
64701:[[
1594,
1605],
256],
64702:[[
1601,
1580],
256],
64703:[[
1601,
1581],
256],
64704:[[
1601,
1582],
256],
64705:[[
1601,
1605],
256],
64706:[[
1602,
1581],
256],
64707:[[
1602,
1605],
256],
64708:[[
1603,
1580],
256],
64709:[[
1603,
1581],
256],
64710:[[
1603,
1582],
256],
64711:[[
1603,
1604],
256],
64712:[[
1603,
1605],
256],
64713:[[
1604,
1580],
256],
64714:[[
1604,
1581],
256],
64715:[[
1604,
1582],
256],
64716:[[
1604,
1605],
256],
64717:[[
1604,
1607],
256],
64718:[[
1605,
1580],
256],
64719:[[
1605,
1581],
256],
64720:[[
1605,
1582],
256],
64721:[[
1605,
1605],
256],
64722:[[
1606,
1580],
256],
64723:[[
1606,
1581],
256],
64724:[[
1606,
1582],
256],
64725:[[
1606,
1605],
256],
64726:[[
1606,
1607],
256],
64727:[[
1607,
1580],
256],
64728:[[
1607,
1605],
256],
64729:[[
1607,
1648],
256],
64730:[[
1610,
1580],
256],
64731:[[
1610,
1581],
256],
64732:[[
1610,
1582],
256],
64733:[[
1610,
1605],
256],
64734:[[
1610,
1607],
256],
64735:[[
1574,
1605],
256],
64736:[[
1574,
1607],
256],
64737:[[
1576,
1605],
256],
64738:[[
1576,
1607],
256],
64739:[[
1578,
1605],
256],
64740:[[
1578,
1607],
256],
64741:[[
1579,
1605],
256],
64742:[[
1579,
1607],
256],
64743:[[
1587,
1605],
256],
64744:[[
1587,
1607],
256],
64745:[[
1588,
1605],
256],
64746:[[
1588,
1607],
256],
64747:[[
1603,
1604],
256],
64748:[[
1603,
1605],
256],
64749:[[
1604,
1605],
256],
64750:[[
1606,
1605],
256],
64751:[[
1606,
1607],
256],
64752:[[
1610,
1605],
256],
64753:[[
1610,
1607],
256],
64754:[[
1600,
1614,
1617],
256],
64755:[[
1600,
1615,
1617],
256],
64756:[[
1600,
1616,
1617],
256],
64757:[[
1591,
1609],
256],
64758:[[
1591,
1610],
256],
64759:[[
1593,
1609],
256],
64760:[[
1593,
1610],
256],
64761:[[
1594,
1609],
256],
64762:[[
1594,
1610],
256],
64763:[[
1587,
1609],
256],
64764:[[
1587,
1610],
256],
64765:[[
1588,
1609],
256],
64766:[[
1588,
1610],
256],
64767:[[
1581,
1609],
256]},
5178 64768:{
64768:[[
1581,
1610],
256],
64769:[[
1580,
1609],
256],
64770:[[
1580,
1610],
256],
64771:[[
1582,
1609],
256],
64772:[[
1582,
1610],
256],
64773:[[
1589,
1609],
256],
64774:[[
1589,
1610],
256],
64775:[[
1590,
1609],
256],
64776:[[
1590,
1610],
256],
64777:[[
1588,
1580],
256],
64778:[[
1588,
1581],
256],
64779:[[
1588,
1582],
256],
64780:[[
1588,
1605],
256],
64781:[[
1588,
1585],
256],
64782:[[
1587,
1585],
256],
64783:[[
1589,
1585],
256],
64784:[[
1590,
1585],
256],
64785:[[
1591,
1609],
256],
64786:[[
1591,
1610],
256],
64787:[[
1593,
1609],
256],
64788:[[
1593,
1610],
256],
64789:[[
1594,
1609],
256],
64790:[[
1594,
1610],
256],
64791:[[
1587,
1609],
256],
64792:[[
1587,
1610],
256],
64793:[[
1588,
1609],
256],
64794:[[
1588,
1610],
256],
64795:[[
1581,
1609],
256],
64796:[[
1581,
1610],
256],
64797:[[
1580,
1609],
256],
64798:[[
1580,
1610],
256],
64799:[[
1582,
1609],
256],
64800:[[
1582,
1610],
256],
64801:[[
1589,
1609],
256],
64802:[[
1589,
1610],
256],
64803:[[
1590,
1609],
256],
64804:[[
1590,
1610],
256],
64805:[[
1588,
1580],
256],
64806:[[
1588,
1581],
256],
64807:[[
1588,
1582],
256],
64808:[[
1588,
1605],
256],
64809:[[
1588,
1585],
256],
64810:[[
1587,
1585],
256],
64811:[[
1589,
1585],
256],
64812:[[
1590,
1585],
256],
64813:[[
1588,
1580],
256],
64814:[[
1588,
1581],
256],
64815:[[
1588,
1582],
256],
64816:[[
1588,
1605],
256],
64817:[[
1587,
1607],
256],
64818:[[
1588,
1607],
256],
64819:[[
1591,
1605],
256],
64820:[[
1587,
1580],
256],
64821:[[
1587,
1581],
256],
64822:[[
1587,
1582],
256],
64823:[[
1588,
1580],
256],
64824:[[
1588,
1581],
256],
64825:[[
1588,
1582],
256],
64826:[[
1591,
1605],
256],
64827:[[
1592,
1605],
256],
64828:[[
1575,
1611],
256],
64829:[[
1575,
1611],
256],
64848:[[
1578,
1580,
1605],
256],
64849:[[
1578,
1581,
1580],
256],
64850:[[
1578,
1581,
1580],
256],
64851:[[
1578,
1581,
1605],
256],
64852:[[
1578,
1582,
1605],
256],
64853:[[
1578,
1605,
1580],
256],
64854:[[
1578,
1605,
1581],
256],
64855:[[
1578,
1605,
1582],
256],
64856:[[
1580,
1605,
1581],
256],
64857:[[
1580,
1605,
1581],
256],
64858:[[
1581,
1605,
1610],
256],
64859:[[
1581,
1605,
1609],
256],
64860:[[
1587,
1581,
1580],
256],
64861:[[
1587,
1580,
1581],
256],
64862:[[
1587,
1580,
1609],
256],
64863:[[
1587,
1605,
1581],
256],
64864:[[
1587,
1605,
1581],
256],
64865:[[
1587,
1605,
1580],
256],
64866:[[
1587,
1605,
1605],
256],
64867:[[
1587,
1605,
1605],
256],
64868:[[
1589,
1581,
1581],
256],
64869:[[
1589,
1581,
1581],
256],
64870:[[
1589,
1605,
1605],
256],
64871:[[
1588,
1581,
1605],
256],
64872:[[
1588,
1581,
1605],
256],
64873:[[
1588,
1580,
1610],
256],
64874:[[
1588,
1605,
1582],
256],
64875:[[
1588,
1605,
1582],
256],
64876:[[
1588,
1605,
1605],
256],
64877:[[
1588,
1605,
1605],
256],
64878:[[
1590,
1581,
1609],
256],
64879:[[
1590,
1582,
1605],
256],
64880:[[
1590,
1582,
1605],
256],
64881:[[
1591,
1605,
1581],
256],
64882:[[
1591,
1605,
1581],
256],
64883:[[
1591,
1605,
1605],
256],
64884:[[
1591,
1605,
1610],
256],
64885:[[
1593,
1580,
1605],
256],
64886:[[
1593,
1605,
1605],
256],
64887:[[
1593,
1605,
1605],
256],
64888:[[
1593,
1605,
1609],
256],
64889:[[
1594,
1605,
1605],
256],
64890:[[
1594,
1605,
1610],
256],
64891:[[
1594,
1605,
1609],
256],
64892:[[
1601,
1582,
1605],
256],
64893:[[
1601,
1582,
1605],
256],
64894:[[
1602,
1605,
1581],
256],
64895:[[
1602,
1605,
1605],
256],
64896:[[
1604,
1581,
1605],
256],
64897:[[
1604,
1581,
1610],
256],
64898:[[
1604,
1581,
1609],
256],
64899:[[
1604,
1580,
1580],
256],
64900:[[
1604,
1580,
1580],
256],
64901:[[
1604,
1582,
1605],
256],
64902:[[
1604,
1582,
1605],
256],
64903:[[
1604,
1605,
1581],
256],
64904:[[
1604,
1605,
1581],
256],
64905:[[
1605,
1581,
1580],
256],
64906:[[
1605,
1581,
1605],
256],
64907:[[
1605,
1581,
1610],
256],
64908:[[
1605,
1580,
1581],
256],
64909:[[
1605,
1580,
1605],
256],
64910:[[
1605,
1582,
1580],
256],
64911:[[
1605,
1582,
1605],
256],
64914:[[
1605,
1580,
1582],
256],
64915:[[
1607,
1605,
1580],
256],
64916:[[
1607,
1605,
1605],
256],
64917:[[
1606,
1581,
1605],
256],
64918:[[
1606,
1581,
1609],
256],
64919:[[
1606,
1580,
1605],
256],
64920:[[
1606,
1580,
1605],
256],
64921:[[
1606,
1580,
1609],
256],
64922:[[
1606,
1605,
1610],
256],
64923:[[
1606,
1605,
1609],
256],
64924:[[
1610,
1605,
1605],
256],
64925:[[
1610,
1605,
1605],
256],
64926:[[
1576,
1582,
1610],
256],
64927:[[
1578,
1580,
1610],
256],
64928:[[
1578,
1580,
1609],
256],
64929:[[
1578,
1582,
1610],
256],
64930:[[
1578,
1582,
1609],
256],
64931:[[
1578,
1605,
1610],
256],
64932:[[
1578,
1605,
1609],
256],
64933:[[
1580,
1605,
1610],
256],
64934:[[
1580,
1581,
1609],
256],
64935:[[
1580,
1605,
1609],
256],
64936:[[
1587,
1582,
1609],
256],
64937:[[
1589,
1581,
1610],
256],
64938:[[
1588,
1581,
1610],
256],
64939:[[
1590,
1581,
1610],
256],
64940:[[
1604,
1580,
1610],
256],
64941:[[
1604,
1605,
1610],
256],
64942:[[
1610,
1581,
1610],
256],
64943:[[
1610,
1580,
1610],
256],
64944:[[
1610,
1605,
1610],
256],
64945:[[
1605,
1605,
1610],
256],
64946:[[
1602,
1605,
1610],
256],
64947:[[
1606,
1581,
1610],
256],
64948:[[
1602,
1605,
1581],
256],
64949:[[
1604,
1581,
1605],
256],
64950:[[
1593,
1605,
1610],
256],
64951:[[
1603,
1605,
1610],
256],
64952:[[
1606,
1580,
1581],
256],
64953:[[
1605,
1582,
1610],
256],
64954:[[
1604,
1580,
1605],
256],
64955:[[
1603,
1605,
1605],
256],
64956:[[
1604,
1580,
1605],
256],
64957:[[
1606,
1580,
1581],
256],
64958:[[
1580,
1581,
1610],
256],
64959:[[
1581,
1580,
1610],
256],
64960:[[
1605,
1580,
1610],
256],
64961:[[
1601,
1605,
1610],
256],
64962:[[
1576,
1581,
1610],
256],
64963:[[
1603,
1605,
1605],
256],
64964:[[
1593,
1580,
1605],
256],
64965:[[
1589,
1605,
1605],
256],
64966:[[
1587,
1582,
1610],
256],
64967:[[
1606,
1580,
1610],
256],
65008:[[
1589,
1604,
1746],
256],
65009:[[
1602,
1604,
1746],
256],
65010:[[
1575,
1604,
1604,
1607],
256],
65011:[[
1575,
1603,
1576,
1585],
256],
65012:[[
1605,
1581,
1605,
1583],
256],
65013:[[
1589,
1604,
1593,
1605],
256],
65014:[[
1585,
1587,
1608,
1604],
256],
65015:[[
1593,
1604,
1610,
1607],
256],
65016:[[
1608,
1587,
1604,
1605],
256],
65017:[[
1589,
1604,
1609],
256],
65018:[[
1589,
1604,
1609,
32,
1575,
1604,
1604,
1607,
32,
1593,
1604,
1610,
1607,
32,
1608,
1587,
1604,
1605],
256],
65019:[[
1580,
1604,
32,
1580,
1604,
1575,
1604,
1607],
256],
65020:[[
1585,
1740,
1575,
1604],
256]},
5179 65024:{
65040:[[
44],
256],
65041:[[
12289],
256],
65042:[[
12290],
256],
65043:[[
58],
256],
65044:[[
59],
256],
65045:[[
33],
256],
65046:[[
63],
256],
65047:[[
12310],
256],
65048:[[
12311],
256],
65049:[[
8230],
256],
65056:[,
230],
65057:[,
230],
65058:[,
230],
65059:[,
230],
65060:[,
230],
65061:[,
230],
65062:[,
230],
65063:[,
220],
65064:[,
220],
65065:[,
220],
65066:[,
220],
65067:[,
220],
65068:[,
220],
65069:[,
220],
65072:[[
8229],
256],
65073:[[
8212],
256],
65074:[[
8211],
256],
65075:[[
95],
256],
65076:[[
95],
256],
65077:[[
40],
256],
65078:[[
41],
256],
65079:[[
123],
256],
65080:[[
125],
256],
65081:[[
12308],
256],
65082:[[
12309],
256],
65083:[[
12304],
256],
65084:[[
12305],
256],
65085:[[
12298],
256],
65086:[[
12299],
256],
65087:[[
12296],
256],
65088:[[
12297],
256],
65089:[[
12300],
256],
65090:[[
12301],
256],
65091:[[
12302],
256],
65092:[[
12303],
256],
65095:[[
91],
256],
65096:[[
93],
256],
65097:[[
8254],
256],
65098:[[
8254],
256],
65099:[[
8254],
256],
65100:[[
8254],
256],
65101:[[
95],
256],
65102:[[
95],
256],
65103:[[
95],
256],
65104:[[
44],
256],
65105:[[
12289],
256],
65106:[[
46],
256],
65108:[[
59],
256],
65109:[[
58],
256],
65110:[[
63],
256],
65111:[[
33],
256],
65112:[[
8212],
256],
65113:[[
40],
256],
65114:[[
41],
256],
65115:[[
123],
256],
65116:[[
125],
256],
65117:[[
12308],
256],
65118:[[
12309],
256],
65119:[[
35],
256],
65120:[[
38],
256],
65121:[[
42],
256],
65122:[[
43],
256],
65123:[[
45],
256],
65124:[[
60],
256],
65125:[[
62],
256],
65126:[[
61],
256],
65128:[[
92],
256],
65129:[[
36],
256],
65130:[[
37],
256],
65131:[[
64],
256],
65136:[[
32,
1611],
256],
65137:[[
1600,
1611],
256],
65138:[[
32,
1612],
256],
65140:[[
32,
1613],
256],
65142:[[
32,
1614],
256],
65143:[[
1600,
1614],
256],
65144:[[
32,
1615],
256],
65145:[[
1600,
1615],
256],
65146:[[
32,
1616],
256],
65147:[[
1600,
1616],
256],
65148:[[
32,
1617],
256],
65149:[[
1600,
1617],
256],
65150:[[
32,
1618],
256],
65151:[[
1600,
1618],
256],
65152:[[
1569],
256],
65153:[[
1570],
256],
65154:[[
1570],
256],
65155:[[
1571],
256],
65156:[[
1571],
256],
65157:[[
1572],
256],
65158:[[
1572],
256],
65159:[[
1573],
256],
65160:[[
1573],
256],
65161:[[
1574],
256],
65162:[[
1574],
256],
65163:[[
1574],
256],
65164:[[
1574],
256],
65165:[[
1575],
256],
65166:[[
1575],
256],
65167:[[
1576],
256],
65168:[[
1576],
256],
65169:[[
1576],
256],
65170:[[
1576],
256],
65171:[[
1577],
256],
65172:[[
1577],
256],
65173:[[
1578],
256],
65174:[[
1578],
256],
65175:[[
1578],
256],
65176:[[
1578],
256],
65177:[[
1579],
256],
65178:[[
1579],
256],
65179:[[
1579],
256],
65180:[[
1579],
256],
65181:[[
1580],
256],
65182:[[
1580],
256],
65183:[[
1580],
256],
65184:[[
1580],
256],
65185:[[
1581],
256],
65186:[[
1581],
256],
65187:[[
1581],
256],
65188:[[
1581],
256],
65189:[[
1582],
256],
65190:[[
1582],
256],
65191:[[
1582],
256],
65192:[[
1582],
256],
65193:[[
1583],
256],
65194:[[
1583],
256],
65195:[[
1584],
256],
65196:[[
1584],
256],
65197:[[
1585],
256],
65198:[[
1585],
256],
65199:[[
1586],
256],
65200:[[
1586],
256],
65201:[[
1587],
256],
65202:[[
1587],
256],
65203:[[
1587],
256],
65204:[[
1587],
256],
65205:[[
1588],
256],
65206:[[
1588],
256],
65207:[[
1588],
256],
65208:[[
1588],
256],
65209:[[
1589],
256],
65210:[[
1589],
256],
65211:[[
1589],
256],
65212:[[
1589],
256],
65213:[[
1590],
256],
65214:[[
1590],
256],
65215:[[
1590],
256],
65216:[[
1590],
256],
65217:[[
1591],
256],
65218:[[
1591],
256],
65219:[[
1591],
256],
65220:[[
1591],
256],
65221:[[
1592],
256],
65222:[[
1592],
256],
65223:[[
1592],
256],
65224:[[
1592],
256],
65225:[[
1593],
256],
65226:[[
1593],
256],
65227:[[
1593],
256],
65228:[[
1593],
256],
65229:[[
1594],
256],
65230:[[
1594],
256],
65231:[[
1594],
256],
65232:[[
1594],
256],
65233:[[
1601],
256],
65234:[[
1601],
256],
65235:[[
1601],
256],
65236:[[
1601],
256],
65237:[[
1602],
256],
65238:[[
1602],
256],
65239:[[
1602],
256],
65240:[[
1602],
256],
65241:[[
1603],
256],
65242:[[
1603],
256],
65243:[[
1603],
256],
65244:[[
1603],
256],
65245:[[
1604],
256],
65246:[[
1604],
256],
65247:[[
1604],
256],
65248:[[
1604],
256],
65249:[[
1605],
256],
65250:[[
1605],
256],
65251:[[
1605],
256],
65252:[[
1605],
256],
65253:[[
1606],
256],
65254:[[
1606],
256],
65255:[[
1606],
256],
65256:[[
1606],
256],
65257:[[
1607],
256],
65258:[[
1607],
256],
65259:[[
1607],
256],
65260:[[
1607],
256],
65261:[[
1608],
256],
65262:[[
1608],
256],
65263:[[
1609],
256],
65264:[[
1609],
256],
65265:[[
1610],
256],
65266:[[
1610],
256],
65267:[[
1610],
256],
65268:[[
1610],
256],
65269:[[
1604,
1570],
256],
65270:[[
1604,
1570],
256],
65271:[[
1604,
1571],
256],
65272:[[
1604,
1571],
256],
65273:[[
1604,
1573],
256],
65274:[[
1604,
1573],
256],
65275:[[
1604,
1575],
256],
65276:[[
1604,
1575],
256]},
5180 65280:{
65281:[[
33],
256],
65282:[[
34],
256],
65283:[[
35],
256],
65284:[[
36],
256],
65285:[[
37],
256],
65286:[[
38],
256],
65287:[[
39],
256],
65288:[[
40],
256],
65289:[[
41],
256],
65290:[[
42],
256],
65291:[[
43],
256],
65292:[[
44],
256],
65293:[[
45],
256],
65294:[[
46],
256],
65295:[[
47],
256],
65296:[[
48],
256],
65297:[[
49],
256],
65298:[[
50],
256],
65299:[[
51],
256],
65300:[[
52],
256],
65301:[[
53],
256],
65302:[[
54],
256],
65303:[[
55],
256],
65304:[[
56],
256],
65305:[[
57],
256],
65306:[[
58],
256],
65307:[[
59],
256],
65308:[[
60],
256],
65309:[[
61],
256],
65310:[[
62],
256],
65311:[[
63],
256],
65312:[[
64],
256],
65313:[[
65],
256],
65314:[[
66],
256],
65315:[[
67],
256],
65316:[[
68],
256],
65317:[[
69],
256],
65318:[[
70],
256],
65319:[[
71],
256],
65320:[[
72],
256],
65321:[[
73],
256],
65322:[[
74],
256],
65323:[[
75],
256],
65324:[[
76],
256],
65325:[[
77],
256],
65326:[[
78],
256],
65327:[[
79],
256],
65328:[[
80],
256],
65329:[[
81],
256],
65330:[[
82],
256],
65331:[[
83],
256],
65332:[[
84],
256],
65333:[[
85],
256],
65334:[[
86],
256],
65335:[[
87],
256],
65336:[[
88],
256],
65337:[[
89],
256],
65338:[[
90],
256],
65339:[[
91],
256],
65340:[[
92],
256],
65341:[[
93],
256],
65342:[[
94],
256],
65343:[[
95],
256],
65344:[[
96],
256],
65345:[[
97],
256],
65346:[[
98],
256],
65347:[[
99],
256],
65348:[[
100],
256],
65349:[[
101],
256],
65350:[[
102],
256],
65351:[[
103],
256],
65352:[[
104],
256],
65353:[[
105],
256],
65354:[[
106],
256],
65355:[[
107],
256],
65356:[[
108],
256],
65357:[[
109],
256],
65358:[[
110],
256],
65359:[[
111],
256],
65360:[[
112],
256],
65361:[[
113],
256],
65362:[[
114],
256],
65363:[[
115],
256],
65364:[[
116],
256],
65365:[[
117],
256],
65366:[[
118],
256],
65367:[[
119],
256],
65368:[[
120],
256],
65369:[[
121],
256],
65370:[[
122],
256],
65371:[[
123],
256],
65372:[[
124],
256],
65373:[[
125],
256],
65374:[[
126],
256],
65375:[[
10629],
256],
65376:[[
10630],
256],
65377:[[
12290],
256],
65378:[[
12300],
256],
65379:[[
12301],
256],
65380:[[
12289],
256],
65381:[[
12539],
256],
65382:[[
12530],
256],
65383:[[
12449],
256],
65384:[[
12451],
256],
65385:[[
12453],
256],
65386:[[
12455],
256],
65387:[[
12457],
256],
65388:[[
12515],
256],
65389:[[
12517],
256],
65390:[[
12519],
256],
65391:[[
12483],
256],
65392:[[
12540],
256],
65393:[[
12450],
256],
65394:[[
12452],
256],
65395:[[
12454],
256],
65396:[[
12456],
256],
65397:[[
12458],
256],
65398:[[
12459],
256],
65399:[[
12461],
256],
65400:[[
12463],
256],
65401:[[
12465],
256],
65402:[[
12467],
256],
65403:[[
12469],
256],
65404:[[
12471],
256],
65405:[[
12473],
256],
65406:[[
12475],
256],
65407:[[
12477],
256],
65408:[[
12479],
256],
65409:[[
12481],
256],
65410:[[
12484],
256],
65411:[[
12486],
256],
65412:[[
12488],
256],
65413:[[
12490],
256],
65414:[[
12491],
256],
65415:[[
12492],
256],
65416:[[
12493],
256],
65417:[[
12494],
256],
65418:[[
12495],
256],
65419:[[
12498],
256],
65420:[[
12501],
256],
65421:[[
12504],
256],
65422:[[
12507],
256],
65423:[[
12510],
256],
65424:[[
12511],
256],
65425:[[
12512],
256],
65426:[[
12513],
256],
65427:[[
12514],
256],
65428:[[
12516],
256],
65429:[[
12518],
256],
65430:[[
12520],
256],
65431:[[
12521],
256],
65432:[[
12522],
256],
65433:[[
12523],
256],
65434:[[
12524],
256],
65435:[[
12525],
256],
65436:[[
12527],
256],
65437:[[
12531],
256],
65438:[[
12441],
256],
65439:[[
12442],
256],
65440:[[
12644],
256],
65441:[[
12593],
256],
65442:[[
12594],
256],
65443:[[
12595],
256],
65444:[[
12596],
256],
65445:[[
12597],
256],
65446:[[
12598],
256],
65447:[[
12599],
256],
65448:[[
12600],
256],
65449:[[
12601],
256],
65450:[[
12602],
256],
65451:[[
12603],
256],
65452:[[
12604],
256],
65453:[[
12605],
256],
65454:[[
12606],
256],
65455:[[
12607],
256],
65456:[[
12608],
256],
65457:[[
12609],
256],
65458:[[
12610],
256],
65459:[[
12611],
256],
65460:[[
12612],
256],
65461:[[
12613],
256],
65462:[[
12614],
256],
65463:[[
12615],
256],
65464:[[
12616],
256],
65465:[[
12617],
256],
65466:[[
12618],
256],
65467:[[
12619],
256],
65468:[[
12620],
256],
65469:[[
12621],
256],
65470:[[
12622],
256],
65474:[[
12623],
256],
65475:[[
12624],
256],
65476:[[
12625],
256],
65477:[[
12626],
256],
65478:[[
12627],
256],
65479:[[
12628],
256],
65482:[[
12629],
256],
65483:[[
12630],
256],
65484:[[
12631],
256],
65485:[[
12632],
256],
65486:[[
12633],
256],
65487:[[
12634],
256],
65490:[[
12635],
256],
65491:[[
12636],
256],
65492:[[
12637],
256],
65493:[[
12638],
256],
65494:[[
12639],
256],
65495:[[
12640],
256],
65498:[[
12641],
256],
65499:[[
12642],
256],
65500:[[
12643],
256],
65504:[[
162],
256],
65505:[[
163],
256],
65506:[[
172],
256],
65507:[[
175],
256],
65508:[[
166],
256],
65509:[[
165],
256],
65510:[[
8361],
256],
65512:[[
9474],
256],
65513:[[
8592],
256],
65514:[[
8593],
256],
65515:[[
8594],
256],
65516:[[
8595],
256],
65517:[[
9632],
256],
65518:[[
9675],
256]}
5184 /***** Module to export */
5192 /*globals module:true,define:true*/
5195 if (typeof module ===
"object") {
5196 module.exports = unorm;
5199 } else if (typeof define ===
"function" && define.amd) {
5200 define(
"unorm", function () {
5209 /***** Export as shim for String::normalize method *****/
5211 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
5213 21.1.3.12 String.prototype.normalize(
form=
"NFC")
5214 When the normalize method is called with one argument form, the following steps are taken:
5216 1. Let O be CheckObjectCoercible(this value).
5217 2. Let S be ToString(O).
5218 3. ReturnIfAbrupt(S).
5219 4. If form is not provided or undefined let form be
"NFC".
5220 5. Let f be ToString(form).
5221 6. ReturnIfAbrupt(f).
5222 7. If f is not one of
"NFC",
"NFD",
"NFKC", or
"NFKD", then throw a RangeError Exception.
5223 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #
15, UnicodeNormalizatoin Forms.
5226 The length property of the normalize method is
0.
5228 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
5230 unorm.shimApplied = false;
5232 if (!String.prototype.normalize) {
5233 String.prototype.normalize = function(form) {
5234 var str =
"" + this;
5235 form = form === undefined ?
"NFC" : form;
5237 if (form ===
"NFC") {
5238 return unorm.nfc(str);
5239 } else if (form ===
"NFD") {
5240 return unorm.nfd(str);
5241 } else if (form ===
"NFKC") {
5242 return unorm.nfkc(str);
5243 } else if (form ===
"NFKD") {
5244 return unorm.nfkd(str);
5246 throw new RangeError(
"Invalid normalization form: " + form);
5250 unorm.shimApplied = true;
5254 <script>/*! jQuery v2.1
.1 | (c)
2005,
2014 jQuery Foundation, Inc. | jquery.org/license */
5255 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!
0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,
m="
2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:
0,toArray:function(){return d.call(this)},get:function(a){return null!=a?
0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(
0)},last:function(){return this.eq(-
1)},eq:function(a){var b=this.length,c=+a+(
0>a?b:
0);return this.pushStack(c
>=
0&&b
>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[
0]||{},h=
1,i=arguments.length,j=!
1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i
>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!
1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void
0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!
0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)
>=
0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!
1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!
1:!
0},isEmptyObject:function(a){var b;for(b in a)return!
1;return!
0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(
1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=
0,f=a.length,g=s(a);if(c){if(g){for(;f
>e;e++)if(d=b.apply(a[e],c),d===!
1)break}else for(e in a)if(d=b.apply(a[e],c),d===!
1)break}else if(g){for(;f
>e;e++)if(d=b.call(a[e],e,a[e]),d===!
1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!
1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-
1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=
0,e=a.length;c
>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=
0,g=a.length,h=!c;g
>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=
0,g=a.length,h=s(a),i=[];if(h)for(;g
>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:
1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,
2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void
0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!
1:
1===a.nodeType&&b?!
0:"array"===c||
0===b||"number"==typeof b&&b
>0&&b-
1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,
u=
"sizzle"+-new Date,v=a.document,w=
0,x=
0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!
0),
0},
C=
"undefined",D=
1<
<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=
0,c=this.length;c
>b;b++)if(this[b]===a)return b;return-
1},
L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M="[\\x20\\t\\r\\n\\f]",
N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),
P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",
Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([
>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[
>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{
1,
6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var
d="
0x"+b-
65536;return d!==d||c?b:
0>d?String.fromCharCode(d+
65536):String.fromCharCode(d
>>10|
55296,
1023&d|
56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=
0;while(a[c++]=b[d++]);a.length=c-
1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||
"string"!=typeof a)return d;if(
1!==(k=b.nodeType)&&
9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[
1]){if(
9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[
2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[
3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=
9===k&&a,
1===k&&
"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(
"id"))?s=r.replace(bb,
"\\$&"):b.setAttribute(
"id",s),
s=
"[id='"+s+
"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(
",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(
"id")}}}return i(a.replace(R,
"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+
" ")
>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!
0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!
1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&
1===a.nodeType&&
1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-
1;return a?
1:-
1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!
1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&
9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!
1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.
className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.
innerHTML="
<div class='a'
></div><div class='a i'
></div>",a.firstChild.className="i
",2===a.getElementsByClassName("i
").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id
")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id
");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*
"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''
><option selected=''
></option></select>",a.querySelectorAll("[msallowclip^='']
").length&&q.push("[*^$]=
"+M+"*(?:''|\
"\")
"),a.querySelectorAll("[selected]
").length||q.push("\\[
"+M+"*(?:value|
"+L+")
"),a.querySelectorAll(":checked
").length||q.push(":checked
")}),ib(function(a){var b=e.createElement("input
");b.setAttribute("type
","hidden
"),a.appendChild(b).setAttribute("name
","D
"),a.querySelectorAll("[name=d]
").length&&q.push("name
"+M+"*[*^$|!~]?=
"),a.querySelectorAll(":enabled
").length||q.push(":enabled
",":disabled
"),a.querySelectorAll("*,:x
"),q.push(",.*:
")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div
"),s.call(a,"[s!='']:x
"),r.push("!=
",Q)}),q=q.length&&new RegExp(q.join("|
")),r=r.length&&new RegExp(r.join("|
")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$
1']
"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression:
"+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string
"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode
",first:!0}," ":{dir:"parentNode
"},"+
":{dir:"previousSibling
",first:!0},"~
":{dir:"previousSibling
"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~=
"===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth
"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even
"===a[3]||"odd
"===a[3])),a[5]=+(a[7]+a[8]||"odd
"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")
",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*
"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|
"+M+")
"+a+"(
"+M+"|$)
"))&&y(a,function(a){return b.test("string
"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class
")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!=
"===b:b?(e+="","=
"===b?e===c:"!=
"===b?e!==c:"^=
"===b?c&&0===e.indexOf(c):"*=
"===b?c&&e.indexOf(c)>-1:"$=
"===b?c&&e.slice(-c.length)===c:"~=
"===b?(" "+e+" ").indexOf(c)>-1:"|=
"===b?e===c||e.slice(0,c.length+1)===c+"-
":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth
"!==a.slice(0,3),g="last
"!==a.slice(-4),h="of-type
"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling
":"previousSibling
",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only
"===a&&!o&&"nextSibling
"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo:
"+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$
1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang:
"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang
")||b.getAttribute("lang
"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-
");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&!!a.checked||"option
"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&"button
"===a.type||"button
"===b},text:function(a){var b;return"input
"===a.nodeName.toLowerCase()&&"text
"===a.type&&(null==(b=a.getAttribute("type
"))||"text
"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(
1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((
1===b.nodeType||e)&&a(b,c,g))return!
0}else while(b=b[d])if(
1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[
0]===w&&h[
1]===f)return j[
2]=h[
2];if(i[d]=j,j[
2]=a(b,c,g))return!
0}}}function sb(a){return a.length
>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!
1;return!
0}:a[
0]}function tb(a,b,c){for(var d=
0,e=b.length;e
>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=
0,i=a.length,j=null!=b;i
>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])
>-
1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[
0].type],h=g||d.relative[" "],i=g?
1:
0,k=rb(function(a){return a===b},h,!
0),l=rb(function(a){return K.call(b,a)
>-
1},h,!
0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f
>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f
>e;e++)if(d.relative[a[e].type])break;return vb(i
>1&&sb(m),i
>1&&qb(a.slice(
0,i-
1).concat({value:
" "===a[i-
2].type?
"*":
""})).replace(R,
"$1"),c,e
>i&&wb(a.slice(i,e)),f
>e&&wb(a=a.slice(e)),f
>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length
>0,e=a.length
>0,f=function(f,g,h,i,k){var l,m,o,p=
0,
q=
"0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(
"*",k),v=w+=null==t?
1:Math.random()||
.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=
0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=
0;while(o=b[m++])o(r,s,g,h);if(f){if(p
>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length
>0&&p+b.length
>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+
" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,
n=
"function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],
1===o.length){if(j=o[
0]=o[
0].slice(
0),j.length
>2&&
"ID"===(k=j[
0]).type&&c.getById&&
9===b.nodeType&&p&&d.relative[j[
1].type]){if(b=(d.find.ID(k.matches[
0].replace(cb,db),b)||[])[
0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?
0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[
0].replace(cb,db),ab.test(j[
0].type)&&ob(b.parentNode)||b))){if(j.splice(i,
1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split(
"").sort(B).join(
"")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return
1&a.compareDocumentPosition(n.createElement(
"div"))}),ib(function(a){return a.
innerHTML=
"<a href='#'></a>",
"#"===a.firstChild.getAttribute(
"href")})||jb(
"type|href|height|width",function(a,b,c){return c?void
0:a.getAttribute(b,
"type"===b.toLowerCase()?
1:
2)}),c.attributes&&ib(function(a){return a.
innerHTML=
"<input/>",a.firstChild.setAttribute(
"value",
""),
""===a.firstChild.getAttribute(
"value")})||jb(
"value",function(a,b,c){return c||
"input"!==a.nodeName.toLowerCase()?void
0:a.defaultValue}),ib(function(a){return null==a.getAttribute(
"disabled")})||jb(L,function(a,b,c){var d;return c?void
0:a[b]===!
0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[
":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/
?>(?:<\/\
1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)
>=
0!==c})}n.filter=function(a,b,c){var d=b[
0];return c&&(
a=":not("+a+")"),
1===b.length&&
1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return
1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=
0;c
>b;b++)if(n.contains(e[b],this))return!
0}));for(b=
0;c
>b;b++)n.find(a,e[b],d);return d=this.pushStack(c
>1?n.unique(d):d),d.selector=this.selector?this.selector+
" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!
1))},not:function(a){return this.pushStack(x(this,a||[],!
0))},is:function(a){return!!x(this,
"string"==typeof a&&u.test(a)?n(a):a||[],!
1).length}});var y,z=/^(?:\s*(<[\w\W]+
>)[^
>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(
c="<"===a[
0]&&"
>"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined
"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):
0;e
>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType
<11&&(g?g.index(c)
>-
1:
1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length
>1?n.unique(f):f)},index:function(a){return a?
"string"==typeof a?g.call(n(a),this[
0]):g.call(this,a.jquery?a[
0]:a):this[
0]&&this[
0].parentNode?this.first().prevAll().length:-
1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&
1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&
11!==b.nodeType?b:null},parents:function(a){return n.dir(a,
"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,
"parentNode",c)},next:function(a){return D(a,
"nextSibling")},prev:function(a){return D(a,
"previousSibling")},nextAll:function(a){return n.dir(a,
"nextSibling")},prevAll:function(a){return n.dir(a,
"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,
"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,
"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return
"Until"!==a.slice(-
5)&&(d=c),d&&
"string"==typeof d&&(e=n.filter(d,e)),this.length
>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!
0}),b}n.Callbacks=function(a){
a=
"string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!
0,g=e||
0,e=
0,f=h.length,d=!
0;h&&f
>g;g++)if(h[g].apply(l[
0],l[
1])===!
1&&a.stopOnFalse){b=!
1;break}d=!
1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))
>-
1)h.splice(c,
1),d&&(f
>=c&&f--,g
>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)
>-
1:!(!h||!h.length)},empty:function(){return h=[],f=
0,this},disable:function(){return h=i=b=void
0,this},disabled:function(){return!h},lock:function(){return i=void
0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],
c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[
1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[
0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[
2],h=f[
3];d[f[
1]]=g.add,h&&g.add(function(){c=h},b[
1^a][
2].disable,b[
2][
2].lock),e[f[
0]]=function(){return e[f[
0]+"With"](this===e?d:this,arguments),this},e[f[
0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=
0,c=d.call(arguments),e=c.length,f=
1!==e||a&&n.isFunction(a.promise)?e:
0,g=
1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length
>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e
>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e
>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!
1,readyWait:
1,holdReady:function(a){a?n.readyWait++:n.ready(!
0)},ready:function(a){(a===!
0?--n.readyWait:n.isReady)||(n.isReady=!
0,a!==!
0&&--n.readyWait
>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(
"ready"),n(l).off(
"ready"))))}});function I(){l.removeEventListener(
"DOMContentLoaded",I,!
1),a.removeEventListener(
"load",I,!
1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),
"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener(
"DOMContentLoaded",I,!
1),a.addEventListener(
"load",I,!
1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=
0,i=a.length,j=null==c;if(
"object"===n.type(c)){e=!
0;for(h in c)n.access(a,b,h,c[h],!
0,f,g)}else if(void
0!==d&&(e=!
0,n.isFunction(d)||(g=!
0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i
>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[
0],c):f};n.acceptData=function(a){return
1===a.nodeType||
9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},
0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=
1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return
0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void
0===b?c:c[b]},access:function(a,b,c){var d;return void
0===b||b&&"string"==typeof b&&void
0===c?(d=this.get(a,b),void
0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void
0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void
0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void
0===c&&
1===a.nodeType)if(
d="data-"+b.replace(O,"-$
1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{
c="true"===c?!
0:"false"===c?!
1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void
0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
5256 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[
0],g=f&&f.attributes;if(void
0===a){if(this.length&&(e=M.get(f),
1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,
0===d.indexOf("data-")&&(d=n.camelCase(d.slice(
5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!
0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void
0===b){if(c=M.get(f,a),void
0!==c)return c;if(c=M.get(f,d),void
0!==c)return c;if(c=P(f,d,void
0),void
0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-
1!==a.indexOf("-")&&void
0!==c&&M.set(this,a,b)})},null,b,arguments.length
>1,null,!
0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||
"fx")+
"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void
0},dequeue:function(a,b){b=b||
"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};
"inprogress"===e&&(e=c.shift(),d--),e&&(
"fx"===b&&c.unshift(
"inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+
"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(
"once memory").add(function(){L.remove(a,[b+
"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=
2;return
"string"!=typeof a&&(b=a,
a=
"fx",c--),arguments.length
<c?n.queue(this[
0],a):void
0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),
"fx"===a&&
"inprogress"!==c[
0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||
"fx",[])},promise:function(a,b){var c,d=
1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};
"string"!=typeof a&&(b=a,a=void
0),a=a||
"fx";while(g--)c=L.get(f[g],a+
"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=[
"Top",
"Right",
"Bottom",
"Left"],S=function(a,b){return a=b||a,
"none"===n.css(a,
"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(
"div")),c=l.createElement(
"input");c.setAttribute(
"type",
"radio"),c.setAttribute(
"checked",
"checked"),c.setAttribute(
"name",
"t"),b.appendChild(c),k.checkClone=b.cloneNode(!
0).cloneNode(!
0).lastChild.checked,b.
innerHTML=
"<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!
0).lastChild.defaultValue}();var
U=
"undefined";k.
focusinBubbles=
"onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!
0}function $(){return!
1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void
0}),b=(b||
"").match(E)||[
""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(
".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=
0,l.setup&&l.setup.call(a,d,p,g)!==!
1||a.addEventListener&&a.addEventListener(o,g,!
1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,
0,k):m.push(k),n.event.global[o]=!
0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||
"").match(E)||[
""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[
2]&&new RegExp(
"(^|\\.)"+p.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(
"**"!==d||!k.selector)||(m.splice(f,
1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!
1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!
0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,
"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,
"type")?b.type:b,r=j.call(b,
"namespace")?b.namespace.split(
"."):[];if(g=h=d=d||l,
3!==d.nodeType&&
8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(
".")
>=
0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")
<0&&
"on"+q,b=b[n.expando]?b:new n.Event(q,
"object"==typeof b&&b),b.isTrigger=e?
2:
3,b.namespace=r.join(
"."),b.namespace_re=b.namespace?new RegExp(
"(^|\\.)"+r.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"):null,b.result=void
0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!
1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=
0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f
>1?i:o.bindType||q,m=(L.get(g,
"events")||{})[b.type]&&L.get(g,
"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!
1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!
1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void
0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,
"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[
0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!
1){h=n.event.handlers.call(this,a,j),b=
0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=
0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void
0!==e&&(a.result=e)===!
1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||
"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!
0||
"click"!==a.type){for(d=[],c=
0;h
>c;c++)f=b[c],e=f.selector+" ",void
0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)
>=
0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h
<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(
" "),fixHooks:{},keyHooks:{props:
"char charCode key keyCode".split(
" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:
"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(
" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||
0)-(d&&d.clientLeft||e&&e.clientLeft||
0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||
0)-(d&&d.clientTop||e&&e.clientTop||
0)),a.which||void
0===f||(a.which=
1&f?
1:
2&f?
3:
4&f?
2:
0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),
3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!
0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!
1):void
0},delegateType:
"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!
1):void
0},delegateType:
"focusout"},click:{trigger:function(){return
"checkbox"===this.type&&this.click&&n.nodeName(this,
"input")?(this.click(),!
1):void
0},_default:function(a){return n.nodeName(a.target,
"a")}},beforeunload:{postDispatch:function(a){void
0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!
0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!
1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void
0===a.defaultPrevented&&a.returnValue===!
1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!
0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:
"mouseover",mouseleave:
"mouseout",pointerenter:
"pointerover",pointerleave:
"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:
"focusin",blur:
"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!
0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!
0),L.access(d,b,(e||
0)+
1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-
1;e?L.access(d,b,e):(d.removeEventListener(a,c,!
0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(
"object"==typeof a){
"string"!=typeof b&&(c=c||b,b=void
0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void
0):null==d&&(
"string"==typeof b?(d=c,c=void
0):(d=c,c=b,b=void
0)),d===!
1)d=$;else if(!d)return this;return
1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,
1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+
"."+d.namespace:d.origType,d.selector,d.handler),this;if(
"object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!
1||
"function"==typeof b)&&(c=b,b=void
0),c===!
1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[
0];return c?n.event.trigger(a,b,c,!
0):void
0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^
>]*)\
/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)
>\s*$/g,ib={option:[
1,"
<select multiple='multiple'
>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table
")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr
")?a.getElementsByTagName("tbody
")[0]||a.appendChild(a.ownerDocument.createElement("tbody
")):a}function kb(a){return a.type=(null!==a.getAttribute("type
"))+"/
"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type
"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(
1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=
0,d=j[e].length;d
>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void
0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!
0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||
1!==a.nodeType&&
11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=
0,e=f.length;e
>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=
0,e=f.length;e
>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length
>0&&mb(g,!i&&ob(a,
"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=
0,o=a.length;o
>m;m++)if(e=a[m],e||
0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[
1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[
1]+e.replace(ab,"<$
1></$
2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script
"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script
")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string
"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$
1></$
2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string
"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script
"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-
1].ownerDocument,n.map(f,lb),j=
0;g
>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-
1,h=
0;g
>=h;h++)c=h===g?this:this.clone(!
0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[
0]))?d.display:n.css(e[
0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
<iframe frameborder='
0' width='
0' height='
0'
/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^(
"+Q+")(?!px)[a-z%]+$
","i
"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div
"),f=l.createElement("div
");if(f.style){f.style.backgroundClip="content-box
",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box
"===f.style.backgroundClip,e.style.cssText="border:
0;width:
0;height:
0;top:
0;left:-
9999px;margin-top:
1px;position:absolute
",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:
1%;top:
1%;border:
1px;padding:
1px;width:
4px;position:absolute
",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%
"!==g.top,c="4px
"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div
"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:
0;border:
0;padding:
0",c.style.marginRight=c.style.width="0",f.style.width="1px
",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^(
"+Q+")(.*)$
","i
"),Bb=new RegExp("^([+-])=(
"+Q+")
","i
"),Cb={position:"absolute
",visibility:"hidden
",display:"block
"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit
","O
","Moz
","ms
"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px
"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border
":"content
")?4:"width
"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!
0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!
0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!
0,e))):(g+=n.css(a,"padding"+R[f],!
0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!
0,e)));return g}function Ib(a,b,c){var d=!
0,
e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),
g="border-box"===n.css(a,"boxSizing",!
1,f);if(
0>=e||null==e){if(e=xb(a,b,f),(
0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||
0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=
0,h=a.length;h
>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.
display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=
0;h
>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"
1":c}}}},cssNumber:{columnCount:!
0,fillOpacity:!
0,flexGrow:!
0,flexShrink:!
0,fontWeight:!
0,lineHeight:!
0,opacity:!
0,order:!
0,orphans:!
0,widows:!
0,zIndex:!
0,zoom:!
0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&
3!==a.nodeType&&
8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void
0===c?g&&"get"in g&&void
0!==(e=g.get(a,!
1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[
1]+
1)*e[
2]+parseFloat(n.css(a,b)),
f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||
0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void
0===(c=g.set(a,c,d))||(i[b]=c)),void
0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!
0,c)),void
0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!
0||n.isNumeric(f)?f||
0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&
0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void
0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!
1,e),e):
0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void
0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=
0,e={},
f="string"==typeof c?c.split(" "):[c];
4>d;d++)e[a+R[d]+b]=f[d]||f[d-
2]||f[
0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=
0;if(n.isArray(b)){for(d=wb(a),e=b.length;e
>g;g++)f[b[g]]=n.css(a,b[g],!
1,d);return f}return void
0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length
>1)},show:function(){return Jb(this,!
0)},hide:function(){return Jb(this)},toggle:function(a){return
"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||
"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?
"":
"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,
0,
1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,
""),b&&
"auto"!==b?b:
0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return
.5-Math.cos(a*Math.PI)/
2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(
"^(?:([+-])=|)("+Q+
")([a-z%]*)$",
"i"),Pb=/queueHooks$/,Qb=[Vb],Rb={
"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[
3]||(n.cssNumber[a]?
"":
"px"),g=(n.cssNumber[a]||
"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=
1,i=
20;if(g&&g[
3]!==f){f=f||g[
3],e=e||[],g=+d||
1;do h=h||
".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&
1!==h&&--i)}return e&&(g=c.start=+g||+d||
0,c.unit=f,c.end=e[
1]?g+(e[
1]+
1)*e[
2]:+e[
2]),c}]};function Sb(){return setTimeout(function(){Lb=void
0}),Lb=n.now()}function Tb(a,b){var c,d=
0,e={height:a};for(b=b?
1:
0;
4>d;d+=
2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=
0,g=e.length;g
>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=
0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),
1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),
k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.
display="inline-block")),c.overflow&&(o.
overflow="hidden",l.always(function(){o.overflow=c.overflow[
0],o.overflowX=c.overflow[
1],o.overflowY=c.overflow[
2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void
0===q[d])continue;p=!
0}m[d]=q&&q[d]||n.style(a,d)}else j=void
0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:
0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.
start="width"===d||"height"===d?
1:
0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[
1],f=a[c]=f[
0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=
0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!
1;for(var b=Lb||Sb(),c=Math.max(
0,j.startTime+j.duration-b),d=c/j.duration||
0,f=
1-d,g=
0,i=j.tweens.length;i
>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),
1>f&&i?c:(h.resolveWith(a,[j]),!
1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!
0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=
0,d=b?j.tweens.length:
0;if(e)return this;for(e=!
0;d
>c;c++)j.tweens[c].run(
1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g
>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=
0,e=a.length;e
>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?
0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!
0)&&(d.
queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",
0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!
0)};return g.finish=g,e||f.queue===!
1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void
0),b&&a!==!
1&&this.queue(a||"fx",[]),this.each(function(){var b=!
0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!
1,f.splice(e,
1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!
1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:
0;for(c.finish=!
0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!
0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!
0),f.splice(b,
1));for(b=
0;g
>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!
0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=
0,c=n.timers;for(Lb=n.now();b
<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,
1);c.length||n.fx.stop(),Lb=void
0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=
13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:
600,fast:
200,_default:
400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||
"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(
"input"),b=l.createElement(
"select"),c=b.appendChild(l.createElement(
"option"));a.
type=
"checkbox",k.
checkOn=
""!==a.value,k.optSelected=c.selected,b.disabled=!
0,k.optDisabled=!c.disabled,a=l.createElement(
"input"),a.
value=
"t",a.
type=
"radio",k.
radioValue=
"t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length
>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&
3!==f&&
8!==f&&
2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(
1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void
0===c?d&&
"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void
0:e):null!==c?d&&
"set"in d&&void
0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+
""),c):void n.removeAttr(a,b))
5257 },removeAttr:function(a,b){var c,d,e=
0,f=b&&b.match(E);if(f&&
1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!
1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&
"radio"===b&&n.nodeName(a,
"input")){var c=a.value;return a.setAttribute(
"type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!
1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length
>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{
"for":
"htmlFor",
"class":
"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&
3!==g&&
8!==g&&
2!==g)return f=
1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void
0!==c?e&&
"set"in e&&void
0!==(d=e.set(a,c,b))?d:a[b]=c:e&&
"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(
"tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-
1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,
h=
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=
0;while(e=b[f++])d.indexOf(" "+e+" ")
<0&&(d+=e+
" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=
0===arguments.length||
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=
0;while(e=b[f++])while(d.indexOf(" "+e+" ")
>=
0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=
0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!
1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var
b=" "+a+" ",c=
0,d=this.length;d
>c;c++)if(
1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)
>=
0)return!
0;return!
1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[
0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;
1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?
e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void
0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void
0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,
f="select-one"===a.type||
0>e,g=f?null:[],h=f?e+
1:d.length,i=
0>e?h:f?e:
0;h
>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)
>=
0)&&(c=!
0);return c||(a.selectedIndex=-
1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)
>=
0:void
0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length
>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return
1===arguments.length?this.off(a,
"**"):this.off(b,a||
"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+
"")},n.parseXML=function(a){var b,c;if(!a||
"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,
"text/xml")}catch(d){b=void
0}return(!b||b.getElementsByTagName(
"parsererror").length)&&n.error(
"Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},
pc=
"*/".concat(
"*");try{fc=location.href}catch(qc){fc=l.createElement(
"a"),fc.
href=
"",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){
"string"!=typeof b&&(c=b,
b=
"*");var d,e=
0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])
"+"===d[
0]?(d=d.slice(
1)||
"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!
0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return
"string"!=typeof j||f||e[j]?f?!(i=j):void
0:(b.dataTypes.unshift(j),g(j),!
1)}),i}return g(b.dataTypes[
0])||!e[
"*"]&&g(
"*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void
0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!
0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(
"*"===i[
0])i.shift(),void
0===d&&(d=a.mimeType||b.getResponseHeader(
"Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[
0]in c)f=i[
0];else{for(e in c){if(!i[
0]||a.converters[e+
" "+i[
0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[
0]&&i.unshift(f),c[f]):void
0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[
1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(
"*"===f)f=i;else if(
"*"!==i&&i!==f){if(g=j[i+
" "+f]||j[
"* "+f],!g)for(e in j)if(h=e.split(
" "),h[
1]===f&&(g=j[i+
" "+h[
0]]||j[
"* "+h[
0]])){g===!
0?g=j[e]:j[e]!==!
0&&(f=h[
0],k.unshift(h[
1]));break}if(g!==!
0)if(g&&a[
"throws"])b=g(b);else try{b=g(b)}catch(l){return{state:
"parsererror",error:g?l:
"No conversion from "+i+
" to "+f}}}return{state:
"success",data:b}}n.extend({active:
0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:
"GET",isLocal:jc.test(ec[
1]),global:!
0,processData:!
0,async:!
0,contentType:
"application/x-www-form-urlencoded; charset=UTF-8",accepts:{
"*":pc,text:
"text/plain",html:
"text/html",xml:
"application/xml, text/xml",json:
"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:
"responseXML",text:
"responseText",json:
"responseJSON"},converters:{
"* text":String,
"text html":!
0,
"text json":n.parseJSON,
"text xml":n.parseXML},flatOptions:{url:!
0,context:!
0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){
"object"==typeof a&&(b=a,a=void
0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(
"once memory"),q=k.statusCode||{},r={},s={},t=
0,
u=
"canceled",v={readyState:
0,getResponseHeader:function(a){var b;if(
2===t){if(!f){f={};while(b=ic.exec(e))f[b[
1].toLowerCase()]=b[
2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return
2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(
2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(
0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[
1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[
1]===ec[
1]&&h[
2]===ec[
2]&&(h[
3]||("http:"===h[
1]?"
80":"
443"))===(ec[
3]||("http:"===ec[
1]?"
80":"
443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),
2===t)return v;i=k.global,i&&
0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!
1&&(k.url=hc.test(d)?d.replace(hc,"$
1_="+cc++):d+(dc.test(d)?"&":"?")+"
_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!
1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[
0]&&k.accepts[k.dataTypes[
0]]?k.accepts[k.dataTypes[
0]]+("*"!==k.dataTypes[
0]?", "+pc+"; q=
0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!
1||
2===t))return v.abort();
u="abort";for(j in{success:
1,error:
1,complete:
1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=
1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout
>0&&(g=setTimeout(function(){v.abort(
"timeout")},k.timeout));try{t=
1,c.send(r,x)}catch(w){if(!(
2>t))throw w;x(-
1,w)}}else x(-
1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;
2!==t&&(t=
2,g&&clearTimeout(g),c=void
0,e=h||"",v.readyState=a
>0?
4:
0,j=a
>=
200&&
300>a||
304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),
204===a||"HEAD"===k.type?
x="nocontent":
304===a?
x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(
x="error",
0>a&&(a=
0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void
0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void
0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void
0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!
1,global:!
1,"throws":!
0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[
0]&&(b=n(a,this[
0].ownerDocument).eq(
0).clone(!
0),this[
0].parentNode&&b.insertBefore(this[
0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=
0&&a.offsetHeight<=
0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%
20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void
0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=
0,Dc={},Ec={
0:
200,
1223:
204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void
0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void
0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void
0===a.cache&&(a.cache=!
1),a.crossDomain&&(a.
type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("
<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error
",c=function(a){b.remove(),c=null,a&&e("error
"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback
",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_
"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp
",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url
":"string
"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded
")&&Hc.test(b.data)&&"data
");return h||"jsonp
"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$
1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&
":"?
")+b.jsonp+"=
"+e),b.converters["script json
"]=function(){return g||n.error(e+" was not called
"),g[0]},b.dataTypes[0]="json
",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script
"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string
"!=typeof a)return null;"boolean
"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string
"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object
"==typeof b&&(e="POST
"),g.length>0&&n.ajax({url:a,type:e,dataType:"html
",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position
"),l=n(a),m={};"static
"===k&&(a.style.position="relative
"),h=l.offset(),f=n.css(a,"top
"),i=n.css(a,"left
"),j=("absolute
"===k||"fixed
"===k)&&(f+i).indexOf("auto
")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using
"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed
"===n.css(c,"position
")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html
")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth
",!0),d.left+=n.css(a[0],"borderLeftWidth
",!0)),{top:b.top-d.top-n.css(c,"marginTop
",!0),left:b.left-d.left-n.css(c,"marginLeft
",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html
")&&"static
"===n.css(a,"position
"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset
",scrollTop:"pageYOffset
"},function(b,c){var d="pageYOffset
"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top
","left
"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px
":c):void 0})}),n.each({Height:"height
",Width:"width
"},function(a,b){n.each({padding:"inner
"+a,content:b,"":"outer
"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean
"!=typeof d),g=c||(d===!0||e===!0?"margin
":"border
");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client
"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll
"+a],e["scroll
"+a],b.body["offset
"+a],e["offset
"+a],e["client
"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function
"==typeof define&&define.amd&&define("jquery
",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
5260 * Bootstrap v3.2.0 (http://getbootstrap.com)
5261 * Copyright 2011-2014 Twitter, Inc.
5262 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5264 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void
0!==a.style[c])return{end:b[c]};return!
1}a.fn.emulateTransitionEnd=function(b){var c=!
1,d=this;a(this).one("bsTransitionEnd",function(){c=!
0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void
0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[
data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.
VERSION="
3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(
150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),
f="object"==typeof b&
&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!
1};c.
VERSION="
3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var
c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!
0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),
0)},c.prototype.toggle=function(){var a=!
0,b=this.$element.closest('[
data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!
1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),
g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.
VERSION="
3.2.0",c.DEFAULTS={interval:
5e3,pause:"hover",wrap:!
0},c.prototype.keydown=function(a){switch(a.which){case
37:this.prev();break;case
39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!
1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b
>this.$items.length-
1||
0>b?void
0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b
>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!
0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!
0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void
0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void
0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,
g="next"==b?"left":"right",
h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!
1;var j=e[
0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!
0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[
0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!
1,setTimeout(function(){i.$element.trigger(m)},
0)}).emulateTransitionEnd(
1e3*d.css("transition-duration").slice(
0,-
1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!
1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!
1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[
data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.
VERSION="
3.2.0",c.DEFAULTS={toggle:!
0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("
> .panel
> .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](
0),this.transitioning=
1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=
0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(
350)[f](this.$element[
0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[
0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=
1;var d=function(){this.transitioning=
0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](
0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(
350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[
data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[
data-toggle="collapse"][
data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&
3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var
e=".dropdown-backdrop",f='[
data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.
VERSION="
3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
<div class=
"dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!
1}},g.prototype.keydown=function(b){if(/(
38|
40|
27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&
27==b.keyCode)return
27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var
h=" li:not(.divider):visible a",i=e.find('[
role="menu"]'+h+', [
role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));
38==b.keyCode&&j
>0&&j--,
40==b.keyCode&&j
<i.length-
1&&j++,~j||(j=
0),i.eq(j).trigger(
"focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(
"click.bs.dropdown.data-api",b).on(
"click.bs.dropdown.data-api",
".dropdown form",function(a){a.stopPropagation()}).on(
"click.bs.dropdown.data-api",f,g.prototype.toggle).on(
"keydown.bs.dropdown.data-api",f+', [
role=
"menu"], [
role=
"listbox"]',g.prototype.keydown)}(jQuery),+function(a){
"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data(
"bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),
"object"==typeof b&&b);f||e.data(
"bs.modal",f=new c(this,g)),
"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=
0,this.options.remote&&this.$element.find(
".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger(
"loaded.bs.modal")},this))};c.
VERSION=
"3.2.0",c.DEFAULTS={backdrop:!
0,keyboard:!
0,show:!
0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event(
"show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!
0,this.checkScrollbar(),this.$body.addClass(
"modal-open"),this.setScrollbar(),this.escape(),this.$element.on(
"click.dismiss.bs.modal",'[
data-dismiss=
"modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass(
"fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(
0),d&&c.$element[
0].offsetWidth,c.$element.addClass(
"in").attr(
"aria-hidden",!
1),c.enforceFocus();var e=a.Event(
"shown.bs.modal",{relatedTarget:b});d?c.$element.find(
".modal-dialog").one(
"bsTransitionEnd",function(){c.$element.trigger(
"focus").trigger(e)}).emulateTransitionEnd(
300):c.$element.trigger(
"focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(
"hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!
1,this.$body.removeClass(
"modal-open"),this.resetScrollbar(),this.escape(),a(document).off(
"focusin.bs.modal"),this.$element.removeClass(
"in").attr(
"aria-hidden",!
0).off(
"click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass(
"fade")?this.$element.one(
"bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(
300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(
"focusin.bs.modal").on(
"focusin.bs.modal",a.proxy(function(a){this.$element[
0]===a.target||this.$element.has(a.target).length||this.$element.trigger(
"focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(
"keyup.dismiss.bs.modal",a.proxy(function(a){
27==a.which&&this.hide()},this)):this.isShown||this.$element.off(
"keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger(
"hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass(
"fade")?
"fade":
"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&
&d;if(this.$backdrop=a('
<div class=
"modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[
0].focus.call(this.$element[
0]):this.hide.call(this))},this)),e&&this.$backdrop[
0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(
150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(
150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth
>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||
0,
10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.
className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[
0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[
data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.
VERSION="
3.2.0",c.DEFAULTS={animation:!
0,placement:"top",selector:!
1,template:'
<div class=
"tooltip" role=
"tooltip"><div class=
"tooltip-arrow"></div><div class=
"tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:
0,html:!
1,container:!
1,viewport:{selector:"body",padding:
0}},c.prototype.init=function(b,c,d){this.enabled=!
0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var
h="hover"==g?"mouseenter":"focusin",
i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[
0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var
g="function"==typeof this.options.placement?this.options.placement.call(this,e[
0],this.$element[
0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:
0,left:
0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[
0].offsetWidth,l=e[
0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);
g="bottom"==g&&j.top+j.height+l-o.scroll
>o.height?"top":"top"==g&&j.top-o.scroll-l
<0?
"bottom":
"right"==g&&j.right+k
>o.width?"left":"left"==g&&j.left-k
<o.left?
"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger(
"shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass(
"fade")?e.one(
"bsTransitionEnd",q).emulateTransitionEnd(
150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[
0].offsetWidth,f=d[
0].offsetHeight,g=parseInt(d.css(
"margin-top"),
10),h=parseInt(d.css(
"margin-left"),
10);isNaN(g)&&(g=
0),isNaN(h)&&(h=
0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[
0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),
0),d.addClass(
"in");var i=d[
0].offsetWidth,j=d[
0].offsetHeight;
"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?
2*k.left-e+i:
2*k.top-f+j,m=k.left?
"left":
"top",n=k.left?
"offsetWidth":
"offsetHeight";d.offset(b),this.replaceArrow(l,d[
0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?
50*(
1-a/b)+
"%":
"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(
".tooltip-inner")[this.options.html?
"html":
"text"](b),a.removeClass(
"fade in top bottom left right")},c.prototype.hide=function(){function b(){
"in"!=c.hoverState&&d.detach(),c.$element.trigger(
"hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event(
"hide.bs."+this.type);return this.$element.removeAttr(
"aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void
0:(d.removeClass(
"in"),a.support.transition&&this.$tip.hasClass(
"fade")?d.one(
"bsTransitionEnd",b).emulateTransitionEnd(
150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(
"title")||
"string"!=typeof a.attr(
"data-original-title"))&&a.attr(
"data-original-title",a.attr(
"title")||
"").attr(
"title",
"")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[
0],
d=
"BODY"==c.tagName;return a.extend({},
"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:
0,left:
0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return
"bottom"==a?{top:b.top+b.height,left:b.left+b.width/
2-c/
2}:
"top"==a?{top:b.top-d,left:b.left+b.width/
2-c/
2}:
"left"==a?{top:b.top+b.height/
2-d/
2,left:b.left-c}:{top:b.top+b.height/
2-d/
2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:
0,left:
0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||
0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h
<g.top?e.top=g.top-h:i
>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j
<g.left?e.left=g.left-j:k
>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[
0]):c.title)},c.prototype.getUID=function(a){do a+=~~(
1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[
0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!
0},c.prototype.disable=function(){this.enabled=!
1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.
VERSION="
3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'
<div class=
"popover" role=
"tooltip"><div class=
"arrow"></div><h3 class=
"popover-title"></h3><div class=
"popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[
0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li
> a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=
0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),
f="object"==typeof c&
&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.
VERSION="
3.2.0",b.DEFAULTS={offset:
10},b.prototype.getScrollHeight=function(){return this.$scrollElement[
0].scrollHeight||Math.max(this.$body[
0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var
b="offset",c=
0;a.isWindow(this.$scrollElement[
0])||(
b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[
0]-b[
0]}).each(function(){d.offsets.push(this[
0]),d.targets.push(this[
1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b
>=d)return g!=(a=f[f.length-
1])&&this.activate(a);if(g&&b<=e[
0])return g!=(a=f[
0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b
>=e[a]&&(!e[a+
1]||b<=e[a+
1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[
data-target="'+b+'"],'+this.selector+'[
href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[
data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.
VERSION="
3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[
0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("
> .dropdown-menu
> .active").removeClass("active"),b.addClass("active"),g?(b[
0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("
> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(
150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[
data-toggle="tab"], [
data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),
f="object"==typeof b&
&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.
VERSION="
3.2.0",c.
RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:
0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),
1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!
1:null!=h&&e.top+this.$element.height()
>=b-h?"bottom":null!=g&&g
>=d?"top":!
1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var
j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.
unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[
data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
</script>
5265 <script>(function() {
5269 * Extend an Object with another Object's properties.
5271 * The source objects are specified as additional arguments.
5273 * @param dst Object the object to extend.
5275 * @return Object the final object.
5277 var _extend = function(dst) {
5278 var sources = Array.prototype.slice.call(arguments,
1);
5279 for (var i=
0; i
<sources.length; ++i) {
5280 var src = sources[i];
5281 for (var p in src) {
5282 if (src.hasOwnProperty(p)) dst[p] = src[p];
5290 * Defer execution of given function.
5291 * @param {Function} func
5293 var _defer = function(func) {
5294 if (typeof setImmediate === 'function') {
5295 return setImmediate(func);
5297 return setTimeout(func,
0);
5302 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
5306 * Calculate levenshtein distance of the two strings.
5308 * @param str1 String the first string.
5309 * @param str2 String the second string.
5310 * @return Integer the levenshtein distance (
0 and above).
5312 get: function(str1, str2) {
5314 if (str1 === str2) return
0;
5315 if (str1.length ===
0) return str2.length;
5316 if (str2.length ===
0) return str1.length;
5319 var prevRow = new Array(str2.length +
1),
5320 curCol, nextCol, i, j, tmp;
5322 // initialise previous row
5323 for (i=
0; i
<prevRow.length; ++i) {
5327 // calculate current row distance from previous row
5328 for (i=
0; i
<str1.length; ++i) {
5331 for (j=
0; j
<str2.length; ++j) {
5335 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ?
0 :
1 );
5338 if (nextCol
> tmp) {
5342 tmp = prevRow[j +
1] +
1;
5343 if (nextCol
> tmp) {
5347 // copy current col value into previous (in preparation for next iteration)
5348 prevRow[j] = curCol;
5351 // copy last col value into previous (in preparation for next iteration)
5352 prevRow[j] = nextCol;
5359 * Asynchronously calculate levenshtein distance of the two strings.
5361 * @param str1 String the first string.
5362 * @param str2 String the second string.
5363 * @param cb Function callback function with signature: function(Error err, int distance)
5364 * @param [options] Object additional options.
5365 * @param [options.progress] Function progress callback with signature: function(percentComplete)
5367 getAsync: function(str1, str2, cb, options) {
5368 options = _extend({}, {
5373 if (str1 === str2) return cb(null,
0);
5374 if (str1.length ===
0) return cb(null, str2.length);
5375 if (str2.length ===
0) return cb(null, str1.length);
5378 var prevRow = new Array(str2.length +
1),
5381 startTime, currentTime;
5383 // initialise previous row
5384 for (i=
0; i
<prevRow.length; ++i) {
5392 var __calculate = function() {
5394 startTime = new Date().valueOf();
5395 currentTime = startTime;
5397 // keep going until one second has elapsed
5398 while (currentTime - startTime <
1000) {
5399 // reached end of current row?
5400 if (str2.length <= (++j)) {
5401 // copy current into previous (in preparation for next iteration)
5402 prevRow[j] = nextCol;
5404 // if already done all chars
5405 if (str1.length <= (++i)) {
5406 return cb(null, nextCol);
5408 // else if we have more left to do
5419 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ?
0 :
1 );
5422 if (nextCol
> tmp) {
5426 tmp = prevRow[j +
1] +
1;
5427 if (nextCol
> tmp) {
5431 // copy current into previous (in preparation for next iteration)
5432 prevRow[j] = curCol;
5435 currentTime = new Date().valueOf();
5438 // send a progress update?
5439 if (null !== options.progress) {
5441 options.progress.call(null, (i *
100.0/ str1.length));
5443 return cb('Progress callback: ' + err.toString());
5448 _defer(__calculate);
5457 if (typeof define !== "undefined" && define !== null && define.amd) {
5463 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
5464 module.exports = Levenshtein;
5467 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
5468 self.Levenshtein = Levenshtein;
5470 // browser main thread
5471 else if (typeof window !== "undefined" && window !== null) {
5472 window.Levenshtein = Levenshtein;
5477 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=
0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void
0==a.length)throw Error(a.length+"/"+c);for(var d=
0;d
<a.length&&
0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=
0;b
<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=
0}u.prototype={getLength:function(){return this.data.length},
5478 write:function(a){for(var c=
0;c
<this.data.length;c++)a.put(this.data.charCodeAt(c),
8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(
0>a||this.moduleCount<=a||
0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(
1>this.typeNumber){for(var a=
1,a=
1;
40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=
0,e=
0;e
<c.length;e++)b+=c[e].dataCount;
5479 for(e=
0;e
<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,
4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=
8*b)break}this.typeNumber=a}this.makeImpl(!
1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=
4*this.typeNumber+
17;this.modules=Array(this.moduleCount);for(var d=
0;d
<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=
0;b
<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(
0,
0);this.setupPositionProbePattern(this.moduleCount-
5480 7,
0);this.setupPositionProbePattern(
0,this.moduleCount-
7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);
7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-
1;
7>=d;d++)if(!(-
1>=a+d||this.moduleCount<=a+d))for(var b=-
1;
7>=b;b++)-
1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
5481 0<=d&&
6>=d&&(
0==b||
6==b)||
0<=b&&
6>=b&&(
0==d||
6==d)||
2<=d&&
4>=d&&
2<=b&&
4>=b?!
0:!
1)},getBestMaskPattern:function(){for(var a=
0,c=
0,d=
0;
8>d;d++){this.makeImpl(!
0,d);var b=j.getLostPoint(this);if(
0==d||a
>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=
0;c
<this.modules.length;c++)for(var d=
1*c,b=
0;b
<this.modules[c].length;b++){var e=
1*b;this.modules[c][b]&&(a.beginFill(
0,
100),a.moveTo(e,d),a.lineTo(e+
1,d),a.lineTo(e+
1,d+
1),a.lineTo(e,d+
1),a.endFill())}return a},
5482 setupTimingPattern:function(){for(var a=
8;a
<this.moduleCount-
8;a++)null==this.modules[a][
6]&&(this.modules[a][
6]=
0==a%
2);for(a=
8;a
<this.moduleCount-
8;a++)null==this.modules[
6][a]&&(this.modules[
6][a]=
0==a%
2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=
0;c
<a.length;c++)for(var d=
0;d
<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-
2;
2>=f;f++)for(var i=-
2;
2>=i;i++)this.modules[b+f][e+i]=-
2==f||
2==f||-
2==i||
2==i||
0==f&&
0==i?!
0:!
1}},setupTypeNumber:function(a){for(var c=
5483 j.getBCHTypeNumber(this.typeNumber),d=
0;
18>d;d++){var b=!a&&
1==(c
>>d&
1);this.modules[Math.floor(d/
3)][d%
3+this.moduleCount-
8-
3]=b}for(d=
0;
18>d;d++)b=!a&&
1==(c
>>d&
1),this.modules[d%
3+this.moduleCount-
8-
3][Math.floor(d/
3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<
<3|c),b=
0;
15>b;b++){var e=!a&&
1==(d
>>b&
1);
6>b?this.modules[b][
8]=e:
8>b?this.modules[b+
1][
8]=e:this.modules[this.moduleCount-
15+b][
8]=e}for(b=
0;
15>b;b++)e=!a&&
1==(d
>>b&
1),
8>b?this.modules[
8][this.moduleCount-
5484 b-
1]=e:
9>b?this.modules[
8][
15-b-
1+
1]=e:this.modules[
8][
15-b-
1]=e;this.modules[this.moduleCount-
8][
8]=!a},mapData:function(a,c){for(var d=-
1,b=this.moduleCount-
1,e=
7,f=
0,i=this.moduleCount-
1;
0<i;i-=
2)for(
6==i&&i--;;){for(var g=
0;
2>g;g++)if(null==this.modules[b][i-g]){var n=!
1;f
<a.length&&(n=
1==(a[f]
>>>e&
1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -
1==e&&(f++,e=
7)}b+=d;if(
0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=
236;o.PAD1=
17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
5485 c),b=new t,e=
0;e
<d.length;e++){var f=d[e];b.put(f.mode,
4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=
0;e
<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()
>8*a)throw Error(
"code length overflow. ("+b.getLengthInBits()+
">"+
8*a+
")");for(b.getLengthInBits()+
4<=
8*a&&b.put(
0,
4);
0!=b.getLengthInBits()%
8;)b.putBit(!
1);for(;!(b.getLengthInBits()
>=
8*a);){b.put(o.PAD0,
8);if(b.getLengthInBits()
>=
8*a)break;b.put(o.PAD1,
8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
5486 0,b=
0,e=
0,f=Array(c.length),i=Array(c.length),g=
0;g
<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=
0;k
<f[g].length;k++)f[g][k]=
255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-
1)).mod(k);i[g]=Array(k.getLength()-
1);for(k=
0;k
<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=
0<=h?n.get(h):
0}for(k=g=
0;k
<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=
0;k
<b;k++)for(g=
0;g
<c.length;g++)k
<f[g].length&&
5487 (d[n++]=f[g][k]);for(k=
0;k
<e;k++)for(g=
0;g
<c.length;g++)k
<i[g].length&&(d[n++]=i[g][k]);return d};s=
4;for(var j={PATTERN_POSITION_TABLE:[[],[
6,
18],[
6,
22],[
6,
26],[
6,
30],[
6,
34],[
6,
22,
38],[
6,
24,
42],[
6,
26,
46],[
6,
28,
50],[
6,
30,
54],[
6,
32,
58],[
6,
34,
62],[
6,
26,
46,
66],[
6,
26,
48,
70],[
6,
26,
50,
74],[
6,
30,
54,
78],[
6,
30,
56,
82],[
6,
30,
58,
86],[
6,
34,
62,
90],[
6,
28,
50,
72,
94],[
6,
26,
50,
74,
98],[
6,
30,
54,
78,
102],[
6,
28,
54,
80,
106],[
6,
32,
58,
84,
110],[
6,
30,
58,
86,
114],[
6,
34,
62,
90,
118],[
6,
26,
50,
74,
98,
122],[
6,
30,
54,
78,
102,
126],[
6,
26,
52,
5488 78,
104,
130],[
6,
30,
56,
82,
108,
134],[
6,
34,
60,
86,
112,
138],[
6,
30,
58,
86,
114,
142],[
6,
34,
62,
90,
118,
146],[
6,
30,
54,
78,
102,
126,
150],[
6,
24,
50,
76,
102,
128,
154],[
6,
28,
54,
80,
106,
132,
158],[
6,
32,
58,
84,
110,
136,
162],[
6,
26,
54,
82,
110,
138,
166],[
6,
30,
58,
86,
114,
142,
170]],G15:
1335,G18:
7973,G15_MASK:
21522,getBCHTypeInfo:function(a){for(var c=a<
<10;
0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<
<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<
<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<
<12;
0<=j.getBCHDigit(c)-
5489 j.getBCHDigit(j.G18);)c^=j.G18<
<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<
<12|c},getBCHDigit:function(a){for(var c=
0;
0!=a;)c++,a
>>>=
1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-
1]},getMask:function(a,c,d){switch(a){case
0:return
0==(c+d)%
2;case
1:return
0==c%
2;case
2:return
0==d%
3;case
3:return
0==(c+d)%
3;case
4:return
0==(Math.floor(c/
2)+Math.floor(d/
3))%
2;case
5:return
0==c*d%
2+c*d%
3;case
6:return
0==(c*d%
2+c*d%
3)%
2;case
7:return
0==(c*d%
3+(c+d)%
2)%
2;default:throw Error("bad maskPattern:"+
5490 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([
1],
0),d=
0;d
<a;d++)c=c.multiply(new q([
1,l.gexp(d)],
0));return c},getLengthInBits:function(a,c){if(
1<=c&&
10>c)switch(a){case
1:return
10;case
2:return
9;case s:return
8;case
8:return
8;default:throw Error("mode:"+a);}else if(
27>c)switch(a){case
1:return
12;case
2:return
11;case s:return
16;case
8:return
10;default:throw Error("mode:"+a);}else if(
41>c)switch(a){case
1:return
14;case
2:return
13;case s:return
16;case
8:return
12;default:throw Error("mode:"+
5491 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=
0,b=
0;b
<c;b++)for(var e=
0;e
<c;e++){for(var f=
0,i=a.isDark(b,e),g=-
1;
1>=g;g++)if(!(
0>b+g||c<=b+g))for(var h=-
1;
1>=h;h++)
0>e+h||c<=e+h||
0==g&&
0==h||i==a.isDark(b+g,e+h)&&f++;
5<f&&(d+=
3+f-
5)}for(b=
0;b
<c-1;b++)for(e=
0;e
<c-1;e++)if(f=
0,a.isDark(b,e)&&f++,a.isDark(b+
1,e)&&f++,a.isDark(b,e+
1)&&f++,a.isDark(b+
1,e+
1)&&f++,
0==f||
4==f)d+=
3;for(b=
0;b
<c;b++)for(e=
0;e
<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+
1)&&a.isDark(b,e+
5492 2)&&a.isDark(b,e+
3)&&a.isDark(b,e+
4)&&!a.isDark(b,e+
5)&&a.isDark(b,e+
6)&&(d+=
40);for(e=
0;e
<c;e++)for(b=
0;b
<c-6;b++)a.isDark(b,e)&&!a.isDark(b+
1,e)&&a.isDark(b+
2,e)&&a.isDark(b+
3,e)&&a.isDark(b+
4,e)&&!a.isDark(b+
5,e)&&a.isDark(b+
6,e)&&(d+=
40);for(e=f=
0;e
<c;e++)for(b=
0;b
<c;b++)a.isDark(b,e)&&f++;a=Math.abs(
100*f/c/c-
50)/
5;return d+
10*a}},l={glog:function(a){if(
1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;
0>a;)a+=
255;for(;
256<=a;)a-=
255;return l.EXP_TABLE[a]},EXP_TABLE:Array(
256),
5493 LOG_TABLE:Array(
256)},m=
0;
8>m;m++)l.EXP_TABLE[m]=
1<
<m;for(m=
8;
256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-
4]^l.EXP_TABLE[m-
5]^l.EXP_TABLE[m-
6]^l.EXP_TABLE[m-
8];for(m=
0;
255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-
1),d=
0;d
<this.getLength();d++)for(var b=
0;b
<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,
0)},mod:function(a){if(
0>
5494 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(
0))-l.glog(a.get(
0)),d=Array(this.getLength()),b=
0;b
<this.getLength();b++)d[b]=this.get(b);for(b=
0;b
<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,
0)).mod(a)}};p.RS_BLOCK_TABLE=[[
1,
26,
19],[
1,
26,
16],[
1,
26,
13],[
1,
26,
9],[
1,
44,
34],[
1,
44,
28],[
1,
44,
22],[
1,
44,
16],[
1,
70,
55],[
1,
70,
44],[
2,
35,
17],[
2,
35,
13],[
1,
100,
80],[
2,
50,
32],[
2,
50,
24],[
4,
25,
9],[
1,
134,
108],[
2,
67,
43],[
2,
33,
15,
2,
34,
16],[
2,
33,
11,
2,
34,
12],[
2,
86,
68],[
4,
43,
27],
5495 [
4,
43,
19],[
4,
43,
15],[
2,
98,
78],[
4,
49,
31],[
2,
32,
14,
4,
33,
15],[
4,
39,
13,
1,
40,
14],[
2,
121,
97],[
2,
60,
38,
2,
61,
39],[
4,
40,
18,
2,
41,
19],[
4,
40,
14,
2,
41,
15],[
2,
146,
116],[
3,
58,
36,
2,
59,
37],[
4,
36,
16,
4,
37,
17],[
4,
36,
12,
4,
37,
13],[
2,
86,
68,
2,
87,
69],[
4,
69,
43,
1,
70,
44],[
6,
43,
19,
2,
44,
20],[
6,
43,
15,
2,
44,
16],[
4,
101,
81],[
1,
80,
50,
4,
81,
51],[
4,
50,
22,
4,
51,
23],[
3,
36,
12,
8,
37,
13],[
2,
116,
92,
2,
117,
93],[
6,
58,
36,
2,
59,
37],[
4,
46,
20,
6,
47,
21],[
7,
42,
14,
4,
43,
15],[
4,
133,
107],[
8,
59,
37,
1,
60,
38],[
8,
44,
20,
4,
45,
21],[
12,
33,
11,
4,
34,
12],[
3,
145,
115,
1,
146,
5496 116],[
4,
64,
40,
5,
65,
41],[
11,
36,
16,
5,
37,
17],[
11,
36,
12,
5,
37,
13],[
5,
109,
87,
1,
110,
88],[
5,
65,
41,
5,
66,
42],[
5,
54,
24,
7,
55,
25],[
11,
36,
12],[
5,
122,
98,
1,
123,
99],[
7,
73,
45,
3,
74,
46],[
15,
43,
19,
2,
44,
20],[
3,
45,
15,
13,
46,
16],[
1,
135,
107,
5,
136,
108],[
10,
74,
46,
1,
75,
47],[
1,
50,
22,
15,
51,
23],[
2,
42,
14,
17,
43,
15],[
5,
150,
120,
1,
151,
121],[
9,
69,
43,
4,
70,
44],[
17,
50,
22,
1,
51,
23],[
2,
42,
14,
19,
43,
15],[
3,
141,
113,
4,
142,
114],[
3,
70,
44,
11,
71,
45],[
17,
47,
21,
4,
48,
22],[
9,
39,
13,
16,
40,
14],[
3,
135,
107,
5,
136,
108],[
3,
67,
41,
13,
68,
42],[
15,
54,
24,
5,
55,
25],[
15,
5497 43,
15,
10,
44,
16],[
4,
144,
116,
4,
145,
117],[
17,
68,
42],[
17,
50,
22,
6,
51,
23],[
19,
46,
16,
6,
47,
17],[
2,
139,
111,
7,
140,
112],[
17,
74,
46],[
7,
54,
24,
16,
55,
25],[
34,
37,
13],[
4,
151,
121,
5,
152,
122],[
4,
75,
47,
14,
76,
48],[
11,
54,
24,
14,
55,
25],[
16,
45,
15,
14,
46,
16],[
6,
147,
117,
4,
148,
118],[
6,
73,
45,
14,
74,
46],[
11,
54,
24,
16,
55,
25],[
30,
46,
16,
2,
47,
17],[
8,
132,
106,
4,
133,
107],[
8,
75,
47,
13,
76,
48],[
7,
54,
24,
22,
55,
25],[
22,
45,
15,
13,
46,
16],[
10,
142,
114,
2,
143,
115],[
19,
74,
46,
4,
75,
47],[
28,
50,
22,
6,
51,
23],[
33,
46,
16,
4,
47,
17],[
8,
152,
122,
4,
153,
123],[
22,
73,
45,
5498 3,
74,
46],[
8,
53,
23,
26,
54,
24],[
12,
45,
15,
28,
46,
16],[
3,
147,
117,
10,
148,
118],[
3,
73,
45,
23,
74,
46],[
4,
54,
24,
31,
55,
25],[
11,
45,
15,
31,
46,
16],[
7,
146,
116,
7,
147,
117],[
21,
73,
45,
7,
74,
46],[
1,
53,
23,
37,
54,
24],[
19,
45,
15,
26,
46,
16],[
5,
145,
115,
10,
146,
116],[
19,
75,
47,
10,
76,
48],[
15,
54,
24,
25,
55,
25],[
23,
45,
15,
25,
46,
16],[
13,
145,
115,
3,
146,
116],[
2,
74,
46,
29,
75,
47],[
42,
54,
24,
1,
55,
25],[
23,
45,
15,
28,
46,
16],[
17,
145,
115],[
10,
74,
46,
23,
75,
47],[
10,
54,
24,
35,
55,
25],[
19,
45,
15,
35,
46,
16],[
17,
145,
115,
1,
146,
116],[
14,
74,
46,
21,
75,
47],[
29,
54,
24,
19,
5499 55,
25],[
11,
45,
15,
46,
46,
16],[
13,
145,
115,
6,
146,
116],[
14,
74,
46,
23,
75,
47],[
44,
54,
24,
7,
55,
25],[
59,
46,
16,
1,
47,
17],[
12,
151,
121,
7,
152,
122],[
12,
75,
47,
26,
76,
48],[
39,
54,
24,
14,
55,
25],[
22,
45,
15,
41,
46,
16],[
6,
151,
121,
14,
152,
122],[
6,
75,
47,
34,
76,
48],[
46,
54,
24,
10,
55,
25],[
2,
45,
15,
64,
46,
16],[
17,
152,
122,
4,
153,
123],[
29,
74,
46,
14,
75,
47],[
49,
54,
24,
10,
55,
25],[
24,
45,
15,
46,
46,
16],[
4,
152,
122,
18,
153,
123],[
13,
74,
46,
32,
75,
47],[
48,
54,
24,
14,
55,
25],[
42,
45,
15,
32,
46,
16],[
20,
147,
117,
4,
148,
118],[
40,
75,
47,
7,
76,
48],[
43,
54,
24,
22,
55,
25],[
10,
5500 45,
15,
67,
46,
16],[
19,
148,
118,
6,
149,
119],[
18,
75,
47,
31,
76,
48],[
34,
54,
24,
34,
55,
25],[
20,
45,
15,
61,
46,
16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void
0==d)throw Error(
"bad rs block @ typeNumber:"+a+
"/errorCorrectLevel:"+c);for(var b=d.length/
3,e=[],f=
0;f
<b;f++)for(var h=d[
3*f+
0],g=d[
3*f+
1],j=d[
3*f+
2],l=
0;l
<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case
1:return p.RS_BLOCK_TABLE[
4*(a-
1)+
0];case
0:return p.RS_BLOCK_TABLE[
4*(a-
1)+
1];case
3:return p.RS_BLOCK_TABLE[
4*
5501 (a-
1)+
2];case
2:return p.RS_BLOCK_TABLE[
4*(a-
1)+
3]}};t.prototype={get:function(a){return
1==(this.buffer[Math.floor(a/
8)]
>>>7-a%
8&
1)},put:function(a,c){for(var d=
0;d
<c;d++)this.putBit(
1==(a
>>>c-d-
1&
1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/
8);this.buffer.length<=c&&this.buffer.push(
0);a&&(this.buffer[c]|=
128>>>this.length%
8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:
256,height:
256,typeNumber:-
1,
5502 correctLevel:
2,background:"#ffffff",foreground:"#
000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("
2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=
0;f
<a.getModuleCount();f++)for(var i=
0;i
<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+
1)*b)-Math.floor(i*b),
5503 j=Math.ceil((f+
1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r(
"<table></table>").css(
"width",h.width+
"px").css(
"height",h.height+
"px").css(
"border",
"0px").css(
"border-collapse",
"collapse").css(
"background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=
0;e
<a.getModuleCount();e++){f=r(
"<tr></tr>").css(
"height",b+
"px").appendTo(c);for(i=
0;i
<a.getModuleCount();i++)r(
"<td></td>").css(
"width",
5504 d+
"px").css(
"background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
5506 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoin = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
5507 // (public) Constructor
5508 function BigInteger(a, b, c) {
5509 if (!(this instanceof BigInteger))
5510 return new BigInteger(a, b, c)
5513 if (
"number" == typeof a) this.fromNumber(a, b, c)
5514 else if (b == null &&
"string" != typeof a) this.fromString(a,
256)
5515 else this.fromString(a, b)
5519 var proto = BigInteger.prototype
5521 // duck-typed isBigInteger
5522 proto.__bigi = require('../package.json').version
5523 BigInteger.isBigInteger = function (obj, check_ver) {
5524 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
5530 // am: Compute w_j += (x*this_i), propagate carries,
5531 // c is initial carry, returns final carry.
5532 // c <
3*dvalue, x <
2*dvalue, this_i < dvalue
5533 // We need to select the fastest one that works in this environment.
5535 // am1: use a single mult and divide to get the high bits,
5536 // max digit bits should be
26 because
5537 // max internal value =
2*dvalue^
2-
2*dvalue (<
2^
53)
5538 function am1(i, x, w, j, c, n) {
5540 var v = x * this[i++] + w[j] + c
5541 c = Math.floor(v /
0x4000000)
5542 w[j++] = v &
0x3ffffff
5546 // am2 avoids a big mult-and-extract completely.
5547 // Max digit bits should be <=
30 because we do bitwise ops
5548 // on values up to
2*hdvalue^
2-hdvalue-
1 (<
2^
31)
5549 function am2(i, x, w, j, c, n) {
5550 var xl = x &
0x7fff,
5553 var l = this[i] &
0x7fff
5554 var h = this[i++]
>> 15
5555 var m = xh * l + h * xl
5556 l = xl * l + ((m &
0x7fff) <<
15) + w[j] + (c &
0x3fffffff)
5557 c = (l
>>> 30) + (m
>>> 15) + xh * h + (c
>>> 30)
5558 w[j++] = l &
0x3fffffff
5562 // Alternately, set max digit bits to
28 since some
5563 // browsers slow down when dealing with
32-bit numbers.
5564 function am3(i, x, w, j, c, n) {
5565 var xl = x &
0x3fff,
5568 var l = this[i] &
0x3fff
5569 var h = this[i++]
>> 14
5570 var m = xh * l + h * xl
5571 l = xl * l + ((m &
0x3fff) <<
14) + w[j] + c
5572 c = (l
>> 28) + (m
>> 14) + xh * h
5573 w[j++] = l &
0xfffffff
5579 BigInteger.prototype.am = am1
5582 BigInteger.prototype.DB = dbits
5583 BigInteger.prototype.DM = ((
1 << dbits) -
1)
5584 var DV = BigInteger.prototype.DV = (
1 << dbits)
5587 BigInteger.prototype.FV = Math.pow(
2, BI_FP)
5588 BigInteger.prototype.F1 = BI_FP - dbits
5589 BigInteger.prototype.F2 =
2 * dbits - BI_FP
5591 // Digit conversions
5592 var BI_RM =
"0123456789abcdefghijklmnopqrstuvwxyz"
5593 var BI_RC = new Array()
5595 rr =
"0".charCodeAt(
0)
5596 for (vv =
0; vv <=
9; ++vv) BI_RC[rr++] = vv
5597 rr =
"a".charCodeAt(
0)
5598 for (vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv
5599 rr =
"A".charCodeAt(
0)
5600 for (vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv
5602 function int2char(n) {
5603 return BI_RM.charAt(n)
5606 function intAt(s, i) {
5607 var c = BI_RC[s.charCodeAt(i)]
5608 return (c == null) ? -
1 : c
5611 // (protected) copy this to r
5612 function bnpCopyTo(r) {
5613 for (var i = this.t -
1; i
>=
0; --i) r[i] = this[i]
5618 // (protected) set from integer value x, -DV <= x < DV
5619 function bnpFromInt(x) {
5621 this.s = (x <
0) ? -
1 :
0
5622 if (x
> 0) this[
0] = x
5623 else if (x < -
1) this[
0] = x + DV
5627 // return bigint initialized to value
5629 var r = new BigInteger()
5634 // (protected) set from string and radix
5635 function bnpFromString(s, b) {
5640 else if (b ==
8) k =
3
5641 else if (b ==
256) k =
8; // byte array
5642 else if (b ==
2) k =
1
5643 else if (b ==
32) k =
5
5644 else if (b ==
4) k =
2
5646 self.fromRadix(s, b)
5655 var x = (k ==
8) ? s[i] &
0xff : intAt(s, i)
5657 if (s.charAt(i) == "-") mi = true
5663 else if (sh + k
> self.DB) {
5664 self[self.t -
1] |= (x & ((
1 << (self.DB - sh)) -
1)) << sh
5665 self[self.t++] = (x
>> (self.DB - sh))
5667 self[self.t -
1] |= x << sh
5669 if (sh
>= self.DB) sh -= self.DB
5671 if (k ==
8 && (s[
0] &
0x80) !=
0) {
5673 if (sh
> 0) self[self.t -
1] |= ((
1 << (self.DB - sh)) -
1) << sh
5676 if (mi) BigInteger.ZERO.subTo(self, self)
5679 // (protected) clamp off excess high words
5680 function bnpClamp() {
5681 var c = this.s & this.DM
5682 while (this.t
> 0 && this[this.t -
1] == c)--this.t
5685 // (public) return string representation in given radix
5686 function bnToString(b) {
5688 if (self.s <
0) return
"-" + self.negate()
5692 else if (b ==
8) k =
3
5693 else if (b ==
2) k =
1
5694 else if (b ==
32) k =
5
5695 else if (b ==
4) k =
2
5696 else return self.toRadix(b)
5697 var km = (
1 << k) -
1,
5701 var p = self.DB - (i * self.DB) % k
5703 if (p < self.DB && (d = self[i]
>> p)
> 0) {
5709 d = (self[i] & ((
1 << p) -
1)) << (k - p)
5710 d |= self[--i]
>> (p += self.DB - k)
5712 d = (self[i]
>> (p -= k)) & km
5719 if (m) r += int2char(d)
5726 function bnNegate() {
5727 var r = new BigInteger()
5728 BigInteger.ZERO.subTo(this, r)
5734 return (this.s <
0) ? this.negate() : this
5737 // (public) return + if this
> a, - if this < a,
0 if equal
5738 function bnCompareTo(a) {
5739 var r = this.s - a.s
5740 if (r !=
0) return r
5743 if (r !=
0) return (this.s <
0) ? -r : r
5745 if ((r = this[i] - a[i]) !=
0) return r
5749 // returns bit length of the integer x
5753 if ((t = x
>>> 16) !=
0) {
5757 if ((t = x
>> 8) !=
0) {
5761 if ((t = x
>> 4) !=
0) {
5765 if ((t = x
>> 2) !=
0) {
5769 if ((t = x
>> 1) !=
0) {
5776 // (public) return the number of bits in
"this"
5777 function bnBitLength() {
5778 if (this.t <=
0) return
0
5779 return this.DB * (this.t -
1) + nbits(this[this.t -
1] ^ (this.s & this.DM))
5782 // (public) return the number of bytes in
"this"
5783 function bnByteLength() {
5784 return this.bitLength()
>> 3
5787 // (protected) r = this << n*DB
5788 function bnpDLShiftTo(n, r) {
5790 for (i = this.t -
1; i
>=
0; --i) r[i + n] = this[i]
5791 for (i = n -
1; i
>=
0; --i) r[i] =
0
5796 // (protected) r = this
>> n*DB
5797 function bnpDRShiftTo(n, r) {
5798 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
5799 r.t = Math.max(this.t - n,
0)
5803 // (protected) r = this << n
5804 function bnpLShiftTo(n, r) {
5806 var bs = n % self.DB
5807 var cbs = self.DB - bs
5808 var bm = (
1 << cbs) -
1
5809 var ds = Math.floor(n / self.DB),
5810 c = (self.s << bs) & self.DM,
5812 for (i = self.t -
1; i
>=
0; --i) {
5813 r[i + ds +
1] = (self[i]
>> cbs) | c
5814 c = (self[i] & bm) << bs
5816 for (i = ds -
1; i
>=
0; --i) r[i] =
0
5818 r.t = self.t + ds +
1
5823 // (protected) r = this
>> n
5824 function bnpRShiftTo(n, r) {
5827 var ds = Math.floor(n / self.DB)
5832 var bs = n % self.DB
5833 var cbs = self.DB - bs
5834 var bm = (
1 << bs) -
1
5835 r[
0] = self[ds]
>> bs
5836 for (var i = ds +
1; i < self.t; ++i) {
5837 r[i - ds -
1] |= (self[i] & bm) << cbs
5838 r[i - ds] = self[i]
>> bs
5840 if (bs
> 0) r[self.t - ds -
1] |= (self.s & bm) << cbs
5845 // (protected) r = this - a
5846 function bnpSubTo(a, r) {
5850 m = Math.min(a.t, self.t)
5853 r[i++] = c & self.DM
5858 while (i < self.t) {
5860 r[i++] = c & self.DM
5868 r[i++] = c & self.DM
5873 r.s = (c <
0) ? -
1 :
0
5874 if (c < -
1) r[i++] = self.DV + c
5875 else if (c
> 0) r[i++] = c
5880 // (protected) r = this * a, r != this,a (HAC
14.12)
5881 //
"this" should be the larger one if appropriate.
5882 function bnpMultiplyTo(a, r) {
5887 while (--i
>=
0) r[i] =
0
5888 for (i =
0; i < y.t; ++i) r[i + x.t] = x.am(
0, y[i], r, i,
0, x.t)
5891 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
5894 // (protected) r = this^
2, r != this (HAC
14.16)
5895 function bnpSquareTo(r) {
5897 var i = r.t =
2 * x.t
5898 while (--i
>=
0) r[i] =
0
5899 for (i =
0; i < x.t -
1; ++i) {
5900 var c = x.am(i, x[i], r,
2 * i,
0,
1)
5901 if ((r[i + x.t] += x.am(i +
1,
2 * x[i], r,
2 * i +
1, c, x.t - i -
1))
>= x.DV) {
5906 if (r.t
> 0) r[r.t -
1] += x.am(i, x[i], r,
2 * i,
0,
1)
5911 // (protected) divide this by m, quotient and remainder to q, r (HAC
14.20)
5912 // r != q, this != m. q or r may be null.
5913 function bnpDivRemTo(m, q, r) {
5916 if (pm.t <=
0) return
5919 if (q != null) q.fromInt(
0)
5920 if (r != null) self.copyTo(r)
5923 if (r == null) r = new BigInteger()
5924 var y = new BigInteger(),
5927 var nsh = self.DB - nbits(pm[pm.t -
1]); // normalize modulus
5938 var yt = y0 * (
1 << self.F1) + ((ys
> 1) ? y[ys -
2]
>> self.F2 :
0)
5939 var d1 = self.FV / yt,
5940 d2 = (
1 << self.F1) / yt,
5944 t = (q == null) ? new BigInteger() : q
5946 if (r.compareTo(t)
>=
0) {
5950 BigInteger.ONE.dlShiftTo(ys, t)
5951 t.subTo(y, y); // "negative" y so we can replace sub with am later
5952 while (y.t < ys) y[y.t++] =
0
5954 // Estimate quotient digit
5955 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i -
1] + e) * d2)
5956 if ((r[i] += y.am(
0, qd, r, j,
0, ys)) < qd) { // Try it out
5959 while (r[i] < --qd) r.subTo(t, r)
5964 if (ts != ms) BigInteger.ZERO.subTo(q, q)
5968 if (nsh
> 0) r.rShiftTo(nsh, r); // Denormalize remainder
5969 if (ts <
0) BigInteger.ZERO.subTo(r, r)
5972 // (public) this mod a
5974 var r = new BigInteger()
5976 .divRemTo(a, null, r)
5977 if (this.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) a.subTo(r, r)
5981 // Modular reduction using
"classic" algorithm
5982 function Classic(m) {
5986 function cConvert(x) {
5987 if (x.s <
0 || x.compareTo(this.m)
>=
0) return x.mod(this.m)
5991 function cRevert(x) {
5995 function cReduce(x) {
5996 x.divRemTo(this.m, null, x)
5999 function cMulTo(x, y, r) {
6004 function cSqrTo(x, r) {
6009 Classic.prototype.convert = cConvert
6010 Classic.prototype.revert = cRevert
6011 Classic.prototype.reduce = cReduce
6012 Classic.prototype.mulTo = cMulTo
6013 Classic.prototype.sqrTo = cSqrTo
6015 // (protected) return "-
1/this %
2^DB"; useful for Mont. reduction
6019 // xy(
2-xy) = (
1+km)(
1-km)
6020 // x[y(
2-xy)] =
1-k^
2m^
2
6021 // x[y(
2-xy)] ==
1 (mod m^
2)
6022 // if y is
1/x mod m, then y(
2-xy) is
1/x mod m^
2
6023 // should reduce x and y(
2-xy) by m^
2 at each step to keep size bounded.
6024 // JS multiply "overflows" differently from C/C++, so care is needed here.
6025 function bnpInvDigit() {
6026 if (this.t <
1) return
0
6028 if ((x &
1) ==
0) return
0
6029 var y = x &
3; // y ==
1/x mod
2^
2
6030 y = (y * (
2 - (x &
0xf) * y)) &
0xf; // y ==
1/x mod
2^
4
6031 y = (y * (
2 - (x &
0xff) * y)) &
0xff; // y ==
1/x mod
2^
8
6032 y = (y * (
2 - (((x &
0xffff) * y) &
0xffff))) &
0xffff; // y ==
1/x mod
2^
16
6033 // last step - calculate inverse mod DV directly
6034 // assumes
16 < DB <=
32 and assumes ability to handle
48-bit ints
6035 y = (y * (
2 - x * y % this.DV)) % this.DV; // y ==
1/x mod
2^dbits
6036 // we really want the negative inverse, and -DV < y < DV
6037 return (y
> 0) ? this.DV - y : -y
6040 // Montgomery reduction
6041 function Montgomery(m) {
6043 this.mp = m.invDigit()
6044 this.mpl = this.mp &
0x7fff
6045 this.mph = this.mp
>> 15
6046 this.um = (
1 << (m.DB -
15)) -
1
6051 function montConvert(x) {
6052 var r = new BigInteger()
6054 .dlShiftTo(this.m.t, r)
6055 r.divRemTo(this.m, null, r)
6056 if (x.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) this.m.subTo(r, r)
6061 function montRevert(x) {
6062 var r = new BigInteger()
6068 // x = x/R mod m (HAC
14.32)
6069 function montReduce(x) {
6070 while (x.t <= this.mt2) // pad x so am has enough room later
6072 for (var i =
0; i < this.m.t; ++i) {
6073 // faster way of calculating u0 = x[i]*mp mod DV
6074 var j = x[i] &
0x7fff
6075 var u0 = (j * this.mpl + (((j * this.mph + (x[i]
>> 15) * this.mpl) & this.um) <<
15)) & x.DM
6076 // use am to combine the multiply-shift-add into one call
6078 x[j] += this.m.am(
0, u0, x, i,
0, this.m.t)
6080 while (x[j]
>= x.DV) {
6086 x.drShiftTo(this.m.t, x)
6087 if (x.compareTo(this.m)
>=
0) x.subTo(this.m, x)
6090 // r = "x^
2/R mod m"; x != r
6091 function montSqrTo(x, r) {
6096 // r = "xy/R mod m"; x,y != r
6097 function montMulTo(x, y, r) {
6102 Montgomery.prototype.convert = montConvert
6103 Montgomery.prototype.revert = montRevert
6104 Montgomery.prototype.reduce = montReduce
6105 Montgomery.prototype.mulTo = montMulTo
6106 Montgomery.prototype.sqrTo = montSqrTo
6108 // (protected) true iff this is even
6109 function bnpIsEven() {
6110 return ((this.t
> 0) ? (this[
0] &
1) : this.s) ==
0
6113 // (protected) this^e, e <
2^
32, doing sqr and mul with
"r" (HAC
14.79)
6114 function bnpExp(e, z) {
6115 if (e
> 0xffffffff || e <
1) return BigInteger.ONE
6116 var r = new BigInteger(),
6117 r2 = new BigInteger(),
6118 g = z.convert(this),
6123 if ((e & (
1 << i))
> 0) z.mulTo(r2, g, r)
6133 // (public) this^e % m,
0 <= e <
2^
32
6134 function bnModPowInt(e, m) {
6136 if (e <
256 || m.isEven()) z = new Classic(m)
6137 else z = new Montgomery(m)
6138 return this.exp(e, z)
6142 proto.copyTo = bnpCopyTo
6143 proto.fromInt = bnpFromInt
6144 proto.fromString = bnpFromString
6145 proto.clamp = bnpClamp
6146 proto.dlShiftTo = bnpDLShiftTo
6147 proto.drShiftTo = bnpDRShiftTo
6148 proto.lShiftTo = bnpLShiftTo
6149 proto.rShiftTo = bnpRShiftTo
6150 proto.subTo = bnpSubTo
6151 proto.multiplyTo = bnpMultiplyTo
6152 proto.squareTo = bnpSquareTo
6153 proto.divRemTo = bnpDivRemTo
6154 proto.invDigit = bnpInvDigit
6155 proto.isEven = bnpIsEven
6159 proto.toString = bnToString
6160 proto.negate = bnNegate
6162 proto.compareTo = bnCompareTo
6163 proto.bitLength = bnBitLength
6164 proto.byteLength = bnByteLength
6166 proto.modPowInt = bnModPowInt
6169 function bnClone() {
6170 var r = new BigInteger()
6175 // (public) return value as integer
6176 function bnIntValue() {
6178 if (this.t ==
1) return this[
0] - this.DV
6179 else if (this.t ==
0) return -
1
6180 } else if (this.t ==
1) return this[
0]
6181 else if (this.t ==
0) return
0
6182 // assumes
16 < DB <
32
6183 return ((this[
1] & ((
1 << (
32 - this.DB)) -
1)) << this.DB) | this[
0]
6186 // (public) return value as byte
6187 function bnByteValue() {
6188 return (this.t ==
0) ? this.s : (this[
0] <<
24)
>> 24
6191 // (public) return value as short (assumes DB
>=
16)
6192 function bnShortValue() {
6193 return (this.t ==
0) ? this.s : (this[
0] <<
16)
>> 16
6196 // (protected) return x s.t. r^x < DV
6197 function bnpChunkSize(r) {
6198 return Math.floor(Math.LN2 * this.DB / Math.log(r))
6201 // (public)
0 if this ==
0,
1 if this
> 0
6202 function bnSigNum() {
6203 if (this.s <
0) return -
1
6204 else if (this.t <=
0 || (this.t ==
1 && this[
0] <=
0)) return
0
6208 // (protected) convert to radix string
6209 function bnpToRadix(b) {
6210 if (b == null) b =
10
6211 if (this.signum() ==
0 || b <
2 || b
> 36) return
"0"
6212 var cs = this.chunkSize(b)
6213 var a = Math.pow(b, cs)
6215 y = new BigInteger(),
6216 z = new BigInteger(),
6218 this.divRemTo(d, y, z)
6219 while (y.signum()
> 0) {
6220 r = (a + z.intValue())
6229 // (protected) convert from radix string
6230 function bnpFromRadix(s, b) {
6233 if (b == null) b =
10
6234 var cs = self.chunkSize(b)
6235 var d = Math.pow(b, cs),
6239 for (var i =
0; i < s.length; ++i) {
6242 if (s.charAt(i) ==
"-" && self.signum() ==
0) mi = true
6248 self.dAddOffset(w,
0)
6254 self.dMultiply(Math.pow(b, j))
6255 self.dAddOffset(w,
0)
6257 if (mi) BigInteger.ZERO.subTo(self, self)
6260 // (protected) alternate constructor
6261 function bnpFromNumber(a, b, c) {
6263 if (
"number" == typeof b) {
6264 // new BigInteger(int,int,RNG)
6265 if (a <
2) self.fromInt(
1)
6267 self.fromNumber(a, c)
6268 if (!self.testBit(a -
1)) // force MSB set
6269 self.bitwiseTo(BigInteger.ONE.shiftLeft(a -
1), op_or, self)
6270 if (self.isEven()) self.dAddOffset(
1,
0); // force odd
6271 while (!self.isProbablePrime(b)) {
6272 self.dAddOffset(
2,
0)
6273 if (self.bitLength()
> a) self.subTo(BigInteger.ONE.shiftLeft(a -
1), self)
6277 // new BigInteger(int,RNG)
6278 var x = new Array(),
6280 x.length = (a
>> 3) +
1
6282 if (t
> 0) x[
0] &= ((
1 << t) -
1)
6284 self.fromString(x,
256)
6288 // (public) convert to bigendian byte array
6289 function bnToByteArray() {
6294 var p = self.DB - (i * self.DB) %
8,
6297 if (p < self.DB && (d = self[i]
>> p) != (self.s & self.DM)
>> p)
6298 r[k++] = d | (self.s << (self.DB - p))
6301 d = (self[i] & ((
1 << p) -
1)) << (
8 - p)
6302 d |= self[--i]
>> (p += self.DB -
8)
6304 d = (self[i]
>> (p -=
8)) &
0xff
6310 if ((d &
0x80) !=
0) d |= -
256
6311 if (k ===
0 && (self.s &
0x80) != (d &
0x80))++k
6312 if (k
> 0 || d != self.s) r[k++] = d
6318 function bnEquals(a) {
6319 return (this.compareTo(a) ==
0)
6323 return (this.compareTo(a) <
0) ? this : a
6327 return (this.compareTo(a)
> 0) ? this : a
6330 // (protected) r = this op a (bitwise)
6331 function bnpBitwiseTo(a, op, r) {
6333 var i, f, m = Math.min(a.t, self.t)
6334 for (i =
0; i < m; ++i) r[i] = op(self[i], a[i])
6337 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
6340 f = self.s & self.DM
6341 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
6344 r.s = op(self.s, a.s)
6348 // (public) this & a
6349 function op_and(x, y) {
6354 var r = new BigInteger()
6355 this.bitwiseTo(a, op_and, r)
6359 // (public) this | a
6360 function op_or(x, y) {
6365 var r = new BigInteger()
6366 this.bitwiseTo(a, op_or, r)
6370 // (public) this ^ a
6371 function op_xor(x, y) {
6376 var r = new BigInteger()
6377 this.bitwiseTo(a, op_xor, r)
6381 // (public) this & ~a
6382 function op_andnot(x, y) {
6386 function bnAndNot(a) {
6387 var r = new BigInteger()
6388 this.bitwiseTo(a, op_andnot, r)
6394 var r = new BigInteger()
6395 for (var i =
0; i < this.t; ++i) r[i] = this.DM & ~this[i]
6401 // (public) this << n
6402 function bnShiftLeft(n) {
6403 var r = new BigInteger()
6404 if (n <
0) this.rShiftTo(-n, r)
6405 else this.lShiftTo(n, r)
6409 // (public) this
>> n
6410 function bnShiftRight(n) {
6411 var r = new BigInteger()
6412 if (n <
0) this.lShiftTo(-n, r)
6413 else this.rShiftTo(n, r)
6417 // return index of lowest
1-bit in x, x <
2^
31
6419 if (x ==
0) return -
1
6421 if ((x &
0xffff) ==
0) {
6425 if ((x &
0xff) ==
0) {
6429 if ((x &
0xf) ==
0) {
6437 if ((x &
1) ==
0)++r
6441 // (public) returns index of lowest
1-bit (or -
1 if none)
6442 function bnGetLowestSetBit() {
6443 for (var i =
0; i < this.t; ++i)
6444 if (this[i] !=
0) return i * this.DB + lbit(this[i])
6445 if (this.s <
0) return this.t * this.DB
6449 // return number of
1 bits in x
6459 // (public) return number of set bits
6460 function bnBitCount() {
6462 x = this.s & this.DM
6463 for (var i =
0; i < this.t; ++i) r += cbit(this[i] ^ x)
6467 // (public) true iff nth bit is set
6468 function bnTestBit(n) {
6469 var j = Math.floor(n / this.DB)
6470 if (j
>= this.t) return (this.s !=
0)
6471 return ((this[j] & (
1 << (n % this.DB))) !=
0)
6474 // (protected) this op (
1<
<n)
6475 function bnpChangeBit(n, op) {
6476 var r = BigInteger.ONE.shiftLeft(n)
6477 this.bitwiseTo(r, op, r)
6481 // (public) this | (
1<
<n)
6482 function bnSetBit(n) {
6483 return this.changeBit(n, op_or)
6486 // (public) this & ~(
1<
<n)
6487 function bnClearBit(n) {
6488 return this.changeBit(n, op_andnot)
6491 // (public) this ^ (
1<
<n)
6492 function bnFlipBit(n) {
6493 return this.changeBit(n, op_xor)
6496 // (protected) r = this + a
6497 function bnpAddTo(a, r) {
6502 m = Math.min(a.t, self.t)
6505 r[i++] = c & self.DM
6510 while (i < self.t) {
6512 r[i++] = c & self.DM
6520 r[i++] = c & self.DM
6525 r.s = (c <
0) ? -
1 :
0
6526 if (c
> 0) r[i++] = c
6527 else if (c < -
1) r[i++] = self.DV + c
6532 // (public) this + a
6534 var r = new BigInteger()
6539 // (public) this - a
6540 function bnSubtract(a) {
6541 var r = new BigInteger()
6546 // (public) this * a
6547 function bnMultiply(a) {
6548 var r = new BigInteger()
6549 this.multiplyTo(a, r)
6554 function bnSquare() {
6555 var r = new BigInteger()
6560 // (public) this / a
6561 function bnDivide(a) {
6562 var r = new BigInteger()
6563 this.divRemTo(a, r, null)
6567 // (public) this % a
6568 function bnRemainder(a) {
6569 var r = new BigInteger()
6570 this.divRemTo(a, null, r)
6574 // (public) [this/a,this%a]
6575 function bnDivideAndRemainder(a) {
6576 var q = new BigInteger(),
6577 r = new BigInteger()
6578 this.divRemTo(a, q, r)
6579 return new Array(q, r)
6582 // (protected) this *= n, this
>=
0,
1 < n < DV
6583 function bnpDMultiply(n) {
6584 this[this.t] = this.am(
0, n -
1, this,
0,
0, this.t)
6589 // (protected) this += n << w words, this
>=
0
6590 function bnpDAddOffset(n, w) {
6592 while (this.t <= w) this[this.t++] =
0
6594 while (this[w]
>= this.DV) {
6596 if (++w
>= this.t) this[this.t++] =
0
6602 function NullExp() {}
6608 function nMulTo(x, y, r) {
6612 function nSqrTo(x, r) {
6616 NullExp.prototype.convert = nNop
6617 NullExp.prototype.revert = nNop
6618 NullExp.prototype.mulTo = nMulTo
6619 NullExp.prototype.sqrTo = nSqrTo
6623 return this.exp(e, new NullExp())
6626 // (protected) r = lower n words of "this * a", a.t <= n
6627 // "this" should be the larger one if appropriate.
6628 function bnpMultiplyLowerTo(a, n, r) {
6629 var i = Math.min(this.t + a.t, n)
6630 r.s =
0; // assumes a,this
>=
0
6632 while (i
> 0) r[--i] =
0
6634 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(
0, a[i], r, i,
0, this.t)
6635 for (j = Math.min(a.t, n); i < j; ++i) this.am(
0, a[i], r, i,
0, n - i)
6639 // (protected) r =
"this * a" without lower n words, n
> 0
6640 //
"this" should be the larger one if appropriate.
6641 function bnpMultiplyUpperTo(a, n, r) {
6643 var i = r.t = this.t + a.t - n
6644 r.s =
0; // assumes a,this
>=
0
6645 while (--i
>=
0) r[i] =
0
6646 for (i = Math.max(n - this.t,
0); i < a.t; ++i)
6647 r[this.t + i - n] = this.am(n - i, a[i], r,
0,
0, this.t + i - n)
6652 // Barrett modular reduction
6653 function Barrett(m) {
6655 this.r2 = new BigInteger()
6656 this.q3 = new BigInteger()
6657 BigInteger.ONE.dlShiftTo(
2 * m.t, this.r2)
6658 this.mu = this.r2.divide(m)
6662 function barrettConvert(x) {
6663 if (x.s <
0 || x.t
> 2 * this.m.t) return x.mod(this.m)
6664 else if (x.compareTo(this.m) <
0) return x
6666 var r = new BigInteger()
6673 function barrettRevert(x) {
6677 // x = x mod m (HAC
14.42)
6678 function barrettReduce(x) {
6680 x.drShiftTo(self.m.t -
1, self.r2)
6681 if (x.t
> self.m.t +
1) {
6685 self.mu.multiplyUpperTo(self.r2, self.m.t +
1, self.q3)
6686 self.m.multiplyLowerTo(self.q3, self.m.t +
1, self.r2)
6687 while (x.compareTo(self.r2) <
0) x.dAddOffset(
1, self.m.t +
1)
6689 while (x.compareTo(self.m)
>=
0) x.subTo(self.m, x)
6692 // r = x^
2 mod m; x != r
6693 function barrettSqrTo(x, r) {
6698 // r = x*y mod m; x,y != r
6699 function barrettMulTo(x, y, r) {
6704 Barrett.prototype.convert = barrettConvert
6705 Barrett.prototype.revert = barrettRevert
6706 Barrett.prototype.reduce = barrettReduce
6707 Barrett.prototype.mulTo = barrettMulTo
6708 Barrett.prototype.sqrTo = barrettSqrTo
6710 // (public) this^e % m (HAC
14.85)
6711 function bnModPow(e, m) {
6712 var i = e.bitLength(),
6715 if (i <=
0) return r
6716 else if (i <
18) k =
1
6717 else if (i <
48) k =
3
6718 else if (i <
144) k =
4
6719 else if (i <
768) k =
5
6723 else if (m.isEven())
6726 z = new Montgomery(m)
6729 var g = new Array(),
6733 g[
1] = z.convert(this)
6735 var g2 = new BigInteger()
6738 g[n] = new BigInteger()
6739 z.mulTo(g2, g[n -
2], g[n])
6746 r2 = new BigInteger(),
6750 if (i
>= k1) w = (e[j]
>> (i - k1)) & km
6752 w = (e[j] & ((
1 << (i +
1)) -
1)) << (k1 - i)
6753 if (j
> 0) w |= e[j -
1]
>> (this.DB + i - k1)
6757 while ((w &
1) ==
0) {
6765 if (is1) { // ret ==
1, don't bother squaring or multiplying it
6774 if (n
> 0) z.sqrTo(r, r2)
6780 z.mulTo(r2, g[w], r)
6783 while (j
>=
0 && (e[j] & (
1 << i)) ==
0) {
6797 // (public) gcd(this,a) (HAC
14.54)
6799 var x = (this.s <
0) ? this.negate() : this.clone()
6800 var y = (a.s <
0) ? a.negate() : a.clone()
6801 if (x.compareTo(y) <
0) {
6806 var i = x.getLowestSetBit(),
6807 g = y.getLowestSetBit()
6814 while (x.signum()
> 0) {
6815 if ((i = x.getLowestSetBit())
> 0) x.rShiftTo(i, x)
6816 if ((i = y.getLowestSetBit())
> 0) y.rShiftTo(i, y)
6817 if (x.compareTo(y)
>=
0) {
6825 if (g
> 0) y.lShiftTo(g, y)
6829 // (protected) this % n, n <
2^
26
6830 function bnpModInt(n) {
6831 if (n <=
0) return
0
6832 var d = this.DV % n,
6833 r = (this.s <
0) ? n -
1 :
0
6835 if (d ==
0) r = this[
0] % n
6837 for (var i = this.t -
1; i
>=
0; --i) r = (d * r + this[i]) % n
6841 // (public)
1/this % m (HAC
14.61)
6842 function bnModInverse(m) {
6844 if ((this.isEven() && ac) || m.signum() ==
0) return BigInteger.ZERO
6851 while (u.signum() !=
0) {
6852 while (u.isEven()) {
6855 if (!a.isEven() || !b.isEven()) {
6860 } else if (!b.isEven()) b.subTo(m, b)
6863 while (v.isEven()) {
6866 if (!c.isEven() || !d.isEven()) {
6871 } else if (!d.isEven()) d.subTo(m, d)
6874 if (u.compareTo(v)
>=
0) {
6876 if (ac) a.subTo(c, a)
6880 if (ac) c.subTo(a, c)
6884 if (v.compareTo(BigInteger.ONE) !=
0) return BigInteger.ZERO
6885 if (d.compareTo(m)
>=
0) return d.subtract(m)
6886 if (d.signum() <
0) d.addTo(m, d)
6888 if (d.signum() <
0) return d.add(m)
6893 2,
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
6894 73,
79,
83,
89,
97,
101,
103,
107,
109,
113,
127,
131,
137,
139,
149,
151,
6895 157,
163,
167,
173,
179,
181,
191,
193,
197,
199,
211,
223,
227,
229,
233,
6896 239,
241,
251,
257,
263,
269,
271,
277,
281,
283,
293,
307,
311,
313,
317,
6897 331,
337,
347,
349,
353,
359,
367,
373,
379,
383,
389,
397,
401,
409,
419,
6898 421,
431,
433,
439,
443,
449,
457,
461,
463,
467,
479,
487,
491,
499,
503,
6899 509,
521,
523,
541,
547,
557,
563,
569,
571,
577,
587,
593,
599,
601,
607,
6900 613,
617,
619,
631,
641,
643,
647,
653,
659,
661,
673,
677,
683,
691,
701,
6901 709,
719,
727,
733,
739,
743,
751,
757,
761,
769,
773,
787,
797,
809,
811,
6902 821,
823,
827,
829,
839,
853,
857,
859,
863,
877,
881,
883,
887,
907,
911,
6903 919,
929,
937,
941,
947,
953,
967,
971,
977,
983,
991,
997
6906 var lplim = (
1 <<
26) / lowprimes[lowprimes.length -
1]
6908 // (public) test primality with certainty
>=
1-
.5^t
6909 function bnIsProbablePrime(t) {
6910 var i, x = this.abs()
6911 if (x.t ==
1 && x[
0] <= lowprimes[lowprimes.length -
1]) {
6912 for (i =
0; i < lowprimes.length; ++i)
6913 if (x[
0] == lowprimes[i]) return true
6916 if (x.isEven()) return false
6918 while (i < lowprimes.length) {
6919 var m = lowprimes[i],
6921 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
6923 while (i < j) if (m % lowprimes[i++] ==
0) return false
6925 return x.millerRabin(t)
6928 // (protected) true if probably prime (HAC
4.24, Miller-Rabin)
6929 function bnpMillerRabin(t) {
6930 var n1 = this.subtract(BigInteger.ONE)
6931 var k = n1.getLowestSetBit()
6932 if (k <=
0) return false
6933 var r = n1.shiftRight(k)
6935 if (t
> lowprimes.length) t = lowprimes.length
6936 var a = new BigInteger(null)
6938 for (var i =
0; i < t; ++i) {
6940 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
6941 if (bases.indexOf(j) == -
1) break
6945 var y = a.modPow(r, this)
6946 if (y.compareTo(BigInteger.ONE) !=
0 && y.compareTo(n1) !=
0) {
6948 while (j++ < k && y.compareTo(n1) !=
0) {
6949 y = y.modPowInt(
2, this)
6950 if (y.compareTo(BigInteger.ONE) ==
0) return false
6952 if (y.compareTo(n1) !=
0) return false
6959 proto.chunkSize = bnpChunkSize
6960 proto.toRadix = bnpToRadix
6961 proto.fromRadix = bnpFromRadix
6962 proto.fromNumber = bnpFromNumber
6963 proto.bitwiseTo = bnpBitwiseTo
6964 proto.changeBit = bnpChangeBit
6965 proto.addTo = bnpAddTo
6966 proto.dMultiply = bnpDMultiply
6967 proto.dAddOffset = bnpDAddOffset
6968 proto.multiplyLowerTo = bnpMultiplyLowerTo
6969 proto.multiplyUpperTo = bnpMultiplyUpperTo
6970 proto.modInt = bnpModInt
6971 proto.millerRabin = bnpMillerRabin
6974 proto.clone = bnClone
6975 proto.intValue = bnIntValue
6976 proto.byteValue = bnByteValue
6977 proto.shortValue = bnShortValue
6978 proto.signum = bnSigNum
6979 proto.toByteArray = bnToByteArray
6980 proto.equals = bnEquals
6986 proto.andNot = bnAndNot
6988 proto.shiftLeft = bnShiftLeft
6989 proto.shiftRight = bnShiftRight
6990 proto.getLowestSetBit = bnGetLowestSetBit
6991 proto.bitCount = bnBitCount
6992 proto.testBit = bnTestBit
6993 proto.setBit = bnSetBit
6994 proto.clearBit = bnClearBit
6995 proto.flipBit = bnFlipBit
6997 proto.subtract = bnSubtract
6998 proto.multiply = bnMultiply
6999 proto.divide = bnDivide
7000 proto.remainder = bnRemainder
7001 proto.divideAndRemainder = bnDivideAndRemainder
7002 proto.modPow = bnModPow
7003 proto.modInverse = bnModInverse
7006 proto.isProbablePrime = bnIsProbablePrime
7008 // JSBN-specific extension
7009 proto.square = bnSquare
7012 BigInteger.ZERO = nbv(
0)
7013 BigInteger.ONE = nbv(
1)
7014 BigInteger.valueOf = nbv
7016 module.exports = BigInteger
7018 },{"../package.json":
4}],
2:[function(require,module,exports){
7020 // FIXME: Kind of a weird way to throw exceptions, consider removing
7021 var assert = require('assert')
7022 var BigInteger = require('./bigi')
7025 * Turns a byte array into a big integer.
7027 * This function will interpret a byte array as a big integer in big
7030 BigInteger.fromByteArrayUnsigned = function(byteArray) {
7031 // BigInteger expects a DER integer conformant byte array
7032 if (byteArray[
0] &
0x80) {
7033 return new BigInteger([
0].concat(byteArray))
7036 return new BigInteger(byteArray)
7040 * Returns a byte array representation of the big integer.
7042 * This returns the absolute of the contained value in big endian
7043 * form. A value of zero results in an empty array.
7045 BigInteger.prototype.toByteArrayUnsigned = function() {
7046 var byteArray = this.toByteArray()
7047 return byteArray[
0] ===
0 ? byteArray.slice(
1) : byteArray
7050 BigInteger.fromDERInteger = function(byteArray) {
7051 return new BigInteger(byteArray)
7055 * Converts BigInteger to a DER integer representation.
7057 * The format for this value uses the most significant bit as a sign
7058 * bit. If the most significant bit is already set and the integer is
7059 * positive, a
0x00 is prepended.
7075 * -
62300 =
> 0xff0ca4
7077 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
7079 BigInteger.fromBuffer = function(buffer) {
7080 // BigInteger expects a DER integer conformant byte array
7081 if (buffer[
0] &
0x80) {
7082 var byteArray = Array.prototype.slice.call(buffer)
7084 return new BigInteger([
0].concat(byteArray))
7087 return new BigInteger(buffer)
7090 BigInteger.fromHex = function(hex) {
7091 if (hex === '') return BigInteger.ZERO
7093 assert.equal(hex, hex.match(/^[A-Fa-f0-
9]+/), 'Invalid hex string')
7094 assert.equal(hex.length %
2,
0, 'Incomplete hex')
7095 return new BigInteger(hex,
16)
7098 BigInteger.prototype.toBuffer = function(size) {
7099 var byteArray = this.toByteArrayUnsigned()
7102 var padding = size - byteArray.length
7103 while (zeros.length < padding) zeros.push(
0)
7105 return new Buffer(zeros.concat(byteArray))
7108 BigInteger.prototype.toHex = function(size) {
7109 return this.toBuffer(size).toString('hex')
7112 }).call(this,require(
"buffer").Buffer)
7113 },{
"./bigi":
1,
"assert":
5,
"buffer":
7}],
3:[function(require,module,exports){
7114 var BigInteger = require('./bigi')
7117 require('./convert')
7119 module.exports = BigInteger
7120 },{
"./bigi":
1,
"./convert":
2}],
4:[function(require,module,exports){
7124 "description":
"Big integers.",
7142 "devDependencies": {
7145 "coveralls":
"^2.10.0",
7146 "istanbul":
"^0.2.11"
7149 "url":
"https://github.com/cryptocoinjs/bigi",
7152 "main":
"./lib/index.js",
7154 "test":
"_mocha -- test/*.js",
7155 "jshint":
"jshint --config jshint.json lib/*.js ; true",
7157 "coverage":
"istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
7158 "coveralls":
"npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
7162 "files":
"test/*.js",
7168 "safari/6.0..latest",
7169 "iphone/6.0..latest",
7170 "android-browser/4.2..latest"
7174 "url":
"https://github.com/cryptocoinjs/bigi/issues"
7176 "homepage":
"https://github.com/cryptocoinjs/bigi",
7177 "_id":
"bigi@1.4.0",
7179 "shasum":
"90ac1aeac0a531216463bdb58f42c1e05c8407ac",
7180 "tarball":
"http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
7182 "_from":
"bigi@^1.4.0",
7183 "_npmVersion":
"1.4.3",
7186 "email":
"jprichardson@gmail.com"
7191 "email":
"jprichardson@gmail.com"
7194 "name":
"midnightlightning",
7195 "email":
"boydb@midnightdesign.ws"
7198 "name":
"sidazhang",
7199 "email":
"sidazhang89@gmail.com"
7203 "email":
"npm@shesek.info"
7207 "_shasum":
"90ac1aeac0a531216463bdb58f42c1e05c8407ac",
7208 "_resolved":
"https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
7211 },{}],
5:[function(require,module,exports){
7212 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
7214 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7216 // Originally from narwhal.js (http://narwhaljs.org)
7217 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
7219 // Permission is hereby granted, free of charge, to any person obtaining a copy
7220 // of this software and associated documentation files (the 'Software'), to
7221 // deal in the Software without restriction, including without limitation the
7222 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7223 // sell copies of the Software, and to permit persons to whom the Software is
7224 // furnished to do so, subject to the following conditions:
7226 // The above copyright notice and this permission notice shall be included in
7227 // all copies or substantial portions of the Software.
7229 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7230 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7231 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7232 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7233 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7234 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7236 // when used in node, this will actually load the util module we depend on
7237 // versus loading the builtin util module as happens otherwise
7238 // this is a bug in node module loading as far as I am concerned
7239 var util = require('util/');
7241 var pSlice = Array.prototype.slice;
7242 var hasOwn = Object.prototype.hasOwnProperty;
7244 //
1. The assert module provides functions that throw
7245 // AssertionError's when particular conditions are not met. The
7246 // assert module must conform to the following interface.
7248 var assert = module.exports = ok;
7250 //
2. The AssertionError is defined in assert.
7251 // new assert.AssertionError({ message: message,
7253 // expected: expected })
7255 assert.AssertionError = function AssertionError(options) {
7256 this.name = 'AssertionError';
7257 this.actual = options.actual;
7258 this.expected = options.expected;
7259 this.operator = options.operator;
7260 if (options.message) {
7261 this.message = options.message;
7262 this.generatedMessage = false;
7264 this.message = getMessage(this);
7265 this.generatedMessage = true;
7267 var stackStartFunction = options.stackStartFunction || fail;
7269 if (Error.captureStackTrace) {
7270 Error.captureStackTrace(this, stackStartFunction);
7273 // non v8 browsers so we can have a stacktrace
7274 var err = new Error();
7276 var out = err.stack;
7278 // try to strip useless frames
7279 var fn_name = stackStartFunction.name;
7280 var idx = out.indexOf('\n' + fn_name);
7282 // once we have located the function frame
7283 // we need to strip out everything before it (and its line)
7284 var next_line = out.indexOf('\n', idx +
1);
7285 out = out.substring(next_line +
1);
7293 // assert.AssertionError instanceof Error
7294 util.inherits(assert.AssertionError, Error);
7296 function replacer(key, value) {
7297 if (util.isUndefined(value)) {
7300 if (util.isNumber(value) && !isFinite(value)) {
7301 return value.toString();
7303 if (util.isFunction(value) || util.isRegExp(value)) {
7304 return value.toString();
7309 function truncate(s, n) {
7310 if (util.isString(s)) {
7311 return s.length < n ? s : s.slice(
0, n);
7317 function getMessage(self) {
7318 return truncate(JSON.stringify(self.actual, replacer),
128) + ' ' +
7319 self.operator + ' ' +
7320 truncate(JSON.stringify(self.expected, replacer),
128);
7323 // At present only the three keys mentioned above are used and
7324 // understood by the spec. Implementations or sub modules can pass
7325 // other keys to the AssertionError's constructor - they will be
7328 //
3. All of the following functions must throw an AssertionError
7329 // when a corresponding condition is not met, with a message that
7330 // may be undefined if not provided. All assertion methods provide
7331 // both the actual and expected values to the assertion error for
7332 // display purposes.
7334 function fail(actual, expected, message, operator, stackStartFunction) {
7335 throw new assert.AssertionError({
7340 stackStartFunction: stackStartFunction
7344 // EXTENSION! allows for well behaved errors defined elsewhere.
7347 //
4. Pure assertion tests whether a value is truthy, as determined
7349 // assert.ok(guard, message_opt);
7350 // This statement is equivalent to assert.equal(true, !!guard,
7351 // message_opt);. To test strictly for the value true, use
7352 // assert.strictEqual(true, guard, message_opt);.
7354 function ok(value, message) {
7355 if (!value) fail(value, true, message, '==', assert.ok);
7359 //
5. The equality assertion tests shallow, coercive equality with
7361 // assert.equal(actual, expected, message_opt);
7363 assert.equal = function equal(actual, expected, message) {
7364 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7367 //
6. The non-equality assertion tests for whether two objects are not equal
7368 // with != assert.notEqual(actual, expected, message_opt);
7370 assert.notEqual = function notEqual(actual, expected, message) {
7371 if (actual == expected) {
7372 fail(actual, expected, message, '!=', assert.notEqual);
7376 //
7. The equivalence assertion tests a deep equality relation.
7377 // assert.deepEqual(actual, expected, message_opt);
7379 assert.deepEqual = function deepEqual(actual, expected, message) {
7380 if (!_deepEqual(actual, expected)) {
7381 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7385 function _deepEqual(actual, expected) {
7386 //
7.1. All identical values are equivalent, as determined by ===.
7387 if (actual === expected) {
7390 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
7391 if (actual.length != expected.length) return false;
7393 for (var i =
0; i < actual.length; i++) {
7394 if (actual[i] !== expected[i]) return false;
7399 //
7.2. If the expected value is a Date object, the actual value is
7400 // equivalent if it is also a Date object that refers to the same time.
7401 } else if (util.isDate(actual) && util.isDate(expected)) {
7402 return actual.getTime() === expected.getTime();
7404 //
7.3 If the expected value is a RegExp object, the actual value is
7405 // equivalent if it is also a RegExp object with the same source and
7406 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7407 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7408 return actual.source === expected.source &&
7409 actual.global === expected.global &&
7410 actual.multiline === expected.multiline &&
7411 actual.lastIndex === expected.lastIndex &&
7412 actual.ignoreCase === expected.ignoreCase;
7414 //
7.4. Other pairs that do not both pass typeof value == 'object',
7415 // equivalence is determined by ==.
7416 } else if (!util.isObject(actual) && !util.isObject(expected)) {
7417 return actual == expected;
7419 //
7.5 For all other Object pairs, including Array objects, equivalence is
7420 // determined by having the same number of owned properties (as verified
7421 // with Object.prototype.hasOwnProperty.call), the same set of keys
7422 // (although not necessarily the same order), equivalent values for every
7423 // corresponding key, and an identical 'prototype' property. Note: this
7424 // accounts for both named and indexed properties on Arrays.
7426 return objEquiv(actual, expected);
7430 function isArguments(object) {
7431 return Object.prototype.toString.call(object) == '[object Arguments]';
7434 function objEquiv(a, b) {
7435 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
7437 // an identical 'prototype' property.
7438 if (a.prototype !== b.prototype) return false;
7439 // if one is a primitive, the other must be same
7440 if (util.isPrimitive(a) || util.isPrimitive(b)) {
7443 var aIsArgs = isArguments(a),
7444 bIsArgs = isArguments(b);
7445 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7450 return _deepEqual(a, b);
7452 var ka = objectKeys(a),
7455 // having the same number of owned properties (keys incorporates
7457 if (ka.length != kb.length)
7459 //the same set of keys (although not necessarily the same order),
7463 for (i = ka.length -
1; i
>=
0; i--) {
7467 //equivalent values for every corresponding key, and
7468 //~~~possibly expensive deep test
7469 for (i = ka.length -
1; i
>=
0; i--) {
7471 if (!_deepEqual(a[key], b[key])) return false;
7476 //
8. The non-equivalence assertion tests for any deep inequality.
7477 // assert.notDeepEqual(actual, expected, message_opt);
7479 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7480 if (_deepEqual(actual, expected)) {
7481 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7485 //
9. The strict equality assertion tests strict equality, as determined by ===.
7486 // assert.strictEqual(actual, expected, message_opt);
7488 assert.strictEqual = function strictEqual(actual, expected, message) {
7489 if (actual !== expected) {
7490 fail(actual, expected, message, '===', assert.strictEqual);
7494 //
10. The strict non-equality assertion tests for strict inequality, as
7495 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7497 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7498 if (actual === expected) {
7499 fail(actual, expected, message, '!==', assert.notStrictEqual);
7503 function expectedException(actual, expected) {
7504 if (!actual || !expected) {
7508 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7509 return expected.test(actual);
7510 } else if (actual instanceof expected) {
7512 } else if (expected.call({}, actual) === true) {
7519 function _throws(shouldThrow, block, expected, message) {
7522 if (util.isString(expected)) {
7533 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7534 (message ? ' ' + message : '.');
7536 if (shouldThrow && !actual) {
7537 fail(actual, expected, 'Missing expected exception' + message);
7540 if (!shouldThrow && expectedException(actual, expected)) {
7541 fail(actual, expected, 'Got unwanted exception' + message);
7544 if ((shouldThrow && actual && expected &&
7545 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7550 //
11. Expected to throw an error:
7551 // assert.throws(block, Error_opt, message_opt);
7553 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7554 _throws.apply(this, [true].concat(pSlice.call(arguments)));
7557 // EXTENSION! This is annoying to write outside this module.
7558 assert.doesNotThrow = function(block, /*optional*/message) {
7559 _throws.apply(this, [false].concat(pSlice.call(arguments)));
7562 assert.ifError = function(err) { if (err) {throw err;}};
7564 var objectKeys = Object.keys || function (obj) {
7566 for (var key in obj) {
7567 if (hasOwn.call(obj, key)) keys.push(key);
7572 },{"util/":
29}],
6:[function(require,module,exports){
7574 },{}],
7:[function(require,module,exports){
7576 * The buffer module from node.js, for the browser.
7578 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
7582 var base64 = require('base64-js')
7583 var ieee754 = require('ieee754')
7584 var isArray = require('is-array')
7586 exports.Buffer = Buffer
7587 exports.SlowBuffer = SlowBuffer
7588 exports.INSPECT_MAX_BYTES =
50
7589 Buffer.poolSize =
8192 // not used by this implementation
7594 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7595 * === true Use Uint8Array implementation (fastest)
7596 * === false Use Object implementation (most compatible, even IE6)
7598 * Browsers that support typed arrays are IE
10+, Firefox
4+, Chrome
7+, Safari
5.1+,
7599 * Opera
11.6+, iOS
4.2+.
7601 * Due to various browser bugs, sometimes the Object implementation will be used even
7602 * when the browser supports typed arrays.
7606 * - Firefox
4-
29 lacks support for adding new properties to `Uint8Array` instances,
7607 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438.
7609 * - Safari
5-
7 lacks support for changing the `Object.prototype.constructor` property
7612 * - Chrome
9-
10 is missing the `TypedArray.prototype.subarray` function.
7614 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
7615 * incorrect length in some situations.
7617 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
7618 * get the Object implementation, which is slower but behaves correctly.
7620 Buffer.TYPED_ARRAY_SUPPORT = (function () {
7623 var arr = new Uint8Array(
1)
7624 arr.foo = function () { return
42 }
7625 arr.constructor = Bar
7626 return arr.foo() ===
42 && // typed array instances can be augmented
7627 arr.constructor === Bar && // constructor can be set
7628 typeof arr.subarray === 'function' && // chrome
9-
10 lack `subarray`
7629 arr.subarray(
1,
1).byteLength ===
0 // ie10 has broken `subarray`
7635 function kMaxLength () {
7636 return Buffer.TYPED_ARRAY_SUPPORT
7645 * The Buffer constructor returns instances of `Uint8Array` that are augmented
7646 * with function properties for all the node `Buffer` API functions. We use
7647 * `Uint8Array` so that square bracket notation works as expected -- it returns
7650 * By augmenting the instances, we can avoid modifying the `Uint8Array`
7653 function Buffer (arg) {
7654 if (!(this instanceof Buffer)) {
7655 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
7656 if (arguments.length
> 1) return new Buffer(arg, arguments[
1])
7657 return new Buffer(arg)
7661 this.parent = undefined
7664 if (typeof arg === 'number') {
7665 return fromNumber(this, arg)
7668 // Slightly less common case.
7669 if (typeof arg === 'string') {
7670 return fromString(this, arg, arguments.length
> 1 ? arguments[
1] : 'utf8')
7674 return fromObject(this, arg)
7677 function fromNumber (that, length) {
7678 that = allocate(that, length <
0 ?
0 : checked(length) |
0)
7679 if (!Buffer.TYPED_ARRAY_SUPPORT) {
7680 for (var i =
0; i < length; i++) {
7687 function fromString (that, string, encoding) {
7688 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
7690 // Assumption: byteLength() return value is always < kMaxLength.
7691 var length = byteLength(string, encoding) |
0
7692 that = allocate(that, length)
7694 that.write(string, encoding)
7698 function fromObject (that, object) {
7699 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
7701 if (isArray(object)) return fromArray(that, object)
7703 if (object == null) {
7704 throw new TypeError('must start with number, buffer, array or string')
7707 if (typeof ArrayBuffer !== 'undefined') {
7708 if (object.buffer instanceof ArrayBuffer) {
7709 return fromTypedArray(that, object)
7711 if (object instanceof ArrayBuffer) {
7712 return fromArrayBuffer(that, object)
7716 if (object.length) return fromArrayLike(that, object)
7718 return fromJsonObject(that, object)
7721 function fromBuffer (that, buffer) {
7722 var length = checked(buffer.length) |
0
7723 that = allocate(that, length)
7724 buffer.copy(that,
0,
0, length)
7728 function fromArray (that, array) {
7729 var length = checked(array.length) |
0
7730 that = allocate(that, length)
7731 for (var i =
0; i < length; i +=
1) {
7732 that[i] = array[i] &
255
7737 // Duplicate of fromArray() to keep fromArray() monomorphic.
7738 function fromTypedArray (that, array) {
7739 var length = checked(array.length) |
0
7740 that = allocate(that, length)
7741 // Truncating the elements is probably not what people expect from typed
7742 // arrays with BYTES_PER_ELEMENT
> 1 but it's compatible with the behavior
7743 // of the old Buffer constructor.
7744 for (var i =
0; i < length; i +=
1) {
7745 that[i] = array[i] &
255
7750 function fromArrayBuffer (that, array) {
7751 if (Buffer.TYPED_ARRAY_SUPPORT) {
7752 // Return an augmented `Uint8Array` instance, for best performance
7754 that = Buffer._augment(new Uint8Array(array))
7756 // Fallback: Return an object instance of the Buffer class
7757 that = fromTypedArray(that, new Uint8Array(array))
7762 function fromArrayLike (that, array) {
7763 var length = checked(array.length) |
0
7764 that = allocate(that, length)
7765 for (var i =
0; i < length; i +=
1) {
7766 that[i] = array[i] &
255
7771 // Deserialize { type: 'Buffer', data: [
1,
2,
3,...] } into a Buffer object.
7772 // Returns a zero-length buffer for inputs that don't conform to the spec.
7773 function fromJsonObject (that, object) {
7777 if (object.type === 'Buffer' && isArray(object.data)) {
7779 length = checked(array.length) |
0
7781 that = allocate(that, length)
7783 for (var i =
0; i < length; i +=
1) {
7784 that[i] = array[i] &
255
7789 function allocate (that, length) {
7790 if (Buffer.TYPED_ARRAY_SUPPORT) {
7791 // Return an augmented `Uint8Array` instance, for best performance
7792 that = Buffer._augment(new Uint8Array(length))
7794 // Fallback: Return an object instance of the Buffer class
7795 that.length = length
7796 that._isBuffer = true
7799 var fromPool = length !==
0 && length <= Buffer.poolSize
>>> 1
7800 if (fromPool) that.parent = rootParent
7805 function checked (length) {
7806 // Note: cannot use `length < kMaxLength` here because that fails when
7807 // length is NaN (which is otherwise coerced to zero.)
7808 if (length
>= kMaxLength()) {
7809 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
7810 'size:
0x' + kMaxLength().toString(
16) + ' bytes')
7815 function SlowBuffer (subject, encoding) {
7816 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
7818 var buf = new Buffer(subject, encoding)
7823 Buffer.isBuffer = function isBuffer (b) {
7824 return !!(b != null && b._isBuffer)
7827 Buffer.compare = function compare (a, b) {
7828 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
7829 throw new TypeError('Arguments must be Buffers')
7832 if (a === b) return
0
7838 var len = Math.min(x, y)
7840 if (a[i] !== b[i]) break
7850 if (x < y) return -
1
7855 Buffer.isEncoding = function isEncoding (encoding) {
7856 switch (String(encoding).toLowerCase()) {
7874 Buffer.concat = function concat (list, length) {
7875 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
7877 if (list.length ===
0) {
7878 return new Buffer(
0)
7882 if (length === undefined) {
7884 for (i =
0; i < list.length; i++) {
7885 length += list[i].length
7889 var buf = new Buffer(length)
7891 for (i =
0; i < list.length; i++) {
7899 function byteLength (string, encoding) {
7900 if (typeof string !== 'string') string = '' + string
7902 var len = string.length
7903 if (len ===
0) return
0
7905 // Use a for loop to avoid recursion
7906 var loweredCase = false
7917 return utf8ToBytes(string).length
7926 return base64ToBytes(string).length
7928 if (loweredCase) return utf8ToBytes(string).length // assume utf8
7929 encoding = ('' + encoding).toLowerCase()
7934 Buffer.byteLength = byteLength
7936 // pre-set for values that may exist in the future
7937 Buffer.prototype.length = undefined
7938 Buffer.prototype.parent = undefined
7940 function slowToString (encoding, start, end) {
7941 var loweredCase = false
7944 end = end === undefined || end === Infinity ? this.length : end |
0
7946 if (!encoding) encoding = 'utf8'
7947 if (start <
0) start =
0
7948 if (end
> this.length) end = this.length
7949 if (end <= start) return ''
7954 return hexSlice(this, start, end)
7958 return utf8Slice(this, start, end)
7961 return asciiSlice(this, start, end)
7964 return binarySlice(this, start, end)
7967 return base64Slice(this, start, end)
7973 return utf16leSlice(this, start, end)
7976 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
7977 encoding = (encoding + '').toLowerCase()
7983 Buffer.prototype.toString = function toString () {
7984 var length = this.length |
0
7985 if (length ===
0) return ''
7986 if (arguments.length ===
0) return utf8Slice(this,
0, length)
7987 return slowToString.apply(this, arguments)
7990 Buffer.prototype.equals = function equals (b) {
7991 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
7992 if (this === b) return true
7993 return Buffer.compare(this, b) ===
0
7996 Buffer.prototype.inspect = function inspect () {
7998 var max = exports.INSPECT_MAX_BYTES
7999 if (this.length
> 0) {
8000 str = this.toString('hex',
0, max).match(/.{
2}/g).join(' ')
8001 if (this.length
> max) str += ' ... '
8003 return '
<Buffer ' + str + '
>'
8006 Buffer.prototype.compare = function compare (b) {
8007 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8008 if (this === b) return
0
8009 return Buffer.compare(this, b)
8012 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
8013 if (byteOffset
> 0x7fffffff) byteOffset =
0x7fffffff
8014 else if (byteOffset < -
0x80000000) byteOffset = -
0x80000000
8017 if (this.length ===
0) return -
1
8018 if (byteOffset
>= this.length) return -
1
8020 // Negative offsets start from the end of the buffer
8021 if (byteOffset <
0) byteOffset = Math.max(this.length + byteOffset,
0)
8023 if (typeof val === 'string') {
8024 if (val.length ===
0) return -
1 // special case: looking for empty string always fails
8025 return String.prototype.indexOf.call(this, val, byteOffset)
8027 if (Buffer.isBuffer(val)) {
8028 return arrayIndexOf(this, val, byteOffset)
8030 if (typeof val === 'number') {
8031 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
8032 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
8034 return arrayIndexOf(this, [ val ], byteOffset)
8037 function arrayIndexOf (arr, val, byteOffset) {
8039 for (var i =
0; byteOffset + i < arr.length; i++) {
8040 if (arr[byteOffset + i] === val[foundIndex === -
1 ?
0 : i - foundIndex]) {
8041 if (foundIndex === -
1) foundIndex = i
8042 if (i - foundIndex +
1 === val.length) return byteOffset + foundIndex
8050 throw new TypeError('val must be string, number or Buffer')
8053 // `get` is deprecated
8054 Buffer.prototype.get = function get (offset) {
8055 console.log('.get() is deprecated. Access using array indexes instead.')
8056 return this.readUInt8(offset)
8059 // `set` is deprecated
8060 Buffer.prototype.set = function set (v, offset) {
8061 console.log('.set() is deprecated. Access using array indexes instead.')
8062 return this.writeUInt8(v, offset)
8065 function hexWrite (buf, string, offset, length) {
8066 offset = Number(offset) ||
0
8067 var remaining = buf.length - offset
8071 length = Number(length)
8072 if (length
> remaining) {
8077 // must be an even number of digits
8078 var strLen = string.length
8079 if (strLen %
2 !==
0) throw new Error('Invalid hex string')
8081 if (length
> strLen /
2) {
8084 for (var i =
0; i < length; i++) {
8085 var parsed = parseInt(string.substr(i *
2,
2),
16)
8086 if (isNaN(parsed)) throw new Error('Invalid hex string')
8087 buf[offset + i] = parsed
8092 function utf8Write (buf, string, offset, length) {
8093 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8096 function asciiWrite (buf, string, offset, length) {
8097 return blitBuffer(asciiToBytes(string), buf, offset, length)
8100 function binaryWrite (buf, string, offset, length) {
8101 return asciiWrite(buf, string, offset, length)
8104 function base64Write (buf, string, offset, length) {
8105 return blitBuffer(base64ToBytes(string), buf, offset, length)
8108 function ucs2Write (buf, string, offset, length) {
8109 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8112 Buffer.prototype.write = function write (string, offset, length, encoding) {
8113 // Buffer#write(string)
8114 if (offset === undefined) {
8116 length = this.length
8118 // Buffer#write(string, encoding)
8119 } else if (length === undefined && typeof offset === 'string') {
8121 length = this.length
8123 // Buffer#write(string, offset[, length][, encoding])
8124 } else if (isFinite(offset)) {
8126 if (isFinite(length)) {
8128 if (encoding === undefined) encoding = 'utf8'
8133 // legacy write(string, encoding, offset, length) - remove in v0.13
8141 var remaining = this.length - offset
8142 if (length === undefined || length
> remaining) length = remaining
8144 if ((string.length
> 0 && (length <
0 || offset <
0)) || offset
> this.length) {
8145 throw new RangeError('attempt to write outside buffer bounds')
8148 if (!encoding) encoding = 'utf8'
8150 var loweredCase = false
8154 return hexWrite(this, string, offset, length)
8158 return utf8Write(this, string, offset, length)
8161 return asciiWrite(this, string, offset, length)
8164 return binaryWrite(this, string, offset, length)
8167 // Warning: maxLength not taken into account in base64Write
8168 return base64Write(this, string, offset, length)
8174 return ucs2Write(this, string, offset, length)
8177 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8178 encoding = ('' + encoding).toLowerCase()
8184 Buffer.prototype.toJSON = function toJSON () {
8187 data: Array.prototype.slice.call(this._arr || this,
0)
8191 function base64Slice (buf, start, end) {
8192 if (start ===
0 && end === buf.length) {
8193 return base64.fromByteArray(buf)
8195 return base64.fromByteArray(buf.slice(start, end))
8199 function utf8Slice (buf, start, end) {
8200 end = Math.min(buf.length, end)
8205 var bytesPerSequence
8211 for (; i < end; i += bytesPerSequence) {
8215 if (firstByte
> 0xEF) {
8216 bytesPerSequence =
4
8217 } else if (firstByte
> 0xDF) {
8218 bytesPerSequence =
3
8219 } else if (firstByte
> 0xBF) {
8220 bytesPerSequence =
2
8222 bytesPerSequence =
1
8225 if (i + bytesPerSequence <= end) {
8226 switch (bytesPerSequence) {
8228 if (firstByte <
0x80) {
8229 codePoint = firstByte
8233 secondByte = buf[i +
1]
8234 if ((secondByte &
0xC0) ===
0x80) {
8235 tempCodePoint = (firstByte &
0x1F) <<
0x6 | (secondByte &
0x3F)
8236 if (tempCodePoint
> 0x7F) {
8237 codePoint = tempCodePoint
8242 secondByte = buf[i +
1]
8243 thirdByte = buf[i +
2]
8244 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80) {
8245 tempCodePoint = (firstByte &
0xF) <<
0xC | (secondByte &
0x3F) <<
0x6 | (thirdByte &
0x3F)
8246 if (tempCodePoint
> 0x7FF && (tempCodePoint <
0xD800 || tempCodePoint
> 0xDFFF)) {
8247 codePoint = tempCodePoint
8252 secondByte = buf[i +
1]
8253 thirdByte = buf[i +
2]
8254 fourthByte = buf[i +
3]
8255 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80 && (fourthByte &
0xC0) ===
0x80) {
8256 tempCodePoint = (firstByte &
0xF) <<
0x12 | (secondByte &
0x3F) <<
0xC | (thirdByte &
0x3F) <<
0x6 | (fourthByte &
0x3F)
8257 if (tempCodePoint
> 0xFFFF && tempCodePoint <
0x110000) {
8258 codePoint = tempCodePoint
8264 if (codePoint ===
0xFFFD) {
8265 // we generated an invalid codePoint so make sure to only advance by
1 byte
8266 bytesPerSequence =
1
8267 } else if (codePoint
> 0xFFFF) {
8268 // encode to utf16 (surrogate pair dance)
8269 codePoint -=
0x10000
8270 res.push(codePoint
>>> 10 &
0x3FF |
0xD800)
8271 codePoint =
0xDC00 | codePoint &
0x3FF
8277 return String.fromCharCode.apply(String, res)
8280 function asciiSlice (buf, start, end) {
8282 end = Math.min(buf.length, end)
8284 for (var i = start; i < end; i++) {
8285 ret += String.fromCharCode(buf[i] &
0x7F)
8290 function binarySlice (buf, start, end) {
8292 end = Math.min(buf.length, end)
8294 for (var i = start; i < end; i++) {
8295 ret += String.fromCharCode(buf[i])
8300 function hexSlice (buf, start, end) {
8301 var len = buf.length
8303 if (!start || start <
0) start =
0
8304 if (!end || end <
0 || end
> len) end = len
8307 for (var i = start; i < end; i++) {
8308 out += toHex(buf[i])
8313 function utf16leSlice (buf, start, end) {
8314 var bytes = buf.slice(start, end)
8316 for (var i =
0; i < bytes.length; i +=
2) {
8317 res += String.fromCharCode(bytes[i] + bytes[i +
1] *
256)
8322 Buffer.prototype.slice = function slice (start, end) {
8323 var len = this.length
8325 end = end === undefined ? len : ~~end
8329 if (start <
0) start =
0
8330 } else if (start
> len) {
8336 if (end <
0) end =
0
8337 } else if (end
> len) {
8341 if (end < start) end = start
8344 if (Buffer.TYPED_ARRAY_SUPPORT) {
8345 newBuf = Buffer._augment(this.subarray(start, end))
8347 var sliceLen = end - start
8348 newBuf = new Buffer(sliceLen, undefined)
8349 for (var i =
0; i < sliceLen; i++) {
8350 newBuf[i] = this[i + start]
8354 if (newBuf.length) newBuf.parent = this.parent || this
8360 * Need to make sure that buffer isn't trying to write out of bounds.
8362 function checkOffset (offset, ext, length) {
8363 if ((offset %
1) !==
0 || offset <
0) throw new RangeError('offset is not uint')
8364 if (offset + ext
> length) throw new RangeError('Trying to access beyond buffer length')
8367 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8369 byteLength = byteLength |
0
8370 if (!noAssert) checkOffset(offset, byteLength, this.length)
8372 var val = this[offset]
8375 while (++i < byteLength && (mul *=
0x100)) {
8376 val += this[offset + i] * mul
8382 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8384 byteLength = byteLength |
0
8386 checkOffset(offset, byteLength, this.length)
8389 var val = this[offset + --byteLength]
8391 while (byteLength
> 0 && (mul *=
0x100)) {
8392 val += this[offset + --byteLength] * mul
8398 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8399 if (!noAssert) checkOffset(offset,
1, this.length)
8403 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8404 if (!noAssert) checkOffset(offset,
2, this.length)
8405 return this[offset] | (this[offset +
1] <<
8)
8408 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8409 if (!noAssert) checkOffset(offset,
2, this.length)
8410 return (this[offset] <<
8) | this[offset +
1]
8413 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
8414 if (!noAssert) checkOffset(offset,
4, this.length)
8416 return ((this[offset]) |
8417 (this[offset +
1] <<
8) |
8418 (this[offset +
2] <<
16)) +
8419 (this[offset +
3] *
0x1000000)
8422 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
8423 if (!noAssert) checkOffset(offset,
4, this.length)
8425 return (this[offset] *
0x1000000) +
8426 ((this[offset +
1] <<
16) |
8427 (this[offset +
2] <<
8) |
8431 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
8433 byteLength = byteLength |
0
8434 if (!noAssert) checkOffset(offset, byteLength, this.length)
8436 var val = this[offset]
8439 while (++i < byteLength && (mul *=
0x100)) {
8440 val += this[offset + i] * mul
8444 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
8449 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
8451 byteLength = byteLength |
0
8452 if (!noAssert) checkOffset(offset, byteLength, this.length)
8456 var val = this[offset + --i]
8457 while (i
> 0 && (mul *=
0x100)) {
8458 val += this[offset + --i] * mul
8462 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
8467 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
8468 if (!noAssert) checkOffset(offset,
1, this.length)
8469 if (!(this[offset] &
0x80)) return (this[offset])
8470 return ((
0xff - this[offset] +
1) * -
1)
8473 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
8474 if (!noAssert) checkOffset(offset,
2, this.length)
8475 var val = this[offset] | (this[offset +
1] <<
8)
8476 return (val &
0x8000) ? val |
0xFFFF0000 : val
8479 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
8480 if (!noAssert) checkOffset(offset,
2, this.length)
8481 var val = this[offset +
1] | (this[offset] <<
8)
8482 return (val &
0x8000) ? val |
0xFFFF0000 : val
8485 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
8486 if (!noAssert) checkOffset(offset,
4, this.length)
8488 return (this[offset]) |
8489 (this[offset +
1] <<
8) |
8490 (this[offset +
2] <<
16) |
8491 (this[offset +
3] <<
24)
8494 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
8495 if (!noAssert) checkOffset(offset,
4, this.length)
8497 return (this[offset] <<
24) |
8498 (this[offset +
1] <<
16) |
8499 (this[offset +
2] <<
8) |
8503 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
8504 if (!noAssert) checkOffset(offset,
4, this.length)
8505 return ieee754.read(this, offset, true,
23,
4)
8508 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
8509 if (!noAssert) checkOffset(offset,
4, this.length)
8510 return ieee754.read(this, offset, false,
23,
4)
8513 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
8514 if (!noAssert) checkOffset(offset,
8, this.length)
8515 return ieee754.read(this, offset, true,
52,
8)
8518 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
8519 if (!noAssert) checkOffset(offset,
8, this.length)
8520 return ieee754.read(this, offset, false,
52,
8)
8523 function checkInt (buf, value, offset, ext, max, min) {
8524 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
8525 if (value
> max || value < min) throw new RangeError('value is out of bounds')
8526 if (offset + ext
> buf.length) throw new RangeError('index out of range')
8529 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
8532 byteLength = byteLength |
0
8533 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(
2,
8 * byteLength),
0)
8537 this[offset] = value &
0xFF
8538 while (++i < byteLength && (mul *=
0x100)) {
8539 this[offset + i] = (value / mul) &
0xFF
8542 return offset + byteLength
8545 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
8548 byteLength = byteLength |
0
8549 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(
2,
8 * byteLength),
0)
8551 var i = byteLength -
1
8553 this[offset + i] = value &
0xFF
8554 while (--i
>=
0 && (mul *=
0x100)) {
8555 this[offset + i] = (value / mul) &
0xFF
8558 return offset + byteLength
8561 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
8564 if (!noAssert) checkInt(this, value, offset,
1,
0xff,
0)
8565 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
8566 this[offset] = value
8570 function objectWriteUInt16 (buf, value, offset, littleEndian) {
8571 if (value <
0) value =
0xffff + value +
1
8572 for (var i =
0, j = Math.min(buf.length - offset,
2); i < j; i++) {
8573 buf[offset + i] = (value & (
0xff << (
8 * (littleEndian ? i :
1 - i))))
>>>
8574 (littleEndian ? i :
1 - i) *
8
8578 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
8581 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
8582 if (Buffer.TYPED_ARRAY_SUPPORT) {
8583 this[offset] = value
8584 this[offset +
1] = (value
>>> 8)
8586 objectWriteUInt16(this, value, offset, true)
8591 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
8594 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
8595 if (Buffer.TYPED_ARRAY_SUPPORT) {
8596 this[offset] = (value
>>> 8)
8597 this[offset +
1] = value
8599 objectWriteUInt16(this, value, offset, false)
8604 function objectWriteUInt32 (buf, value, offset, littleEndian) {
8605 if (value <
0) value =
0xffffffff + value +
1
8606 for (var i =
0, j = Math.min(buf.length - offset,
4); i < j; i++) {
8607 buf[offset + i] = (value
>>> (littleEndian ? i :
3 - i) *
8) &
0xff
8611 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
8614 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
8615 if (Buffer.TYPED_ARRAY_SUPPORT) {
8616 this[offset +
3] = (value
>>> 24)
8617 this[offset +
2] = (value
>>> 16)
8618 this[offset +
1] = (value
>>> 8)
8619 this[offset] = value
8621 objectWriteUInt32(this, value, offset, true)
8626 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
8629 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
8630 if (Buffer.TYPED_ARRAY_SUPPORT) {
8631 this[offset] = (value
>>> 24)
8632 this[offset +
1] = (value
>>> 16)
8633 this[offset +
2] = (value
>>> 8)
8634 this[offset +
3] = value
8636 objectWriteUInt32(this, value, offset, false)
8641 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
8645 var limit = Math.pow(
2,
8 * byteLength -
1)
8647 checkInt(this, value, offset, byteLength, limit -
1, -limit)
8652 var sub = value <
0 ?
1 :
0
8653 this[offset] = value &
0xFF
8654 while (++i < byteLength && (mul *=
0x100)) {
8655 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
8658 return offset + byteLength
8661 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
8665 var limit = Math.pow(
2,
8 * byteLength -
1)
8667 checkInt(this, value, offset, byteLength, limit -
1, -limit)
8670 var i = byteLength -
1
8672 var sub = value <
0 ?
1 :
0
8673 this[offset + i] = value &
0xFF
8674 while (--i
>=
0 && (mul *=
0x100)) {
8675 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
8678 return offset + byteLength
8681 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
8684 if (!noAssert) checkInt(this, value, offset,
1,
0x7f, -
0x80)
8685 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
8686 if (value <
0) value =
0xff + value +
1
8687 this[offset] = value
8691 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
8694 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
8695 if (Buffer.TYPED_ARRAY_SUPPORT) {
8696 this[offset] = value
8697 this[offset +
1] = (value
>>> 8)
8699 objectWriteUInt16(this, value, offset, true)
8704 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
8707 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
8708 if (Buffer.TYPED_ARRAY_SUPPORT) {
8709 this[offset] = (value
>>> 8)
8710 this[offset +
1] = value
8712 objectWriteUInt16(this, value, offset, false)
8717 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
8720 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
8721 if (Buffer.TYPED_ARRAY_SUPPORT) {
8722 this[offset] = value
8723 this[offset +
1] = (value
>>> 8)
8724 this[offset +
2] = (value
>>> 16)
8725 this[offset +
3] = (value
>>> 24)
8727 objectWriteUInt32(this, value, offset, true)
8732 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
8735 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
8736 if (value <
0) value =
0xffffffff + value +
1
8737 if (Buffer.TYPED_ARRAY_SUPPORT) {
8738 this[offset] = (value
>>> 24)
8739 this[offset +
1] = (value
>>> 16)
8740 this[offset +
2] = (value
>>> 8)
8741 this[offset +
3] = value
8743 objectWriteUInt32(this, value, offset, false)
8748 function checkIEEE754 (buf, value, offset, ext, max, min) {
8749 if (value
> max || value < min) throw new RangeError('value is out of bounds')
8750 if (offset + ext
> buf.length) throw new RangeError('index out of range')
8751 if (offset <
0) throw new RangeError('index out of range')
8754 function writeFloat (buf, value, offset, littleEndian, noAssert) {
8756 checkIEEE754(buf, value, offset,
4,
3.4028234663852886e+38, -
3.4028234663852886e+38)
8758 ieee754.write(buf, value, offset, littleEndian,
23,
4)
8762 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
8763 return writeFloat(this, value, offset, true, noAssert)
8766 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
8767 return writeFloat(this, value, offset, false, noAssert)
8770 function writeDouble (buf, value, offset, littleEndian, noAssert) {
8772 checkIEEE754(buf, value, offset,
8,
1.7976931348623157E+308, -
1.7976931348623157E+308)
8774 ieee754.write(buf, value, offset, littleEndian,
52,
8)
8778 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
8779 return writeDouble(this, value, offset, true, noAssert)
8782 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
8783 return writeDouble(this, value, offset, false, noAssert)
8786 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
8787 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
8788 if (!start) start =
0
8789 if (!end && end !==
0) end = this.length
8790 if (targetStart
>= target.length) targetStart = target.length
8791 if (!targetStart) targetStart =
0
8792 if (end
> 0 && end < start) end = start
8794 // Copy
0 bytes; we're done
8795 if (end === start) return
0
8796 if (target.length ===
0 || this.length ===
0) return
0
8798 // Fatal error conditions
8799 if (targetStart <
0) {
8800 throw new RangeError('targetStart out of bounds')
8802 if (start <
0 || start
>= this.length) throw new RangeError('sourceStart out of bounds')
8803 if (end <
0) throw new RangeError('sourceEnd out of bounds')
8806 if (end
> this.length) end = this.length
8807 if (target.length - targetStart < end - start) {
8808 end = target.length - targetStart + start
8811 var len = end - start
8814 if (this === target && start < targetStart && targetStart < end) {
8815 // descending copy from end
8816 for (i = len -
1; i
>=
0; i--) {
8817 target[i + targetStart] = this[i + start]
8819 } else if (len <
1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
8820 // ascending copy from start
8821 for (i =
0; i < len; i++) {
8822 target[i + targetStart] = this[i + start]
8825 target._set(this.subarray(start, start + len), targetStart)
8831 // fill(value, start=
0, end=buffer.length)
8832 Buffer.prototype.fill = function fill (value, start, end) {
8833 if (!value) value =
0
8834 if (!start) start =
0
8835 if (!end) end = this.length
8837 if (end < start) throw new RangeError('end < start')
8839 // Fill
0 bytes; we're done
8840 if (end === start) return
8841 if (this.length ===
0) return
8843 if (start <
0 || start
>= this.length) throw new RangeError('start out of bounds')
8844 if (end <
0 || end
> this.length) throw new RangeError('end out of bounds')
8847 if (typeof value === 'number') {
8848 for (i = start; i < end; i++) {
8852 var bytes = utf8ToBytes(value.toString())
8853 var len = bytes.length
8854 for (i = start; i < end; i++) {
8855 this[i] = bytes[i % len]
8863 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
8864 * Added in Node
0.12. Only available in browsers that support ArrayBuffer.
8866 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
8867 if (typeof Uint8Array !== 'undefined') {
8868 if (Buffer.TYPED_ARRAY_SUPPORT) {
8869 return (new Buffer(this)).buffer
8871 var buf = new Uint8Array(this.length)
8872 for (var i =
0, len = buf.length; i < len; i +=
1) {
8878 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
8885 var BP = Buffer.prototype
8888 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
8890 Buffer._augment = function _augment (arr) {
8891 arr.constructor = Buffer
8892 arr._isBuffer = true
8894 // save reference to original Uint8Array set method before overwriting
8901 arr.write = BP.write
8902 arr.toString = BP.toString
8903 arr.toLocaleString = BP.toString
8904 arr.toJSON = BP.toJSON
8905 arr.equals = BP.equals
8906 arr.compare = BP.compare
8907 arr.indexOf = BP.indexOf
8909 arr.slice = BP.slice
8910 arr.readUIntLE = BP.readUIntLE
8911 arr.readUIntBE = BP.readUIntBE
8912 arr.readUInt8 = BP.readUInt8
8913 arr.readUInt16LE = BP.readUInt16LE
8914 arr.readUInt16BE = BP.readUInt16BE
8915 arr.readUInt32LE = BP.readUInt32LE
8916 arr.readUInt32BE = BP.readUInt32BE
8917 arr.readIntLE = BP.readIntLE
8918 arr.readIntBE = BP.readIntBE
8919 arr.readInt8 = BP.readInt8
8920 arr.readInt16LE = BP.readInt16LE
8921 arr.readInt16BE = BP.readInt16BE
8922 arr.readInt32LE = BP.readInt32LE
8923 arr.readInt32BE = BP.readInt32BE
8924 arr.readFloatLE = BP.readFloatLE
8925 arr.readFloatBE = BP.readFloatBE
8926 arr.readDoubleLE = BP.readDoubleLE
8927 arr.readDoubleBE = BP.readDoubleBE
8928 arr.writeUInt8 = BP.writeUInt8
8929 arr.writeUIntLE = BP.writeUIntLE
8930 arr.writeUIntBE = BP.writeUIntBE
8931 arr.writeUInt16LE = BP.writeUInt16LE
8932 arr.writeUInt16BE = BP.writeUInt16BE
8933 arr.writeUInt32LE = BP.writeUInt32LE
8934 arr.writeUInt32BE = BP.writeUInt32BE
8935 arr.writeIntLE = BP.writeIntLE
8936 arr.writeIntBE = BP.writeIntBE
8937 arr.writeInt8 = BP.writeInt8
8938 arr.writeInt16LE = BP.writeInt16LE
8939 arr.writeInt16BE = BP.writeInt16BE
8940 arr.writeInt32LE = BP.writeInt32LE
8941 arr.writeInt32BE = BP.writeInt32BE
8942 arr.writeFloatLE = BP.writeFloatLE
8943 arr.writeFloatBE = BP.writeFloatBE
8944 arr.writeDoubleLE = BP.writeDoubleLE
8945 arr.writeDoubleBE = BP.writeDoubleBE
8947 arr.inspect = BP.inspect
8948 arr.toArrayBuffer = BP.toArrayBuffer
8953 var INVALID_BASE64_RE = /[^+\/
0-
9A-Za-z-_]/g
8955 function base64clean (str) {
8956 // Node strips out invalid characters like \n and \t from the string, base64-js does not
8957 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
8958 // Node converts strings with length <
2 to ''
8959 if (str.length <
2) return ''
8960 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
8961 while (str.length %
4 !==
0) {
8967 function stringtrim (str) {
8968 if (str.trim) return str.trim()
8969 return str.replace(/^\s+|\s+$/g, '')
8972 function toHex (n) {
8973 if (n <
16) return '
0' + n.toString(
16)
8974 return n.toString(
16)
8977 function utf8ToBytes (string, units) {
8978 units = units || Infinity
8980 var length = string.length
8981 var leadSurrogate = null
8984 for (var i =
0; i < length; i++) {
8985 codePoint = string.charCodeAt(i)
8987 // is surrogate component
8988 if (codePoint
> 0xD7FF && codePoint <
0xE000) {
8989 // last char was a lead
8990 if (!leadSurrogate) {
8992 if (codePoint
> 0xDBFF) {
8994 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
8997 } else if (i +
1 === length) {
8999 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9004 leadSurrogate = codePoint
9010 if (codePoint <
0xDC00) {
9011 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9012 leadSurrogate = codePoint
9016 // valid surrogate pair
9017 codePoint = leadSurrogate -
0xD800 <<
10 | codePoint -
0xDC00 |
0x10000
9019 } else if (leadSurrogate) {
9020 // valid bmp char, but last char was a lead
9021 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
9024 leadSurrogate = null
9027 if (codePoint <
0x80) {
9028 if ((units -=
1) <
0) break
9029 bytes.push(codePoint)
9030 } else if (codePoint <
0x800) {
9031 if ((units -=
2) <
0) break
9033 codePoint
>> 0x6 |
0xC0,
9034 codePoint &
0x3F |
0x80
9036 } else if (codePoint <
0x10000) {
9037 if ((units -=
3) <
0) break
9039 codePoint
>> 0xC |
0xE0,
9040 codePoint
>> 0x6 &
0x3F |
0x80,
9041 codePoint &
0x3F |
0x80
9043 } else if (codePoint <
0x110000) {
9044 if ((units -=
4) <
0) break
9046 codePoint
>> 0x12 |
0xF0,
9047 codePoint
>> 0xC &
0x3F |
0x80,
9048 codePoint
>> 0x6 &
0x3F |
0x80,
9049 codePoint &
0x3F |
0x80
9052 throw new Error('Invalid code point')
9059 function asciiToBytes (str) {
9061 for (var i =
0; i < str.length; i++) {
9062 // Node's code seems to be doing this and not &
0x7F..
9063 byteArray.push(str.charCodeAt(i) &
0xFF)
9068 function utf16leToBytes (str, units) {
9071 for (var i =
0; i < str.length; i++) {
9072 if ((units -=
2) <
0) break
9074 c = str.charCodeAt(i)
9084 function base64ToBytes (str) {
9085 return base64.toByteArray(base64clean(str))
9088 function blitBuffer (src, dst, offset, length) {
9089 for (var i =
0; i < length; i++) {
9090 if ((i + offset
>= dst.length) || (i
>= src.length)) break
9091 dst[i + offset] = src[i]
9096 },{"base64-js":
8,"ieee754":
9,"is-array":
10}],
8:[function(require,module,exports){
9097 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
9099 ;(function (exports) {
9102 var Arr = (typeof Uint8Array !== 'undefined')
9106 var PLUS = '+'.charCodeAt(
0)
9107 var SLASH = '/'.charCodeAt(
0)
9108 var NUMBER = '
0'.charCodeAt(
0)
9109 var LOWER = 'a'.charCodeAt(
0)
9110 var UPPER = 'A'.charCodeAt(
0)
9111 var PLUS_URL_SAFE = '-'.charCodeAt(
0)
9112 var SLASH_URL_SAFE = '_'.charCodeAt(
0)
9114 function decode (elt) {
9115 var code = elt.charCodeAt(
0)
9116 if (code === PLUS ||
9117 code === PLUS_URL_SAFE)
9119 if (code === SLASH ||
9120 code === SLASH_URL_SAFE)
9123 return -
1 //no match
9124 if (code < NUMBER +
10)
9125 return code - NUMBER +
26 +
26
9126 if (code < UPPER +
26)
9128 if (code < LOWER +
26)
9129 return code - LOWER +
26
9132 function b64ToByteArray (b64) {
9133 var i, j, l, tmp, placeHolders, arr
9135 if (b64.length %
4 > 0) {
9136 throw new Error('Invalid string. Length must be a multiple of
4')
9139 // the number of equal signs (place holders)
9140 // if there are two placeholders, than the two characters before it
9141 // represent one byte
9142 // if there is only one, then the three characters before it represent
2 bytes
9143 // this is just a cheap hack to not do indexOf twice
9144 var len = b64.length
9145 placeHolders = '=' === b64.charAt(len -
2) ?
2 : '=' === b64.charAt(len -
1) ?
1 :
0
9147 // base64 is
4/
3 + up to two characters of the original data
9148 arr = new Arr(b64.length *
3 /
4 - placeHolders)
9150 // if there are placeholders, only get up to the last complete
4 chars
9151 l = placeHolders
> 0 ? b64.length -
4 : b64.length
9159 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
9160 tmp = (decode(b64.charAt(i)) <<
18) | (decode(b64.charAt(i +
1)) <<
12) | (decode(b64.charAt(i +
2)) <<
6) | decode(b64.charAt(i +
3))
9161 push((tmp &
0xFF0000)
>> 16)
9162 push((tmp &
0xFF00)
>> 8)
9166 if (placeHolders ===
2) {
9167 tmp = (decode(b64.charAt(i)) <<
2) | (decode(b64.charAt(i +
1))
>> 4)
9169 } else if (placeHolders ===
1) {
9170 tmp = (decode(b64.charAt(i)) <<
10) | (decode(b64.charAt(i +
1)) <<
4) | (decode(b64.charAt(i +
2))
>> 2)
9171 push((tmp
>> 8) &
0xFF)
9178 function uint8ToBase64 (uint8) {
9180 extraBytes = uint8.length %
3, // if we have
1 byte left, pad
2 bytes
9184 function encode (num) {
9185 return lookup.charAt(num)
9188 function tripletToBase64 (num) {
9189 return encode(num
>> 18 &
0x3F) + encode(num
>> 12 &
0x3F) + encode(num
>> 6 &
0x3F) + encode(num &
0x3F)
9192 // go through the array every three bytes, we'll deal with trailing stuff later
9193 for (i =
0, length = uint8.length - extraBytes; i < length; i +=
3) {
9194 temp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
9195 output += tripletToBase64(temp)
9198 // pad the end with zeros, but make sure to not forget the extra bytes
9199 switch (extraBytes) {
9201 temp = uint8[uint8.length -
1]
9202 output += encode(temp
>> 2)
9203 output += encode((temp <<
4) &
0x3F)
9207 temp = (uint8[uint8.length -
2] <<
8) + (uint8[uint8.length -
1])
9208 output += encode(temp
>> 10)
9209 output += encode((temp
>> 4) &
0x3F)
9210 output += encode((temp <<
2) &
0x3F)
9218 exports.toByteArray = b64ToByteArray
9219 exports.fromByteArray = uint8ToBase64
9220 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
9222 },{}],
9:[function(require,module,exports){
9223 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
9225 var eLen = nBytes *
8 - mLen -
1
9226 var eMax = (
1 << eLen) -
1
9227 var eBias = eMax
>> 1
9229 var i = isLE ? (nBytes -
1) :
0
9230 var d = isLE ? -
1 :
1
9231 var s = buffer[offset + i]
9235 e = s & ((
1 << (-nBits)) -
1)
9238 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8) {}
9240 m = e & ((
1 << (-nBits)) -
1)
9243 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8) {}
9247 } else if (e === eMax) {
9248 return m ? NaN : ((s ? -
1 :
1) * Infinity)
9250 m = m + Math.pow(
2, mLen)
9253 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen)
9256 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
9258 var eLen = nBytes *
8 - mLen -
1
9259 var eMax = (
1 << eLen) -
1
9260 var eBias = eMax
>> 1
9261 var rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0)
9262 var i = isLE ?
0 : (nBytes -
1)
9263 var d = isLE ?
1 : -
1
9264 var s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0
9266 value = Math.abs(value)
9268 if (isNaN(value) || value === Infinity) {
9269 m = isNaN(value) ?
1 :
0
9272 e = Math.floor(Math.log(value) / Math.LN2)
9273 if (value * (c = Math.pow(
2, -e)) <
1) {
9277 if (e + eBias
>=
1) {
9280 value += rt * Math.pow(
2,
1 - eBias)
9282 if (value * c
>=
2) {
9287 if (e + eBias
>= eMax) {
9290 } else if (e + eBias
>=
1) {
9291 m = (value * c -
1) * Math.pow(
2, mLen)
9294 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen)
9299 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8) {}
9303 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8) {}
9305 buffer[offset + i - d] |= s *
128
9308 },{}],
10:[function(require,module,exports){
9314 var isArray = Array.isArray;
9320 var str = Object.prototype.toString;
9323 * Whether or not the given `val`
9330 * isArray(arguments);
9335 * @param {mixed} val
9339 module.exports = isArray || function (val) {
9340 return !! val && '[object Array]' == str.call(val);
9343 },{}],
11:[function(require,module,exports){
9344 // Copyright Joyent, Inc. and other Node contributors.
9346 // Permission is hereby granted, free of charge, to any person obtaining a
9347 // copy of this software and associated documentation files (the
9348 // "Software"), to deal in the Software without restriction, including
9349 // without limitation the rights to use, copy, modify, merge, publish,
9350 // distribute, sublicense, and/or sell copies of the Software, and to permit
9351 // persons to whom the Software is furnished to do so, subject to the
9352 // following conditions:
9354 // The above copyright notice and this permission notice shall be included
9355 // in all copies or substantial portions of the Software.
9357 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9358 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9359 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9360 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9361 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9362 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9363 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9365 function EventEmitter() {
9366 this._events = this._events || {};
9367 this._maxListeners = this._maxListeners || undefined;
9369 module.exports = EventEmitter;
9371 // Backwards-compat with node
0.10.x
9372 EventEmitter.EventEmitter = EventEmitter;
9374 EventEmitter.prototype._events = undefined;
9375 EventEmitter.prototype._maxListeners = undefined;
9377 // By default EventEmitters will print a warning if more than
10 listeners are
9378 // added to it. This is a useful default which helps finding memory leaks.
9379 EventEmitter.defaultMaxListeners =
10;
9381 // Obviously not all Emitters should be limited to
10. This function allows
9382 // that to be increased. Set to zero for unlimited.
9383 EventEmitter.prototype.setMaxListeners = function(n) {
9384 if (!isNumber(n) || n <
0 || isNaN(n))
9385 throw TypeError('n must be a positive number');
9386 this._maxListeners = n;
9390 EventEmitter.prototype.emit = function(type) {
9391 var er, handler, len, args, i, listeners;
9396 // If there is no 'error' event listener then throw.
9397 if (type === 'error') {
9398 if (!this._events.error ||
9399 (isObject(this._events.error) && !this._events.error.length)) {
9401 if (er instanceof Error) {
9402 throw er; // Unhandled 'error' event
9404 throw TypeError('Uncaught, unspecified "error" event.');
9408 handler = this._events[type];
9410 if (isUndefined(handler))
9413 if (isFunction(handler)) {
9414 switch (arguments.length) {
9420 handler.call(this, arguments[
1]);
9423 handler.call(this, arguments[
1], arguments[
2]);
9427 len = arguments.length;
9428 args = new Array(len -
1);
9429 for (i =
1; i < len; i++)
9430 args[i -
1] = arguments[i];
9431 handler.apply(this, args);
9433 } else if (isObject(handler)) {
9434 len = arguments.length;
9435 args = new Array(len -
1);
9436 for (i =
1; i < len; i++)
9437 args[i -
1] = arguments[i];
9439 listeners = handler.slice();
9440 len = listeners.length;
9441 for (i =
0; i < len; i++)
9442 listeners[i].apply(this, args);
9448 EventEmitter.prototype.addListener = function(type, listener) {
9451 if (!isFunction(listener))
9452 throw TypeError('listener must be a function');
9457 // To avoid recursion in the case that type === "newListener"! Before
9458 // adding it to the listeners, first emit "newListener".
9459 if (this._events.newListener)
9460 this.emit('newListener', type,
9461 isFunction(listener.listener) ?
9462 listener.listener : listener);
9464 if (!this._events[type])
9465 // Optimize the case of one listener. Don't need the extra array object.
9466 this._events[type] = listener;
9467 else if (isObject(this._events[type]))
9468 // If we've already got an array, just append.
9469 this._events[type].push(listener);
9471 // Adding the second element, need to change to array.
9472 this._events[type] = [this._events[type], listener];
9474 // Check for listener leak
9475 if (isObject(this._events[type]) && !this._events[type].warned) {
9477 if (!isUndefined(this._maxListeners)) {
9478 m = this._maxListeners;
9480 m = EventEmitter.defaultMaxListeners;
9483 if (m && m
> 0 && this._events[type].length
> m) {
9484 this._events[type].warned = true;
9485 console.error('(node) warning: possible EventEmitter memory ' +
9486 'leak detected. %d listeners added. ' +
9487 'Use emitter.setMaxListeners() to increase limit.',
9488 this._events[type].length);
9489 if (typeof console.trace === 'function') {
9490 // not supported in IE
10
9499 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9501 EventEmitter.prototype.once = function(type, listener) {
9502 if (!isFunction(listener))
9503 throw TypeError('listener must be a function');
9508 this.removeListener(type, g);
9512 listener.apply(this, arguments);
9516 g.listener = listener;
9522 // emits a 'removeListener' event iff the listener was removed
9523 EventEmitter.prototype.removeListener = function(type, listener) {
9524 var list, position, length, i;
9526 if (!isFunction(listener))
9527 throw TypeError('listener must be a function');
9529 if (!this._events || !this._events[type])
9532 list = this._events[type];
9533 length = list.length;
9536 if (list === listener ||
9537 (isFunction(list.listener) && list.listener === listener)) {
9538 delete this._events[type];
9539 if (this._events.removeListener)
9540 this.emit('removeListener', type, listener);
9542 } else if (isObject(list)) {
9543 for (i = length; i--
> 0;) {
9544 if (list[i] === listener ||
9545 (list[i].listener && list[i].listener === listener)) {
9554 if (list.length ===
1) {
9556 delete this._events[type];
9558 list.splice(position,
1);
9561 if (this._events.removeListener)
9562 this.emit('removeListener', type, listener);
9568 EventEmitter.prototype.removeAllListeners = function(type) {
9574 // not listening for removeListener, no need to emit
9575 if (!this._events.removeListener) {
9576 if (arguments.length ===
0)
9578 else if (this._events[type])
9579 delete this._events[type];
9583 // emit removeListener for all listeners on all events
9584 if (arguments.length ===
0) {
9585 for (key in this._events) {
9586 if (key === 'removeListener') continue;
9587 this.removeAllListeners(key);
9589 this.removeAllListeners('removeListener');
9594 listeners = this._events[type];
9596 if (isFunction(listeners)) {
9597 this.removeListener(type, listeners);
9600 while (listeners.length)
9601 this.removeListener(type, listeners[listeners.length -
1]);
9603 delete this._events[type];
9608 EventEmitter.prototype.listeners = function(type) {
9610 if (!this._events || !this._events[type])
9612 else if (isFunction(this._events[type]))
9613 ret = [this._events[type]];
9615 ret = this._events[type].slice();
9619 EventEmitter.listenerCount = function(emitter, type) {
9621 if (!emitter._events || !emitter._events[type])
9623 else if (isFunction(emitter._events[type]))
9626 ret = emitter._events[type].length;
9630 function isFunction(arg) {
9631 return typeof arg === 'function';
9634 function isNumber(arg) {
9635 return typeof arg === 'number';
9638 function isObject(arg) {
9639 return typeof arg === 'object' && arg !== null;
9642 function isUndefined(arg) {
9643 return arg === void
0;
9646 },{}],
12:[function(require,module,exports){
9647 if (typeof Object.create === 'function') {
9648 // implementation from standard node.js 'util' module
9649 module.exports = function inherits(ctor, superCtor) {
9650 ctor.super_ = superCtor
9651 ctor.prototype = Object.create(superCtor.prototype, {
9661 // old school shim for old browsers
9662 module.exports = function inherits(ctor, superCtor) {
9663 ctor.super_ = superCtor
9664 var TempCtor = function () {}
9665 TempCtor.prototype = superCtor.prototype
9666 ctor.prototype = new TempCtor()
9667 ctor.prototype.constructor = ctor
9671 },{}],
13:[function(require,module,exports){
9672 module.exports = Array.isArray || function (arr) {
9673 return Object.prototype.toString.call(arr) == '[object Array]';
9676 },{}],
14:[function(require,module,exports){
9677 // shim for using process in browser
9679 var process = module.exports = {};
9681 var draining = false;
9683 var queueIndex = -
1;
9685 function cleanUpNextTick() {
9687 if (currentQueue.length) {
9688 queue = currentQueue.concat(queue);
9697 function drainQueue() {
9701 var timeout = setTimeout(cleanUpNextTick);
9704 var len = queue.length;
9706 currentQueue = queue;
9708 while (++queueIndex < len) {
9709 currentQueue[queueIndex].run();
9714 currentQueue = null;
9716 clearTimeout(timeout);
9719 process.nextTick = function (fun) {
9720 var args = new Array(arguments.length -
1);
9721 if (arguments.length
> 1) {
9722 for (var i =
1; i < arguments.length; i++) {
9723 args[i -
1] = arguments[i];
9726 queue.push(new Item(fun, args));
9727 if (queue.length ===
1 && !draining) {
9728 setTimeout(drainQueue,
0);
9732 // v8 likes predictible objects
9733 function Item(fun, array) {
9737 Item.prototype.run = function () {
9738 this.fun.apply(null, this.array);
9740 process.title = 'browser';
9741 process.browser = true;
9744 process.version = ''; // empty string to avoid regexp issues
9745 process.versions = {};
9750 process.addListener = noop;
9751 process.once = noop;
9753 process.removeListener = noop;
9754 process.removeAllListeners = noop;
9755 process.emit = noop;
9757 process.binding = function (name) {
9758 throw new Error('process.binding is not supported');
9762 process.cwd = function () { return '/' };
9763 process.chdir = function (dir) {
9764 throw new Error('process.chdir is not supported');
9766 process.umask = function() { return
0; };
9768 },{}],
15:[function(require,module,exports){
9769 module.exports = require(
"./lib/_stream_duplex.js")
9771 },{
"./lib/_stream_duplex.js":
16}],
16:[function(require,module,exports){
9772 (function (process){
9773 // Copyright Joyent, Inc. and other Node contributors.
9775 // Permission is hereby granted, free of charge, to any person obtaining a
9776 // copy of this software and associated documentation files (the
9777 //
"Software"), to deal in the Software without restriction, including
9778 // without limitation the rights to use, copy, modify, merge, publish,
9779 // distribute, sublicense, and/or sell copies of the Software, and to permit
9780 // persons to whom the Software is furnished to do so, subject to the
9781 // following conditions:
9783 // The above copyright notice and this permission notice shall be included
9784 // in all copies or substantial portions of the Software.
9786 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9787 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9788 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9789 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9790 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9791 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9792 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9794 // a duplex stream is just a stream that is both readable and writable.
9795 // Since JS doesn't have multiple prototypal inheritance, this class
9796 // prototypally inherits from Readable, and then parasitically from
9799 module.exports = Duplex;
9802 var objectKeys = Object.keys || function (obj) {
9804 for (var key in obj) keys.push(key);
9811 var util = require('core-util-is');
9812 util.inherits = require('inherits');
9815 var Readable = require('./_stream_readable');
9816 var Writable = require('./_stream_writable');
9818 util.inherits(Duplex, Readable);
9820 forEach(objectKeys(Writable.prototype), function(method) {
9821 if (!Duplex.prototype[method])
9822 Duplex.prototype[method] = Writable.prototype[method];
9825 function Duplex(options) {
9826 if (!(this instanceof Duplex))
9827 return new Duplex(options);
9829 Readable.call(this, options);
9830 Writable.call(this, options);
9832 if (options && options.readable === false)
9833 this.readable = false;
9835 if (options && options.writable === false)
9836 this.writable = false;
9838 this.allowHalfOpen = true;
9839 if (options && options.allowHalfOpen === false)
9840 this.allowHalfOpen = false;
9842 this.once('end', onend);
9845 // the no-half-open enforcer
9847 // if we allow half-open state, or if the writable side ended,
9849 if (this.allowHalfOpen || this._writableState.ended)
9852 // no more data can be written.
9853 // But allow more writes to happen in this tick.
9854 process.nextTick(this.end.bind(this));
9857 function forEach (xs, f) {
9858 for (var i =
0, l = xs.length; i < l; i++) {
9863 }).call(this,require('_process'))
9864 },{"./_stream_readable":
18,"./_stream_writable":
20,"_process":
14,"core-util-is":
21,"inherits":
12}],
17:[function(require,module,exports){
9865 // Copyright Joyent, Inc. and other Node contributors.
9867 // Permission is hereby granted, free of charge, to any person obtaining a
9868 // copy of this software and associated documentation files (the
9869 // "Software"), to deal in the Software without restriction, including
9870 // without limitation the rights to use, copy, modify, merge, publish,
9871 // distribute, sublicense, and/or sell copies of the Software, and to permit
9872 // persons to whom the Software is furnished to do so, subject to the
9873 // following conditions:
9875 // The above copyright notice and this permission notice shall be included
9876 // in all copies or substantial portions of the Software.
9878 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9879 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9880 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9881 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9882 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9883 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9884 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9886 // a passthrough stream.
9887 // basically just the most minimal sort of Transform stream.
9888 // Every written chunk gets output as-is.
9890 module.exports = PassThrough;
9892 var Transform = require('./_stream_transform');
9895 var util = require('core-util-is');
9896 util.inherits = require('inherits');
9899 util.inherits(PassThrough, Transform);
9901 function PassThrough(options) {
9902 if (!(this instanceof PassThrough))
9903 return new PassThrough(options);
9905 Transform.call(this, options);
9908 PassThrough.prototype._transform = function(chunk, encoding, cb) {
9912 },{"./_stream_transform":
19,"core-util-is":
21,"inherits":
12}],
18:[function(require,module,exports){
9913 (function (process){
9914 // Copyright Joyent, Inc. and other Node contributors.
9916 // Permission is hereby granted, free of charge, to any person obtaining a
9917 // copy of this software and associated documentation files (the
9918 // "Software"), to deal in the Software without restriction, including
9919 // without limitation the rights to use, copy, modify, merge, publish,
9920 // distribute, sublicense, and/or sell copies of the Software, and to permit
9921 // persons to whom the Software is furnished to do so, subject to the
9922 // following conditions:
9924 // The above copyright notice and this permission notice shall be included
9925 // in all copies or substantial portions of the Software.
9927 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9928 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9929 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9930 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9931 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9932 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9933 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9935 module.exports = Readable;
9938 var isArray = require('isarray');
9943 var Buffer = require('buffer').Buffer;
9946 Readable.ReadableState = ReadableState;
9948 var EE = require('events').EventEmitter;
9951 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
9952 return emitter.listeners(type).length;
9956 var Stream = require('stream');
9959 var util = require('core-util-is');
9960 util.inherits = require('inherits');
9967 var debug = require('util');
9968 if (debug && debug.debuglog) {
9969 debug = debug.debuglog('stream');
9971 debug = function () {};
9976 util.inherits(Readable, Stream);
9978 function ReadableState(options, stream) {
9979 var Duplex = require('./_stream_duplex');
9981 options = options || {};
9983 // the point at which it stops calling _read() to fill the buffer
9984 // Note:
0 is a valid value, means "don't call _read preemptively ever"
9985 var hwm = options.highWaterMark;
9986 var defaultHwm = options.objectMode ?
16 :
16 *
1024;
9987 this.highWaterMark = (hwm || hwm ===
0) ? hwm : defaultHwm;
9990 this.highWaterMark = ~~this.highWaterMark;
9995 this.pipesCount =
0;
9996 this.flowing = null;
9998 this.endEmitted = false;
9999 this.reading = false;
10001 // a flag to be able to tell if the onwrite cb is called immediately,
10002 // or on a later tick. We set this to true at first, because any
10003 // actions that shouldn't happen until "later" should generally also
10004 // not happen before the first write call.
10007 // whenever we return null, then we set a flag to say
10008 // that we're awaiting a 'readable' event emission.
10009 this.needReadable = false;
10010 this.emittedReadable = false;
10011 this.readableListening = false;
10014 // object stream flag. Used to make read(n) ignore n and to
10015 // make all the buffer merging and length checks go away
10016 this.objectMode = !!options.objectMode;
10018 if (stream instanceof Duplex)
10019 this.objectMode = this.objectMode || !!options.readableObjectMode;
10021 // Crypto is kind of old and crusty. Historically, its default string
10022 // encoding is 'binary' so we have to make this configurable.
10023 // Everything else in the universe uses 'utf8', though.
10024 this.defaultEncoding = options.defaultEncoding || 'utf8';
10026 // when piping, we only care about 'readable' events that happen
10027 // after read()ing all the bytes and not getting any pushback.
10028 this.ranOut = false;
10030 // the number of writers that are awaiting a drain event in .pipe()s
10031 this.awaitDrain =
0;
10033 // if true, a maybeReadMore has been scheduled
10034 this.readingMore = false;
10036 this.decoder = null;
10037 this.encoding = null;
10038 if (options.encoding) {
10039 if (!StringDecoder)
10040 StringDecoder = require('string_decoder/').StringDecoder;
10041 this.decoder = new StringDecoder(options.encoding);
10042 this.encoding = options.encoding;
10046 function Readable(options) {
10047 var Duplex = require('./_stream_duplex');
10049 if (!(this instanceof Readable))
10050 return new Readable(options);
10052 this._readableState = new ReadableState(options, this);
10055 this.readable = true;
10060 // Manually shove something into the read() buffer.
10061 // This returns true if the highWaterMark has not been hit yet,
10062 // similar to how Writable.write() returns true if you should
10063 // write() some more.
10064 Readable.prototype.push = function(chunk, encoding) {
10065 var state = this._readableState;
10067 if (util.isString(chunk) && !state.objectMode) {
10068 encoding = encoding || state.defaultEncoding;
10069 if (encoding !== state.encoding) {
10070 chunk = new Buffer(chunk, encoding);
10075 return readableAddChunk(this, state, chunk, encoding, false);
10078 // Unshift should *always* be something directly out of read()
10079 Readable.prototype.unshift = function(chunk) {
10080 var state = this._readableState;
10081 return readableAddChunk(this, state, chunk, '', true);
10084 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
10085 var er = chunkInvalid(state, chunk);
10087 stream.emit('error', er);
10088 } else if (util.isNullOrUndefined(chunk)) {
10089 state.reading = false;
10091 onEofChunk(stream, state);
10092 } else if (state.objectMode || chunk && chunk.length
> 0) {
10093 if (state.ended && !addToFront) {
10094 var e = new Error('stream.push() after EOF');
10095 stream.emit('error', e);
10096 } else if (state.endEmitted && addToFront) {
10097 var e = new Error('stream.unshift() after end event');
10098 stream.emit('error', e);
10100 if (state.decoder && !addToFront && !encoding)
10101 chunk = state.decoder.write(chunk);
10104 state.reading = false;
10106 // if we want the data now, just emit it.
10107 if (state.flowing && state.length ===
0 && !state.sync) {
10108 stream.emit('data', chunk);
10111 // update the buffer info.
10112 state.length += state.objectMode ?
1 : chunk.length;
10114 state.buffer.unshift(chunk);
10116 state.buffer.push(chunk);
10118 if (state.needReadable)
10119 emitReadable(stream);
10122 maybeReadMore(stream, state);
10124 } else if (!addToFront) {
10125 state.reading = false;
10128 return needMoreData(state);
10133 // if it's past the high water mark, we can push in some more.
10134 // Also, if we have no data yet, we can stand some
10135 // more bytes. This is to work around cases where hwm=
0,
10136 // such as the repl. Also, if the push() triggered a
10137 // readable event, and the user called read(largeNumber) such that
10138 // needReadable was set, then we ought to push more, so that another
10139 // 'readable' event will be triggered.
10140 function needMoreData(state) {
10141 return !state.ended &&
10142 (state.needReadable ||
10143 state.length < state.highWaterMark ||
10144 state.length ===
0);
10147 // backwards compatibility.
10148 Readable.prototype.setEncoding = function(enc) {
10149 if (!StringDecoder)
10150 StringDecoder = require('string_decoder/').StringDecoder;
10151 this._readableState.decoder = new StringDecoder(enc);
10152 this._readableState.encoding = enc;
10156 // Don't raise the hwm
> 128MB
10157 var MAX_HWM =
0x800000;
10158 function roundUpToNextPowerOf2(n) {
10159 if (n
>= MAX_HWM) {
10162 // Get the next highest power of
2
10164 for (var p =
1; p <
32; p <<=
1) n |= n
>> p;
10170 function howMuchToRead(n, state) {
10171 if (state.length ===
0 && state.ended)
10174 if (state.objectMode)
10175 return n ===
0 ?
0 :
1;
10177 if (isNaN(n) || util.isNull(n)) {
10178 // only flow one buffer at a time
10179 if (state.flowing && state.buffer.length)
10180 return state.buffer[
0].length;
10182 return state.length;
10188 // If we're asking for more than the target buffer level,
10189 // then raise the water mark. Bump up to the next highest
10190 // power of
2, to prevent increasing it excessively in tiny
10192 if (n
> state.highWaterMark)
10193 state.highWaterMark = roundUpToNextPowerOf2(n);
10195 // don't have that much. return null, unless we've ended.
10196 if (n
> state.length) {
10197 if (!state.ended) {
10198 state.needReadable = true;
10201 return state.length;
10207 // you can override either this method, or the async _read(n) below.
10208 Readable.prototype.read = function(n) {
10210 var state = this._readableState;
10213 if (!util.isNumber(n) || n
> 0)
10214 state.emittedReadable = false;
10216 // if we're doing read(
0) to trigger a readable event, but we
10217 // already have a bunch of data in the buffer, then just trigger
10218 // the 'readable' event and move on.
10220 state.needReadable &&
10221 (state.length
>= state.highWaterMark || state.ended)) {
10222 debug('read: emitReadable', state.length, state.ended);
10223 if (state.length ===
0 && state.ended)
10226 emitReadable(this);
10230 n = howMuchToRead(n, state);
10232 // if we've ended, and we're now clear, then finish it up.
10233 if (n ===
0 && state.ended) {
10234 if (state.length ===
0)
10239 // All the actual chunk generation logic needs to be
10240 // *below* the call to _read. The reason is that in certain
10241 // synthetic stream cases, such as passthrough streams, _read
10242 // may be a completely synchronous operation which may change
10243 // the state of the read buffer, providing enough data when
10244 // before there was *not* enough.
10246 // So, the steps are:
10247 //
1. Figure out what the state of things will be after we do
10248 // a read from the buffer.
10250 //
2. If that resulting state will trigger a _read, then call _read.
10251 // Note that this may be asynchronous, or synchronous. Yes, it is
10252 // deeply ugly to write APIs this way, but that still doesn't mean
10253 // that the Readable class should behave improperly, as streams are
10254 // designed to be sync/async agnostic.
10255 // Take note if the _read call is sync or async (ie, if the read call
10256 // has returned yet), so that we know whether or not it's safe to emit
10259 //
3. Actually pull the requested chunks out of the buffer and return.
10261 // if we need a readable event, then we need to do some reading.
10262 var doRead = state.needReadable;
10263 debug('need readable', doRead);
10265 // if we currently have less than the highWaterMark, then also read some
10266 if (state.length ===
0 || state.length - n < state.highWaterMark) {
10268 debug('length less than watermark', doRead);
10271 // however, if we've ended, then there's no point, and if we're already
10272 // reading, then it's unnecessary.
10273 if (state.ended || state.reading) {
10275 debug('reading or ended', doRead);
10280 state.reading = true;
10282 // if the length is currently zero, then we *need* a readable event.
10283 if (state.length ===
0)
10284 state.needReadable = true;
10285 // call internal read method
10286 this._read(state.highWaterMark);
10287 state.sync = false;
10290 // If _read pushed data synchronously, then `reading` will be false,
10291 // and we need to re-evaluate how much data we can return to the user.
10292 if (doRead && !state.reading)
10293 n = howMuchToRead(nOrig, state);
10297 ret = fromList(n, state);
10301 if (util.isNull(ret)) {
10302 state.needReadable = true;
10308 // If we have nothing in the buffer, then we want to know
10309 // as soon as we *do* get something into the buffer.
10310 if (state.length ===
0 && !state.ended)
10311 state.needReadable = true;
10313 // If we tried to read() past the EOF, then emit end on the next tick.
10314 if (nOrig !== n && state.ended && state.length ===
0)
10317 if (!util.isNull(ret))
10318 this.emit('data', ret);
10323 function chunkInvalid(state, chunk) {
10325 if (!util.isBuffer(chunk) &&
10326 !util.isString(chunk) &&
10327 !util.isNullOrUndefined(chunk) &&
10328 !state.objectMode) {
10329 er = new TypeError('Invalid non-string/buffer chunk');
10335 function onEofChunk(stream, state) {
10336 if (state.decoder && !state.ended) {
10337 var chunk = state.decoder.end();
10338 if (chunk && chunk.length) {
10339 state.buffer.push(chunk);
10340 state.length += state.objectMode ?
1 : chunk.length;
10343 state.ended = true;
10345 // emit 'readable' now to make sure it gets picked up.
10346 emitReadable(stream);
10349 // Don't emit readable right away in sync mode, because this can trigger
10350 // another read() call =
> stack overflow. This way, it might trigger
10351 // a nextTick recursion warning, but that's not so bad.
10352 function emitReadable(stream) {
10353 var state = stream._readableState;
10354 state.needReadable = false;
10355 if (!state.emittedReadable) {
10356 debug('emitReadable', state.flowing);
10357 state.emittedReadable = true;
10359 process.nextTick(function() {
10360 emitReadable_(stream);
10363 emitReadable_(stream);
10367 function emitReadable_(stream) {
10368 debug('emit readable');
10369 stream.emit('readable');
10374 // at this point, the user has presumably seen the 'readable' event,
10375 // and called read() to consume some data. that may have triggered
10376 // in turn another _read(n) call, in which case reading = true if
10377 // it's in progress.
10378 // However, if we're not ended, or reading, and the length < hwm,
10379 // then go ahead and try to read some more preemptively.
10380 function maybeReadMore(stream, state) {
10381 if (!state.readingMore) {
10382 state.readingMore = true;
10383 process.nextTick(function() {
10384 maybeReadMore_(stream, state);
10389 function maybeReadMore_(stream, state) {
10390 var len = state.length;
10391 while (!state.reading && !state.flowing && !state.ended &&
10392 state.length < state.highWaterMark) {
10393 debug('maybeReadMore read
0');
10395 if (len === state.length)
10396 // didn't get any data, stop spinning.
10399 len = state.length;
10401 state.readingMore = false;
10404 // abstract method. to be overridden in specific implementation classes.
10405 // call cb(er, data) where data is <= n in length.
10406 // for virtual (non-string, non-buffer) streams, "length" is somewhat
10407 // arbitrary, and perhaps not very meaningful.
10408 Readable.prototype._read = function(n) {
10409 this.emit('error', new Error('not implemented'));
10412 Readable.prototype.pipe = function(dest, pipeOpts) {
10414 var state = this._readableState;
10416 switch (state.pipesCount) {
10418 state.pipes = dest;
10421 state.pipes = [state.pipes, dest];
10424 state.pipes.push(dest);
10427 state.pipesCount +=
1;
10428 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
10430 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
10431 dest !== process.stdout &&
10432 dest !== process.stderr;
10434 var endFn = doEnd ? onend : cleanup;
10435 if (state.endEmitted)
10436 process.nextTick(endFn);
10438 src.once('end', endFn);
10440 dest.on('unpipe', onunpipe);
10441 function onunpipe(readable) {
10443 if (readable === src) {
10453 // when the dest drains, it reduces the awaitDrain counter
10454 // on the source. This would be more elegant with a .once()
10455 // handler in flow(), but adding and removing repeatedly is
10457 var ondrain = pipeOnDrain(src);
10458 dest.on('drain', ondrain);
10460 function cleanup() {
10462 // cleanup event handlers once the pipe is broken
10463 dest.removeListener('close', onclose);
10464 dest.removeListener('finish', onfinish);
10465 dest.removeListener('drain', ondrain);
10466 dest.removeListener('error', onerror);
10467 dest.removeListener('unpipe', onunpipe);
10468 src.removeListener('end', onend);
10469 src.removeListener('end', cleanup);
10470 src.removeListener('data', ondata);
10472 // if the reader is waiting for a drain event from this
10473 // specific writer, then it would cause it to never start
10475 // So, if this is awaiting a drain, then we just call it now.
10476 // If we don't know, then assume that we are waiting for one.
10477 if (state.awaitDrain &&
10478 (!dest._writableState || dest._writableState.needDrain))
10482 src.on('data', ondata);
10483 function ondata(chunk) {
10485 var ret = dest.write(chunk);
10486 if (false === ret) {
10487 debug('false write response, pause',
10488 src._readableState.awaitDrain);
10489 src._readableState.awaitDrain++;
10494 // if the dest has an error, then stop piping into it.
10495 // however, don't suppress the throwing behavior for this.
10496 function onerror(er) {
10497 debug('onerror', er);
10499 dest.removeListener('error', onerror);
10500 if (EE.listenerCount(dest, 'error') ===
0)
10501 dest.emit('error', er);
10503 // This is a brutally ugly hack to make sure that our error handler
10504 // is attached before any userland ones. NEVER DO THIS.
10505 if (!dest._events || !dest._events.error)
10506 dest.on('error', onerror);
10507 else if (isArray(dest._events.error))
10508 dest._events.error.unshift(onerror);
10510 dest._events.error = [onerror, dest._events.error];
10514 // Both close and finish should trigger unpipe, but only once.
10515 function onclose() {
10516 dest.removeListener('finish', onfinish);
10519 dest.once('close', onclose);
10520 function onfinish() {
10522 dest.removeListener('close', onclose);
10525 dest.once('finish', onfinish);
10527 function unpipe() {
10532 // tell the dest that it's being piped to
10533 dest.emit('pipe', src);
10535 // start the flow if it hasn't been started already.
10536 if (!state.flowing) {
10537 debug('pipe resume');
10544 function pipeOnDrain(src) {
10545 return function() {
10546 var state = src._readableState;
10547 debug('pipeOnDrain', state.awaitDrain);
10548 if (state.awaitDrain)
10549 state.awaitDrain--;
10550 if (state.awaitDrain ===
0 && EE.listenerCount(src, 'data')) {
10551 state.flowing = true;
10558 Readable.prototype.unpipe = function(dest) {
10559 var state = this._readableState;
10561 // if we're not piping anywhere, then do nothing.
10562 if (state.pipesCount ===
0)
10565 // just one destination. most common case.
10566 if (state.pipesCount ===
1) {
10567 // passed in one, but it's not the right one.
10568 if (dest && dest !== state.pipes)
10572 dest = state.pipes;
10575 state.pipes = null;
10576 state.pipesCount =
0;
10577 state.flowing = false;
10579 dest.emit('unpipe', this);
10583 // slow case. multiple pipe destinations.
10587 var dests = state.pipes;
10588 var len = state.pipesCount;
10589 state.pipes = null;
10590 state.pipesCount =
0;
10591 state.flowing = false;
10593 for (var i =
0; i < len; i++)
10594 dests[i].emit('unpipe', this);
10598 // try to find the right one.
10599 var i = indexOf(state.pipes, dest);
10603 state.pipes.splice(i,
1);
10604 state.pipesCount -=
1;
10605 if (state.pipesCount ===
1)
10606 state.pipes = state.pipes[
0];
10608 dest.emit('unpipe', this);
10613 // set up data events if they are asked for
10614 // Ensure readable listeners eventually get something
10615 Readable.prototype.on = function(ev, fn) {
10616 var res = Stream.prototype.on.call(this, ev, fn);
10618 // If listening to data, and it has not explicitly been paused,
10619 // then call resume to start the flow of data on the next tick.
10620 if (ev === 'data' && false !== this._readableState.flowing) {
10624 if (ev === 'readable' && this.readable) {
10625 var state = this._readableState;
10626 if (!state.readableListening) {
10627 state.readableListening = true;
10628 state.emittedReadable = false;
10629 state.needReadable = true;
10630 if (!state.reading) {
10632 process.nextTick(function() {
10633 debug('readable nexttick read
0');
10636 } else if (state.length) {
10637 emitReadable(this, state);
10644 Readable.prototype.addListener = Readable.prototype.on;
10646 // pause() and resume() are remnants of the legacy readable stream API
10647 // If the user uses them, then switch into old mode.
10648 Readable.prototype.resume = function() {
10649 var state = this._readableState;
10650 if (!state.flowing) {
10652 state.flowing = true;
10653 if (!state.reading) {
10654 debug('resume read
0');
10657 resume(this, state);
10662 function resume(stream, state) {
10663 if (!state.resumeScheduled) {
10664 state.resumeScheduled = true;
10665 process.nextTick(function() {
10666 resume_(stream, state);
10671 function resume_(stream, state) {
10672 state.resumeScheduled = false;
10673 stream.emit('resume');
10675 if (state.flowing && !state.reading)
10679 Readable.prototype.pause = function() {
10680 debug('call pause flowing=%j', this._readableState.flowing);
10681 if (false !== this._readableState.flowing) {
10683 this._readableState.flowing = false;
10684 this.emit('pause');
10689 function flow(stream) {
10690 var state = stream._readableState;
10691 debug('flow', state.flowing);
10692 if (state.flowing) {
10694 var chunk = stream.read();
10695 } while (null !== chunk && state.flowing);
10699 // wrap an old-style stream as the async data source.
10700 // This is *not* part of the readable stream interface.
10701 // It is an ugly unfortunate mess of history.
10702 Readable.prototype.wrap = function(stream) {
10703 var state = this._readableState;
10704 var paused = false;
10707 stream.on('end', function() {
10708 debug('wrapped end');
10709 if (state.decoder && !state.ended) {
10710 var chunk = state.decoder.end();
10711 if (chunk && chunk.length)
10718 stream.on('data', function(chunk) {
10719 debug('wrapped data');
10721 chunk = state.decoder.write(chunk);
10722 if (!chunk || !state.objectMode && !chunk.length)
10725 var ret = self.push(chunk);
10732 // proxy all the other methods.
10733 // important when wrapping filters and duplexes.
10734 for (var i in stream) {
10735 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
10736 this[i] = function(method) { return function() {
10737 return stream[method].apply(stream, arguments);
10742 // proxy certain important events.
10743 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
10744 forEach(events, function(ev) {
10745 stream.on(ev, self.emit.bind(self, ev));
10748 // when we try to consume some more bytes, simply unpause the
10749 // underlying stream.
10750 self._read = function(n) {
10751 debug('wrapped _read', n);
10763 // exposed for testing purposes only.
10764 Readable._fromList = fromList;
10766 // Pluck off n bytes from an array of buffers.
10767 // Length is the combined lengths of all the buffers in the list.
10768 function fromList(n, state) {
10769 var list = state.buffer;
10770 var length = state.length;
10771 var stringMode = !!state.decoder;
10772 var objectMode = !!state.objectMode;
10775 // nothing in the list, definitely empty.
10776 if (list.length ===
0)
10781 else if (objectMode)
10782 ret = list.shift();
10783 else if (!n || n
>= length) {
10784 // read it all, truncate the array.
10786 ret = list.join('');
10788 ret = Buffer.concat(list, length);
10791 // read just some of it.
10792 if (n < list[
0].length) {
10793 // just take a part of the first list item.
10794 // slice is the same for buffers and strings.
10796 ret = buf.slice(
0, n);
10797 list[
0] = buf.slice(n);
10798 } else if (n === list[
0].length) {
10799 // first list is a perfect match
10800 ret = list.shift();
10803 // we have enough to cover it, but it spans past the first buffer.
10807 ret = new Buffer(n);
10810 for (var i =
0, l = list.length; i < l && c < n; i++) {
10812 var cpy = Math.min(n - c, buf.length);
10815 ret += buf.slice(
0, cpy);
10817 buf.copy(ret, c,
0, cpy);
10819 if (cpy < buf.length)
10820 list[
0] = buf.slice(cpy);
10832 function endReadable(stream) {
10833 var state = stream._readableState;
10835 // If we get here before consuming all the bytes, then that is a
10836 // bug in node. Should never happen.
10837 if (state.length
> 0)
10838 throw new Error('endReadable called on non-empty stream');
10840 if (!state.endEmitted) {
10841 state.ended = true;
10842 process.nextTick(function() {
10843 // Check that we didn't get one last unshift.
10844 if (!state.endEmitted && state.length ===
0) {
10845 state.endEmitted = true;
10846 stream.readable = false;
10847 stream.emit('end');
10853 function forEach (xs, f) {
10854 for (var i =
0, l = xs.length; i < l; i++) {
10859 function indexOf (xs, x) {
10860 for (var i =
0, l = xs.length; i < l; i++) {
10861 if (xs[i] === x) return i;
10866 }).call(this,require('_process'))
10867 },{
"./_stream_duplex":
16,
"_process":
14,
"buffer":
7,
"core-util-is":
21,
"events":
11,
"inherits":
12,
"isarray":
13,
"stream":
26,
"string_decoder/":
27,
"util":
6}],
19:[function(require,module,exports){
10868 // Copyright Joyent, Inc. and other Node contributors.
10870 // Permission is hereby granted, free of charge, to any person obtaining a
10871 // copy of this software and associated documentation files (the
10872 //
"Software"), to deal in the Software without restriction, including
10873 // without limitation the rights to use, copy, modify, merge, publish,
10874 // distribute, sublicense, and/or sell copies of the Software, and to permit
10875 // persons to whom the Software is furnished to do so, subject to the
10876 // following conditions:
10878 // The above copyright notice and this permission notice shall be included
10879 // in all copies or substantial portions of the Software.
10881 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10882 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10883 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10884 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10885 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10886 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10887 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10890 // a transform stream is a readable/writable stream where you do
10891 // something with the data. Sometimes it's called a
"filter",
10892 // but that's not a great name for it, since that implies a thing where
10893 // some bits pass through, and others are simply ignored. (That would
10894 // be a valid example of a transform, of course.)
10896 // While the output is causally related to the input, it's not a
10897 // necessarily symmetric or synchronous transformation. For example,
10898 // a zlib stream might take multiple plain-text writes(), and then
10899 // emit a single compressed chunk some time in the future.
10901 // Here's how this works:
10903 // The Transform stream has all the aspects of the readable and writable
10904 // stream classes. When you write(chunk), that calls _write(chunk,cb)
10905 // internally, and returns false if there's a lot of pending writes
10906 // buffered up. When you call read(), that calls _read(n) until
10907 // there's enough pending readable data buffered up.
10909 // In a transform stream, the written data is placed in a buffer. When
10910 // _read(n) is called, it transforms the queued up data, calling the
10911 // buffered _write cb's as it consumes chunks. If consuming a single
10912 // written chunk would result in multiple output chunks, then the first
10913 // outputted bit calls the readcb, and subsequent chunks just go into
10914 // the read buffer, and will cause it to emit 'readable' if necessary.
10916 // This way, back-pressure is actually determined by the reading side,
10917 // since _read has to be called to start processing a new chunk. However,
10918 // a pathological inflate type of transform can cause excessive buffering
10919 // here. For example, imagine a stream where every byte of input is
10920 // interpreted as an integer from
0-
255, and then results in that many
10921 // bytes of output. Writing the
4 bytes {ff,ff,ff,ff} would result in
10922 //
1kb of data being output. In this case, you could write a very small
10923 // amount of input, and end up with a very large amount of output. In
10924 // such a pathological inflating mechanism, there'd be no way to tell
10925 // the system to stop doing the transform. A single
4MB write could
10926 // cause the system to run out of memory.
10928 // However, even in such a pathological case, only a single written chunk
10929 // would be consumed, and then the rest would wait (un-transformed) until
10930 // the results of the previous transformed chunk were consumed.
10932 module.exports = Transform;
10934 var Duplex = require('./_stream_duplex');
10937 var util = require('core-util-is');
10938 util.inherits = require('inherits');
10941 util.inherits(Transform, Duplex);
10944 function TransformState(options, stream) {
10945 this.afterTransform = function(er, data) {
10946 return afterTransform(stream, er, data);
10949 this.needTransform = false;
10950 this.transforming = false;
10951 this.writecb = null;
10952 this.writechunk = null;
10955 function afterTransform(stream, er, data) {
10956 var ts = stream._transformState;
10957 ts.transforming = false;
10959 var cb = ts.writecb;
10962 return stream.emit('error', new Error('no writecb in Transform class'));
10964 ts.writechunk = null;
10967 if (!util.isNullOrUndefined(data))
10973 var rs = stream._readableState;
10974 rs.reading = false;
10975 if (rs.needReadable || rs.length < rs.highWaterMark) {
10976 stream._read(rs.highWaterMark);
10981 function Transform(options) {
10982 if (!(this instanceof Transform))
10983 return new Transform(options);
10985 Duplex.call(this, options);
10987 this._transformState = new TransformState(options, this);
10989 // when the writable side finishes, then flush out anything remaining.
10992 // start out asking for a readable event once data is transformed.
10993 this._readableState.needReadable = true;
10995 // we have implemented the _read method, and done the other things
10996 // that Readable wants before the first _read call, so unset the
10997 // sync guard flag.
10998 this._readableState.sync = false;
11000 this.once('prefinish', function() {
11001 if (util.isFunction(this._flush))
11002 this._flush(function(er) {
11010 Transform.prototype.push = function(chunk, encoding) {
11011 this._transformState.needTransform = false;
11012 return Duplex.prototype.push.call(this, chunk, encoding);
11015 // This is the part where you do stuff!
11016 // override this function in implementation classes.
11017 // 'chunk' is an input chunk.
11019 // Call `push(newChunk)` to pass along transformed output
11020 // to the readable side. You may call 'push' zero or more times.
11022 // Call `cb(err)` when you are done with this chunk. If you pass
11023 // an error, then that'll put the hurt on the whole operation. If you
11024 // never call cb(), then you'll never get another chunk.
11025 Transform.prototype._transform = function(chunk, encoding, cb) {
11026 throw new Error('not implemented');
11029 Transform.prototype._write = function(chunk, encoding, cb) {
11030 var ts = this._transformState;
11032 ts.writechunk = chunk;
11033 ts.writeencoding = encoding;
11034 if (!ts.transforming) {
11035 var rs = this._readableState;
11036 if (ts.needTransform ||
11038 rs.length < rs.highWaterMark)
11039 this._read(rs.highWaterMark);
11043 // Doesn't matter what the args are here.
11044 // _transform does all the work.
11045 // That we got here means that the readable side wants more data.
11046 Transform.prototype._read = function(n) {
11047 var ts = this._transformState;
11049 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
11050 ts.transforming = true;
11051 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11053 // mark that we need a transform, so that any data that comes in
11054 // will get processed, now that we've asked for it.
11055 ts.needTransform = true;
11060 function done(stream, er) {
11062 return stream.emit('error', er);
11064 // if there's nothing in the write buffer, then that means
11065 // that nothing more will ever be provided
11066 var ws = stream._writableState;
11067 var ts = stream._transformState;
11070 throw new Error('calling transform done when ws.length !=
0');
11072 if (ts.transforming)
11073 throw new Error('calling transform done when still transforming');
11075 return stream.push(null);
11078 },{"./_stream_duplex":
16,"core-util-is":
21,"inherits":
12}],
20:[function(require,module,exports){
11079 (function (process){
11080 // Copyright Joyent, Inc. and other Node contributors.
11082 // Permission is hereby granted, free of charge, to any person obtaining a
11083 // copy of this software and associated documentation files (the
11084 // "Software"), to deal in the Software without restriction, including
11085 // without limitation the rights to use, copy, modify, merge, publish,
11086 // distribute, sublicense, and/or sell copies of the Software, and to permit
11087 // persons to whom the Software is furnished to do so, subject to the
11088 // following conditions:
11090 // The above copyright notice and this permission notice shall be included
11091 // in all copies or substantial portions of the Software.
11093 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11094 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11095 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11096 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11097 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11098 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11099 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11101 // A bit simpler than readable streams.
11102 // Implement an async ._write(chunk, cb), and it'll handle all
11103 // the drain event emission and buffering.
11105 module.exports = Writable;
11108 var Buffer = require('buffer').Buffer;
11111 Writable.WritableState = WritableState;
11115 var util = require('core-util-is');
11116 util.inherits = require('inherits');
11119 var Stream = require('stream');
11121 util.inherits(Writable, Stream);
11123 function WriteReq(chunk, encoding, cb) {
11124 this.chunk = chunk;
11125 this.encoding = encoding;
11126 this.callback = cb;
11129 function WritableState(options, stream) {
11130 var Duplex = require('./_stream_duplex');
11132 options = options || {};
11134 // the point at which write() starts returning false
11135 // Note:
0 is a valid value, means that we always return false if
11136 // the entire buffer is not flushed immediately on write()
11137 var hwm = options.highWaterMark;
11138 var defaultHwm = options.objectMode ?
16 :
16 *
1024;
11139 this.highWaterMark = (hwm || hwm ===
0) ? hwm : defaultHwm;
11141 // object stream flag to indicate whether or not this stream
11142 // contains buffers or objects.
11143 this.objectMode = !!options.objectMode;
11145 if (stream instanceof Duplex)
11146 this.objectMode = this.objectMode || !!options.writableObjectMode;
11149 this.highWaterMark = ~~this.highWaterMark;
11151 this.needDrain = false;
11152 // at the start of calling end()
11153 this.ending = false;
11154 // when end() has been called, and returned
11155 this.ended = false;
11156 // when 'finish' is emitted
11157 this.finished = false;
11159 // should we decode strings into buffers before passing to _write?
11160 // this is here so that some node-core streams can optimize string
11161 // handling at a lower level.
11162 var noDecode = options.decodeStrings === false;
11163 this.decodeStrings = !noDecode;
11165 // Crypto is kind of old and crusty. Historically, its default string
11166 // encoding is 'binary' so we have to make this configurable.
11167 // Everything else in the universe uses 'utf8', though.
11168 this.defaultEncoding = options.defaultEncoding || 'utf8';
11170 // not an actual buffer we keep track of, but a measurement
11171 // of how much we're waiting to get pushed to some underlying
11175 // a flag to see when we're in the middle of a write.
11176 this.writing = false;
11178 // when true all writes will be buffered until .uncork() call
11181 // a flag to be able to tell if the onwrite cb is called immediately,
11182 // or on a later tick. We set this to true at first, because any
11183 // actions that shouldn't happen until "later" should generally also
11184 // not happen before the first write call.
11187 // a flag to know if we're processing previously buffered items, which
11188 // may call the _write() callback in the same tick, so that we don't
11189 // end up in an overlapped onwrite situation.
11190 this.bufferProcessing = false;
11192 // the callback that's passed to _write(chunk,cb)
11193 this.onwrite = function(er) {
11194 onwrite(stream, er);
11197 // the callback that the user supplies to write(chunk,encoding,cb)
11198 this.writecb = null;
11200 // the amount that is being written when _write is called.
11205 // number of pending user-supplied write callbacks
11206 // this must be
0 before 'finish' can be emitted
11207 this.pendingcb =
0;
11209 // emit prefinish if the only thing we're waiting for is _write cbs
11210 // This is relevant for synchronous Transform streams
11211 this.prefinished = false;
11213 // True if the error was already emitted and should not be thrown again
11214 this.errorEmitted = false;
11217 function Writable(options) {
11218 var Duplex = require('./_stream_duplex');
11220 // Writable ctor is applied to Duplexes, though they're not
11221 // instanceof Writable, they're instanceof Readable.
11222 if (!(this instanceof Writable) && !(this instanceof Duplex))
11223 return new Writable(options);
11225 this._writableState = new WritableState(options, this);
11228 this.writable = true;
11233 // Otherwise people can pipe Writable streams, which is just wrong.
11234 Writable.prototype.pipe = function() {
11235 this.emit('error', new Error('Cannot pipe. Not readable.'));
11239 function writeAfterEnd(stream, state, cb) {
11240 var er = new Error('write after end');
11241 // TODO: defer error events consistently everywhere, not just the cb
11242 stream.emit('error', er);
11243 process.nextTick(function() {
11248 // If we get something that is not a buffer, string, null, or undefined,
11249 // and we're not in objectMode, then that's an error.
11250 // Otherwise stream chunks are all considered to be of length=
1, and the
11251 // watermarks determine how many objects to keep in the buffer, rather than
11252 // how many bytes or characters.
11253 function validChunk(stream, state, chunk, cb) {
11255 if (!util.isBuffer(chunk) &&
11256 !util.isString(chunk) &&
11257 !util.isNullOrUndefined(chunk) &&
11258 !state.objectMode) {
11259 var er = new TypeError('Invalid non-string/buffer chunk');
11260 stream.emit('error', er);
11261 process.nextTick(function() {
11269 Writable.prototype.write = function(chunk, encoding, cb) {
11270 var state = this._writableState;
11273 if (util.isFunction(encoding)) {
11278 if (util.isBuffer(chunk))
11279 encoding = 'buffer';
11280 else if (!encoding)
11281 encoding = state.defaultEncoding;
11283 if (!util.isFunction(cb))
11284 cb = function() {};
11287 writeAfterEnd(this, state, cb);
11288 else if (validChunk(this, state, chunk, cb)) {
11290 ret = writeOrBuffer(this, state, chunk, encoding, cb);
11296 Writable.prototype.cork = function() {
11297 var state = this._writableState;
11302 Writable.prototype.uncork = function() {
11303 var state = this._writableState;
11305 if (state.corked) {
11308 if (!state.writing &&
11311 !state.bufferProcessing &&
11312 state.buffer.length)
11313 clearBuffer(this, state);
11317 function decodeChunk(state, chunk, encoding) {
11318 if (!state.objectMode &&
11319 state.decodeStrings !== false &&
11320 util.isString(chunk)) {
11321 chunk = new Buffer(chunk, encoding);
11326 // if we're already writing something, then just put this
11327 // in the queue, and wait our turn. Otherwise, call _write
11328 // If we return false, then we need a drain event, so set that flag.
11329 function writeOrBuffer(stream, state, chunk, encoding, cb) {
11330 chunk = decodeChunk(state, chunk, encoding);
11331 if (util.isBuffer(chunk))
11332 encoding = 'buffer';
11333 var len = state.objectMode ?
1 : chunk.length;
11335 state.length += len;
11337 var ret = state.length < state.highWaterMark;
11338 // we must ensure that previous needDrain will not be reset to false.
11340 state.needDrain = true;
11342 if (state.writing || state.corked)
11343 state.buffer.push(new WriteReq(chunk, encoding, cb));
11345 doWrite(stream, state, false, len, chunk, encoding, cb);
11350 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
11351 state.writelen = len;
11352 state.writecb = cb;
11353 state.writing = true;
11356 stream._writev(chunk, state.onwrite);
11358 stream._write(chunk, encoding, state.onwrite);
11359 state.sync = false;
11362 function onwriteError(stream, state, sync, er, cb) {
11364 process.nextTick(function() {
11373 stream._writableState.errorEmitted = true;
11374 stream.emit('error', er);
11377 function onwriteStateUpdate(state) {
11378 state.writing = false;
11379 state.writecb = null;
11380 state.length -= state.writelen;
11381 state.writelen =
0;
11384 function onwrite(stream, er) {
11385 var state = stream._writableState;
11386 var sync = state.sync;
11387 var cb = state.writecb;
11389 onwriteStateUpdate(state);
11392 onwriteError(stream, state, sync, er, cb);
11394 // Check if we're actually ready to finish, but don't emit yet
11395 var finished = needFinish(stream, state);
11399 !state.bufferProcessing &&
11400 state.buffer.length) {
11401 clearBuffer(stream, state);
11405 process.nextTick(function() {
11406 afterWrite(stream, state, finished, cb);
11409 afterWrite(stream, state, finished, cb);
11414 function afterWrite(stream, state, finished, cb) {
11416 onwriteDrain(stream, state);
11419 finishMaybe(stream, state);
11422 // Must force callback to be called on nextTick, so that we don't
11423 // emit 'drain' before the write() consumer gets the 'false' return
11424 // value, and has a chance to attach a 'drain' listener.
11425 function onwriteDrain(stream, state) {
11426 if (state.length ===
0 && state.needDrain) {
11427 state.needDrain = false;
11428 stream.emit('drain');
11433 // if there's something in the buffer waiting, then process it
11434 function clearBuffer(stream, state) {
11435 state.bufferProcessing = true;
11437 if (stream._writev && state.buffer.length
> 1) {
11438 // Fast case, write everything using _writev()
11440 for (var c =
0; c < state.buffer.length; c++)
11441 cbs.push(state.buffer[c].callback);
11443 // count the one we are adding, as well.
11444 // TODO(isaacs) clean this up
11446 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
11447 for (var i =
0; i < cbs.length; i++) {
11456 // Slow case, write chunks one-by-one
11457 for (var c =
0; c < state.buffer.length; c++) {
11458 var entry = state.buffer[c];
11459 var chunk = entry.chunk;
11460 var encoding = entry.encoding;
11461 var cb = entry.callback;
11462 var len = state.objectMode ?
1 : chunk.length;
11464 doWrite(stream, state, false, len, chunk, encoding, cb);
11466 // if we didn't call the onwrite immediately, then
11467 // it means that we need to wait until it does.
11468 // also, that means that the chunk and cb are currently
11469 // being processed, so move the buffer counter past them.
11470 if (state.writing) {
11476 if (c < state.buffer.length)
11477 state.buffer = state.buffer.slice(c);
11479 state.buffer.length =
0;
11482 state.bufferProcessing = false;
11485 Writable.prototype._write = function(chunk, encoding, cb) {
11486 cb(new Error('not implemented'));
11490 Writable.prototype._writev = null;
11492 Writable.prototype.end = function(chunk, encoding, cb) {
11493 var state = this._writableState;
11495 if (util.isFunction(chunk)) {
11499 } else if (util.isFunction(encoding)) {
11504 if (!util.isNullOrUndefined(chunk))
11505 this.write(chunk, encoding);
11507 // .end() fully uncorks
11508 if (state.corked) {
11513 // ignore unnecessary end() calls.
11514 if (!state.ending && !state.finished)
11515 endWritable(this, state, cb);
11519 function needFinish(stream, state) {
11520 return (state.ending &&
11521 state.length ===
0 &&
11526 function prefinish(stream, state) {
11527 if (!state.prefinished) {
11528 state.prefinished = true;
11529 stream.emit('prefinish');
11533 function finishMaybe(stream, state) {
11534 var need = needFinish(stream, state);
11536 if (state.pendingcb ===
0) {
11537 prefinish(stream, state);
11538 state.finished = true;
11539 stream.emit('finish');
11541 prefinish(stream, state);
11546 function endWritable(stream, state, cb) {
11547 state.ending = true;
11548 finishMaybe(stream, state);
11550 if (state.finished)
11551 process.nextTick(cb);
11553 stream.once('finish', cb);
11555 state.ended = true;
11558 }).call(this,require('_process'))
11559 },{
"./_stream_duplex":
16,
"_process":
14,
"buffer":
7,
"core-util-is":
21,
"inherits":
12,
"stream":
26}],
21:[function(require,module,exports){
11560 (function (Buffer){
11561 // Copyright Joyent, Inc. and other Node contributors.
11563 // Permission is hereby granted, free of charge, to any person obtaining a
11564 // copy of this software and associated documentation files (the
11565 //
"Software"), to deal in the Software without restriction, including
11566 // without limitation the rights to use, copy, modify, merge, publish,
11567 // distribute, sublicense, and/or sell copies of the Software, and to permit
11568 // persons to whom the Software is furnished to do so, subject to the
11569 // following conditions:
11571 // The above copyright notice and this permission notice shall be included
11572 // in all copies or substantial portions of the Software.
11574 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11575 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11576 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11577 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11578 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11579 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11580 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11582 // NOTE: These type checking functions intentionally don't use `instanceof`
11583 // because it is fragile and can be easily faked with `Object.create()`.
11584 function isArray(ar) {
11585 return Array.isArray(ar);
11587 exports.isArray = isArray;
11589 function isBoolean(arg) {
11590 return typeof arg === 'boolean';
11592 exports.isBoolean = isBoolean;
11594 function isNull(arg) {
11595 return arg === null;
11597 exports.isNull = isNull;
11599 function isNullOrUndefined(arg) {
11600 return arg == null;
11602 exports.isNullOrUndefined = isNullOrUndefined;
11604 function isNumber(arg) {
11605 return typeof arg === 'number';
11607 exports.isNumber = isNumber;
11609 function isString(arg) {
11610 return typeof arg === 'string';
11612 exports.isString = isString;
11614 function isSymbol(arg) {
11615 return typeof arg === 'symbol';
11617 exports.isSymbol = isSymbol;
11619 function isUndefined(arg) {
11620 return arg === void
0;
11622 exports.isUndefined = isUndefined;
11624 function isRegExp(re) {
11625 return isObject(re) && objectToString(re) === '[object RegExp]';
11627 exports.isRegExp = isRegExp;
11629 function isObject(arg) {
11630 return typeof arg === 'object' && arg !== null;
11632 exports.isObject = isObject;
11634 function isDate(d) {
11635 return isObject(d) && objectToString(d) === '[object Date]';
11637 exports.isDate = isDate;
11639 function isError(e) {
11640 return isObject(e) &&
11641 (objectToString(e) === '[object Error]' || e instanceof Error);
11643 exports.isError = isError;
11645 function isFunction(arg) {
11646 return typeof arg === 'function';
11648 exports.isFunction = isFunction;
11650 function isPrimitive(arg) {
11651 return arg === null ||
11652 typeof arg === 'boolean' ||
11653 typeof arg === 'number' ||
11654 typeof arg === 'string' ||
11655 typeof arg === 'symbol' || // ES6 symbol
11656 typeof arg === 'undefined';
11658 exports.isPrimitive = isPrimitive;
11660 function isBuffer(arg) {
11661 return Buffer.isBuffer(arg);
11663 exports.isBuffer = isBuffer;
11665 function objectToString(o) {
11666 return Object.prototype.toString.call(o);
11668 }).call(this,require(
"buffer").Buffer)
11669 },{
"buffer":
7}],
22:[function(require,module,exports){
11670 module.exports = require(
"./lib/_stream_passthrough.js")
11672 },{
"./lib/_stream_passthrough.js":
17}],
23:[function(require,module,exports){
11673 exports = module.exports = require('./lib/_stream_readable.js');
11674 exports.Stream = require('stream');
11675 exports.Readable = exports;
11676 exports.Writable = require('./lib/_stream_writable.js');
11677 exports.Duplex = require('./lib/_stream_duplex.js');
11678 exports.Transform = require('./lib/_stream_transform.js');
11679 exports.PassThrough = require('./lib/_stream_passthrough.js');
11681 },{
"./lib/_stream_duplex.js":
16,
"./lib/_stream_passthrough.js":
17,
"./lib/_stream_readable.js":
18,
"./lib/_stream_transform.js":
19,
"./lib/_stream_writable.js":
20,
"stream":
26}],
24:[function(require,module,exports){
11682 module.exports = require(
"./lib/_stream_transform.js")
11684 },{
"./lib/_stream_transform.js":
19}],
25:[function(require,module,exports){
11685 module.exports = require(
"./lib/_stream_writable.js")
11687 },{
"./lib/_stream_writable.js":
20}],
26:[function(require,module,exports){
11688 // Copyright Joyent, Inc. and other Node contributors.
11690 // Permission is hereby granted, free of charge, to any person obtaining a
11691 // copy of this software and associated documentation files (the
11692 //
"Software"), to deal in the Software without restriction, including
11693 // without limitation the rights to use, copy, modify, merge, publish,
11694 // distribute, sublicense, and/or sell copies of the Software, and to permit
11695 // persons to whom the Software is furnished to do so, subject to the
11696 // following conditions:
11698 // The above copyright notice and this permission notice shall be included
11699 // in all copies or substantial portions of the Software.
11701 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11702 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11703 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11704 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11705 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11706 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11707 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11709 module.exports = Stream;
11711 var EE = require('events').EventEmitter;
11712 var inherits = require('inherits');
11714 inherits(Stream, EE);
11715 Stream.Readable = require('readable-stream/readable.js');
11716 Stream.Writable = require('readable-stream/writable.js');
11717 Stream.Duplex = require('readable-stream/duplex.js');
11718 Stream.Transform = require('readable-stream/transform.js');
11719 Stream.PassThrough = require('readable-stream/passthrough.js');
11721 // Backwards-compat with node
0.4.x
11722 Stream.Stream = Stream;
11726 // old-style streams. Note that the pipe method (the only relevant
11727 // part of this class) is overridden in the Readable class.
11729 function Stream() {
11733 Stream.prototype.pipe = function(dest, options) {
11736 function ondata(chunk) {
11737 if (dest.writable) {
11738 if (false === dest.write(chunk) && source.pause) {
11744 source.on('data', ondata);
11746 function ondrain() {
11747 if (source.readable && source.resume) {
11752 dest.on('drain', ondrain);
11754 // If the 'end' option is not supplied, dest.end() will be called when
11755 // source gets the 'end' or 'close' events. Only dest.end() once.
11756 if (!dest._isStdio && (!options || options.end !== false)) {
11757 source.on('end', onend);
11758 source.on('close', onclose);
11761 var didOnEnd = false;
11763 if (didOnEnd) return;
11770 function onclose() {
11771 if (didOnEnd) return;
11774 if (typeof dest.destroy === 'function') dest.destroy();
11777 // don't leave dangling pipes when there are errors.
11778 function onerror(er) {
11780 if (EE.listenerCount(this, 'error') ===
0) {
11781 throw er; // Unhandled stream error in pipe.
11785 source.on('error', onerror);
11786 dest.on('error', onerror);
11788 // remove all the event listeners that were added.
11789 function cleanup() {
11790 source.removeListener('data', ondata);
11791 dest.removeListener('drain', ondrain);
11793 source.removeListener('end', onend);
11794 source.removeListener('close', onclose);
11796 source.removeListener('error', onerror);
11797 dest.removeListener('error', onerror);
11799 source.removeListener('end', cleanup);
11800 source.removeListener('close', cleanup);
11802 dest.removeListener('close', cleanup);
11805 source.on('end', cleanup);
11806 source.on('close', cleanup);
11808 dest.on('close', cleanup);
11810 dest.emit('pipe', source);
11812 // Allow for unix-like usage: A.pipe(B).pipe(C)
11816 },{
"events":
11,
"inherits":
12,
"readable-stream/duplex.js":
15,
"readable-stream/passthrough.js":
22,
"readable-stream/readable.js":
23,
"readable-stream/transform.js":
24,
"readable-stream/writable.js":
25}],
27:[function(require,module,exports){
11817 // Copyright Joyent, Inc. and other Node contributors.
11819 // Permission is hereby granted, free of charge, to any person obtaining a
11820 // copy of this software and associated documentation files (the
11821 //
"Software"), to deal in the Software without restriction, including
11822 // without limitation the rights to use, copy, modify, merge, publish,
11823 // distribute, sublicense, and/or sell copies of the Software, and to permit
11824 // persons to whom the Software is furnished to do so, subject to the
11825 // following conditions:
11827 // The above copyright notice and this permission notice shall be included
11828 // in all copies or substantial portions of the Software.
11830 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11831 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11832 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11833 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11834 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11835 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11836 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11838 var Buffer = require('buffer').Buffer;
11840 var isBufferEncoding = Buffer.isEncoding
11841 || function(encoding) {
11842 switch (encoding && encoding.toLowerCase()) {
11843 case 'hex': case 'utf8': case 'utf-
8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-
2': case 'utf16le': case 'utf-
16le': case 'raw': return true;
11844 default: return false;
11849 function assertEncoding(encoding) {
11850 if (encoding && !isBufferEncoding(encoding)) {
11851 throw new Error('Unknown encoding: ' + encoding);
11855 // StringDecoder provides an interface for efficiently splitting a series of
11856 // buffers into a series of JS strings without breaking apart multi-byte
11857 // characters. CESU-
8 is handled as part of the UTF-
8 encoding.
11859 // @TODO Handling all encodings inside a single object makes it very difficult
11860 // to reason about this code, so it should be split up in the future.
11861 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-
8 code
11862 // points as used by CESU-
8.
11863 var StringDecoder = exports.StringDecoder = function(encoding) {
11864 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
11865 assertEncoding(encoding);
11866 switch (this.encoding) {
11868 // CESU-
8 represents each of Surrogate Pair by
3-bytes
11869 this.surrogateSize =
3;
11873 // UTF-
16 represents each of Surrogate Pair by
2-bytes
11874 this.surrogateSize =
2;
11875 this.detectIncompleteChar = utf16DetectIncompleteChar;
11878 // Base-
64 stores
3 bytes in
4 chars, and pads the remainder.
11879 this.surrogateSize =
3;
11880 this.detectIncompleteChar = base64DetectIncompleteChar;
11883 this.write = passThroughWrite;
11887 // Enough space to store all bytes of a single character. UTF-
8 needs
4
11888 // bytes, but CESU-
8 may require up to
6 (
3 bytes per surrogate).
11889 this.charBuffer = new Buffer(
6);
11890 // Number of bytes received for the current incomplete multi-byte character.
11891 this.charReceived =
0;
11892 // Number of bytes expected for the current incomplete multi-byte character.
11893 this.charLength =
0;
11897 // write decodes the given buffer and returns it as JS string that is
11898 // guaranteed to not contain any partial multi-byte characters. Any partial
11899 // character found at the end of the buffer is buffered up, and will be
11900 // returned when calling write again with the remaining bytes.
11902 // Note: Converting a Buffer containing an orphan surrogate to a String
11903 // currently works, but converting a String to a Buffer (via `new Buffer`, or
11904 // Buffer#write) will replace incomplete surrogates with the unicode
11905 // replacement character. See https://codereview.chromium.org/
121173009/ .
11906 StringDecoder.prototype.write = function(buffer) {
11908 // if our last write ended with an incomplete multibyte character
11909 while (this.charLength) {
11910 // determine how many remaining bytes this buffer has to offer for this char
11911 var available = (buffer.length
>= this.charLength - this.charReceived) ?
11912 this.charLength - this.charReceived :
11915 // add the new bytes to the char buffer
11916 buffer.copy(this.charBuffer, this.charReceived,
0, available);
11917 this.charReceived += available;
11919 if (this.charReceived < this.charLength) {
11920 // still not enough chars in this buffer? wait for more ...
11924 // remove bytes belonging to the current character from the buffer
11925 buffer = buffer.slice(available, buffer.length);
11927 // get the character that was split
11928 charStr = this.charBuffer.slice(
0, this.charLength).toString(this.encoding);
11930 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
11931 var charCode = charStr.charCodeAt(charStr.length -
1);
11932 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
11933 this.charLength += this.surrogateSize;
11937 this.charReceived = this.charLength =
0;
11939 // if there are no more bytes in this buffer, just emit our char
11940 if (buffer.length ===
0) {
11946 // determine and set charLength / charReceived
11947 this.detectIncompleteChar(buffer);
11949 var end = buffer.length;
11950 if (this.charLength) {
11951 // buffer the incomplete character bytes we got
11952 buffer.copy(this.charBuffer,
0, buffer.length - this.charReceived, end);
11953 end -= this.charReceived;
11956 charStr += buffer.toString(this.encoding,
0, end);
11958 var end = charStr.length -
1;
11959 var charCode = charStr.charCodeAt(end);
11960 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
11961 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
11962 var size = this.surrogateSize;
11963 this.charLength += size;
11964 this.charReceived += size;
11965 this.charBuffer.copy(this.charBuffer, size,
0, size);
11966 buffer.copy(this.charBuffer,
0,
0, size);
11967 return charStr.substring(
0, end);
11970 // or just emit the charStr
11974 // detectIncompleteChar determines if there is an incomplete UTF-
8 character at
11975 // the end of the given buffer. If so, it sets this.charLength to the byte
11976 // length that character, and sets this.charReceived to the number of bytes
11977 // that are available for this character.
11978 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
11979 // determine how many bytes we have to check at the end of this buffer
11980 var i = (buffer.length
>=
3) ?
3 : buffer.length;
11982 // Figure out if one of the last i bytes of our buffer announces an
11983 // incomplete char.
11984 for (; i
> 0; i--) {
11985 var c = buffer[buffer.length - i];
11987 // See http://en.wikipedia.org/wiki/UTF-
8#Description
11990 if (i ==
1 && c
>> 5 ==
0x06) {
11991 this.charLength =
2;
11996 if (i <=
2 && c
>> 4 ==
0x0E) {
11997 this.charLength =
3;
12002 if (i <=
3 && c
>> 3 ==
0x1E) {
12003 this.charLength =
4;
12007 this.charReceived = i;
12010 StringDecoder.prototype.end = function(buffer) {
12012 if (buffer && buffer.length)
12013 res = this.write(buffer);
12015 if (this.charReceived) {
12016 var cr = this.charReceived;
12017 var buf = this.charBuffer;
12018 var enc = this.encoding;
12019 res += buf.slice(
0, cr).toString(enc);
12025 function passThroughWrite(buffer) {
12026 return buffer.toString(this.encoding);
12029 function utf16DetectIncompleteChar(buffer) {
12030 this.charReceived = buffer.length %
2;
12031 this.charLength = this.charReceived ?
2 :
0;
12034 function base64DetectIncompleteChar(buffer) {
12035 this.charReceived = buffer.length %
3;
12036 this.charLength = this.charReceived ?
3 :
0;
12039 },{
"buffer":
7}],
28:[function(require,module,exports){
12040 module.exports = function isBuffer(arg) {
12041 return arg && typeof arg === 'object'
12042 && typeof arg.copy === 'function'
12043 && typeof arg.fill === 'function'
12044 && typeof arg.readUInt8 === 'function';
12046 },{}],
29:[function(require,module,exports){
12047 (function (process,global){
12048 // Copyright Joyent, Inc. and other Node contributors.
12050 // Permission is hereby granted, free of charge, to any person obtaining a
12051 // copy of this software and associated documentation files (the
12052 //
"Software"), to deal in the Software without restriction, including
12053 // without limitation the rights to use, copy, modify, merge, publish,
12054 // distribute, sublicense, and/or sell copies of the Software, and to permit
12055 // persons to whom the Software is furnished to do so, subject to the
12056 // following conditions:
12058 // The above copyright notice and this permission notice shall be included
12059 // in all copies or substantial portions of the Software.
12061 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12062 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12063 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12064 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12065 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12066 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12067 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12069 var formatRegExp = /%[sdj%]/g;
12070 exports.format = function(f) {
12071 if (!isString(f)) {
12073 for (var i =
0; i < arguments.length; i++) {
12074 objects.push(inspect(arguments[i]));
12076 return objects.join(' ');
12080 var args = arguments;
12081 var len = args.length;
12082 var str = String(f).replace(formatRegExp, function(x) {
12083 if (x === '%%') return '%';
12084 if (i
>= len) return x;
12086 case '%s': return String(args[i++]);
12087 case '%d': return Number(args[i++]);
12090 return JSON.stringify(args[i++]);
12092 return '[Circular]';
12098 for (var x = args[i]; i < len; x = args[++i]) {
12099 if (isNull(x) || !isObject(x)) {
12102 str += ' ' + inspect(x);
12109 // Mark that a method should not be used.
12110 // Returns a modified function which warns once by default.
12111 // If --no-deprecation is set, then it is a no-op.
12112 exports.deprecate = function(fn, msg) {
12113 // Allow for deprecating things in the process of starting up.
12114 if (isUndefined(global.process)) {
12115 return function() {
12116 return exports.deprecate(fn, msg).apply(this, arguments);
12120 if (process.noDeprecation === true) {
12124 var warned = false;
12125 function deprecated() {
12127 if (process.throwDeprecation) {
12128 throw new Error(msg);
12129 } else if (process.traceDeprecation) {
12130 console.trace(msg);
12132 console.error(msg);
12136 return fn.apply(this, arguments);
12145 exports.debuglog = function(set) {
12146 if (isUndefined(debugEnviron))
12147 debugEnviron = process.env.NODE_DEBUG || '';
12148 set = set.toUpperCase();
12149 if (!debugs[set]) {
12150 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
12151 var pid = process.pid;
12152 debugs[set] = function() {
12153 var msg = exports.format.apply(exports, arguments);
12154 console.error('%s %d: %s', set, pid, msg);
12157 debugs[set] = function() {};
12160 return debugs[set];
12165 * Echos the value of a value. Trys to print the value out
12166 * in the best way possible given the different types.
12168 * @param {Object} obj The object to print out.
12169 * @param {Object} opts Optional options object that alters the output.
12171 /* legacy: obj, showHidden, depth, colors*/
12172 function inspect(obj, opts) {
12176 stylize: stylizeNoColor
12179 if (arguments.length
>=
3) ctx.depth = arguments[
2];
12180 if (arguments.length
>=
4) ctx.colors = arguments[
3];
12181 if (isBoolean(opts)) {
12183 ctx.showHidden = opts;
12185 // got an "options" object
12186 exports._extend(ctx, opts);
12188 // set default options
12189 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
12190 if (isUndefined(ctx.depth)) ctx.depth =
2;
12191 if (isUndefined(ctx.colors)) ctx.colors = false;
12192 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
12193 if (ctx.colors) ctx.stylize = stylizeWithColor;
12194 return formatValue(ctx, obj, ctx.depth);
12196 exports.inspect = inspect;
12199 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
12202 'italic' : [
3,
23],
12203 'underline' : [
4,
24],
12204 'inverse' : [
7,
27],
12205 'white' : [
37,
39],
12207 'black' : [
30,
39],
12210 'green' : [
32,
39],
12211 'magenta' : [
35,
39],
12213 'yellow' : [
33,
39]
12216 // Don't use 'blue' not visible on cmd.exe
12219 'number': 'yellow',
12220 'boolean': 'yellow',
12221 'undefined': 'grey',
12225 // "name": intentionally not styling
12230 function stylizeWithColor(str, styleType) {
12231 var style = inspect.styles[styleType];
12234 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
12235 '\u001b[' + inspect.colors[style][
1] + 'm';
12242 function stylizeNoColor(str, styleType) {
12247 function arrayToHash(array) {
12250 array.forEach(function(val, idx) {
12258 function formatValue(ctx, value, recurseTimes) {
12259 // Provide a hook for user-specified inspect functions.
12260 // Check that value is an object with an inspect function on it
12261 if (ctx.customInspect &&
12263 isFunction(value.inspect) &&
12264 // Filter out the util module, it's inspect function is special
12265 value.inspect !== exports.inspect &&
12266 // Also filter out any prototype objects using the circular check.
12267 !(value.constructor && value.constructor.prototype === value)) {
12268 var ret = value.inspect(recurseTimes, ctx);
12269 if (!isString(ret)) {
12270 ret = formatValue(ctx, ret, recurseTimes);
12275 // Primitive types cannot have properties
12276 var primitive = formatPrimitive(ctx, value);
12281 // Look up the keys of the object.
12282 var keys = Object.keys(value);
12283 var visibleKeys = arrayToHash(keys);
12285 if (ctx.showHidden) {
12286 keys = Object.getOwnPropertyNames(value);
12289 // IE doesn't make error fields non-enumerable
12290 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
12292 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
12293 return formatError(value);
12296 // Some type of object without properties can be shortcutted.
12297 if (keys.length ===
0) {
12298 if (isFunction(value)) {
12299 var name = value.name ? ': ' + value.name : '';
12300 return ctx.stylize('[Function' + name + ']', 'special');
12302 if (isRegExp(value)) {
12303 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
12305 if (isDate(value)) {
12306 return ctx.stylize(Date.prototype.toString.call(value), 'date');
12308 if (isError(value)) {
12309 return formatError(value);
12313 var base = '', array = false, braces = ['{', '}'];
12315 // Make Array say that they are Array
12316 if (isArray(value)) {
12318 braces = ['[', ']'];
12321 // Make functions say that they are functions
12322 if (isFunction(value)) {
12323 var n = value.name ? ': ' + value.name : '';
12324 base = ' [Function' + n + ']';
12327 // Make RegExps say that they are RegExps
12328 if (isRegExp(value)) {
12329 base = ' ' + RegExp.prototype.toString.call(value);
12332 // Make dates with properties first say the date
12333 if (isDate(value)) {
12334 base = ' ' + Date.prototype.toUTCString.call(value);
12337 // Make error with message first say the error
12338 if (isError(value)) {
12339 base = ' ' + formatError(value);
12342 if (keys.length ===
0 && (!array || value.length ==
0)) {
12343 return braces[
0] + base + braces[
1];
12346 if (recurseTimes <
0) {
12347 if (isRegExp(value)) {
12348 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
12350 return ctx.stylize('[Object]', 'special');
12354 ctx.seen.push(value);
12358 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
12360 output = keys.map(function(key) {
12361 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
12367 return reduceToSingleString(output, base, braces);
12371 function formatPrimitive(ctx, value) {
12372 if (isUndefined(value))
12373 return ctx.stylize('undefined', 'undefined');
12374 if (isString(value)) {
12375 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
12376 .replace(/'/g, "\\'")
12377 .replace(/\\"/g, '"') + '\'';
12378 return ctx.stylize(simple, 'string');
12380 if (isNumber(value))
12381 return ctx.stylize('' + value, 'number');
12382 if (isBoolean(value))
12383 return ctx.stylize('' + value, 'boolean');
12384 // For some reason typeof null is "object", so special case here.
12386 return ctx.stylize('null', 'null');
12390 function formatError(value) {
12391 return '[' + Error.prototype.toString.call(value) + ']';
12395 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
12397 for (var i =
0, l = value.length; i < l; ++i) {
12398 if (hasOwnProperty(value, String(i))) {
12399 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
12405 keys.forEach(function(key) {
12406 if (!key.match(/^\d+$/)) {
12407 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
12415 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
12416 var name, str, desc;
12417 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
12420 str = ctx.stylize('[Getter/Setter]', 'special');
12422 str = ctx.stylize('[Getter]', 'special');
12426 str = ctx.stylize('[Setter]', 'special');
12429 if (!hasOwnProperty(visibleKeys, key)) {
12430 name = '[' + key + ']';
12433 if (ctx.seen.indexOf(desc.value) <
0) {
12434 if (isNull(recurseTimes)) {
12435 str = formatValue(ctx, desc.value, null);
12437 str = formatValue(ctx, desc.value, recurseTimes -
1);
12439 if (str.indexOf('\n')
> -
1) {
12441 str = str.split('\n').map(function(line) {
12443 }).join('\n').substr(
2);
12445 str = '\n' + str.split('\n').map(function(line) {
12451 str = ctx.stylize('[Circular]', 'special');
12454 if (isUndefined(name)) {
12455 if (array && key.match(/^\d+$/)) {
12458 name = JSON.stringify('' + key);
12459 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
12460 name = name.substr(
1, name.length -
2);
12461 name = ctx.stylize(name, 'name');
12463 name = name.replace(/'/g, "\\'")
12464 .replace(/\\"/g, '"')
12465 .replace(/(^"|"$)/g, "'");
12466 name = ctx.stylize(name, 'string');
12470 return name + ': ' + str;
12474 function reduceToSingleString(output, base, braces) {
12475 var numLinesEst =
0;
12476 var length = output.reduce(function(prev, cur) {
12478 if (cur.indexOf('\n')
>=
0) numLinesEst++;
12479 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
12484 (base === '' ? '' : base + '\n ') +
12486 output.join(',\n ') +
12491 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
12495 // NOTE: These type checking functions intentionally don't use `instanceof`
12496 // because it is fragile and can be easily faked with `Object.create()`.
12497 function isArray(ar) {
12498 return Array.isArray(ar);
12500 exports.isArray = isArray;
12502 function isBoolean(arg) {
12503 return typeof arg === 'boolean';
12505 exports.isBoolean = isBoolean;
12507 function isNull(arg) {
12508 return arg === null;
12510 exports.isNull = isNull;
12512 function isNullOrUndefined(arg) {
12513 return arg == null;
12515 exports.isNullOrUndefined = isNullOrUndefined;
12517 function isNumber(arg) {
12518 return typeof arg === 'number';
12520 exports.isNumber = isNumber;
12522 function isString(arg) {
12523 return typeof arg === 'string';
12525 exports.isString = isString;
12527 function isSymbol(arg) {
12528 return typeof arg === 'symbol';
12530 exports.isSymbol = isSymbol;
12532 function isUndefined(arg) {
12533 return arg === void
0;
12535 exports.isUndefined = isUndefined;
12537 function isRegExp(re) {
12538 return isObject(re) && objectToString(re) === '[object RegExp]';
12540 exports.isRegExp = isRegExp;
12542 function isObject(arg) {
12543 return typeof arg === 'object' && arg !== null;
12545 exports.isObject = isObject;
12547 function isDate(d) {
12548 return isObject(d) && objectToString(d) === '[object Date]';
12550 exports.isDate = isDate;
12552 function isError(e) {
12553 return isObject(e) &&
12554 (objectToString(e) === '[object Error]' || e instanceof Error);
12556 exports.isError = isError;
12558 function isFunction(arg) {
12559 return typeof arg === 'function';
12561 exports.isFunction = isFunction;
12563 function isPrimitive(arg) {
12564 return arg === null ||
12565 typeof arg === 'boolean' ||
12566 typeof arg === 'number' ||
12567 typeof arg === 'string' ||
12568 typeof arg === 'symbol' || // ES6 symbol
12569 typeof arg === 'undefined';
12571 exports.isPrimitive = isPrimitive;
12573 exports.isBuffer = require('./support/isBuffer');
12575 function objectToString(o) {
12576 return Object.prototype.toString.call(o);
12581 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
12585 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
12586 'Oct', 'Nov', 'Dec'];
12589 function timestamp() {
12590 var d = new Date();
12591 var time = [pad(d.getHours()),
12592 pad(d.getMinutes()),
12593 pad(d.getSeconds())].join(':');
12594 return [d.getDate(), months[d.getMonth()], time].join(' ');
12598 // log is just a thin wrapper to console.log that prepends a timestamp
12599 exports.log = function() {
12600 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
12605 * Inherit the prototype methods from one constructor into another.
12607 * The Function.prototype.inherits from lang.js rewritten as a standalone
12608 * function (not on Function.prototype). NOTE: If this file is to be loaded
12609 * during bootstrapping this function needs to be rewritten using some native
12610 * functions as prototype setup using normal JavaScript does not work as
12611 * expected during bootstrapping (see mirror.js in r114903).
12613 * @param {function} ctor Constructor function which needs to inherit the
12615 * @param {function} superCtor Constructor function to inherit prototype from.
12617 exports.inherits = require('inherits');
12619 exports._extend = function(origin, add) {
12620 // Don't do anything if add isn't an object
12621 if (!add || !isObject(add)) return origin;
12623 var keys = Object.keys(add);
12624 var i = keys.length;
12626 origin[keys[i]] = add[keys[i]];
12631 function hasOwnProperty(obj, prop) {
12632 return Object.prototype.hasOwnProperty.call(obj, prop);
12635 }).call(this,require('_process'),typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
12636 },{
"./support/isBuffer":
28,
"_process":
14,
"inherits":
12}],
30:[function(require,module,exports){
12637 // Base58 encoding/decoding
12638 // Originally written by Mike Hearn for BitcoinJ
12639 // Copyright (c)
2011 Google Inc
12640 // Ported to JavaScript by Stefan Thomas
12641 // Merged Buffer refactorings from base58-native by Stephen Pair
12642 // Copyright (c)
2013 BitPay Inc
12644 var ALPHABET = '
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
12645 var ALPHABET_MAP = {}
12646 for(var i =
0; i < ALPHABET.length; i++) {
12647 ALPHABET_MAP[ALPHABET.charAt(i)] = i
12651 function encode(buffer) {
12652 if (buffer.length ===
0) return ''
12654 var i, j, digits = [
0]
12655 for (i =
0; i < buffer.length; i++) {
12656 for (j =
0; j < digits.length; j++) digits[j] <<=
8
12658 digits[
0] += buffer[i]
12661 for (j =
0; j < digits.length; ++j) {
12664 carry = (digits[j] / BASE) |
0
12669 digits.push(carry % BASE)
12671 carry = (carry / BASE) |
0
12675 // deal with leading zeros
12676 for (i =
0; buffer[i] ===
0 && i < buffer.length -
1; i++) digits.push(
0)
12678 // convert digits to a string
12679 var stringOutput =
""
12680 for (var i = digits.length -
1; i
>=
0; i--) {
12681 stringOutput = stringOutput + ALPHABET[digits[i]]
12683 return stringOutput
12686 function decode(string) {
12687 if (string.length ===
0) return []
12689 var i, j, bytes = [
0]
12690 for (i =
0; i < string.length; i++) {
12692 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
12694 for (j =
0; j < bytes.length; j++) bytes[j] *= BASE
12695 bytes[
0] += ALPHABET_MAP[c]
12698 for (j =
0; j < bytes.length; ++j) {
12701 carry = bytes[j]
>> 8
12706 bytes.push(carry &
0xff)
12712 // deal with leading zeros
12713 for (i =
0; string[i] === '
1' && i < string.length -
1; i++) bytes.push(
0)
12715 return bytes.reverse()
12723 },{}],
31:[function(require,module,exports){
12724 (function (Buffer){
12727 var base58 = require('bs58')
12728 var createHash = require('create-hash')
12730 // SHA256(SHA256(buffer))
12731 function sha256x2 (buffer) {
12732 buffer = createHash('sha256').update(buffer).digest()
12733 return createHash('sha256').update(buffer).digest()
12736 // Encode a buffer as a base58-check encoded string
12737 function encode (payload) {
12738 var checksum = sha256x2(payload).slice(
0,
4)
12740 return base58.encode(Buffer.concat([
12746 // Decode a base58-check encoded string to a buffer
12747 function decode (string) {
12748 var buffer = new Buffer(base58.decode(string))
12750 var payload = buffer.slice(
0, -
4)
12751 var checksum = buffer.slice(-
4)
12752 var newChecksum = sha256x2(payload).slice(
0,
4)
12754 for (var i =
0; i < newChecksum.length; ++i) {
12755 if (newChecksum[i] === checksum[i]) continue
12757 throw new Error('Invalid checksum')
12768 }).call(this,require("buffer").Buffer)
12769 },{"bs58":
30,"buffer":
7,"create-hash":
32}],
32:[function(require,module,exports){
12770 (function (Buffer){
12772 var inherits = require('inherits')
12773 var md5 = require('./md5')
12774 var rmd160 = require('ripemd160')
12775 var sha = require('sha.js')
12777 var Transform = require('stream').Transform
12779 function HashNoConstructor(hash) {
12780 Transform.call(this)
12786 inherits(HashNoConstructor, Transform)
12788 HashNoConstructor.prototype._transform = function (data, _, next) {
12789 this.buffers.push(data)
12794 HashNoConstructor.prototype._flush = function (next) {
12795 this.push(this.digest())
12799 HashNoConstructor.prototype.update = function (data, enc) {
12800 if (typeof data === 'string') {
12801 data = new Buffer(data, enc)
12804 this.buffers.push(data)
12808 HashNoConstructor.prototype.digest = function (enc) {
12809 var buf = Buffer.concat(this.buffers)
12810 var r = this._hash(buf)
12811 this.buffers = null
12813 return enc ? r.toString(enc) : r
12816 function Hash(hash) {
12817 Transform.call(this)
12822 inherits(Hash, Transform)
12824 Hash.prototype._transform = function (data, enc, next) {
12825 if (enc) data = new Buffer(data, enc)
12827 this._hash.update(data)
12832 Hash.prototype._flush = function (next) {
12833 this.push(this._hash.digest())
12839 Hash.prototype.update = function (data, enc) {
12840 if (typeof data === 'string') {
12841 data = new Buffer(data, enc)
12844 this._hash.update(data)
12848 Hash.prototype.digest = function (enc) {
12849 var outData = this._hash.digest()
12851 return enc ? outData.toString(enc) : outData
12854 module.exports = function createHash (alg) {
12855 if ('md5' === alg) return new HashNoConstructor(md5)
12856 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
12858 return new Hash(sha(alg))
12861 }).call(this,require("buffer").Buffer)
12862 },{"./md5":
34,"buffer":
7,"inherits":
35,"ripemd160":
36,"sha.js":
38,"stream":
26}],
33:[function(require,module,exports){
12863 (function (Buffer){
12866 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(
0);
12869 function toArray(buf, bigEndian) {
12870 if ((buf.length % intSize) !==
0) {
12871 var len = buf.length + (intSize - (buf.length % intSize));
12872 buf = Buffer.concat([buf, zeroBuffer], len);
12876 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
12877 for (var i =
0; i < buf.length; i += intSize) {
12878 arr.push(fn.call(buf, i));
12883 function toBuffer(arr, size, bigEndian) {
12884 var buf = new Buffer(size);
12885 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
12886 for (var i =
0; i < arr.length; i++) {
12887 fn.call(buf, arr[i], i *
4, true);
12892 function hash(buf, fn, hashSize, bigEndian) {
12893 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
12894 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
12895 return toBuffer(arr, hashSize, bigEndian);
12897 exports.hash = hash;
12898 }).call(this,require("buffer").Buffer)
12899 },{"buffer":
7}],
34:[function(require,module,exports){
12902 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
12903 * Digest Algorithm, as defined in RFC
1321.
12904 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
12905 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
12906 * Distributed under the BSD License
12907 * See http://pajhome.org.uk/crypt/md5 for more info.
12910 var helpers = require('./helpers');
12913 * Calculate the MD5 of an array of little-endian words, and a bit length
12915 function core_md5(x, len)
12917 /* append padding */
12918 x[len
>> 5] |=
0x80 << ((len) %
32);
12919 x[(((len +
64)
>>> 9) <<
4) +
14] = len;
12921 var a =
1732584193;
12922 var b = -
271733879;
12923 var c = -
1732584194;
12926 for(var i =
0; i < x.length; i +=
16)
12933 a = md5_ff(a, b, c, d, x[i+
0],
7 , -
680876936);
12934 d = md5_ff(d, a, b, c, x[i+
1],
12, -
389564586);
12935 c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
12936 b = md5_ff(b, c, d, a, x[i+
3],
22, -
1044525330);
12937 a = md5_ff(a, b, c, d, x[i+
4],
7 , -
176418897);
12938 d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
12939 c = md5_ff(c, d, a, b, x[i+
6],
17, -
1473231341);
12940 b = md5_ff(b, c, d, a, x[i+
7],
22, -
45705983);
12941 a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
12942 d = md5_ff(d, a, b, c, x[i+
9],
12, -
1958414417);
12943 c = md5_ff(c, d, a, b, x[i+
10],
17, -
42063);
12944 b = md5_ff(b, c, d, a, x[i+
11],
22, -
1990404162);
12945 a = md5_ff(a, b, c, d, x[i+
12],
7 ,
1804603682);
12946 d = md5_ff(d, a, b, c, x[i+
13],
12, -
40341101);
12947 c = md5_ff(c, d, a, b, x[i+
14],
17, -
1502002290);
12948 b = md5_ff(b, c, d, a, x[i+
15],
22,
1236535329);
12950 a = md5_gg(a, b, c, d, x[i+
1],
5 , -
165796510);
12951 d = md5_gg(d, a, b, c, x[i+
6],
9 , -
1069501632);
12952 c = md5_gg(c, d, a, b, x[i+
11],
14,
643717713);
12953 b = md5_gg(b, c, d, a, x[i+
0],
20, -
373897302);
12954 a = md5_gg(a, b, c, d, x[i+
5],
5 , -
701558691);
12955 d = md5_gg(d, a, b, c, x[i+
10],
9 ,
38016083);
12956 c = md5_gg(c, d, a, b, x[i+
15],
14, -
660478335);
12957 b = md5_gg(b, c, d, a, x[i+
4],
20, -
405537848);
12958 a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
12959 d = md5_gg(d, a, b, c, x[i+
14],
9 , -
1019803690);
12960 c = md5_gg(c, d, a, b, x[i+
3],
14, -
187363961);
12961 b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
12962 a = md5_gg(a, b, c, d, x[i+
13],
5 , -
1444681467);
12963 d = md5_gg(d, a, b, c, x[i+
2],
9 , -
51403784);
12964 c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
12965 b = md5_gg(b, c, d, a, x[i+
12],
20, -
1926607734);
12967 a = md5_hh(a, b, c, d, x[i+
5],
4 , -
378558);
12968 d = md5_hh(d, a, b, c, x[i+
8],
11, -
2022574463);
12969 c = md5_hh(c, d, a, b, x[i+
11],
16,
1839030562);
12970 b = md5_hh(b, c, d, a, x[i+
14],
23, -
35309556);
12971 a = md5_hh(a, b, c, d, x[i+
1],
4 , -
1530992060);
12972 d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
12973 c = md5_hh(c, d, a, b, x[i+
7],
16, -
155497632);
12974 b = md5_hh(b, c, d, a, x[i+
10],
23, -
1094730640);
12975 a = md5_hh(a, b, c, d, x[i+
13],
4 ,
681279174);
12976 d = md5_hh(d, a, b, c, x[i+
0],
11, -
358537222);
12977 c = md5_hh(c, d, a, b, x[i+
3],
16, -
722521979);
12978 b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
12979 a = md5_hh(a, b, c, d, x[i+
9],
4 , -
640364487);
12980 d = md5_hh(d, a, b, c, x[i+
12],
11, -
421815835);
12981 c = md5_hh(c, d, a, b, x[i+
15],
16,
530742520);
12982 b = md5_hh(b, c, d, a, x[i+
2],
23, -
995338651);
12984 a = md5_ii(a, b, c, d, x[i+
0],
6 , -
198630844);
12985 d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
12986 c = md5_ii(c, d, a, b, x[i+
14],
15, -
1416354905);
12987 b = md5_ii(b, c, d, a, x[i+
5],
21, -
57434055);
12988 a = md5_ii(a, b, c, d, x[i+
12],
6 ,
1700485571);
12989 d = md5_ii(d, a, b, c, x[i+
3],
10, -
1894986606);
12990 c = md5_ii(c, d, a, b, x[i+
10],
15, -
1051523);
12991 b = md5_ii(b, c, d, a, x[i+
1],
21, -
2054922799);
12992 a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
12993 d = md5_ii(d, a, b, c, x[i+
15],
10, -
30611744);
12994 c = md5_ii(c, d, a, b, x[i+
6],
15, -
1560198380);
12995 b = md5_ii(b, c, d, a, x[i+
13],
21,
1309151649);
12996 a = md5_ii(a, b, c, d, x[i+
4],
6 , -
145523070);
12997 d = md5_ii(d, a, b, c, x[i+
11],
10, -
1120210379);
12998 c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
12999 b = md5_ii(b, c, d, a, x[i+
9],
21, -
343485551);
13001 a = safe_add(a, olda);
13002 b = safe_add(b, oldb);
13003 c = safe_add(c, oldc);
13004 d = safe_add(d, oldd);
13006 return Array(a, b, c, d);
13011 * These functions implement the four basic operations the algorithm uses.
13013 function md5_cmn(q, a, b, x, s, t)
13015 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
13017 function md5_ff(a, b, c, d, x, s, t)
13019 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
13021 function md5_gg(a, b, c, d, x, s, t)
13023 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
13025 function md5_hh(a, b, c, d, x, s, t)
13027 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
13029 function md5_ii(a, b, c, d, x, s, t)
13031 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
13035 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
13036 * to work around bugs in some JS interpreters.
13038 function safe_add(x, y)
13040 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
13041 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
13042 return (msw <<
16) | (lsw &
0xFFFF);
13046 * Bitwise rotate a
32-bit number to the left.
13048 function bit_rol(num, cnt)
13050 return (num << cnt) | (num
>>> (
32 - cnt));
13053 module.exports = function md5(buf) {
13054 return helpers.hash(buf, core_md5,
16);
13056 },{"./helpers":
33}],
35:[function(require,module,exports){
13057 arguments[
4][
12][
0].apply(exports,arguments)
13058 },{"dup":
12}],
36:[function(require,module,exports){
13059 (function (Buffer){
13062 code.google.com/p/crypto-js
13063 (c)
2009-
2013 by Jeff Mott. All rights reserved.
13064 code.google.com/p/crypto-js/wiki/License
13067 (c)
2012 by Cédric Mesnil. All rights reserved.
13069 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
13071 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
13072 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
13074 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13079 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
13080 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
13081 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
13082 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
13083 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
13087 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
13088 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
13089 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
13090 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
13091 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
13095 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
13096 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
13097 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
13098 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
13099 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
13103 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
13104 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
13105 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
13106 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
13107 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
13110 var hl = [
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E]
13111 var hr = [
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000]
13113 function bytesToWords (bytes) {
13115 for (var i =
0, b =
0; i < bytes.length; i++, b +=
8) {
13116 words[b
>>> 5] |= bytes[i] << (
24 - b %
32)
13121 function wordsToBytes (words) {
13123 for (var b =
0; b < words.length *
32; b +=
8) {
13124 bytes.push((words[b
>>> 5]
>>> (
24 - b %
32)) &
0xFF)
13129 function processBlock (H, M, offset) {
13131 for (var i =
0; i <
16; i++) {
13132 var offset_i = offset + i
13133 var M_offset_i = M[offset_i]
13137 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
13138 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
13142 // Working variables
13143 var al, bl, cl, dl, el
13144 var ar, br, cr, dr, er
13154 for (i =
0; i <
80; i +=
1) {
13155 t = (al + M[offset + zl[i]]) |
0
13157 t += f1(bl, cl, dl) + hl[
0]
13158 } else if (i <
32) {
13159 t += f2(bl, cl, dl) + hl[
1]
13160 } else if (i <
48) {
13161 t += f3(bl, cl, dl) + hl[
2]
13162 } else if (i <
64) {
13163 t += f4(bl, cl, dl) + hl[
3]
13164 } else {// if (i
<80) {
13165 t += f5(bl, cl, dl) + hl[
4]
13176 t = (ar + M[offset + zr[i]]) |
0
13178 t += f5(br, cr, dr) + hr[
0]
13179 } else if (i <
32) {
13180 t += f4(br, cr, dr) + hr[
1]
13181 } else if (i <
48) {
13182 t += f3(br, cr, dr) + hr[
2]
13183 } else if (i <
64) {
13184 t += f2(br, cr, dr) + hr[
3]
13185 } else {// if (i
<80) {
13186 t += f1(br, cr, dr) + hr[
4]
13199 // intermediate hash value
13200 t = (H[
1] + cl + dr) |
0
13201 H[
1] = (H[
2] + dl + er) |
0
13202 H[
2] = (H[
3] + el + ar) |
0
13203 H[
3] = (H[
4] + al + br) |
0
13204 H[
4] = (H[
0] + bl + cr) |
0
13208 function f1 (x, y, z) {
13209 return ((x) ^ (y) ^ (z))
13212 function f2 (x, y, z) {
13213 return (((x) & (y)) | ((~x) & (z)))
13216 function f3 (x, y, z) {
13217 return (((x) | (~(y))) ^ (z))
13220 function f4 (x, y, z) {
13221 return (((x) & (z)) | ((y) & (~(z))))
13224 function f5 (x, y, z) {
13225 return ((x) ^ ((y) | (~(z))))
13228 function rotl (x, n) {
13229 return (x << n) | (x
>>> (
32 - n))
13232 function ripemd160 (message) {
13233 var H = [
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0]
13235 if (typeof message === 'string') {
13236 message = new Buffer(message, 'utf8')
13239 var m = bytesToWords(message)
13241 var nBitsLeft = message.length *
8
13242 var nBitsTotal = message.length *
8
13245 m[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32)
13246 m[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
13247 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
13248 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
13251 for (var i =
0; i < m.length; i +=
16) {
13252 processBlock(H, m, i)
13256 for (i =
0; i <
5; i++) {
13261 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
13262 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00)
13265 var digestbytes = wordsToBytes(H)
13266 return new Buffer(digestbytes)
13269 module.exports = ripemd160
13271 }).call(this,require(
"buffer").Buffer)
13272 },{
"buffer":
7}],
37:[function(require,module,exports){
13273 (function (Buffer){
13274 // prototype class for hash functions
13275 function Hash (blockSize, finalSize) {
13276 this._block = new Buffer(blockSize)
13277 this._finalSize = finalSize
13278 this._blockSize = blockSize
13283 Hash.prototype.update = function (data, enc) {
13284 if (typeof data === 'string') {
13285 enc = enc || 'utf8'
13286 data = new Buffer(data, enc)
13289 var l = this._len += data.length
13290 var s = this._s ||
0
13292 var buffer = this._block
13295 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
13298 for (var i =
0; i < ch; i++) {
13299 buffer[(s % this._blockSize) + i] = data[i + f]
13305 if ((s % this._blockSize) ===
0) {
13306 this._update(buffer)
13314 Hash.prototype.digest = function (enc) {
13315 // Suppose the length of the message M, in bits, is l
13316 var l = this._len *
8
13318 // Append the bit
1 to the end of the message
13319 this._block[this._len % this._blockSize] =
0x80
13321 // and then k zero bits, where k is the smallest non-negative solution to the equation (l +
1 + k) === finalSize mod blockSize
13322 this._block.fill(
0, this._len % this._blockSize +
1)
13324 if (l % (this._blockSize *
8)
>= this._finalSize *
8) {
13325 this._update(this._block)
13326 this._block.fill(
0)
13329 // to this append the block which is equal to the number l written in binary
13330 // TODO: handle case where l is
> Math.pow(
2,
29)
13331 this._block.writeInt32BE(l, this._blockSize -
4)
13333 var hash = this._update(this._block) || this._hash()
13335 return enc ? hash.toString(enc) : hash
13338 Hash.prototype._update = function () {
13339 throw new Error('_update must be implemented by subclass')
13342 module.exports = Hash
13344 }).call(this,require("buffer").Buffer)
13345 },{"buffer":
7}],
38:[function(require,module,exports){
13346 var exports = module.exports = function SHA (algorithm) {
13347 algorithm = algorithm.toLowerCase()
13349 var Algorithm = exports[algorithm]
13350 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
13352 return new Algorithm()
13355 exports.sha = require('./sha')
13356 exports.sha1 = require('./sha1')
13357 exports.sha224 = require('./sha224')
13358 exports.sha256 = require('./sha256')
13359 exports.sha384 = require('./sha384')
13360 exports.sha512 = require('./sha512')
13362 },{"./sha":
39,"./sha1":
40,"./sha224":
41,"./sha256":
42,"./sha384":
43,"./sha512":
44}],
39:[function(require,module,exports){
13363 (function (Buffer){
13365 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
0, as defined
13366 * in FIPS PUB
180-
1
13367 * This source code is derived from sha1.js of the same repository.
13368 * The difference between SHA-
0 and SHA-
1 is just a bitwise rotate left
13369 * operation was added.
13372 var inherits = require('inherits')
13373 var Hash = require('./hash')
13375 var W = new Array(
80)
13381 Hash.call(this,
64,
56)
13384 inherits(Sha, Hash)
13386 Sha.prototype.init = function () {
13387 this._a =
0x67452301 |
0
13388 this._b =
0xefcdab89 |
0
13389 this._c =
0x98badcfe |
0
13390 this._d =
0x10325476 |
0
13391 this._e =
0xc3d2e1f0 |
0
13397 * Bitwise rotate a
32-bit number to the left.
13399 function rol (num, cnt) {
13400 return (num << cnt) | (num
>>> (
32 - cnt))
13403 Sha.prototype._update = function (M) {
13415 * SHA-
1 has a bitwise rotate left operation. But, SHA is not
13416 * function calcW() { return rol(W[j -
3] ^ W[j -
8] ^ W[j -
14] ^ W[j -
16],
1) }
13418 function calcW () { return W[j -
3] ^ W[j -
8] ^ W[j -
14] ^ W[j -
16] }
13419 function loop (w, f) {
13422 var t = rol(a,
5) + f + e + w + k
13433 while (j <
16) loop(M.readInt32BE(j *
4), (b & c) | ((~b) & d))
13434 while (j <
20) loop(calcW(), (b & c) | ((~b) & d))
13436 while (j <
40) loop(calcW(), b ^ c ^ d)
13438 while (j <
60) loop(calcW(), (b & c) | (b & d) | (c & d))
13440 while (j <
80) loop(calcW(), b ^ c ^ d)
13442 this._a = (a + this._a) |
0
13443 this._b = (b + this._b) |
0
13444 this._c = (c + this._c) |
0
13445 this._d = (d + this._d) |
0
13446 this._e = (e + this._e) |
0
13449 Sha.prototype._hash = function () {
13450 var H = new Buffer(
20)
13452 H.writeInt32BE(this._a |
0,
0)
13453 H.writeInt32BE(this._b |
0,
4)
13454 H.writeInt32BE(this._c |
0,
8)
13455 H.writeInt32BE(this._d |
0,
12)
13456 H.writeInt32BE(this._e |
0,
16)
13461 module.exports = Sha
13464 }).call(this,require("buffer").Buffer)
13465 },{"./hash":
37,"buffer":
7,"inherits":
35}],
40:[function(require,module,exports){
13466 (function (Buffer){
13468 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
13469 * in FIPS PUB
180-
1
13470 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
13471 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13472 * Distributed under the BSD License
13473 * See http://pajhome.org.uk/crypt/md5 for details.
13476 var inherits = require('inherits')
13477 var Hash = require('./hash')
13479 var W = new Array(
80)
13485 Hash.call(this,
64,
56)
13488 inherits(Sha1, Hash)
13490 Sha1.prototype.init = function () {
13491 this._a =
0x67452301 |
0
13492 this._b =
0xefcdab89 |
0
13493 this._c =
0x98badcfe |
0
13494 this._d =
0x10325476 |
0
13495 this._e =
0xc3d2e1f0 |
0
13501 * Bitwise rotate a
32-bit number to the left.
13503 function rol (num, cnt) {
13504 return (num << cnt) | (num
>>> (
32 - cnt))
13507 Sha1.prototype._update = function (M) {
13518 function calcW () { return rol(W[j -
3] ^ W[j -
8] ^ W[j -
14] ^ W[j -
16],
1) }
13519 function loop (w, f) {
13522 var t = rol(a,
5) + f + e + w + k
13533 while (j <
16) loop(M.readInt32BE(j *
4), (b & c) | ((~b) & d))
13534 while (j <
20) loop(calcW(), (b & c) | ((~b) & d))
13536 while (j <
40) loop(calcW(), b ^ c ^ d)
13538 while (j <
60) loop(calcW(), (b & c) | (b & d) | (c & d))
13540 while (j <
80) loop(calcW(), b ^ c ^ d)
13542 this._a = (a + this._a) |
0
13543 this._b = (b + this._b) |
0
13544 this._c = (c + this._c) |
0
13545 this._d = (d + this._d) |
0
13546 this._e = (e + this._e) |
0
13549 Sha1.prototype._hash = function () {
13550 var H = new Buffer(
20)
13552 H.writeInt32BE(this._a |
0,
0)
13553 H.writeInt32BE(this._b |
0,
4)
13554 H.writeInt32BE(this._c |
0,
8)
13555 H.writeInt32BE(this._d |
0,
12)
13556 H.writeInt32BE(this._e |
0,
16)
13561 module.exports = Sha1
13563 }).call(this,require("buffer").Buffer)
13564 },{"./hash":
37,"buffer":
7,"inherits":
35}],
41:[function(require,module,exports){
13565 (function (Buffer){
13567 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
13569 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
13570 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13574 var inherits = require('inherits')
13575 var Sha256 = require('./sha256')
13576 var Hash = require('./hash')
13578 var W = new Array(
64)
13580 function Sha224 () {
13583 this._w = W // new Array(
64)
13585 Hash.call(this,
64,
56)
13588 inherits(Sha224, Sha256)
13590 Sha224.prototype.init = function () {
13591 this._a =
0xc1059ed8 |
0
13592 this._b =
0x367cd507 |
0
13593 this._c =
0x3070dd17 |
0
13594 this._d =
0xf70e5939 |
0
13595 this._e =
0xffc00b31 |
0
13596 this._f =
0x68581511 |
0
13597 this._g =
0x64f98fa7 |
0
13598 this._h =
0xbefa4fa4 |
0
13603 Sha224.prototype._hash = function () {
13604 var H = new Buffer(
28)
13606 H.writeInt32BE(this._a,
0)
13607 H.writeInt32BE(this._b,
4)
13608 H.writeInt32BE(this._c,
8)
13609 H.writeInt32BE(this._d,
12)
13610 H.writeInt32BE(this._e,
16)
13611 H.writeInt32BE(this._f,
20)
13612 H.writeInt32BE(this._g,
24)
13617 module.exports = Sha224
13619 }).call(this,require("buffer").Buffer)
13620 },{"./hash":
37,"./sha256":
42,"buffer":
7,"inherits":
35}],
42:[function(require,module,exports){
13621 (function (Buffer){
13623 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
13625 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
13626 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
13630 var inherits = require('inherits')
13631 var Hash = require('./hash')
13634 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
13635 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
13636 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
13637 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
13638 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
13639 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
13640 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
13641 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
13642 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
13643 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
13644 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
13645 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
13646 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
13647 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
13648 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
13649 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
13652 var W = new Array(
64)
13654 function Sha256 () {
13657 this._w = W // new Array(
64)
13659 Hash.call(this,
64,
56)
13662 inherits(Sha256, Hash)
13664 Sha256.prototype.init = function () {
13665 this._a =
0x6a09e667 |
0
13666 this._b =
0xbb67ae85 |
0
13667 this._c =
0x3c6ef372 |
0
13668 this._d =
0xa54ff53a |
0
13669 this._e =
0x510e527f |
0
13670 this._f =
0x9b05688c |
0
13671 this._g =
0x1f83d9ab |
0
13672 this._h =
0x5be0cd19 |
0
13677 function S (X, n) {
13678 return (X
>>> n) | (X << (
32 - n))
13681 function R (X, n) {
13685 function Ch (x, y, z) {
13686 return ((x & y) ^ ((~x) & z))
13689 function Maj (x, y, z) {
13690 return ((x & y) ^ (x & z) ^ (y & z))
13693 function Sigma0256 (x) {
13694 return (S(x,
2) ^ S(x,
13) ^ S(x,
22))
13697 function Sigma1256 (x) {
13698 return (S(x,
6) ^ S(x,
11) ^ S(x,
25))
13701 function Gamma0256 (x) {
13702 return (S(x,
7) ^ S(x,
18) ^ R(x,
3))
13705 function Gamma1256 (x) {
13706 return (S(x,
17) ^ S(x,
19) ^ R(x,
10))
13709 Sha256.prototype._update = function (M) {
13712 var a = this._a |
0
13713 var b = this._b |
0
13714 var c = this._c |
0
13715 var d = this._d |
0
13716 var e = this._e |
0
13717 var f = this._f |
0
13718 var g = this._g |
0
13719 var h = this._h |
0
13723 function calcW () { return Gamma1256(W[j -
2]) + W[j -
7] + Gamma0256(W[j -
15]) + W[j -
16] }
13724 function loop (w) {
13727 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
13728 var T2 = Sigma0256(a) + Maj(a, b, c)
13742 while (j <
16) loop(M.readInt32BE(j *
4))
13743 while (j <
64) loop(calcW())
13745 this._a = (a + this._a) |
0
13746 this._b = (b + this._b) |
0
13747 this._c = (c + this._c) |
0
13748 this._d = (d + this._d) |
0
13749 this._e = (e + this._e) |
0
13750 this._f = (f + this._f) |
0
13751 this._g = (g + this._g) |
0
13752 this._h = (h + this._h) |
0
13755 Sha256.prototype._hash = function () {
13756 var H = new Buffer(
32)
13758 H.writeInt32BE(this._a,
0)
13759 H.writeInt32BE(this._b,
4)
13760 H.writeInt32BE(this._c,
8)
13761 H.writeInt32BE(this._d,
12)
13762 H.writeInt32BE(this._e,
16)
13763 H.writeInt32BE(this._f,
20)
13764 H.writeInt32BE(this._g,
24)
13765 H.writeInt32BE(this._h,
28)
13770 module.exports = Sha256
13772 }).call(this,require("buffer").Buffer)
13773 },{"./hash":
37,"buffer":
7,"inherits":
35}],
43:[function(require,module,exports){
13774 (function (Buffer){
13775 var inherits = require('inherits')
13776 var SHA512 = require('./sha512')
13777 var Hash = require('./hash')
13779 var W = new Array(
160)
13781 function Sha384 () {
13785 Hash.call(this,
128,
112)
13788 inherits(Sha384, SHA512)
13790 Sha384.prototype.init = function () {
13791 this._a =
0xcbbb9d5d |
0
13792 this._b =
0x629a292a |
0
13793 this._c =
0x9159015a |
0
13794 this._d =
0x152fecd8 |
0
13795 this._e =
0x67332667 |
0
13796 this._f =
0x8eb44a87 |
0
13797 this._g =
0xdb0c2e0d |
0
13798 this._h =
0x47b5481d |
0
13800 this._al =
0xc1059ed8 |
0
13801 this._bl =
0x367cd507 |
0
13802 this._cl =
0x3070dd17 |
0
13803 this._dl =
0xf70e5939 |
0
13804 this._el =
0xffc00b31 |
0
13805 this._fl =
0x68581511 |
0
13806 this._gl =
0x64f98fa7 |
0
13807 this._hl =
0xbefa4fa4 |
0
13812 Sha384.prototype._hash = function () {
13813 var H = new Buffer(
48)
13815 function writeInt64BE (h, l, offset) {
13816 H.writeInt32BE(h, offset)
13817 H.writeInt32BE(l, offset +
4)
13820 writeInt64BE(this._a, this._al,
0)
13821 writeInt64BE(this._b, this._bl,
8)
13822 writeInt64BE(this._c, this._cl,
16)
13823 writeInt64BE(this._d, this._dl,
24)
13824 writeInt64BE(this._e, this._el,
32)
13825 writeInt64BE(this._f, this._fl,
40)
13830 module.exports = Sha384
13832 }).call(this,require("buffer").Buffer)
13833 },{"./hash":
37,"./sha512":
44,"buffer":
7,"inherits":
35}],
44:[function(require,module,exports){
13834 (function (Buffer){
13835 var inherits = require('inherits')
13836 var Hash = require('./hash')
13839 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
13840 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
13841 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
13842 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
13843 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
13844 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
13845 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
13846 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
13847 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
13848 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
13849 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
13850 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
13851 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
13852 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
13853 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
13854 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
13855 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
13856 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
13857 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
13858 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
13859 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
13860 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
13861 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
13862 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
13863 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
13864 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
13865 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
13866 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
13867 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
13868 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
13869 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
13870 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
13871 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
13872 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
13873 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
13874 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
13875 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
13876 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
13877 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
13878 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
13881 var W = new Array(
160)
13883 function Sha512 () {
13887 Hash.call(this,
128,
112)
13890 inherits(Sha512, Hash)
13892 Sha512.prototype.init = function () {
13893 this._a =
0x6a09e667 |
0
13894 this._b =
0xbb67ae85 |
0
13895 this._c =
0x3c6ef372 |
0
13896 this._d =
0xa54ff53a |
0
13897 this._e =
0x510e527f |
0
13898 this._f =
0x9b05688c |
0
13899 this._g =
0x1f83d9ab |
0
13900 this._h =
0x5be0cd19 |
0
13902 this._al =
0xf3bcc908 |
0
13903 this._bl =
0x84caa73b |
0
13904 this._cl =
0xfe94f82b |
0
13905 this._dl =
0x5f1d36f1 |
0
13906 this._el =
0xade682d1 |
0
13907 this._fl =
0x2b3e6c1f |
0
13908 this._gl =
0xfb41bd6b |
0
13909 this._hl =
0x137e2179 |
0
13914 function S (X, Xl, n) {
13915 return (X
>>> n) | (Xl << (
32 - n))
13918 function Ch (x, y, z) {
13919 return ((x & y) ^ ((~x) & z))
13922 function Maj (x, y, z) {
13923 return ((x & y) ^ (x & z) ^ (y & z))
13926 Sha512.prototype._update = function (M) {
13929 var a = this._a |
0
13930 var b = this._b |
0
13931 var c = this._c |
0
13932 var d = this._d |
0
13933 var e = this._e |
0
13934 var f = this._f |
0
13935 var g = this._g |
0
13936 var h = this._h |
0
13938 var al = this._al |
0
13939 var bl = this._bl |
0
13940 var cl = this._cl |
0
13941 var dl = this._dl |
0
13942 var el = this._el |
0
13943 var fl = this._fl |
0
13944 var gl = this._gl |
0
13945 var hl = this._hl |
0
13949 function calcW () {
13950 var x = W[j -
15 *
2]
13951 var xl = W[j -
15 *
2 +
1]
13952 var gamma0 = S(x, xl,
1) ^ S(x, xl,
8) ^ (x
>>> 7)
13953 var gamma0l = S(xl, x,
1) ^ S(xl, x,
8) ^ S(xl, x,
7)
13956 xl = W[j -
2 *
2 +
1]
13957 var gamma1 = S(x, xl,
19) ^ S(xl, x,
29) ^ (x
>>> 6)
13958 var gamma1l = S(xl, x,
19) ^ S(x, xl,
29) ^ S(xl, x,
6)
13960 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
13961 var Wi7 = W[j -
7 *
2]
13962 var Wi7l = W[j -
7 *
2 +
1]
13964 var Wi16 = W[j -
16 *
2]
13965 var Wi16l = W[j -
16 *
2 +
1]
13967 Wil = gamma0l + Wi7l
13968 Wi = gamma0 + Wi7 + ((Wil
>>> 0) < (gamma0l
>>> 0) ?
1 :
0)
13969 Wil = Wil + gamma1l
13970 Wi = Wi + gamma1 + ((Wil
>>> 0) < (gamma1l
>>> 0) ?
1 :
0)
13972 Wi = Wi + Wi16 + ((Wil
>>> 0) < (Wi16l
>>> 0) ?
1 :
0)
13979 var maj = Maj(a, b, c)
13980 var majl = Maj(al, bl, cl)
13982 var sigma0h = S(a, al,
28) ^ S(al, a,
2) ^ S(al, a,
7)
13983 var sigma0l = S(al, a,
28) ^ S(a, al,
2) ^ S(a, al,
7)
13984 var sigma1h = S(e, el,
14) ^ S(e, el,
18) ^ S(el, e,
9)
13985 var sigma1l = S(el, e,
14) ^ S(el, e,
18) ^ S(e, el,
9)
13987 // t1 = h + sigma1 + ch + K[i] + W[i]
13991 var ch = Ch(e, f, g)
13992 var chl = Ch(el, fl, gl)
13994 var t1l = hl + sigma1l
13995 var t1 = h + sigma1h + ((t1l
>>> 0) < (hl
>>> 0) ?
1 :
0)
13997 t1 = t1 + ch + ((t1l
>>> 0) < (chl
>>> 0) ?
1 :
0)
13999 t1 = t1 + Ki + ((t1l
>>> 0) < (Kil
>>> 0) ?
1 :
0)
14001 t1 = t1 + Wi + ((t1l
>>> 0) < (Wil
>>> 0) ?
1 :
0)
14003 // t2 = sigma0 + maj
14004 var t2l = sigma0l + majl
14005 var t2 = sigma0h + maj + ((t2l
>>> 0) < (sigma0l
>>> 0) ?
1 :
0)
14013 el = (dl + t1l) |
0
14014 e = (d + t1 + ((el
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0
14021 al = (t1l + t2l) |
0
14022 a = (t1 + t2 + ((al
>>> 0) < (t1l
>>> 0) ?
1 :
0)) |
0
14029 Wi = M.readInt32BE(j *
4)
14030 Wil = M.readInt32BE(j *
4 +
4)
14040 this._al = (this._al + al) |
0
14041 this._bl = (this._bl + bl) |
0
14042 this._cl = (this._cl + cl) |
0
14043 this._dl = (this._dl + dl) |
0
14044 this._el = (this._el + el) |
0
14045 this._fl = (this._fl + fl) |
0
14046 this._gl = (this._gl + gl) |
0
14047 this._hl = (this._hl + hl) |
0
14049 this._a = (this._a + a + ((this._al
>>> 0) < (al
>>> 0) ?
1 :
0)) |
0
14050 this._b = (this._b + b + ((this._bl
>>> 0) < (bl
>>> 0) ?
1 :
0)) |
0
14051 this._c = (this._c + c + ((this._cl
>>> 0) < (cl
>>> 0) ?
1 :
0)) |
0
14052 this._d = (this._d + d + ((this._dl
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0
14053 this._e = (this._e + e + ((this._el
>>> 0) < (el
>>> 0) ?
1 :
0)) |
0
14054 this._f = (this._f + f + ((this._fl
>>> 0) < (fl
>>> 0) ?
1 :
0)) |
0
14055 this._g = (this._g + g + ((this._gl
>>> 0) < (gl
>>> 0) ?
1 :
0)) |
0
14056 this._h = (this._h + h + ((this._hl
>>> 0) < (hl
>>> 0) ?
1 :
0)) |
0
14059 Sha512.prototype._hash = function () {
14060 var H = new Buffer(
64)
14062 function writeInt64BE (h, l, offset) {
14063 H.writeInt32BE(h, offset)
14064 H.writeInt32BE(l, offset +
4)
14067 writeInt64BE(this._a, this._al,
0)
14068 writeInt64BE(this._b, this._bl,
8)
14069 writeInt64BE(this._c, this._cl,
16)
14070 writeInt64BE(this._d, this._dl,
24)
14071 writeInt64BE(this._e, this._el,
32)
14072 writeInt64BE(this._f, this._fl,
40)
14073 writeInt64BE(this._g, this._gl,
48)
14074 writeInt64BE(this._h, this._hl,
56)
14079 module.exports = Sha512
14081 }).call(this,require(
"buffer").Buffer)
14082 },{
"./hash":
37,
"buffer":
7,
"inherits":
35}],
45:[function(require,module,exports){
14083 (function (Buffer){
14085 var createHash = require('create-hash/browser');
14086 var inherits = require('inherits')
14088 var Transform = require('stream').Transform
14090 var ZEROS = new Buffer(
128)
14093 function Hmac(alg, key) {
14094 Transform.call(this)
14096 if (typeof key === 'string') {
14097 key = new Buffer(key)
14100 var blocksize = (alg === 'sha512' || alg === 'sha384') ?
128 :
64
14105 if (key.length
> blocksize) {
14106 key = createHash(alg).update(key).digest()
14108 } else if (key.length < blocksize) {
14109 key = Buffer.concat([key, ZEROS], blocksize)
14112 var ipad = this._ipad = new Buffer(blocksize)
14113 var opad = this._opad = new Buffer(blocksize)
14115 for (var i =
0; i < blocksize; i++) {
14116 ipad[i] = key[i] ^
0x36
14117 opad[i] = key[i] ^
0x5C
14120 this._hash = createHash(alg).update(ipad)
14123 inherits(Hmac, Transform)
14125 Hmac.prototype.update = function (data, enc) {
14126 this._hash.update(data, enc)
14131 Hmac.prototype._transform = function (data, _, next) {
14132 this._hash.update(data)
14137 Hmac.prototype._flush = function (next) {
14138 this.push(this.digest())
14143 Hmac.prototype.digest = function (enc) {
14144 var h = this._hash.digest()
14146 return createHash(this._alg).update(this._opad).update(h).digest(enc)
14149 module.exports = function createHmac(alg, key) {
14150 return new Hmac(alg, key)
14153 }).call(this,require("buffer").Buffer)
14154 },{"buffer":
7,"create-hash/browser":
32,"inherits":
46,"stream":
26}],
46:[function(require,module,exports){
14155 arguments[
4][
12][
0].apply(exports,arguments)
14156 },{"dup":
12}],
47:[function(require,module,exports){
14157 var assert = require('assert')
14158 var BigInteger = require('bigi')
14160 var Point = require('./point')
14162 function Curve(p, a, b, Gx, Gy, n, h) {
14166 this.G = Point.fromAffine(this, Gx, Gy)
14170 this.infinity = new Point(this, null, null, BigInteger.ZERO)
14173 this.pOverFour = p.add(BigInteger.ONE).shiftRight(
2)
14176 Curve.prototype.pointFromX = function(isOdd, x) {
14177 var alpha = x.pow(
3).add(this.a.multiply(x)).add(this.b).mod(this.p)
14178 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
14181 if (beta.isEven() ^ !isOdd) {
14182 y = this.p.subtract(y) // -y % p
14185 return Point.fromAffine(this, x, y)
14188 Curve.prototype.isInfinity = function(Q) {
14189 if (Q === this.infinity) return true
14191 return Q.z.signum() ===
0 && Q.y.signum() !==
0
14194 Curve.prototype.isOnCurve = function(Q) {
14195 if (this.isInfinity(Q)) return true
14203 // Check that xQ and yQ are integers in the interval [
0, p -
1]
14204 if (x.signum() <
0 || x.compareTo(p)
>=
0) return false
14205 if (y.signum() <
0 || y.compareTo(p)
>=
0) return false
14207 // and check that y^
2 = x^
3 + ax + b (mod p)
14208 var lhs = y.square().mod(p)
14209 var rhs = x.pow(
3).add(a.multiply(x)).add(b).mod(p)
14210 return lhs.equals(rhs)
14214 * Validate an elliptic curve point.
14216 * See SEC
1, section
3.2.2.1: Elliptic Curve Public Key Validation Primitive
14218 Curve.prototype.validate = function(Q) {
14220 assert(!this.isInfinity(Q), 'Point is at infinity')
14221 assert(this.isOnCurve(Q), 'Point is not on the curve')
14223 // Check nQ = O (where Q is a scalar multiple of G)
14224 var nQ = Q.multiply(this.n)
14225 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
14230 module.exports = Curve
14232 },{"./point":
51,"assert":
5,"bigi":
3}],
48:[function(require,module,exports){
14235 "p": "fffffffdffffffffffffffffffffffff",
14236 "a": "fffffffdfffffffffffffffffffffffc",
14237 "b": "e87579c11079f43dd824993c2cee5ed3",
14238 "n": "fffffffe0000000075a30d1b9038a115",
14240 "Gx": "
161ff7528b899b2d0c28607ca52c5b86",
14241 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
14244 "p": "fffffffffffffffffffffffffffffffeffffac73",
14247 "n": "
0100000000000000000001b8fa16dfab9aca16b6b3",
14249 "Gx": "
3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
14250 "Gy": "
938cf935318fdced6bc28286531733c3f03c4fee"
14253 "p": "ffffffffffffffffffffffffffffffff7fffffff",
14254 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
14255 "b": "
1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
14256 "n": "
0100000000000000000001f4c8f927aed3ca752257",
14258 "Gx": "
4a96b5688ef573284664698968c38bb913cbfc82",
14259 "Gy": "
23a628553168947d59dcc912042351377ac5fb32"
14262 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
14265 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
14267 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
14268 "Gy": "
9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
14271 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
14272 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
14273 "b": "
64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
14274 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
14276 "Gx": "
188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
14277 "Gy": "
07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
14280 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
14283 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
14285 "Gx": "
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
14286 "Gy": "
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
14289 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
14290 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
14291 "b": "
5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
14292 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
14294 "Gx": "
6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
14295 "Gy": "
4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
14299 },{}],
49:[function(require,module,exports){
14300 var Point = require('./point')
14301 var Curve = require('./curve')
14303 var getCurveByName = require('./names')
14308 getCurveByName: getCurveByName
14311 },{"./curve":
47,"./names":
50,"./point":
51}],
50:[function(require,module,exports){
14312 var BigInteger = require('bigi')
14314 var curves = require('./curves')
14315 var Curve = require('./curve')
14317 function getCurveByName(name) {
14318 var curve = curves[name]
14319 if (!curve) return null
14321 var p = new BigInteger(curve.p,
16)
14322 var a = new BigInteger(curve.a,
16)
14323 var b = new BigInteger(curve.b,
16)
14324 var n = new BigInteger(curve.n,
16)
14325 var h = new BigInteger(curve.h,
16)
14326 var Gx = new BigInteger(curve.Gx,
16)
14327 var Gy = new BigInteger(curve.Gy,
16)
14329 return new Curve(p, a, b, Gx, Gy, n, h)
14332 module.exports = getCurveByName
14334 },{"./curve":
47,"./curves":
48,"bigi":
3}],
51:[function(require,module,exports){
14335 (function (Buffer){
14336 var assert = require('assert')
14337 var BigInteger = require('bigi')
14339 var THREE = BigInteger.valueOf(
3)
14341 function Point(curve, x, y, z) {
14342 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
14350 this.compressed = true
14353 Object.defineProperty(Point.prototype, 'zInv', {
14355 if (this._zInv === null) {
14356 this._zInv = this.z.modInverse(this.curve.p)
14363 Object.defineProperty(Point.prototype, 'affineX', {
14365 return this.x.multiply(this.zInv).mod(this.curve.p)
14369 Object.defineProperty(Point.prototype, 'affineY', {
14371 return this.y.multiply(this.zInv).mod(this.curve.p)
14375 Point.fromAffine = function(curve, x, y) {
14376 return new Point(curve, x, y, BigInteger.ONE)
14379 Point.prototype.equals = function(other) {
14380 if (other === this) return true
14381 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
14382 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
14384 // u = Y2 * Z1 - Y1 * Z2
14385 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
14387 if (u.signum() !==
0) return false
14389 // v = X2 * Z1 - X1 * Z2
14390 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
14392 return v.signum() ===
0
14395 Point.prototype.negate = function() {
14396 var y = this.curve.p.subtract(this.y)
14398 return new Point(this.curve, this.x, y, this.z)
14401 Point.prototype.add = function(b) {
14402 if (this.curve.isInfinity(this)) return b
14403 if (this.curve.isInfinity(b)) return this
14410 // u = Y2 * Z1 - Y1 * Z2
14411 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
14412 // v = X2 * Z1 - X1 * Z2
14413 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
14415 if (v.signum() ===
0) {
14416 if (u.signum() ===
0) {
14417 return this.twice() // this == b, so double
14420 return this.curve.infinity // this = -b, so infinity
14423 var v2 = v.square()
14424 var v3 = v2.multiply(v)
14425 var x1v2 = x1.multiply(v2)
14426 var zu2 = u.square().multiply(this.z)
14428 // x3 = v * (z2 * (z1 * u^
2 -
2 * x1 * v^
2) - v^
3)
14429 var x3 = zu2.subtract(x1v2.shiftLeft(
1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
14430 // y3 = z2 * (
3 * x1 * u * v^
2 - y1 * v^
3 - z1 * u^
3) + u * v^
3
14431 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
14432 // z3 = v^
3 * z1 * z2
14433 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
14435 return new Point(this.curve, x3, y3, z3)
14438 Point.prototype.twice = function() {
14439 if (this.curve.isInfinity(this)) return this
14440 if (this.y.signum() ===
0) return this.curve.infinity
14445 var y1z1 = y1.multiply(this.z)
14446 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
14447 var a = this.curve.a
14449 // w =
3 * x1^
2 + a * z1^
2
14450 var w = x1.square().multiply(THREE)
14452 if (a.signum() !==
0) {
14453 w = w.add(this.z.square().multiply(a))
14456 w = w.mod(this.curve.p)
14457 // x3 =
2 * y1 * z1 * (w^
2 -
8 * x1 * y1^
2 * z1)
14458 var x3 = w.square().subtract(x1.shiftLeft(
3).multiply(y1sqz1)).shiftLeft(
1).multiply(y1z1).mod(this.curve.p)
14459 // y3 =
4 * y1^
2 * z1 * (
3 * w * x1 -
2 * y1^
2 * z1) - w^
3
14460 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(
1)).shiftLeft(
2).multiply(y1sqz1).subtract(w.pow(
3)).mod(this.curve.p)
14461 // z3 =
8 * (y1 * z1)^
3
14462 var z3 = y1z1.pow(
3).shiftLeft(
3).mod(this.curve.p)
14464 return new Point(this.curve, x3, y3, z3)
14467 // Simple NAF (Non-Adjacent Form) multiplication algorithm
14468 // TODO: modularize the multiplication algorithm
14469 Point.prototype.multiply = function(k) {
14470 if (this.curve.isInfinity(this)) return this
14471 if (k.signum() ===
0) return this.curve.infinity
14474 var h = e.multiply(THREE)
14476 var neg = this.negate()
14479 for (var i = h.bitLength() -
2; i
> 0; --i) {
14482 var hBit = h.testBit(i)
14483 var eBit = e.testBit(i)
14485 if (hBit != eBit) {
14486 R = R.add(hBit ? this : neg)
14493 // Compute this*j + x*k (simultaneous multiplication)
14494 Point.prototype.multiplyTwo = function(j, x, k) {
14497 if (j.bitLength()
> k.bitLength())
14498 i = j.bitLength() -
1
14500 i = k.bitLength() -
1
14502 var R = this.curve.infinity
14503 var both = this.add(x)
14508 var jBit = j.testBit(i)
14509 var kBit = k.testBit(i)
14530 Point.prototype.getEncoded = function(compressed) {
14531 if (compressed == undefined) compressed = this.compressed
14532 if (this.curve.isInfinity(this)) return new Buffer('
00', 'hex') // Infinity point encoded is simply '
00'
14534 var x = this.affineX
14535 var y = this.affineY
14539 // Determine size of q in bytes
14540 var byteLength = Math.floor((this.curve.p.bitLength() +
7) /
8)
14544 buffer = new Buffer(
1 + byteLength)
14545 buffer.writeUInt8(y.isEven() ?
0x02 :
0x03,
0)
14549 buffer = new Buffer(
1 + byteLength + byteLength)
14550 buffer.writeUInt8(
0x04,
0)
14552 y.toBuffer(byteLength).copy(buffer,
1 + byteLength)
14555 x.toBuffer(byteLength).copy(buffer,
1)
14560 Point.decodeFrom = function(curve, buffer) {
14561 var type = buffer.readUInt8(
0)
14562 var compressed = (type !==
4)
14564 var byteLength = Math.floor((curve.p.bitLength() +
7) /
8)
14565 var x = BigInteger.fromBuffer(buffer.slice(
1,
1 + byteLength))
14569 assert.equal(buffer.length, byteLength +
1, 'Invalid sequence length')
14570 assert(type ===
0x02 || type ===
0x03, 'Invalid sequence tag')
14572 var isOdd = (type ===
0x03)
14573 Q = curve.pointFromX(isOdd, x)
14576 assert.equal(buffer.length,
1 + byteLength + byteLength, 'Invalid sequence length')
14578 var y = BigInteger.fromBuffer(buffer.slice(
1 + byteLength))
14579 Q = Point.fromAffine(curve, x, y)
14582 Q.compressed = compressed
14586 Point.prototype.toString = function () {
14587 if (this.curve.isInfinity(this)) return '(INFINITY)'
14589 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
14592 module.exports = Point
14594 }).call(this,require("buffer").Buffer)
14595 },{"assert":
5,"bigi":
3,"buffer":
7}],
52:[function(require,module,exports){
14596 (function (process,global,Buffer){
14599 var crypto = global.crypto || global.msCrypto
14600 if(crypto && crypto.getRandomValues) {
14601 module.exports = randomBytes;
14603 module.exports = oldBrowser;
14605 function randomBytes(size, cb) {
14606 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
14607 /* This will not work in older browsers.
14608 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
14611 crypto.getRandomValues(bytes);
14612 if (typeof cb === 'function') {
14613 return process.nextTick(function () {
14619 function oldBrowser() {
14621 'secure random number generation not supported by this browser\n'+
14622 'use chrome, FireFox or Internet Explorer
11'
14626 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
14627 },{"_process":
14,"buffer":
7}],
53:[function(require,module,exports){
14628 (function (Buffer){
14631 function getFunctionName(fn) {
14632 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[
1];
14635 function getTypeTypeName(type) {
14636 if (nativeTypes.Function(type)) {
14637 type = type.toJSON ? type.toJSON() : getFunctionName(type);
14639 if (nativeTypes.Object(type)) return JSON.stringify(type);
14644 function getValueTypeName(value) {
14645 if (nativeTypes.Null(value)) return '';
14647 return getFunctionName(value.constructor);
14650 function tfErrorString(type, value) {
14651 var typeTypeName = getTypeTypeName(type);
14652 var valueTypeName = getValueTypeName(value);
14654 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
14657 function tfPropertyErrorString(type, name, value) {
14658 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
14661 var nativeTypes = {
14662 Array: (function (_Array) {
14663 function Array(_x) {
14664 return _Array.apply(this, arguments);
14667 Array.toString = function () {
14668 return _Array.toString();
14672 })(function (value) {
14673 return value !== null && value !== undefined && value.constructor === Array;
14675 Boolean: function Boolean(value) {
14676 return typeof value === 'boolean';
14678 Buffer: (function (_Buffer) {
14679 function Buffer(_x2) {
14680 return _Buffer.apply(this, arguments);
14683 Buffer.toString = function () {
14684 return _Buffer.toString();
14688 })(function (value) {
14689 return Buffer.isBuffer(value);
14691 Function: function Function(value) {
14692 return typeof value === 'function';
14694 Null: function Null(value) {
14695 return value === undefined || value === null;
14697 Number: function Number(value) {
14698 return typeof value === 'number';
14700 Object: function Object(value) {
14701 return typeof value === 'object';
14703 String: function String(value) {
14704 return typeof value === 'string';
14711 function tJSON(type) {
14712 return type && type.toJSON ? type.toJSON() : type;
14715 function sJSON(type) {
14716 var json = tJSON(type);
14717 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
14721 arrayOf: function arrayOf(type) {
14722 function arrayOf(value, strict) {
14724 return nativeTypes.Array(value) && value.every(function (x) {
14725 return typeforce(type, x, strict);
14731 arrayOf.toJSON = function () {
14732 return [tJSON(type)];
14738 maybe: function maybe(type) {
14739 function maybe(value, strict) {
14740 return nativeTypes.Null(value) || typeforce(type, value, strict);
14742 maybe.toJSON = function () {
14743 return '?' + sJSON(type);
14749 object: function object(type) {
14750 function object(value, strict) {
14751 typeforce(nativeTypes.Object, value, strict);
14753 var propertyName, propertyType, propertyValue;
14756 for (propertyName in type) {
14757 propertyType = type[propertyName];
14758 propertyValue = value[propertyName];
14760 typeforce(propertyType, propertyValue, strict);
14763 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
14767 for (propertyName in value) {
14768 if (type[propertyName]) continue;
14770 throw new TypeError('Unexpected property "' + propertyName + '"');
14776 object.toJSON = function () {
14783 oneOf: function oneOf() {
14784 for (var _len = arguments.length, types = Array(_len), _key =
0; _key < _len; _key++) {
14785 types[_key] = arguments[_key];
14788 function oneOf(value, strict) {
14789 return types.some(function (type) {
14791 return typeforce(type, value, strict);
14797 oneOf.toJSON = function () {
14798 return types.map(sJSON).join('|');
14804 quacksLike: function quacksLike(type) {
14805 function quacksLike(value, strict) {
14806 return type === getValueTypeName(value);
14808 quacksLike.toJSON = function () {
14815 tuple: function tuple() {
14816 for (var _len2 = arguments.length, types = Array(_len2), _key2 =
0; _key2 < _len2; _key2++) {
14817 types[_key2] = arguments[_key2];
14820 function tuple(value, strict) {
14821 return types.every(function (type, i) {
14822 return typeforce(type, value[i], strict);
14825 tuple.toJSON = function () {
14826 return '(' + types.map(sJSON).join(', ') + ')';
14832 value: function value(expected) {
14833 function value(actual) {
14834 return actual === expected;
14836 value.toJSON = function () {
14844 function compile(type) {
14845 if (nativeTypes.String(type)) {
14846 if (type[
0] === '?') return otherTypes.maybe(compile(type.slice(
1)));
14848 return nativeTypes[type] || otherTypes.quacksLike(type);
14849 } else if (type && nativeTypes.Object(type)) {
14850 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[
0]));
14854 for (var propertyName in type) {
14855 compiled[propertyName] = compile(type[propertyName]);
14858 return otherTypes.object(compiled);
14859 } else if (nativeTypes.Function(type)) {
14863 return otherTypes.value(type);
14866 function typeforce(_x3, _x4, _x5) {
14869 _function: while (_again) {
14875 if (nativeTypes.Function(type)) {
14876 if (type(value, strict)) return true;
14878 throw new TypeError(tfErrorString(type, value));
14882 _x3 = compile(type);
14886 continue _function;
14890 // assign all types to typeforce function
14892 Object.keys(nativeTypes).forEach(function (typeName) {
14893 var nativeType = nativeTypes[typeName];
14894 nativeType.toJSON = function () {
14898 typeforce[typeName] = nativeType;
14901 for (typeName in otherTypes) {
14902 typeforce[typeName] = otherTypes[typeName];
14905 module.exports = typeforce;
14906 module.exports.compile = compile;
14907 }).call(this,require("buffer").Buffer)
14908 },{"buffer":
7}],
54:[function(require,module,exports){
14909 (function (Buffer){
14910 var assert = require('assert')
14911 var base58check = require('bs58check')
14912 var typeForce = require('typeforce')
14913 var networks = require('./networks')
14914 var scripts = require('./scripts')
14916 function findScriptTypeByVersion (version) {
14917 for (var networkName in networks) {
14918 var network = networks[networkName]
14920 if (version === network.pubKeyHash) return 'pubkeyhash'
14921 if (version === network.scriptHash) return 'scripthash'
14925 function Address (hash, version) {
14926 typeForce('Buffer', hash)
14928 assert.strictEqual(hash.length,
20, 'Invalid hash length')
14929 assert.strictEqual(version &
0xff, version, 'Invalid version byte')
14932 this.version = version
14935 Address.fromBase58Check = function (string) {
14936 var payload = base58check.decode(string)
14937 var version = payload.readUInt8(
0)
14938 var hash = payload.slice(
1)
14940 return new Address(hash, version)
14943 Address.fromOutputScript = function (script, network) {
14944 network = network || networks.bitcoin
14946 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[
2], network.pubKeyHash)
14947 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[
1], network.scriptHash)
14949 assert(false, script.toASM() + ' has no matching Address')
14952 Address.prototype.toBase58Check = function () {
14953 var payload = new Buffer(
21)
14954 payload.writeUInt8(this.version,
0)
14955 this.hash.copy(payload,
1)
14957 return base58check.encode(payload)
14960 Address.prototype.toOutputScript = function () {
14961 var scriptType = findScriptTypeByVersion(this.version)
14963 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
14964 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
14966 assert(false, this.toString() + ' has no matching Script')
14969 Address.prototype.toString = Address.prototype.toBase58Check
14971 module.exports = Address
14973 }).call(this,require("buffer").Buffer)
14974 },{"./networks":
66,"./scripts":
69,"assert":
5,"bs58check":
31,"buffer":
7,"typeforce":
53}],
55:[function(require,module,exports){
14975 var bs58check = require('bs58check')
14977 function decode () {
14978 console.warn('bs58check will be removed in
2.0.0. require("bs58check") instead.')
14980 return bs58check.decode.apply(undefined, arguments)
14983 function encode () {
14984 console.warn('bs58check will be removed in
2.0.0. require("bs58check") instead.')
14986 return bs58check.encode.apply(undefined, arguments)
14994 },{"bs58check":
31}],
56:[function(require,module,exports){
14995 (function (Buffer){
14996 var assert = require('assert')
14997 var bufferutils = require('./bufferutils')
14998 var crypto = require('./crypto')
15000 var Transaction = require('./transaction')
15002 function Block () {
15004 this.prevHash = null
15005 this.merkleRoot = null
15011 Block.fromBuffer = function (buffer) {
15012 assert(buffer.length
>=
80, 'Buffer too small (<
80 bytes)')
15015 function readSlice (n) {
15017 return buffer.slice(offset - n, offset)
15020 function readUInt32 () {
15021 var i = buffer.readUInt32LE(offset)
15026 var block = new Block()
15027 block.version = readUInt32()
15028 block.prevHash = readSlice(
32)
15029 block.merkleRoot = readSlice(
32)
15030 block.timestamp = readUInt32()
15031 block.bits = readUInt32()
15032 block.nonce = readUInt32()
15034 if (buffer.length ===
80) return block
15036 function readVarInt () {
15037 var vi = bufferutils.readVarInt(buffer, offset)
15042 // FIXME: poor performance
15043 function readTransaction () {
15044 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15046 offset += tx.toBuffer().length
15050 var nTransactions = readVarInt()
15051 block.transactions = []
15053 for (var i =
0; i < nTransactions; ++i) {
15054 var tx = readTransaction()
15055 block.transactions.push(tx)
15061 Block.fromHex = function (hex) {
15062 return Block.fromBuffer(new Buffer(hex, 'hex'))
15065 Block.prototype.getHash = function () {
15066 return crypto.hash256(this.toBuffer(true))
15069 Block.prototype.getId = function () {
15070 return bufferutils.reverse(this.getHash()).toString('hex')
15073 Block.prototype.getUTCDate = function () {
15074 var date = new Date(
0) // epoch
15075 date.setUTCSeconds(this.timestamp)
15080 Block.prototype.toBuffer = function (headersOnly) {
15081 var buffer = new Buffer(
80)
15084 function writeSlice (slice) {
15085 slice.copy(buffer, offset)
15086 offset += slice.length
15089 function writeUInt32 (i) {
15090 buffer.writeUInt32LE(i, offset)
15094 writeUInt32(this.version)
15095 writeSlice(this.prevHash)
15096 writeSlice(this.merkleRoot)
15097 writeUInt32(this.timestamp)
15098 writeUInt32(this.bits)
15099 writeUInt32(this.nonce)
15101 if (headersOnly || !this.transactions) return buffer
15103 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
15104 var txBuffers = this.transactions.map(function (tx) {
15105 return tx.toBuffer()
15108 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
15111 Block.prototype.toHex = function (headersOnly) {
15112 return this.toBuffer(headersOnly).toString('hex')
15115 module.exports = Block
15117 }).call(this,require("buffer").Buffer)
15118 },{"./bufferutils":
57,"./crypto":
58,"./transaction":
70,"assert":
5,"buffer":
7}],
57:[function(require,module,exports){
15119 (function (Buffer){
15120 var assert = require('assert')
15121 var opcodes = require('./opcodes')
15123 // https://github.com/feross/buffer/blob/master/index.js#L1127
15124 function verifuint (value, max) {
15125 assert(typeof value === 'number', 'cannot write a non-number as a number')
15126 assert(value
>=
0, 'specified a negative value for writing an unsigned value')
15127 assert(value <= max, 'value is larger than maximum value for type')
15128 assert(Math.floor(value) === value, 'value has a fractional component')
15131 function pushDataSize (i) {
15132 return i < opcodes.OP_PUSHDATA1 ?
1
15138 function readPushDataInt (buffer, offset) {
15139 var opcode = buffer.readUInt8(offset)
15143 if (opcode < opcodes.OP_PUSHDATA1) {
15148 } else if (opcode === opcodes.OP_PUSHDATA1) {
15149 if (offset +
2 > buffer.length) return null
15150 number = buffer.readUInt8(offset +
1)
15154 } else if (opcode === opcodes.OP_PUSHDATA2) {
15155 if (offset +
3 > buffer.length) return null
15156 number = buffer.readUInt16LE(offset +
1)
15161 if (offset +
5 > buffer.length) return null
15162 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
15164 number = buffer.readUInt32LE(offset +
1)
15175 function readUInt64LE (buffer, offset) {
15176 var a = buffer.readUInt32LE(offset)
15177 var b = buffer.readUInt32LE(offset +
4)
15180 verifuint(b + a,
0x001fffffffffffff)
15185 function readVarInt (buffer, offset) {
15186 var t = buffer.readUInt8(offset)
15195 } else if (t <
254) {
15196 number = buffer.readUInt16LE(offset +
1)
15200 } else if (t <
255) {
15201 number = buffer.readUInt32LE(offset +
1)
15206 number = readUInt64LE(buffer, offset +
1)
15216 function writePushDataInt (buffer, number, offset) {
15217 var size = pushDataSize(number)
15221 buffer.writeUInt8(number, offset)
15224 } else if (size ===
2) {
15225 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
15226 buffer.writeUInt8(number, offset +
1)
15229 } else if (size ===
3) {
15230 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
15231 buffer.writeUInt16LE(number, offset +
1)
15235 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
15236 buffer.writeUInt32LE(number, offset +
1)
15242 function writeUInt64LE (buffer, value, offset) {
15243 verifuint(value,
0x001fffffffffffff)
15245 buffer.writeInt32LE(value & -
1, offset)
15246 buffer.writeUInt32LE(Math.floor(value /
0x100000000), offset +
4)
15249 function varIntSize (i) {
15252 : i <
0x100000000 ?
5
15256 function writeVarInt (buffer, number, offset) {
15257 var size = varIntSize(number)
15261 buffer.writeUInt8(number, offset)
15264 } else if (size ===
3) {
15265 buffer.writeUInt8(
253, offset)
15266 buffer.writeUInt16LE(number, offset +
1)
15269 } else if (size ===
5) {
15270 buffer.writeUInt8(
254, offset)
15271 buffer.writeUInt32LE(number, offset +
1)
15275 buffer.writeUInt8(
255, offset)
15276 writeUInt64LE(buffer, number, offset +
1)
15282 function varIntBuffer (i) {
15283 var size = varIntSize(i)
15284 var buffer = new Buffer(size)
15285 writeVarInt(buffer, i,
0)
15290 function reverse (buffer) {
15291 var buffer2 = new Buffer(buffer)
15292 Array.prototype.reverse.call(buffer2)
15297 pushDataSize: pushDataSize,
15298 readPushDataInt: readPushDataInt,
15299 readUInt64LE: readUInt64LE,
15300 readVarInt: readVarInt,
15302 varIntBuffer: varIntBuffer,
15303 varIntSize: varIntSize,
15304 writePushDataInt: writePushDataInt,
15305 writeUInt64LE: writeUInt64LE,
15306 writeVarInt: writeVarInt
15309 }).call(this,require("buffer").Buffer)
15310 },{"./opcodes":
67,"assert":
5,"buffer":
7}],
58:[function(require,module,exports){
15311 var createHash = require('create-hash')
15313 function hash160 (buffer) {
15314 return ripemd160(sha256(buffer))
15317 function hash256 (buffer) {
15318 return sha256(sha256(buffer))
15321 function ripemd160 (buffer) {
15322 return createHash('rmd160').update(buffer).digest()
15325 function sha1 (buffer) {
15326 return createHash('sha1').update(buffer).digest()
15329 function sha256 (buffer) {
15330 return createHash('sha256').update(buffer).digest()
15333 // FIXME: Name not consistent with others
15334 var createHmac = require('create-hmac')
15336 function HmacSHA256 (buffer, secret) {
15337 console.warn('Hmac* functions are deprecated for removal in
2.0.0, use node crypto instead')
15338 return createHmac('sha256', secret).update(buffer).digest()
15341 function HmacSHA512 (buffer, secret) {
15342 console.warn('Hmac* functions are deprecated for removal in
2.0.0, use node crypto instead')
15343 return createHmac('sha512', secret).update(buffer).digest()
15347 ripemd160: ripemd160,
15352 HmacSHA256: HmacSHA256,
15353 HmacSHA512: HmacSHA512
15356 },{"create-hash":
32,"create-hmac":
45}],
59:[function(require,module,exports){
15357 (function (Buffer){
15358 var assert = require('assert')
15359 var createHmac = require('create-hmac')
15360 var typeForce = require('typeforce')
15362 var BigInteger = require('bigi')
15363 var ECSignature = require('./ecsignature')
15365 var ZERO = new Buffer([
0])
15366 var ONE = new Buffer([
1])
15368 // https://tools.ietf.org/html/rfc6979#section-
3.2
15369 function deterministicGenerateK (curve, hash, d, checkSig) {
15370 typeForce('Buffer', hash)
15371 typeForce('BigInteger', d)
15373 // FIXME: remove/uncomment for
2.0.0
15374 // typeForce('Function', checkSig)
15376 if (typeof checkSig !== 'function') {
15377 console.warn('deterministicGenerateK requires a checkSig callback in
2.0.0, see #
337 for more information')
15379 checkSig = function (k) {
15382 var e = BigInteger.fromBuffer(hash)
15384 var Q = G.multiply(k)
15386 if (curve.isInfinity(Q))
15389 var r = Q.affineX.mod(n)
15390 if (r.signum() ===
0)
15393 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
15394 if (s.signum() ===
0)
15402 assert.equal(hash.length,
32, 'Hash must be
256 bit')
15404 var x = d.toBuffer(
32)
15405 var k = new Buffer(
32)
15406 var v = new Buffer(
32)
15408 // Step A, ignored as hash already provided
15416 k = createHmac('sha256', k)
15424 v = createHmac('sha256', k).update(v).digest()
15427 k = createHmac('sha256', k)
15435 v = createHmac('sha256', k).update(v).digest()
15437 // Step H1/H2a, ignored as tlen === qlen (
256 bit)
15439 v = createHmac('sha256', k).update(v).digest()
15441 var T = BigInteger.fromBuffer(v)
15443 // Step H3, repeat until T is within the interval [
1, n -
1] and is suitable for ECDSA
15444 while ((T.signum() <=
0) || (T.compareTo(curve.n)
>=
0) || !checkSig(T)) {
15445 k = createHmac('sha256', k)
15450 v = createHmac('sha256', k).update(v).digest()
15452 // Step H1/H2a, again, ignored as tlen === qlen (
256 bit)
15454 v = createHmac('sha256', k).update(v).digest()
15455 T = BigInteger.fromBuffer(v)
15461 function sign (curve, hash, d) {
15464 var e = BigInteger.fromBuffer(hash)
15468 deterministicGenerateK(curve, hash, d, function (k) {
15469 var Q = G.multiply(k)
15471 if (curve.isInfinity(Q))
15474 r = Q.affineX.mod(n)
15475 if (r.signum() ===
0)
15478 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
15479 if (s.signum() ===
0)
15485 var N_OVER_TWO = n.shiftRight(
1)
15487 // enforce low S values, see bip62: 'low s values in signatures'
15488 if (s.compareTo(N_OVER_TWO)
> 0) {
15492 return new ECSignature(r, s)
15495 function verifyRaw (curve, e, signature, Q) {
15499 var r = signature.r
15500 var s = signature.s
15502 //
1.4.1 Enforce r and s are both integers in the interval [
1, n −
1]
15503 if (r.signum() <=
0 || r.compareTo(n)
>=
0) return false
15504 if (s.signum() <=
0 || s.compareTo(n)
>=
0) return false
15507 var c = s.modInverse(n)
15509 //
1.4.4 Compute u1 = es^−
1 mod n
15510 // u2 = rs^−
1 mod n
15511 var u1 = e.multiply(c).mod(n)
15512 var u2 = r.multiply(c).mod(n)
15514 //
1.4.5 Compute R = (xR, yR) = u1G + u2Q
15515 var R = G.multiplyTwo(u1, Q, u2)
15516 var v = R.affineX.mod(n)
15518 //
1.4.5 (cont.) Enforce R is not at infinity
15519 if (curve.isInfinity(R)) return false
15521 //
1.4.8 If v = r, output "valid", and if v != r, output "invalid"
15525 function verify (curve, hash, signature, Q) {
15526 //
1.4.2 H = Hash(M), already done by the user
15528 var e = BigInteger.fromBuffer(hash)
15530 return verifyRaw(curve, e, signature, Q)
15534 * Recover a public key from a signature.
15536 * See SEC
1: Elliptic Curve Cryptography, section
4.1.6, "Public
15537 * Key Recovery Operation".
15539 * http://www.secg.org/download/aid-
780/sec1-v2.pdf
15541 function recoverPubKey (curve, e, signature, i) {
15542 assert.strictEqual(i &
3, i, 'Recovery param is more than two bits')
15547 var r = signature.r
15548 var s = signature.s
15550 assert(r.signum()
> 0 && r.compareTo(n) <
0, 'Invalid r value')
15551 assert(s.signum()
> 0 && s.compareTo(n) <
0, 'Invalid s value')
15553 // A set LSB signifies that the y-coordinate is odd
15556 // The more significant bit specifies whether we should use the
15557 // first or second candidate key.
15558 var isSecondKey = i
>> 1
15560 //
1.1 Let x = r + jn
15561 var x = isSecondKey ? r.add(n) : r
15562 var R = curve.pointFromX(isYOdd, x)
15564 //
1.4 Check that nR is at infinity
15565 var nR = R.multiply(n)
15566 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
15568 // Compute -e from e
15569 var eNeg = e.negate().mod(n)
15571 //
1.6.1 Compute Q = r^-
1 (sR - eG)
15572 // Q = r^-
1 (sR + -eG)
15573 var rInv = r.modInverse(n)
15575 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
15582 * Calculate pubkey extraction parameter.
15584 * When extracting a pubkey from a signature, we have to
15585 * distinguish four different cases. Rather than putting this
15586 * burden on the verifier, Bitcoin includes a
2-bit value with the
15589 * This function simply tries all four cases and returns the value
15590 * that resulted in a successful pubkey recovery.
15592 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
15593 for (var i =
0; i <
4; i++) {
15594 var Qprime = recoverPubKey(curve, e, signature, i)
15597 if (Qprime.equals(Q)) {
15602 throw new Error('Unable to find valid recovery factor')
15606 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
15607 deterministicGenerateK: deterministicGenerateK,
15608 recoverPubKey: recoverPubKey,
15611 verifyRaw: verifyRaw
15614 }).call(this,require(
"buffer").Buffer)
15615 },{
"./ecsignature":
62,
"assert":
5,
"bigi":
3,
"buffer":
7,
"create-hmac":
45,
"typeforce":
53}],
60:[function(require,module,exports){
15616 (function (Buffer){
15617 var assert = require('assert')
15618 var base58check = require('bs58check')
15619 var ecdsa = require('./ecdsa')
15620 var networks = require('./networks')
15621 var randomBytes = require('randombytes')
15622 var typeForce = require('typeforce')
15624 var BigInteger = require('bigi')
15625 var ECPubKey = require('./ecpubkey')
15627 var ecurve = require('ecurve')
15628 var secp256k1 = ecurve.getCurveByName('secp256k1')
15630 function ECKey (d, compressed) {
15631 assert(d.signum()
> 0, 'Private key must be greater than
0')
15632 assert(d.compareTo(ECKey.curve.n) <
0, 'Private key must be less than the curve order')
15634 var Q = ECKey.curve.G.multiply(d)
15637 this.pub = new ECPubKey(Q, compressed)
15641 ECKey.curve = secp256k1
15643 // Static constructors
15644 ECKey.fromWIF = function (string) {
15645 var payload = base58check.decode(string)
15646 var compressed = false
15648 // Ignore the version byte
15649 payload = payload.slice(
1)
15651 if (payload.length ===
33) {
15652 assert.strictEqual(payload[
32],
0x01, 'Invalid compression flag')
15654 // Truncate the compression flag
15655 payload = payload.slice(
0, -
1)
15659 assert.equal(payload.length,
32, 'Invalid WIF payload length')
15661 var d = BigInteger.fromBuffer(payload)
15662 return new ECKey(d, compressed)
15665 ECKey.makeRandom = function (compressed, rng) {
15666 rng = rng || randomBytes
15668 var buffer = rng(
32)
15669 typeForce('Buffer', buffer)
15670 assert.equal(buffer.length,
32, 'Expected
256-bit Buffer from RNG')
15672 var d = BigInteger.fromBuffer(buffer)
15673 d = d.mod(ECKey.curve.n)
15675 return new ECKey(d, compressed)
15678 // Export functions
15679 ECKey.prototype.toWIF = function (network) {
15680 network = network || networks.bitcoin
15682 var bufferLen = this.pub.compressed ?
34 :
33
15683 var buffer = new Buffer(bufferLen)
15685 buffer.writeUInt8(network.wif,
0)
15686 this.d.toBuffer(
32).copy(buffer,
1)
15688 if (this.pub.compressed) {
15689 buffer.writeUInt8(
0x01,
33)
15692 return base58check.encode(buffer)
15696 ECKey.prototype.sign = function (hash) {
15697 return ecdsa.sign(ECKey.curve, hash, this.d)
15700 module.exports = ECKey
15702 }).call(this,require(
"buffer").Buffer)
15703 },{
"./ecdsa":
59,
"./ecpubkey":
61,
"./networks":
66,
"assert":
5,
"bigi":
3,
"bs58check":
31,
"buffer":
7,
"ecurve":
49,
"randombytes":
52,
"typeforce":
53}],
61:[function(require,module,exports){
15704 (function (Buffer){
15705 var crypto = require('./crypto')
15706 var ecdsa = require('./ecdsa')
15707 var typeForce = require('typeforce')
15708 var networks = require('./networks')
15710 var Address = require('./address')
15712 var ecurve = require('ecurve')
15713 var secp256k1 = ecurve.getCurveByName('secp256k1')
15715 function ECPubKey (Q, compressed) {
15716 if (compressed === undefined) {
15720 typeForce('Point', Q)
15721 typeForce('Boolean', compressed)
15723 this.compressed = compressed
15728 ECPubKey.curve = secp256k1
15730 // Static constructors
15731 ECPubKey.fromBuffer = function (buffer) {
15732 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
15733 return new ECPubKey(Q, Q.compressed)
15736 ECPubKey.fromHex = function (hex) {
15737 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
15741 ECPubKey.prototype.getAddress = function (network) {
15742 network = network || networks.bitcoin
15744 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
15747 ECPubKey.prototype.verify = function (hash, signature) {
15748 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
15751 // Export functions
15752 ECPubKey.prototype.toBuffer = function () {
15753 return this.Q.getEncoded(this.compressed)
15756 ECPubKey.prototype.toHex = function () {
15757 return this.toBuffer().toString('hex')
15760 module.exports = ECPubKey
15762 }).call(this,require(
"buffer").Buffer)
15763 },{
"./address":
54,
"./crypto":
58,
"./ecdsa":
59,
"./networks":
66,
"buffer":
7,
"ecurve":
49,
"typeforce":
53}],
62:[function(require,module,exports){
15764 (function (Buffer){
15765 var assert = require('assert')
15766 var typeForce = require('typeforce')
15768 var BigInteger = require('bigi')
15770 function ECSignature (r, s) {
15771 typeForce('BigInteger', r)
15772 typeForce('BigInteger', s)
15778 ECSignature.parseCompact = function (buffer) {
15779 assert.equal(buffer.length,
65, 'Invalid signature length')
15780 var i = buffer.readUInt8(
0) -
27
15783 assert.equal(i, i &
7, 'Invalid signature parameter')
15784 var compressed = !!(i &
4)
15786 // Recovery param only
15789 var r = BigInteger.fromBuffer(buffer.slice(
1,
33))
15790 var s = BigInteger.fromBuffer(buffer.slice(
33))
15793 compressed: compressed,
15795 signature: new ECSignature(r, s)
15799 ECSignature.fromDER = function (buffer) {
15800 assert.equal(buffer.readUInt8(
0),
0x30, 'Not a DER sequence')
15801 assert.equal(buffer.readUInt8(
1), buffer.length -
2, 'Invalid sequence length')
15802 assert.equal(buffer.readUInt8(
2),
0x02, 'Expected a DER integer')
15804 var rLen = buffer.readUInt8(
3)
15805 assert(rLen
> 0, 'R length is zero')
15807 var offset =
4 + rLen
15808 assert.equal(buffer.readUInt8(offset),
0x02, 'Expected a DER integer (
2)')
15810 var sLen = buffer.readUInt8(offset +
1)
15811 assert(sLen
> 0, 'S length is zero')
15813 var rB = buffer.slice(
4, offset)
15814 var sB = buffer.slice(offset +
2)
15817 if (rLen
> 1 && rB.readUInt8(
0) ===
0x00) {
15818 assert(rB.readUInt8(
1) &
0x80, 'R value excessively padded')
15821 if (sLen
> 1 && sB.readUInt8(
0) ===
0x00) {
15822 assert(sB.readUInt8(
1) &
0x80, 'S value excessively padded')
15825 assert.equal(offset, buffer.length, 'Invalid DER encoding')
15826 var r = BigInteger.fromDERInteger(rB)
15827 var s = BigInteger.fromDERInteger(sB)
15829 assert(r.signum()
>=
0, 'R value is negative')
15830 assert(s.signum()
>=
0, 'S value is negative')
15832 return new ECSignature(r, s)
15835 // BIP62:
1 byte hashType flag (only
0x01,
0x02,
0x03,
0x81,
0x82 and
0x83 are allowed)
15836 ECSignature.parseScriptSignature = function (buffer) {
15837 var hashType = buffer.readUInt8(buffer.length -
1)
15838 var hashTypeMod = hashType & ~
0x80
15840 assert(hashTypeMod
> 0x00 && hashTypeMod <
0x04, 'Invalid hashType ' + hashType)
15843 signature: ECSignature.fromDER(buffer.slice(
0, -
1)),
15848 ECSignature.prototype.toCompact = function (i, compressed) {
15855 var buffer = new Buffer(
65)
15856 buffer.writeUInt8(i,
0)
15858 this.r.toBuffer(
32).copy(buffer,
1)
15859 this.s.toBuffer(
32).copy(buffer,
33)
15864 ECSignature.prototype.toDER = function () {
15865 var rBa = this.r.toDERInteger()
15866 var sBa = this.s.toDERInteger()
15871 sequence.push(
0x02, rBa.length)
15872 sequence = sequence.concat(rBa)
15875 sequence.push(
0x02, sBa.length)
15876 sequence = sequence.concat(sBa)
15879 sequence.unshift(
0x30, sequence.length)
15881 return new Buffer(sequence)
15884 ECSignature.prototype.toScriptSignature = function (hashType) {
15885 var hashTypeMod = hashType & ~
0x80
15886 assert(hashTypeMod
> 0x00 && hashTypeMod <
0x04, 'Invalid hashType ' + hashType)
15888 var hashTypeBuffer = new Buffer(
1)
15889 hashTypeBuffer.writeUInt8(hashType,
0)
15891 return Buffer.concat([this.toDER(), hashTypeBuffer])
15894 module.exports = ECSignature
15896 }).call(this,require(
"buffer").Buffer)
15897 },{
"assert":
5,
"bigi":
3,
"buffer":
7,
"typeforce":
53}],
63:[function(require,module,exports){
15898 (function (Buffer){
15899 var assert = require('assert')
15900 var base58check = require('bs58check')
15901 var bcrypto = require('./crypto')
15902 var createHmac = require('create-hmac')
15903 var typeForce = require('typeforce')
15904 var networks = require('./networks')
15906 var BigInteger = require('bigi')
15907 var ECKey = require('./eckey')
15908 var ECPubKey = require('./ecpubkey')
15910 var ecurve = require('ecurve')
15911 var curve = ecurve.getCurveByName('secp256k1')
15913 function findBIP32NetworkByVersion (version) {
15914 for (var name in networks) {
15915 var network = networks[name]
15917 if (version === network.bip32.private || version === network.bip32.public) {
15922 assert(false, 'Could not find network for ' + version.toString(
16))
15925 function HDNode (K, chainCode, network) {
15926 network = network || networks.bitcoin
15928 typeForce('Buffer', chainCode)
15930 assert.equal(chainCode.length,
32, 'Expected chainCode length of
32, got ' + chainCode.length)
15931 assert(network.bip32, 'Unknown BIP32 constants for network')
15933 this.chainCode = chainCode
15936 this.parentFingerprint =
0x00000000
15937 this.network = network
15939 if (K instanceof BigInteger) {
15940 this.privKey = new ECKey(K, true)
15941 this.pubKey = this.privKey.pub
15942 } else if (K instanceof ECKey) {
15943 assert(K.pub.compressed, 'ECKey must be compressed')
15945 this.pubKey = K.pub
15946 } else if (K instanceof ECPubKey) {
15947 assert(K.compressed, 'ECPubKey must be compressed')
15950 this.pubKey = new ECPubKey(K, true)
15954 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
15955 HDNode.HIGHEST_BIT =
0x80000000
15958 HDNode.fromSeedBuffer = function (seed, network) {
15959 typeForce('Buffer', seed)
15961 assert(seed.length
>=
16, 'Seed should be at least
128 bits')
15962 assert(seed.length <=
64, 'Seed should be at most
512 bits')
15964 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
15965 var IL = I.slice(
0,
32)
15966 var IR = I.slice(
32)
15968 // In case IL is
0 or
>= n, the master key is invalid
15969 // This is handled by `new ECKey` in the HDNode constructor
15970 var pIL = BigInteger.fromBuffer(IL)
15972 return new HDNode(pIL, IR, network)
15975 HDNode.fromSeedHex = function (hex, network) {
15976 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
15979 HDNode.fromBase58 = function (string, network) {
15980 return HDNode.fromBuffer(base58check.decode(string), network, true)
15983 // FIXME: remove in
2.x.y
15984 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
15985 if (!__ignoreDeprecation) {
15986 console.warn('HDNode.fromBuffer() is deprecated for removal in
2.x.y, use fromBase58 instead')
15989 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
15991 //
4 byte: version bytes
15992 var version = buffer.readUInt32BE(
0)
15995 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
15999 network = findBIP32NetworkByVersion(version)
16002 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ...
16003 var depth = buffer.readUInt8(
4)
16005 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
16006 var parentFingerprint = buffer.readUInt32BE(
5)
16008 assert.strictEqual(parentFingerprint,
0x00000000, 'Invalid parent fingerprint')
16011 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16012 // This is encoded in MSB order. (
0x00000000 if master key)
16013 var index = buffer.readUInt32BE(
9)
16014 assert(depth
> 0 || index ===
0, 'Invalid index')
16016 //
32 bytes: the chain code
16017 var chainCode = buffer.slice(
13,
45)
16020 //
33 bytes: private key data (
0x00 + k)
16021 if (version === network.bip32.private) {
16022 assert.strictEqual(buffer.readUInt8(
45),
0x00, 'Invalid private key')
16023 data = buffer.slice(
46,
78)
16024 var d = BigInteger.fromBuffer(data)
16025 hd = new HDNode(d, chainCode, network)
16027 //
33 bytes: public key data (
0x02 + X or
0x03 + X)
16029 data = buffer.slice(
45,
78)
16030 var Q = ecurve.Point.decodeFrom(curve, data)
16031 assert.equal(Q.compressed, true, 'Invalid public key')
16033 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16034 // If not, the extended public key is invalid.
16037 hd = new HDNode(Q, chainCode, network)
16042 hd.parentFingerprint = parentFingerprint
16047 // FIXME: remove in
2.x.y
16048 HDNode.fromHex = function (hex, network) {
16049 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
16052 HDNode.prototype.getIdentifier = function () {
16053 return bcrypto.hash160(this.pubKey.toBuffer())
16056 HDNode.prototype.getFingerprint = function () {
16057 return this.getIdentifier().slice(
0,
4)
16060 HDNode.prototype.getAddress = function () {
16061 return this.pubKey.getAddress(this.network)
16064 HDNode.prototype.neutered = function () {
16065 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
16066 neutered.depth = this.depth
16067 neutered.index = this.index
16068 neutered.parentFingerprint = this.parentFingerprint
16073 HDNode.prototype.toBase58 = function (isPrivate) {
16074 return base58check.encode(this.toBuffer(isPrivate, true))
16077 // FIXME: remove in
2.x.y
16078 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
16079 if (isPrivate === undefined) {
16080 isPrivate = !!this.privKey
16082 // FIXME: remove in
2.x.y
16084 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
16087 if (!__ignoreDeprecation) {
16088 console.warn('HDNode.toBuffer() is deprecated for removal in
2.x.y, use toBase58 instead')
16092 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
16093 var buffer = new Buffer(HDNode.LENGTH)
16095 //
4 bytes: version bytes
16096 buffer.writeUInt32BE(version,
0)
16099 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ....
16100 buffer.writeUInt8(this.depth,
4)
16102 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
16103 buffer.writeUInt32BE(this.parentFingerprint,
5)
16105 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16106 // This is encoded in Big endian. (
0x00000000 if master key)
16107 buffer.writeUInt32BE(this.index,
9)
16109 //
32 bytes: the chain code
16110 this.chainCode.copy(buffer,
13)
16112 //
33 bytes: the public key or private key data
16114 // FIXME: remove in
2.x.y
16115 assert(this.privKey, 'Missing private key')
16117 //
0x00 + k for private keys
16118 buffer.writeUInt8(
0,
45)
16119 this.privKey.d.toBuffer(
32).copy(buffer,
46)
16121 // X9.62 encoding for public keys
16122 this.pubKey.toBuffer().copy(buffer,
45)
16128 // FIXME: remove in
2.x.y
16129 HDNode.prototype.toHex = function (isPrivate) {
16130 return this.toBuffer(isPrivate).toString('hex')
16133 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#child-key-derivation-ckd-functions
16134 HDNode.prototype.derive = function (index) {
16135 var isHardened = index
>= HDNode.HIGHEST_BIT
16136 var indexBuffer = new Buffer(
4)
16137 indexBuffer.writeUInt32BE(index,
0)
16143 assert(this.privKey, 'Could not derive hardened child key')
16145 // data =
0x00 || ser256(kpar) || ser32(index)
16146 data = Buffer.concat([
16147 this.privKey.d.toBuffer(
33),
16153 // data = serP(point(kpar)) || ser32(index)
16154 // = serP(Kpar) || ser32(index)
16155 data = Buffer.concat([
16156 this.pubKey.toBuffer(),
16161 var I = createHmac('sha512', this.chainCode).update(data).digest()
16162 var IL = I.slice(
0,
32)
16163 var IR = I.slice(
32)
16165 var pIL = BigInteger.fromBuffer(IL)
16167 // In case parse256(IL)
>= n, proceed with the next value for i
16168 if (pIL.compareTo(curve.n)
>=
0) {
16169 return this.derive(index +
1)
16172 // Private parent key -
> private child key
16174 if (this.privKey) {
16175 // ki = parse256(IL) + kpar (mod n)
16176 var ki = pIL.add(this.privKey.d).mod(curve.n)
16178 // In case ki ==
0, proceed with the next value for i
16179 if (ki.signum() ===
0) {
16180 return this.derive(index +
1)
16183 hd = new HDNode(ki, IR, this.network)
16185 // Public parent key -
> public child key
16187 // Ki = point(parse256(IL)) + Kpar
16189 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
16191 // In case Ki is the point at infinity, proceed with the next value for i
16192 if (curve.isInfinity(Ki)) {
16193 return this.derive(index +
1)
16196 hd = new HDNode(Ki, IR, this.network)
16199 hd.depth = this.depth +
1
16201 hd.parentFingerprint = this.getFingerprint().readUInt32BE(
0)
16206 HDNode.prototype.deriveHardened = function (index) {
16207 // Only derives hardened private keys by default
16208 return this.derive(index + HDNode.HIGHEST_BIT)
16211 HDNode.prototype.toString = HDNode.prototype.toBase58
16213 module.exports = HDNode
16215 }).call(this,require("buffer").Buffer)
16216 },{"./crypto":
58,"./eckey":
60,"./ecpubkey":
61,"./networks":
66,"assert":
5,"bigi":
3,"bs58check":
31,"buffer":
7,"create-hmac":
45,"ecurve":
49,"typeforce":
53}],
64:[function(require,module,exports){
16218 Address: require('./address'),
16219 base58check: require('./base58check'),
16220 Block: require('./block'),
16221 bufferutils: require('./bufferutils'),
16222 crypto: require('./crypto'),
16223 ecdsa: require('./ecdsa'),
16224 ECKey: require('./eckey'),
16225 ECPubKey: require('./ecpubkey'),
16226 ECSignature: require('./ecsignature'),
16227 Message: require('./message'),
16228 opcodes: require('./opcodes'),
16229 HDNode: require('./hdnode'),
16230 Script: require('./script'),
16231 scripts: require('./scripts'),
16232 Transaction: require('./transaction'),
16233 TransactionBuilder: require('./transaction_builder'),
16234 networks: require('./networks'),
16235 Wallet: require('./wallet')
16238 },{"./address":
54,"./base58check":
55,"./block":
56,"./bufferutils":
57,"./crypto":
58,"./ecdsa":
59,"./eckey":
60,"./ecpubkey":
61,"./ecsignature":
62,"./hdnode":
63,"./message":
65,"./networks":
66,"./opcodes":
67,"./script":
68,"./scripts":
69,"./transaction":
70,"./transaction_builder":
71,"./wallet":
72}],
65:[function(require,module,exports){
16239 (function (Buffer){
16240 var bufferutils = require('./bufferutils')
16241 var crypto = require('./crypto')
16242 var ecdsa = require('./ecdsa')
16243 var networks = require('./networks')
16245 var BigInteger = require('bigi')
16246 var ECPubKey = require('./ecpubkey')
16247 var ECSignature = require('./ecsignature')
16249 var ecurve = require('ecurve')
16250 var ecparams = ecurve.getCurveByName('secp256k1')
16252 function magicHash (message, network) {
16253 var magicPrefix = new Buffer(network.magicPrefix)
16254 var messageBuffer = new Buffer(message)
16255 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
16257 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
16258 return crypto.hash256(buffer)
16261 function sign (privKey, message, network) {
16262 network = network || networks.bitcoin
16264 var hash = magicHash(message, network)
16265 var signature = privKey.sign(hash)
16266 var e = BigInteger.fromBuffer(hash)
16267 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
16269 return signature.toCompact(i, privKey.pub.compressed)
16272 // TODO: network could be implied from address
16273 function verify (address, signature, message, network) {
16274 if (!Buffer.isBuffer(signature)) {
16275 signature = new Buffer(signature, 'base64')
16278 network = network || networks.bitcoin
16280 var hash = magicHash(message, network)
16281 var parsed = ECSignature.parseCompact(signature)
16282 var e = BigInteger.fromBuffer(hash)
16283 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
16285 var pubKey = new ECPubKey(Q, parsed.compressed)
16286 return pubKey.getAddress(network).toString() === address.toString()
16290 magicHash: magicHash,
16295 }).call(this,require("buffer").Buffer)
16296 },{"./bufferutils":
57,"./crypto":
58,"./ecdsa":
59,"./ecpubkey":
61,"./ecsignature":
62,"./networks":
66,"bigi":
3,"buffer":
7,"ecurve":
49}],
66:[function(require,module,exports){
16297 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16298 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=
409731
16302 magicPrefix: '\x18Bitcoin Signed Message:\n',
16304 public:
0x0488b21e,
16305 private:
0x0488ade4
16310 dustThreshold:
546, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/core.h#L151-L162
16311 feePerKb:
10000, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/main.cpp#L53
16312 estimateFee: estimateFee('bitcoin')
16315 magicPrefix: '\x18Bitcoin Signed Message:\n',
16317 public:
0x043587cf,
16318 private:
0x04358394
16323 dustThreshold:
546,
16325 estimateFee: estimateFee('testnet')
16328 magicPrefix: '\x19Litecoin Signed Message:\n',
16330 public:
0x019da462,
16331 private:
0x019d9cfe
16336 dustThreshold:
0, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L360-L365
16337 dustSoftThreshold:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.h#L53
16338 feePerKb:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L56
16339 estimateFee: estimateFee('litecoin')
16342 magicPrefix: '\x19Dogecoin Signed Message:\n',
16344 public:
0x02facafd,
16345 private:
0x02fac398
16350 dustThreshold:
0, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/core.h#L155-L160
16351 dustSoftThreshold:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.h#L62
16352 feePerKb:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.cpp#L58
16353 estimateFee: estimateFee('dogecoin')
16356 magicPrefix: '\x18Viacoin Signed Message:\n',
16358 public:
0x0488b21e,
16359 private:
0x0488ade4
16364 dustThreshold:
560,
16365 dustSoftThreshold:
100000,
16366 feePerKb:
100000, //
16367 estimateFee: estimateFee('viacoin')
16370 magicPrefix: '\x18Viacoin Signed Message:\n',
16372 public:
0x043587cf,
16373 private:
0x04358394
16378 dustThreshold:
560,
16379 dustSoftThreshold:
100000,
16381 estimateFee: estimateFee('viacointestnet')
16384 magicPrefix: '\x19Gamerscoin Signed Message:\n',
16386 public:
0x019da462,
16387 private:
0x019d9cfe
16392 dustThreshold:
0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
16393 dustSoftThreshold:
100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
16394 feePerKb:
100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
16395 estimateFee: estimateFee('gamerscoin')
16398 magicPrefix: '\x19Jumbucks Signed Message:\n',
16400 public:
0x037a689a,
16401 private:
0x037a6460
16407 dustSoftThreshold:
10000,
16409 estimateFee: estimateFee('jumbucks')
16412 magicPrefix: '\x18Zetacoin Signed Message:\n',
16414 public:
0x0488b21e,
16415 private:
0x0488ade4
16420 dustThreshold:
546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
16421 feePerKb:
10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
16422 estimateFee: estimateFee('zetacoin')
16426 function estimateFee (type) {
16427 return function (tx) {
16428 var network = networks[type]
16429 var baseFee = network.feePerKb
16430 var byteSize = tx.toBuffer().length
16432 var fee = baseFee * Math.ceil(byteSize /
1000)
16433 if (network.dustSoftThreshold === undefined) return fee
16435 tx.outs.forEach(function (e) {
16436 if (e.value < network.dustSoftThreshold) {
16445 module.exports = networks
16447 },{}],
67:[function(require,module,exports){
16488 OP_TOALTSTACK:
107,
16489 OP_FROMALTSTACK:
108,
16521 OP_EQUALVERIFY:
136,
16546 OP_NUMEQUALVERIFY:
157,
16547 OP_NUMNOTEQUAL:
158,
16549 OP_GREATERTHAN:
160,
16550 OP_LESSTHANOREQUAL:
161,
16551 OP_GREATERTHANOREQUAL:
162,
16563 OP_CODESEPARATOR:
171,
16565 OP_CHECKSIGVERIFY:
173,
16566 OP_CHECKMULTISIG:
174,
16567 OP_CHECKMULTISIGVERIFY:
175,
16581 // template matching params
16582 OP_PUBKEYHASH:
253,
16584 OP_INVALIDOPCODE:
255
16587 },{}],
68:[function(require,module,exports){
16588 (function (Buffer){
16589 var assert = require('assert')
16590 var bufferutils = require('./bufferutils')
16591 var crypto = require('./crypto')
16592 var typeForce = require('typeforce')
16593 var opcodes = require('./opcodes')
16595 function Script (buffer, chunks) {
16596 typeForce('Buffer', buffer)
16597 typeForce('Array', chunks)
16599 this.buffer = buffer
16600 this.chunks = chunks
16603 Script.fromASM = function (asm) {
16604 var strChunks = asm.split(' ')
16605 var chunks = strChunks.map(function (strChunk) {
16607 if (strChunk in opcodes) {
16608 return opcodes[strChunk]
16612 return new Buffer(strChunk, 'hex')
16616 return Script.fromChunks(chunks)
16619 Script.fromBuffer = function (buffer) {
16623 while (i < buffer.length) {
16624 var opcode = buffer.readUInt8(i)
16627 if ((opcode
> opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
16628 var d = bufferutils.readPushDataInt(buffer, i)
16630 // did reading a pushDataInt fail? return non-chunked script
16631 if (d === null) return new Script(buffer, [])
16634 // attempt to read too much data?
16635 if (i + d.number
> buffer.length) return new Script(buffer, [])
16637 var data = buffer.slice(i, i + d.number)
16644 chunks.push(opcode)
16650 return new Script(buffer, chunks)
16653 Script.fromChunks = function (chunks) {
16654 typeForce('Array', chunks)
16656 var bufferSize = chunks.reduce(function (accum, chunk) {
16658 if (Buffer.isBuffer(chunk)) {
16659 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
16666 var buffer = new Buffer(bufferSize)
16669 chunks.forEach(function (chunk) {
16671 if (Buffer.isBuffer(chunk)) {
16672 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
16674 chunk.copy(buffer, offset)
16675 offset += chunk.length
16679 buffer.writeUInt8(chunk, offset)
16684 assert.equal(offset, buffer.length, 'Could not decode chunks')
16685 return new Script(buffer, chunks)
16688 Script.fromHex = function (hex) {
16689 return Script.fromBuffer(new Buffer(hex, 'hex'))
16692 Script.EMPTY = Script.fromChunks([])
16694 Script.prototype.getHash = function () {
16695 return crypto.hash160(this.buffer)
16698 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
16699 Script.prototype.without = function (needle) {
16700 return Script.fromChunks(this.chunks.filter(function (op) {
16701 return op !== needle
16705 var reverseOps = []
16706 for (var op in opcodes) {
16707 var code = opcodes[op]
16708 reverseOps[code] = op
16711 Script.prototype.toASM = function () {
16712 return this.chunks.map(function (chunk) {
16714 if (Buffer.isBuffer(chunk)) {
16715 return chunk.toString('hex')
16719 return reverseOps[chunk]
16724 Script.prototype.toBuffer = function () {
16728 Script.prototype.toHex = function () {
16729 return this.toBuffer().toString('hex')
16732 module.exports = Script
16734 }).call(this,require("buffer").Buffer)
16735 },{"./bufferutils":
57,"./crypto":
58,"./opcodes":
67,"assert":
5,"buffer":
7,"typeforce":
53}],
69:[function(require,module,exports){
16736 (function (Buffer){
16737 var assert = require('assert')
16738 var ops = require('./opcodes')
16739 var typeForce = require('typeforce')
16741 var ecurve = require('ecurve')
16742 var curve = ecurve.getCurveByName('secp256k1')
16744 var ECSignature = require('./ecsignature')
16745 var Script = require('./script')
16747 function isCanonicalPubKey (buffer) {
16748 if (!Buffer.isBuffer(buffer)) return false
16751 ecurve.Point.decodeFrom(curve, buffer)
16753 if (!(e.message.match(/Invalid sequence (length|tag)/)))
16762 function isCanonicalSignature (buffer) {
16763 if (!Buffer.isBuffer(buffer)) return false
16766 ECSignature.parseScriptSignature(buffer)
16768 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) {
16778 function isPubKeyHashInput (script) {
16779 return script.chunks.length ===
2 &&
16780 isCanonicalSignature(script.chunks[
0]) &&
16781 isCanonicalPubKey(script.chunks[
1])
16784 function isPubKeyHashOutput (script) {
16785 return script.chunks.length ===
5 &&
16786 script.chunks[
0] === ops.OP_DUP &&
16787 script.chunks[
1] === ops.OP_HASH160 &&
16788 Buffer.isBuffer(script.chunks[
2]) &&
16789 script.chunks[
2].length ===
20 &&
16790 script.chunks[
3] === ops.OP_EQUALVERIFY &&
16791 script.chunks[
4] === ops.OP_CHECKSIG
16794 function isPubKeyInput (script) {
16795 return script.chunks.length ===
1 &&
16796 isCanonicalSignature(script.chunks[
0])
16799 function isPubKeyOutput (script) {
16800 return script.chunks.length ===
2 &&
16801 isCanonicalPubKey(script.chunks[
0]) &&
16802 script.chunks[
1] === ops.OP_CHECKSIG
16805 function isScriptHashInput (script, allowIncomplete) {
16806 if (script.chunks.length <
2) return false
16808 var lastChunk = script.chunks[script.chunks.length -
1]
16809 if (!Buffer.isBuffer(lastChunk)) return false
16811 var scriptSig = Script.fromChunks(script.chunks.slice(
0, -
1))
16812 var redeemScript = Script.fromBuffer(lastChunk)
16814 // is redeemScript a valid script?
16815 if (redeemScript.chunks.length ===
0) return false
16817 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
16820 function isScriptHashOutput (script) {
16821 return script.chunks.length ===
3 &&
16822 script.chunks[
0] === ops.OP_HASH160 &&
16823 Buffer.isBuffer(script.chunks[
1]) &&
16824 script.chunks[
1].length ===
20 &&
16825 script.chunks[
2] === ops.OP_EQUAL
16828 // allowIncomplete is to account for combining signatures
16829 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
16830 function isMultisigInput (script, allowIncomplete) {
16831 if (script.chunks.length <
2) return false
16832 if (script.chunks[
0] !== ops.OP_0) return false
16834 if (allowIncomplete) {
16835 return script.chunks.slice(
1).every(function (chunk) {
16836 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
16840 return script.chunks.slice(
1).every(isCanonicalSignature)
16843 function isMultisigOutput (script) {
16844 if (script.chunks.length <
4) return false
16845 if (script.chunks[script.chunks.length -
1] !== ops.OP_CHECKMULTISIG) return false
16847 var mOp = script.chunks[
0]
16848 if (mOp === ops.OP_0) return false
16849 if (mOp < ops.OP_1) return false
16850 if (mOp
> ops.OP_16) return false
16852 var nOp = script.chunks[script.chunks.length -
2]
16853 if (nOp === ops.OP_0) return false
16854 if (nOp < ops.OP_1) return false
16855 if (nOp
> ops.OP_16) return false
16857 var m = mOp - (ops.OP_1 -
1)
16858 var n = nOp - (ops.OP_1 -
1)
16859 if (n < m) return false
16861 var pubKeys = script.chunks.slice(
1, -
2)
16862 if (n < pubKeys.length) return false
16864 return pubKeys.every(isCanonicalPubKey)
16867 function isNullDataOutput (script) {
16868 return script.chunks[
0] === ops.OP_RETURN
16871 function classifyOutput (script) {
16872 typeForce('Script', script)
16874 if (isPubKeyHashOutput(script)) {
16875 return 'pubkeyhash'
16876 } else if (isScriptHashOutput(script)) {
16877 return 'scripthash'
16878 } else if (isMultisigOutput(script)) {
16880 } else if (isPubKeyOutput(script)) {
16882 } else if (isNullDataOutput(script)) {
16886 return 'nonstandard'
16889 function classifyInput (script, allowIncomplete) {
16890 typeForce('Script', script)
16892 if (isPubKeyHashInput(script)) {
16893 return 'pubkeyhash'
16894 } else if (isMultisigInput(script, allowIncomplete)) {
16896 } else if (isScriptHashInput(script, allowIncomplete)) {
16897 return 'scripthash'
16898 } else if (isPubKeyInput(script)) {
16902 return 'nonstandard'
16905 // Standard Script Templates
16906 // {pubKey} OP_CHECKSIG
16907 function pubKeyOutput (pubKey) {
16908 return Script.fromChunks([
16914 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
16915 function pubKeyHashOutput (hash) {
16916 typeForce('Buffer', hash)
16918 return Script.fromChunks([
16922 ops.OP_EQUALVERIFY,
16927 // OP_HASH160 {scriptHash} OP_EQUAL
16928 function scriptHashOutput (hash) {
16929 typeForce('Buffer', hash)
16931 return Script.fromChunks([
16938 // m [pubKeys ...] n OP_CHECKMULTISIG
16939 function multisigOutput (m, pubKeys) {
16940 typeForce(['ECPubKey'], pubKeys)
16942 assert(pubKeys.length
>= m, 'Not enough pubKeys provided')
16944 var pubKeyBuffers = pubKeys.map(function (pubKey) {
16945 return pubKey.toBuffer()
16947 var n = pubKeys.length
16949 return Script.fromChunks([].concat(
16950 (ops.OP_1 -
1) + m,
16952 (ops.OP_1 -
1) + n,
16953 ops.OP_CHECKMULTISIG
16958 function pubKeyInput (signature) {
16959 typeForce('Buffer', signature)
16961 return Script.fromChunks([signature])
16964 // {signature} {pubKey}
16965 function pubKeyHashInput (signature, pubKey) {
16966 typeForce('Buffer', signature)
16968 return Script.fromChunks([signature, pubKey.toBuffer()])
16971 //
<scriptSig> {serialized scriptPubKey script}
16972 function scriptHashInput (scriptSig, scriptPubKey) {
16973 return Script.fromChunks([].concat(
16975 scriptPubKey.toBuffer()
16979 // OP_0 [signatures ...]
16980 function multisigInput (signatures, scriptPubKey) {
16981 if (scriptPubKey) {
16982 assert(isMultisigOutput(scriptPubKey))
16984 var mOp = scriptPubKey.chunks[
0]
16985 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length -
2]
16986 var m = mOp - (ops.OP_1 -
1)
16987 var n = nOp - (ops.OP_1 -
1)
16989 assert(signatures.length
>= m, 'Not enough signatures provided')
16990 assert(signatures.length <= n, 'Too many signatures provided')
16993 return Script.fromChunks([].concat(ops.OP_0, signatures))
16996 function nullDataOutput (data) {
16997 return Script.fromChunks([ops.OP_RETURN, data])
17001 isCanonicalPubKey: isCanonicalPubKey,
17002 isCanonicalSignature: isCanonicalSignature,
17003 isPubKeyHashInput: isPubKeyHashInput,
17004 isPubKeyHashOutput: isPubKeyHashOutput,
17005 isPubKeyInput: isPubKeyInput,
17006 isPubKeyOutput: isPubKeyOutput,
17007 isScriptHashInput: isScriptHashInput,
17008 isScriptHashOutput: isScriptHashOutput,
17009 isMultisigInput: isMultisigInput,
17010 isMultisigOutput: isMultisigOutput,
17011 isNullDataOutput: isNullDataOutput,
17012 classifyOutput: classifyOutput,
17013 classifyInput: classifyInput,
17014 pubKeyOutput: pubKeyOutput,
17015 pubKeyHashOutput: pubKeyHashOutput,
17016 scriptHashOutput: scriptHashOutput,
17017 multisigOutput: multisigOutput,
17018 pubKeyInput: pubKeyInput,
17019 pubKeyHashInput: pubKeyHashInput,
17020 scriptHashInput: scriptHashInput,
17021 multisigInput: multisigInput,
17022 dataOutput: function (data) {
17023 console.warn('dataOutput is deprecated, use nullDataOutput by
2.0.0')
17024 return nullDataOutput(data)
17026 nullDataOutput: nullDataOutput
17029 }).call(this,require("buffer").Buffer)
17030 },{"./ecsignature":
62,"./opcodes":
67,"./script":
68,"assert":
5,"buffer":
7,"ecurve":
49,"typeforce":
53}],
70:[function(require,module,exports){
17031 (function (Buffer){
17032 var assert = require('assert')
17033 var bufferutils = require('./bufferutils')
17034 var crypto = require('./crypto')
17035 var typeForce = require('typeforce')
17036 var opcodes = require('./opcodes')
17037 var scripts = require('./scripts')
17039 var Address = require('./address')
17040 var ECSignature = require('./ecsignature')
17041 var Script = require('./script')
17043 function Transaction () {
17050 Transaction.DEFAULT_SEQUENCE =
0xffffffff
17051 Transaction.SIGHASH_ALL =
0x01
17052 Transaction.SIGHASH_NONE =
0x02
17053 Transaction.SIGHASH_SINGLE =
0x03
17054 Transaction.SIGHASH_ANYONECANPAY =
0x80
17056 Transaction.fromBuffer = function (buffer, __disableAssert) {
17058 function readSlice (n) {
17060 return buffer.slice(offset - n, offset)
17063 function readUInt32 () {
17064 var i = buffer.readUInt32LE(offset)
17069 function readUInt64 () {
17070 var i = bufferutils.readUInt64LE(buffer, offset)
17075 function readVarInt () {
17076 var vi = bufferutils.readVarInt(buffer, offset)
17081 function readScript () {
17082 return Script.fromBuffer(readSlice(readVarInt()))
17085 function readGenerationScript () {
17086 return new Script(readSlice(readVarInt()), [])
17089 var tx = new Transaction()
17090 tx.version = readUInt32()
17092 var vinLen = readVarInt()
17093 for (var i =
0; i < vinLen; ++i) {
17094 var hash = readSlice(
32)
17096 if (Transaction.isCoinbaseHash(hash)) {
17099 index: readUInt32(),
17100 script: readGenerationScript(),
17101 sequence: readUInt32()
17106 index: readUInt32(),
17107 script: readScript(),
17108 sequence: readUInt32()
17113 var voutLen = readVarInt()
17114 for (i =
0; i < voutLen; ++i) {
17116 value: readUInt64(),
17117 script: readScript()
17121 tx.locktime = readUInt32()
17123 if (!__disableAssert) {
17124 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
17130 Transaction.fromHex = function (hex) {
17131 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
17134 Transaction.isCoinbaseHash = function (buffer) {
17135 return Array.prototype.every.call(buffer, function (x) {
17141 * Create a new txIn.
17143 * Can be called with any of:
17145 * - A transaction and an index
17146 * - A transaction hash and an index
17148 * Note that this method does not sign the created input.
17150 Transaction.prototype.addInput = function (hash, index, sequence, script) {
17151 if (sequence === undefined || sequence === null) {
17152 sequence = Transaction.DEFAULT_SEQUENCE
17155 script = script || Script.EMPTY
17157 if (typeof hash === 'string') {
17158 // TxId hex is big-endian, we need little-endian
17159 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
17160 } else if (hash instanceof Transaction) {
17161 hash = hash.getHash()
17164 typeForce('Buffer', hash)
17165 typeForce('Number', index)
17166 typeForce('Number', sequence)
17167 typeForce('Script', script)
17169 assert.equal(hash.length,
32, 'Expected hash length of
32, got ' + hash.length)
17171 // Add the input and return the input's index
17172 return (this.ins.push({
17181 * Create a new txOut.
17183 * Can be called with:
17185 * - A base58 address string and a value
17186 * - An Address object and a value
17187 * - A scriptPubKey Script and a value
17189 Transaction.prototype.addOutput = function (scriptPubKey, value) {
17190 // Attempt to get a valid address if it's a base58 address string
17191 if (typeof scriptPubKey === 'string') {
17192 scriptPubKey = Address.fromBase58Check(scriptPubKey)
17195 // Attempt to get a valid script if it's an Address object
17196 if (scriptPubKey instanceof Address) {
17197 scriptPubKey = scriptPubKey.toOutputScript()
17200 typeForce('Script', scriptPubKey)
17201 typeForce('Number', value)
17203 // Add the output and return the output's index
17204 return (this.outs.push({
17205 script: scriptPubKey,
17210 Transaction.prototype.clone = function () {
17211 var newTx = new Transaction()
17212 newTx.version = this.version
17213 newTx.locktime = this.locktime
17215 newTx.ins = this.ins.map(function (txIn) {
17219 script: txIn.script,
17220 sequence: txIn.sequence
17224 newTx.outs = this.outs.map(function (txOut) {
17226 script: txOut.script,
17235 * Hash transaction for signing a specific input.
17237 * Bitcoin uses a different hash for each signed transaction input. This
17238 * method copies the transaction, makes the necessary changes based on the
17239 * hashType, serializes and finally hashes the result. This hash can then be
17240 * used to sign the transaction input in question.
17242 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
17243 // FIXME: remove in
2.x.y
17244 if (arguments[
0] instanceof Script) {
17245 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
17247 // swap the arguments (must be stored in tmp, arguments is special)
17248 var tmp = arguments[
0]
17249 inIndex = arguments[
1]
17250 prevOutScript = tmp
17253 typeForce('Number', inIndex)
17254 typeForce('Script', prevOutScript)
17255 typeForce('Number', hashType)
17257 assert(inIndex
>=
0, 'Invalid vin index')
17258 assert(inIndex < this.ins.length, 'Invalid vin index')
17260 var txTmp = this.clone()
17261 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
17263 // Blank out other inputs' signatures
17264 txTmp.ins.forEach(function (txIn) {
17265 txIn.script = Script.EMPTY
17267 txTmp.ins[inIndex].script = hashScript
17269 var hashTypeModifier = hashType &
0x1f
17271 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
17272 assert(false, 'SIGHASH_NONE not yet supported')
17273 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
17274 assert(false, 'SIGHASH_SINGLE not yet supported')
17277 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
17278 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
17281 var hashTypeBuffer = new Buffer(
4)
17282 hashTypeBuffer.writeInt32LE(hashType,
0)
17284 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
17285 return crypto.hash256(buffer)
17288 Transaction.prototype.getHash = function () {
17289 return crypto.hash256(this.toBuffer())
17292 Transaction.prototype.getId = function () {
17293 // TxHash is little-endian, we need big-endian
17294 return bufferutils.reverse(this.getHash()).toString('hex')
17297 Transaction.prototype.toBuffer = function () {
17298 function scriptSize (script) {
17299 var length = script.buffer.length
17301 return bufferutils.varIntSize(length) + length
17304 var buffer = new Buffer(
17306 bufferutils.varIntSize(this.ins.length) +
17307 bufferutils.varIntSize(this.outs.length) +
17308 this.ins.reduce(function (sum, input) { return sum +
40 + scriptSize(input.script) },
0) +
17309 this.outs.reduce(function (sum, output) { return sum +
8 + scriptSize(output.script) },
0)
17313 function writeSlice (slice) {
17314 slice.copy(buffer, offset)
17315 offset += slice.length
17318 function writeUInt32 (i) {
17319 buffer.writeUInt32LE(i, offset)
17323 function writeUInt64 (i) {
17324 bufferutils.writeUInt64LE(buffer, i, offset)
17328 function writeVarInt (i) {
17329 var n = bufferutils.writeVarInt(buffer, i, offset)
17333 writeUInt32(this.version)
17334 writeVarInt(this.ins.length)
17336 this.ins.forEach(function (txIn) {
17337 writeSlice(txIn.hash)
17338 writeUInt32(txIn.index)
17339 writeVarInt(txIn.script.buffer.length)
17340 writeSlice(txIn.script.buffer)
17341 writeUInt32(txIn.sequence)
17344 writeVarInt(this.outs.length)
17345 this.outs.forEach(function (txOut) {
17346 writeUInt64(txOut.value)
17347 writeVarInt(txOut.script.buffer.length)
17348 writeSlice(txOut.script.buffer)
17351 writeUInt32(this.locktime)
17356 Transaction.prototype.toHex = function () {
17357 return this.toBuffer().toString('hex')
17360 Transaction.prototype.setInputScript = function (index, script) {
17361 typeForce('Number', index)
17362 typeForce('Script', script)
17364 this.ins[index].script = script
17367 // FIXME: remove in
2.x.y
17368 Transaction.prototype.sign = function (index, privKey, hashType) {
17369 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
17371 var prevOutScript = privKey.pub.getAddress().toOutputScript()
17372 var signature = this.signInput(index, prevOutScript, privKey, hashType)
17374 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
17375 this.setInputScript(index, scriptSig)
17378 // FIXME: remove in
2.x.y
17379 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
17380 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
17382 hashType = hashType || Transaction.SIGHASH_ALL
17384 var hash = this.hashForSignature(index, prevOutScript, hashType)
17385 var signature = privKey.sign(hash)
17387 return signature.toScriptSignature(hashType)
17390 // FIXME: remove in
2.x.y
17391 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
17392 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
17394 var parsed = ECSignature.parseScriptSignature(buffer)
17395 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
17397 return pubKey.verify(hash, parsed.signature)
17400 module.exports = Transaction
17402 }).call(this,require("buffer").Buffer)
17403 },{"./address":
54,"./bufferutils":
57,"./crypto":
58,"./ecsignature":
62,"./opcodes":
67,"./script":
68,"./scripts":
69,"assert":
5,"buffer":
7,"typeforce":
53}],
71:[function(require,module,exports){
17404 (function (Buffer){
17405 var assert = require('assert')
17406 var ops = require('./opcodes')
17407 var scripts = require('./scripts')
17409 var ECPubKey = require('./ecpubkey')
17410 var ECSignature = require('./ecsignature')
17411 var Script = require('./script')
17412 var Transaction = require('./transaction')
17414 function extractInput (txIn) {
17416 var scriptSig = txIn.script
17418 var prevOutType = scripts.classifyInput(scriptSig, true)
17421 // Re-classify if scriptHash
17422 if (prevOutType === 'scripthash') {
17423 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-
1)[
0])
17424 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
17426 scriptSig = Script.fromChunks(scriptSig.chunks.slice(
0, -
1))
17427 scriptType = scripts.classifyInput(scriptSig, true)
17429 scriptType = prevOutType
17432 // Extract hashType, pubKeys and signatures
17433 var hashType, parsed, pubKeys, signatures
17435 switch (scriptType) {
17436 case 'pubkeyhash': {
17437 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[
0])
17438 hashType = parsed.hashType
17439 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[
1])]
17440 signatures = [parsed.signature]
17441 prevOutScript = pubKeys[
0].getAddress().toOutputScript()
17447 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[
0])
17448 hashType = parsed.hashType
17449 signatures = [parsed.signature]
17451 if (redeemScript) {
17452 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[
0])]
17459 signatures = scriptSig.chunks.slice(
1).map(function (chunk) {
17460 if (chunk === ops.OP_0) return chunk
17462 var parsed = ECSignature.parseScriptSignature(chunk)
17463 hashType = parsed.hashType
17465 return parsed.signature
17468 if (redeemScript) {
17469 pubKeys = redeemScript.chunks.slice(
1, -
2).map(ECPubKey.fromBuffer)
17477 hashType: hashType,
17478 prevOutScript: prevOutScript,
17479 prevOutType: prevOutType,
17481 redeemScript: redeemScript,
17482 scriptType: scriptType,
17483 signatures: signatures
17487 function TransactionBuilder () {
17488 this.prevTxMap = {}
17489 this.prevOutScripts = {}
17490 this.prevOutTypes = {}
17493 this.tx = new Transaction()
17496 TransactionBuilder.fromTransaction = function (transaction) {
17497 var txb = new TransactionBuilder()
17499 // Copy other transaction fields
17500 txb.tx.version = transaction.version
17501 txb.tx.locktime = transaction.locktime
17503 // Extract/add inputs
17504 transaction.ins.forEach(function (txIn) {
17505 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
17508 // Extract/add outputs
17509 transaction.outs.forEach(function (txOut) {
17510 txb.addOutput(txOut.script, txOut.value)
17513 // Extract/add signatures
17514 txb.inputs = transaction.ins.map(function (txIn) {
17515 // TODO: remove me after testcase added
17516 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
17518 // Ignore empty scripts
17519 if (txIn.script.buffer.length ===
0) return {}
17521 return extractInput(txIn)
17527 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
17531 if (typeof prevTx === 'string') {
17532 prevOutHash = new Buffer(prevTx, 'hex')
17534 // TxId hex is big-endian, we want little-endian hash
17535 Array.prototype.reverse.call(prevOutHash)
17538 } else if (prevTx instanceof Transaction) {
17539 prevOutHash = prevTx.getHash()
17540 prevOutScript = prevTx.outs[index].script
17544 prevOutHash = prevTx
17548 if (prevOutScript) {
17549 var prevOutType = scripts.classifyOutput(prevOutScript)
17551 // if we can, extract pubKey information
17552 switch (prevOutType) {
17554 input.pubKeys = prevOutScript.chunks.slice(
1, -
2).map(ECPubKey.fromBuffer)
17559 input.pubKeys = prevOutScript.chunks.slice(
0,
1).map(ECPubKey.fromBuffer)
17564 if (prevOutType !== 'scripthash') {
17565 input.scriptType = prevOutType
17568 input.prevOutScript = prevOutScript
17569 input.prevOutType = prevOutType
17572 assert(this.inputs.every(function (input2) {
17573 if (input2.hashType === undefined) return true
17575 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
17576 }), 'No, this would invalidate signatures')
17578 var prevOut = prevOutHash.toString('hex') + ':' + index
17579 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
17581 var vin = this.tx.addInput(prevOutHash, index, sequence)
17582 this.inputs[vin] = input
17583 this.prevTxMap[prevOut] = vin
17588 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
17589 assert(this.inputs.every(function (input) {
17590 if (input.hashType === undefined) return true
17592 return (input.hashType &
0x1f) === Transaction.SIGHASH_SINGLE
17593 }), 'No, this would invalidate signatures')
17595 return this.tx.addOutput(scriptPubKey, value)
17598 TransactionBuilder.prototype.build = function () {
17599 return this.__build(false)
17601 TransactionBuilder.prototype.buildIncomplete = function () {
17602 return this.__build(true)
17605 var canSignTypes = {
17606 'pubkeyhash': true,
17611 TransactionBuilder.prototype.__build = function (allowIncomplete) {
17612 if (!allowIncomplete) {
17613 assert(this.tx.ins.length
> 0, 'Transaction has no inputs')
17614 assert(this.tx.outs.length
> 0, 'Transaction has no outputs')
17617 var tx = this.tx.clone()
17619 // Create script signatures from signature meta-data
17620 this.inputs.forEach(function (input, index) {
17621 var scriptType = input.scriptType
17624 if (!allowIncomplete) {
17625 assert(!!scriptType, 'Transaction is not complete')
17626 assert(scriptType in canSignTypes, scriptType + ' not supported')
17627 assert(input.signatures, 'Transaction is missing signatures')
17630 if (input.signatures) {
17631 switch (scriptType) {
17632 case 'pubkeyhash': {
17633 var pkhSignature = input.signatures[
0].toScriptSignature(input.hashType)
17634 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[
0])
17639 // Array.prototype.map is sparse-compatible
17640 var msSignatures = input.signatures.map(function (signature) {
17641 return signature && signature.toScriptSignature(input.hashType)
17644 // fill in blanks with OP_0
17645 if (allowIncomplete) {
17646 for (var i =
0; i < msSignatures.length; ++i) {
17647 if (msSignatures[i]) continue
17649 msSignatures[i] = ops.OP_0
17652 // Array.prototype.filter returns non-sparse array
17653 msSignatures = msSignatures.filter(function (x) { return x })
17656 var redeemScript = allowIncomplete ? undefined : input.redeemScript
17657 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
17662 var pkSignature = input.signatures[
0].toScriptSignature(input.hashType)
17663 scriptSig = scripts.pubKeyInput(pkSignature)
17669 // did we build a scriptSig?
17671 // wrap as scriptHash if necessary
17672 if (input.prevOutType === 'scripthash') {
17673 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
17676 tx.setInputScript(index, scriptSig)
17683 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
17684 assert(index in this.inputs, 'No input at index: ' + index)
17685 hashType = hashType || Transaction.SIGHASH_ALL
17687 var input = this.inputs[index]
17688 var canSign = input.hashType &&
17689 input.prevOutScript &&
17690 input.prevOutType &&
17692 input.scriptType &&
17695 // are we almost ready to sign?
17697 // if redeemScript was provided, enforce consistency
17698 if (redeemScript) {
17699 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
17702 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
17706 // must be pay-to-scriptHash?
17707 if (redeemScript) {
17708 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
17709 if (input.prevOutScript) {
17710 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
17712 var scriptHash = input.prevOutScript.chunks[
1]
17713 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
17716 var scriptType = scripts.classifyOutput(redeemScript)
17717 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
17720 switch (scriptType) {
17722 pubKeys = redeemScript.chunks.slice(
1, -
2).map(ECPubKey.fromBuffer)
17726 case 'pubkeyhash': {
17727 var pkh1 = redeemScript.chunks[
2]
17728 var pkh2 = privKey.pub.getAddress().hash
17730 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
17731 pubKeys = [privKey.pub]
17736 pubKeys = redeemScript.chunks.slice(
0,
1).map(ECPubKey.fromBuffer)
17741 if (!input.prevOutScript) {
17742 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
17743 input.prevOutType = 'scripthash'
17746 input.pubKeys = pubKeys
17747 input.redeemScript = redeemScript
17748 input.scriptType = scriptType
17750 // cannot be pay-to-scriptHash
17752 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
17754 // can we otherwise sign this?
17755 if (input.scriptType) {
17756 assert(input.pubKeys, input.scriptType + ' not supported')
17758 // we know nothin' Jon Snow, assume pubKeyHash
17760 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
17761 input.prevOutType = 'pubkeyhash'
17762 input.pubKeys = [privKey.pub]
17763 input.scriptType = input.prevOutType
17767 input.hashType = hashType
17768 input.signatures = input.signatures || []
17771 var signatureScript = input.redeemScript || input.prevOutScript
17772 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
17774 // enforce signature order matches public keys
17775 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
17776 // maintain a local copy of unmatched signatures
17777 var unmatched = input.signatures.slice()
17779 input.signatures = input.pubKeys.map(function (pubKey) {
17782 // check for any matching signatures
17783 unmatched.some(function (signature, i) {
17784 if (!pubKey.verify(signatureHash, signature)) return false
17787 // remove matched signature from unmatched
17788 unmatched.splice(i,
1)
17793 return match || undefined
17797 // enforce in order signing of public keys
17798 assert(input.pubKeys.some(function (pubKey, i) {
17799 if (!privKey.pub.Q.equals(pubKey.Q)) return false
17801 assert(!input.signatures[i], 'Signature already exists')
17802 var signature = privKey.sign(signatureHash)
17803 input.signatures[i] = signature
17806 }, this), 'privateKey cannot sign for this input')
17809 module.exports = TransactionBuilder
17811 }).call(this,require(
"buffer").Buffer)
17812 },{
"./ecpubkey":
61,
"./ecsignature":
62,
"./opcodes":
67,
"./script":
68,
"./scripts":
69,
"./transaction":
70,
"assert":
5,
"buffer":
7}],
72:[function(require,module,exports){
17813 (function (Buffer){
17814 var assert = require('assert')
17815 var bufferutils = require('./bufferutils')
17816 var typeForce = require('typeforce')
17817 var networks = require('./networks')
17818 var randomBytes = require('randombytes')
17820 var Address = require('./address')
17821 var HDNode = require('./hdnode')
17822 var TransactionBuilder = require('./transaction_builder')
17823 var Script = require('./script')
17825 function Wallet (seed, network) {
17826 console.warn('Wallet is deprecated and will be removed in
2.0.0, see #
296')
17828 seed = seed || randomBytes(
32)
17829 network = network || networks.bitcoin
17831 // Stored in a closure to make accidental serialization less likely
17832 var masterKey = HDNode.fromSeedBuffer(seed, network)
17834 // HD first-level child derivation method should be hardened
17835 // See https://bitcointalk.org/index.php?topic=
405179.msg4415254#msg4415254
17836 var accountZero = masterKey.deriveHardened(
0)
17837 var externalAccount = accountZero.derive(
0)
17838 var internalAccount = accountZero.derive(
1)
17840 this.addresses = []
17841 this.changeAddresses = []
17842 this.network = network
17845 // FIXME: remove in
2.0.0
17846 this.unspentMap = {}
17848 // FIXME: remove in
2.0.0
17850 this.newMasterKey = function (seed) {
17851 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
17853 seed = seed || randomBytes(
32)
17854 masterKey = HDNode.fromSeedBuffer(seed, network)
17856 accountZero = masterKey.deriveHardened(
0)
17857 externalAccount = accountZero.derive(
0)
17858 internalAccount = accountZero.derive(
1)
17861 me.changeAddresses = []
17867 this.getMasterKey = function () {
17870 this.getAccountZero = function () {
17873 this.getExternalAccount = function () {
17874 return externalAccount
17876 this.getInternalAccount = function () {
17877 return internalAccount
17881 Wallet.prototype.createTransaction = function (to, value, options) {
17882 // FIXME: remove in
2.0.0
17883 if (typeof options !== 'object') {
17884 if (options !== undefined) {
17885 console.warn('Non options object parameters are deprecated, use options object instead')
17888 fixedFee: arguments[
2],
17889 changeAddress: arguments[
3]
17894 options = options || {}
17896 assert(value
> this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
17898 var changeAddress = options.changeAddress
17899 var fixedFee = options.fixedFee
17900 var minConf = options.minConf === undefined ?
0 : options.minConf // FIXME: change minConf:
1 by default in
2.0.0
17902 // filter by minConf, then pending and sort by descending value
17903 var unspents = this.unspents.filter(function (unspent) {
17904 return unspent.confirmations
>= minConf
17905 }).filter(function (unspent) {
17906 return !unspent.pending
17907 }).sort(function (o1, o2) {
17908 return o2.value - o1.value
17913 var subTotal = value
17915 var txb = new TransactionBuilder()
17916 txb.addOutput(to, value)
17918 for (var i =
0; i < unspents.length; ++i) {
17919 var unspent = unspents[i]
17920 addresses.push(unspent.address)
17922 txb.addInput(unspent.txHash, unspent.index)
17924 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
17926 accum += unspent.value
17927 subTotal = value + fee
17929 if (accum
>= subTotal) {
17930 var change = accum - subTotal
17932 if (change
> this.network.dustThreshold) {
17933 txb.addOutput(changeAddress || this.getChangeAddress(), change)
17940 assert(accum
>= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
17942 return this.signWith(txb, addresses).build()
17945 // FIXME: remove in
2.0.0
17946 Wallet.prototype.processPendingTx = function (tx) {
17947 this.__processTx(tx, true)
17950 // FIXME: remove in
2.0.0
17951 Wallet.prototype.processConfirmedTx = function (tx) {
17952 this.__processTx(tx, false)
17955 // FIXME: remove in
2.0.0
17956 Wallet.prototype.__processTx = function (tx, isPending) {
17957 console.warn('processTransaction is considered harmful, see issue #
260 for more information')
17959 var txId = tx.getId()
17960 var txHash = tx.getHash()
17962 tx.outs.forEach(function (txOut, i) {
17966 address = Address.fromOutputScript(txOut.script, this.network).toString()
17968 if (!(e.message.match(/has no matching Address/)))
17972 var myAddresses = this.addresses.concat(this.changeAddresses)
17973 if (myAddresses.indexOf(address)
> -
1) {
17974 var lookup = txId + ':' + i
17975 if (lookup in this.unspentMap) return
17977 // its unique, add it
17980 confirmations:
0, // no way to determine this without more information
17984 value: txOut.value,
17988 this.unspentMap[lookup] = unspent
17989 this.unspents.push(unspent)
17993 tx.ins.forEach(function (txIn) {
17994 // copy and convert to big-endian hex
17995 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
17997 var lookup = txInId + ':' + txIn.index
17998 if (!(lookup in this.unspentMap)) return
18000 var unspent = this.unspentMap[lookup]
18003 unspent.pending = true
18004 unspent.spent = true
18006 delete this.unspentMap[lookup]
18008 this.unspents = this.unspents.filter(function (unspent2) {
18009 return unspent !== unspent2
18015 Wallet.prototype.generateAddress = function () {
18016 var k = this.addresses.length
18017 var address = this.getExternalAccount().derive(k).getAddress()
18019 this.addresses.push(address.toString())
18021 return this.getReceiveAddress()
18024 Wallet.prototype.generateChangeAddress = function () {
18025 var k = this.changeAddresses.length
18026 var address = this.getInternalAccount().derive(k).getAddress()
18028 this.changeAddresses.push(address.toString())
18030 return this.getChangeAddress()
18033 Wallet.prototype.getAddress = function () {
18034 if (this.addresses.length ===
0) {
18035 this.generateAddress()
18038 return this.addresses[this.addresses.length -
1]
18041 Wallet.prototype.getBalance = function (minConf) {
18042 minConf = minConf ||
0
18044 return this.unspents.filter(function (unspent) {
18045 return unspent.confirmations
>= minConf
18047 // FIXME: remove spent filter in
2.0.0
18048 }).filter(function (unspent) {
18049 return !unspent.spent
18050 }).reduce(function (accum, unspent) {
18051 return accum + unspent.value
18055 Wallet.prototype.getChangeAddress = function () {
18056 if (this.changeAddresses.length ===
0) {
18057 this.generateChangeAddress()
18060 return this.changeAddresses[this.changeAddresses.length -
1]
18063 Wallet.prototype.getInternalPrivateKey = function (index) {
18064 return this.getInternalAccount().derive(index).privKey
18067 Wallet.prototype.getPrivateKey = function (index) {
18068 return this.getExternalAccount().derive(index).privKey
18071 Wallet.prototype.getPrivateKeyForAddress = function (address) {
18074 if ((index = this.addresses.indexOf(address))
> -
1) {
18075 return this.getPrivateKey(index)
18078 if ((index = this.changeAddresses.indexOf(address))
> -
1) {
18079 return this.getInternalPrivateKey(index)
18082 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
18085 Wallet.prototype.getUnspentOutputs = function (minConf) {
18086 minConf = minConf ||
0
18088 return this.unspents.filter(function (unspent) {
18089 return unspent.confirmations
>= minConf
18091 // FIXME: remove spent filter in
2.0.0
18092 }).filter(function (unspent) {
18093 return !unspent.spent
18094 }).map(function (unspent) {
18096 address: unspent.address,
18097 confirmations: unspent.confirmations,
18098 index: unspent.index,
18099 txId: unspent.txId,
18100 value: unspent.value,
18102 // FIXME: remove in
2.0.0
18103 hash: unspent.txId,
18104 pending: unspent.pending
18109 Wallet.prototype.setUnspentOutputs = function (unspents) {
18110 this.unspentMap = {}
18111 this.unspents = unspents.map(function (unspent) {
18112 // FIXME: remove unspent.hash in
2.0.0
18113 var txId = unspent.txId || unspent.hash
18114 var index = unspent.index
18116 // FIXME: remove in
2.0.0
18117 if (unspent.hash !== undefined) {
18118 console.warn('unspent.hash is deprecated, use unspent.txId instead')
18121 // FIXME: remove in
2.0.0
18122 if (index === undefined) {
18123 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
18124 index = unspent.outputIndex
18127 typeForce('String', txId)
18128 typeForce('Number', index)
18129 typeForce('Number', unspent.value)
18131 assert.equal(txId.length,
64, 'Expected valid txId, got ' + txId)
18132 assert.doesNotThrow(function () {
18133 Address.fromBase58Check(unspent.address)
18134 }, 'Expected Base58 Address, got ' + unspent.address)
18135 assert(isFinite(index), 'Expected finite index, got ' + index)
18137 // FIXME: remove branch in
2.0.0
18138 if (unspent.confirmations !== undefined) {
18139 typeForce('Number', unspent.confirmations)
18142 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
18145 address: unspent.address,
18146 confirmations: unspent.confirmations ||
0,
18150 value: unspent.value,
18152 // FIXME: remove in
2.0.0
18153 pending: unspent.pending || false
18156 // FIXME: remove in
2.0.0
18157 this.unspentMap[txId + ':' + index] = unspent
18163 Wallet.prototype.signWith = function (tx, addresses) {
18164 addresses.forEach(function (address, i) {
18165 var privKey = this.getPrivateKeyForAddress(address)
18167 tx.sign(i, privKey)
18173 function estimatePaddedFee (tx, network) {
18174 var tmpTx = tx.clone()
18175 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold ||
0)
18177 return network.estimateFee(tmpTx)
18180 // FIXME:
1.0.0 shims, remove in
2.0.0
18181 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
18182 Wallet.prototype.createTx = Wallet.prototype.createTransaction
18184 module.exports = Wallet
18186 }).call(this,require("buffer").Buffer)
18187 },{"./address":
54,"./bufferutils":
57,"./hdnode":
63,"./networks":
66,"./script":
68,"./transaction_builder":
71,"assert":
5,"buffer":
7,"randombytes":
52,"typeforce":
53}]},{},[
64])(
64)
18189 <script>bitcoin.networks.shadow = {
18190 magicPrefix: '\x19ShadowCash Signed Message:\n',
18192 public:
0xEE80286A,
18193 private:
0xEE8031E8
18200 estimateFee: function() { return "unused in this app" },
18203 bitcoin.networks.shadowtn = {
18204 magicPrefix: '\x19ShadowCash Signed Message:\n',
18206 public:
0x76C0FDFB,
18207 private:
0x76C1077A
18214 estimateFee: function() { return "unused in this app" },
18217 bitcoin.networks.clam = {
18219 public:
0xa8c26d64,
18220 private:
0xa8c17826
18226 bitcoin.networks.dash = {
18228 public:
0x0488b21e,
18229 private:
0x0488ade4
18236 bitcoin.networks.game = {
18238 public:
0x0488b21e,
18239 private:
0x0488ade4
18246 bitcoin.networks.namecoin = {
18248 public:
0x0488b21e,
18249 private:
0x0488ade4
18252 //scriptHash:
0x10,
18256 bitcoin.networks.peercoin = {
18258 public:
0x0488b21e,
18259 private:
0x0488ade4
18262 //scriptHash:
0x10,
18267 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
18268 (function (global){
18271 // compare and isBuffer taken from https://github.com/feross/buffer/blob/
680e9e5e488f22aac27599a57dc844a6315928dd/index.js
18272 // original notice:
18275 * The buffer module from node.js, for the browser.
18277 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
18280 function compare(a, b) {
18288 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
18289 if (a[i] !== b[i]) {
18304 function isBuffer(b) {
18305 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
18306 return global.Buffer.isBuffer(b);
18308 return !!(b != null && b._isBuffer);
18311 // based on node assert, original notice:
18313 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
18315 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
18317 // Originally from narwhal.js (http://narwhaljs.org)
18318 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
18320 // Permission is hereby granted, free of charge, to any person obtaining a copy
18321 // of this software and associated documentation files (the 'Software'), to
18322 // deal in the Software without restriction, including without limitation the
18323 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18324 // sell copies of the Software, and to permit persons to whom the Software is
18325 // furnished to do so, subject to the following conditions:
18327 // The above copyright notice and this permission notice shall be included in
18328 // all copies or substantial portions of the Software.
18330 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18331 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18332 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18333 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18334 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18335 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18337 var util = require('util/');
18338 var hasOwn = Object.prototype.hasOwnProperty;
18339 var pSlice = Array.prototype.slice;
18340 var functionsHaveNames = (function () {
18341 return function foo() {}.name === 'foo';
18343 function pToString (obj) {
18344 return Object.prototype.toString.call(obj);
18346 function isView(arrbuf) {
18347 if (isBuffer(arrbuf)) {
18350 if (typeof global.ArrayBuffer !== 'function') {
18353 if (typeof ArrayBuffer.isView === 'function') {
18354 return ArrayBuffer.isView(arrbuf);
18359 if (arrbuf instanceof DataView) {
18362 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
18367 //
1. The assert module provides functions that throw
18368 // AssertionError's when particular conditions are not met. The
18369 // assert module must conform to the following interface.
18371 var assert = module.exports = ok;
18373 //
2. The AssertionError is defined in assert.
18374 // new assert.AssertionError({ message: message,
18376 // expected: expected })
18378 var regex = /\s*function\s+([^\(\s]*)\s*/;
18379 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
18380 function getName(func) {
18381 if (!util.isFunction(func)) {
18384 if (functionsHaveNames) {
18387 var str = func.toString();
18388 var match = str.match(regex);
18389 return match && match[
1];
18391 assert.AssertionError = function AssertionError(options) {
18392 this.name = 'AssertionError';
18393 this.actual = options.actual;
18394 this.expected = options.expected;
18395 this.operator = options.operator;
18396 if (options.message) {
18397 this.message = options.message;
18398 this.generatedMessage = false;
18400 this.message = getMessage(this);
18401 this.generatedMessage = true;
18403 var stackStartFunction = options.stackStartFunction || fail;
18404 if (Error.captureStackTrace) {
18405 Error.captureStackTrace(this, stackStartFunction);
18407 // non v8 browsers so we can have a stacktrace
18408 var err = new Error();
18410 var out = err.stack;
18412 // try to strip useless frames
18413 var fn_name = getName(stackStartFunction);
18414 var idx = out.indexOf('\n' + fn_name);
18416 // once we have located the function frame
18417 // we need to strip out everything before it (and its line)
18418 var next_line = out.indexOf('\n', idx +
1);
18419 out = out.substring(next_line +
1);
18427 // assert.AssertionError instanceof Error
18428 util.inherits(assert.AssertionError, Error);
18430 function truncate(s, n) {
18431 if (typeof s === 'string') {
18432 return s.length < n ? s : s.slice(
0, n);
18437 function inspect(something) {
18438 if (functionsHaveNames || !util.isFunction(something)) {
18439 return util.inspect(something);
18441 var rawname = getName(something);
18442 var name = rawname ? ': ' + rawname : '';
18443 return '[Function' + name + ']';
18445 function getMessage(self) {
18446 return truncate(inspect(self.actual),
128) + ' ' +
18447 self.operator + ' ' +
18448 truncate(inspect(self.expected),
128);
18451 // At present only the three keys mentioned above are used and
18452 // understood by the spec. Implementations or sub modules can pass
18453 // other keys to the AssertionError's constructor - they will be
18456 //
3. All of the following functions must throw an AssertionError
18457 // when a corresponding condition is not met, with a message that
18458 // may be undefined if not provided. All assertion methods provide
18459 // both the actual and expected values to the assertion error for
18460 // display purposes.
18462 function fail(actual, expected, message, operator, stackStartFunction) {
18463 throw new assert.AssertionError({
18466 expected: expected,
18467 operator: operator,
18468 stackStartFunction: stackStartFunction
18472 // EXTENSION! allows for well behaved errors defined elsewhere.
18473 assert.fail = fail;
18475 //
4. Pure assertion tests whether a value is truthy, as determined
18477 // assert.ok(guard, message_opt);
18478 // This statement is equivalent to assert.equal(true, !!guard,
18479 // message_opt);. To test strictly for the value true, use
18480 // assert.strictEqual(true, guard, message_opt);.
18482 function ok(value, message) {
18483 if (!value) fail(value, true, message, '==', assert.ok);
18487 //
5. The equality assertion tests shallow, coercive equality with
18489 // assert.equal(actual, expected, message_opt);
18491 assert.equal = function equal(actual, expected, message) {
18492 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
18495 //
6. The non-equality assertion tests for whether two objects are not equal
18496 // with != assert.notEqual(actual, expected, message_opt);
18498 assert.notEqual = function notEqual(actual, expected, message) {
18499 if (actual == expected) {
18500 fail(actual, expected, message, '!=', assert.notEqual);
18504 //
7. The equivalence assertion tests a deep equality relation.
18505 // assert.deepEqual(actual, expected, message_opt);
18507 assert.deepEqual = function deepEqual(actual, expected, message) {
18508 if (!_deepEqual(actual, expected, false)) {
18509 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
18513 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
18514 if (!_deepEqual(actual, expected, true)) {
18515 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
18519 function _deepEqual(actual, expected, strict, memos) {
18520 //
7.1. All identical values are equivalent, as determined by ===.
18521 if (actual === expected) {
18523 } else if (isBuffer(actual) && isBuffer(expected)) {
18524 return compare(actual, expected) ===
0;
18526 //
7.2. If the expected value is a Date object, the actual value is
18527 // equivalent if it is also a Date object that refers to the same time.
18528 } else if (util.isDate(actual) && util.isDate(expected)) {
18529 return actual.getTime() === expected.getTime();
18531 //
7.3 If the expected value is a RegExp object, the actual value is
18532 // equivalent if it is also a RegExp object with the same source and
18533 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
18534 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
18535 return actual.source === expected.source &&
18536 actual.global === expected.global &&
18537 actual.multiline === expected.multiline &&
18538 actual.lastIndex === expected.lastIndex &&
18539 actual.ignoreCase === expected.ignoreCase;
18541 //
7.4. Other pairs that do not both pass typeof value == 'object',
18542 // equivalence is determined by ==.
18543 } else if ((actual === null || typeof actual !== 'object') &&
18544 (expected === null || typeof expected !== 'object')) {
18545 return strict ? actual === expected : actual == expected;
18547 // If both values are instances of typed arrays, wrap their underlying
18548 // ArrayBuffers in a Buffer each to increase performance
18549 // This optimization requires the arrays to have the same type as checked by
18550 // Object.prototype.toString (aka pToString). Never perform binary
18551 // comparisons for Float*Arrays, though, since e.g. +
0 === -
0 but their
18552 // bit patterns are not identical.
18553 } else if (isView(actual) && isView(expected) &&
18554 pToString(actual) === pToString(expected) &&
18555 !(actual instanceof Float32Array ||
18556 actual instanceof Float64Array)) {
18557 return compare(new Uint8Array(actual.buffer),
18558 new Uint8Array(expected.buffer)) ===
0;
18560 //
7.5 For all other Object pairs, including Array objects, equivalence is
18561 // determined by having the same number of owned properties (as verified
18562 // with Object.prototype.hasOwnProperty.call), the same set of keys
18563 // (although not necessarily the same order), equivalent values for every
18564 // corresponding key, and an identical 'prototype' property. Note: this
18565 // accounts for both named and indexed properties on Arrays.
18566 } else if (isBuffer(actual) !== isBuffer(expected)) {
18569 memos = memos || {actual: [], expected: []};
18571 var actualIndex = memos.actual.indexOf(actual);
18572 if (actualIndex !== -
1) {
18573 if (actualIndex === memos.expected.indexOf(expected)) {
18578 memos.actual.push(actual);
18579 memos.expected.push(expected);
18581 return objEquiv(actual, expected, strict, memos);
18585 function isArguments(object) {
18586 return Object.prototype.toString.call(object) == '[object Arguments]';
18589 function objEquiv(a, b, strict, actualVisitedObjects) {
18590 if (a === null || a === undefined || b === null || b === undefined)
18592 // if one is a primitive, the other must be same
18593 if (util.isPrimitive(a) || util.isPrimitive(b))
18595 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
18597 var aIsArgs = isArguments(a);
18598 var bIsArgs = isArguments(b);
18599 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
18602 a = pSlice.call(a);
18603 b = pSlice.call(b);
18604 return _deepEqual(a, b, strict);
18606 var ka = objectKeys(a);
18607 var kb = objectKeys(b);
18609 // having the same number of owned properties (keys incorporates
18611 if (ka.length !== kb.length)
18613 //the same set of keys (although not necessarily the same order),
18616 //~~~cheap key test
18617 for (i = ka.length -
1; i
>=
0; i--) {
18618 if (ka[i] !== kb[i])
18621 //equivalent values for every corresponding key, and
18622 //~~~possibly expensive deep test
18623 for (i = ka.length -
1; i
>=
0; i--) {
18625 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
18631 //
8. The non-equivalence assertion tests for any deep inequality.
18632 // assert.notDeepEqual(actual, expected, message_opt);
18634 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
18635 if (_deepEqual(actual, expected, false)) {
18636 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
18640 assert.notDeepStrictEqual = notDeepStrictEqual;
18641 function notDeepStrictEqual(actual, expected, message) {
18642 if (_deepEqual(actual, expected, true)) {
18643 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
18648 //
9. The strict equality assertion tests strict equality, as determined by ===.
18649 // assert.strictEqual(actual, expected, message_opt);
18651 assert.strictEqual = function strictEqual(actual, expected, message) {
18652 if (actual !== expected) {
18653 fail(actual, expected, message, '===', assert.strictEqual);
18657 //
10. The strict non-equality assertion tests for strict inequality, as
18658 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
18660 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
18661 if (actual === expected) {
18662 fail(actual, expected, message, '!==', assert.notStrictEqual);
18666 function expectedException(actual, expected) {
18667 if (!actual || !expected) {
18671 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
18672 return expected.test(actual);
18676 if (actual instanceof expected) {
18680 // Ignore. The instanceof check doesn't work for arrow functions.
18683 if (Error.isPrototypeOf(expected)) {
18687 return expected.call({}, actual) === true;
18690 function _tryBlock(block) {
18700 function _throws(shouldThrow, block, expected, message) {
18703 if (typeof block !== 'function') {
18704 throw new TypeError('"block" argument must be a function');
18707 if (typeof expected === 'string') {
18708 message = expected;
18712 actual = _tryBlock(block);
18714 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
18715 (message ? ' ' + message : '.');
18717 if (shouldThrow && !actual) {
18718 fail(actual, expected, 'Missing expected exception' + message);
18721 var userProvidedMessage = typeof message === 'string';
18722 var isUnwantedException = !shouldThrow && util.isError(actual);
18723 var isUnexpectedException = !shouldThrow && actual && !expected;
18725 if ((isUnwantedException &&
18726 userProvidedMessage &&
18727 expectedException(actual, expected)) ||
18728 isUnexpectedException) {
18729 fail(actual, expected, 'Got unwanted exception' + message);
18732 if ((shouldThrow && actual && expected &&
18733 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
18738 //
11. Expected to throw an error:
18739 // assert.throws(block, Error_opt, message_opt);
18741 assert.throws = function(block, /*optional*/error, /*optional*/message) {
18742 _throws(true, block, error, message);
18745 // EXTENSION! This is annoying to write outside this module.
18746 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
18747 _throws(false, block, error, message);
18750 assert.ifError = function(err) { if (err) throw err; };
18752 var objectKeys = Object.keys || function (obj) {
18754 for (var key in obj) {
18755 if (hasOwn.call(obj, key)) keys.push(key);
18760 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
18761 },{"util/":
30}],
2:[function(require,module,exports){
18764 exports.byteLength = byteLength
18765 exports.toByteArray = toByteArray
18766 exports.fromByteArray = fromByteArray
18770 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
18772 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
18773 for (var i =
0, len = code.length; i < len; ++i) {
18774 lookup[i] = code[i]
18775 revLookup[code.charCodeAt(i)] = i
18778 revLookup['-'.charCodeAt(
0)] =
62
18779 revLookup['_'.charCodeAt(
0)] =
63
18781 function placeHoldersCount (b64) {
18782 var len = b64.length
18784 throw new Error('Invalid string. Length must be a multiple of
4')
18787 // the number of equal signs (place holders)
18788 // if there are two placeholders, than the two characters before it
18789 // represent one byte
18790 // if there is only one, then the three characters before it represent
2 bytes
18791 // this is just a cheap hack to not do indexOf twice
18792 return b64[len -
2] === '=' ?
2 : b64[len -
1] === '=' ?
1 :
0
18795 function byteLength (b64) {
18796 // base64 is
4/
3 + up to two characters of the original data
18797 return b64.length *
3 /
4 - placeHoldersCount(b64)
18800 function toByteArray (b64) {
18801 var i, j, l, tmp, placeHolders, arr
18802 var len = b64.length
18803 placeHolders = placeHoldersCount(b64)
18805 arr = new Arr(len *
3 /
4 - placeHolders)
18807 // if there are placeholders, only get up to the last complete
4 chars
18808 l = placeHolders
> 0 ? len -
4 : len
18812 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
18813 tmp = (revLookup[b64.charCodeAt(i)] <<
18) | (revLookup[b64.charCodeAt(i +
1)] <<
12) | (revLookup[b64.charCodeAt(i +
2)] <<
6) | revLookup[b64.charCodeAt(i +
3)]
18814 arr[L++] = (tmp
>> 16) &
0xFF
18815 arr[L++] = (tmp
>> 8) &
0xFF
18816 arr[L++] = tmp &
0xFF
18819 if (placeHolders ===
2) {
18820 tmp = (revLookup[b64.charCodeAt(i)] <<
2) | (revLookup[b64.charCodeAt(i +
1)]
>> 4)
18821 arr[L++] = tmp &
0xFF
18822 } else if (placeHolders ===
1) {
18823 tmp = (revLookup[b64.charCodeAt(i)] <<
10) | (revLookup[b64.charCodeAt(i +
1)] <<
4) | (revLookup[b64.charCodeAt(i +
2)]
>> 2)
18824 arr[L++] = (tmp
>> 8) &
0xFF
18825 arr[L++] = tmp &
0xFF
18831 function tripletToBase64 (num) {
18832 return lookup[num
>> 18 &
0x3F] + lookup[num
>> 12 &
0x3F] + lookup[num
>> 6 &
0x3F] + lookup[num &
0x3F]
18835 function encodeChunk (uint8, start, end) {
18838 for (var i = start; i < end; i +=
3) {
18839 tmp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
18840 output.push(tripletToBase64(tmp))
18842 return output.join('')
18845 function fromByteArray (uint8) {
18847 var len = uint8.length
18848 var extraBytes = len %
3 // if we have
1 byte left, pad
2 bytes
18851 var maxChunkLength =
16383 // must be multiple of
3
18853 // go through the array every three bytes, we'll deal with trailing stuff later
18854 for (var i =
0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
18855 parts.push(encodeChunk(uint8, i, (i + maxChunkLength)
> len2 ? len2 : (i + maxChunkLength)))
18858 // pad the end with zeros, but make sure to not forget the extra bytes
18859 if (extraBytes ===
1) {
18860 tmp = uint8[len -
1]
18861 output += lookup[tmp
>> 2]
18862 output += lookup[(tmp <<
4) &
0x3F]
18864 } else if (extraBytes ===
2) {
18865 tmp = (uint8[len -
2] <<
8) + (uint8[len -
1])
18866 output += lookup[tmp
>> 10]
18867 output += lookup[(tmp
>> 4) &
0x3F]
18868 output += lookup[(tmp <<
2) &
0x3F]
18874 return parts.join('')
18877 },{}],
3:[function(require,module,exports){
18879 },{}],
4:[function(require,module,exports){
18880 (function (global){
18883 var buffer = require('buffer');
18884 var Buffer = buffer.Buffer;
18885 var SlowBuffer = buffer.SlowBuffer;
18886 var MAX_LEN = buffer.kMaxLength ||
2147483647;
18887 exports.alloc = function alloc(size, fill, encoding) {
18888 if (typeof Buffer.alloc === 'function') {
18889 return Buffer.alloc(size, fill, encoding);
18891 if (typeof encoding === 'number') {
18892 throw new TypeError('encoding must not be number');
18894 if (typeof size !== 'number') {
18895 throw new TypeError('size must be a number');
18897 if (size
> MAX_LEN) {
18898 throw new RangeError('size is too large');
18900 var enc = encoding;
18902 if (_fill === undefined) {
18906 var buf = new Buffer(size);
18907 if (typeof _fill === 'string') {
18908 var fillBuf = new Buffer(_fill, enc);
18909 var flen = fillBuf.length;
18911 while (++i < size) {
18912 buf[i] = fillBuf[i % flen];
18919 exports.allocUnsafe = function allocUnsafe(size) {
18920 if (typeof Buffer.allocUnsafe === 'function') {
18921 return Buffer.allocUnsafe(size);
18923 if (typeof size !== 'number') {
18924 throw new TypeError('size must be a number');
18926 if (size
> MAX_LEN) {
18927 throw new RangeError('size is too large');
18929 return new Buffer(size);
18931 exports.from = function from(value, encodingOrOffset, length) {
18932 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
18933 return Buffer.from(value, encodingOrOffset, length);
18935 if (typeof value === 'number') {
18936 throw new TypeError('"value" argument must not be a number');
18938 if (typeof value === 'string') {
18939 return new Buffer(value, encodingOrOffset);
18941 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
18942 var offset = encodingOrOffset;
18943 if (arguments.length ===
1) {
18944 return new Buffer(value);
18946 if (typeof offset === 'undefined') {
18950 if (typeof len === 'undefined') {
18951 len = value.byteLength - offset;
18953 if (offset
>= value.byteLength) {
18954 throw new RangeError('\'offset\' is out of bounds');
18956 if (len
> value.byteLength - offset) {
18957 throw new RangeError('\'length\' is out of bounds');
18959 return new Buffer(value.slice(offset, offset + len));
18961 if (Buffer.isBuffer(value)) {
18962 var out = new Buffer(value.length);
18963 value.copy(out,
0,
0, value.length);
18967 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
18968 return new Buffer(value);
18970 if (value.type === 'Buffer' && Array.isArray(value.data)) {
18971 return new Buffer(value.data);
18975 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
18977 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
18978 if (typeof Buffer.allocUnsafeSlow === 'function') {
18979 return Buffer.allocUnsafeSlow(size);
18981 if (typeof size !== 'number') {
18982 throw new TypeError('size must be a number');
18984 if (size
>= MAX_LEN) {
18985 throw new RangeError('size is too large');
18987 return new SlowBuffer(size);
18990 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
18991 },{"buffer":
5}],
5:[function(require,module,exports){
18993 * The buffer module from node.js, for the browser.
18995 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
18998 /* eslint-disable no-proto */
19002 var base64 = require('base64-js')
19003 var ieee754 = require('ieee754')
19005 exports.Buffer = Buffer
19006 exports.SlowBuffer = SlowBuffer
19007 exports.INSPECT_MAX_BYTES =
50
19009 var K_MAX_LENGTH =
0x7fffffff
19010 exports.kMaxLength = K_MAX_LENGTH
19013 * If `Buffer.TYPED_ARRAY_SUPPORT`:
19014 * === true Use Uint8Array implementation (fastest)
19015 * === false Print warning and recommend using `buffer` v4.x which has an Object
19016 * implementation (most compatible, even IE6)
19018 * Browsers that support typed arrays are IE
10+, Firefox
4+, Chrome
7+, Safari
5.1+,
19019 * Opera
11.6+, iOS
4.2+.
19021 * We report that the browser does not support typed arrays if the are not subclassable
19022 * using __proto__. Firefox
4-
29 lacks support for adding new properties to `Uint8Array`
19023 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438). IE
10 lacks support
19024 * for __proto__ and has a buggy typed array implementation.
19026 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
19028 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
19029 typeof console.error === 'function') {
19031 'This browser lacks typed array (Uint8Array) support which is required by ' +
19032 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
19036 function typedArraySupport () {
19037 // Can typed array instances can be augmented?
19039 var arr = new Uint8Array(
1)
19040 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return
42 }}
19041 return arr.foo() ===
42
19047 function createBuffer (length) {
19048 if (length
> K_MAX_LENGTH) {
19049 throw new RangeError('Invalid typed array length')
19051 // Return an augmented `Uint8Array` instance
19052 var buf = new Uint8Array(length)
19053 buf.__proto__ = Buffer.prototype
19058 * The Buffer constructor returns instances of `Uint8Array` that have their
19059 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
19060 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
19061 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
19062 * returns a single octet.
19064 * The `Uint8Array` prototype remains unmodified.
19067 function Buffer (arg, encodingOrOffset, length) {
19069 if (typeof arg === 'number') {
19070 if (typeof encodingOrOffset === 'string') {
19072 'If encoding is specified then the first argument must be a string'
19075 return allocUnsafe(arg)
19077 return from(arg, encodingOrOffset, length)
19080 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/
97
19081 if (typeof Symbol !== 'undefined' && Symbol.species &&
19082 Buffer[Symbol.species] === Buffer) {
19083 Object.defineProperty(Buffer, Symbol.species, {
19085 configurable: true,
19091 Buffer.poolSize =
8192 // not used by this implementation
19093 function from (value, encodingOrOffset, length) {
19094 if (typeof value === 'number') {
19095 throw new TypeError('"value" argument must not be a number')
19098 if (value instanceof ArrayBuffer) {
19099 return fromArrayBuffer(value, encodingOrOffset, length)
19102 if (typeof value === 'string') {
19103 return fromString(value, encodingOrOffset)
19106 return fromObject(value)
19110 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
19111 * if value is a number.
19112 * Buffer.from(str[, encoding])
19113 * Buffer.from(array)
19114 * Buffer.from(buffer)
19115 * Buffer.from(arrayBuffer[, byteOffset[, length]])
19117 Buffer.from = function (value, encodingOrOffset, length) {
19118 return from(value, encodingOrOffset, length)
19121 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
19122 // https://github.com/feross/buffer/pull/
148
19123 Buffer.prototype.__proto__ = Uint8Array.prototype
19124 Buffer.__proto__ = Uint8Array
19126 function assertSize (size) {
19127 if (typeof size !== 'number') {
19128 throw new TypeError('"size" argument must be a number')
19129 } else if (size <
0) {
19130 throw new RangeError('"size" argument must not be negative')
19134 function alloc (size, fill, encoding) {
19137 return createBuffer(size)
19139 if (fill !== undefined) {
19140 // Only pay attention to encoding if it's a string. This
19141 // prevents accidentally sending in a number that would
19142 // be interpretted as a start offset.
19143 return typeof encoding === 'string'
19144 ? createBuffer(size).fill(fill, encoding)
19145 : createBuffer(size).fill(fill)
19147 return createBuffer(size)
19151 * Creates a new filled Buffer instance.
19152 * alloc(size[, fill[, encoding]])
19154 Buffer.alloc = function (size, fill, encoding) {
19155 return alloc(size, fill, encoding)
19158 function allocUnsafe (size) {
19160 return createBuffer(size <
0 ?
0 : checked(size) |
0)
19164 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
19166 Buffer.allocUnsafe = function (size) {
19167 return allocUnsafe(size)
19170 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
19172 Buffer.allocUnsafeSlow = function (size) {
19173 return allocUnsafe(size)
19176 function fromString (string, encoding) {
19177 if (typeof encoding !== 'string' || encoding === '') {
19181 if (!Buffer.isEncoding(encoding)) {
19182 throw new TypeError('"encoding" must be a valid string encoding')
19185 var length = byteLength(string, encoding) |
0
19186 var buf = createBuffer(length)
19188 var actual = buf.write(string, encoding)
19190 if (actual !== length) {
19191 // Writing a hex string, for example, that contains invalid characters will
19192 // cause everything after the first invalid character to be ignored. (e.g.
19193 // 'abxxcd' will be treated as 'ab')
19194 buf = buf.slice(
0, actual)
19200 function fromArrayLike (array) {
19201 var length = array.length <
0 ?
0 : checked(array.length) |
0
19202 var buf = createBuffer(length)
19203 for (var i =
0; i < length; i +=
1) {
19204 buf[i] = array[i] &
255
19209 function fromArrayBuffer (array, byteOffset, length) {
19210 if (byteOffset <
0 || array.byteLength < byteOffset) {
19211 throw new RangeError('\'offset\' is out of bounds')
19214 if (array.byteLength < byteOffset + (length ||
0)) {
19215 throw new RangeError('\'length\' is out of bounds')
19219 if (byteOffset === undefined && length === undefined) {
19220 buf = new Uint8Array(array)
19221 } else if (length === undefined) {
19222 buf = new Uint8Array(array, byteOffset)
19224 buf = new Uint8Array(array, byteOffset, length)
19227 // Return an augmented `Uint8Array` instance
19228 buf.__proto__ = Buffer.prototype
19232 function fromObject (obj) {
19233 if (Buffer.isBuffer(obj)) {
19234 var len = checked(obj.length) |
0
19235 var buf = createBuffer(len)
19237 if (buf.length ===
0) {
19241 obj.copy(buf,
0,
0, len)
19246 if (ArrayBuffer.isView(obj) || 'length' in obj) {
19247 if (typeof obj.length !== 'number' || isnan(obj.length)) {
19248 return createBuffer(
0)
19250 return fromArrayLike(obj)
19253 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
19254 return fromArrayLike(obj.data)
19258 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
19261 function checked (length) {
19262 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
19263 // length is NaN (which is otherwise coerced to zero.)
19264 if (length
>= K_MAX_LENGTH) {
19265 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
19266 'size:
0x' + K_MAX_LENGTH.toString(
16) + ' bytes')
19271 function SlowBuffer (length) {
19272 if (+length != length) { // eslint-disable-line eqeqeq
19275 return Buffer.alloc(+length)
19278 Buffer.isBuffer = function isBuffer (b) {
19279 return b != null && b._isBuffer === true
19282 Buffer.compare = function compare (a, b) {
19283 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
19284 throw new TypeError('Arguments must be Buffers')
19287 if (a === b) return
0
19292 for (var i =
0, len = Math.min(x, y); i < len; ++i) {
19293 if (a[i] !== b[i]) {
19300 if (x < y) return -
1
19301 if (y < x) return
1
19305 Buffer.isEncoding = function isEncoding (encoding) {
19306 switch (String(encoding).toLowerCase()) {
19324 Buffer.concat = function concat (list, length) {
19325 if (!Array.isArray(list)) {
19326 throw new TypeError('"list" argument must be an Array of Buffers')
19329 if (list.length ===
0) {
19330 return Buffer.alloc(
0)
19334 if (length === undefined) {
19336 for (i =
0; i < list.length; ++i) {
19337 length += list[i].length
19341 var buffer = Buffer.allocUnsafe(length)
19343 for (i =
0; i < list.length; ++i) {
19345 if (!Buffer.isBuffer(buf)) {
19346 throw new TypeError('"list" argument must be an Array of Buffers')
19348 buf.copy(buffer, pos)
19354 function byteLength (string, encoding) {
19355 if (Buffer.isBuffer(string)) {
19356 return string.length
19358 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
19359 return string.byteLength
19361 if (typeof string !== 'string') {
19362 string = '' + string
19365 var len = string.length
19366 if (len ===
0) return
0
19368 // Use a for loop to avoid recursion
19369 var loweredCase = false
19371 switch (encoding) {
19379 return utf8ToBytes(string).length
19388 return base64ToBytes(string).length
19390 if (loweredCase) return utf8ToBytes(string).length // assume utf8
19391 encoding = ('' + encoding).toLowerCase()
19396 Buffer.byteLength = byteLength
19398 function slowToString (encoding, start, end) {
19399 var loweredCase = false
19401 // No need to verify that
"this.length <= MAX_UINT32" since it's a read-only
19402 // property of a typed array.
19404 // This behaves neither like String nor Uint8Array in that we set start/end
19405 // to their upper/lower bounds if the value passed is out of range.
19406 // undefined is handled specially as per ECMA-
262 6th Edition,
19407 // Section
13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
19408 if (start === undefined || start <
0) {
19411 // Return early if start
> this.length. Done here to prevent potential uint32
19412 // coercion fail below.
19413 if (start
> this.length) {
19417 if (end === undefined || end
> this.length) {
19425 // Force coersion to uint32. This will also coerce falsey/NaN values to
0.
19429 if (end <= start) {
19433 if (!encoding) encoding = 'utf8'
19436 switch (encoding) {
19438 return hexSlice(this, start, end)
19442 return utf8Slice(this, start, end)
19445 return asciiSlice(this, start, end)
19449 return latin1Slice(this, start, end)
19452 return base64Slice(this, start, end)
19458 return utf16leSlice(this, start, end)
19461 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
19462 encoding = (encoding + '').toLowerCase()
19468 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
19469 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
19470 // reliably in a browserify context because there could be multiple different
19471 // copies of the 'buffer' package in use. This method works even for Buffer
19472 // instances that were created from another copy of the `buffer` package.
19473 // See: https://github.com/feross/buffer/issues/
154
19474 Buffer.prototype._isBuffer = true
19476 function swap (b, n, m) {
19482 Buffer.prototype.swap16 = function swap16 () {
19483 var len = this.length
19484 if (len %
2 !==
0) {
19485 throw new RangeError('Buffer size must be a multiple of
16-bits')
19487 for (var i =
0; i < len; i +=
2) {
19488 swap(this, i, i +
1)
19493 Buffer.prototype.swap32 = function swap32 () {
19494 var len = this.length
19495 if (len %
4 !==
0) {
19496 throw new RangeError('Buffer size must be a multiple of
32-bits')
19498 for (var i =
0; i < len; i +=
4) {
19499 swap(this, i, i +
3)
19500 swap(this, i +
1, i +
2)
19505 Buffer.prototype.swap64 = function swap64 () {
19506 var len = this.length
19507 if (len %
8 !==
0) {
19508 throw new RangeError('Buffer size must be a multiple of
64-bits')
19510 for (var i =
0; i < len; i +=
8) {
19511 swap(this, i, i +
7)
19512 swap(this, i +
1, i +
6)
19513 swap(this, i +
2, i +
5)
19514 swap(this, i +
3, i +
4)
19519 Buffer.prototype.toString = function toString () {
19520 var length = this.length
19521 if (length ===
0) return ''
19522 if (arguments.length ===
0) return utf8Slice(this,
0, length)
19523 return slowToString.apply(this, arguments)
19526 Buffer.prototype.equals = function equals (b) {
19527 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
19528 if (this === b) return true
19529 return Buffer.compare(this, b) ===
0
19532 Buffer.prototype.inspect = function inspect () {
19534 var max = exports.INSPECT_MAX_BYTES
19535 if (this.length
> 0) {
19536 str = this.toString('hex',
0, max).match(/.{
2}/g).join(' ')
19537 if (this.length
> max) str += ' ... '
19539 return '
<Buffer ' + str + '
>'
19542 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
19543 if (!Buffer.isBuffer(target)) {
19544 throw new TypeError('Argument must be a Buffer')
19547 if (start === undefined) {
19550 if (end === undefined) {
19551 end = target ? target.length :
0
19553 if (thisStart === undefined) {
19556 if (thisEnd === undefined) {
19557 thisEnd = this.length
19560 if (start <
0 || end
> target.length || thisStart <
0 || thisEnd
> this.length) {
19561 throw new RangeError('out of range index')
19564 if (thisStart
>= thisEnd && start
>= end) {
19567 if (thisStart
>= thisEnd) {
19570 if (start
>= end) {
19579 if (this === target) return
0
19581 var x = thisEnd - thisStart
19582 var y = end - start
19583 var len = Math.min(x, y)
19585 var thisCopy = this.slice(thisStart, thisEnd)
19586 var targetCopy = target.slice(start, end)
19588 for (var i =
0; i < len; ++i) {
19589 if (thisCopy[i] !== targetCopy[i]) {
19596 if (x < y) return -
1
19597 if (y < x) return
1
19601 // Finds either the first index of `val` in `buffer` at offset
>= `byteOffset`,
19602 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
19605 // - buffer - a Buffer to search
19606 // - val - a string, Buffer, or number
19607 // - byteOffset - an index into `buffer`; will be clamped to an int32
19608 // - encoding - an optional encoding, relevant is val is a string
19609 // - dir - true for indexOf, false for lastIndexOf
19610 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
19611 // Empty buffer means no match
19612 if (buffer.length ===
0) return -
1
19614 // Normalize byteOffset
19615 if (typeof byteOffset === 'string') {
19616 encoding = byteOffset
19618 } else if (byteOffset
> 0x7fffffff) {
19619 byteOffset =
0x7fffffff
19620 } else if (byteOffset < -
0x80000000) {
19621 byteOffset = -
0x80000000
19623 byteOffset = +byteOffset // Coerce to Number.
19624 if (isNaN(byteOffset)) {
19625 // byteOffset: it it's undefined, null, NaN,
"foo", etc, search whole buffer
19626 byteOffset = dir ?
0 : (buffer.length -
1)
19629 // Normalize byteOffset: negative offsets start from the end of the buffer
19630 if (byteOffset <
0) byteOffset = buffer.length + byteOffset
19631 if (byteOffset
>= buffer.length) {
19633 else byteOffset = buffer.length -
1
19634 } else if (byteOffset <
0) {
19635 if (dir) byteOffset =
0
19640 if (typeof val === 'string') {
19641 val = Buffer.from(val, encoding)
19644 // Finally, search either indexOf (if dir is true) or lastIndexOf
19645 if (Buffer.isBuffer(val)) {
19646 // Special case: looking for empty string/buffer always fails
19647 if (val.length ===
0) {
19650 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
19651 } else if (typeof val === 'number') {
19652 val = val &
0xFF // Search for a byte value [
0-
255]
19653 if (typeof Uint8Array.prototype.indexOf === 'function') {
19655 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
19657 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
19660 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
19663 throw new TypeError('val must be string, number or Buffer')
19666 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
19668 var arrLength = arr.length
19669 var valLength = val.length
19671 if (encoding !== undefined) {
19672 encoding = String(encoding).toLowerCase()
19673 if (encoding === 'ucs2' || encoding === 'ucs-
2' ||
19674 encoding === 'utf16le' || encoding === 'utf-
16le') {
19675 if (arr.length <
2 || val.length <
2) {
19685 function read (buf, i) {
19686 if (indexSize ===
1) {
19689 return buf.readUInt16BE(i * indexSize)
19695 var foundIndex = -
1
19696 for (i = byteOffset; i < arrLength; i++) {
19697 if (read(arr, i) === read(val, foundIndex === -
1 ?
0 : i - foundIndex)) {
19698 if (foundIndex === -
1) foundIndex = i
19699 if (i - foundIndex +
1 === valLength) return foundIndex * indexSize
19701 if (foundIndex !== -
1) i -= i - foundIndex
19706 if (byteOffset + valLength
> arrLength) byteOffset = arrLength - valLength
19707 for (i = byteOffset; i
>=
0; i--) {
19709 for (var j =
0; j < valLength; j++) {
19710 if (read(arr, i + j) !== read(val, j)) {
19715 if (found) return i
19722 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
19723 return this.indexOf(val, byteOffset, encoding) !== -
1
19726 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
19727 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
19730 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
19731 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
19734 function hexWrite (buf, string, offset, length) {
19735 offset = Number(offset) ||
0
19736 var remaining = buf.length - offset
19740 length = Number(length)
19741 if (length
> remaining) {
19746 // must be an even number of digits
19747 var strLen = string.length
19748 if (strLen %
2 !==
0) throw new TypeError('Invalid hex string')
19750 if (length
> strLen /
2) {
19751 length = strLen /
2
19753 for (var i =
0; i < length; ++i) {
19754 var parsed = parseInt(string.substr(i *
2,
2),
16)
19755 if (isNaN(parsed)) return i
19756 buf[offset + i] = parsed
19761 function utf8Write (buf, string, offset, length) {
19762 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
19765 function asciiWrite (buf, string, offset, length) {
19766 return blitBuffer(asciiToBytes(string), buf, offset, length)
19769 function latin1Write (buf, string, offset, length) {
19770 return asciiWrite(buf, string, offset, length)
19773 function base64Write (buf, string, offset, length) {
19774 return blitBuffer(base64ToBytes(string), buf, offset, length)
19777 function ucs2Write (buf, string, offset, length) {
19778 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
19781 Buffer.prototype.write = function write (string, offset, length, encoding) {
19782 // Buffer#write(string)
19783 if (offset === undefined) {
19785 length = this.length
19787 // Buffer#write(string, encoding)
19788 } else if (length === undefined && typeof offset === 'string') {
19790 length = this.length
19792 // Buffer#write(string, offset[, length][, encoding])
19793 } else if (isFinite(offset)) {
19794 offset = offset
>>> 0
19795 if (isFinite(length)) {
19796 length = length
>>> 0
19797 if (encoding === undefined) encoding = 'utf8'
19804 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
19808 var remaining = this.length - offset
19809 if (length === undefined || length
> remaining) length = remaining
19811 if ((string.length
> 0 && (length <
0 || offset <
0)) || offset
> this.length) {
19812 throw new RangeError('Attempt to write outside buffer bounds')
19815 if (!encoding) encoding = 'utf8'
19817 var loweredCase = false
19819 switch (encoding) {
19821 return hexWrite(this, string, offset, length)
19825 return utf8Write(this, string, offset, length)
19828 return asciiWrite(this, string, offset, length)
19832 return latin1Write(this, string, offset, length)
19835 // Warning: maxLength not taken into account in base64Write
19836 return base64Write(this, string, offset, length)
19842 return ucs2Write(this, string, offset, length)
19845 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
19846 encoding = ('' + encoding).toLowerCase()
19852 Buffer.prototype.toJSON = function toJSON () {
19855 data: Array.prototype.slice.call(this._arr || this,
0)
19859 function base64Slice (buf, start, end) {
19860 if (start ===
0 && end === buf.length) {
19861 return base64.fromByteArray(buf)
19863 return base64.fromByteArray(buf.slice(start, end))
19867 function utf8Slice (buf, start, end) {
19868 end = Math.min(buf.length, end)
19873 var firstByte = buf[i]
19874 var codePoint = null
19875 var bytesPerSequence = (firstByte
> 0xEF) ?
4
19876 : (firstByte
> 0xDF) ?
3
19877 : (firstByte
> 0xBF) ?
2
19880 if (i + bytesPerSequence <= end) {
19881 var secondByte, thirdByte, fourthByte, tempCodePoint
19883 switch (bytesPerSequence) {
19885 if (firstByte <
0x80) {
19886 codePoint = firstByte
19890 secondByte = buf[i +
1]
19891 if ((secondByte &
0xC0) ===
0x80) {
19892 tempCodePoint = (firstByte &
0x1F) <<
0x6 | (secondByte &
0x3F)
19893 if (tempCodePoint
> 0x7F) {
19894 codePoint = tempCodePoint
19899 secondByte = buf[i +
1]
19900 thirdByte = buf[i +
2]
19901 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80) {
19902 tempCodePoint = (firstByte &
0xF) <<
0xC | (secondByte &
0x3F) <<
0x6 | (thirdByte &
0x3F)
19903 if (tempCodePoint
> 0x7FF && (tempCodePoint <
0xD800 || tempCodePoint
> 0xDFFF)) {
19904 codePoint = tempCodePoint
19909 secondByte = buf[i +
1]
19910 thirdByte = buf[i +
2]
19911 fourthByte = buf[i +
3]
19912 if ((secondByte &
0xC0) ===
0x80 && (thirdByte &
0xC0) ===
0x80 && (fourthByte &
0xC0) ===
0x80) {
19913 tempCodePoint = (firstByte &
0xF) <<
0x12 | (secondByte &
0x3F) <<
0xC | (thirdByte &
0x3F) <<
0x6 | (fourthByte &
0x3F)
19914 if (tempCodePoint
> 0xFFFF && tempCodePoint <
0x110000) {
19915 codePoint = tempCodePoint
19921 if (codePoint === null) {
19922 // we did not generate a valid codePoint so insert a
19923 // replacement char (U+FFFD) and advance only
1 byte
19925 bytesPerSequence =
1
19926 } else if (codePoint
> 0xFFFF) {
19927 // encode to utf16 (surrogate pair dance)
19928 codePoint -=
0x10000
19929 res.push(codePoint
>>> 10 &
0x3FF |
0xD800)
19930 codePoint =
0xDC00 | codePoint &
0x3FF
19933 res.push(codePoint)
19934 i += bytesPerSequence
19937 return decodeCodePointsArray(res)
19940 // Based on http://stackoverflow.com/a/
22747272/
680742, the browser with
19941 // the lowest limit is Chrome, with
0x10000 args.
19942 // We go
1 magnitude less, for safety
19943 var MAX_ARGUMENTS_LENGTH =
0x1000
19945 function decodeCodePointsArray (codePoints) {
19946 var len = codePoints.length
19947 if (len <= MAX_ARGUMENTS_LENGTH) {
19948 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
19951 // Decode in chunks to avoid
"call stack size exceeded".
19955 res += String.fromCharCode.apply(
19957 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
19963 function asciiSlice (buf, start, end) {
19965 end = Math.min(buf.length, end)
19967 for (var i = start; i < end; ++i) {
19968 ret += String.fromCharCode(buf[i] &
0x7F)
19973 function latin1Slice (buf, start, end) {
19975 end = Math.min(buf.length, end)
19977 for (var i = start; i < end; ++i) {
19978 ret += String.fromCharCode(buf[i])
19983 function hexSlice (buf, start, end) {
19984 var len = buf.length
19986 if (!start || start <
0) start =
0
19987 if (!end || end <
0 || end
> len) end = len
19990 for (var i = start; i < end; ++i) {
19991 out += toHex(buf[i])
19996 function utf16leSlice (buf, start, end) {
19997 var bytes = buf.slice(start, end)
19999 for (var i =
0; i < bytes.length; i +=
2) {
20000 res += String.fromCharCode(bytes[i] + (bytes[i +
1] *
256))
20005 Buffer.prototype.slice = function slice (start, end) {
20006 var len = this.length
20008 end = end === undefined ? len : ~~end
20012 if (start <
0) start =
0
20013 } else if (start
> len) {
20019 if (end <
0) end =
0
20020 } else if (end
> len) {
20024 if (end < start) end = start
20026 var newBuf = this.subarray(start, end)
20027 // Return an augmented `Uint8Array` instance
20028 newBuf.__proto__ = Buffer.prototype
20033 * Need to make sure that buffer isn't trying to write out of bounds.
20035 function checkOffset (offset, ext, length) {
20036 if ((offset %
1) !==
0 || offset <
0) throw new RangeError('offset is not uint')
20037 if (offset + ext
> length) throw new RangeError('Trying to access beyond buffer length')
20040 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
20041 offset = offset
>>> 0
20042 byteLength = byteLength
>>> 0
20043 if (!noAssert) checkOffset(offset, byteLength, this.length)
20045 var val = this[offset]
20048 while (++i < byteLength && (mul *=
0x100)) {
20049 val += this[offset + i] * mul
20055 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
20056 offset = offset
>>> 0
20057 byteLength = byteLength
>>> 0
20059 checkOffset(offset, byteLength, this.length)
20062 var val = this[offset + --byteLength]
20064 while (byteLength
> 0 && (mul *=
0x100)) {
20065 val += this[offset + --byteLength] * mul
20071 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
20072 offset = offset
>>> 0
20073 if (!noAssert) checkOffset(offset,
1, this.length)
20074 return this[offset]
20077 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
20078 offset = offset
>>> 0
20079 if (!noAssert) checkOffset(offset,
2, this.length)
20080 return this[offset] | (this[offset +
1] <<
8)
20083 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
20084 offset = offset
>>> 0
20085 if (!noAssert) checkOffset(offset,
2, this.length)
20086 return (this[offset] <<
8) | this[offset +
1]
20089 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
20090 offset = offset
>>> 0
20091 if (!noAssert) checkOffset(offset,
4, this.length)
20093 return ((this[offset]) |
20094 (this[offset +
1] <<
8) |
20095 (this[offset +
2] <<
16)) +
20096 (this[offset +
3] *
0x1000000)
20099 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
20100 offset = offset
>>> 0
20101 if (!noAssert) checkOffset(offset,
4, this.length)
20103 return (this[offset] *
0x1000000) +
20104 ((this[offset +
1] <<
16) |
20105 (this[offset +
2] <<
8) |
20109 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
20110 offset = offset
>>> 0
20111 byteLength = byteLength
>>> 0
20112 if (!noAssert) checkOffset(offset, byteLength, this.length)
20114 var val = this[offset]
20117 while (++i < byteLength && (mul *=
0x100)) {
20118 val += this[offset + i] * mul
20122 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
20127 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
20128 offset = offset
>>> 0
20129 byteLength = byteLength
>>> 0
20130 if (!noAssert) checkOffset(offset, byteLength, this.length)
20134 var val = this[offset + --i]
20135 while (i
> 0 && (mul *=
0x100)) {
20136 val += this[offset + --i] * mul
20140 if (val
>= mul) val -= Math.pow(
2,
8 * byteLength)
20145 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
20146 offset = offset
>>> 0
20147 if (!noAssert) checkOffset(offset,
1, this.length)
20148 if (!(this[offset] &
0x80)) return (this[offset])
20149 return ((
0xff - this[offset] +
1) * -
1)
20152 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
20153 offset = offset
>>> 0
20154 if (!noAssert) checkOffset(offset,
2, this.length)
20155 var val = this[offset] | (this[offset +
1] <<
8)
20156 return (val &
0x8000) ? val |
0xFFFF0000 : val
20159 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
20160 offset = offset
>>> 0
20161 if (!noAssert) checkOffset(offset,
2, this.length)
20162 var val = this[offset +
1] | (this[offset] <<
8)
20163 return (val &
0x8000) ? val |
0xFFFF0000 : val
20166 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
20167 offset = offset
>>> 0
20168 if (!noAssert) checkOffset(offset,
4, this.length)
20170 return (this[offset]) |
20171 (this[offset +
1] <<
8) |
20172 (this[offset +
2] <<
16) |
20173 (this[offset +
3] <<
24)
20176 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
20177 offset = offset
>>> 0
20178 if (!noAssert) checkOffset(offset,
4, this.length)
20180 return (this[offset] <<
24) |
20181 (this[offset +
1] <<
16) |
20182 (this[offset +
2] <<
8) |
20186 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
20187 offset = offset
>>> 0
20188 if (!noAssert) checkOffset(offset,
4, this.length)
20189 return ieee754.read(this, offset, true,
23,
4)
20192 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
20193 offset = offset
>>> 0
20194 if (!noAssert) checkOffset(offset,
4, this.length)
20195 return ieee754.read(this, offset, false,
23,
4)
20198 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
20199 offset = offset
>>> 0
20200 if (!noAssert) checkOffset(offset,
8, this.length)
20201 return ieee754.read(this, offset, true,
52,
8)
20204 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
20205 offset = offset
>>> 0
20206 if (!noAssert) checkOffset(offset,
8, this.length)
20207 return ieee754.read(this, offset, false,
52,
8)
20210 function checkInt (buf, value, offset, ext, max, min) {
20211 if (!Buffer.isBuffer(buf)) throw new TypeError('
"buffer" argument must be a Buffer instance')
20212 if (value
> max || value < min) throw new RangeError('"value" argument is out of bounds')
20213 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
20216 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
20218 offset = offset
>>> 0
20219 byteLength = byteLength
>>> 0
20221 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
20222 checkInt(this, value, offset, byteLength, maxBytes,
0)
20227 this[offset] = value &
0xFF
20228 while (++i < byteLength && (mul *=
0x100)) {
20229 this[offset + i] = (value / mul) &
0xFF
20232 return offset + byteLength
20235 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
20237 offset = offset
>>> 0
20238 byteLength = byteLength
>>> 0
20240 var maxBytes = Math.pow(
2,
8 * byteLength) -
1
20241 checkInt(this, value, offset, byteLength, maxBytes,
0)
20244 var i = byteLength -
1
20246 this[offset + i] = value &
0xFF
20247 while (--i
>=
0 && (mul *=
0x100)) {
20248 this[offset + i] = (value / mul) &
0xFF
20251 return offset + byteLength
20254 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
20256 offset = offset
>>> 0
20257 if (!noAssert) checkInt(this, value, offset,
1,
0xff,
0)
20258 this[offset] = (value &
0xff)
20262 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
20264 offset = offset
>>> 0
20265 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
20266 this[offset] = (value &
0xff)
20267 this[offset +
1] = (value
>>> 8)
20271 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
20273 offset = offset
>>> 0
20274 if (!noAssert) checkInt(this, value, offset,
2,
0xffff,
0)
20275 this[offset] = (value
>>> 8)
20276 this[offset +
1] = (value &
0xff)
20280 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
20282 offset = offset
>>> 0
20283 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
20284 this[offset +
3] = (value
>>> 24)
20285 this[offset +
2] = (value
>>> 16)
20286 this[offset +
1] = (value
>>> 8)
20287 this[offset] = (value &
0xff)
20291 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
20293 offset = offset
>>> 0
20294 if (!noAssert) checkInt(this, value, offset,
4,
0xffffffff,
0)
20295 this[offset] = (value
>>> 24)
20296 this[offset +
1] = (value
>>> 16)
20297 this[offset +
2] = (value
>>> 8)
20298 this[offset +
3] = (value &
0xff)
20302 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
20304 offset = offset
>>> 0
20306 var limit = Math.pow(
2, (
8 * byteLength) -
1)
20308 checkInt(this, value, offset, byteLength, limit -
1, -limit)
20314 this[offset] = value &
0xFF
20315 while (++i < byteLength && (mul *=
0x100)) {
20316 if (value <
0 && sub ===
0 && this[offset + i -
1] !==
0) {
20319 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
20322 return offset + byteLength
20325 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
20327 offset = offset
>>> 0
20329 var limit = Math.pow(
2, (
8 * byteLength) -
1)
20331 checkInt(this, value, offset, byteLength, limit -
1, -limit)
20334 var i = byteLength -
1
20337 this[offset + i] = value &
0xFF
20338 while (--i
>=
0 && (mul *=
0x100)) {
20339 if (value <
0 && sub ===
0 && this[offset + i +
1] !==
0) {
20342 this[offset + i] = ((value / mul)
>> 0) - sub &
0xFF
20345 return offset + byteLength
20348 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
20350 offset = offset
>>> 0
20351 if (!noAssert) checkInt(this, value, offset,
1,
0x7f, -
0x80)
20352 if (value <
0) value =
0xff + value +
1
20353 this[offset] = (value &
0xff)
20357 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
20359 offset = offset
>>> 0
20360 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
20361 this[offset] = (value &
0xff)
20362 this[offset +
1] = (value
>>> 8)
20366 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
20368 offset = offset
>>> 0
20369 if (!noAssert) checkInt(this, value, offset,
2,
0x7fff, -
0x8000)
20370 this[offset] = (value
>>> 8)
20371 this[offset +
1] = (value &
0xff)
20375 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
20377 offset = offset
>>> 0
20378 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
20379 this[offset] = (value &
0xff)
20380 this[offset +
1] = (value
>>> 8)
20381 this[offset +
2] = (value
>>> 16)
20382 this[offset +
3] = (value
>>> 24)
20386 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
20388 offset = offset
>>> 0
20389 if (!noAssert) checkInt(this, value, offset,
4,
0x7fffffff, -
0x80000000)
20390 if (value <
0) value =
0xffffffff + value +
1
20391 this[offset] = (value
>>> 24)
20392 this[offset +
1] = (value
>>> 16)
20393 this[offset +
2] = (value
>>> 8)
20394 this[offset +
3] = (value &
0xff)
20398 function checkIEEE754 (buf, value, offset, ext, max, min) {
20399 if (offset + ext
> buf.length) throw new RangeError('Index out of range')
20400 if (offset <
0) throw new RangeError('Index out of range')
20403 function writeFloat (buf, value, offset, littleEndian, noAssert) {
20405 offset = offset
>>> 0
20407 checkIEEE754(buf, value, offset,
4,
3.4028234663852886e+38, -
3.4028234663852886e+38)
20409 ieee754.write(buf, value, offset, littleEndian,
23,
4)
20413 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
20414 return writeFloat(this, value, offset, true, noAssert)
20417 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
20418 return writeFloat(this, value, offset, false, noAssert)
20421 function writeDouble (buf, value, offset, littleEndian, noAssert) {
20423 offset = offset
>>> 0
20425 checkIEEE754(buf, value, offset,
8,
1.7976931348623157E+308, -
1.7976931348623157E+308)
20427 ieee754.write(buf, value, offset, littleEndian,
52,
8)
20431 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
20432 return writeDouble(this, value, offset, true, noAssert)
20435 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
20436 return writeDouble(this, value, offset, false, noAssert)
20439 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
20440 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
20441 if (!start) start =
0
20442 if (!end && end !==
0) end = this.length
20443 if (targetStart
>= target.length) targetStart = target.length
20444 if (!targetStart) targetStart =
0
20445 if (end
> 0 && end < start) end = start
20447 // Copy
0 bytes; we're done
20448 if (end === start) return
0
20449 if (target.length ===
0 || this.length ===
0) return
0
20451 // Fatal error conditions
20452 if (targetStart <
0) {
20453 throw new RangeError('targetStart out of bounds')
20455 if (start <
0 || start
>= this.length) throw new RangeError('sourceStart out of bounds')
20456 if (end <
0) throw new RangeError('sourceEnd out of bounds')
20459 if (end
> this.length) end = this.length
20460 if (target.length - targetStart < end - start) {
20461 end = target.length - targetStart + start
20464 var len = end - start
20467 if (this === target && start < targetStart && targetStart < end) {
20468 // descending copy from end
20469 for (i = len -
1; i
>=
0; --i) {
20470 target[i + targetStart] = this[i + start]
20472 } else if (len <
1000) {
20473 // ascending copy from start
20474 for (i =
0; i < len; ++i) {
20475 target[i + targetStart] = this[i + start]
20478 Uint8Array.prototype.set.call(
20480 this.subarray(start, start + len),
20489 // buffer.fill(number[, offset[, end]])
20490 // buffer.fill(buffer[, offset[, end]])
20491 // buffer.fill(string[, offset[, end]][, encoding])
20492 Buffer.prototype.fill = function fill (val, start, end, encoding) {
20493 // Handle string cases:
20494 if (typeof val === 'string') {
20495 if (typeof start === 'string') {
20499 } else if (typeof end === 'string') {
20503 if (val.length ===
1) {
20504 var code = val.charCodeAt(
0)
20509 if (encoding !== undefined && typeof encoding !== 'string') {
20510 throw new TypeError('encoding must be a string')
20512 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
20513 throw new TypeError('Unknown encoding: ' + encoding)
20515 } else if (typeof val === 'number') {
20519 // Invalid ranges are not set to a default, so can range check early.
20520 if (start <
0 || this.length < start || this.length < end) {
20521 throw new RangeError('Out of range index')
20524 if (end <= start) {
20528 start = start
>>> 0
20529 end = end === undefined ? this.length : end
>>> 0
20534 if (typeof val === 'number') {
20535 for (i = start; i < end; ++i) {
20539 var bytes = Buffer.isBuffer(val)
20541 : new Buffer(val, encoding)
20542 var len = bytes.length
20543 for (i =
0; i < end - start; ++i) {
20544 this[i + start] = bytes[i % len]
20551 // HELPER FUNCTIONS
20552 // ================
20554 var INVALID_BASE64_RE = /[^+/
0-
9A-Za-z-_]/g
20556 function base64clean (str) {
20557 // Node strips out invalid characters like \n and \t from the string, base64-js does not
20558 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
20559 // Node converts strings with length <
2 to ''
20560 if (str.length <
2) return ''
20561 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
20562 while (str.length %
4 !==
0) {
20568 function stringtrim (str) {
20569 if (str.trim) return str.trim()
20570 return str.replace(/^\s+|\s+$/g, '')
20573 function toHex (n) {
20574 if (n <
16) return '
0' + n.toString(
16)
20575 return n.toString(
16)
20578 function utf8ToBytes (string, units) {
20579 units = units || Infinity
20581 var length = string.length
20582 var leadSurrogate = null
20585 for (var i =
0; i < length; ++i) {
20586 codePoint = string.charCodeAt(i)
20588 // is surrogate component
20589 if (codePoint
> 0xD7FF && codePoint <
0xE000) {
20590 // last char was a lead
20591 if (!leadSurrogate) {
20593 if (codePoint
> 0xDBFF) {
20594 // unexpected trail
20595 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
20597 } else if (i +
1 === length) {
20599 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
20604 leadSurrogate = codePoint
20609 //
2 leads in a row
20610 if (codePoint <
0xDC00) {
20611 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
20612 leadSurrogate = codePoint
20616 // valid surrogate pair
20617 codePoint = (leadSurrogate -
0xD800 <<
10 | codePoint -
0xDC00) +
0x10000
20618 } else if (leadSurrogate) {
20619 // valid bmp char, but last char was a lead
20620 if ((units -=
3)
> -
1) bytes.push(
0xEF,
0xBF,
0xBD)
20623 leadSurrogate = null
20626 if (codePoint <
0x80) {
20627 if ((units -=
1) <
0) break
20628 bytes.push(codePoint)
20629 } else if (codePoint <
0x800) {
20630 if ((units -=
2) <
0) break
20632 codePoint
>> 0x6 |
0xC0,
20633 codePoint &
0x3F |
0x80
20635 } else if (codePoint <
0x10000) {
20636 if ((units -=
3) <
0) break
20638 codePoint
>> 0xC |
0xE0,
20639 codePoint
>> 0x6 &
0x3F |
0x80,
20640 codePoint &
0x3F |
0x80
20642 } else if (codePoint <
0x110000) {
20643 if ((units -=
4) <
0) break
20645 codePoint
>> 0x12 |
0xF0,
20646 codePoint
>> 0xC &
0x3F |
0x80,
20647 codePoint
>> 0x6 &
0x3F |
0x80,
20648 codePoint &
0x3F |
0x80
20651 throw new Error('Invalid code point')
20658 function asciiToBytes (str) {
20660 for (var i =
0; i < str.length; ++i) {
20661 // Node's code seems to be doing this and not &
0x7F..
20662 byteArray.push(str.charCodeAt(i) &
0xFF)
20667 function utf16leToBytes (str, units) {
20670 for (var i =
0; i < str.length; ++i) {
20671 if ((units -=
2) <
0) break
20673 c = str.charCodeAt(i)
20683 function base64ToBytes (str) {
20684 return base64.toByteArray(base64clean(str))
20687 function blitBuffer (src, dst, offset, length) {
20688 for (var i =
0; i < length; ++i) {
20689 if ((i + offset
>= dst.length) || (i
>= src.length)) break
20690 dst[i + offset] = src[i]
20695 function isnan (val) {
20696 return val !== val // eslint-disable-line no-self-compare
20699 },{"base64-js":
2,"ieee754":
8}],
6:[function(require,module,exports){
20700 (function (Buffer){
20701 // Copyright Joyent, Inc. and other Node contributors.
20703 // Permission is hereby granted, free of charge, to any person obtaining a
20704 // copy of this software and associated documentation files (the
20705 // "Software"), to deal in the Software without restriction, including
20706 // without limitation the rights to use, copy, modify, merge, publish,
20707 // distribute, sublicense, and/or sell copies of the Software, and to permit
20708 // persons to whom the Software is furnished to do so, subject to the
20709 // following conditions:
20711 // The above copyright notice and this permission notice shall be included
20712 // in all copies or substantial portions of the Software.
20714 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20715 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20716 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
20717 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20718 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20719 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20720 // USE OR OTHER DEALINGS IN THE SOFTWARE.
20722 // NOTE: These type checking functions intentionally don't use `instanceof`
20723 // because it is fragile and can be easily faked with `Object.create()`.
20725 function isArray(arg) {
20726 if (Array.isArray) {
20727 return Array.isArray(arg);
20729 return objectToString(arg) === '[object Array]';
20731 exports.isArray = isArray;
20733 function isBoolean(arg) {
20734 return typeof arg === 'boolean';
20736 exports.isBoolean = isBoolean;
20738 function isNull(arg) {
20739 return arg === null;
20741 exports.isNull = isNull;
20743 function isNullOrUndefined(arg) {
20744 return arg == null;
20746 exports.isNullOrUndefined = isNullOrUndefined;
20748 function isNumber(arg) {
20749 return typeof arg === 'number';
20751 exports.isNumber = isNumber;
20753 function isString(arg) {
20754 return typeof arg === 'string';
20756 exports.isString = isString;
20758 function isSymbol(arg) {
20759 return typeof arg === 'symbol';
20761 exports.isSymbol = isSymbol;
20763 function isUndefined(arg) {
20764 return arg === void
0;
20766 exports.isUndefined = isUndefined;
20768 function isRegExp(re) {
20769 return objectToString(re) === '[object RegExp]';
20771 exports.isRegExp = isRegExp;
20773 function isObject(arg) {
20774 return typeof arg === 'object' && arg !== null;
20776 exports.isObject = isObject;
20778 function isDate(d) {
20779 return objectToString(d) === '[object Date]';
20781 exports.isDate = isDate;
20783 function isError(e) {
20784 return (objectToString(e) === '[object Error]' || e instanceof Error);
20786 exports.isError = isError;
20788 function isFunction(arg) {
20789 return typeof arg === 'function';
20791 exports.isFunction = isFunction;
20793 function isPrimitive(arg) {
20794 return arg === null ||
20795 typeof arg === 'boolean' ||
20796 typeof arg === 'number' ||
20797 typeof arg === 'string' ||
20798 typeof arg === 'symbol' || // ES6 symbol
20799 typeof arg === 'undefined';
20801 exports.isPrimitive = isPrimitive;
20803 exports.isBuffer = Buffer.isBuffer;
20805 function objectToString(o) {
20806 return Object.prototype.toString.call(o);
20809 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
20810 },{"../../is-buffer/index.js":
10}],
7:[function(require,module,exports){
20811 // Copyright Joyent, Inc. and other Node contributors.
20813 // Permission is hereby granted, free of charge, to any person obtaining a
20814 // copy of this software and associated documentation files (the
20815 // "Software"), to deal in the Software without restriction, including
20816 // without limitation the rights to use, copy, modify, merge, publish,
20817 // distribute, sublicense, and/or sell copies of the Software, and to permit
20818 // persons to whom the Software is furnished to do so, subject to the
20819 // following conditions:
20821 // The above copyright notice and this permission notice shall be included
20822 // in all copies or substantial portions of the Software.
20824 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20825 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20826 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
20827 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20828 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20829 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20830 // USE OR OTHER DEALINGS IN THE SOFTWARE.
20832 function EventEmitter() {
20833 this._events = this._events || {};
20834 this._maxListeners = this._maxListeners || undefined;
20836 module.exports = EventEmitter;
20838 // Backwards-compat with node
0.10.x
20839 EventEmitter.EventEmitter = EventEmitter;
20841 EventEmitter.prototype._events = undefined;
20842 EventEmitter.prototype._maxListeners = undefined;
20844 // By default EventEmitters will print a warning if more than
10 listeners are
20845 // added to it. This is a useful default which helps finding memory leaks.
20846 EventEmitter.defaultMaxListeners =
10;
20848 // Obviously not all Emitters should be limited to
10. This function allows
20849 // that to be increased. Set to zero for unlimited.
20850 EventEmitter.prototype.setMaxListeners = function(n) {
20851 if (!isNumber(n) || n <
0 || isNaN(n))
20852 throw TypeError('n must be a positive number');
20853 this._maxListeners = n;
20857 EventEmitter.prototype.emit = function(type) {
20858 var er, handler, len, args, i, listeners;
20863 // If there is no 'error' event listener then throw.
20864 if (type === 'error') {
20865 if (!this._events.error ||
20866 (isObject(this._events.error) && !this._events.error.length)) {
20868 if (er instanceof Error) {
20869 throw er; // Unhandled 'error' event
20871 // At least give some kind of context to the user
20872 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
20879 handler = this._events[type];
20881 if (isUndefined(handler))
20884 if (isFunction(handler)) {
20885 switch (arguments.length) {
20888 handler.call(this);
20891 handler.call(this, arguments[
1]);
20894 handler.call(this, arguments[
1], arguments[
2]);
20898 args = Array.prototype.slice.call(arguments,
1);
20899 handler.apply(this, args);
20901 } else if (isObject(handler)) {
20902 args = Array.prototype.slice.call(arguments,
1);
20903 listeners = handler.slice();
20904 len = listeners.length;
20905 for (i =
0; i < len; i++)
20906 listeners[i].apply(this, args);
20912 EventEmitter.prototype.addListener = function(type, listener) {
20915 if (!isFunction(listener))
20916 throw TypeError('listener must be a function');
20921 // To avoid recursion in the case that type === "newListener"! Before
20922 // adding it to the listeners, first emit "newListener".
20923 if (this._events.newListener)
20924 this.emit('newListener', type,
20925 isFunction(listener.listener) ?
20926 listener.listener : listener);
20928 if (!this._events[type])
20929 // Optimize the case of one listener. Don't need the extra array object.
20930 this._events[type] = listener;
20931 else if (isObject(this._events[type]))
20932 // If we've already got an array, just append.
20933 this._events[type].push(listener);
20935 // Adding the second element, need to change to array.
20936 this._events[type] = [this._events[type], listener];
20938 // Check for listener leak
20939 if (isObject(this._events[type]) && !this._events[type].warned) {
20940 if (!isUndefined(this._maxListeners)) {
20941 m = this._maxListeners;
20943 m = EventEmitter.defaultMaxListeners;
20946 if (m && m
> 0 && this._events[type].length
> m) {
20947 this._events[type].warned = true;
20948 console.error('(node) warning: possible EventEmitter memory ' +
20949 'leak detected. %d listeners added. ' +
20950 'Use emitter.setMaxListeners() to increase limit.',
20951 this._events[type].length);
20952 if (typeof console.trace === 'function') {
20953 // not supported in IE
10
20962 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
20964 EventEmitter.prototype.once = function(type, listener) {
20965 if (!isFunction(listener))
20966 throw TypeError('listener must be a function');
20971 this.removeListener(type, g);
20975 listener.apply(this, arguments);
20979 g.listener = listener;
20985 // emits a 'removeListener' event iff the listener was removed
20986 EventEmitter.prototype.removeListener = function(type, listener) {
20987 var list, position, length, i;
20989 if (!isFunction(listener))
20990 throw TypeError('listener must be a function');
20992 if (!this._events || !this._events[type])
20995 list = this._events[type];
20996 length = list.length;
20999 if (list === listener ||
21000 (isFunction(list.listener) && list.listener === listener)) {
21001 delete this._events[type];
21002 if (this._events.removeListener)
21003 this.emit('removeListener', type, listener);
21005 } else if (isObject(list)) {
21006 for (i = length; i--
> 0;) {
21007 if (list[i] === listener ||
21008 (list[i].listener && list[i].listener === listener)) {
21017 if (list.length ===
1) {
21019 delete this._events[type];
21021 list.splice(position,
1);
21024 if (this._events.removeListener)
21025 this.emit('removeListener', type, listener);
21031 EventEmitter.prototype.removeAllListeners = function(type) {
21032 var key, listeners;
21037 // not listening for removeListener, no need to emit
21038 if (!this._events.removeListener) {
21039 if (arguments.length ===
0)
21041 else if (this._events[type])
21042 delete this._events[type];
21046 // emit removeListener for all listeners on all events
21047 if (arguments.length ===
0) {
21048 for (key in this._events) {
21049 if (key === 'removeListener') continue;
21050 this.removeAllListeners(key);
21052 this.removeAllListeners('removeListener');
21057 listeners = this._events[type];
21059 if (isFunction(listeners)) {
21060 this.removeListener(type, listeners);
21061 } else if (listeners) {
21063 while (listeners.length)
21064 this.removeListener(type, listeners[listeners.length -
1]);
21066 delete this._events[type];
21071 EventEmitter.prototype.listeners = function(type) {
21073 if (!this._events || !this._events[type])
21075 else if (isFunction(this._events[type]))
21076 ret = [this._events[type]];
21078 ret = this._events[type].slice();
21082 EventEmitter.prototype.listenerCount = function(type) {
21083 if (this._events) {
21084 var evlistener = this._events[type];
21086 if (isFunction(evlistener))
21088 else if (evlistener)
21089 return evlistener.length;
21094 EventEmitter.listenerCount = function(emitter, type) {
21095 return emitter.listenerCount(type);
21098 function isFunction(arg) {
21099 return typeof arg === 'function';
21102 function isNumber(arg) {
21103 return typeof arg === 'number';
21106 function isObject(arg) {
21107 return typeof arg === 'object' && arg !== null;
21110 function isUndefined(arg) {
21111 return arg === void
0;
21114 },{}],
8:[function(require,module,exports){
21115 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
21117 var eLen = nBytes *
8 - mLen -
1
21118 var eMax = (
1 << eLen) -
1
21119 var eBias = eMax
>> 1
21121 var i = isLE ? (nBytes -
1) :
0
21122 var d = isLE ? -
1 :
1
21123 var s = buffer[offset + i]
21127 e = s & ((
1 << (-nBits)) -
1)
21130 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8) {}
21132 m = e & ((
1 << (-nBits)) -
1)
21135 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8) {}
21139 } else if (e === eMax) {
21140 return m ? NaN : ((s ? -
1 :
1) * Infinity)
21142 m = m + Math.pow(
2, mLen)
21145 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen)
21148 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
21150 var eLen = nBytes *
8 - mLen -
1
21151 var eMax = (
1 << eLen) -
1
21152 var eBias = eMax
>> 1
21153 var rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0)
21154 var i = isLE ?
0 : (nBytes -
1)
21155 var d = isLE ?
1 : -
1
21156 var s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0
21158 value = Math.abs(value)
21160 if (isNaN(value) || value === Infinity) {
21161 m = isNaN(value) ?
1 :
0
21164 e = Math.floor(Math.log(value) / Math.LN2)
21165 if (value * (c = Math.pow(
2, -e)) <
1) {
21169 if (e + eBias
>=
1) {
21172 value += rt * Math.pow(
2,
1 - eBias)
21174 if (value * c
>=
2) {
21179 if (e + eBias
>= eMax) {
21182 } else if (e + eBias
>=
1) {
21183 m = (value * c -
1) * Math.pow(
2, mLen)
21186 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen)
21191 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8) {}
21193 e = (e << mLen) | m
21195 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8) {}
21197 buffer[offset + i - d] |= s *
128
21200 },{}],
9:[function(require,module,exports){
21201 if (typeof Object.create === 'function') {
21202 // implementation from standard node.js 'util' module
21203 module.exports = function inherits(ctor, superCtor) {
21204 ctor.super_ = superCtor
21205 ctor.prototype = Object.create(superCtor.prototype, {
21215 // old school shim for old browsers
21216 module.exports = function inherits(ctor, superCtor) {
21217 ctor.super_ = superCtor
21218 var TempCtor = function () {}
21219 TempCtor.prototype = superCtor.prototype
21220 ctor.prototype = new TempCtor()
21221 ctor.prototype.constructor = ctor
21225 },{}],
10:[function(require,module,exports){
21227 * Determine if an object is a Buffer
21229 * @author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
21233 // The _isBuffer check is for Safari
5-
7 support, because it's missing
21234 // Object.prototype.constructor. Remove this eventually
21235 module.exports = function (obj) {
21236 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
21239 function isBuffer (obj) {
21240 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
21243 // For Node v0.10 support. Remove this eventually.
21244 function isSlowBuffer (obj) {
21245 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(
0,
0))
21248 },{}],
11:[function(require,module,exports){
21249 var toString = {}.toString;
21251 module.exports = Array.isArray || function (arr) {
21252 return toString.call(arr) == '[object Array]';
21255 },{}],
12:[function(require,module,exports){
21256 (function (process){
21259 if (!process.version ||
21260 process.version.indexOf('v0.') ===
0 ||
21261 process.version.indexOf('v1.') ===
0 && process.version.indexOf('v1.8.') !==
0) {
21262 module.exports = nextTick;
21264 module.exports = process.nextTick;
21267 function nextTick(fn, arg1, arg2, arg3) {
21268 if (typeof fn !== 'function') {
21269 throw new TypeError('"callback" argument must be a function');
21271 var len = arguments.length;
21276 return process.nextTick(fn);
21278 return process.nextTick(function afterTickOne() {
21279 fn.call(null, arg1);
21282 return process.nextTick(function afterTickTwo() {
21283 fn.call(null, arg1, arg2);
21286 return process.nextTick(function afterTickThree() {
21287 fn.call(null, arg1, arg2, arg3);
21290 args = new Array(len -
1);
21292 while (i < args.length) {
21293 args[i++] = arguments[i];
21295 return process.nextTick(function afterTick() {
21296 fn.apply(null, args);
21301 }).call(this,require('_process'))
21302 },{"_process":
13}],
13:[function(require,module,exports){
21303 // shim for using process in browser
21304 var process = module.exports = {};
21306 // cached from whatever global is present so that test runners that stub it
21307 // don't break things. But we need to wrap it in a try catch in case it is
21308 // wrapped in strict mode code which doesn't define any globals. It's inside a
21309 // function because try/catches deoptimize in certain engines.
21311 var cachedSetTimeout;
21312 var cachedClearTimeout;
21314 function defaultSetTimout() {
21315 throw new Error('setTimeout has not been defined');
21317 function defaultClearTimeout () {
21318 throw new Error('clearTimeout has not been defined');
21322 if (typeof setTimeout === 'function') {
21323 cachedSetTimeout = setTimeout;
21325 cachedSetTimeout = defaultSetTimout;
21328 cachedSetTimeout = defaultSetTimout;
21331 if (typeof clearTimeout === 'function') {
21332 cachedClearTimeout = clearTimeout;
21334 cachedClearTimeout = defaultClearTimeout;
21337 cachedClearTimeout = defaultClearTimeout;
21340 function runTimeout(fun) {
21341 if (cachedSetTimeout === setTimeout) {
21342 //normal enviroments in sane situations
21343 return setTimeout(fun,
0);
21345 // if setTimeout wasn't available but was latter defined
21346 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
21347 cachedSetTimeout = setTimeout;
21348 return setTimeout(fun,
0);
21351 // when when somebody has screwed with setTimeout but no I.E. maddness
21352 return cachedSetTimeout(fun,
0);
21355 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
21356 return cachedSetTimeout.call(null, fun,
0);
21358 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
21359 return cachedSetTimeout.call(this, fun,
0);
21365 function runClearTimeout(marker) {
21366 if (cachedClearTimeout === clearTimeout) {
21367 //normal enviroments in sane situations
21368 return clearTimeout(marker);
21370 // if clearTimeout wasn't available but was latter defined
21371 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
21372 cachedClearTimeout = clearTimeout;
21373 return clearTimeout(marker);
21376 // when when somebody has screwed with setTimeout but no I.E. maddness
21377 return cachedClearTimeout(marker);
21380 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
21381 return cachedClearTimeout.call(null, marker);
21383 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
21384 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
21385 return cachedClearTimeout.call(this, marker);
21393 var draining = false;
21395 var queueIndex = -
1;
21397 function cleanUpNextTick() {
21398 if (!draining || !currentQueue) {
21402 if (currentQueue.length) {
21403 queue = currentQueue.concat(queue);
21407 if (queue.length) {
21412 function drainQueue() {
21416 var timeout = runTimeout(cleanUpNextTick);
21419 var len = queue.length;
21421 currentQueue = queue;
21423 while (++queueIndex < len) {
21424 if (currentQueue) {
21425 currentQueue[queueIndex].run();
21429 len = queue.length;
21431 currentQueue = null;
21433 runClearTimeout(timeout);
21436 process.nextTick = function (fun) {
21437 var args = new Array(arguments.length -
1);
21438 if (arguments.length
> 1) {
21439 for (var i =
1; i < arguments.length; i++) {
21440 args[i -
1] = arguments[i];
21443 queue.push(new Item(fun, args));
21444 if (queue.length ===
1 && !draining) {
21445 runTimeout(drainQueue);
21449 // v8 likes predictible objects
21450 function Item(fun, array) {
21452 this.array = array;
21454 Item.prototype.run = function () {
21455 this.fun.apply(null, this.array);
21457 process.title = 'browser';
21458 process.browser = true;
21461 process.version = ''; // empty string to avoid regexp issues
21462 process.versions = {};
21467 process.addListener = noop;
21468 process.once = noop;
21469 process.off = noop;
21470 process.removeListener = noop;
21471 process.removeAllListeners = noop;
21472 process.emit = noop;
21474 process.binding = function (name) {
21475 throw new Error('process.binding is not supported');
21478 process.cwd = function () { return '/' };
21479 process.chdir = function (dir) {
21480 throw new Error('process.chdir is not supported');
21482 process.umask = function() { return
0; };
21484 },{}],
14:[function(require,module,exports){
21485 module.exports = require(
"./lib/_stream_duplex.js")
21487 },{
"./lib/_stream_duplex.js":
15}],
15:[function(require,module,exports){
21488 // a duplex stream is just a stream that is both readable and writable.
21489 // Since JS doesn't have multiple prototypal inheritance, this class
21490 // prototypally inherits from Readable, and then parasitically from
21497 var objectKeys = Object.keys || function (obj) {
21499 for (var key in obj) {
21505 module.exports = Duplex;
21508 var processNextTick = require('process-nextick-args');
21512 var util = require('core-util-is');
21513 util.inherits = require('inherits');
21516 var Readable = require('./_stream_readable');
21517 var Writable = require('./_stream_writable');
21519 util.inherits(Duplex, Readable);
21521 var keys = objectKeys(Writable.prototype);
21522 for (var v =
0; v < keys.length; v++) {
21523 var method = keys[v];
21524 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
21527 function Duplex(options) {
21528 if (!(this instanceof Duplex)) return new Duplex(options);
21530 Readable.call(this, options);
21531 Writable.call(this, options);
21533 if (options && options.readable === false) this.readable = false;
21535 if (options && options.writable === false) this.writable = false;
21537 this.allowHalfOpen = true;
21538 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
21540 this.once('end', onend);
21543 // the no-half-open enforcer
21545 // if we allow half-open state, or if the writable side ended,
21547 if (this.allowHalfOpen || this._writableState.ended) return;
21549 // no more data can be written.
21550 // But allow more writes to happen in this tick.
21551 processNextTick(onEndNT, this);
21554 function onEndNT(self) {
21558 function forEach(xs, f) {
21559 for (var i =
0, l = xs.length; i < l; i++) {
21563 },{"./_stream_readable":
17,"./_stream_writable":
19,"core-util-is":
6,"inherits":
9,"process-nextick-args":
12}],
16:[function(require,module,exports){
21564 // a passthrough stream.
21565 // basically just the most minimal sort of Transform stream.
21566 // Every written chunk gets output as-is.
21570 module.exports = PassThrough;
21572 var Transform = require('./_stream_transform');
21575 var util = require('core-util-is');
21576 util.inherits = require('inherits');
21579 util.inherits(PassThrough, Transform);
21581 function PassThrough(options) {
21582 if (!(this instanceof PassThrough)) return new PassThrough(options);
21584 Transform.call(this, options);
21587 PassThrough.prototype._transform = function (chunk, encoding, cb) {
21590 },{"./_stream_transform":
18,"core-util-is":
6,"inherits":
9}],
17:[function(require,module,exports){
21591 (function (process){
21594 module.exports = Readable;
21597 var processNextTick = require('process-nextick-args');
21601 var isArray = require('isarray');
21608 Readable.ReadableState = ReadableState;
21611 var EE = require('events').EventEmitter;
21613 var EElistenerCount = function (emitter, type) {
21614 return emitter.listeners(type).length;
21622 Stream = require('st' + 'ream');
21623 } catch (_) {} finally {
21624 if (!Stream) Stream = require('events').EventEmitter;
21629 var Buffer = require('buffer').Buffer;
21631 var bufferShim = require('buffer-shims');
21635 var util = require('core-util-is');
21636 util.inherits = require('inherits');
21640 var debugUtil = require('util');
21641 var debug = void
0;
21642 if (debugUtil && debugUtil.debuglog) {
21643 debug = debugUtil.debuglog('stream');
21645 debug = function () {};
21649 var BufferList = require('./internal/streams/BufferList');
21652 util.inherits(Readable, Stream);
21654 function prependListener(emitter, event, fn) {
21655 // Sadly this is not cacheable as some libraries bundle their own
21656 // event emitter implementation with them.
21657 if (typeof emitter.prependListener === 'function') {
21658 return emitter.prependListener(event, fn);
21660 // This is a hack to make sure that our error handler is attached before any
21661 // userland ones. NEVER DO THIS. This is here only because this code needs
21662 // to continue to work with older versions of Node.js that do not include
21663 // the prependListener() method. The goal is to eventually remove this hack.
21664 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
21668 function ReadableState(options, stream) {
21669 Duplex = Duplex || require('./_stream_duplex');
21671 options = options || {};
21673 // object stream flag. Used to make read(n) ignore n and to
21674 // make all the buffer merging and length checks go away
21675 this.objectMode = !!options.objectMode;
21677 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
21679 // the point at which it stops calling _read() to fill the buffer
21680 // Note:
0 is a valid value, means "don't call _read preemptively ever"
21681 var hwm = options.highWaterMark;
21682 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
21683 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
21686 this.highWaterMark = ~ ~this.highWaterMark;
21688 // A linked list is used to store data chunks instead of an array because the
21689 // linked list can remove elements from the beginning faster than
21691 this.buffer = new BufferList();
21694 this.pipesCount =
0;
21695 this.flowing = null;
21696 this.ended = false;
21697 this.endEmitted = false;
21698 this.reading = false;
21700 // a flag to be able to tell if the onwrite cb is called immediately,
21701 // or on a later tick. We set this to true at first, because any
21702 // actions that shouldn't happen until "later" should generally also
21703 // not happen before the first write call.
21706 // whenever we return null, then we set a flag to say
21707 // that we're awaiting a 'readable' event emission.
21708 this.needReadable = false;
21709 this.emittedReadable = false;
21710 this.readableListening = false;
21711 this.resumeScheduled = false;
21713 // Crypto is kind of old and crusty. Historically, its default string
21714 // encoding is 'binary' so we have to make this configurable.
21715 // Everything else in the universe uses 'utf8', though.
21716 this.defaultEncoding = options.defaultEncoding || 'utf8';
21718 // when piping, we only care about 'readable' events that happen
21719 // after read()ing all the bytes and not getting any pushback.
21720 this.ranOut = false;
21722 // the number of writers that are awaiting a drain event in .pipe()s
21723 this.awaitDrain =
0;
21725 // if true, a maybeReadMore has been scheduled
21726 this.readingMore = false;
21728 this.decoder = null;
21729 this.encoding = null;
21730 if (options.encoding) {
21731 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
21732 this.decoder = new StringDecoder(options.encoding);
21733 this.encoding = options.encoding;
21737 function Readable(options) {
21738 Duplex = Duplex || require('./_stream_duplex');
21740 if (!(this instanceof Readable)) return new Readable(options);
21742 this._readableState = new ReadableState(options, this);
21745 this.readable = true;
21747 if (options && typeof options.read === 'function') this._read = options.read;
21752 // Manually shove something into the read() buffer.
21753 // This returns true if the highWaterMark has not been hit yet,
21754 // similar to how Writable.write() returns true if you should
21755 // write() some more.
21756 Readable.prototype.push = function (chunk, encoding) {
21757 var state = this._readableState;
21759 if (!state.objectMode && typeof chunk === 'string') {
21760 encoding = encoding || state.defaultEncoding;
21761 if (encoding !== state.encoding) {
21762 chunk = bufferShim.from(chunk, encoding);
21767 return readableAddChunk(this, state, chunk, encoding, false);
21770 // Unshift should *always* be something directly out of read()
21771 Readable.prototype.unshift = function (chunk) {
21772 var state = this._readableState;
21773 return readableAddChunk(this, state, chunk, '', true);
21776 Readable.prototype.isPaused = function () {
21777 return this._readableState.flowing === false;
21780 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
21781 var er = chunkInvalid(state, chunk);
21783 stream.emit('error', er);
21784 } else if (chunk === null) {
21785 state.reading = false;
21786 onEofChunk(stream, state);
21787 } else if (state.objectMode || chunk && chunk.length
> 0) {
21788 if (state.ended && !addToFront) {
21789 var e = new Error('stream.push() after EOF');
21790 stream.emit('error', e);
21791 } else if (state.endEmitted && addToFront) {
21792 var _e = new Error('stream.unshift() after end event');
21793 stream.emit('error', _e);
21796 if (state.decoder && !addToFront && !encoding) {
21797 chunk = state.decoder.write(chunk);
21798 skipAdd = !state.objectMode && chunk.length ===
0;
21801 if (!addToFront) state.reading = false;
21803 // Don't add to the buffer if we've decoded to an empty string chunk and
21804 // we're not in object mode
21806 // if we want the data now, just emit it.
21807 if (state.flowing && state.length ===
0 && !state.sync) {
21808 stream.emit('data', chunk);
21811 // update the buffer info.
21812 state.length += state.objectMode ?
1 : chunk.length;
21813 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
21815 if (state.needReadable) emitReadable(stream);
21819 maybeReadMore(stream, state);
21821 } else if (!addToFront) {
21822 state.reading = false;
21825 return needMoreData(state);
21828 // if it's past the high water mark, we can push in some more.
21829 // Also, if we have no data yet, we can stand some
21830 // more bytes. This is to work around cases where hwm=
0,
21831 // such as the repl. Also, if the push() triggered a
21832 // readable event, and the user called read(largeNumber) such that
21833 // needReadable was set, then we ought to push more, so that another
21834 // 'readable' event will be triggered.
21835 function needMoreData(state) {
21836 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length ===
0);
21839 // backwards compatibility.
21840 Readable.prototype.setEncoding = function (enc) {
21841 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
21842 this._readableState.decoder = new StringDecoder(enc);
21843 this._readableState.encoding = enc;
21847 // Don't raise the hwm
> 8MB
21848 var MAX_HWM =
0x800000;
21849 function computeNewHighWaterMark(n) {
21850 if (n
>= MAX_HWM) {
21853 // Get the next highest power of
2 to prevent increasing hwm excessively in
21866 // This function is designed to be inlinable, so please take care when making
21867 // changes to the function body.
21868 function howMuchToRead(n, state) {
21869 if (n <=
0 || state.length ===
0 && state.ended) return
0;
21870 if (state.objectMode) return
1;
21872 // Only flow one buffer at a time
21873 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
21875 // If we're asking for more than the current hwm, then raise the hwm.
21876 if (n
> state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
21877 if (n <= state.length) return n;
21878 // Don't have enough
21879 if (!state.ended) {
21880 state.needReadable = true;
21883 return state.length;
21886 // you can override either this method, or the async _read(n) below.
21887 Readable.prototype.read = function (n) {
21889 n = parseInt(n,
10);
21890 var state = this._readableState;
21893 if (n !==
0) state.emittedReadable = false;
21895 // if we're doing read(
0) to trigger a readable event, but we
21896 // already have a bunch of data in the buffer, then just trigger
21897 // the 'readable' event and move on.
21898 if (n ===
0 && state.needReadable && (state.length
>= state.highWaterMark || state.ended)) {
21899 debug('read: emitReadable', state.length, state.ended);
21900 if (state.length ===
0 && state.ended) endReadable(this);else emitReadable(this);
21904 n = howMuchToRead(n, state);
21906 // if we've ended, and we're now clear, then finish it up.
21907 if (n ===
0 && state.ended) {
21908 if (state.length ===
0) endReadable(this);
21912 // All the actual chunk generation logic needs to be
21913 // *below* the call to _read. The reason is that in certain
21914 // synthetic stream cases, such as passthrough streams, _read
21915 // may be a completely synchronous operation which may change
21916 // the state of the read buffer, providing enough data when
21917 // before there was *not* enough.
21919 // So, the steps are:
21920 //
1. Figure out what the state of things will be after we do
21921 // a read from the buffer.
21923 //
2. If that resulting state will trigger a _read, then call _read.
21924 // Note that this may be asynchronous, or synchronous. Yes, it is
21925 // deeply ugly to write APIs this way, but that still doesn't mean
21926 // that the Readable class should behave improperly, as streams are
21927 // designed to be sync/async agnostic.
21928 // Take note if the _read call is sync or async (ie, if the read call
21929 // has returned yet), so that we know whether or not it's safe to emit
21932 //
3. Actually pull the requested chunks out of the buffer and return.
21934 // if we need a readable event, then we need to do some reading.
21935 var doRead = state.needReadable;
21936 debug('need readable', doRead);
21938 // if we currently have less than the highWaterMark, then also read some
21939 if (state.length ===
0 || state.length - n < state.highWaterMark) {
21941 debug('length less than watermark', doRead);
21944 // however, if we've ended, then there's no point, and if we're already
21945 // reading, then it's unnecessary.
21946 if (state.ended || state.reading) {
21948 debug('reading or ended', doRead);
21949 } else if (doRead) {
21951 state.reading = true;
21953 // if the length is currently zero, then we *need* a readable event.
21954 if (state.length ===
0) state.needReadable = true;
21955 // call internal read method
21956 this._read(state.highWaterMark);
21957 state.sync = false;
21958 // If _read pushed data synchronously, then `reading` will be false,
21959 // and we need to re-evaluate how much data we can return to the user.
21960 if (!state.reading) n = howMuchToRead(nOrig, state);
21964 if (n
> 0) ret = fromList(n, state);else ret = null;
21966 if (ret === null) {
21967 state.needReadable = true;
21973 if (state.length ===
0) {
21974 // If we have nothing in the buffer, then we want to know
21975 // as soon as we *do* get something into the buffer.
21976 if (!state.ended) state.needReadable = true;
21978 // If we tried to read() past the EOF, then emit end on the next tick.
21979 if (nOrig !== n && state.ended) endReadable(this);
21982 if (ret !== null) this.emit('data', ret);
21987 function chunkInvalid(state, chunk) {
21989 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
21990 er = new TypeError('Invalid non-string/buffer chunk');
21995 function onEofChunk(stream, state) {
21996 if (state.ended) return;
21997 if (state.decoder) {
21998 var chunk = state.decoder.end();
21999 if (chunk && chunk.length) {
22000 state.buffer.push(chunk);
22001 state.length += state.objectMode ?
1 : chunk.length;
22004 state.ended = true;
22006 // emit 'readable' now to make sure it gets picked up.
22007 emitReadable(stream);
22010 // Don't emit readable right away in sync mode, because this can trigger
22011 // another read() call =
> stack overflow. This way, it might trigger
22012 // a nextTick recursion warning, but that's not so bad.
22013 function emitReadable(stream) {
22014 var state = stream._readableState;
22015 state.needReadable = false;
22016 if (!state.emittedReadable) {
22017 debug('emitReadable', state.flowing);
22018 state.emittedReadable = true;
22019 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
22023 function emitReadable_(stream) {
22024 debug('emit readable');
22025 stream.emit('readable');
22029 // at this point, the user has presumably seen the 'readable' event,
22030 // and called read() to consume some data. that may have triggered
22031 // in turn another _read(n) call, in which case reading = true if
22032 // it's in progress.
22033 // However, if we're not ended, or reading, and the length < hwm,
22034 // then go ahead and try to read some more preemptively.
22035 function maybeReadMore(stream, state) {
22036 if (!state.readingMore) {
22037 state.readingMore = true;
22038 processNextTick(maybeReadMore_, stream, state);
22042 function maybeReadMore_(stream, state) {
22043 var len = state.length;
22044 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
22045 debug('maybeReadMore read
0');
22047 if (len === state.length)
22048 // didn't get any data, stop spinning.
22049 break;else len = state.length;
22051 state.readingMore = false;
22054 // abstract method. to be overridden in specific implementation classes.
22055 // call cb(er, data) where data is <= n in length.
22056 // for virtual (non-string, non-buffer) streams, "length" is somewhat
22057 // arbitrary, and perhaps not very meaningful.
22058 Readable.prototype._read = function (n) {
22059 this.emit('error', new Error('_read() is not implemented'));
22062 Readable.prototype.pipe = function (dest, pipeOpts) {
22064 var state = this._readableState;
22066 switch (state.pipesCount) {
22068 state.pipes = dest;
22071 state.pipes = [state.pipes, dest];
22074 state.pipes.push(dest);
22077 state.pipesCount +=
1;
22078 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
22080 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
22082 var endFn = doEnd ? onend : cleanup;
22083 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
22085 dest.on('unpipe', onunpipe);
22086 function onunpipe(readable) {
22088 if (readable === src) {
22098 // when the dest drains, it reduces the awaitDrain counter
22099 // on the source. This would be more elegant with a .once()
22100 // handler in flow(), but adding and removing repeatedly is
22102 var ondrain = pipeOnDrain(src);
22103 dest.on('drain', ondrain);
22105 var cleanedUp = false;
22106 function cleanup() {
22108 // cleanup event handlers once the pipe is broken
22109 dest.removeListener('close', onclose);
22110 dest.removeListener('finish', onfinish);
22111 dest.removeListener('drain', ondrain);
22112 dest.removeListener('error', onerror);
22113 dest.removeListener('unpipe', onunpipe);
22114 src.removeListener('end', onend);
22115 src.removeListener('end', cleanup);
22116 src.removeListener('data', ondata);
22120 // if the reader is waiting for a drain event from this
22121 // specific writer, then it would cause it to never start
22123 // So, if this is awaiting a drain, then we just call it now.
22124 // If we don't know, then assume that we are waiting for one.
22125 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
22128 // If the user pushes more data while we're writing to dest then we'll end up
22129 // in ondata again. However, we only want to increase awaitDrain once because
22130 // dest will only emit one 'drain' event for the multiple writes.
22131 // =
> Introduce a guard on increasing awaitDrain.
22132 var increasedAwaitDrain = false;
22133 src.on('data', ondata);
22134 function ondata(chunk) {
22136 increasedAwaitDrain = false;
22137 var ret = dest.write(chunk);
22138 if (false === ret && !increasedAwaitDrain) {
22139 // If the user unpiped during `dest.write()`, it is possible
22140 // to get stuck in a permanently paused state if that write
22141 // also returned false.
22142 // =
> Check whether `dest` is still a piping destination.
22143 if ((state.pipesCount ===
1 && state.pipes === dest || state.pipesCount
> 1 && indexOf(state.pipes, dest) !== -
1) && !cleanedUp) {
22144 debug('false write response, pause', src._readableState.awaitDrain);
22145 src._readableState.awaitDrain++;
22146 increasedAwaitDrain = true;
22152 // if the dest has an error, then stop piping into it.
22153 // however, don't suppress the throwing behavior for this.
22154 function onerror(er) {
22155 debug('onerror', er);
22157 dest.removeListener('error', onerror);
22158 if (EElistenerCount(dest, 'error') ===
0) dest.emit('error', er);
22161 // Make sure our error handler is attached before userland ones.
22162 prependListener(dest, 'error', onerror);
22164 // Both close and finish should trigger unpipe, but only once.
22165 function onclose() {
22166 dest.removeListener('finish', onfinish);
22169 dest.once('close', onclose);
22170 function onfinish() {
22172 dest.removeListener('close', onclose);
22175 dest.once('finish', onfinish);
22177 function unpipe() {
22182 // tell the dest that it's being piped to
22183 dest.emit('pipe', src);
22185 // start the flow if it hasn't been started already.
22186 if (!state.flowing) {
22187 debug('pipe resume');
22194 function pipeOnDrain(src) {
22195 return function () {
22196 var state = src._readableState;
22197 debug('pipeOnDrain', state.awaitDrain);
22198 if (state.awaitDrain) state.awaitDrain--;
22199 if (state.awaitDrain ===
0 && EElistenerCount(src, 'data')) {
22200 state.flowing = true;
22206 Readable.prototype.unpipe = function (dest) {
22207 var state = this._readableState;
22209 // if we're not piping anywhere, then do nothing.
22210 if (state.pipesCount ===
0) return this;
22212 // just one destination. most common case.
22213 if (state.pipesCount ===
1) {
22214 // passed in one, but it's not the right one.
22215 if (dest && dest !== state.pipes) return this;
22217 if (!dest) dest = state.pipes;
22220 state.pipes = null;
22221 state.pipesCount =
0;
22222 state.flowing = false;
22223 if (dest) dest.emit('unpipe', this);
22227 // slow case. multiple pipe destinations.
22231 var dests = state.pipes;
22232 var len = state.pipesCount;
22233 state.pipes = null;
22234 state.pipesCount =
0;
22235 state.flowing = false;
22237 for (var i =
0; i < len; i++) {
22238 dests[i].emit('unpipe', this);
22242 // try to find the right one.
22243 var index = indexOf(state.pipes, dest);
22244 if (index === -
1) return this;
22246 state.pipes.splice(index,
1);
22247 state.pipesCount -=
1;
22248 if (state.pipesCount ===
1) state.pipes = state.pipes[
0];
22250 dest.emit('unpipe', this);
22255 // set up data events if they are asked for
22256 // Ensure readable listeners eventually get something
22257 Readable.prototype.on = function (ev, fn) {
22258 var res = Stream.prototype.on.call(this, ev, fn);
22260 if (ev === 'data') {
22261 // Start flowing on next tick if stream isn't explicitly paused
22262 if (this._readableState.flowing !== false) this.resume();
22263 } else if (ev === 'readable') {
22264 var state = this._readableState;
22265 if (!state.endEmitted && !state.readableListening) {
22266 state.readableListening = state.needReadable = true;
22267 state.emittedReadable = false;
22268 if (!state.reading) {
22269 processNextTick(nReadingNextTick, this);
22270 } else if (state.length) {
22271 emitReadable(this, state);
22278 Readable.prototype.addListener = Readable.prototype.on;
22280 function nReadingNextTick(self) {
22281 debug('readable nexttick read
0');
22285 // pause() and resume() are remnants of the legacy readable stream API
22286 // If the user uses them, then switch into old mode.
22287 Readable.prototype.resume = function () {
22288 var state = this._readableState;
22289 if (!state.flowing) {
22291 state.flowing = true;
22292 resume(this, state);
22297 function resume(stream, state) {
22298 if (!state.resumeScheduled) {
22299 state.resumeScheduled = true;
22300 processNextTick(resume_, stream, state);
22304 function resume_(stream, state) {
22305 if (!state.reading) {
22306 debug('resume read
0');
22310 state.resumeScheduled = false;
22311 state.awaitDrain =
0;
22312 stream.emit('resume');
22314 if (state.flowing && !state.reading) stream.read(
0);
22317 Readable.prototype.pause = function () {
22318 debug('call pause flowing=%j', this._readableState.flowing);
22319 if (false !== this._readableState.flowing) {
22321 this._readableState.flowing = false;
22322 this.emit('pause');
22327 function flow(stream) {
22328 var state = stream._readableState;
22329 debug('flow', state.flowing);
22330 while (state.flowing && stream.read() !== null) {}
22333 // wrap an old-style stream as the async data source.
22334 // This is *not* part of the readable stream interface.
22335 // It is an ugly unfortunate mess of history.
22336 Readable.prototype.wrap = function (stream) {
22337 var state = this._readableState;
22338 var paused = false;
22341 stream.on('end', function () {
22342 debug('wrapped end');
22343 if (state.decoder && !state.ended) {
22344 var chunk = state.decoder.end();
22345 if (chunk && chunk.length) self.push(chunk);
22351 stream.on('data', function (chunk) {
22352 debug('wrapped data');
22353 if (state.decoder) chunk = state.decoder.write(chunk);
22355 // don't skip over falsy values in objectMode
22356 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
22358 var ret = self.push(chunk);
22365 // proxy all the other methods.
22366 // important when wrapping filters and duplexes.
22367 for (var i in stream) {
22368 if (this[i] === undefined && typeof stream[i] === 'function') {
22369 this[i] = function (method) {
22370 return function () {
22371 return stream[method].apply(stream, arguments);
22377 // proxy certain important events.
22378 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
22379 forEach(events, function (ev) {
22380 stream.on(ev, self.emit.bind(self, ev));
22383 // when we try to consume some more bytes, simply unpause the
22384 // underlying stream.
22385 self._read = function (n) {
22386 debug('wrapped _read', n);
22396 // exposed for testing purposes only.
22397 Readable._fromList = fromList;
22399 // Pluck off n bytes from an array of buffers.
22400 // Length is the combined lengths of all the buffers in the list.
22401 // This function is designed to be inlinable, so please take care when making
22402 // changes to the function body.
22403 function fromList(n, state) {
22404 // nothing buffered
22405 if (state.length ===
0) return null;
22408 if (state.objectMode) ret = state.buffer.shift();else if (!n || n
>= state.length) {
22409 // read it all, truncate the list
22410 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length ===
1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
22411 state.buffer.clear();
22413 // read part of list
22414 ret = fromListPartial(n, state.buffer, state.decoder);
22420 // Extracts only enough buffered data to satisfy the amount requested.
22421 // This function is designed to be inlinable, so please take care when making
22422 // changes to the function body.
22423 function fromListPartial(n, list, hasStrings) {
22425 if (n < list.head.data.length) {
22426 // slice is the same for buffers and strings
22427 ret = list.head.data.slice(
0, n);
22428 list.head.data = list.head.data.slice(n);
22429 } else if (n === list.head.data.length) {
22430 // first chunk is a perfect match
22431 ret = list.shift();
22433 // result spans more than one buffer
22434 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
22439 // Copies a specified amount of characters from the list of buffered data
22441 // This function is designed to be inlinable, so please take care when making
22442 // changes to the function body.
22443 function copyFromBufferString(n, list) {
22448 while (p = p.next) {
22450 var nb = n
> str.length ? str.length : n;
22451 if (nb === str.length) ret += str;else ret += str.slice(
0, n);
22454 if (nb === str.length) {
22456 if (p.next) list.head = p.next;else list.head = list.tail = null;
22459 p.data = str.slice(nb);
22469 // Copies a specified amount of bytes from the list of buffered data chunks.
22470 // This function is designed to be inlinable, so please take care when making
22471 // changes to the function body.
22472 function copyFromBuffer(n, list) {
22473 var ret = bufferShim.allocUnsafe(n);
22477 n -= p.data.length;
22478 while (p = p.next) {
22480 var nb = n
> buf.length ? buf.length : n;
22481 buf.copy(ret, ret.length - n,
0, nb);
22484 if (nb === buf.length) {
22486 if (p.next) list.head = p.next;else list.head = list.tail = null;
22489 p.data = buf.slice(nb);
22499 function endReadable(stream) {
22500 var state = stream._readableState;
22502 // If we get here before consuming all the bytes, then that is a
22503 // bug in node. Should never happen.
22504 if (state.length
> 0) throw new Error('
"endReadable()" called on non-empty stream');
22506 if (!state.endEmitted) {
22507 state.ended = true;
22508 processNextTick(endReadableNT, state, stream);
22512 function endReadableNT(state, stream) {
22513 // Check that we didn't get one last unshift.
22514 if (!state.endEmitted && state.length ===
0) {
22515 state.endEmitted = true;
22516 stream.readable = false;
22517 stream.emit('end');
22521 function forEach(xs, f) {
22522 for (var i =
0, l = xs.length; i < l; i++) {
22527 function indexOf(xs, x) {
22528 for (var i =
0, l = xs.length; i < l; i++) {
22529 if (xs[i] === x) return i;
22533 }).call(this,require('_process'))
22534 },{
"./_stream_duplex":
15,
"./internal/streams/BufferList":
20,
"_process":
13,
"buffer":
5,
"buffer-shims":
4,
"core-util-is":
6,
"events":
7,
"inherits":
9,
"isarray":
11,
"process-nextick-args":
12,
"string_decoder/":
26,
"util":
3}],
18:[function(require,module,exports){
22535 // a transform stream is a readable/writable stream where you do
22536 // something with the data. Sometimes it's called a
"filter",
22537 // but that's not a great name for it, since that implies a thing where
22538 // some bits pass through, and others are simply ignored. (That would
22539 // be a valid example of a transform, of course.)
22541 // While the output is causally related to the input, it's not a
22542 // necessarily symmetric or synchronous transformation. For example,
22543 // a zlib stream might take multiple plain-text writes(), and then
22544 // emit a single compressed chunk some time in the future.
22546 // Here's how this works:
22548 // The Transform stream has all the aspects of the readable and writable
22549 // stream classes. When you write(chunk), that calls _write(chunk,cb)
22550 // internally, and returns false if there's a lot of pending writes
22551 // buffered up. When you call read(), that calls _read(n) until
22552 // there's enough pending readable data buffered up.
22554 // In a transform stream, the written data is placed in a buffer. When
22555 // _read(n) is called, it transforms the queued up data, calling the
22556 // buffered _write cb's as it consumes chunks. If consuming a single
22557 // written chunk would result in multiple output chunks, then the first
22558 // outputted bit calls the readcb, and subsequent chunks just go into
22559 // the read buffer, and will cause it to emit 'readable' if necessary.
22561 // This way, back-pressure is actually determined by the reading side,
22562 // since _read has to be called to start processing a new chunk. However,
22563 // a pathological inflate type of transform can cause excessive buffering
22564 // here. For example, imagine a stream where every byte of input is
22565 // interpreted as an integer from
0-
255, and then results in that many
22566 // bytes of output. Writing the
4 bytes {ff,ff,ff,ff} would result in
22567 //
1kb of data being output. In this case, you could write a very small
22568 // amount of input, and end up with a very large amount of output. In
22569 // such a pathological inflating mechanism, there'd be no way to tell
22570 // the system to stop doing the transform. A single
4MB write could
22571 // cause the system to run out of memory.
22573 // However, even in such a pathological case, only a single written chunk
22574 // would be consumed, and then the rest would wait (un-transformed) until
22575 // the results of the previous transformed chunk were consumed.
22579 module.exports = Transform;
22581 var Duplex = require('./_stream_duplex');
22584 var util = require('core-util-is');
22585 util.inherits = require('inherits');
22588 util.inherits(Transform, Duplex);
22590 function TransformState(stream) {
22591 this.afterTransform = function (er, data) {
22592 return afterTransform(stream, er, data);
22595 this.needTransform = false;
22596 this.transforming = false;
22597 this.writecb = null;
22598 this.writechunk = null;
22599 this.writeencoding = null;
22602 function afterTransform(stream, er, data) {
22603 var ts = stream._transformState;
22604 ts.transforming = false;
22606 var cb = ts.writecb;
22608 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
22610 ts.writechunk = null;
22613 if (data !== null && data !== undefined) stream.push(data);
22617 var rs = stream._readableState;
22618 rs.reading = false;
22619 if (rs.needReadable || rs.length < rs.highWaterMark) {
22620 stream._read(rs.highWaterMark);
22624 function Transform(options) {
22625 if (!(this instanceof Transform)) return new Transform(options);
22627 Duplex.call(this, options);
22629 this._transformState = new TransformState(this);
22633 // start out asking for a readable event once data is transformed.
22634 this._readableState.needReadable = true;
22636 // we have implemented the _read method, and done the other things
22637 // that Readable wants before the first _read call, so unset the
22638 // sync guard flag.
22639 this._readableState.sync = false;
22642 if (typeof options.transform === 'function') this._transform = options.transform;
22644 if (typeof options.flush === 'function') this._flush = options.flush;
22647 // When the writable side finishes, then flush out anything remaining.
22648 this.once('prefinish', function () {
22649 if (typeof this._flush === 'function') this._flush(function (er, data) {
22650 done(stream, er, data);
22651 });else done(stream);
22655 Transform.prototype.push = function (chunk, encoding) {
22656 this._transformState.needTransform = false;
22657 return Duplex.prototype.push.call(this, chunk, encoding);
22660 // This is the part where you do stuff!
22661 // override this function in implementation classes.
22662 // 'chunk' is an input chunk.
22664 // Call `push(newChunk)` to pass along transformed output
22665 // to the readable side. You may call 'push' zero or more times.
22667 // Call `cb(err)` when you are done with this chunk. If you pass
22668 // an error, then that'll put the hurt on the whole operation. If you
22669 // never call cb(), then you'll never get another chunk.
22670 Transform.prototype._transform = function (chunk, encoding, cb) {
22671 throw new Error('_transform() is not implemented');
22674 Transform.prototype._write = function (chunk, encoding, cb) {
22675 var ts = this._transformState;
22677 ts.writechunk = chunk;
22678 ts.writeencoding = encoding;
22679 if (!ts.transforming) {
22680 var rs = this._readableState;
22681 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
22685 // Doesn't matter what the args are here.
22686 // _transform does all the work.
22687 // That we got here means that the readable side wants more data.
22688 Transform.prototype._read = function (n) {
22689 var ts = this._transformState;
22691 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
22692 ts.transforming = true;
22693 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
22695 // mark that we need a transform, so that any data that comes in
22696 // will get processed, now that we've asked for it.
22697 ts.needTransform = true;
22701 function done(stream, er, data) {
22702 if (er) return stream.emit('error', er);
22704 if (data !== null && data !== undefined) stream.push(data);
22706 // if there's nothing in the write buffer, then that means
22707 // that nothing more will ever be provided
22708 var ws = stream._writableState;
22709 var ts = stream._transformState;
22711 if (ws.length) throw new Error('Calling transform done when ws.length !=
0');
22713 if (ts.transforming) throw new Error('Calling transform done when still transforming');
22715 return stream.push(null);
22717 },{"./_stream_duplex":
15,"core-util-is":
6,"inherits":
9}],
19:[function(require,module,exports){
22718 (function (process){
22719 // A bit simpler than readable streams.
22720 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
22721 // the drain event emission and buffering.
22725 module.exports = Writable;
22728 var processNextTick = require('process-nextick-args');
22732 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(
0,
5))
> -
1 ? setImmediate : processNextTick;
22739 Writable.WritableState = WritableState;
22742 var util = require('core-util-is');
22743 util.inherits = require('inherits');
22747 var internalUtil = {
22748 deprecate: require('util-deprecate')
22756 Stream = require('st' + 'ream');
22757 } catch (_) {} finally {
22758 if (!Stream) Stream = require('events').EventEmitter;
22763 var Buffer = require('buffer').Buffer;
22765 var bufferShim = require('buffer-shims');
22768 util.inherits(Writable, Stream);
22772 function WriteReq(chunk, encoding, cb) {
22773 this.chunk = chunk;
22774 this.encoding = encoding;
22775 this.callback = cb;
22779 function WritableState(options, stream) {
22780 Duplex = Duplex || require('./_stream_duplex');
22782 options = options || {};
22784 // object stream flag to indicate whether or not this stream
22785 // contains buffers or objects.
22786 this.objectMode = !!options.objectMode;
22788 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
22790 // the point at which write() starts returning false
22791 // Note:
0 is a valid value, means that we always return false if
22792 // the entire buffer is not flushed immediately on write()
22793 var hwm = options.highWaterMark;
22794 var defaultHwm = this.objectMode ?
16 :
16 *
1024;
22795 this.highWaterMark = hwm || hwm ===
0 ? hwm : defaultHwm;
22798 this.highWaterMark = ~ ~this.highWaterMark;
22800 // drain event flag.
22801 this.needDrain = false;
22802 // at the start of calling end()
22803 this.ending = false;
22804 // when end() has been called, and returned
22805 this.ended = false;
22806 // when 'finish' is emitted
22807 this.finished = false;
22809 // should we decode strings into buffers before passing to _write?
22810 // this is here so that some node-core streams can optimize string
22811 // handling at a lower level.
22812 var noDecode = options.decodeStrings === false;
22813 this.decodeStrings = !noDecode;
22815 // Crypto is kind of old and crusty. Historically, its default string
22816 // encoding is 'binary' so we have to make this configurable.
22817 // Everything else in the universe uses 'utf8', though.
22818 this.defaultEncoding = options.defaultEncoding || 'utf8';
22820 // not an actual buffer we keep track of, but a measurement
22821 // of how much we're waiting to get pushed to some underlying
22825 // a flag to see when we're in the middle of a write.
22826 this.writing = false;
22828 // when true all writes will be buffered until .uncork() call
22831 // a flag to be able to tell if the onwrite cb is called immediately,
22832 // or on a later tick. We set this to true at first, because any
22833 // actions that shouldn't happen until "later" should generally also
22834 // not happen before the first write call.
22837 // a flag to know if we're processing previously buffered items, which
22838 // may call the _write() callback in the same tick, so that we don't
22839 // end up in an overlapped onwrite situation.
22840 this.bufferProcessing = false;
22842 // the callback that's passed to _write(chunk,cb)
22843 this.onwrite = function (er) {
22844 onwrite(stream, er);
22847 // the callback that the user supplies to write(chunk,encoding,cb)
22848 this.writecb = null;
22850 // the amount that is being written when _write is called.
22853 this.bufferedRequest = null;
22854 this.lastBufferedRequest = null;
22856 // number of pending user-supplied write callbacks
22857 // this must be
0 before 'finish' can be emitted
22858 this.pendingcb =
0;
22860 // emit prefinish if the only thing we're waiting for is _write cbs
22861 // This is relevant for synchronous Transform streams
22862 this.prefinished = false;
22864 // True if the error was already emitted and should not be thrown again
22865 this.errorEmitted = false;
22867 // count buffered requests
22868 this.bufferedRequestCount =
0;
22870 // allocate the first CorkedRequest, there is always
22871 // one allocated and free to use, and we maintain at most two
22872 this.corkedRequestsFree = new CorkedRequest(this);
22875 WritableState.prototype.getBuffer = function getBuffer() {
22876 var current = this.bufferedRequest;
22880 current = current.next;
22887 Object.defineProperty(WritableState.prototype, 'buffer', {
22888 get: internalUtil.deprecate(function () {
22889 return this.getBuffer();
22890 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
22895 // Test _writableState for inheritance to account for Duplex streams,
22896 // whose prototype chain only points to Readable.
22897 var realHasInstance;
22898 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
22899 realHasInstance = Function.prototype[Symbol.hasInstance];
22900 Object.defineProperty(Writable, Symbol.hasInstance, {
22901 value: function (object) {
22902 if (realHasInstance.call(this, object)) return true;
22904 return object && object._writableState instanceof WritableState;
22908 realHasInstance = function (object) {
22909 return object instanceof this;
22913 function Writable(options) {
22914 Duplex = Duplex || require('./_stream_duplex');
22916 // Writable ctor is applied to Duplexes, too.
22917 // `realHasInstance` is necessary because using plain `instanceof`
22918 // would return false, as no `_writableState` property is attached.
22920 // Trying to use the custom `instanceof` for Writable here will also break the
22921 // Node.js LazyTransform implementation, which has a non-trivial getter for
22922 // `_writableState` that would lead to infinite recursion.
22923 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
22924 return new Writable(options);
22927 this._writableState = new WritableState(options, this);
22930 this.writable = true;
22933 if (typeof options.write === 'function') this._write = options.write;
22935 if (typeof options.writev === 'function') this._writev = options.writev;
22941 // Otherwise people can pipe Writable streams, which is just wrong.
22942 Writable.prototype.pipe = function () {
22943 this.emit('error', new Error('Cannot pipe, not readable'));
22946 function writeAfterEnd(stream, cb) {
22947 var er = new Error('write after end');
22948 // TODO: defer error events consistently everywhere, not just the cb
22949 stream.emit('error', er);
22950 processNextTick(cb, er);
22953 // If we get something that is not a buffer, string, null, or undefined,
22954 // and we're not in objectMode, then that's an error.
22955 // Otherwise stream chunks are all considered to be of length=
1, and the
22956 // watermarks determine how many objects to keep in the buffer, rather than
22957 // how many bytes or characters.
22958 function validChunk(stream, state, chunk, cb) {
22961 // Always throw error if a null is written
22962 // if we are not in object mode then throw
22963 // if it is not a buffer, string, or undefined.
22964 if (chunk === null) {
22965 er = new TypeError('May not write null values to stream');
22966 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
22967 er = new TypeError('Invalid non-string/buffer chunk');
22970 stream.emit('error', er);
22971 processNextTick(cb, er);
22977 Writable.prototype.write = function (chunk, encoding, cb) {
22978 var state = this._writableState;
22981 if (typeof encoding === 'function') {
22986 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
22988 if (typeof cb !== 'function') cb = nop;
22990 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
22992 ret = writeOrBuffer(this, state, chunk, encoding, cb);
22998 Writable.prototype.cork = function () {
22999 var state = this._writableState;
23004 Writable.prototype.uncork = function () {
23005 var state = this._writableState;
23007 if (state.corked) {
23010 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
23014 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
23015 // node::ParseEncoding() requires lower case.
23016 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
23017 if (!(['hex', 'utf8', 'utf-
8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-
2', 'utf16le', 'utf-
16le', 'raw'].indexOf((encoding + '').toLowerCase())
> -
1)) throw new TypeError('Unknown encoding: ' + encoding);
23018 this._writableState.defaultEncoding = encoding;
23022 function decodeChunk(state, chunk, encoding) {
23023 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
23024 chunk = bufferShim.from(chunk, encoding);
23029 // if we're already writing something, then just put this
23030 // in the queue, and wait our turn. Otherwise, call _write
23031 // If we return false, then we need a drain event, so set that flag.
23032 function writeOrBuffer(stream, state, chunk, encoding, cb) {
23033 chunk = decodeChunk(state, chunk, encoding);
23035 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
23036 var len = state.objectMode ?
1 : chunk.length;
23038 state.length += len;
23040 var ret = state.length < state.highWaterMark;
23041 // we must ensure that previous needDrain will not be reset to false.
23042 if (!ret) state.needDrain = true;
23044 if (state.writing || state.corked) {
23045 var last = state.lastBufferedRequest;
23046 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
23048 last.next = state.lastBufferedRequest;
23050 state.bufferedRequest = state.lastBufferedRequest;
23052 state.bufferedRequestCount +=
1;
23054 doWrite(stream, state, false, len, chunk, encoding, cb);
23060 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
23061 state.writelen = len;
23062 state.writecb = cb;
23063 state.writing = true;
23065 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
23066 state.sync = false;
23069 function onwriteError(stream, state, sync, er, cb) {
23071 if (sync) processNextTick(cb, er);else cb(er);
23073 stream._writableState.errorEmitted = true;
23074 stream.emit('error', er);
23077 function onwriteStateUpdate(state) {
23078 state.writing = false;
23079 state.writecb = null;
23080 state.length -= state.writelen;
23081 state.writelen =
0;
23084 function onwrite(stream, er) {
23085 var state = stream._writableState;
23086 var sync = state.sync;
23087 var cb = state.writecb;
23089 onwriteStateUpdate(state);
23091 if (er) onwriteError(stream, state, sync, er, cb);else {
23092 // Check if we're actually ready to finish, but don't emit yet
23093 var finished = needFinish(state);
23095 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
23096 clearBuffer(stream, state);
23101 asyncWrite(afterWrite, stream, state, finished, cb);
23104 afterWrite(stream, state, finished, cb);
23109 function afterWrite(stream, state, finished, cb) {
23110 if (!finished) onwriteDrain(stream, state);
23113 finishMaybe(stream, state);
23116 // Must force callback to be called on nextTick, so that we don't
23117 // emit 'drain' before the write() consumer gets the 'false' return
23118 // value, and has a chance to attach a 'drain' listener.
23119 function onwriteDrain(stream, state) {
23120 if (state.length ===
0 && state.needDrain) {
23121 state.needDrain = false;
23122 stream.emit('drain');
23126 // if there's something in the buffer waiting, then process it
23127 function clearBuffer(stream, state) {
23128 state.bufferProcessing = true;
23129 var entry = state.bufferedRequest;
23131 if (stream._writev && entry && entry.next) {
23132 // Fast case, write everything using _writev()
23133 var l = state.bufferedRequestCount;
23134 var buffer = new Array(l);
23135 var holder = state.corkedRequestsFree;
23136 holder.entry = entry;
23140 buffer[count] = entry;
23141 entry = entry.next;
23145 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
23147 // doWrite is almost always async, defer these to save a bit of time
23148 // as the hot path ends with doWrite
23150 state.lastBufferedRequest = null;
23152 state.corkedRequestsFree = holder.next;
23153 holder.next = null;
23155 state.corkedRequestsFree = new CorkedRequest(state);
23158 // Slow case, write chunks one-by-one
23160 var chunk = entry.chunk;
23161 var encoding = entry.encoding;
23162 var cb = entry.callback;
23163 var len = state.objectMode ?
1 : chunk.length;
23165 doWrite(stream, state, false, len, chunk, encoding, cb);
23166 entry = entry.next;
23167 // if we didn't call the onwrite immediately, then
23168 // it means that we need to wait until it does.
23169 // also, that means that the chunk and cb are currently
23170 // being processed, so move the buffer counter past them.
23171 if (state.writing) {
23176 if (entry === null) state.lastBufferedRequest = null;
23179 state.bufferedRequestCount =
0;
23180 state.bufferedRequest = entry;
23181 state.bufferProcessing = false;
23184 Writable.prototype._write = function (chunk, encoding, cb) {
23185 cb(new Error('_write() is not implemented'));
23188 Writable.prototype._writev = null;
23190 Writable.prototype.end = function (chunk, encoding, cb) {
23191 var state = this._writableState;
23193 if (typeof chunk === 'function') {
23197 } else if (typeof encoding === 'function') {
23202 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
23204 // .end() fully uncorks
23205 if (state.corked) {
23210 // ignore unnecessary end() calls.
23211 if (!state.ending && !state.finished) endWritable(this, state, cb);
23214 function needFinish(state) {
23215 return state.ending && state.length ===
0 && state.bufferedRequest === null && !state.finished && !state.writing;
23218 function prefinish(stream, state) {
23219 if (!state.prefinished) {
23220 state.prefinished = true;
23221 stream.emit('prefinish');
23225 function finishMaybe(stream, state) {
23226 var need = needFinish(state);
23228 if (state.pendingcb ===
0) {
23229 prefinish(stream, state);
23230 state.finished = true;
23231 stream.emit('finish');
23233 prefinish(stream, state);
23239 function endWritable(stream, state, cb) {
23240 state.ending = true;
23241 finishMaybe(stream, state);
23243 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
23245 state.ended = true;
23246 stream.writable = false;
23249 // It seems a linked list but it is not
23250 // there will be only
2 of these for each stream
23251 function CorkedRequest(state) {
23257 this.finish = function (err) {
23258 var entry = _this.entry;
23259 _this.entry = null;
23261 var cb = entry.callback;
23264 entry = entry.next;
23266 if (state.corkedRequestsFree) {
23267 state.corkedRequestsFree.next = _this;
23269 state.corkedRequestsFree = _this;
23273 }).call(this,require('_process'))
23274 },{"./_stream_duplex":
15,"_process":
13,"buffer":
5,"buffer-shims":
4,"core-util-is":
6,"events":
7,"inherits":
9,"process-nextick-args":
12,"util-deprecate":
27}],
20:[function(require,module,exports){
23277 var Buffer = require('buffer').Buffer;
23279 var bufferShim = require('buffer-shims');
23282 module.exports = BufferList;
23284 function BufferList() {
23290 BufferList.prototype.push = function (v) {
23291 var entry = { data: v, next: null };
23292 if (this.length
> 0) this.tail.next = entry;else this.head = entry;
23297 BufferList.prototype.unshift = function (v) {
23298 var entry = { data: v, next: this.head };
23299 if (this.length ===
0) this.tail = entry;
23304 BufferList.prototype.shift = function () {
23305 if (this.length ===
0) return;
23306 var ret = this.head.data;
23307 if (this.length ===
1) this.head = this.tail = null;else this.head = this.head.next;
23312 BufferList.prototype.clear = function () {
23313 this.head = this.tail = null;
23317 BufferList.prototype.join = function (s) {
23318 if (this.length ===
0) return '';
23320 var ret = '' + p.data;
23321 while (p = p.next) {
23326 BufferList.prototype.concat = function (n) {
23327 if (this.length ===
0) return bufferShim.alloc(
0);
23328 if (this.length ===
1) return this.head.data;
23329 var ret = bufferShim.allocUnsafe(n
>>> 0);
23333 p.data.copy(ret, i);
23334 i += p.data.length;
23339 },{
"buffer":
5,
"buffer-shims":
4}],
21:[function(require,module,exports){
23340 module.exports = require(
"./lib/_stream_passthrough.js")
23342 },{
"./lib/_stream_passthrough.js":
16}],
22:[function(require,module,exports){
23343 (function (process){
23344 var Stream = (function (){
23346 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
23349 exports = module.exports = require('./lib/_stream_readable.js');
23350 exports.Stream = Stream || exports;
23351 exports.Readable = exports;
23352 exports.Writable = require('./lib/_stream_writable.js');
23353 exports.Duplex = require('./lib/_stream_duplex.js');
23354 exports.Transform = require('./lib/_stream_transform.js');
23355 exports.PassThrough = require('./lib/_stream_passthrough.js');
23357 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
23358 module.exports = Stream;
23361 }).call(this,require('_process'))
23362 },{
"./lib/_stream_duplex.js":
15,
"./lib/_stream_passthrough.js":
16,
"./lib/_stream_readable.js":
17,
"./lib/_stream_transform.js":
18,
"./lib/_stream_writable.js":
19,
"_process":
13}],
23:[function(require,module,exports){
23363 module.exports = require(
"./lib/_stream_transform.js")
23365 },{
"./lib/_stream_transform.js":
18}],
24:[function(require,module,exports){
23366 module.exports = require(
"./lib/_stream_writable.js")
23368 },{
"./lib/_stream_writable.js":
19}],
25:[function(require,module,exports){
23369 // Copyright Joyent, Inc. and other Node contributors.
23371 // Permission is hereby granted, free of charge, to any person obtaining a
23372 // copy of this software and associated documentation files (the
23373 //
"Software"), to deal in the Software without restriction, including
23374 // without limitation the rights to use, copy, modify, merge, publish,
23375 // distribute, sublicense, and/or sell copies of the Software, and to permit
23376 // persons to whom the Software is furnished to do so, subject to the
23377 // following conditions:
23379 // The above copyright notice and this permission notice shall be included
23380 // in all copies or substantial portions of the Software.
23382 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23383 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23384 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23385 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23386 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23387 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23388 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23390 module.exports = Stream;
23392 var EE = require('events').EventEmitter;
23393 var inherits = require('inherits');
23395 inherits(Stream, EE);
23396 Stream.Readable = require('readable-stream/readable.js');
23397 Stream.Writable = require('readable-stream/writable.js');
23398 Stream.Duplex = require('readable-stream/duplex.js');
23399 Stream.Transform = require('readable-stream/transform.js');
23400 Stream.PassThrough = require('readable-stream/passthrough.js');
23402 // Backwards-compat with node
0.4.x
23403 Stream.Stream = Stream;
23407 // old-style streams. Note that the pipe method (the only relevant
23408 // part of this class) is overridden in the Readable class.
23410 function Stream() {
23414 Stream.prototype.pipe = function(dest, options) {
23417 function ondata(chunk) {
23418 if (dest.writable) {
23419 if (false === dest.write(chunk) && source.pause) {
23425 source.on('data', ondata);
23427 function ondrain() {
23428 if (source.readable && source.resume) {
23433 dest.on('drain', ondrain);
23435 // If the 'end' option is not supplied, dest.end() will be called when
23436 // source gets the 'end' or 'close' events. Only dest.end() once.
23437 if (!dest._isStdio && (!options || options.end !== false)) {
23438 source.on('end', onend);
23439 source.on('close', onclose);
23442 var didOnEnd = false;
23444 if (didOnEnd) return;
23451 function onclose() {
23452 if (didOnEnd) return;
23455 if (typeof dest.destroy === 'function') dest.destroy();
23458 // don't leave dangling pipes when there are errors.
23459 function onerror(er) {
23461 if (EE.listenerCount(this, 'error') ===
0) {
23462 throw er; // Unhandled stream error in pipe.
23466 source.on('error', onerror);
23467 dest.on('error', onerror);
23469 // remove all the event listeners that were added.
23470 function cleanup() {
23471 source.removeListener('data', ondata);
23472 dest.removeListener('drain', ondrain);
23474 source.removeListener('end', onend);
23475 source.removeListener('close', onclose);
23477 source.removeListener('error', onerror);
23478 dest.removeListener('error', onerror);
23480 source.removeListener('end', cleanup);
23481 source.removeListener('close', cleanup);
23483 dest.removeListener('close', cleanup);
23486 source.on('end', cleanup);
23487 source.on('close', cleanup);
23489 dest.on('close', cleanup);
23491 dest.emit('pipe', source);
23493 // Allow for unix-like usage: A.pipe(B).pipe(C)
23497 },{
"events":
7,
"inherits":
9,
"readable-stream/duplex.js":
14,
"readable-stream/passthrough.js":
21,
"readable-stream/readable.js":
22,
"readable-stream/transform.js":
23,
"readable-stream/writable.js":
24}],
26:[function(require,module,exports){
23498 // Copyright Joyent, Inc. and other Node contributors.
23500 // Permission is hereby granted, free of charge, to any person obtaining a
23501 // copy of this software and associated documentation files (the
23502 //
"Software"), to deal in the Software without restriction, including
23503 // without limitation the rights to use, copy, modify, merge, publish,
23504 // distribute, sublicense, and/or sell copies of the Software, and to permit
23505 // persons to whom the Software is furnished to do so, subject to the
23506 // following conditions:
23508 // The above copyright notice and this permission notice shall be included
23509 // in all copies or substantial portions of the Software.
23511 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23512 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23513 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23514 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23515 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23516 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23517 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23519 var Buffer = require('buffer').Buffer;
23521 var isBufferEncoding = Buffer.isEncoding
23522 || function(encoding) {
23523 switch (encoding && encoding.toLowerCase()) {
23524 case 'hex': case 'utf8': case 'utf-
8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-
2': case 'utf16le': case 'utf-
16le': case 'raw': return true;
23525 default: return false;
23530 function assertEncoding(encoding) {
23531 if (encoding && !isBufferEncoding(encoding)) {
23532 throw new Error('Unknown encoding: ' + encoding);
23536 // StringDecoder provides an interface for efficiently splitting a series of
23537 // buffers into a series of JS strings without breaking apart multi-byte
23538 // characters. CESU-
8 is handled as part of the UTF-
8 encoding.
23540 // @TODO Handling all encodings inside a single object makes it very difficult
23541 // to reason about this code, so it should be split up in the future.
23542 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-
8 code
23543 // points as used by CESU-
8.
23544 var StringDecoder = exports.StringDecoder = function(encoding) {
23545 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
23546 assertEncoding(encoding);
23547 switch (this.encoding) {
23549 // CESU-
8 represents each of Surrogate Pair by
3-bytes
23550 this.surrogateSize =
3;
23554 // UTF-
16 represents each of Surrogate Pair by
2-bytes
23555 this.surrogateSize =
2;
23556 this.detectIncompleteChar = utf16DetectIncompleteChar;
23559 // Base-
64 stores
3 bytes in
4 chars, and pads the remainder.
23560 this.surrogateSize =
3;
23561 this.detectIncompleteChar = base64DetectIncompleteChar;
23564 this.write = passThroughWrite;
23568 // Enough space to store all bytes of a single character. UTF-
8 needs
4
23569 // bytes, but CESU-
8 may require up to
6 (
3 bytes per surrogate).
23570 this.charBuffer = new Buffer(
6);
23571 // Number of bytes received for the current incomplete multi-byte character.
23572 this.charReceived =
0;
23573 // Number of bytes expected for the current incomplete multi-byte character.
23574 this.charLength =
0;
23578 // write decodes the given buffer and returns it as JS string that is
23579 // guaranteed to not contain any partial multi-byte characters. Any partial
23580 // character found at the end of the buffer is buffered up, and will be
23581 // returned when calling write again with the remaining bytes.
23583 // Note: Converting a Buffer containing an orphan surrogate to a String
23584 // currently works, but converting a String to a Buffer (via `new Buffer`, or
23585 // Buffer#write) will replace incomplete surrogates with the unicode
23586 // replacement character. See https://codereview.chromium.org/
121173009/ .
23587 StringDecoder.prototype.write = function(buffer) {
23589 // if our last write ended with an incomplete multibyte character
23590 while (this.charLength) {
23591 // determine how many remaining bytes this buffer has to offer for this char
23592 var available = (buffer.length
>= this.charLength - this.charReceived) ?
23593 this.charLength - this.charReceived :
23596 // add the new bytes to the char buffer
23597 buffer.copy(this.charBuffer, this.charReceived,
0, available);
23598 this.charReceived += available;
23600 if (this.charReceived < this.charLength) {
23601 // still not enough chars in this buffer? wait for more ...
23605 // remove bytes belonging to the current character from the buffer
23606 buffer = buffer.slice(available, buffer.length);
23608 // get the character that was split
23609 charStr = this.charBuffer.slice(
0, this.charLength).toString(this.encoding);
23611 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
23612 var charCode = charStr.charCodeAt(charStr.length -
1);
23613 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
23614 this.charLength += this.surrogateSize;
23618 this.charReceived = this.charLength =
0;
23620 // if there are no more bytes in this buffer, just emit our char
23621 if (buffer.length ===
0) {
23627 // determine and set charLength / charReceived
23628 this.detectIncompleteChar(buffer);
23630 var end = buffer.length;
23631 if (this.charLength) {
23632 // buffer the incomplete character bytes we got
23633 buffer.copy(this.charBuffer,
0, buffer.length - this.charReceived, end);
23634 end -= this.charReceived;
23637 charStr += buffer.toString(this.encoding,
0, end);
23639 var end = charStr.length -
1;
23640 var charCode = charStr.charCodeAt(end);
23641 // CESU-
8: lead surrogate (D800-DBFF) is also the incomplete character
23642 if (charCode
>=
0xD800 && charCode <=
0xDBFF) {
23643 var size = this.surrogateSize;
23644 this.charLength += size;
23645 this.charReceived += size;
23646 this.charBuffer.copy(this.charBuffer, size,
0, size);
23647 buffer.copy(this.charBuffer,
0,
0, size);
23648 return charStr.substring(
0, end);
23651 // or just emit the charStr
23655 // detectIncompleteChar determines if there is an incomplete UTF-
8 character at
23656 // the end of the given buffer. If so, it sets this.charLength to the byte
23657 // length that character, and sets this.charReceived to the number of bytes
23658 // that are available for this character.
23659 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
23660 // determine how many bytes we have to check at the end of this buffer
23661 var i = (buffer.length
>=
3) ?
3 : buffer.length;
23663 // Figure out if one of the last i bytes of our buffer announces an
23664 // incomplete char.
23665 for (; i
> 0; i--) {
23666 var c = buffer[buffer.length - i];
23668 // See http://en.wikipedia.org/wiki/UTF-
8#Description
23671 if (i ==
1 && c
>> 5 ==
0x06) {
23672 this.charLength =
2;
23677 if (i <=
2 && c
>> 4 ==
0x0E) {
23678 this.charLength =
3;
23683 if (i <=
3 && c
>> 3 ==
0x1E) {
23684 this.charLength =
4;
23688 this.charReceived = i;
23691 StringDecoder.prototype.end = function(buffer) {
23693 if (buffer && buffer.length)
23694 res = this.write(buffer);
23696 if (this.charReceived) {
23697 var cr = this.charReceived;
23698 var buf = this.charBuffer;
23699 var enc = this.encoding;
23700 res += buf.slice(
0, cr).toString(enc);
23706 function passThroughWrite(buffer) {
23707 return buffer.toString(this.encoding);
23710 function utf16DetectIncompleteChar(buffer) {
23711 this.charReceived = buffer.length %
2;
23712 this.charLength = this.charReceived ?
2 :
0;
23715 function base64DetectIncompleteChar(buffer) {
23716 this.charReceived = buffer.length %
3;
23717 this.charLength = this.charReceived ?
3 :
0;
23720 },{
"buffer":
5}],
27:[function(require,module,exports){
23721 (function (global){
23727 module.exports = deprecate;
23730 * Mark that a method should not be used.
23731 * Returns a modified function which warns once by default.
23733 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
23735 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
23736 * will throw an Error when invoked.
23738 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
23739 * will invoke `console.trace()` instead of `console.error()`.
23741 * @param {Function} fn - the function to deprecate
23742 * @param {String} msg - the string to print to the console when `fn` is invoked
23743 * @returns {Function} a new
"deprecated" version of `fn`
23747 function deprecate (fn, msg) {
23748 if (config('noDeprecation')) {
23752 var warned = false;
23753 function deprecated() {
23755 if (config('throwDeprecation')) {
23756 throw new Error(msg);
23757 } else if (config('traceDeprecation')) {
23758 console.trace(msg);
23764 return fn.apply(this, arguments);
23771 * Checks `localStorage` for boolean values for the given `name`.
23773 * @param {String} name
23774 * @returns {Boolean}
23778 function config (name) {
23779 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
23781 if (!global.localStorage) return false;
23785 var val = global.localStorage[name];
23786 if (null == val) return false;
23787 return String(val).toLowerCase() === 'true';
23790 }).call(this,typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
23791 },{}],
28:[function(require,module,exports){
23792 arguments[
4][
9][
0].apply(exports,arguments)
23793 },{
"dup":
9}],
29:[function(require,module,exports){
23794 module.exports = function isBuffer(arg) {
23795 return arg && typeof arg === 'object'
23796 && typeof arg.copy === 'function'
23797 && typeof arg.fill === 'function'
23798 && typeof arg.readUInt8 === 'function';
23800 },{}],
30:[function(require,module,exports){
23801 (function (process,global){
23802 // Copyright Joyent, Inc. and other Node contributors.
23804 // Permission is hereby granted, free of charge, to any person obtaining a
23805 // copy of this software and associated documentation files (the
23806 //
"Software"), to deal in the Software without restriction, including
23807 // without limitation the rights to use, copy, modify, merge, publish,
23808 // distribute, sublicense, and/or sell copies of the Software, and to permit
23809 // persons to whom the Software is furnished to do so, subject to the
23810 // following conditions:
23812 // The above copyright notice and this permission notice shall be included
23813 // in all copies or substantial portions of the Software.
23815 // THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23816 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23817 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23818 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23819 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23820 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
23821 // USE OR OTHER DEALINGS IN THE SOFTWARE.
23823 var formatRegExp = /%[sdj%]/g;
23824 exports.format = function(f) {
23825 if (!isString(f)) {
23827 for (var i =
0; i < arguments.length; i++) {
23828 objects.push(inspect(arguments[i]));
23830 return objects.join(' ');
23834 var args = arguments;
23835 var len = args.length;
23836 var str = String(f).replace(formatRegExp, function(x) {
23837 if (x === '%%') return '%';
23838 if (i
>= len) return x;
23840 case '%s': return String(args[i++]);
23841 case '%d': return Number(args[i++]);
23844 return JSON.stringify(args[i++]);
23846 return '[Circular]';
23852 for (var x = args[i]; i < len; x = args[++i]) {
23853 if (isNull(x) || !isObject(x)) {
23856 str += ' ' + inspect(x);
23863 // Mark that a method should not be used.
23864 // Returns a modified function which warns once by default.
23865 // If --no-deprecation is set, then it is a no-op.
23866 exports.deprecate = function(fn, msg) {
23867 // Allow for deprecating things in the process of starting up.
23868 if (isUndefined(global.process)) {
23869 return function() {
23870 return exports.deprecate(fn, msg).apply(this, arguments);
23874 if (process.noDeprecation === true) {
23878 var warned = false;
23879 function deprecated() {
23881 if (process.throwDeprecation) {
23882 throw new Error(msg);
23883 } else if (process.traceDeprecation) {
23884 console.trace(msg);
23886 console.error(msg);
23890 return fn.apply(this, arguments);
23899 exports.debuglog = function(set) {
23900 if (isUndefined(debugEnviron))
23901 debugEnviron = process.env.NODE_DEBUG || '';
23902 set = set.toUpperCase();
23903 if (!debugs[set]) {
23904 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
23905 var pid = process.pid;
23906 debugs[set] = function() {
23907 var msg = exports.format.apply(exports, arguments);
23908 console.error('%s %d: %s', set, pid, msg);
23911 debugs[set] = function() {};
23914 return debugs[set];
23919 * Echos the value of a value. Trys to print the value out
23920 * in the best way possible given the different types.
23922 * @param {Object} obj The object to print out.
23923 * @param {Object} opts Optional options object that alters the output.
23925 /* legacy: obj, showHidden, depth, colors*/
23926 function inspect(obj, opts) {
23930 stylize: stylizeNoColor
23933 if (arguments.length
>=
3) ctx.depth = arguments[
2];
23934 if (arguments.length
>=
4) ctx.colors = arguments[
3];
23935 if (isBoolean(opts)) {
23937 ctx.showHidden = opts;
23939 // got an "options" object
23940 exports._extend(ctx, opts);
23942 // set default options
23943 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
23944 if (isUndefined(ctx.depth)) ctx.depth =
2;
23945 if (isUndefined(ctx.colors)) ctx.colors = false;
23946 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
23947 if (ctx.colors) ctx.stylize = stylizeWithColor;
23948 return formatValue(ctx, obj, ctx.depth);
23950 exports.inspect = inspect;
23953 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
23956 'italic' : [
3,
23],
23957 'underline' : [
4,
24],
23958 'inverse' : [
7,
27],
23959 'white' : [
37,
39],
23961 'black' : [
30,
39],
23964 'green' : [
32,
39],
23965 'magenta' : [
35,
39],
23967 'yellow' : [
33,
39]
23970 // Don't use 'blue' not visible on cmd.exe
23973 'number': 'yellow',
23974 'boolean': 'yellow',
23975 'undefined': 'grey',
23979 // "name": intentionally not styling
23984 function stylizeWithColor(str, styleType) {
23985 var style = inspect.styles[styleType];
23988 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
23989 '\u001b[' + inspect.colors[style][
1] + 'm';
23996 function stylizeNoColor(str, styleType) {
24001 function arrayToHash(array) {
24004 array.forEach(function(val, idx) {
24012 function formatValue(ctx, value, recurseTimes) {
24013 // Provide a hook for user-specified inspect functions.
24014 // Check that value is an object with an inspect function on it
24015 if (ctx.customInspect &&
24017 isFunction(value.inspect) &&
24018 // Filter out the util module, it's inspect function is special
24019 value.inspect !== exports.inspect &&
24020 // Also filter out any prototype objects using the circular check.
24021 !(value.constructor && value.constructor.prototype === value)) {
24022 var ret = value.inspect(recurseTimes, ctx);
24023 if (!isString(ret)) {
24024 ret = formatValue(ctx, ret, recurseTimes);
24029 // Primitive types cannot have properties
24030 var primitive = formatPrimitive(ctx, value);
24035 // Look up the keys of the object.
24036 var keys = Object.keys(value);
24037 var visibleKeys = arrayToHash(keys);
24039 if (ctx.showHidden) {
24040 keys = Object.getOwnPropertyNames(value);
24043 // IE doesn't make error fields non-enumerable
24044 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
24046 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
24047 return formatError(value);
24050 // Some type of object without properties can be shortcutted.
24051 if (keys.length ===
0) {
24052 if (isFunction(value)) {
24053 var name = value.name ? ': ' + value.name : '';
24054 return ctx.stylize('[Function' + name + ']', 'special');
24056 if (isRegExp(value)) {
24057 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
24059 if (isDate(value)) {
24060 return ctx.stylize(Date.prototype.toString.call(value), 'date');
24062 if (isError(value)) {
24063 return formatError(value);
24067 var base = '', array = false, braces = ['{', '}'];
24069 // Make Array say that they are Array
24070 if (isArray(value)) {
24072 braces = ['[', ']'];
24075 // Make functions say that they are functions
24076 if (isFunction(value)) {
24077 var n = value.name ? ': ' + value.name : '';
24078 base = ' [Function' + n + ']';
24081 // Make RegExps say that they are RegExps
24082 if (isRegExp(value)) {
24083 base = ' ' + RegExp.prototype.toString.call(value);
24086 // Make dates with properties first say the date
24087 if (isDate(value)) {
24088 base = ' ' + Date.prototype.toUTCString.call(value);
24091 // Make error with message first say the error
24092 if (isError(value)) {
24093 base = ' ' + formatError(value);
24096 if (keys.length ===
0 && (!array || value.length ==
0)) {
24097 return braces[
0] + base + braces[
1];
24100 if (recurseTimes <
0) {
24101 if (isRegExp(value)) {
24102 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
24104 return ctx.stylize('[Object]', 'special');
24108 ctx.seen.push(value);
24112 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
24114 output = keys.map(function(key) {
24115 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
24121 return reduceToSingleString(output, base, braces);
24125 function formatPrimitive(ctx, value) {
24126 if (isUndefined(value))
24127 return ctx.stylize('undefined', 'undefined');
24128 if (isString(value)) {
24129 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
24130 .replace(/'/g, "\\'")
24131 .replace(/\\"/g, '"') + '\'';
24132 return ctx.stylize(simple, 'string');
24134 if (isNumber(value))
24135 return ctx.stylize('' + value, 'number');
24136 if (isBoolean(value))
24137 return ctx.stylize('' + value, 'boolean');
24138 // For some reason typeof null is "object", so special case here.
24140 return ctx.stylize('null', 'null');
24144 function formatError(value) {
24145 return '[' + Error.prototype.toString.call(value) + ']';
24149 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
24151 for (var i =
0, l = value.length; i < l; ++i) {
24152 if (hasOwnProperty(value, String(i))) {
24153 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
24159 keys.forEach(function(key) {
24160 if (!key.match(/^\d+$/)) {
24161 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
24169 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
24170 var name, str, desc;
24171 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
24174 str = ctx.stylize('[Getter/Setter]', 'special');
24176 str = ctx.stylize('[Getter]', 'special');
24180 str = ctx.stylize('[Setter]', 'special');
24183 if (!hasOwnProperty(visibleKeys, key)) {
24184 name = '[' + key + ']';
24187 if (ctx.seen.indexOf(desc.value) <
0) {
24188 if (isNull(recurseTimes)) {
24189 str = formatValue(ctx, desc.value, null);
24191 str = formatValue(ctx, desc.value, recurseTimes -
1);
24193 if (str.indexOf('\n')
> -
1) {
24195 str = str.split('\n').map(function(line) {
24197 }).join('\n').substr(
2);
24199 str = '\n' + str.split('\n').map(function(line) {
24205 str = ctx.stylize('[Circular]', 'special');
24208 if (isUndefined(name)) {
24209 if (array && key.match(/^\d+$/)) {
24212 name = JSON.stringify('' + key);
24213 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
24214 name = name.substr(
1, name.length -
2);
24215 name = ctx.stylize(name, 'name');
24217 name = name.replace(/'/g, "\\'")
24218 .replace(/\\"/g, '"')
24219 .replace(/(^"|"$)/g, "'");
24220 name = ctx.stylize(name, 'string');
24224 return name + ': ' + str;
24228 function reduceToSingleString(output, base, braces) {
24229 var numLinesEst =
0;
24230 var length = output.reduce(function(prev, cur) {
24232 if (cur.indexOf('\n')
>=
0) numLinesEst++;
24233 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
24238 (base === '' ? '' : base + '\n ') +
24240 output.join(',\n ') +
24245 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
24249 // NOTE: These type checking functions intentionally don't use `instanceof`
24250 // because it is fragile and can be easily faked with `Object.create()`.
24251 function isArray(ar) {
24252 return Array.isArray(ar);
24254 exports.isArray = isArray;
24256 function isBoolean(arg) {
24257 return typeof arg === 'boolean';
24259 exports.isBoolean = isBoolean;
24261 function isNull(arg) {
24262 return arg === null;
24264 exports.isNull = isNull;
24266 function isNullOrUndefined(arg) {
24267 return arg == null;
24269 exports.isNullOrUndefined = isNullOrUndefined;
24271 function isNumber(arg) {
24272 return typeof arg === 'number';
24274 exports.isNumber = isNumber;
24276 function isString(arg) {
24277 return typeof arg === 'string';
24279 exports.isString = isString;
24281 function isSymbol(arg) {
24282 return typeof arg === 'symbol';
24284 exports.isSymbol = isSymbol;
24286 function isUndefined(arg) {
24287 return arg === void
0;
24289 exports.isUndefined = isUndefined;
24291 function isRegExp(re) {
24292 return isObject(re) && objectToString(re) === '[object RegExp]';
24294 exports.isRegExp = isRegExp;
24296 function isObject(arg) {
24297 return typeof arg === 'object' && arg !== null;
24299 exports.isObject = isObject;
24301 function isDate(d) {
24302 return isObject(d) && objectToString(d) === '[object Date]';
24304 exports.isDate = isDate;
24306 function isError(e) {
24307 return isObject(e) &&
24308 (objectToString(e) === '[object Error]' || e instanceof Error);
24310 exports.isError = isError;
24312 function isFunction(arg) {
24313 return typeof arg === 'function';
24315 exports.isFunction = isFunction;
24317 function isPrimitive(arg) {
24318 return arg === null ||
24319 typeof arg === 'boolean' ||
24320 typeof arg === 'number' ||
24321 typeof arg === 'string' ||
24322 typeof arg === 'symbol' || // ES6 symbol
24323 typeof arg === 'undefined';
24325 exports.isPrimitive = isPrimitive;
24327 exports.isBuffer = require('./support/isBuffer');
24329 function objectToString(o) {
24330 return Object.prototype.toString.call(o);
24335 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
24339 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
24340 'Oct', 'Nov', 'Dec'];
24343 function timestamp() {
24344 var d = new Date();
24345 var time = [pad(d.getHours()),
24346 pad(d.getMinutes()),
24347 pad(d.getSeconds())].join(':');
24348 return [d.getDate(), months[d.getMonth()], time].join(' ');
24352 // log is just a thin wrapper to console.log that prepends a timestamp
24353 exports.log = function() {
24354 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
24359 * Inherit the prototype methods from one constructor into another.
24361 * The Function.prototype.inherits from lang.js rewritten as a standalone
24362 * function (not on Function.prototype). NOTE: If this file is to be loaded
24363 * during bootstrapping this function needs to be rewritten using some native
24364 * functions as prototype setup using normal JavaScript does not work as
24365 * expected during bootstrapping (see mirror.js in r114903).
24367 * @param {function} ctor Constructor function which needs to inherit the
24369 * @param {function} superCtor Constructor function to inherit prototype from.
24371 exports.inherits = require('inherits');
24373 exports._extend = function(origin, add) {
24374 // Don't do anything if add isn't an object
24375 if (!add || !isObject(add)) return origin;
24377 var keys = Object.keys(add);
24378 var i = keys.length;
24380 origin[keys[i]] = add[keys[i]];
24385 function hasOwnProperty(obj, prop) {
24386 return Object.prototype.hasOwnProperty.call(obj, prop);
24389 }).call(this,require('_process'),typeof global !==
"undefined" ? global : typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
24390 },{
"./support/isBuffer":
29,
"_process":
13,
"inherits":
28}],
31:[function(require,module,exports){
24391 (function (Buffer){
24392 const createKeccakHash = require('keccak')
24393 const secp256k1 = require('secp256k1')
24394 const assert = require('assert')
24395 const rlp = require('rlp')
24396 const BN = require('bn.js')
24397 const createHash = require('create-hash')
24398 Object.assign(exports, require('ethjs-util'))
24401 * the max integer that this VM can handle (a ```BN```)
24402 * @var {BN} MAX_INTEGER
24404 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
16)
24407 *
2^
256 (a ```BN```)
24408 * @var {BN} TWO_POW256
24410 exports.TWO_POW256 = new BN('
10000000000000000000000000000000000000000000000000000000000000000',
16)
24413 * SHA3-
256 hash of null (a ```String```)
24414 * @var {String} SHA3_NULL_S
24416 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
24419 * SHA3-
256 hash of null (a ```Buffer```)
24420 * @var {Buffer} SHA3_NULL
24422 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
24425 * SHA3-
256 of an RLP of an empty array (a ```String```)
24426 * @var {String} SHA3_RLP_ARRAY_S
24428 exports.SHA3_RLP_ARRAY_S = '
1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
24431 * SHA3-
256 of an RLP of an empty array (a ```Buffer```)
24432 * @var {Buffer} SHA3_RLP_ARRAY
24434 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
24437 * SHA3-
256 hash of the RLP of null (a ```String```)
24438 * @var {String} SHA3_RLP_S
24440 exports.SHA3_RLP_S = '
56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
24443 * SHA3-
256 hash of the RLP of null (a ```Buffer```)
24444 * @var {Buffer} SHA3_RLP
24446 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
24449 * [`BN`](https://github.com/indutny/bn.js)
24455 * [`rlp`](https://github.com/ethereumjs/rlp)
24461 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
24464 exports.secp256k1 = secp256k1
24467 * Returns a buffer filled with
0s
24469 * @param {Number} bytes the number of bytes the buffer should be
24472 exports.zeros = function (bytes) {
24473 return Buffer.allocUnsafe(bytes).fill(
0)
24477 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
24478 * Or it truncates the beginning if it exceeds.
24479 * @method lsetLength
24480 * @param {Buffer|Array} msg the value to pad
24481 * @param {Number} length the number of bytes the output should be
24482 * @param {Boolean} [right=false] whether to start padding form the left or right
24483 * @return {Buffer|Array}
24485 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
24486 var buf = exports.zeros(length)
24487 msg = exports.toBuffer(msg)
24489 if (msg.length < length) {
24493 return msg.slice(
0, length)
24495 if (msg.length < length) {
24496 msg.copy(buf, length - msg.length)
24499 return msg.slice(-length)
24504 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
24505 * Or it truncates the beginning if it exceeds.
24506 * @param {Buffer|Array} msg the value to pad
24507 * @param {Number} length the number of bytes the output should be
24508 * @return {Buffer|Array}
24510 exports.setLengthRight = function (msg, length) {
24511 return exports.setLength(msg, length, true)
24515 * Trims leading zeros from a `Buffer` or an `Array`
24516 * @param {Buffer|Array|String} a
24517 * @return {Buffer|Array|String}
24519 exports.unpad = exports.stripZeros = function (a) {
24520 a = exports.stripHexPrefix(a)
24522 while (a.length
> 0 && first.toString() === '
0') {
24529 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
24530 * @param {*} v the value
24532 exports.toBuffer = function (v) {
24533 if (!Buffer.isBuffer(v)) {
24534 if (Array.isArray(v)) {
24536 } else if (typeof v === 'string') {
24537 if (exports.isHexPrefixed(v)) {
24538 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
24542 } else if (typeof v === 'number') {
24543 v = exports.intToBuffer(v)
24544 } else if (v === null || v === undefined) {
24545 v = Buffer.allocUnsafe(
0)
24546 } else if (v.toArray) {
24547 // converts a BN to a Buffer
24548 v = Buffer.from(v.toArray())
24550 throw new Error('invalid type')
24557 * Converts a `Buffer` to a `Number`
24558 * @param {Buffer} buf
24560 * @throws If the input number exceeds
53 bits.
24562 exports.bufferToInt = function (buf) {
24563 return new BN(exports.toBuffer(buf)).toNumber()
24567 * Converts a `Buffer` into a hex `String`
24568 * @param {Buffer} buf
24571 exports.bufferToHex = function (buf) {
24572 buf = exports.toBuffer(buf)
24573 return '
0x' + buf.toString('hex')
24577 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes
256-bit numbers.
24578 * @param {Buffer} num
24581 exports.fromSigned = function (num) {
24582 return new BN(num).fromTwos(
256)
24586 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes
256-bit numbers.
24590 exports.toUnsigned = function (num) {
24591 return Buffer.from(num.toTwos(
256).toArray())
24595 * Creates SHA-
3 hash of the input
24596 * @param {Buffer|Array|String|Number} a the input data
24597 * @param {Number} [bits=
256] the SHA width
24600 exports.sha3 = function (a, bits) {
24601 a = exports.toBuffer(a)
24602 if (!bits) bits =
256
24604 return createKeccakHash('keccak' + bits).update(a).digest()
24608 * Creates SHA256 hash of the input
24609 * @param {Buffer|Array|String|Number} a the input data
24612 exports.sha256 = function (a) {
24613 a = exports.toBuffer(a)
24614 return createHash('sha256').update(a).digest()
24618 * Creates RIPEMD160 hash of the input
24619 * @param {Buffer|Array|String|Number} a the input data
24620 * @param {Boolean} padded whether it should be padded to
256 bits or not
24623 exports.ripemd160 = function (a, padded) {
24624 a = exports.toBuffer(a)
24625 var hash = createHash('rmd160').update(a).digest()
24626 if (padded === true) {
24627 return exports.setLength(hash,
32)
24634 * Creates SHA-
3 hash of the RLP encoded version of the input
24635 * @param {Buffer|Array|String|Number} a the input data
24638 exports.rlphash = function (a) {
24639 return exports.sha3(rlp.encode(a))
24643 * Checks if the private key satisfies the rules of the curve secp256k1.
24644 * @param {Buffer} privateKey
24645 * @return {Boolean}
24647 exports.isValidPrivate = function (privateKey) {
24648 return secp256k1.privateKeyVerify(privateKey)
24652 * Checks if the public key satisfies the rules of the curve secp256k1
24653 * and the requirements of Ethereum.
24654 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
24655 * @param {Boolean} [sanitize=false] Accept public keys in other formats
24656 * @return {Boolean}
24658 exports.isValidPublic = function (publicKey, sanitize) {
24659 if (publicKey.length ===
64) {
24660 // Convert to SEC1 for secp256k1
24661 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([
4]), publicKey ]))
24668 return secp256k1.publicKeyVerify(publicKey)
24672 * Returns the ethereum address of a given public key.
24673 * Accepts
"Ethereum public keys" and SEC1 encoded keys.
24674 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
24675 * @param {Boolean} [sanitize=false] Accept public keys in other formats
24678 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
24679 pubKey = exports.toBuffer(pubKey)
24680 if (sanitize && (pubKey.length !==
64)) {
24681 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(
1)
24683 assert(pubKey.length ===
64)
24684 // Only take the lower
160bits of the hash
24685 return exports.sha3(pubKey).slice(-
20)
24689 * Returns the ethereum public key of a given private key
24690 * @param {Buffer} privateKey A private key must be
256 bits wide
24693 var privateToPublic = exports.privateToPublic = function (privateKey) {
24694 privateKey = exports.toBuffer(privateKey)
24695 // skip the type flag and use the X, Y points
24696 return secp256k1.publicKeyCreate(privateKey, false).slice(
1)
24700 * Converts a public key to the Ethereum format.
24701 * @param {Buffer} publicKey
24704 exports.importPublic = function (publicKey) {
24705 publicKey = exports.toBuffer(publicKey)
24706 if (publicKey.length !==
64) {
24707 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(
1)
24714 * @param {Buffer} msgHash
24715 * @param {Buffer} privateKey
24718 exports.ecsign = function (msgHash, privateKey) {
24719 var sig = secp256k1.sign(msgHash, privateKey)
24722 ret.r = sig.signature.slice(
0,
32)
24723 ret.s = sig.signature.slice(
32,
64)
24724 ret.v = sig.recovery +
27
24729 * Returns the keccak-
256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
24730 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
24731 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
24732 * used to produce the signature.
24734 * @returns {Buffer} hash
24736 exports.hashPersonalMessage = function (message) {
24737 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
24738 return exports.sha3(Buffer.concat([prefix, message]))
24742 * ECDSA public key recovery from signature
24743 * @param {Buffer} msgHash
24744 * @param {Number} v
24745 * @param {Buffer} r
24746 * @param {Buffer} s
24747 * @return {Buffer} publicKey
24749 exports.ecrecover = function (msgHash, v, r, s) {
24750 var signature = Buffer.concat([exports.setLength(r,
32), exports.setLength(s,
32)],
64)
24751 var recovery = v -
27
24752 if (recovery !==
0 && recovery !==
1) {
24753 throw new Error('Invalid signature v value')
24755 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
24756 return secp256k1.publicKeyConvert(senderPubKey, false).slice(
1)
24760 * Convert signature parameters into the format of `eth_sign` RPC method
24761 * @param {Number} v
24762 * @param {Buffer} r
24763 * @param {Buffer} s
24764 * @return {String} sig
24766 exports.toRpcSig = function (v, r, s) {
24767 // NOTE: with potential introduction of chainId this might need to be updated
24768 if (v !==
27 && v !==
28) {
24769 throw new Error('Invalid recovery id')
24772 // geth (and the RPC eth_sign method) uses the
65 byte format used by Bitcoin
24773 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/
2053
24774 return exports.bufferToHex(Buffer.concat([
24775 exports.setLengthLeft(r,
32),
24776 exports.setLengthLeft(s,
32),
24777 exports.toBuffer(v -
27)
24782 * Convert signature format of the `eth_sign` RPC method to signature parameters
24783 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/
2053
24784 * @param {String} sig
24787 exports.fromRpcSig = function (sig) {
24788 sig = exports.toBuffer(sig)
24790 // NOTE: with potential introduction of chainId this might need to be updated
24791 if (sig.length !==
65) {
24792 throw new Error('Invalid signature length')
24796 // support both versions of `eth_sign` responses
24803 r: sig.slice(
0,
32),
24804 s: sig.slice(
32,
64)
24809 * Returns the ethereum address of a given private key
24810 * @param {Buffer} privateKey A private key must be
256 bits wide
24813 exports.privateToAddress = function (privateKey) {
24814 return exports.publicToAddress(privateToPublic(privateKey))
24818 * Checks if the address is a valid. Accepts checksummed addresses too
24819 * @param {String} address
24820 * @return {Boolean}
24822 exports.isValidAddress = function (address) {
24823 return /^
0x[
0-
9a-fA-F]{
40}$/i.test(address)
24827 * Returns a checksummed address
24828 * @param {String} address
24831 exports.toChecksumAddress = function (address) {
24832 address = exports.stripHexPrefix(address).toLowerCase()
24833 var hash = exports.sha3(address).toString('hex')
24836 for (var i =
0; i < address.length; i++) {
24837 if (parseInt(hash[i],
16)
>=
8) {
24838 ret += address[i].toUpperCase()
24848 * Checks if the address is a valid checksummed address
24849 * @param {Buffer} address
24850 * @return {Boolean}
24852 exports.isValidChecksumAddress = function (address) {
24853 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
24857 * Generates an address of a newly created contract
24858 * @param {Buffer} from the address which is creating this new address
24859 * @param {Buffer} nonce the nonce of the from account
24862 exports.generateAddress = function (from, nonce) {
24863 from = exports.toBuffer(from)
24864 nonce = new BN(nonce)
24866 if (nonce.isZero()) {
24867 // in RLP we want to encode null in the case of zero nonce
24868 // read the RLP documentation for an answer if you dare
24871 nonce = Buffer.from(nonce.toArray())
24874 // Only take the lower
160bits of the hash
24875 return exports.rlphash([from, nonce]).slice(-
20)
24879 * Returns true if the supplied address belongs to a precompiled account
24880 * @param {Buffer|String} address
24881 * @return {Boolean}
24883 exports.isPrecompiled = function (address) {
24884 var a = exports.unpad(address)
24885 return a.length ===
1 && a[
0]
> 0 && a[
0] <
5
24889 * Adds
"0x" to a given `String` if it does not already start with
"0x"
24890 * @param {String} str
24893 exports.addHexPrefix = function (str) {
24894 if (typeof str !== 'string') {
24898 return exports.isHexPrefixed(str) ? str : '
0x' + str
24902 * Validate ECDSA signature
24903 * @method isValidSignature
24904 * @param {Buffer} v
24905 * @param {Buffer} r
24906 * @param {Buffer} s
24907 * @param {Boolean} [homestead=true]
24908 * @return {Boolean}
24911 exports.isValidSignature = function (v, r, s, homestead) {
24912 const SECP256K1_N_DIV_2 = new BN('
7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',
16)
24913 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141',
16)
24915 if (r.length !==
32 || s.length !==
32) {
24919 if (v !==
27 && v !==
28) {
24926 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
24930 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) ===
1)) {
24938 * Converts a `Buffer` or `Array` to JSON
24939 * @param {Buffer|Array} ba
24940 * @return {Array|String|null}
24942 exports.baToJSON = function (ba) {
24943 if (Buffer.isBuffer(ba)) {
24944 return '
0x' + ba.toString('hex')
24945 } else if (ba instanceof Array) {
24947 for (var i =
0; i < ba.length; i++) {
24948 array.push(exports.baToJSON(ba[i]))
24955 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
24956 * @param {Object} self the `Object` to define properties on
24957 * @param {Array} fields an array fields to define. Fields can contain:
24958 * * `name` - the name of the properties
24959 * * `length` - the number of bytes the field can have
24960 * * `allowLess` - if the field can be less than the length
24962 * @param {*} data data to be validated against the definitions
24964 exports.defineProperties = function (self, fields, data) {
24968 // attach the `toJSON`
24969 self.toJSON = function (label) {
24972 self._fields.forEach(function (field) {
24973 obj[field] = '
0x' + self[field].toString('hex')
24977 return exports.baToJSON(this.raw)
24980 self.serialize = function serialize () {
24981 return rlp.encode(self.raw)
24984 fields.forEach(function (field, i) {
24985 self._fields.push(field.name)
24986 function getter () {
24989 function setter (v) {
24990 v = exports.toBuffer(v)
24992 if (v.toString('hex') === '
00' && !field.allowZero) {
24993 v = Buffer.allocUnsafe(
0)
24996 if (field.allowLess && field.length) {
24997 v = exports.stripZeros(v)
24998 assert(field.length
>= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
24999 } else if (!(field.allowZero && v.length ===
0) && field.length) {
25000 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
25006 Object.defineProperty(self, field.name, {
25008 configurable: true,
25013 if (field.default) {
25014 self[field.name] = field.default
25019 Object.defineProperty(self, field.alias, {
25021 configurable: true,
25028 // if the constuctor is passed data
25030 if (typeof data === 'string') {
25031 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
25034 if (Buffer.isBuffer(data)) {
25035 data = rlp.decode(data)
25038 if (Array.isArray(data)) {
25039 if (data.length
> self._fields.length) {
25040 throw (new Error('wrong number of fields in data'))
25043 // make sure all the items are buffers
25044 data.forEach(function (d, i) {
25045 self[self._fields[i]] = exports.toBuffer(d)
25047 } else if (typeof data === 'object') {
25048 const keys = Object.keys(data)
25049 fields.forEach(function (field) {
25050 if (keys.indexOf(field.name) !== -
1) self[field.name] = data[field.name]
25051 if (keys.indexOf(field.alias) !== -
1) self[field.alias] = data[field.alias]
25054 throw new Error('invalid data')
25059 }).call(this,require("buffer").Buffer)
25060 },{"assert":
1,"bn.js":
33,"buffer":
5,"create-hash":
36,"ethjs-util":
56,"keccak":
65,"rlp":
72,"secp256k1":
73}],
32:[function(require,module,exports){
25061 (function (Buffer){
25062 // Reference https://github.com/bitcoin/bips/blob/master/bip-
0066.mediawiki
25063 // Format:
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
25064 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
25066 function check (buffer) {
25067 if (buffer.length <
8) return false
25068 if (buffer.length
> 72) return false
25069 if (buffer[
0] !==
0x30) return false
25070 if (buffer[
1] !== buffer.length -
2) return false
25071 if (buffer[
2] !==
0x02) return false
25073 var lenR = buffer[
3]
25074 if (lenR ===
0) return false
25075 if (
5 + lenR
>= buffer.length) return false
25076 if (buffer[
4 + lenR] !==
0x02) return false
25078 var lenS = buffer[
5 + lenR]
25079 if (lenS ===
0) return false
25080 if ((
6 + lenR + lenS) !== buffer.length) return false
25082 if (buffer[
4] &
0x80) return false
25083 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) return false
25085 if (buffer[lenR +
6] &
0x80) return false
25086 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) return false
25090 function decode (buffer) {
25091 if (buffer.length <
8) throw new Error('DER sequence length is too short')
25092 if (buffer.length
> 72) throw new Error('DER sequence length is too long')
25093 if (buffer[
0] !==
0x30) throw new Error('Expected DER sequence')
25094 if (buffer[
1] !== buffer.length -
2) throw new Error('DER sequence length is invalid')
25095 if (buffer[
2] !==
0x02) throw new Error('Expected DER integer')
25097 var lenR = buffer[
3]
25098 if (lenR ===
0) throw new Error('R length is zero')
25099 if (
5 + lenR
>= buffer.length) throw new Error('R length is too long')
25100 if (buffer[
4 + lenR] !==
0x02) throw new Error('Expected DER integer (
2)')
25102 var lenS = buffer[
5 + lenR]
25103 if (lenS ===
0) throw new Error('S length is zero')
25104 if ((
6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
25106 if (buffer[
4] &
0x80) throw new Error('R value is negative')
25107 if (lenR
> 1 && (buffer[
4] ===
0x00) && !(buffer[
5] &
0x80)) throw new Error('R value excessively padded')
25109 if (buffer[lenR +
6] &
0x80) throw new Error('S value is negative')
25110 if (lenS
> 1 && (buffer[lenR +
6] ===
0x00) && !(buffer[lenR +
7] &
0x80)) throw new Error('S value excessively padded')
25112 // non-BIP66 - extract R, S values
25114 r: buffer.slice(
4,
4 + lenR),
25115 s: buffer.slice(
6 + lenR)
25120 * Expects r and s to be positive DER integers.
25122 * The DER format uses the most significant bit as a sign bit (&
0x80).
25123 * If the significant bit is set AND the integer is positive, a
0x00 is prepended.
25138 *
62300 =
> 0x00f35c
25139 * -
62300 =
> 0xff0ca4
25141 function encode (r, s) {
25142 var lenR = r.length
25143 var lenS = s.length
25144 if (lenR ===
0) throw new Error('R length is zero')
25145 if (lenS ===
0) throw new Error('S length is zero')
25146 if (lenR
> 33) throw new Error('R length is too long')
25147 if (lenS
> 33) throw new Error('S length is too long')
25148 if (r[
0] &
0x80) throw new Error('R value is negative')
25149 if (s[
0] &
0x80) throw new Error('S value is negative')
25150 if (lenR
> 1 && (r[
0] ===
0x00) && !(r[
1] &
0x80)) throw new Error('R value excessively padded')
25151 if (lenS
> 1 && (s[
0] ===
0x00) && !(s[
1] &
0x80)) throw new Error('S value excessively padded')
25153 var signature = new Buffer(
6 + lenR + lenS)
25155 //
0x30 [total-length]
0x02 [R-length] [R]
0x02 [S-length] [S]
25156 signature[
0] =
0x30
25157 signature[
1] = signature.length -
2
25158 signature[
2] =
0x02
25159 signature[
3] = r.length
25160 r.copy(signature,
4)
25161 signature[
4 + lenR] =
0x02
25162 signature[
5 + lenR] = s.length
25163 s.copy(signature,
6 + lenR)
25174 }).call(this,require(
"buffer").Buffer)
25175 },{
"buffer":
5}],
33:[function(require,module,exports){
25176 (function (module, exports) {
25180 function assert (val, msg) {
25181 if (!val) throw new Error(msg || 'Assertion failed');
25184 // Could use `inherits` module, but don't want to move from single file
25185 // architecture yet.
25186 function inherits (ctor, superCtor) {
25187 ctor.super_ = superCtor;
25188 var TempCtor = function () {};
25189 TempCtor.prototype = superCtor.prototype;
25190 ctor.prototype = new TempCtor();
25191 ctor.prototype.constructor = ctor;
25196 function BN (number, base, endian) {
25197 if (BN.isBN(number)) {
25205 // Reduction context
25208 if (number !== null) {
25209 if (base === 'le' || base === 'be') {
25214 this._init(number ||
0, base ||
10, endian || 'be');
25217 if (typeof module === 'object') {
25218 module.exports = BN;
25228 Buffer = require('buf' + 'fer').Buffer;
25232 BN.isBN = function isBN (num) {
25233 if (num instanceof BN) {
25237 return num !== null && typeof num === 'object' &&
25238 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
25241 BN.max = function max (left, right) {
25242 if (left.cmp(right)
> 0) return left;
25246 BN.min = function min (left, right) {
25247 if (left.cmp(right) <
0) return left;
25251 BN.prototype._init = function init (number, base, endian) {
25252 if (typeof number === 'number') {
25253 return this._initNumber(number, base, endian);
25256 if (typeof number === 'object') {
25257 return this._initArray(number, base, endian);
25260 if (base === 'hex') {
25263 assert(base === (base |
0) && base
>=
2 && base <=
36);
25265 number = number.toString().replace(/\s+/g, '');
25267 if (number[
0] === '-') {
25272 this._parseHex(number, start);
25274 this._parseBase(number, base, start);
25277 if (number[
0] === '-') {
25283 if (endian !== 'le') return;
25285 this._initArray(this.toArray(), base, endian);
25288 BN.prototype._initNumber = function _initNumber (number, base, endian) {
25293 if (number <
0x4000000) {
25294 this.words = [ number &
0x3ffffff ];
25296 } else if (number <
0x10000000000000) {
25298 number &
0x3ffffff,
25299 (number /
0x4000000) &
0x3ffffff
25303 assert(number <
0x20000000000000); //
2 ^
53 (unsafe)
25305 number &
0x3ffffff,
25306 (number /
0x4000000) &
0x3ffffff,
25312 if (endian !== 'le') return;
25314 // Reverse the bytes
25315 this._initArray(this.toArray(), base, endian);
25318 BN.prototype._initArray = function _initArray (number, base, endian) {
25319 // Perhaps a Uint8Array
25320 assert(typeof number.length === 'number');
25321 if (number.length <=
0) {
25322 this.words = [
0 ];
25327 this.length = Math.ceil(number.length /
3);
25328 this.words = new Array(this.length);
25329 for (var i =
0; i < this.length; i++) {
25335 if (endian === 'be') {
25336 for (i = number.length -
1, j =
0; i
>=
0; i -=
3) {
25337 w = number[i] | (number[i -
1] <<
8) | (number[i -
2] <<
16);
25338 this.words[j] |= (w << off) &
0x3ffffff;
25339 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
25346 } else if (endian === 'le') {
25347 for (i =
0, j =
0; i < number.length; i +=
3) {
25348 w = number[i] | (number[i +
1] <<
8) | (number[i +
2] <<
16);
25349 this.words[j] |= (w << off) &
0x3ffffff;
25350 this.words[j +
1] = (w
>>> (
26 - off)) &
0x3ffffff;
25358 return this.strip();
25361 function parseHex (str, start, end) {
25363 var len = Math.min(str.length, end);
25364 for (var i = start; i < len; i++) {
25365 var c = str.charCodeAt(i) -
48;
25370 if (c
>=
49 && c <=
54) {
25374 } else if (c
>=
17 && c <=
22) {
25385 BN.prototype._parseHex = function _parseHex (number, start) {
25386 // Create possibly bigger array to ensure that it fits the number
25387 this.length = Math.ceil((number.length - start) /
6);
25388 this.words = new Array(this.length);
25389 for (var i =
0; i < this.length; i++) {
25394 // Scan
24-bit chunks and add them to the number
25396 for (i = number.length -
6, j =
0; i
>= start; i -=
6) {
25397 w = parseHex(number, i, i +
6);
25398 this.words[j] |= (w << off) &
0x3ffffff;
25399 // NOTE: `
0x3fffff` is intentional here,
26bits max shift +
24bit hex limb
25400 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
25407 if (i +
6 !== start) {
25408 w = parseHex(number, start, i +
6);
25409 this.words[j] |= (w << off) &
0x3ffffff;
25410 this.words[j +
1] |= w
>>> (
26 - off) &
0x3fffff;
25415 function parseBase (str, start, end, mul) {
25417 var len = Math.min(str.length, end);
25418 for (var i = start; i < len; i++) {
25419 var c = str.charCodeAt(i) -
48;
25428 } else if (c
>=
17) {
25439 BN.prototype._parseBase = function _parseBase (number, base, start) {
25440 // Initialize as zero
25441 this.words = [
0 ];
25444 // Find length of limb in base
25445 for (var limbLen =
0, limbPow =
1; limbPow <=
0x3ffffff; limbPow *= base) {
25449 limbPow = (limbPow / base) |
0;
25451 var total = number.length - start;
25452 var mod = total % limbLen;
25453 var end = Math.min(total, total - mod) + start;
25456 for (var i = start; i < end; i += limbLen) {
25457 word = parseBase(number, i, i + limbLen, base);
25459 this.imuln(limbPow);
25460 if (this.words[
0] + word <
0x4000000) {
25461 this.words[
0] += word;
25469 word = parseBase(number, i, number.length, base);
25471 for (i =
0; i < mod; i++) {
25476 if (this.words[
0] + word <
0x4000000) {
25477 this.words[
0] += word;
25484 BN.prototype.copy = function copy (dest) {
25485 dest.words = new Array(this.length);
25486 for (var i =
0; i < this.length; i++) {
25487 dest.words[i] = this.words[i];
25489 dest.length = this.length;
25490 dest.negative = this.negative;
25491 dest.red = this.red;
25494 BN.prototype.clone = function clone () {
25495 var r = new BN(null);
25500 BN.prototype._expand = function _expand (size) {
25501 while (this.length < size) {
25502 this.words[this.length++] =
0;
25507 // Remove leading `
0` from `this`
25508 BN.prototype.strip = function strip () {
25509 while (this.length
> 1 && this.words[this.length -
1] ===
0) {
25512 return this._normSign();
25515 BN.prototype._normSign = function _normSign () {
25517 if (this.length ===
1 && this.words[
0] ===
0) {
25523 BN.prototype.inspect = function inspect () {
25524 return (this.red ? '
<BN-R: ' : '
<BN: ') + this.toString(
16) + '
>';
25530 var groupSizes = [];
25531 var groupBases = [];
25535 while (++i < BN.wordSize) {
25544 while (++base <
36 +
1) {
25547 while (groupBase < (
1 << BN.wordSize) / base) {
25551 groupSizes[base] = groupSize;
25552 groupBases[base] = groupBase;
25574 '
0000000000000000',
25575 '
00000000000000000',
25576 '
000000000000000000',
25577 '
0000000000000000000',
25578 '
00000000000000000000',
25579 '
000000000000000000000',
25580 '
0000000000000000000000',
25581 '
00000000000000000000000',
25582 '
000000000000000000000000',
25583 '
0000000000000000000000000'
25588 25,
16,
12,
11,
10,
9,
8,
25589 8,
7,
7,
7,
7,
6,
6,
25590 6,
6,
6,
6,
6,
5,
5,
25591 5,
5,
5,
5,
5,
5,
5,
25592 5,
5,
5,
5,
5,
5,
5
25597 33554432,
43046721,
16777216,
48828125,
60466176,
40353607,
16777216,
25598 43046721,
10000000,
19487171,
35831808,
62748517,
7529536,
11390625,
25599 16777216,
24137569,
34012224,
47045881,
64000000,
4084101,
5153632,
25600 6436343,
7962624,
9765625,
11881376,
14348907,
17210368,
20511149,
25601 24300000,
28629151,
33554432,
39135393,
45435424,
52521875,
60466176
25604 BN.prototype.toString = function toString (base, padding) {
25606 padding = padding |
0 ||
1;
25609 if (base ===
16 || base === 'hex') {
25613 for (var i =
0; i < this.length; i++) {
25614 var w = this.words[i];
25615 var word = (((w << off) | carry) &
0xffffff).toString(
16);
25616 carry = (w
>>> (
24 - off)) &
0xffffff;
25617 if (carry !==
0 || i !== this.length -
1) {
25618 out = zeros[
6 - word.length] + word + out;
25629 out = carry.toString(
16) + out;
25631 while (out.length % padding !==
0) {
25634 if (this.negative !==
0) {
25640 if (base === (base |
0) && base
>=
2 && base <=
36) {
25641 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
25642 var groupSize = groupSizes[base];
25643 // var groupBase = Math.pow(base, groupSize);
25644 var groupBase = groupBases[base];
25646 var c = this.clone();
25648 while (!c.isZero()) {
25649 var r = c.modn(groupBase).toString(base);
25650 c = c.idivn(groupBase);
25653 out = zeros[groupSize - r.length] + r + out;
25658 if (this.isZero()) {
25661 while (out.length % padding !==
0) {
25664 if (this.negative !==
0) {
25670 assert(false, 'Base should be between
2 and
36');
25673 BN.prototype.toNumber = function toNumber () {
25674 var ret = this.words[
0];
25675 if (this.length ===
2) {
25676 ret += this.words[
1] *
0x4000000;
25677 } else if (this.length ===
3 && this.words[
2] ===
0x01) {
25678 // NOTE: at this stage it is known that the top bit is set
25679 ret +=
0x10000000000000 + (this.words[
1] *
0x4000000);
25680 } else if (this.length
> 2) {
25681 assert(false, 'Number can only safely store up to
53 bits');
25683 return (this.negative !==
0) ? -ret : ret;
25686 BN.prototype.toJSON = function toJSON () {
25687 return this.toString(
16);
25690 BN.prototype.toBuffer = function toBuffer (endian, length) {
25691 assert(typeof Buffer !== 'undefined');
25692 return this.toArrayLike(Buffer, endian, length);
25695 BN.prototype.toArray = function toArray (endian, length) {
25696 return this.toArrayLike(Array, endian, length);
25699 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
25700 var byteLength = this.byteLength();
25701 var reqLength = length || Math.max(
1, byteLength);
25702 assert(byteLength <= reqLength, 'byte array longer than desired length');
25703 assert(reqLength
> 0, 'Requested array length <=
0');
25706 var littleEndian = endian === 'le';
25707 var res = new ArrayType(reqLength);
25710 var q = this.clone();
25711 if (!littleEndian) {
25712 // Assume big-endian
25713 for (i =
0; i < reqLength - byteLength; i++) {
25717 for (i =
0; !q.isZero(); i++) {
25721 res[reqLength - i -
1] = b;
25724 for (i =
0; !q.isZero(); i++) {
25731 for (; i < reqLength; i++) {
25740 BN.prototype._countBits = function _countBits (w) {
25741 return
32 - Math.clz32(w);
25744 BN.prototype._countBits = function _countBits (w) {
25767 BN.prototype._zeroBits = function _zeroBits (w) {
25769 if (w ===
0) return
26;
25773 if ((t &
0x1fff) ===
0) {
25777 if ((t &
0x7f) ===
0) {
25781 if ((t &
0xf) ===
0) {
25785 if ((t &
0x3) ===
0) {
25789 if ((t &
0x1) ===
0) {
25795 // Return number of used bits in a BN
25796 BN.prototype.bitLength = function bitLength () {
25797 var w = this.words[this.length -
1];
25798 var hi = this._countBits(w);
25799 return (this.length -
1) *
26 + hi;
25802 function toBitArray (num) {
25803 var w = new Array(num.bitLength());
25805 for (var bit =
0; bit < w.length; bit++) {
25806 var off = (bit /
26) |
0;
25807 var wbit = bit %
26;
25809 w[bit] = (num.words[off] & (
1 << wbit))
>>> wbit;
25815 // Number of trailing zero bits
25816 BN.prototype.zeroBits = function zeroBits () {
25817 if (this.isZero()) return
0;
25820 for (var i =
0; i < this.length; i++) {
25821 var b = this._zeroBits(this.words[i]);
25823 if (b !==
26) break;
25828 BN.prototype.byteLength = function byteLength () {
25829 return Math.ceil(this.bitLength() /
8);
25832 BN.prototype.toTwos = function toTwos (width) {
25833 if (this.negative !==
0) {
25834 return this.abs().inotn(width).iaddn(
1);
25836 return this.clone();
25839 BN.prototype.fromTwos = function fromTwos (width) {
25840 if (this.testn(width -
1)) {
25841 return this.notn(width).iaddn(
1).ineg();
25843 return this.clone();
25846 BN.prototype.isNeg = function isNeg () {
25847 return this.negative !==
0;
25850 // Return negative clone of `this`
25851 BN.prototype.neg = function neg () {
25852 return this.clone().ineg();
25855 BN.prototype.ineg = function ineg () {
25856 if (!this.isZero()) {
25857 this.negative ^=
1;
25863 // Or `num` with `this` in-place
25864 BN.prototype.iuor = function iuor (num) {
25865 while (this.length < num.length) {
25866 this.words[this.length++] =
0;
25869 for (var i =
0; i < num.length; i++) {
25870 this.words[i] = this.words[i] | num.words[i];
25873 return this.strip();
25876 BN.prototype.ior = function ior (num) {
25877 assert((this.negative | num.negative) ===
0);
25878 return this.iuor(num);
25881 // Or `num` with `this`
25882 BN.prototype.or = function or (num) {
25883 if (this.length
> num.length) return this.clone().ior(num);
25884 return num.clone().ior(this);
25887 BN.prototype.uor = function uor (num) {
25888 if (this.length
> num.length) return this.clone().iuor(num);
25889 return num.clone().iuor(this);
25892 // And `num` with `this` in-place
25893 BN.prototype.iuand = function iuand (num) {
25894 // b = min-length(num, this)
25896 if (this.length
> num.length) {
25902 for (var i =
0; i < b.length; i++) {
25903 this.words[i] = this.words[i] & num.words[i];
25906 this.length = b.length;
25908 return this.strip();
25911 BN.prototype.iand = function iand (num) {
25912 assert((this.negative | num.negative) ===
0);
25913 return this.iuand(num);
25916 // And `num` with `this`
25917 BN.prototype.and = function and (num) {
25918 if (this.length
> num.length) return this.clone().iand(num);
25919 return num.clone().iand(this);
25922 BN.prototype.uand = function uand (num) {
25923 if (this.length
> num.length) return this.clone().iuand(num);
25924 return num.clone().iuand(this);
25927 // Xor `num` with `this` in-place
25928 BN.prototype.iuxor = function iuxor (num) {
25929 // a.length
> b.length
25932 if (this.length
> num.length) {
25940 for (var i =
0; i < b.length; i++) {
25941 this.words[i] = a.words[i] ^ b.words[i];
25945 for (; i < a.length; i++) {
25946 this.words[i] = a.words[i];
25950 this.length = a.length;
25952 return this.strip();
25955 BN.prototype.ixor = function ixor (num) {
25956 assert((this.negative | num.negative) ===
0);
25957 return this.iuxor(num);
25960 // Xor `num` with `this`
25961 BN.prototype.xor = function xor (num) {
25962 if (this.length
> num.length) return this.clone().ixor(num);
25963 return num.clone().ixor(this);
25966 BN.prototype.uxor = function uxor (num) {
25967 if (this.length
> num.length) return this.clone().iuxor(num);
25968 return num.clone().iuxor(this);
25971 // Not ``this`` with ``width`` bitwidth
25972 BN.prototype.inotn = function inotn (width) {
25973 assert(typeof width === 'number' && width
>=
0);
25975 var bytesNeeded = Math.ceil(width /
26) |
0;
25976 var bitsLeft = width %
26;
25978 // Extend the buffer with leading zeroes
25979 this._expand(bytesNeeded);
25981 if (bitsLeft
> 0) {
25985 // Handle complete words
25986 for (var i =
0; i < bytesNeeded; i++) {
25987 this.words[i] = ~this.words[i] &
0x3ffffff;
25990 // Handle the residue
25991 if (bitsLeft
> 0) {
25992 this.words[i] = ~this.words[i] & (
0x3ffffff >> (
26 - bitsLeft));
25995 // And remove leading zeroes
25996 return this.strip();
25999 BN.prototype.notn = function notn (width) {
26000 return this.clone().inotn(width);
26003 // Set `bit` of `this`
26004 BN.prototype.setn = function setn (bit, val) {
26005 assert(typeof bit === 'number' && bit
>=
0);
26007 var off = (bit /
26) |
0;
26008 var wbit = bit %
26;
26010 this._expand(off +
1);
26013 this.words[off] = this.words[off] | (
1 << wbit);
26015 this.words[off] = this.words[off] & ~(
1 << wbit);
26018 return this.strip();
26021 // Add `num` to `this` in-place
26022 BN.prototype.iadd = function iadd (num) {
26025 // negative + positive
26026 if (this.negative !==
0 && num.negative ===
0) {
26028 r = this.isub(num);
26029 this.negative ^=
1;
26030 return this._normSign();
26032 // positive + negative
26033 } else if (this.negative ===
0 && num.negative !==
0) {
26035 r = this.isub(num);
26037 return r._normSign();
26040 // a.length
> b.length
26042 if (this.length
> num.length) {
26051 for (var i =
0; i < b.length; i++) {
26052 r = (a.words[i] |
0) + (b.words[i] |
0) + carry;
26053 this.words[i] = r &
0x3ffffff;
26056 for (; carry !==
0 && i < a.length; i++) {
26057 r = (a.words[i] |
0) + carry;
26058 this.words[i] = r &
0x3ffffff;
26062 this.length = a.length;
26064 this.words[this.length] = carry;
26066 // Copy the rest of the words
26067 } else if (a !== this) {
26068 for (; i < a.length; i++) {
26069 this.words[i] = a.words[i];
26076 // Add `num` to `this`
26077 BN.prototype.add = function add (num) {
26079 if (num.negative !==
0 && this.negative ===
0) {
26081 res = this.sub(num);
26084 } else if (num.negative ===
0 && this.negative !==
0) {
26086 res = num.sub(this);
26091 if (this.length
> num.length) return this.clone().iadd(num);
26093 return num.clone().iadd(this);
26096 // Subtract `num` from `this` in-place
26097 BN.prototype.isub = function isub (num) {
26098 // this - (-num) = this + num
26099 if (num.negative !==
0) {
26101 var r = this.iadd(num);
26103 return r._normSign();
26105 // -this - num = -(this + num)
26106 } else if (this.negative !==
0) {
26110 return this._normSign();
26113 // At this point both numbers are positive
26114 var cmp = this.cmp(num);
26116 // Optimization - zeroify
26135 for (var i =
0; i < b.length; i++) {
26136 r = (a.words[i] |
0) - (b.words[i] |
0) + carry;
26138 this.words[i] = r &
0x3ffffff;
26140 for (; carry !==
0 && i < a.length; i++) {
26141 r = (a.words[i] |
0) + carry;
26143 this.words[i] = r &
0x3ffffff;
26146 // Copy rest of the words
26147 if (carry ===
0 && i < a.length && a !== this) {
26148 for (; i < a.length; i++) {
26149 this.words[i] = a.words[i];
26153 this.length = Math.max(this.length, i);
26159 return this.strip();
26162 // Subtract `num` from `this`
26163 BN.prototype.sub = function sub (num) {
26164 return this.clone().isub(num);
26167 function smallMulTo (self, num, out) {
26168 out.negative = num.negative ^ self.negative;
26169 var len = (self.length + num.length) |
0;
26171 len = (len -
1) |
0;
26173 // Peel one iteration (compiler can't do it, because of code complexity)
26174 var a = self.words[
0] |
0;
26175 var b = num.words[
0] |
0;
26178 var lo = r &
0x3ffffff;
26179 var carry = (r /
0x4000000) |
0;
26182 for (var k =
1; k < len; k++) {
26183 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
26184 // note that ncarry could be
>=
0x3ffffff
26185 var ncarry = carry
>>> 26;
26186 var rword = carry &
0x3ffffff;
26187 var maxJ = Math.min(k, num.length -
1);
26188 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
26189 var i = (k - j) |
0;
26190 a = self.words[i] |
0;
26191 b = num.words[j] |
0;
26193 ncarry += (r /
0x4000000) |
0;
26194 rword = r &
0x3ffffff;
26196 out.words[k] = rword |
0;
26197 carry = ncarry |
0;
26200 out.words[k] = carry |
0;
26205 return out.strip();
26208 // TODO(indutny): it may be reasonable to omit it for users who don't need
26209 // to work with
256-bit numbers, otherwise it gives
20% improvement for
256-bit
26210 // multiplication (like elliptic secp256k1).
26211 var comb10MulTo = function comb10MulTo (self, num, out) {
26212 var a = self.words;
26220 var al0 = a0 &
0x1fff;
26221 var ah0 = a0
>>> 13;
26223 var al1 = a1 &
0x1fff;
26224 var ah1 = a1
>>> 13;
26226 var al2 = a2 &
0x1fff;
26227 var ah2 = a2
>>> 13;
26229 var al3 = a3 &
0x1fff;
26230 var ah3 = a3
>>> 13;
26232 var al4 = a4 &
0x1fff;
26233 var ah4 = a4
>>> 13;
26235 var al5 = a5 &
0x1fff;
26236 var ah5 = a5
>>> 13;
26238 var al6 = a6 &
0x1fff;
26239 var ah6 = a6
>>> 13;
26241 var al7 = a7 &
0x1fff;
26242 var ah7 = a7
>>> 13;
26244 var al8 = a8 &
0x1fff;
26245 var ah8 = a8
>>> 13;
26247 var al9 = a9 &
0x1fff;
26248 var ah9 = a9
>>> 13;
26250 var bl0 = b0 &
0x1fff;
26251 var bh0 = b0
>>> 13;
26253 var bl1 = b1 &
0x1fff;
26254 var bh1 = b1
>>> 13;
26256 var bl2 = b2 &
0x1fff;
26257 var bh2 = b2
>>> 13;
26259 var bl3 = b3 &
0x1fff;
26260 var bh3 = b3
>>> 13;
26262 var bl4 = b4 &
0x1fff;
26263 var bh4 = b4
>>> 13;
26265 var bl5 = b5 &
0x1fff;
26266 var bh5 = b5
>>> 13;
26268 var bl6 = b6 &
0x1fff;
26269 var bh6 = b6
>>> 13;
26271 var bl7 = b7 &
0x1fff;
26272 var bh7 = b7
>>> 13;
26274 var bl8 = b8 &
0x1fff;
26275 var bh8 = b8
>>> 13;
26277 var bl9 = b9 &
0x1fff;
26278 var bh9 = b9
>>> 13;
26280 out.negative = self.negative ^ num.negative;
26283 lo = Math.imul(al0, bl0);
26284 mid = Math.imul(al0, bh0);
26285 mid = (mid + Math.imul(ah0, bl0)) |
0;
26286 hi = Math.imul(ah0, bh0);
26287 var w0 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26288 c = (((hi + (mid
>>> 13)) |
0) + (w0
>>> 26)) |
0;
26291 lo = Math.imul(al1, bl0);
26292 mid = Math.imul(al1, bh0);
26293 mid = (mid + Math.imul(ah1, bl0)) |
0;
26294 hi = Math.imul(ah1, bh0);
26295 lo = (lo + Math.imul(al0, bl1)) |
0;
26296 mid = (mid + Math.imul(al0, bh1)) |
0;
26297 mid = (mid + Math.imul(ah0, bl1)) |
0;
26298 hi = (hi + Math.imul(ah0, bh1)) |
0;
26299 var w1 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26300 c = (((hi + (mid
>>> 13)) |
0) + (w1
>>> 26)) |
0;
26303 lo = Math.imul(al2, bl0);
26304 mid = Math.imul(al2, bh0);
26305 mid = (mid + Math.imul(ah2, bl0)) |
0;
26306 hi = Math.imul(ah2, bh0);
26307 lo = (lo + Math.imul(al1, bl1)) |
0;
26308 mid = (mid + Math.imul(al1, bh1)) |
0;
26309 mid = (mid + Math.imul(ah1, bl1)) |
0;
26310 hi = (hi + Math.imul(ah1, bh1)) |
0;
26311 lo = (lo + Math.imul(al0, bl2)) |
0;
26312 mid = (mid + Math.imul(al0, bh2)) |
0;
26313 mid = (mid + Math.imul(ah0, bl2)) |
0;
26314 hi = (hi + Math.imul(ah0, bh2)) |
0;
26315 var w2 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26316 c = (((hi + (mid
>>> 13)) |
0) + (w2
>>> 26)) |
0;
26319 lo = Math.imul(al3, bl0);
26320 mid = Math.imul(al3, bh0);
26321 mid = (mid + Math.imul(ah3, bl0)) |
0;
26322 hi = Math.imul(ah3, bh0);
26323 lo = (lo + Math.imul(al2, bl1)) |
0;
26324 mid = (mid + Math.imul(al2, bh1)) |
0;
26325 mid = (mid + Math.imul(ah2, bl1)) |
0;
26326 hi = (hi + Math.imul(ah2, bh1)) |
0;
26327 lo = (lo + Math.imul(al1, bl2)) |
0;
26328 mid = (mid + Math.imul(al1, bh2)) |
0;
26329 mid = (mid + Math.imul(ah1, bl2)) |
0;
26330 hi = (hi + Math.imul(ah1, bh2)) |
0;
26331 lo = (lo + Math.imul(al0, bl3)) |
0;
26332 mid = (mid + Math.imul(al0, bh3)) |
0;
26333 mid = (mid + Math.imul(ah0, bl3)) |
0;
26334 hi = (hi + Math.imul(ah0, bh3)) |
0;
26335 var w3 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26336 c = (((hi + (mid
>>> 13)) |
0) + (w3
>>> 26)) |
0;
26339 lo = Math.imul(al4, bl0);
26340 mid = Math.imul(al4, bh0);
26341 mid = (mid + Math.imul(ah4, bl0)) |
0;
26342 hi = Math.imul(ah4, bh0);
26343 lo = (lo + Math.imul(al3, bl1)) |
0;
26344 mid = (mid + Math.imul(al3, bh1)) |
0;
26345 mid = (mid + Math.imul(ah3, bl1)) |
0;
26346 hi = (hi + Math.imul(ah3, bh1)) |
0;
26347 lo = (lo + Math.imul(al2, bl2)) |
0;
26348 mid = (mid + Math.imul(al2, bh2)) |
0;
26349 mid = (mid + Math.imul(ah2, bl2)) |
0;
26350 hi = (hi + Math.imul(ah2, bh2)) |
0;
26351 lo = (lo + Math.imul(al1, bl3)) |
0;
26352 mid = (mid + Math.imul(al1, bh3)) |
0;
26353 mid = (mid + Math.imul(ah1, bl3)) |
0;
26354 hi = (hi + Math.imul(ah1, bh3)) |
0;
26355 lo = (lo + Math.imul(al0, bl4)) |
0;
26356 mid = (mid + Math.imul(al0, bh4)) |
0;
26357 mid = (mid + Math.imul(ah0, bl4)) |
0;
26358 hi = (hi + Math.imul(ah0, bh4)) |
0;
26359 var w4 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26360 c = (((hi + (mid
>>> 13)) |
0) + (w4
>>> 26)) |
0;
26363 lo = Math.imul(al5, bl0);
26364 mid = Math.imul(al5, bh0);
26365 mid = (mid + Math.imul(ah5, bl0)) |
0;
26366 hi = Math.imul(ah5, bh0);
26367 lo = (lo + Math.imul(al4, bl1)) |
0;
26368 mid = (mid + Math.imul(al4, bh1)) |
0;
26369 mid = (mid + Math.imul(ah4, bl1)) |
0;
26370 hi = (hi + Math.imul(ah4, bh1)) |
0;
26371 lo = (lo + Math.imul(al3, bl2)) |
0;
26372 mid = (mid + Math.imul(al3, bh2)) |
0;
26373 mid = (mid + Math.imul(ah3, bl2)) |
0;
26374 hi = (hi + Math.imul(ah3, bh2)) |
0;
26375 lo = (lo + Math.imul(al2, bl3)) |
0;
26376 mid = (mid + Math.imul(al2, bh3)) |
0;
26377 mid = (mid + Math.imul(ah2, bl3)) |
0;
26378 hi = (hi + Math.imul(ah2, bh3)) |
0;
26379 lo = (lo + Math.imul(al1, bl4)) |
0;
26380 mid = (mid + Math.imul(al1, bh4)) |
0;
26381 mid = (mid + Math.imul(ah1, bl4)) |
0;
26382 hi = (hi + Math.imul(ah1, bh4)) |
0;
26383 lo = (lo + Math.imul(al0, bl5)) |
0;
26384 mid = (mid + Math.imul(al0, bh5)) |
0;
26385 mid = (mid + Math.imul(ah0, bl5)) |
0;
26386 hi = (hi + Math.imul(ah0, bh5)) |
0;
26387 var w5 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26388 c = (((hi + (mid
>>> 13)) |
0) + (w5
>>> 26)) |
0;
26391 lo = Math.imul(al6, bl0);
26392 mid = Math.imul(al6, bh0);
26393 mid = (mid + Math.imul(ah6, bl0)) |
0;
26394 hi = Math.imul(ah6, bh0);
26395 lo = (lo + Math.imul(al5, bl1)) |
0;
26396 mid = (mid + Math.imul(al5, bh1)) |
0;
26397 mid = (mid + Math.imul(ah5, bl1)) |
0;
26398 hi = (hi + Math.imul(ah5, bh1)) |
0;
26399 lo = (lo + Math.imul(al4, bl2)) |
0;
26400 mid = (mid + Math.imul(al4, bh2)) |
0;
26401 mid = (mid + Math.imul(ah4, bl2)) |
0;
26402 hi = (hi + Math.imul(ah4, bh2)) |
0;
26403 lo = (lo + Math.imul(al3, bl3)) |
0;
26404 mid = (mid + Math.imul(al3, bh3)) |
0;
26405 mid = (mid + Math.imul(ah3, bl3)) |
0;
26406 hi = (hi + Math.imul(ah3, bh3)) |
0;
26407 lo = (lo + Math.imul(al2, bl4)) |
0;
26408 mid = (mid + Math.imul(al2, bh4)) |
0;
26409 mid = (mid + Math.imul(ah2, bl4)) |
0;
26410 hi = (hi + Math.imul(ah2, bh4)) |
0;
26411 lo = (lo + Math.imul(al1, bl5)) |
0;
26412 mid = (mid + Math.imul(al1, bh5)) |
0;
26413 mid = (mid + Math.imul(ah1, bl5)) |
0;
26414 hi = (hi + Math.imul(ah1, bh5)) |
0;
26415 lo = (lo + Math.imul(al0, bl6)) |
0;
26416 mid = (mid + Math.imul(al0, bh6)) |
0;
26417 mid = (mid + Math.imul(ah0, bl6)) |
0;
26418 hi = (hi + Math.imul(ah0, bh6)) |
0;
26419 var w6 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26420 c = (((hi + (mid
>>> 13)) |
0) + (w6
>>> 26)) |
0;
26423 lo = Math.imul(al7, bl0);
26424 mid = Math.imul(al7, bh0);
26425 mid = (mid + Math.imul(ah7, bl0)) |
0;
26426 hi = Math.imul(ah7, bh0);
26427 lo = (lo + Math.imul(al6, bl1)) |
0;
26428 mid = (mid + Math.imul(al6, bh1)) |
0;
26429 mid = (mid + Math.imul(ah6, bl1)) |
0;
26430 hi = (hi + Math.imul(ah6, bh1)) |
0;
26431 lo = (lo + Math.imul(al5, bl2)) |
0;
26432 mid = (mid + Math.imul(al5, bh2)) |
0;
26433 mid = (mid + Math.imul(ah5, bl2)) |
0;
26434 hi = (hi + Math.imul(ah5, bh2)) |
0;
26435 lo = (lo + Math.imul(al4, bl3)) |
0;
26436 mid = (mid + Math.imul(al4, bh3)) |
0;
26437 mid = (mid + Math.imul(ah4, bl3)) |
0;
26438 hi = (hi + Math.imul(ah4, bh3)) |
0;
26439 lo = (lo + Math.imul(al3, bl4)) |
0;
26440 mid = (mid + Math.imul(al3, bh4)) |
0;
26441 mid = (mid + Math.imul(ah3, bl4)) |
0;
26442 hi = (hi + Math.imul(ah3, bh4)) |
0;
26443 lo = (lo + Math.imul(al2, bl5)) |
0;
26444 mid = (mid + Math.imul(al2, bh5)) |
0;
26445 mid = (mid + Math.imul(ah2, bl5)) |
0;
26446 hi = (hi + Math.imul(ah2, bh5)) |
0;
26447 lo = (lo + Math.imul(al1, bl6)) |
0;
26448 mid = (mid + Math.imul(al1, bh6)) |
0;
26449 mid = (mid + Math.imul(ah1, bl6)) |
0;
26450 hi = (hi + Math.imul(ah1, bh6)) |
0;
26451 lo = (lo + Math.imul(al0, bl7)) |
0;
26452 mid = (mid + Math.imul(al0, bh7)) |
0;
26453 mid = (mid + Math.imul(ah0, bl7)) |
0;
26454 hi = (hi + Math.imul(ah0, bh7)) |
0;
26455 var w7 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26456 c = (((hi + (mid
>>> 13)) |
0) + (w7
>>> 26)) |
0;
26459 lo = Math.imul(al8, bl0);
26460 mid = Math.imul(al8, bh0);
26461 mid = (mid + Math.imul(ah8, bl0)) |
0;
26462 hi = Math.imul(ah8, bh0);
26463 lo = (lo + Math.imul(al7, bl1)) |
0;
26464 mid = (mid + Math.imul(al7, bh1)) |
0;
26465 mid = (mid + Math.imul(ah7, bl1)) |
0;
26466 hi = (hi + Math.imul(ah7, bh1)) |
0;
26467 lo = (lo + Math.imul(al6, bl2)) |
0;
26468 mid = (mid + Math.imul(al6, bh2)) |
0;
26469 mid = (mid + Math.imul(ah6, bl2)) |
0;
26470 hi = (hi + Math.imul(ah6, bh2)) |
0;
26471 lo = (lo + Math.imul(al5, bl3)) |
0;
26472 mid = (mid + Math.imul(al5, bh3)) |
0;
26473 mid = (mid + Math.imul(ah5, bl3)) |
0;
26474 hi = (hi + Math.imul(ah5, bh3)) |
0;
26475 lo = (lo + Math.imul(al4, bl4)) |
0;
26476 mid = (mid + Math.imul(al4, bh4)) |
0;
26477 mid = (mid + Math.imul(ah4, bl4)) |
0;
26478 hi = (hi + Math.imul(ah4, bh4)) |
0;
26479 lo = (lo + Math.imul(al3, bl5)) |
0;
26480 mid = (mid + Math.imul(al3, bh5)) |
0;
26481 mid = (mid + Math.imul(ah3, bl5)) |
0;
26482 hi = (hi + Math.imul(ah3, bh5)) |
0;
26483 lo = (lo + Math.imul(al2, bl6)) |
0;
26484 mid = (mid + Math.imul(al2, bh6)) |
0;
26485 mid = (mid + Math.imul(ah2, bl6)) |
0;
26486 hi = (hi + Math.imul(ah2, bh6)) |
0;
26487 lo = (lo + Math.imul(al1, bl7)) |
0;
26488 mid = (mid + Math.imul(al1, bh7)) |
0;
26489 mid = (mid + Math.imul(ah1, bl7)) |
0;
26490 hi = (hi + Math.imul(ah1, bh7)) |
0;
26491 lo = (lo + Math.imul(al0, bl8)) |
0;
26492 mid = (mid + Math.imul(al0, bh8)) |
0;
26493 mid = (mid + Math.imul(ah0, bl8)) |
0;
26494 hi = (hi + Math.imul(ah0, bh8)) |
0;
26495 var w8 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26496 c = (((hi + (mid
>>> 13)) |
0) + (w8
>>> 26)) |
0;
26499 lo = Math.imul(al9, bl0);
26500 mid = Math.imul(al9, bh0);
26501 mid = (mid + Math.imul(ah9, bl0)) |
0;
26502 hi = Math.imul(ah9, bh0);
26503 lo = (lo + Math.imul(al8, bl1)) |
0;
26504 mid = (mid + Math.imul(al8, bh1)) |
0;
26505 mid = (mid + Math.imul(ah8, bl1)) |
0;
26506 hi = (hi + Math.imul(ah8, bh1)) |
0;
26507 lo = (lo + Math.imul(al7, bl2)) |
0;
26508 mid = (mid + Math.imul(al7, bh2)) |
0;
26509 mid = (mid + Math.imul(ah7, bl2)) |
0;
26510 hi = (hi + Math.imul(ah7, bh2)) |
0;
26511 lo = (lo + Math.imul(al6, bl3)) |
0;
26512 mid = (mid + Math.imul(al6, bh3)) |
0;
26513 mid = (mid + Math.imul(ah6, bl3)) |
0;
26514 hi = (hi + Math.imul(ah6, bh3)) |
0;
26515 lo = (lo + Math.imul(al5, bl4)) |
0;
26516 mid = (mid + Math.imul(al5, bh4)) |
0;
26517 mid = (mid + Math.imul(ah5, bl4)) |
0;
26518 hi = (hi + Math.imul(ah5, bh4)) |
0;
26519 lo = (lo + Math.imul(al4, bl5)) |
0;
26520 mid = (mid + Math.imul(al4, bh5)) |
0;
26521 mid = (mid + Math.imul(ah4, bl5)) |
0;
26522 hi = (hi + Math.imul(ah4, bh5)) |
0;
26523 lo = (lo + Math.imul(al3, bl6)) |
0;
26524 mid = (mid + Math.imul(al3, bh6)) |
0;
26525 mid = (mid + Math.imul(ah3, bl6)) |
0;
26526 hi = (hi + Math.imul(ah3, bh6)) |
0;
26527 lo = (lo + Math.imul(al2, bl7)) |
0;
26528 mid = (mid + Math.imul(al2, bh7)) |
0;
26529 mid = (mid + Math.imul(ah2, bl7)) |
0;
26530 hi = (hi + Math.imul(ah2, bh7)) |
0;
26531 lo = (lo + Math.imul(al1, bl8)) |
0;
26532 mid = (mid + Math.imul(al1, bh8)) |
0;
26533 mid = (mid + Math.imul(ah1, bl8)) |
0;
26534 hi = (hi + Math.imul(ah1, bh8)) |
0;
26535 lo = (lo + Math.imul(al0, bl9)) |
0;
26536 mid = (mid + Math.imul(al0, bh9)) |
0;
26537 mid = (mid + Math.imul(ah0, bl9)) |
0;
26538 hi = (hi + Math.imul(ah0, bh9)) |
0;
26539 var w9 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26540 c = (((hi + (mid
>>> 13)) |
0) + (w9
>>> 26)) |
0;
26543 lo = Math.imul(al9, bl1);
26544 mid = Math.imul(al9, bh1);
26545 mid = (mid + Math.imul(ah9, bl1)) |
0;
26546 hi = Math.imul(ah9, bh1);
26547 lo = (lo + Math.imul(al8, bl2)) |
0;
26548 mid = (mid + Math.imul(al8, bh2)) |
0;
26549 mid = (mid + Math.imul(ah8, bl2)) |
0;
26550 hi = (hi + Math.imul(ah8, bh2)) |
0;
26551 lo = (lo + Math.imul(al7, bl3)) |
0;
26552 mid = (mid + Math.imul(al7, bh3)) |
0;
26553 mid = (mid + Math.imul(ah7, bl3)) |
0;
26554 hi = (hi + Math.imul(ah7, bh3)) |
0;
26555 lo = (lo + Math.imul(al6, bl4)) |
0;
26556 mid = (mid + Math.imul(al6, bh4)) |
0;
26557 mid = (mid + Math.imul(ah6, bl4)) |
0;
26558 hi = (hi + Math.imul(ah6, bh4)) |
0;
26559 lo = (lo + Math.imul(al5, bl5)) |
0;
26560 mid = (mid + Math.imul(al5, bh5)) |
0;
26561 mid = (mid + Math.imul(ah5, bl5)) |
0;
26562 hi = (hi + Math.imul(ah5, bh5)) |
0;
26563 lo = (lo + Math.imul(al4, bl6)) |
0;
26564 mid = (mid + Math.imul(al4, bh6)) |
0;
26565 mid = (mid + Math.imul(ah4, bl6)) |
0;
26566 hi = (hi + Math.imul(ah4, bh6)) |
0;
26567 lo = (lo + Math.imul(al3, bl7)) |
0;
26568 mid = (mid + Math.imul(al3, bh7)) |
0;
26569 mid = (mid + Math.imul(ah3, bl7)) |
0;
26570 hi = (hi + Math.imul(ah3, bh7)) |
0;
26571 lo = (lo + Math.imul(al2, bl8)) |
0;
26572 mid = (mid + Math.imul(al2, bh8)) |
0;
26573 mid = (mid + Math.imul(ah2, bl8)) |
0;
26574 hi = (hi + Math.imul(ah2, bh8)) |
0;
26575 lo = (lo + Math.imul(al1, bl9)) |
0;
26576 mid = (mid + Math.imul(al1, bh9)) |
0;
26577 mid = (mid + Math.imul(ah1, bl9)) |
0;
26578 hi = (hi + Math.imul(ah1, bh9)) |
0;
26579 var w10 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26580 c = (((hi + (mid
>>> 13)) |
0) + (w10
>>> 26)) |
0;
26583 lo = Math.imul(al9, bl2);
26584 mid = Math.imul(al9, bh2);
26585 mid = (mid + Math.imul(ah9, bl2)) |
0;
26586 hi = Math.imul(ah9, bh2);
26587 lo = (lo + Math.imul(al8, bl3)) |
0;
26588 mid = (mid + Math.imul(al8, bh3)) |
0;
26589 mid = (mid + Math.imul(ah8, bl3)) |
0;
26590 hi = (hi + Math.imul(ah8, bh3)) |
0;
26591 lo = (lo + Math.imul(al7, bl4)) |
0;
26592 mid = (mid + Math.imul(al7, bh4)) |
0;
26593 mid = (mid + Math.imul(ah7, bl4)) |
0;
26594 hi = (hi + Math.imul(ah7, bh4)) |
0;
26595 lo = (lo + Math.imul(al6, bl5)) |
0;
26596 mid = (mid + Math.imul(al6, bh5)) |
0;
26597 mid = (mid + Math.imul(ah6, bl5)) |
0;
26598 hi = (hi + Math.imul(ah6, bh5)) |
0;
26599 lo = (lo + Math.imul(al5, bl6)) |
0;
26600 mid = (mid + Math.imul(al5, bh6)) |
0;
26601 mid = (mid + Math.imul(ah5, bl6)) |
0;
26602 hi = (hi + Math.imul(ah5, bh6)) |
0;
26603 lo = (lo + Math.imul(al4, bl7)) |
0;
26604 mid = (mid + Math.imul(al4, bh7)) |
0;
26605 mid = (mid + Math.imul(ah4, bl7)) |
0;
26606 hi = (hi + Math.imul(ah4, bh7)) |
0;
26607 lo = (lo + Math.imul(al3, bl8)) |
0;
26608 mid = (mid + Math.imul(al3, bh8)) |
0;
26609 mid = (mid + Math.imul(ah3, bl8)) |
0;
26610 hi = (hi + Math.imul(ah3, bh8)) |
0;
26611 lo = (lo + Math.imul(al2, bl9)) |
0;
26612 mid = (mid + Math.imul(al2, bh9)) |
0;
26613 mid = (mid + Math.imul(ah2, bl9)) |
0;
26614 hi = (hi + Math.imul(ah2, bh9)) |
0;
26615 var w11 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26616 c = (((hi + (mid
>>> 13)) |
0) + (w11
>>> 26)) |
0;
26619 lo = Math.imul(al9, bl3);
26620 mid = Math.imul(al9, bh3);
26621 mid = (mid + Math.imul(ah9, bl3)) |
0;
26622 hi = Math.imul(ah9, bh3);
26623 lo = (lo + Math.imul(al8, bl4)) |
0;
26624 mid = (mid + Math.imul(al8, bh4)) |
0;
26625 mid = (mid + Math.imul(ah8, bl4)) |
0;
26626 hi = (hi + Math.imul(ah8, bh4)) |
0;
26627 lo = (lo + Math.imul(al7, bl5)) |
0;
26628 mid = (mid + Math.imul(al7, bh5)) |
0;
26629 mid = (mid + Math.imul(ah7, bl5)) |
0;
26630 hi = (hi + Math.imul(ah7, bh5)) |
0;
26631 lo = (lo + Math.imul(al6, bl6)) |
0;
26632 mid = (mid + Math.imul(al6, bh6)) |
0;
26633 mid = (mid + Math.imul(ah6, bl6)) |
0;
26634 hi = (hi + Math.imul(ah6, bh6)) |
0;
26635 lo = (lo + Math.imul(al5, bl7)) |
0;
26636 mid = (mid + Math.imul(al5, bh7)) |
0;
26637 mid = (mid + Math.imul(ah5, bl7)) |
0;
26638 hi = (hi + Math.imul(ah5, bh7)) |
0;
26639 lo = (lo + Math.imul(al4, bl8)) |
0;
26640 mid = (mid + Math.imul(al4, bh8)) |
0;
26641 mid = (mid + Math.imul(ah4, bl8)) |
0;
26642 hi = (hi + Math.imul(ah4, bh8)) |
0;
26643 lo = (lo + Math.imul(al3, bl9)) |
0;
26644 mid = (mid + Math.imul(al3, bh9)) |
0;
26645 mid = (mid + Math.imul(ah3, bl9)) |
0;
26646 hi = (hi + Math.imul(ah3, bh9)) |
0;
26647 var w12 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26648 c = (((hi + (mid
>>> 13)) |
0) + (w12
>>> 26)) |
0;
26651 lo = Math.imul(al9, bl4);
26652 mid = Math.imul(al9, bh4);
26653 mid = (mid + Math.imul(ah9, bl4)) |
0;
26654 hi = Math.imul(ah9, bh4);
26655 lo = (lo + Math.imul(al8, bl5)) |
0;
26656 mid = (mid + Math.imul(al8, bh5)) |
0;
26657 mid = (mid + Math.imul(ah8, bl5)) |
0;
26658 hi = (hi + Math.imul(ah8, bh5)) |
0;
26659 lo = (lo + Math.imul(al7, bl6)) |
0;
26660 mid = (mid + Math.imul(al7, bh6)) |
0;
26661 mid = (mid + Math.imul(ah7, bl6)) |
0;
26662 hi = (hi + Math.imul(ah7, bh6)) |
0;
26663 lo = (lo + Math.imul(al6, bl7)) |
0;
26664 mid = (mid + Math.imul(al6, bh7)) |
0;
26665 mid = (mid + Math.imul(ah6, bl7)) |
0;
26666 hi = (hi + Math.imul(ah6, bh7)) |
0;
26667 lo = (lo + Math.imul(al5, bl8)) |
0;
26668 mid = (mid + Math.imul(al5, bh8)) |
0;
26669 mid = (mid + Math.imul(ah5, bl8)) |
0;
26670 hi = (hi + Math.imul(ah5, bh8)) |
0;
26671 lo = (lo + Math.imul(al4, bl9)) |
0;
26672 mid = (mid + Math.imul(al4, bh9)) |
0;
26673 mid = (mid + Math.imul(ah4, bl9)) |
0;
26674 hi = (hi + Math.imul(ah4, bh9)) |
0;
26675 var w13 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26676 c = (((hi + (mid
>>> 13)) |
0) + (w13
>>> 26)) |
0;
26679 lo = Math.imul(al9, bl5);
26680 mid = Math.imul(al9, bh5);
26681 mid = (mid + Math.imul(ah9, bl5)) |
0;
26682 hi = Math.imul(ah9, bh5);
26683 lo = (lo + Math.imul(al8, bl6)) |
0;
26684 mid = (mid + Math.imul(al8, bh6)) |
0;
26685 mid = (mid + Math.imul(ah8, bl6)) |
0;
26686 hi = (hi + Math.imul(ah8, bh6)) |
0;
26687 lo = (lo + Math.imul(al7, bl7)) |
0;
26688 mid = (mid + Math.imul(al7, bh7)) |
0;
26689 mid = (mid + Math.imul(ah7, bl7)) |
0;
26690 hi = (hi + Math.imul(ah7, bh7)) |
0;
26691 lo = (lo + Math.imul(al6, bl8)) |
0;
26692 mid = (mid + Math.imul(al6, bh8)) |
0;
26693 mid = (mid + Math.imul(ah6, bl8)) |
0;
26694 hi = (hi + Math.imul(ah6, bh8)) |
0;
26695 lo = (lo + Math.imul(al5, bl9)) |
0;
26696 mid = (mid + Math.imul(al5, bh9)) |
0;
26697 mid = (mid + Math.imul(ah5, bl9)) |
0;
26698 hi = (hi + Math.imul(ah5, bh9)) |
0;
26699 var w14 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26700 c = (((hi + (mid
>>> 13)) |
0) + (w14
>>> 26)) |
0;
26703 lo = Math.imul(al9, bl6);
26704 mid = Math.imul(al9, bh6);
26705 mid = (mid + Math.imul(ah9, bl6)) |
0;
26706 hi = Math.imul(ah9, bh6);
26707 lo = (lo + Math.imul(al8, bl7)) |
0;
26708 mid = (mid + Math.imul(al8, bh7)) |
0;
26709 mid = (mid + Math.imul(ah8, bl7)) |
0;
26710 hi = (hi + Math.imul(ah8, bh7)) |
0;
26711 lo = (lo + Math.imul(al7, bl8)) |
0;
26712 mid = (mid + Math.imul(al7, bh8)) |
0;
26713 mid = (mid + Math.imul(ah7, bl8)) |
0;
26714 hi = (hi + Math.imul(ah7, bh8)) |
0;
26715 lo = (lo + Math.imul(al6, bl9)) |
0;
26716 mid = (mid + Math.imul(al6, bh9)) |
0;
26717 mid = (mid + Math.imul(ah6, bl9)) |
0;
26718 hi = (hi + Math.imul(ah6, bh9)) |
0;
26719 var w15 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26720 c = (((hi + (mid
>>> 13)) |
0) + (w15
>>> 26)) |
0;
26723 lo = Math.imul(al9, bl7);
26724 mid = Math.imul(al9, bh7);
26725 mid = (mid + Math.imul(ah9, bl7)) |
0;
26726 hi = Math.imul(ah9, bh7);
26727 lo = (lo + Math.imul(al8, bl8)) |
0;
26728 mid = (mid + Math.imul(al8, bh8)) |
0;
26729 mid = (mid + Math.imul(ah8, bl8)) |
0;
26730 hi = (hi + Math.imul(ah8, bh8)) |
0;
26731 lo = (lo + Math.imul(al7, bl9)) |
0;
26732 mid = (mid + Math.imul(al7, bh9)) |
0;
26733 mid = (mid + Math.imul(ah7, bl9)) |
0;
26734 hi = (hi + Math.imul(ah7, bh9)) |
0;
26735 var w16 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26736 c = (((hi + (mid
>>> 13)) |
0) + (w16
>>> 26)) |
0;
26739 lo = Math.imul(al9, bl8);
26740 mid = Math.imul(al9, bh8);
26741 mid = (mid + Math.imul(ah9, bl8)) |
0;
26742 hi = Math.imul(ah9, bh8);
26743 lo = (lo + Math.imul(al8, bl9)) |
0;
26744 mid = (mid + Math.imul(al8, bh9)) |
0;
26745 mid = (mid + Math.imul(ah8, bl9)) |
0;
26746 hi = (hi + Math.imul(ah8, bh9)) |
0;
26747 var w17 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26748 c = (((hi + (mid
>>> 13)) |
0) + (w17
>>> 26)) |
0;
26751 lo = Math.imul(al9, bl9);
26752 mid = Math.imul(al9, bh9);
26753 mid = (mid + Math.imul(ah9, bl9)) |
0;
26754 hi = Math.imul(ah9, bh9);
26755 var w18 = (((c + lo) |
0) + ((mid &
0x1fff) <<
13)) |
0;
26756 c = (((hi + (mid
>>> 13)) |
0) + (w18
>>> 26)) |
0;
26786 comb10MulTo = smallMulTo;
26789 function bigMulTo (self, num, out) {
26790 out.negative = num.negative ^ self.negative;
26791 out.length = self.length + num.length;
26795 for (var k =
0; k < out.length -
1; k++) {
26796 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
26797 // note that ncarry could be
>=
0x3ffffff
26798 var ncarry = hncarry;
26800 var rword = carry &
0x3ffffff;
26801 var maxJ = Math.min(k, num.length -
1);
26802 for (var j = Math.max(
0, k - self.length +
1); j <= maxJ; j++) {
26804 var a = self.words[i] |
0;
26805 var b = num.words[j] |
0;
26808 var lo = r &
0x3ffffff;
26809 ncarry = (ncarry + ((r /
0x4000000) |
0)) |
0;
26810 lo = (lo + rword) |
0;
26811 rword = lo &
0x3ffffff;
26812 ncarry = (ncarry + (lo
>>> 26)) |
0;
26814 hncarry += ncarry
>>> 26;
26815 ncarry &=
0x3ffffff;
26817 out.words[k] = rword;
26822 out.words[k] = carry;
26827 return out.strip();
26830 function jumboMulTo (self, num, out) {
26831 var fftm = new FFTM();
26832 return fftm.mulp(self, num, out);
26835 BN.prototype.mulTo = function mulTo (num, out) {
26837 var len = this.length + num.length;
26838 if (this.length ===
10 && num.length ===
10) {
26839 res = comb10MulTo(this, num, out);
26840 } else if (len <
63) {
26841 res = smallMulTo(this, num, out);
26842 } else if (len <
1024) {
26843 res = bigMulTo(this, num, out);
26845 res = jumboMulTo(this, num, out);
26851 // Cooley-Tukey algorithm for FFT
26852 // slightly revisited to rely on looping instead of recursion
26854 function FFTM (x, y) {
26859 FFTM.prototype.makeRBT = function makeRBT (N) {
26860 var t = new Array(N);
26861 var l = BN.prototype._countBits(N) -
1;
26862 for (var i =
0; i < N; i++) {
26863 t[i] = this.revBin(i, l, N);
26869 // Returns binary-reversed representation of `x`
26870 FFTM.prototype.revBin = function revBin (x, l, N) {
26871 if (x ===
0 || x === N -
1) return x;
26874 for (var i =
0; i < l; i++) {
26875 rb |= (x &
1) << (l - i -
1);
26882 // Performs "tweedling" phase, therefore 'emulating'
26883 // behaviour of the recursive algorithm
26884 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
26885 for (var i =
0; i < N; i++) {
26886 rtws[i] = rws[rbt[i]];
26887 itws[i] = iws[rbt[i]];
26891 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
26892 this.permute(rbt, rws, iws, rtws, itws, N);
26894 for (var s =
1; s < N; s <<=
1) {
26897 var rtwdf = Math.cos(
2 * Math.PI / l);
26898 var itwdf = Math.sin(
2 * Math.PI / l);
26900 for (var p =
0; p < N; p += l) {
26901 var rtwdf_ = rtwdf;
26902 var itwdf_ = itwdf;
26904 for (var j =
0; j < s; j++) {
26905 var re = rtws[p + j];
26906 var ie = itws[p + j];
26908 var ro = rtws[p + j + s];
26909 var io = itws[p + j + s];
26911 var rx = rtwdf_ * ro - itwdf_ * io;
26913 io = rtwdf_ * io + itwdf_ * ro;
26916 rtws[p + j] = re + ro;
26917 itws[p + j] = ie + io;
26919 rtws[p + j + s] = re - ro;
26920 itws[p + j + s] = ie - io;
26922 /* jshint maxdepth : false */
26924 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
26926 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
26934 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
26935 var N = Math.max(m, n) |
1;
26938 for (N = N /
2 |
0; N; N = N
>>> 1) {
26942 return
1 << i +
1 + odd;
26945 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
26946 if (N <=
1) return;
26948 for (var i =
0; i < N /
2; i++) {
26951 rws[i] = rws[N - i -
1];
26952 rws[N - i -
1] = t;
26956 iws[i] = -iws[N - i -
1];
26957 iws[N - i -
1] = -t;
26961 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
26963 for (var i =
0; i < N /
2; i++) {
26964 var w = Math.round(ws[
2 * i +
1] / N) *
0x2000 +
26965 Math.round(ws[
2 * i] / N) +
26968 ws[i] = w &
0x3ffffff;
26970 if (w <
0x4000000) {
26973 carry = w /
0x4000000 |
0;
26980 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
26982 for (var i =
0; i < len; i++) {
26983 carry = carry + (ws[i] |
0);
26985 rws[
2 * i] = carry &
0x1fff; carry = carry
>>> 13;
26986 rws[
2 * i +
1] = carry &
0x1fff; carry = carry
>>> 13;
26990 for (i =
2 * len; i < N; ++i) {
26994 assert(carry ===
0);
26995 assert((carry & ~
0x1fff) ===
0);
26998 FFTM.prototype.stub = function stub (N) {
26999 var ph = new Array(N);
27000 for (var i =
0; i < N; i++) {
27007 FFTM.prototype.mulp = function mulp (x, y, out) {
27008 var N =
2 * this.guessLen13b(x.length, y.length);
27010 var rbt = this.makeRBT(N);
27012 var _ = this.stub(N);
27014 var rws = new Array(N);
27015 var rwst = new Array(N);
27016 var iwst = new Array(N);
27018 var nrws = new Array(N);
27019 var nrwst = new Array(N);
27020 var niwst = new Array(N);
27022 var rmws = out.words;
27025 this.convert13b(x.words, x.length, rws, N);
27026 this.convert13b(y.words, y.length, nrws, N);
27028 this.transform(rws, _, rwst, iwst, N, rbt);
27029 this.transform(nrws, _, nrwst, niwst, N, rbt);
27031 for (var i =
0; i < N; i++) {
27032 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
27033 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
27037 this.conjugate(rwst, iwst, N);
27038 this.transform(rwst, iwst, rmws, _, N, rbt);
27039 this.conjugate(rmws, _, N);
27040 this.normalize13b(rmws, N);
27042 out.negative = x.negative ^ y.negative;
27043 out.length = x.length + y.length;
27044 return out.strip();
27047 // Multiply `this` by `num`
27048 BN.prototype.mul = function mul (num) {
27049 var out = new BN(null);
27050 out.words = new Array(this.length + num.length);
27051 return this.mulTo(num, out);
27054 // Multiply employing FFT
27055 BN.prototype.mulf = function mulf (num) {
27056 var out = new BN(null);
27057 out.words = new Array(this.length + num.length);
27058 return jumboMulTo(this, num, out);
27061 // In-place Multiplication
27062 BN.prototype.imul = function imul (num) {
27063 return this.clone().mulTo(num, this);
27066 BN.prototype.imuln = function imuln (num) {
27067 assert(typeof num === 'number');
27068 assert(num <
0x4000000);
27072 for (var i =
0; i < this.length; i++) {
27073 var w = (this.words[i] |
0) * num;
27074 var lo = (w &
0x3ffffff) + (carry &
0x3ffffff);
27076 carry += (w /
0x4000000) |
0;
27077 // NOTE: lo is
27bit maximum
27078 carry += lo
>>> 26;
27079 this.words[i] = lo &
0x3ffffff;
27083 this.words[i] = carry;
27090 BN.prototype.muln = function muln (num) {
27091 return this.clone().imuln(num);
27095 BN.prototype.sqr = function sqr () {
27096 return this.mul(this);
27099 // `this` * `this` in-place
27100 BN.prototype.isqr = function isqr () {
27101 return this.imul(this.clone());
27104 // Math.pow(`this`, `num`)
27105 BN.prototype.pow = function pow (num) {
27106 var w = toBitArray(num);
27107 if (w.length ===
0) return new BN(
1);
27109 // Skip leading zeroes
27111 for (var i =
0; i < w.length; i++, res = res.sqr()) {
27112 if (w[i] !==
0) break;
27115 if (++i < w.length) {
27116 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
27117 if (w[i] ===
0) continue;
27126 // Shift-left in-place
27127 BN.prototype.iushln = function iushln (bits) {
27128 assert(typeof bits === 'number' && bits
>=
0);
27130 var s = (bits - r) /
26;
27131 var carryMask = (
0x3ffffff >>> (
26 - r)) << (
26 - r);
27137 for (i =
0; i < this.length; i++) {
27138 var newCarry = this.words[i] & carryMask;
27139 var c = ((this.words[i] |
0) - newCarry) << r;
27140 this.words[i] = c | carry;
27141 carry = newCarry
>>> (
26 - r);
27145 this.words[i] = carry;
27151 for (i = this.length -
1; i
>=
0; i--) {
27152 this.words[i + s] = this.words[i];
27155 for (i =
0; i < s; i++) {
27162 return this.strip();
27165 BN.prototype.ishln = function ishln (bits) {
27166 // TODO(indutny): implement me
27167 assert(this.negative ===
0);
27168 return this.iushln(bits);
27171 // Shift-right in-place
27172 // NOTE: `hint` is a lowest bit before trailing zeroes
27173 // NOTE: if `extended` is present - it will be filled with destroyed bits
27174 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
27175 assert(typeof bits === 'number' && bits
>=
0);
27178 h = (hint - (hint %
26)) /
26;
27184 var s = Math.min((bits - r) /
26, this.length);
27185 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
27186 var maskedWords = extended;
27189 h = Math.max(
0, h);
27191 // Extended mode, copy masked part
27193 for (var i =
0; i < s; i++) {
27194 maskedWords.words[i] = this.words[i];
27196 maskedWords.length = s;
27200 // No-op, we should not move anything at all
27201 } else if (this.length
> s) {
27203 for (i =
0; i < this.length; i++) {
27204 this.words[i] = this.words[i + s];
27212 for (i = this.length -
1; i
>=
0 && (carry !==
0 || i
>= h); i--) {
27213 var word = this.words[i] |
0;
27214 this.words[i] = (carry << (
26 - r)) | (word
>>> r);
27215 carry = word & mask;
27218 // Push carried bits as a mask
27219 if (maskedWords && carry !==
0) {
27220 maskedWords.words[maskedWords.length++] = carry;
27223 if (this.length ===
0) {
27228 return this.strip();
27231 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
27232 // TODO(indutny): implement me
27233 assert(this.negative ===
0);
27234 return this.iushrn(bits, hint, extended);
27238 BN.prototype.shln = function shln (bits) {
27239 return this.clone().ishln(bits);
27242 BN.prototype.ushln = function ushln (bits) {
27243 return this.clone().iushln(bits);
27247 BN.prototype.shrn = function shrn (bits) {
27248 return this.clone().ishrn(bits);
27251 BN.prototype.ushrn = function ushrn (bits) {
27252 return this.clone().iushrn(bits);
27255 // Test if n bit is set
27256 BN.prototype.testn = function testn (bit) {
27257 assert(typeof bit === 'number' && bit
>=
0);
27259 var s = (bit - r) /
26;
27262 // Fast case: bit is much higher than all existing words
27263 if (this.length <= s) return false;
27265 // Check bit and return
27266 var w = this.words[s];
27271 // Return only lowers bits of number (in-place)
27272 BN.prototype.imaskn = function imaskn (bits) {
27273 assert(typeof bits === 'number' && bits
>=
0);
27275 var s = (bits - r) /
26;
27277 assert(this.negative ===
0, 'imaskn works only with positive numbers');
27279 if (this.length <= s) {
27286 this.length = Math.min(s, this.length);
27289 var mask =
0x3ffffff ^ ((
0x3ffffff >>> r) << r);
27290 this.words[this.length -
1] &= mask;
27293 return this.strip();
27296 // Return only lowers bits of number
27297 BN.prototype.maskn = function maskn (bits) {
27298 return this.clone().imaskn(bits);
27301 // Add plain number `num` to `this`
27302 BN.prototype.iaddn = function iaddn (num) {
27303 assert(typeof num === 'number');
27304 assert(num <
0x4000000);
27305 if (num <
0) return this.isubn(-num);
27307 // Possible sign change
27308 if (this.negative !==
0) {
27309 if (this.length ===
1 && (this.words[
0] |
0) < num) {
27310 this.words[
0] = num - (this.words[
0] |
0);
27321 // Add without checks
27322 return this._iaddn(num);
27325 BN.prototype._iaddn = function _iaddn (num) {
27326 this.words[
0] += num;
27329 for (var i =
0; i < this.length && this.words[i]
>=
0x4000000; i++) {
27330 this.words[i] -=
0x4000000;
27331 if (i === this.length -
1) {
27332 this.words[i +
1] =
1;
27334 this.words[i +
1]++;
27337 this.length = Math.max(this.length, i +
1);
27342 // Subtract plain number `num` from `this`
27343 BN.prototype.isubn = function isubn (num) {
27344 assert(typeof num === 'number');
27345 assert(num <
0x4000000);
27346 if (num <
0) return this.iaddn(-num);
27348 if (this.negative !==
0) {
27355 this.words[
0] -= num;
27357 if (this.length ===
1 && this.words[
0] <
0) {
27358 this.words[
0] = -this.words[
0];
27362 for (var i =
0; i < this.length && this.words[i] <
0; i++) {
27363 this.words[i] +=
0x4000000;
27364 this.words[i +
1] -=
1;
27368 return this.strip();
27371 BN.prototype.addn = function addn (num) {
27372 return this.clone().iaddn(num);
27375 BN.prototype.subn = function subn (num) {
27376 return this.clone().isubn(num);
27379 BN.prototype.iabs = function iabs () {
27385 BN.prototype.abs = function abs () {
27386 return this.clone().iabs();
27389 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
27390 var len = num.length + shift;
27397 for (i =
0; i < num.length; i++) {
27398 w = (this.words[i + shift] |
0) + carry;
27399 var right = (num.words[i] |
0) * mul;
27400 w -= right &
0x3ffffff;
27401 carry = (w
>> 26) - ((right /
0x4000000) |
0);
27402 this.words[i + shift] = w &
0x3ffffff;
27404 for (; i < this.length - shift; i++) {
27405 w = (this.words[i + shift] |
0) + carry;
27407 this.words[i + shift] = w &
0x3ffffff;
27410 if (carry ===
0) return this.strip();
27412 // Subtraction overflow
27413 assert(carry === -
1);
27415 for (i =
0; i < this.length; i++) {
27416 w = -(this.words[i] |
0) + carry;
27418 this.words[i] = w &
0x3ffffff;
27422 return this.strip();
27425 BN.prototype._wordDiv = function _wordDiv (num, mode) {
27426 var shift = this.length - num.length;
27428 var a = this.clone();
27432 var bhi = b.words[b.length -
1] |
0;
27433 var bhiBits = this._countBits(bhi);
27434 shift =
26 - bhiBits;
27436 b = b.ushln(shift);
27438 bhi = b.words[b.length -
1] |
0;
27441 // Initialize quotient
27442 var m = a.length - b.length;
27445 if (mode !== 'mod') {
27448 q.words = new Array(q.length);
27449 for (var i =
0; i < q.length; i++) {
27454 var diff = a.clone()._ishlnsubmul(b,
1, m);
27455 if (diff.negative ===
0) {
27462 for (var j = m -
1; j
>=
0; j--) {
27463 var qj = (a.words[b.length + j] |
0) *
0x4000000 +
27464 (a.words[b.length + j -
1] |
0);
27466 // NOTE: (qj / bhi) is (
0x3ffffff *
0x4000000 +
0x3ffffff) /
0x2000000 max
27468 qj = Math.min((qj / bhi) |
0,
0x3ffffff);
27470 a._ishlnsubmul(b, qj, j);
27471 while (a.negative !==
0) {
27474 a._ishlnsubmul(b,
1, j);
27489 if (mode !== 'div' && shift !==
0) {
27499 // NOTE:
1) `mode` can be set to `mod` to request mod only,
27500 // to `div` to request div only, or be absent to
27501 // request both div & mod
27502 //
2) `positive` is true if unsigned mod is requested
27503 BN.prototype.divmod = function divmod (num, mode, positive) {
27504 assert(!num.isZero());
27506 if (this.isZero()) {
27514 if (this.negative !==
0 && num.negative ===
0) {
27515 res = this.neg().divmod(num, mode);
27517 if (mode !== 'mod') {
27518 div = res.div.neg();
27521 if (mode !== 'div') {
27522 mod = res.mod.neg();
27523 if (positive && mod.negative !==
0) {
27534 if (this.negative ===
0 && num.negative !==
0) {
27535 res = this.divmod(num.neg(), mode);
27537 if (mode !== 'mod') {
27538 div = res.div.neg();
27547 if ((this.negative & num.negative) !==
0) {
27548 res = this.neg().divmod(num.neg(), mode);
27550 if (mode !== 'div') {
27551 mod = res.mod.neg();
27552 if (positive && mod.negative !==
0) {
27563 // Both numbers are positive at this point
27565 // Strip both numbers to approximate shift value
27566 if (num.length
> this.length || this.cmp(num) <
0) {
27573 // Very short reduction
27574 if (num.length ===
1) {
27575 if (mode === 'div') {
27577 div: this.divn(num.words[
0]),
27582 if (mode === 'mod') {
27585 mod: new BN(this.modn(num.words[
0]))
27590 div: this.divn(num.words[
0]),
27591 mod: new BN(this.modn(num.words[
0]))
27595 return this._wordDiv(num, mode);
27598 // Find `this` / `num`
27599 BN.prototype.div = function div (num) {
27600 return this.divmod(num, 'div', false).div;
27603 // Find `this` % `num`
27604 BN.prototype.mod = function mod (num) {
27605 return this.divmod(num, 'mod', false).mod;
27608 BN.prototype.umod = function umod (num) {
27609 return this.divmod(num, 'mod', true).mod;
27612 // Find Round(`this` / `num`)
27613 BN.prototype.divRound = function divRound (num) {
27614 var dm = this.divmod(num);
27616 // Fast case - exact division
27617 if (dm.mod.isZero()) return dm.div;
27619 var mod = dm.div.negative !==
0 ? dm.mod.isub(num) : dm.mod;
27621 var half = num.ushrn(
1);
27622 var r2 = num.andln(
1);
27623 var cmp = mod.cmp(half);
27626 if (cmp <
0 || r2 ===
1 && cmp ===
0) return dm.div;
27629 return dm.div.negative !==
0 ? dm.div.isubn(
1) : dm.div.iaddn(
1);
27632 BN.prototype.modn = function modn (num) {
27633 assert(num <=
0x3ffffff);
27634 var p = (
1 <<
26) % num;
27637 for (var i = this.length -
1; i
>=
0; i--) {
27638 acc = (p * acc + (this.words[i] |
0)) % num;
27644 // In-place division by number
27645 BN.prototype.idivn = function idivn (num) {
27646 assert(num <=
0x3ffffff);
27649 for (var i = this.length -
1; i
>=
0; i--) {
27650 var w = (this.words[i] |
0) + carry *
0x4000000;
27651 this.words[i] = (w / num) |
0;
27655 return this.strip();
27658 BN.prototype.divn = function divn (num) {
27659 return this.clone().idivn(num);
27662 BN.prototype.egcd = function egcd (p) {
27663 assert(p.negative ===
0);
27664 assert(!p.isZero());
27669 if (x.negative !==
0) {
27675 // A * x + B * y = x
27679 // C * x + D * y = y
27685 while (x.isEven() && y.isEven()) {
27691 var yp = y.clone();
27692 var xp = x.clone();
27694 while (!x.isZero()) {
27695 for (var i =
0, im =
1; (x.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
27699 if (A.isOdd() || B.isOdd()) {
27709 for (var j =
0, jm =
1; (y.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
27713 if (C.isOdd() || D.isOdd()) {
27723 if (x.cmp(y)
>=
0) {
27741 // This is reduced incarnation of the binary EEA
27742 // above, designated to invert members of the
27743 // _prime_ fields F(p) at a maximal speed
27744 BN.prototype._invmp = function _invmp (p) {
27745 assert(p.negative ===
0);
27746 assert(!p.isZero());
27751 if (a.negative !==
0) {
27757 var x1 = new BN(
1);
27758 var x2 = new BN(
0);
27760 var delta = b.clone();
27762 while (a.cmpn(
1)
> 0 && b.cmpn(
1)
> 0) {
27763 for (var i =
0, im =
1; (a.words[
0] & im) ===
0 && i <
26; ++i, im <<=
1);
27775 for (var j =
0, jm =
1; (b.words[
0] & jm) ===
0 && j <
26; ++j, jm <<=
1);
27787 if (a.cmp(b)
>=
0) {
27797 if (a.cmpn(
1) ===
0) {
27803 if (res.cmpn(
0) <
0) {
27810 BN.prototype.gcd = function gcd (num) {
27811 if (this.isZero()) return num.abs();
27812 if (num.isZero()) return this.abs();
27814 var a = this.clone();
27815 var b = num.clone();
27819 // Remove common factor of two
27820 for (var shift =
0; a.isEven() && b.isEven(); shift++) {
27826 while (a.isEven()) {
27829 while (b.isEven()) {
27835 // Swap `a` and `b` to make `a` always bigger than `b`
27839 } else if (r ===
0 || b.cmpn(
1) ===
0) {
27846 return b.iushln(shift);
27849 // Invert number in the field F(num)
27850 BN.prototype.invm = function invm (num) {
27851 return this.egcd(num).a.umod(num);
27854 BN.prototype.isEven = function isEven () {
27855 return (this.words[
0] &
1) ===
0;
27858 BN.prototype.isOdd = function isOdd () {
27859 return (this.words[
0] &
1) ===
1;
27862 // And first word and num
27863 BN.prototype.andln = function andln (num) {
27864 return this.words[
0] & num;
27867 // Increment at the bit position in-line
27868 BN.prototype.bincn = function bincn (bit) {
27869 assert(typeof bit === 'number');
27871 var s = (bit - r) /
26;
27874 // Fast case: bit is much higher than all existing words
27875 if (this.length <= s) {
27876 this._expand(s +
1);
27877 this.words[s] |= q;
27881 // Add bit and propagate, if needed
27883 for (var i = s; carry !==
0 && i < this.length; i++) {
27884 var w = this.words[i] |
0;
27891 this.words[i] = carry;
27897 BN.prototype.isZero = function isZero () {
27898 return this.length ===
1 && this.words[
0] ===
0;
27901 BN.prototype.cmpn = function cmpn (num) {
27902 var negative = num <
0;
27904 if (this.negative !==
0 && !negative) return -
1;
27905 if (this.negative ===
0 && negative) return
1;
27910 if (this.length
> 1) {
27917 assert(num <=
0x3ffffff, 'Number is too big');
27919 var w = this.words[
0] |
0;
27920 res = w === num ?
0 : w < num ? -
1 :
1;
27922 if (this.negative !==
0) return -res |
0;
27926 // Compare two numbers and return:
27927 //
1 - if `this`
> `num`
27928 //
0 - if `this` == `num`
27929 // -
1 - if `this` < `num`
27930 BN.prototype.cmp = function cmp (num) {
27931 if (this.negative !==
0 && num.negative ===
0) return -
1;
27932 if (this.negative ===
0 && num.negative !==
0) return
1;
27934 var res = this.ucmp(num);
27935 if (this.negative !==
0) return -res |
0;
27939 // Unsigned comparison
27940 BN.prototype.ucmp = function ucmp (num) {
27941 // At this point both numbers have the same sign
27942 if (this.length
> num.length) return
1;
27943 if (this.length < num.length) return -
1;
27946 for (var i = this.length -
1; i
>=
0; i--) {
27947 var a = this.words[i] |
0;
27948 var b = num.words[i] |
0;
27950 if (a === b) continue;
27953 } else if (a
> b) {
27961 BN.prototype.gtn = function gtn (num) {
27962 return this.cmpn(num) ===
1;
27965 BN.prototype.gt = function gt (num) {
27966 return this.cmp(num) ===
1;
27969 BN.prototype.gten = function gten (num) {
27970 return this.cmpn(num)
>=
0;
27973 BN.prototype.gte = function gte (num) {
27974 return this.cmp(num)
>=
0;
27977 BN.prototype.ltn = function ltn (num) {
27978 return this.cmpn(num) === -
1;
27981 BN.prototype.lt = function lt (num) {
27982 return this.cmp(num) === -
1;
27985 BN.prototype.lten = function lten (num) {
27986 return this.cmpn(num) <=
0;
27989 BN.prototype.lte = function lte (num) {
27990 return this.cmp(num) <=
0;
27993 BN.prototype.eqn = function eqn (num) {
27994 return this.cmpn(num) ===
0;
27997 BN.prototype.eq = function eq (num) {
27998 return this.cmp(num) ===
0;
28002 // A reduce context, could be using montgomery or something better, depending
28003 // on the `m` itself.
28005 BN.red = function red (num) {
28006 return new Red(num);
28009 BN.prototype.toRed = function toRed (ctx) {
28010 assert(!this.red, 'Already a number in reduction context');
28011 assert(this.negative ===
0, 'red works only with positives');
28012 return ctx.convertTo(this)._forceRed(ctx);
28015 BN.prototype.fromRed = function fromRed () {
28016 assert(this.red, 'fromRed works only with numbers in reduction context');
28017 return this.red.convertFrom(this);
28020 BN.prototype._forceRed = function _forceRed (ctx) {
28025 BN.prototype.forceRed = function forceRed (ctx) {
28026 assert(!this.red, 'Already a number in reduction context');
28027 return this._forceRed(ctx);
28030 BN.prototype.redAdd = function redAdd (num) {
28031 assert(this.red, 'redAdd works only with red numbers');
28032 return this.red.add(this, num);
28035 BN.prototype.redIAdd = function redIAdd (num) {
28036 assert(this.red, 'redIAdd works only with red numbers');
28037 return this.red.iadd(this, num);
28040 BN.prototype.redSub = function redSub (num) {
28041 assert(this.red, 'redSub works only with red numbers');
28042 return this.red.sub(this, num);
28045 BN.prototype.redISub = function redISub (num) {
28046 assert(this.red, 'redISub works only with red numbers');
28047 return this.red.isub(this, num);
28050 BN.prototype.redShl = function redShl (num) {
28051 assert(this.red, 'redShl works only with red numbers');
28052 return this.red.shl(this, num);
28055 BN.prototype.redMul = function redMul (num) {
28056 assert(this.red, 'redMul works only with red numbers');
28057 this.red._verify2(this, num);
28058 return this.red.mul(this, num);
28061 BN.prototype.redIMul = function redIMul (num) {
28062 assert(this.red, 'redMul works only with red numbers');
28063 this.red._verify2(this, num);
28064 return this.red.imul(this, num);
28067 BN.prototype.redSqr = function redSqr () {
28068 assert(this.red, 'redSqr works only with red numbers');
28069 this.red._verify1(this);
28070 return this.red.sqr(this);
28073 BN.prototype.redISqr = function redISqr () {
28074 assert(this.red, 'redISqr works only with red numbers');
28075 this.red._verify1(this);
28076 return this.red.isqr(this);
28079 // Square root over p
28080 BN.prototype.redSqrt = function redSqrt () {
28081 assert(this.red, 'redSqrt works only with red numbers');
28082 this.red._verify1(this);
28083 return this.red.sqrt(this);
28086 BN.prototype.redInvm = function redInvm () {
28087 assert(this.red, 'redInvm works only with red numbers');
28088 this.red._verify1(this);
28089 return this.red.invm(this);
28092 // Return negative clone of `this` % `red modulo`
28093 BN.prototype.redNeg = function redNeg () {
28094 assert(this.red, 'redNeg works only with red numbers');
28095 this.red._verify1(this);
28096 return this.red.neg(this);
28099 BN.prototype.redPow = function redPow (num) {
28100 assert(this.red && !num.red, 'redPow(normalNum)');
28101 this.red._verify1(this);
28102 return this.red.pow(this, num);
28105 // Prime numbers with efficient reduction
28113 // Pseudo-Mersenne prime
28114 function MPrime (name, p) {
28117 this.p = new BN(p,
16);
28118 this.n = this.p.bitLength();
28119 this.k = new BN(
1).iushln(this.n).isub(this.p);
28121 this.tmp = this._tmp();
28124 MPrime.prototype._tmp = function _tmp () {
28125 var tmp = new BN(null);
28126 tmp.words = new Array(Math.ceil(this.n /
13));
28130 MPrime.prototype.ireduce = function ireduce (num) {
28131 // Assumes that `num` is less than `P^
2`
28132 // num = HI * (
2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
28137 this.split(r, this.tmp);
28139 r = r.iadd(this.tmp);
28140 rlen = r.bitLength();
28141 } while (rlen
> this.n);
28143 var cmp = rlen < this.n ? -
1 : r.ucmp(this.p);
28147 } else if (cmp
> 0) {
28156 MPrime.prototype.split = function split (input, out) {
28157 input.iushrn(this.n,
0, out);
28160 MPrime.prototype.imulK = function imulK (num) {
28161 return num.imul(this.k);
28168 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
28170 inherits(K256, MPrime);
28172 K256.prototype.split = function split (input, output) {
28173 //
256 =
9 *
26 +
22
28174 var mask =
0x3fffff;
28176 var outLen = Math.min(input.length,
9);
28177 for (var i =
0; i < outLen; i++) {
28178 output.words[i] = input.words[i];
28180 output.length = outLen;
28182 if (input.length <=
9) {
28183 input.words[
0] =
0;
28188 // Shift by
9 limbs
28189 var prev = input.words[
9];
28190 output.words[output.length++] = prev & mask;
28192 for (i =
10; i < input.length; i++) {
28193 var next = input.words[i] |
0;
28194 input.words[i -
10] = ((next & mask) <<
4) | (prev
>>> 22);
28198 input.words[i -
10] = prev;
28199 if (prev ===
0 && input.length
> 10) {
28200 input.length -=
10;
28206 K256.prototype.imulK = function imulK (num) {
28207 // K =
0x1000003d1 = [
0x40,
0x3d1 ]
28208 num.words[num.length] =
0;
28209 num.words[num.length +
1] =
0;
28212 // bounded at:
0x40 *
0x3ffffff +
0x3d0 =
0x100000390
28214 for (var i =
0; i < num.length; i++) {
28215 var w = num.words[i] |
0;
28217 num.words[i] = lo &
0x3ffffff;
28218 lo = w *
0x40 + ((lo /
0x4000000) |
0);
28221 // Fast length reduction
28222 if (num.words[num.length -
1] ===
0) {
28224 if (num.words[num.length -
1] ===
0) {
28235 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001');
28237 inherits(P224, MPrime);
28243 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
28245 inherits(P192, MPrime);
28247 function P25519 () {
28252 '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
28254 inherits(P25519, MPrime);
28256 P25519.prototype.imulK = function imulK (num) {
28259 for (var i =
0; i < num.length; i++) {
28260 var hi = (num.words[i] |
0) *
0x13 + carry;
28261 var lo = hi &
0x3ffffff;
28268 num.words[num.length++] = carry;
28273 // Exported mostly for testing purposes, use plain name instead
28274 BN._prime = function prime (name) {
28275 // Cached version of prime
28276 if (primes[name]) return primes[name];
28279 if (name === 'k256') {
28280 prime = new K256();
28281 } else if (name === 'p224') {
28282 prime = new P224();
28283 } else if (name === 'p192') {
28284 prime = new P192();
28285 } else if (name === 'p25519') {
28286 prime = new P25519();
28288 throw new Error('Unknown prime ' + name);
28290 primes[name] = prime;
28296 // Base reduction engine
28299 if (typeof m === 'string') {
28300 var prime = BN._prime(m);
28302 this.prime = prime;
28304 assert(m.gtn(
1), 'modulus must be greater than
1');
28310 Red.prototype._verify1 = function _verify1 (a) {
28311 assert(a.negative ===
0, 'red works only with positives');
28312 assert(a.red, 'red works only with red numbers');
28315 Red.prototype._verify2 = function _verify2 (a, b) {
28316 assert((a.negative | b.negative) ===
0, 'red works only with positives');
28317 assert(a.red && a.red === b.red,
28318 'red works only with red numbers');
28321 Red.prototype.imod = function imod (a) {
28322 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
28323 return a.umod(this.m)._forceRed(this);
28326 Red.prototype.neg = function neg (a) {
28331 return this.m.sub(a)._forceRed(this);
28334 Red.prototype.add = function add (a, b) {
28335 this._verify2(a, b);
28337 var res = a.add(b);
28338 if (res.cmp(this.m)
>=
0) {
28341 return res._forceRed(this);
28344 Red.prototype.iadd = function iadd (a, b) {
28345 this._verify2(a, b);
28347 var res = a.iadd(b);
28348 if (res.cmp(this.m)
>=
0) {
28354 Red.prototype.sub = function sub (a, b) {
28355 this._verify2(a, b);
28357 var res = a.sub(b);
28358 if (res.cmpn(
0) <
0) {
28361 return res._forceRed(this);
28364 Red.prototype.isub = function isub (a, b) {
28365 this._verify2(a, b);
28367 var res = a.isub(b);
28368 if (res.cmpn(
0) <
0) {
28374 Red.prototype.shl = function shl (a, num) {
28376 return this.imod(a.ushln(num));
28379 Red.prototype.imul = function imul (a, b) {
28380 this._verify2(a, b);
28381 return this.imod(a.imul(b));
28384 Red.prototype.mul = function mul (a, b) {
28385 this._verify2(a, b);
28386 return this.imod(a.mul(b));
28389 Red.prototype.isqr = function isqr (a) {
28390 return this.imul(a, a.clone());
28393 Red.prototype.sqr = function sqr (a) {
28394 return this.mul(a, a);
28397 Red.prototype.sqrt = function sqrt (a) {
28398 if (a.isZero()) return a.clone();
28400 var mod3 = this.m.andln(
3);
28401 assert(mod3 %
2 ===
1);
28405 var pow = this.m.add(new BN(
1)).iushrn(
2);
28406 return this.pow(a, pow);
28409 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
28411 // Find Q and S, that Q *
2 ^ S = (P -
1)
28412 var q = this.m.subn(
1);
28414 while (!q.isZero() && q.andln(
1) ===
0) {
28418 assert(!q.isZero());
28420 var one = new BN(
1).toRed(this);
28421 var nOne = one.redNeg();
28423 // Find quadratic non-residue
28424 // NOTE: Max is such because of generalized Riemann hypothesis.
28425 var lpow = this.m.subn(
1).iushrn(
1);
28426 var z = this.m.bitLength();
28427 z = new BN(
2 * z * z).toRed(this);
28429 while (this.pow(z, lpow).cmp(nOne) !==
0) {
28433 var c = this.pow(z, q);
28434 var r = this.pow(a, q.addn(
1).iushrn(
1));
28435 var t = this.pow(a, q);
28437 while (t.cmp(one) !==
0) {
28439 for (var i =
0; tmp.cmp(one) !==
0; i++) {
28440 tmp = tmp.redSqr();
28443 var b = this.pow(c, new BN(
1).iushln(m - i -
1));
28454 Red.prototype.invm = function invm (a) {
28455 var inv = a._invmp(this.m);
28456 if (inv.negative !==
0) {
28458 return this.imod(inv).redNeg();
28460 return this.imod(inv);
28464 Red.prototype.pow = function pow (a, num) {
28465 if (num.isZero()) return new BN(
1);
28466 if (num.cmpn(
1) ===
0) return a.clone();
28468 var windowSize =
4;
28469 var wnd = new Array(
1 << windowSize);
28470 wnd[
0] = new BN(
1).toRed(this);
28472 for (var i =
2; i < wnd.length; i++) {
28473 wnd[i] = this.mul(wnd[i -
1], a);
28478 var currentLen =
0;
28479 var start = num.bitLength() %
26;
28484 for (i = num.length -
1; i
>=
0; i--) {
28485 var word = num.words[i];
28486 for (var j = start -
1; j
>=
0; j--) {
28487 var bit = (word
>> j) &
1;
28488 if (res !== wnd[
0]) {
28489 res = this.sqr(res);
28492 if (bit ===
0 && current ===
0) {
28500 if (currentLen !== windowSize && (i !==
0 || j !==
0)) continue;
28502 res = this.mul(res, wnd[current]);
28512 Red.prototype.convertTo = function convertTo (num) {
28513 var r = num.umod(this.m);
28515 return r === num ? r.clone() : r;
28518 Red.prototype.convertFrom = function convertFrom (num) {
28519 var res = num.clone();
28525 // Montgomery method engine
28528 BN.mont = function mont (num) {
28529 return new Mont(num);
28532 function Mont (m) {
28535 this.shift = this.m.bitLength();
28536 if (this.shift %
26 !==
0) {
28537 this.shift +=
26 - (this.shift %
26);
28540 this.r = new BN(
1).iushln(this.shift);
28541 this.r2 = this.imod(this.r.sqr());
28542 this.rinv = this.r._invmp(this.m);
28544 this.minv = this.rinv.mul(this.r).isubn(
1).div(this.m);
28545 this.minv = this.minv.umod(this.r);
28546 this.minv = this.r.sub(this.minv);
28548 inherits(Mont, Red);
28550 Mont.prototype.convertTo = function convertTo (num) {
28551 return this.imod(num.ushln(this.shift));
28554 Mont.prototype.convertFrom = function convertFrom (num) {
28555 var r = this.imod(num.mul(this.rinv));
28560 Mont.prototype.imul = function imul (a, b) {
28561 if (a.isZero() || b.isZero()) {
28568 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
28569 var u = t.isub(c).iushrn(this.shift);
28572 if (u.cmp(this.m)
>=
0) {
28573 res = u.isub(this.m);
28574 } else if (u.cmpn(
0) <
0) {
28575 res = u.iadd(this.m);
28578 return res._forceRed(this);
28581 Mont.prototype.mul = function mul (a, b) {
28582 if (a.isZero() || b.isZero()) return new BN(
0)._forceRed(this);
28585 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
28586 var u = t.isub(c).iushrn(this.shift);
28588 if (u.cmp(this.m)
>=
0) {
28589 res = u.isub(this.m);
28590 } else if (u.cmpn(
0) <
0) {
28591 res = u.iadd(this.m);
28594 return res._forceRed(this);
28597 Mont.prototype.invm = function invm (a) {
28598 // (AR)^-
1 * R^
2 = (A^-
1 * R^-
1) * R^
2 = A^-
1 * R
28599 var res = this.imod(a._invmp(this.m).mul(this.r2));
28600 return res._forceRed(this);
28602 })(typeof module === 'undefined' || module, this);
28604 },{}],
34:[function(require,module,exports){
28607 module.exports = function rand(len) {
28609 r = new Rand(null);
28611 return r.generate(len);
28614 function Rand(rand) {
28617 module.exports.Rand = Rand;
28619 Rand.prototype.generate = function generate(len) {
28620 return this._rand(len);
28623 if (typeof self === 'object') {
28624 if (self.crypto && self.crypto.getRandomValues) {
28626 Rand.prototype._rand = function _rand(n) {
28627 var arr = new Uint8Array(n);
28628 self.crypto.getRandomValues(arr);
28631 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
28633 Rand.prototype._rand = function _rand(n) {
28634 var arr = new Uint8Array(n);
28635 self.msCrypto.getRandomValues(arr);
28640 Rand.prototype._rand = function() {
28641 throw new Error('Not implemented yet');
28645 // Node.js or Web worker with no crypto support
28647 var crypto = require('crypto');
28649 Rand.prototype._rand = function _rand(n) {
28650 return crypto.randomBytes(n);
28653 // Emulate crypto API using randy
28654 Rand.prototype._rand = function _rand(n) {
28655 var res = new Uint8Array(n);
28656 for (var i =
0; i < res.length; i++)
28657 res[i] = this.rand.getByte();
28663 },{"crypto":
3}],
35:[function(require,module,exports){
28664 (function (Buffer){
28665 var Transform = require('stream').Transform
28666 var inherits = require('inherits')
28667 var StringDecoder = require('string_decoder').StringDecoder
28668 module.exports = CipherBase
28669 inherits(CipherBase, Transform)
28670 function CipherBase (hashMode) {
28671 Transform.call(this)
28672 this.hashMode = typeof hashMode === 'string'
28673 if (this.hashMode) {
28674 this[hashMode] = this._finalOrDigest
28676 this.final = this._finalOrDigest
28678 this._decoder = null
28679 this._encoding = null
28681 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
28682 if (typeof data === 'string') {
28683 data = new Buffer(data, inputEnc)
28685 var outData = this._update(data)
28686 if (this.hashMode) {
28690 outData = this._toString(outData, outputEnc)
28695 CipherBase.prototype.setAutoPadding = function () {}
28697 CipherBase.prototype.getAuthTag = function () {
28698 throw new Error('trying to get auth tag in unsupported state')
28701 CipherBase.prototype.setAuthTag = function () {
28702 throw new Error('trying to set auth tag in unsupported state')
28705 CipherBase.prototype.setAAD = function () {
28706 throw new Error('trying to set aad in unsupported state')
28709 CipherBase.prototype._transform = function (data, _, next) {
28712 if (this.hashMode) {
28715 this.push(this._update(data))
28723 CipherBase.prototype._flush = function (done) {
28726 this.push(this._final())
28733 CipherBase.prototype._finalOrDigest = function (outputEnc) {
28734 var outData = this._final() || new Buffer('')
28736 outData = this._toString(outData, outputEnc, true)
28741 CipherBase.prototype._toString = function (value, enc, fin) {
28742 if (!this._decoder) {
28743 this._decoder = new StringDecoder(enc)
28744 this._encoding = enc
28746 if (this._encoding !== enc) {
28747 throw new Error('can\'t switch encodings')
28749 var out = this._decoder.write(value)
28751 out += this._decoder.end()
28756 }).call(this,require("buffer").Buffer)
28757 },{"buffer":
5,"inherits":
63,"stream":
25,"string_decoder":
26}],
36:[function(require,module,exports){
28758 (function (Buffer){
28760 var inherits = require('inherits')
28761 var md5 = require('./md5')
28762 var rmd160 = require('ripemd160')
28763 var sha = require('sha.js')
28765 var Base = require('cipher-base')
28767 function HashNoConstructor(hash) {
28768 Base.call(this, 'digest')
28774 inherits(HashNoConstructor, Base)
28776 HashNoConstructor.prototype._update = function (data) {
28777 this.buffers.push(data)
28780 HashNoConstructor.prototype._final = function () {
28781 var buf = Buffer.concat(this.buffers)
28782 var r = this._hash(buf)
28783 this.buffers = null
28788 function Hash(hash) {
28789 Base.call(this, 'digest')
28794 inherits(Hash, Base)
28796 Hash.prototype._update = function (data) {
28797 this._hash.update(data)
28800 Hash.prototype._final = function () {
28801 return this._hash.digest()
28804 module.exports = function createHash (alg) {
28805 alg = alg.toLowerCase()
28806 if ('md5' === alg) return new HashNoConstructor(md5)
28807 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
28809 return new Hash(sha(alg))
28812 }).call(this,require("buffer").Buffer)
28813 },{"./md5":
38,"buffer":
5,"cipher-base":
35,"inherits":
63,"ripemd160":
71,"sha.js":
80}],
37:[function(require,module,exports){
28814 (function (Buffer){
28817 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(
0);
28820 function toArray(buf, bigEndian) {
28821 if ((buf.length % intSize) !==
0) {
28822 var len = buf.length + (intSize - (buf.length % intSize));
28823 buf = Buffer.concat([buf, zeroBuffer], len);
28827 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
28828 for (var i =
0; i < buf.length; i += intSize) {
28829 arr.push(fn.call(buf, i));
28834 function toBuffer(arr, size, bigEndian) {
28835 var buf = new Buffer(size);
28836 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
28837 for (var i =
0; i < arr.length; i++) {
28838 fn.call(buf, arr[i], i *
4, true);
28843 function hash(buf, fn, hashSize, bigEndian) {
28844 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
28845 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
28846 return toBuffer(arr, hashSize, bigEndian);
28848 exports.hash = hash;
28849 }).call(this,require("buffer").Buffer)
28850 },{"buffer":
5}],
38:[function(require,module,exports){
28853 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
28854 * Digest Algorithm, as defined in RFC
1321.
28855 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
28856 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
28857 * Distributed under the BSD License
28858 * See http://pajhome.org.uk/crypt/md5 for more info.
28861 var helpers = require('./helpers');
28864 * Calculate the MD5 of an array of little-endian words, and a bit length
28866 function core_md5(x, len)
28868 /* append padding */
28869 x[len
>> 5] |=
0x80 << ((len) %
32);
28870 x[(((len +
64)
>>> 9) <<
4) +
14] = len;
28872 var a =
1732584193;
28873 var b = -
271733879;
28874 var c = -
1732584194;
28877 for(var i =
0; i < x.length; i +=
16)
28884 a = md5_ff(a, b, c, d, x[i+
0],
7 , -
680876936);
28885 d = md5_ff(d, a, b, c, x[i+
1],
12, -
389564586);
28886 c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
28887 b = md5_ff(b, c, d, a, x[i+
3],
22, -
1044525330);
28888 a = md5_ff(a, b, c, d, x[i+
4],
7 , -
176418897);
28889 d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
28890 c = md5_ff(c, d, a, b, x[i+
6],
17, -
1473231341);
28891 b = md5_ff(b, c, d, a, x[i+
7],
22, -
45705983);
28892 a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
28893 d = md5_ff(d, a, b, c, x[i+
9],
12, -
1958414417);
28894 c = md5_ff(c, d, a, b, x[i+
10],
17, -
42063);
28895 b = md5_ff(b, c, d, a, x[i+
11],
22, -
1990404162);
28896 a = md5_ff(a, b, c, d, x[i+
12],
7 ,
1804603682);
28897 d = md5_ff(d, a, b, c, x[i+
13],
12, -
40341101);
28898 c = md5_ff(c, d, a, b, x[i+
14],
17, -
1502002290);
28899 b = md5_ff(b, c, d, a, x[i+
15],
22,
1236535329);
28901 a = md5_gg(a, b, c, d, x[i+
1],
5 , -
165796510);
28902 d = md5_gg(d, a, b, c, x[i+
6],
9 , -
1069501632);
28903 c = md5_gg(c, d, a, b, x[i+
11],
14,
643717713);
28904 b = md5_gg(b, c, d, a, x[i+
0],
20, -
373897302);
28905 a = md5_gg(a, b, c, d, x[i+
5],
5 , -
701558691);
28906 d = md5_gg(d, a, b, c, x[i+
10],
9 ,
38016083);
28907 c = md5_gg(c, d, a, b, x[i+
15],
14, -
660478335);
28908 b = md5_gg(b, c, d, a, x[i+
4],
20, -
405537848);
28909 a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
28910 d = md5_gg(d, a, b, c, x[i+
14],
9 , -
1019803690);
28911 c = md5_gg(c, d, a, b, x[i+
3],
14, -
187363961);
28912 b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
28913 a = md5_gg(a, b, c, d, x[i+
13],
5 , -
1444681467);
28914 d = md5_gg(d, a, b, c, x[i+
2],
9 , -
51403784);
28915 c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
28916 b = md5_gg(b, c, d, a, x[i+
12],
20, -
1926607734);
28918 a = md5_hh(a, b, c, d, x[i+
5],
4 , -
378558);
28919 d = md5_hh(d, a, b, c, x[i+
8],
11, -
2022574463);
28920 c = md5_hh(c, d, a, b, x[i+
11],
16,
1839030562);
28921 b = md5_hh(b, c, d, a, x[i+
14],
23, -
35309556);
28922 a = md5_hh(a, b, c, d, x[i+
1],
4 , -
1530992060);
28923 d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
28924 c = md5_hh(c, d, a, b, x[i+
7],
16, -
155497632);
28925 b = md5_hh(b, c, d, a, x[i+
10],
23, -
1094730640);
28926 a = md5_hh(a, b, c, d, x[i+
13],
4 ,
681279174);
28927 d = md5_hh(d, a, b, c, x[i+
0],
11, -
358537222);
28928 c = md5_hh(c, d, a, b, x[i+
3],
16, -
722521979);
28929 b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
28930 a = md5_hh(a, b, c, d, x[i+
9],
4 , -
640364487);
28931 d = md5_hh(d, a, b, c, x[i+
12],
11, -
421815835);
28932 c = md5_hh(c, d, a, b, x[i+
15],
16,
530742520);
28933 b = md5_hh(b, c, d, a, x[i+
2],
23, -
995338651);
28935 a = md5_ii(a, b, c, d, x[i+
0],
6 , -
198630844);
28936 d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
28937 c = md5_ii(c, d, a, b, x[i+
14],
15, -
1416354905);
28938 b = md5_ii(b, c, d, a, x[i+
5],
21, -
57434055);
28939 a = md5_ii(a, b, c, d, x[i+
12],
6 ,
1700485571);
28940 d = md5_ii(d, a, b, c, x[i+
3],
10, -
1894986606);
28941 c = md5_ii(c, d, a, b, x[i+
10],
15, -
1051523);
28942 b = md5_ii(b, c, d, a, x[i+
1],
21, -
2054922799);
28943 a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
28944 d = md5_ii(d, a, b, c, x[i+
15],
10, -
30611744);
28945 c = md5_ii(c, d, a, b, x[i+
6],
15, -
1560198380);
28946 b = md5_ii(b, c, d, a, x[i+
13],
21,
1309151649);
28947 a = md5_ii(a, b, c, d, x[i+
4],
6 , -
145523070);
28948 d = md5_ii(d, a, b, c, x[i+
11],
10, -
1120210379);
28949 c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
28950 b = md5_ii(b, c, d, a, x[i+
9],
21, -
343485551);
28952 a = safe_add(a, olda);
28953 b = safe_add(b, oldb);
28954 c = safe_add(c, oldc);
28955 d = safe_add(d, oldd);
28957 return Array(a, b, c, d);
28962 * These functions implement the four basic operations the algorithm uses.
28964 function md5_cmn(q, a, b, x, s, t)
28966 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
28968 function md5_ff(a, b, c, d, x, s, t)
28970 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
28972 function md5_gg(a, b, c, d, x, s, t)
28974 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
28976 function md5_hh(a, b, c, d, x, s, t)
28978 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
28980 function md5_ii(a, b, c, d, x, s, t)
28982 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
28986 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
28987 * to work around bugs in some JS interpreters.
28989 function safe_add(x, y)
28991 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
28992 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
28993 return (msw <<
16) | (lsw &
0xFFFF);
28997 * Bitwise rotate a
32-bit number to the left.
28999 function bit_rol(num, cnt)
29001 return (num << cnt) | (num
>>> (
32 - cnt));
29004 module.exports = function md5(buf) {
29005 return helpers.hash(buf, core_md5,
16);
29007 },{"./helpers":
37}],
39:[function(require,module,exports){
29010 var elliptic = exports;
29012 elliptic.version = require('../package.json').version;
29013 elliptic.utils = require('./elliptic/utils');
29014 elliptic.rand = require('brorand');
29015 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
29016 elliptic.curve = require('./elliptic/curve');
29017 elliptic.curves = require('./elliptic/curves');
29020 elliptic.ec = require('./elliptic/ec');
29021 elliptic.eddsa = require('./elliptic/eddsa');
29023 },{"../package.json":
55,"./elliptic/curve":
42,"./elliptic/curves":
45,"./elliptic/ec":
46,"./elliptic/eddsa":
49,"./elliptic/hmac-drbg":
52,"./elliptic/utils":
54,"brorand":
34}],
40:[function(require,module,exports){
29026 var BN = require('bn.js');
29027 var elliptic = require('../../elliptic');
29028 var utils = elliptic.utils;
29029 var getNAF = utils.getNAF;
29030 var getJSF = utils.getJSF;
29031 var assert = utils.assert;
29033 function BaseCurve(type, conf) {
29035 this.p = new BN(conf.p,
16);
29037 // Use Montgomery, when there is no fast reduction for the prime
29038 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
29040 // Useful for many curves
29041 this.zero = new BN(
0).toRed(this.red);
29042 this.one = new BN(
1).toRed(this.red);
29043 this.two = new BN(
2).toRed(this.red);
29045 // Curve configuration, optional
29046 this.n = conf.n && new BN(conf.n,
16);
29047 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
29049 // Temporary arrays
29050 this._wnafT1 = new Array(
4);
29051 this._wnafT2 = new Array(
4);
29052 this._wnafT3 = new Array(
4);
29053 this._wnafT4 = new Array(
4);
29055 // Generalized Greg Maxwell's trick
29056 var adjustCount = this.n && this.p.div(this.n);
29057 if (!adjustCount || adjustCount.cmpn(
100)
> 0) {
29060 this._maxwellTrick = true;
29061 this.redN = this.n.toRed(this.red);
29064 module.exports = BaseCurve;
29066 BaseCurve.prototype.point = function point() {
29067 throw new Error('Not implemented');
29070 BaseCurve.prototype.validate = function validate() {
29071 throw new Error('Not implemented');
29074 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
29075 assert(p.precomputed);
29076 var doubles = p._getDoubles();
29078 var naf = getNAF(k,
1);
29079 var I = (
1 << (doubles.step +
1)) - (doubles.step %
2 ===
0 ?
2 :
1);
29082 // Translate into more windowed form
29084 for (var j =
0; j < naf.length; j += doubles.step) {
29086 for (var k = j + doubles.step -
1; k
>= j; k--)
29087 nafW = (nafW <<
1) + naf[k];
29091 var a = this.jpoint(null, null, null);
29092 var b = this.jpoint(null, null, null);
29093 for (var i = I; i
> 0; i--) {
29094 for (var j =
0; j < repr.length; j++) {
29095 var nafW = repr[j];
29097 b = b.mixedAdd(doubles.points[j]);
29098 else if (nafW === -i)
29099 b = b.mixedAdd(doubles.points[j].neg());
29106 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
29109 // Precompute window
29110 var nafPoints = p._getNAFPoints(w);
29112 var wnd = nafPoints.points;
29115 var naf = getNAF(k, w);
29117 // Add `this`*(N+
1) for every w-NAF index
29118 var acc = this.jpoint(null, null, null);
29119 for (var i = naf.length -
1; i
>=
0; i--) {
29121 for (var k =
0; i
>=
0 && naf[i] ===
0; i--)
29131 if (p.type === 'affine') {
29134 acc = acc.mixedAdd(wnd[(z -
1)
>> 1]);
29136 acc = acc.mixedAdd(wnd[(-z -
1)
>> 1].neg());
29140 acc = acc.add(wnd[(z -
1)
>> 1]);
29142 acc = acc.add(wnd[(-z -
1)
>> 1].neg());
29145 return p.type === 'affine' ? acc.toP() : acc;
29148 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
29153 var wndWidth = this._wnafT1;
29154 var wnd = this._wnafT2;
29155 var naf = this._wnafT3;
29159 for (var i =
0; i < len; i++) {
29161 var nafPoints = p._getNAFPoints(defW);
29162 wndWidth[i] = nafPoints.wnd;
29163 wnd[i] = nafPoints.points;
29166 // Comb small window NAFs
29167 for (var i = len -
1; i
>=
1; i -=
2) {
29170 if (wndWidth[a] !==
1 || wndWidth[b] !==
1) {
29171 naf[a] = getNAF(coeffs[a], wndWidth[a]);
29172 naf[b] = getNAF(coeffs[b], wndWidth[b]);
29173 max = Math.max(naf[a].length, max);
29174 max = Math.max(naf[b].length, max);
29185 // Try to avoid Projective points, if possible
29186 if (points[a].y.cmp(points[b].y) ===
0) {
29187 comb[
1] = points[a].add(points[b]);
29188 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
29189 } else if (points[a].y.cmp(points[b].y.redNeg()) ===
0) {
29190 comb[
1] = points[a].toJ().mixedAdd(points[b]);
29191 comb[
2] = points[a].add(points[b].neg());
29193 comb[
1] = points[a].toJ().mixedAdd(points[b]);
29194 comb[
2] = points[a].toJ().mixedAdd(points[b].neg());
29209 var jsf = getJSF(coeffs[a], coeffs[b]);
29210 max = Math.max(jsf[
0].length, max);
29211 naf[a] = new Array(max);
29212 naf[b] = new Array(max);
29213 for (var j =
0; j < max; j++) {
29214 var ja = jsf[
0][j] |
0;
29215 var jb = jsf[
1][j] |
0;
29217 naf[a][j] = index[(ja +
1) *
3 + (jb +
1)];
29223 var acc = this.jpoint(null, null, null);
29224 var tmp = this._wnafT4;
29225 for (var i = max; i
>=
0; i--) {
29230 for (var j =
0; j < len; j++) {
29231 tmp[j] = naf[j][i] |
0;
29246 for (var j =
0; j < len; j++) {
29252 p = wnd[j][(z -
1)
>> 1];
29254 p = wnd[j][(-z -
1)
>> 1].neg();
29256 if (p.type === 'affine')
29257 acc = acc.mixedAdd(p);
29262 // Zeroify references
29263 for (var i =
0; i < len; i++)
29266 if (jacobianResult)
29272 function BasePoint(curve, type) {
29273 this.curve = curve;
29275 this.precomputed = null;
29277 BaseCurve.BasePoint = BasePoint;
29279 BasePoint.prototype.eq = function eq(/*other*/) {
29280 throw new Error('Not implemented');
29283 BasePoint.prototype.validate = function validate() {
29284 return this.curve.validate(this);
29287 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
29288 bytes = utils.toArray(bytes, enc);
29290 var len = this.p.byteLength();
29292 // uncompressed, hybrid-odd, hybrid-even
29293 if ((bytes[
0] ===
0x04 || bytes[
0] ===
0x06 || bytes[
0] ===
0x07) &&
29294 bytes.length -
1 ===
2 * len) {
29295 if (bytes[
0] ===
0x06)
29296 assert(bytes[bytes.length -
1] %
2 ===
0);
29297 else if (bytes[
0] ===
0x07)
29298 assert(bytes[bytes.length -
1] %
2 ===
1);
29300 var res = this.point(bytes.slice(
1,
1 + len),
29301 bytes.slice(
1 + len,
1 +
2 * len));
29304 } else if ((bytes[
0] ===
0x02 || bytes[
0] ===
0x03) &&
29305 bytes.length -
1 === len) {
29306 return this.pointFromX(bytes.slice(
1,
1 + len), bytes[
0] ===
0x03);
29308 throw new Error('Unknown point format');
29311 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
29312 return this.encode(enc, true);
29315 BasePoint.prototype._encode = function _encode(compact) {
29316 var len = this.curve.p.byteLength();
29317 var x = this.getX().toArray('be', len);
29320 return [ this.getY().isEven() ?
0x02 :
0x03 ].concat(x);
29322 return [
0x04 ].concat(x, this.getY().toArray('be', len)) ;
29325 BasePoint.prototype.encode = function encode(enc, compact) {
29326 return utils.encode(this._encode(compact), enc);
29329 BasePoint.prototype.precompute = function precompute(power) {
29330 if (this.precomputed)
29333 var precomputed = {
29338 precomputed.naf = this._getNAFPoints(
8);
29339 precomputed.doubles = this._getDoubles(
4, power);
29340 precomputed.beta = this._getBeta();
29341 this.precomputed = precomputed;
29346 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
29347 if (!this.precomputed)
29350 var doubles = this.precomputed.doubles;
29354 return doubles.points.length
>= Math.ceil((k.bitLength() +
1) / doubles.step);
29357 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
29358 if (this.precomputed && this.precomputed.doubles)
29359 return this.precomputed.doubles;
29361 var doubles = [ this ];
29363 for (var i =
0; i < power; i += step) {
29364 for (var j =
0; j < step; j++)
29374 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
29375 if (this.precomputed && this.precomputed.naf)
29376 return this.precomputed.naf;
29378 var res = [ this ];
29379 var max = (
1 << wnd) -
1;
29380 var dbl = max ===
1 ? null : this.dbl();
29381 for (var i =
1; i < max; i++)
29382 res[i] = res[i -
1].add(dbl);
29389 BasePoint.prototype._getBeta = function _getBeta() {
29393 BasePoint.prototype.dblp = function dblp(k) {
29395 for (var i =
0; i < k; i++)
29400 },{"../../elliptic":
39,"bn.js":
33}],
41:[function(require,module,exports){
29403 var curve = require('../curve');
29404 var elliptic = require('../../elliptic');
29405 var BN = require('bn.js');
29406 var inherits = require('inherits');
29407 var Base = curve.base;
29409 var assert = elliptic.utils.assert;
29411 function EdwardsCurve(conf) {
29412 // NOTE: Important as we are creating point in Base.call()
29413 this.twisted = (conf.a |
0) !==
1;
29414 this.mOneA = this.twisted && (conf.a |
0) === -
1;
29415 this.extended = this.mOneA;
29417 Base.call(this, 'edwards', conf);
29419 this.a = new BN(conf.a,
16).umod(this.red.m);
29420 this.a = this.a.toRed(this.red);
29421 this.c = new BN(conf.c,
16).toRed(this.red);
29422 this.c2 = this.c.redSqr();
29423 this.d = new BN(conf.d,
16).toRed(this.red);
29424 this.dd = this.d.redAdd(this.d);
29426 assert(!this.twisted || this.c.fromRed().cmpn(
1) ===
0);
29427 this.oneC = (conf.c |
0) ===
1;
29429 inherits(EdwardsCurve, Base);
29430 module.exports = EdwardsCurve;
29432 EdwardsCurve.prototype._mulA = function _mulA(num) {
29434 return num.redNeg();
29436 return this.a.redMul(num);
29439 EdwardsCurve.prototype._mulC = function _mulC(num) {
29443 return this.c.redMul(num);
29446 // Just for compatibility with Short curve
29447 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
29448 return this.point(x, y, z, t);
29451 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
29454 x = x.toRed(this.red);
29456 var x2 = x.redSqr();
29457 var rhs = this.c2.redSub(this.a.redMul(x2));
29458 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
29460 var y2 = rhs.redMul(lhs.redInvm());
29461 var y = y2.redSqrt();
29462 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
29463 throw new Error('invalid point');
29465 var isOdd = y.fromRed().isOdd();
29466 if (odd && !isOdd || !odd && isOdd)
29469 return this.point(x, y);
29472 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
29475 y = y.toRed(this.red);
29477 // x^
2 = (y^
2 -
1) / (d y^
2 +
1)
29478 var y2 = y.redSqr();
29479 var lhs = y2.redSub(this.one);
29480 var rhs = y2.redMul(this.d).redAdd(this.one);
29481 var x2 = lhs.redMul(rhs.redInvm());
29483 if (x2.cmp(this.zero) ===
0) {
29485 throw new Error('invalid point');
29487 return this.point(this.zero, y);
29490 var x = x2.redSqrt();
29491 if (x.redSqr().redSub(x2).cmp(this.zero) !==
0)
29492 throw new Error('invalid point');
29494 if (x.isOdd() !== odd)
29497 return this.point(x, y);
29500 EdwardsCurve.prototype.validate = function validate(point) {
29501 if (point.isInfinity())
29504 // Curve: A * X^
2 + Y^
2 = C^
2 * (
1 + D * X^
2 * Y^
2)
29507 var x2 = point.x.redSqr();
29508 var y2 = point.y.redSqr();
29509 var lhs = x2.redMul(this.a).redAdd(y2);
29510 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
29512 return lhs.cmp(rhs) ===
0;
29515 function Point(curve, x, y, z, t) {
29516 Base.BasePoint.call(this, curve, 'projective');
29517 if (x === null && y === null && z === null) {
29518 this.x = this.curve.zero;
29519 this.y = this.curve.one;
29520 this.z = this.curve.one;
29521 this.t = this.curve.zero;
29524 this.x = new BN(x,
16);
29525 this.y = new BN(y,
16);
29526 this.z = z ? new BN(z,
16) : this.curve.one;
29527 this.t = t && new BN(t,
16);
29529 this.x = this.x.toRed(this.curve.red);
29531 this.y = this.y.toRed(this.curve.red);
29533 this.z = this.z.toRed(this.curve.red);
29534 if (this.t && !this.t.red)
29535 this.t = this.t.toRed(this.curve.red);
29536 this.zOne = this.z === this.curve.one;
29538 // Use extended coordinates
29539 if (this.curve.extended && !this.t) {
29540 this.t = this.x.redMul(this.y);
29542 this.t = this.t.redMul(this.z.redInvm());
29546 inherits(Point, Base.BasePoint);
29548 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
29549 return Point.fromJSON(this, obj);
29552 EdwardsCurve.prototype.point = function point(x, y, z, t) {
29553 return new Point(this, x, y, z, t);
29556 Point.fromJSON = function fromJSON(curve, obj) {
29557 return new Point(curve, obj[
0], obj[
1], obj[
2]);
29560 Point.prototype.inspect = function inspect() {
29561 if (this.isInfinity())
29562 return '
<EC Point Infinity
>';
29563 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
29564 ' y: ' + this.y.fromRed().toString(
16,
2) +
29565 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
29568 Point.prototype.isInfinity = function isInfinity() {
29569 // XXX This code assumes that zero is always zero in red
29570 return this.x.cmpn(
0) ===
0 &&
29571 this.y.cmp(this.z) ===
0;
29574 Point.prototype._extDbl = function _extDbl() {
29575 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
29576 // #doubling-dbl-
2008-hwcd
29580 var a = this.x.redSqr();
29582 var b = this.y.redSqr();
29584 var c = this.z.redSqr();
29587 var d = this.curve._mulA(a);
29588 // E = (X1 + Y1)^
2 - A - B
29589 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
29591 var g = d.redAdd(b);
29593 var f = g.redSub(c);
29595 var h = d.redSub(b);
29597 var nx = e.redMul(f);
29599 var ny = g.redMul(h);
29601 var nt = e.redMul(h);
29603 var nz = f.redMul(g);
29604 return this.curve.point(nx, ny, nz, nt);
29607 Point.prototype._projDbl = function _projDbl() {
29608 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
29609 // #doubling-dbl-
2008-bbjlp
29610 // #doubling-dbl-
2007-bl
29612 // Generally
3M +
4S or
2M +
4S
29615 var b = this.x.redAdd(this.y).redSqr();
29617 var c = this.x.redSqr();
29619 var d = this.y.redSqr();
29624 if (this.curve.twisted) {
29626 var e = this.curve._mulA(c);
29628 var f = e.redAdd(d);
29630 // X3 = (B - C - D) * (F -
2)
29631 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
29632 // Y3 = F * (E - D)
29633 ny = f.redMul(e.redSub(d));
29634 // Z3 = F^
2 -
2 * F
29635 nz = f.redSqr().redSub(f).redSub(f);
29638 var h = this.z.redSqr();
29640 var j = f.redSub(h).redISub(h);
29642 nx = b.redSub(c).redISub(d).redMul(j);
29643 // Y3 = F * (E - D)
29644 ny = f.redMul(e.redSub(d));
29650 var e = c.redAdd(d);
29652 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
29654 var j = e.redSub(h).redSub(h);
29655 // X3 = c * (B - E) * J
29656 nx = this.curve._mulC(b.redISub(e)).redMul(j);
29657 // Y3 = c * E * (C - D)
29658 ny = this.curve._mulC(e).redMul(c.redISub(d));
29662 return this.curve.point(nx, ny, nz);
29665 Point.prototype.dbl = function dbl() {
29666 if (this.isInfinity())
29669 // Double in extended coordinates
29670 if (this.curve.extended)
29671 return this._extDbl();
29673 return this._projDbl();
29676 Point.prototype._extAdd = function _extAdd(p) {
29677 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-
1.html
29678 // #addition-add-
2008-hwcd-
3
29681 // A = (Y1 - X1) * (Y2 - X2)
29682 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
29683 // B = (Y1 + X1) * (Y2 + X2)
29684 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
29686 var c = this.t.redMul(this.curve.dd).redMul(p.t);
29688 var d = this.z.redMul(p.z.redAdd(p.z));
29690 var e = b.redSub(a);
29692 var f = d.redSub(c);
29694 var g = d.redAdd(c);
29696 var h = b.redAdd(a);
29698 var nx = e.redMul(f);
29700 var ny = g.redMul(h);
29702 var nt = e.redMul(h);
29704 var nz = f.redMul(g);
29705 return this.curve.point(nx, ny, nz, nt);
29708 Point.prototype._projAdd = function _projAdd(p) {
29709 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
29710 // #addition-add-
2008-bbjlp
29711 // #addition-add-
2007-bl
29715 var a = this.z.redMul(p.z);
29717 var b = a.redSqr();
29719 var c = this.x.redMul(p.x);
29721 var d = this.y.redMul(p.y);
29723 var e = this.curve.d.redMul(c).redMul(d);
29725 var f = b.redSub(e);
29727 var g = b.redAdd(e);
29728 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
29729 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
29730 var nx = a.redMul(f).redMul(tmp);
29733 if (this.curve.twisted) {
29734 // Y3 = A * G * (D - a * C)
29735 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
29739 // Y3 = A * G * (D - C)
29740 ny = a.redMul(g).redMul(d.redSub(c));
29742 nz = this.curve._mulC(f).redMul(g);
29744 return this.curve.point(nx, ny, nz);
29747 Point.prototype.add = function add(p) {
29748 if (this.isInfinity())
29750 if (p.isInfinity())
29753 if (this.curve.extended)
29754 return this._extAdd(p);
29756 return this._projAdd(p);
29759 Point.prototype.mul = function mul(k) {
29760 if (this._hasDoubles(k))
29761 return this.curve._fixedNafMul(this, k);
29763 return this.curve._wnafMul(this, k);
29766 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
29767 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, false);
29770 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
29771 return this.curve._wnafMulAdd(
1, [ this, p ], [ k1, k2 ],
2, true);
29774 Point.prototype.normalize = function normalize() {
29778 // Normalize coordinates
29779 var zi = this.z.redInvm();
29780 this.x = this.x.redMul(zi);
29781 this.y = this.y.redMul(zi);
29783 this.t = this.t.redMul(zi);
29784 this.z = this.curve.one;
29789 Point.prototype.neg = function neg() {
29790 return this.curve.point(this.x.redNeg(),
29793 this.t && this.t.redNeg());
29796 Point.prototype.getX = function getX() {
29798 return this.x.fromRed();
29801 Point.prototype.getY = function getY() {
29803 return this.y.fromRed();
29806 Point.prototype.eq = function eq(other) {
29807 return this === other ||
29808 this.getX().cmp(other.getX()) ===
0 &&
29809 this.getY().cmp(other.getY()) ===
0;
29812 Point.prototype.eqXToP = function eqXToP(x) {
29813 var rx = x.toRed(this.curve.red).redMul(this.z);
29814 if (this.x.cmp(rx) ===
0)
29817 var xc = x.clone();
29818 var t = this.curve.redN.redMul(this.z);
29820 xc.iadd(this.curve.n);
29821 if (xc.cmp(this.curve.p)
>=
0)
29825 if (this.x.cmp(rx) ===
0)
29831 // Compatibility with BaseCurve
29832 Point.prototype.toP = Point.prototype.normalize;
29833 Point.prototype.mixedAdd = Point.prototype.add;
29835 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
42:[function(require,module,exports){
29838 var curve = exports;
29840 curve.base = require('./base');
29841 curve.short = require('./short');
29842 curve.mont = require('./mont');
29843 curve.edwards = require('./edwards');
29845 },{"./base":
40,"./edwards":
41,"./mont":
43,"./short":
44}],
43:[function(require,module,exports){
29848 var curve = require('../curve');
29849 var BN = require('bn.js');
29850 var inherits = require('inherits');
29851 var Base = curve.base;
29853 var elliptic = require('../../elliptic');
29854 var utils = elliptic.utils;
29856 function MontCurve(conf) {
29857 Base.call(this, 'mont', conf);
29859 this.a = new BN(conf.a,
16).toRed(this.red);
29860 this.b = new BN(conf.b,
16).toRed(this.red);
29861 this.i4 = new BN(
4).toRed(this.red).redInvm();
29862 this.two = new BN(
2).toRed(this.red);
29863 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
29865 inherits(MontCurve, Base);
29866 module.exports = MontCurve;
29868 MontCurve.prototype.validate = function validate(point) {
29869 var x = point.normalize().x;
29870 var x2 = x.redSqr();
29871 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
29872 var y = rhs.redSqrt();
29874 return y.redSqr().cmp(rhs) ===
0;
29877 function Point(curve, x, z) {
29878 Base.BasePoint.call(this, curve, 'projective');
29879 if (x === null && z === null) {
29880 this.x = this.curve.one;
29881 this.z = this.curve.zero;
29883 this.x = new BN(x,
16);
29884 this.z = new BN(z,
16);
29886 this.x = this.x.toRed(this.curve.red);
29888 this.z = this.z.toRed(this.curve.red);
29891 inherits(Point, Base.BasePoint);
29893 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
29894 return this.point(utils.toArray(bytes, enc),
1);
29897 MontCurve.prototype.point = function point(x, z) {
29898 return new Point(this, x, z);
29901 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
29902 return Point.fromJSON(this, obj);
29905 Point.prototype.precompute = function precompute() {
29909 Point.prototype._encode = function _encode() {
29910 return this.getX().toArray('be', this.curve.p.byteLength());
29913 Point.fromJSON = function fromJSON(curve, obj) {
29914 return new Point(curve, obj[
0], obj[
1] || curve.one);
29917 Point.prototype.inspect = function inspect() {
29918 if (this.isInfinity())
29919 return '
<EC Point Infinity
>';
29920 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
29921 ' z: ' + this.z.fromRed().toString(
16,
2) + '
>';
29924 Point.prototype.isInfinity = function isInfinity() {
29925 // XXX This code assumes that zero is always zero in red
29926 return this.z.cmpn(
0) ===
0;
29929 Point.prototype.dbl = function dbl() {
29930 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-
1987-m-
3
29934 var a = this.x.redAdd(this.z);
29936 var aa = a.redSqr();
29938 var b = this.x.redSub(this.z);
29940 var bb = b.redSqr();
29942 var c = aa.redSub(bb);
29944 var nx = aa.redMul(bb);
29945 // Z3 = C * (BB + A24 * C)
29946 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
29947 return this.curve.point(nx, nz);
29950 Point.prototype.add = function add() {
29951 throw new Error('Not supported on Montgomery curve');
29954 Point.prototype.diffAdd = function diffAdd(p, diff) {
29955 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-
1987-m-
3
29959 var a = this.x.redAdd(this.z);
29961 var b = this.x.redSub(this.z);
29963 var c = p.x.redAdd(p.z);
29965 var d = p.x.redSub(p.z);
29967 var da = d.redMul(a);
29969 var cb = c.redMul(b);
29970 // X5 = Z1 * (DA + CB)^
2
29971 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
29972 // Z5 = X1 * (DA - CB)^
2
29973 var nz = diff.x.redMul(da.redISub(cb).redSqr());
29974 return this.curve.point(nx, nz);
29977 Point.prototype.mul = function mul(k) {
29979 var a = this; // (N /
2) * Q + Q
29980 var b = this.curve.point(null, null); // (N /
2) * Q
29983 for (var bits = []; t.cmpn(
0) !==
0; t.iushrn(
1))
29984 bits.push(t.andln(
1));
29986 for (var i = bits.length -
1; i
>=
0; i--) {
29987 if (bits[i] ===
0) {
29988 // N * Q + Q = ((N /
2) * Q + Q)) + (N /
2) * Q
29989 a = a.diffAdd(b, c);
29990 // N * Q =
2 * ((N /
2) * Q + Q))
29993 // N * Q = ((N /
2) * Q + Q) + ((N /
2) * Q)
29994 b = a.diffAdd(b, c);
29995 // N * Q + Q =
2 * ((N /
2) * Q + Q)
30002 Point.prototype.mulAdd = function mulAdd() {
30003 throw new Error('Not supported on Montgomery curve');
30006 Point.prototype.jumlAdd = function jumlAdd() {
30007 throw new Error('Not supported on Montgomery curve');
30010 Point.prototype.eq = function eq(other) {
30011 return this.getX().cmp(other.getX()) ===
0;
30014 Point.prototype.normalize = function normalize() {
30015 this.x = this.x.redMul(this.z.redInvm());
30016 this.z = this.curve.one;
30020 Point.prototype.getX = function getX() {
30021 // Normalize coordinates
30024 return this.x.fromRed();
30027 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
44:[function(require,module,exports){
30030 var curve = require('../curve');
30031 var elliptic = require('../../elliptic');
30032 var BN = require('bn.js');
30033 var inherits = require('inherits');
30034 var Base = curve.base;
30036 var assert = elliptic.utils.assert;
30038 function ShortCurve(conf) {
30039 Base.call(this, 'short', conf);
30041 this.a = new BN(conf.a,
16).toRed(this.red);
30042 this.b = new BN(conf.b,
16).toRed(this.red);
30043 this.tinv = this.two.redInvm();
30045 this.zeroA = this.a.fromRed().cmpn(
0) ===
0;
30046 this.threeA = this.a.fromRed().sub(this.p).cmpn(-
3) ===
0;
30048 // If the curve is endomorphic, precalculate beta and lambda
30049 this.endo = this._getEndomorphism(conf);
30050 this._endoWnafT1 = new Array(
4);
30051 this._endoWnafT2 = new Array(
4);
30053 inherits(ShortCurve, Base);
30054 module.exports = ShortCurve;
30056 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
30057 // No efficient endomorphism
30058 if (!this.zeroA || !this.g || !this.n || this.p.modn(
3) !==
1)
30061 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
30065 beta = new BN(conf.beta,
16).toRed(this.red);
30067 var betas = this._getEndoRoots(this.p);
30068 // Choose the smallest beta
30069 beta = betas[
0].cmp(betas[
1]) <
0 ? betas[
0] : betas[
1];
30070 beta = beta.toRed(this.red);
30073 lambda = new BN(conf.lambda,
16);
30075 // Choose the lambda that is matching selected beta
30076 var lambdas = this._getEndoRoots(this.n);
30077 if (this.g.mul(lambdas[
0]).x.cmp(this.g.x.redMul(beta)) ===
0) {
30078 lambda = lambdas[
0];
30080 lambda = lambdas[
1];
30081 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) ===
0);
30085 // Get basis vectors, used for balanced length-two representation
30088 basis = conf.basis.map(function(vec) {
30090 a: new BN(vec.a,
16),
30091 b: new BN(vec.b,
16)
30095 basis = this._getEndoBasis(lambda);
30105 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
30106 // Find roots of for x^
2 + x +
1 in F
30107 // Root = (-
1 +- Sqrt(-
3)) /
2
30109 var red = num === this.p ? this.red : BN.mont(num);
30110 var tinv = new BN(
2).toRed(red).redInvm();
30111 var ntinv = tinv.redNeg();
30113 var s = new BN(
3).toRed(red).redNeg().redSqrt().redMul(tinv);
30115 var l1 = ntinv.redAdd(s).fromRed();
30116 var l2 = ntinv.redSub(s).fromRed();
30120 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
30121 // aprxSqrt
>= sqrt(this.n)
30122 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() /
2));
30125 // Run EGCD, until r(L +
1) < aprxSqrt
30127 var v = this.n.clone();
30128 var x1 = new BN(
1);
30129 var y1 = new BN(
0);
30130 var x2 = new BN(
0);
30131 var y2 = new BN(
1);
30133 // NOTE: all vectors are roots of: a + b * lambda =
0 (mod n)
30147 while (u.cmpn(
0) !==
0) {
30149 r = v.sub(q.mul(u));
30150 x = x2.sub(q.mul(x1));
30151 var y = y2.sub(q.mul(y1));
30153 if (!a1 && r.cmp(aprxSqrt) <
0) {
30158 } else if (a1 && ++i ===
2) {
30173 var len1 = a1.sqr().add(b1.sqr());
30174 var len2 = a2.sqr().add(b2.sqr());
30175 if (len2.cmp(len1)
>=
0) {
30196 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
30197 var basis = this.endo.basis;
30201 var c1 = v2.b.mul(k).divRound(this.n);
30202 var c2 = v1.b.neg().mul(k).divRound(this.n);
30204 var p1 = c1.mul(v1.a);
30205 var p2 = c2.mul(v2.a);
30206 var q1 = c1.mul(v1.b);
30207 var q2 = c2.mul(v2.b);
30209 // Calculate answer
30210 var k1 = k.sub(p1).sub(p2);
30211 var k2 = q1.add(q2).neg();
30212 return { k1: k1, k2: k2 };
30215 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
30218 x = x.toRed(this.red);
30220 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
30221 var y = y2.redSqrt();
30222 if (y.redSqr().redSub(y2).cmp(this.zero) !==
0)
30223 throw new Error('invalid point');
30225 // XXX Is there any way to tell if the number is odd without converting it
30226 // to non-red form?
30227 var isOdd = y.fromRed().isOdd();
30228 if (odd && !isOdd || !odd && isOdd)
30231 return this.point(x, y);
30234 ShortCurve.prototype.validate = function validate(point) {
30241 var ax = this.a.redMul(x);
30242 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
30243 return y.redSqr().redISub(rhs).cmpn(
0) ===
0;
30246 ShortCurve.prototype._endoWnafMulAdd =
30247 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
30248 var npoints = this._endoWnafT1;
30249 var ncoeffs = this._endoWnafT2;
30250 for (var i =
0; i < points.length; i++) {
30251 var split = this._endoSplit(coeffs[i]);
30253 var beta = p._getBeta();
30255 if (split.k1.negative) {
30259 if (split.k2.negative) {
30261 beta = beta.neg(true);
30264 npoints[i *
2] = p;
30265 npoints[i *
2 +
1] = beta;
30266 ncoeffs[i *
2] = split.k1;
30267 ncoeffs[i *
2 +
1] = split.k2;
30269 var res = this._wnafMulAdd(
1, npoints, ncoeffs, i *
2, jacobianResult);
30271 // Clean-up references to points and coefficients
30272 for (var j =
0; j < i *
2; j++) {
30279 function Point(curve, x, y, isRed) {
30280 Base.BasePoint.call(this, curve, 'affine');
30281 if (x === null && y === null) {
30286 this.x = new BN(x,
16);
30287 this.y = new BN(y,
16);
30288 // Force redgomery representation when loading from JSON
30290 this.x.forceRed(this.curve.red);
30291 this.y.forceRed(this.curve.red);
30294 this.x = this.x.toRed(this.curve.red);
30296 this.y = this.y.toRed(this.curve.red);
30300 inherits(Point, Base.BasePoint);
30302 ShortCurve.prototype.point = function point(x, y, isRed) {
30303 return new Point(this, x, y, isRed);
30306 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
30307 return Point.fromJSON(this, obj, red);
30310 Point.prototype._getBeta = function _getBeta() {
30311 if (!this.curve.endo)
30314 var pre = this.precomputed;
30315 if (pre && pre.beta)
30318 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
30320 var curve = this.curve;
30321 var endoMul = function(p) {
30322 return curve.point(p.x.redMul(curve.endo.beta), p.y);
30325 beta.precomputed = {
30329 points: pre.naf.points.map(endoMul)
30331 doubles: pre.doubles && {
30332 step: pre.doubles.step,
30333 points: pre.doubles.points.map(endoMul)
30340 Point.prototype.toJSON = function toJSON() {
30341 if (!this.precomputed)
30342 return [ this.x, this.y ];
30344 return [ this.x, this.y, this.precomputed && {
30345 doubles: this.precomputed.doubles && {
30346 step: this.precomputed.doubles.step,
30347 points: this.precomputed.doubles.points.slice(
1)
30349 naf: this.precomputed.naf && {
30350 wnd: this.precomputed.naf.wnd,
30351 points: this.precomputed.naf.points.slice(
1)
30356 Point.fromJSON = function fromJSON(curve, obj, red) {
30357 if (typeof obj === 'string')
30358 obj = JSON.parse(obj);
30359 var res = curve.point(obj[
0], obj[
1], red);
30363 function obj2point(obj) {
30364 return curve.point(obj[
0], obj[
1], red);
30368 res.precomputed = {
30370 doubles: pre.doubles && {
30371 step: pre.doubles.step,
30372 points: [ res ].concat(pre.doubles.points.map(obj2point))
30376 points: [ res ].concat(pre.naf.points.map(obj2point))
30382 Point.prototype.inspect = function inspect() {
30383 if (this.isInfinity())
30384 return '
<EC Point Infinity
>';
30385 return '
<EC Point x: ' + this.x.fromRed().toString(
16,
2) +
30386 ' y: ' + this.y.fromRed().toString(
16,
2) + '
>';
30389 Point.prototype.isInfinity = function isInfinity() {
30393 Point.prototype.add = function add(p) {
30407 if (this.neg().eq(p))
30408 return this.curve.point(null, null);
30411 if (this.x.cmp(p.x) ===
0)
30412 return this.curve.point(null, null);
30414 var c = this.y.redSub(p.y);
30415 if (c.cmpn(
0) !==
0)
30416 c = c.redMul(this.x.redSub(p.x).redInvm());
30417 var nx = c.redSqr().redISub(this.x).redISub(p.x);
30418 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
30419 return this.curve.point(nx, ny);
30422 Point.prototype.dbl = function dbl() {
30427 var ys1 = this.y.redAdd(this.y);
30428 if (ys1.cmpn(
0) ===
0)
30429 return this.curve.point(null, null);
30431 var a = this.curve.a;
30433 var x2 = this.x.redSqr();
30434 var dyinv = ys1.redInvm();
30435 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
30437 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
30438 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
30439 return this.curve.point(nx, ny);
30442 Point.prototype.getX = function getX() {
30443 return this.x.fromRed();
30446 Point.prototype.getY = function getY() {
30447 return this.y.fromRed();
30450 Point.prototype.mul = function mul(k) {
30453 if (this._hasDoubles(k))
30454 return this.curve._fixedNafMul(this, k);
30455 else if (this.curve.endo)
30456 return this.curve._endoWnafMulAdd([ this ], [ k ]);
30458 return this.curve._wnafMul(this, k);
30461 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
30462 var points = [ this, p2 ];
30463 var coeffs = [ k1, k2 ];
30464 if (this.curve.endo)
30465 return this.curve._endoWnafMulAdd(points, coeffs);
30467 return this.curve._wnafMulAdd(
1, points, coeffs,
2);
30470 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
30471 var points = [ this, p2 ];
30472 var coeffs = [ k1, k2 ];
30473 if (this.curve.endo)
30474 return this.curve._endoWnafMulAdd(points, coeffs, true);
30476 return this.curve._wnafMulAdd(
1, points, coeffs,
2, true);
30479 Point.prototype.eq = function eq(p) {
30480 return this === p ||
30481 this.inf === p.inf &&
30482 (this.inf || this.x.cmp(p.x) ===
0 && this.y.cmp(p.y) ===
0);
30485 Point.prototype.neg = function neg(_precompute) {
30489 var res = this.curve.point(this.x, this.y.redNeg());
30490 if (_precompute && this.precomputed) {
30491 var pre = this.precomputed;
30492 var negate = function(p) {
30495 res.precomputed = {
30498 points: pre.naf.points.map(negate)
30500 doubles: pre.doubles && {
30501 step: pre.doubles.step,
30502 points: pre.doubles.points.map(negate)
30509 Point.prototype.toJ = function toJ() {
30511 return this.curve.jpoint(null, null, null);
30513 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
30517 function JPoint(curve, x, y, z) {
30518 Base.BasePoint.call(this, curve, 'jacobian');
30519 if (x === null && y === null && z === null) {
30520 this.x = this.curve.one;
30521 this.y = this.curve.one;
30522 this.z = new BN(
0);
30524 this.x = new BN(x,
16);
30525 this.y = new BN(y,
16);
30526 this.z = new BN(z,
16);
30529 this.x = this.x.toRed(this.curve.red);
30531 this.y = this.y.toRed(this.curve.red);
30533 this.z = this.z.toRed(this.curve.red);
30535 this.zOne = this.z === this.curve.one;
30537 inherits(JPoint, Base.BasePoint);
30539 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
30540 return new JPoint(this, x, y, z);
30543 JPoint.prototype.toP = function toP() {
30544 if (this.isInfinity())
30545 return this.curve.point(null, null);
30547 var zinv = this.z.redInvm();
30548 var zinv2 = zinv.redSqr();
30549 var ax = this.x.redMul(zinv2);
30550 var ay = this.y.redMul(zinv2).redMul(zinv);
30552 return this.curve.point(ax, ay);
30555 JPoint.prototype.neg = function neg() {
30556 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
30559 JPoint.prototype.add = function add(p) {
30561 if (this.isInfinity())
30565 if (p.isInfinity())
30569 var pz2 = p.z.redSqr();
30570 var z2 = this.z.redSqr();
30571 var u1 = this.x.redMul(pz2);
30572 var u2 = p.x.redMul(z2);
30573 var s1 = this.y.redMul(pz2.redMul(p.z));
30574 var s2 = p.y.redMul(z2.redMul(this.z));
30576 var h = u1.redSub(u2);
30577 var r = s1.redSub(s2);
30578 if (h.cmpn(
0) ===
0) {
30579 if (r.cmpn(
0) !==
0)
30580 return this.curve.jpoint(null, null, null);
30585 var h2 = h.redSqr();
30586 var h3 = h2.redMul(h);
30587 var v = u1.redMul(h2);
30589 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
30590 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
30591 var nz = this.z.redMul(p.z).redMul(h);
30593 return this.curve.jpoint(nx, ny, nz);
30596 JPoint.prototype.mixedAdd = function mixedAdd(p) {
30598 if (this.isInfinity())
30602 if (p.isInfinity())
30606 var z2 = this.z.redSqr();
30608 var u2 = p.x.redMul(z2);
30610 var s2 = p.y.redMul(z2).redMul(this.z);
30612 var h = u1.redSub(u2);
30613 var r = s1.redSub(s2);
30614 if (h.cmpn(
0) ===
0) {
30615 if (r.cmpn(
0) !==
0)
30616 return this.curve.jpoint(null, null, null);
30621 var h2 = h.redSqr();
30622 var h3 = h2.redMul(h);
30623 var v = u1.redMul(h2);
30625 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
30626 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
30627 var nz = this.z.redMul(h);
30629 return this.curve.jpoint(nx, ny, nz);
30632 JPoint.prototype.dblp = function dblp(pow) {
30635 if (this.isInfinity())
30640 if (this.curve.zeroA || this.curve.threeA) {
30642 for (var i =
0; i < pow; i++)
30647 //
1M +
2S +
1A + N * (
4S +
5M +
8A)
30648 // N =
1 =
> 6M +
6S +
9A
30649 var a = this.curve.a;
30650 var tinv = this.curve.tinv;
30655 var jz4 = jz.redSqr().redSqr();
30658 var jyd = jy.redAdd(jy);
30659 for (var i =
0; i < pow; i++) {
30660 var jx2 = jx.redSqr();
30661 var jyd2 = jyd.redSqr();
30662 var jyd4 = jyd2.redSqr();
30663 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
30665 var t1 = jx.redMul(jyd2);
30666 var nx = c.redSqr().redISub(t1.redAdd(t1));
30667 var t2 = t1.redISub(nx);
30668 var dny = c.redMul(t2);
30669 dny = dny.redIAdd(dny).redISub(jyd4);
30670 var nz = jyd.redMul(jz);
30672 jz4 = jz4.redMul(jyd4);
30679 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
30682 JPoint.prototype.dbl = function dbl() {
30683 if (this.isInfinity())
30686 if (this.curve.zeroA)
30687 return this._zeroDbl();
30688 else if (this.curve.threeA)
30689 return this._threeDbl();
30691 return this._dbl();
30694 JPoint.prototype._zeroDbl = function _zeroDbl() {
30700 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
30701 // #doubling-mdbl-
2007-bl
30705 var xx = this.x.redSqr();
30707 var yy = this.y.redSqr();
30709 var yyyy = yy.redSqr();
30710 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
30711 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30713 // M =
3 * XX + a; a =
0
30714 var m = xx.redAdd(xx).redIAdd(xx);
30716 var t = m.redSqr().redISub(s).redISub(s);
30719 var yyyy8 = yyyy.redIAdd(yyyy);
30720 yyyy8 = yyyy8.redIAdd(yyyy8);
30721 yyyy8 = yyyy8.redIAdd(yyyy8);
30725 // Y3 = M * (S - T) -
8 * YYYY
30726 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
30728 nz = this.y.redAdd(this.y);
30730 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html
30731 // #doubling-dbl-
2009-l
30735 var a = this.x.redSqr();
30737 var b = this.y.redSqr();
30739 var c = b.redSqr();
30740 // D =
2 * ((X1 + B)^
2 - A - C)
30741 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
30744 var e = a.redAdd(a).redIAdd(a);
30746 var f = e.redSqr();
30749 var c8 = c.redIAdd(c);
30750 c8 = c8.redIAdd(c8);
30751 c8 = c8.redIAdd(c8);
30754 nx = f.redISub(d).redISub(d);
30755 // Y3 = E * (D - X3) -
8 * C
30756 ny = e.redMul(d.redISub(nx)).redISub(c8);
30757 // Z3 =
2 * Y1 * Z1
30758 nz = this.y.redMul(this.z);
30759 nz = nz.redIAdd(nz);
30762 return this.curve.jpoint(nx, ny, nz);
30765 JPoint.prototype._threeDbl = function _threeDbl() {
30771 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html
30772 // #doubling-mdbl-
2007-bl
30776 var xx = this.x.redSqr();
30778 var yy = this.y.redSqr();
30780 var yyyy = yy.redSqr();
30781 // S =
2 * ((X1 + YY)^
2 - XX - YYYY)
30782 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30785 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
30787 var t = m.redSqr().redISub(s).redISub(s);
30790 // Y3 = M * (S - T) -
8 * YYYY
30791 var yyyy8 = yyyy.redIAdd(yyyy);
30792 yyyy8 = yyyy8.redIAdd(yyyy8);
30793 yyyy8 = yyyy8.redIAdd(yyyy8);
30794 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
30796 nz = this.y.redAdd(this.y);
30798 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
3.html#doubling-dbl-
2001-b
30802 var delta = this.z.redSqr();
30804 var gamma = this.y.redSqr();
30805 // beta = X1 * gamma
30806 var beta = this.x.redMul(gamma);
30807 // alpha =
3 * (X1 - delta) * (X1 + delta)
30808 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
30809 alpha = alpha.redAdd(alpha).redIAdd(alpha);
30810 // X3 = alpha^
2 -
8 * beta
30811 var beta4 = beta.redIAdd(beta);
30812 beta4 = beta4.redIAdd(beta4);
30813 var beta8 = beta4.redAdd(beta4);
30814 nx = alpha.redSqr().redISub(beta8);
30815 // Z3 = (Y1 + Z1)^
2 - gamma - delta
30816 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
30817 // Y3 = alpha * (
4 * beta - X3) -
8 * gamma^
2
30818 var ggamma8 = gamma.redSqr();
30819 ggamma8 = ggamma8.redIAdd(ggamma8);
30820 ggamma8 = ggamma8.redIAdd(ggamma8);
30821 ggamma8 = ggamma8.redIAdd(ggamma8);
30822 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
30825 return this.curve.jpoint(nx, ny, nz);
30828 JPoint.prototype._dbl = function _dbl() {
30829 var a = this.curve.a;
30835 var jz4 = jz.redSqr().redSqr();
30837 var jx2 = jx.redSqr();
30838 var jy2 = jy.redSqr();
30840 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
30842 var jxd4 = jx.redAdd(jx);
30843 jxd4 = jxd4.redIAdd(jxd4);
30844 var t1 = jxd4.redMul(jy2);
30845 var nx = c.redSqr().redISub(t1.redAdd(t1));
30846 var t2 = t1.redISub(nx);
30848 var jyd8 = jy2.redSqr();
30849 jyd8 = jyd8.redIAdd(jyd8);
30850 jyd8 = jyd8.redIAdd(jyd8);
30851 jyd8 = jyd8.redIAdd(jyd8);
30852 var ny = c.redMul(t2).redISub(jyd8);
30853 var nz = jy.redAdd(jy).redMul(jz);
30855 return this.curve.jpoint(nx, ny, nz);
30858 JPoint.prototype.trpl = function trpl() {
30859 if (!this.curve.zeroA)
30860 return this.dbl().add(this);
30862 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-
0.html#tripling-tpl-
2007-bl
30866 var xx = this.x.redSqr();
30868 var yy = this.y.redSqr();
30870 var zz = this.z.redSqr();
30872 var yyyy = yy.redSqr();
30873 // M =
3 * XX + a * ZZ2; a =
0
30874 var m = xx.redAdd(xx).redIAdd(xx);
30876 var mm = m.redSqr();
30877 // E =
6 * ((X1 + YY)^
2 - XX - YYYY) - MM
30878 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
30880 e = e.redAdd(e).redIAdd(e);
30883 var ee = e.redSqr();
30885 var t = yyyy.redIAdd(yyyy);
30889 // U = (M + E)^
2 - MM - EE - T
30890 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
30891 // X3 =
4 * (X1 * EE -
4 * YY * U)
30892 var yyu4 = yy.redMul(u);
30893 yyu4 = yyu4.redIAdd(yyu4);
30894 yyu4 = yyu4.redIAdd(yyu4);
30895 var nx = this.x.redMul(ee).redISub(yyu4);
30896 nx = nx.redIAdd(nx);
30897 nx = nx.redIAdd(nx);
30898 // Y3 =
8 * Y1 * (U * (T - U) - E * EE)
30899 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
30900 ny = ny.redIAdd(ny);
30901 ny = ny.redIAdd(ny);
30902 ny = ny.redIAdd(ny);
30903 // Z3 = (Z1 + E)^
2 - ZZ - EE
30904 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
30906 return this.curve.jpoint(nx, ny, nz);
30909 JPoint.prototype.mul = function mul(k, kbase) {
30910 k = new BN(k, kbase);
30912 return this.curve._wnafMul(this, k);
30915 JPoint.prototype.eq = function eq(p) {
30916 if (p.type === 'affine')
30917 return this.eq(p.toJ());
30922 // x1 * z2^
2 == x2 * z1^
2
30923 var z2 = this.z.redSqr();
30924 var pz2 = p.z.redSqr();
30925 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(
0) !==
0)
30928 // y1 * z2^
3 == y2 * z1^
3
30929 var z3 = z2.redMul(this.z);
30930 var pz3 = pz2.redMul(p.z);
30931 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(
0) ===
0;
30934 JPoint.prototype.eqXToP = function eqXToP(x) {
30935 var zs = this.z.redSqr();
30936 var rx = x.toRed(this.curve.red).redMul(zs);
30937 if (this.x.cmp(rx) ===
0)
30940 var xc = x.clone();
30941 var t = this.curve.redN.redMul(zs);
30943 xc.iadd(this.curve.n);
30944 if (xc.cmp(this.curve.p)
>=
0)
30948 if (this.x.cmp(rx) ===
0)
30954 JPoint.prototype.inspect = function inspect() {
30955 if (this.isInfinity())
30956 return '
<EC JPoint Infinity
>';
30957 return '
<EC JPoint x: ' + this.x.toString(
16,
2) +
30958 ' y: ' + this.y.toString(
16,
2) +
30959 ' z: ' + this.z.toString(
16,
2) + '
>';
30962 JPoint.prototype.isInfinity = function isInfinity() {
30963 // XXX This code assumes that zero is always zero in red
30964 return this.z.cmpn(
0) ===
0;
30967 },{"../../elliptic":
39,"../curve":
42,"bn.js":
33,"inherits":
63}],
45:[function(require,module,exports){
30970 var curves = exports;
30972 var hash = require('hash.js');
30973 var elliptic = require('../elliptic');
30975 var assert = elliptic.utils.assert;
30977 function PresetCurve(options) {
30978 if (options.type === 'short')
30979 this.curve = new elliptic.curve.short(options);
30980 else if (options.type === 'edwards')
30981 this.curve = new elliptic.curve.edwards(options);
30983 this.curve = new elliptic.curve.mont(options);
30984 this.g = this.curve.g;
30985 this.n = this.curve.n;
30986 this.hash = options.hash;
30988 assert(this.g.validate(), 'Invalid curve');
30989 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
30991 curves.PresetCurve = PresetCurve;
30993 function defineCurve(name, options) {
30994 Object.defineProperty(curves, name, {
30995 configurable: true,
30998 var curve = new PresetCurve(options);
30999 Object.defineProperty(curves, name, {
31000 configurable: true,
31009 defineCurve('p192', {
31012 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
31013 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
31014 b: '
64210519 e59c80e7
0fa7e9ab
72243049 feb8deec c146b9b1',
31015 n: 'ffffffff ffffffff ffffffff
99def836
146bc9b1 b4d22831',
31019 '
188da80e b03090f6
7cbf20eb
43a18800 f4ff0afd
82ff1012',
31020 '
07192b95 ffc8da78
631011ed
6b24cdd5
73f977a1
1e794811'
31024 defineCurve('p224', {
31027 p: 'ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000001',
31028 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
31029 b: 'b4050a85
0c04b3ab f5413256
5044b0b7 d7bfd8ba
270b3943
2355ffb4',
31030 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e
13dd2945
5c5c2a3d',
31034 'b70e0cbd
6bb4bf7f
321390b9
4a03c1d3
56c21122
343280d6
115c1d21',
31035 'bd376388 b5f723fb
4c22dfe6 cd4375a0
5a074764
44d58199
85007e34'
31039 defineCurve('p256', {
31042 p: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
31043 a: 'ffffffff
00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
31044 b: '
5ac635d8 aa3a93e7 b3ebbd55
769886bc
651d06b0 cc53b0f6
3bce3c3e
27d2604b',
31045 n: 'ffffffff
00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
31049 '
6b17d1f2 e12c4247 f8bce6e5
63a440f2
77037d81
2deb33a0 f4a13945 d898c296',
31050 '
4fe342e2 fe1a7f9b
8ee7eb4a
7c0f9e16
2bce3357
6b315ece cbb64068
37bf51f5'
31054 defineCurve('p384', {
31057 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31058 'fffffffe ffffffff
00000000 00000000 ffffffff',
31059 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31060 'fffffffe ffffffff
00000000 00000000 fffffffc',
31061 b: 'b3312fa7 e23ee7e4
988e056b e3f82d19
181d9c6e fe814112
0314088f ' +
31062 '
5013875a c656398d
8a2ed19d
2a85c8ed d3ec2aef',
31063 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
31064 'f4372ddf
581a0db2
48b0a77a ecec196a ccc52973',
31068 'aa87ca22 be8b0537
8eb1c71e f320ad74
6e1d3b62
8ba79b98
59f741e0
82542a38 ' +
31069 '
5502f25d bf55296c
3a545e38
72760ab7',
31070 '
3617de4a
96262c6f
5d9e98bf
9292dc29 f8f41dbd
289a147c e9da3113 b5f0b8c0 ' +
31071 '
0a60b1ce
1d7e819d
7a431d7c
90ea0e5f'
31075 defineCurve('p521', {
31078 p: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31079 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31080 'ffffffff ffffffff ffffffff ffffffff ffffffff',
31081 a: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31082 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31083 'ffffffff ffffffff ffffffff ffffffff fffffffc',
31084 b: '
00000051 953eb961
8e1c9a1f
929a21a0 b68540ee a2da725b ' +
31085 '
99b315f3 b8b48991
8ef109e1
56193951 ec7e937b
1652c0bd ' +
31086 '
3bb1bf07
3573df88
3d2c34f1 ef451fd4
6b503f00',
31087 n: '
000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
31088 'ffffffff ffffffff fffffffa
51868783 bf2f966b
7fcc0148 ' +
31089 'f709a5d0
3bb5c9b8
899c47ae bb6fb71e
91386409',
31093 '
000000c6
858e06b7
0404e9cd
9e3ecb66
2395b442
9c648139 ' +
31094 '
053fb521 f828af60
6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
31095 'a2ffa8de
3348b3c1
856a429b f97e7e31 c2e5bd66',
31096 '
00000118 39296a78
9a3bc004
5c8a5fb4
2c7d1bd9
98f54449 ' +
31097 '
579b4468
17afbd17
273e662c
97ee7299
5ef42640 c550b901 ' +
31098 '
3fad0761
353c7086 a272c240
88be9476
9fd16650'
31102 defineCurve('curve25519', {
31105 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
31108 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
31116 defineCurve('ed25519', {
31119 p: '
7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
31122 // -
121665 * (
121666^(-
1)) (mod P)
31123 d: '
52036cee2b6ffe73
8cc740797779e898
00700a4d4141d8ab
75eb4dca135978a3',
31124 n: '
1000000000000000 0000000000000000 14def9dea2f79cd6
5812631a5cf5d3ed',
31128 '
216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
31131 '
6666666666666666666666666666666666666666666666666666666666666658'
31137 pre = require('./precomputed/secp256k1');
31142 defineCurve('secp256k1', {
31145 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
31148 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
31152 // Precomputed endomorphism
31153 beta: '
7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
31154 lambda: '
5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
31157 a: '
3086d221a7d46bcde86c90e49284eb15',
31158 b: '-e4437ed6010e88286f547fa90abfe4c3'
31161 a: '
114ca50f7a8e2f3f657c1108d9d44cfd8',
31162 b: '
3086d221a7d46bcde86c90e49284eb15'
31168 '
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
31169 '
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
31174 },{"../elliptic":
39,"./precomputed/secp256k1":
53,"hash.js":
57}],
46:[function(require,module,exports){
31177 var BN = require('bn.js');
31178 var elliptic = require('../../elliptic');
31179 var utils = elliptic.utils;
31180 var assert = utils.assert;
31182 var KeyPair = require('./key');
31183 var Signature = require('./signature');
31185 function EC(options) {
31186 if (!(this instanceof EC))
31187 return new EC(options);
31189 // Shortcut `elliptic.ec(curve-name)`
31190 if (typeof options === 'string') {
31191 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
31193 options = elliptic.curves[options];
31196 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
31197 if (options instanceof elliptic.curves.PresetCurve)
31198 options = { curve: options };
31200 this.curve = options.curve.curve;
31201 this.n = this.curve.n;
31202 this.nh = this.n.ushrn(
1);
31203 this.g = this.curve.g;
31206 this.g = options.curve.g;
31207 this.g.precompute(options.curve.n.bitLength() +
1);
31209 // Hash for function for DRBG
31210 this.hash = options.hash || options.curve.hash;
31212 module.exports = EC;
31214 EC.prototype.keyPair = function keyPair(options) {
31215 return new KeyPair(this, options);
31218 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
31219 return KeyPair.fromPrivate(this, priv, enc);
31222 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
31223 return KeyPair.fromPublic(this, pub, enc);
31226 EC.prototype.genKeyPair = function genKeyPair(options) {
31230 // Instantiate Hmac_DRBG
31231 var drbg = new elliptic.hmacDRBG({
31233 pers: options.pers,
31234 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
31235 nonce: this.n.toArray()
31238 var bytes = this.n.byteLength();
31239 var ns2 = this.n.sub(new BN(
2));
31241 var priv = new BN(drbg.generate(bytes));
31242 if (priv.cmp(ns2)
> 0)
31246 return this.keyFromPrivate(priv);
31250 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
31251 var delta = msg.byteLength() *
8 - this.n.bitLength();
31253 msg = msg.ushrn(delta);
31254 if (!truncOnly && msg.cmp(this.n)
>=
0)
31255 return msg.sub(this.n);
31260 EC.prototype.sign = function sign(msg, key, enc, options) {
31261 if (typeof enc === 'object') {
31268 key = this.keyFromPrivate(key, enc);
31269 msg = this._truncateToN(new BN(msg,
16));
31271 // Zero-extend key to provide enough entropy
31272 var bytes = this.n.byteLength();
31273 var bkey = key.getPrivate().toArray('be', bytes);
31275 // Zero-extend nonce to have the same byte size as N
31276 var nonce = msg.toArray('be', bytes);
31278 // Instantiate Hmac_DRBG
31279 var drbg = new elliptic.hmacDRBG({
31283 pers: options.pers,
31284 persEnc: options.persEnc
31287 // Number of bytes to generate
31288 var ns1 = this.n.sub(new BN(
1));
31290 for (var iter =
0; true; iter++) {
31291 var k = options.k ?
31293 new BN(drbg.generate(this.n.byteLength()));
31294 k = this._truncateToN(k, true);
31295 if (k.cmpn(
1) <=
0 || k.cmp(ns1)
>=
0)
31298 var kp = this.g.mul(k);
31299 if (kp.isInfinity())
31302 var kpX = kp.getX();
31303 var r = kpX.umod(this.n);
31304 if (r.cmpn(
0) ===
0)
31307 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
31308 s = s.umod(this.n);
31309 if (s.cmpn(
0) ===
0)
31312 var recoveryParam = (kp.getY().isOdd() ?
1 :
0) |
31313 (kpX.cmp(r) !==
0 ?
2 :
0);
31315 // Use complement of `s`, if it is
> `n /
2`
31316 if (options.canonical && s.cmp(this.nh)
> 0) {
31318 recoveryParam ^=
1;
31321 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
31325 EC.prototype.verify = function verify(msg, signature, key, enc) {
31326 msg = this._truncateToN(new BN(msg,
16));
31327 key = this.keyFromPublic(key, enc);
31328 signature = new Signature(signature, 'hex');
31330 // Perform primitive values validation
31331 var r = signature.r;
31332 var s = signature.s;
31333 if (r.cmpn(
1) <
0 || r.cmp(this.n)
>=
0)
31335 if (s.cmpn(
1) <
0 || s.cmp(this.n)
>=
0)
31338 // Validate signature
31339 var sinv = s.invm(this.n);
31340 var u1 = sinv.mul(msg).umod(this.n);
31341 var u2 = sinv.mul(r).umod(this.n);
31343 if (!this.curve._maxwellTrick) {
31344 var p = this.g.mulAdd(u1, key.getPublic(), u2);
31345 if (p.isInfinity())
31348 return p.getX().umod(this.n).cmp(r) ===
0;
31351 // NOTE: Greg Maxwell's trick, inspired by:
31352 // https://git.io/vad3K
31354 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
31355 if (p.isInfinity())
31358 // Compare `p.x` of Jacobian point with `r`,
31359 // this will do `p.x == r * p.z^
2` instead of multiplying `p.x` by the
31360 // inverse of `p.z^
2`
31361 return p.eqXToP(r);
31364 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
31365 assert((
3 & j) === j, 'The recovery param is more than two bits');
31366 signature = new Signature(signature, enc);
31369 var e = new BN(msg);
31370 var r = signature.r;
31371 var s = signature.s;
31373 // A set LSB signifies that the y-coordinate is odd
31374 var isYOdd = j &
1;
31375 var isSecondKey = j
>> 1;
31376 if (r.cmp(this.curve.p.umod(this.curve.n))
>=
0 && isSecondKey)
31377 throw new Error('Unable to find sencond key candinate');
31379 //
1.1. Let x = r + jn.
31381 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
31383 r = this.curve.pointFromX(r, isYOdd);
31385 var rInv = signature.r.invm(n);
31386 var s1 = n.sub(e).mul(rInv).umod(n);
31387 var s2 = s.mul(rInv).umod(n);
31389 //
1.6.1 Compute Q = r^-
1 (sR - eG)
31390 // Q = r^-
1 (sR + -eG)
31391 return this.g.mulAdd(s1, r, s2);
31394 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
31395 signature = new Signature(signature, enc);
31396 if (signature.recoveryParam !== null)
31397 return signature.recoveryParam;
31399 for (var i =
0; i <
4; i++) {
31402 Qprime = this.recoverPubKey(e, signature, i);
31410 throw new Error('Unable to find valid recovery factor');
31413 },{"../../elliptic":
39,"./key":
47,"./signature":
48,"bn.js":
33}],
47:[function(require,module,exports){
31416 var BN = require('bn.js');
31417 var elliptic = require('../../elliptic');
31418 var utils = elliptic.utils;
31419 var assert = utils.assert;
31421 function KeyPair(ec, options) {
31426 // KeyPair(ec, { priv: ..., pub: ... })
31428 this._importPrivate(options.priv, options.privEnc);
31430 this._importPublic(options.pub, options.pubEnc);
31432 module.exports = KeyPair;
31434 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
31435 if (pub instanceof KeyPair)
31438 return new KeyPair(ec, {
31444 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
31445 if (priv instanceof KeyPair)
31448 return new KeyPair(ec, {
31454 KeyPair.prototype.validate = function validate() {
31455 var pub = this.getPublic();
31457 if (pub.isInfinity())
31458 return { result: false, reason: 'Invalid public key' };
31459 if (!pub.validate())
31460 return { result: false, reason: 'Public key is not a point' };
31461 if (!pub.mul(this.ec.curve.n).isInfinity())
31462 return { result: false, reason: 'Public key * N != O' };
31464 return { result: true, reason: null };
31467 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
31468 // compact is optional argument
31469 if (typeof compact === 'string') {
31475 this.pub = this.ec.g.mul(this.priv);
31480 return this.pub.encode(enc, compact);
31483 KeyPair.prototype.getPrivate = function getPrivate(enc) {
31485 return this.priv.toString(
16,
2);
31490 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
31491 this.priv = new BN(key, enc ||
16);
31493 // Ensure that the priv won't be bigger than n, otherwise we may fail
31494 // in fixed multiplication method
31495 this.priv = this.priv.umod(this.ec.curve.n);
31498 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
31499 if (key.x || key.y) {
31500 // Montgomery points only have an `x` coordinate.
31501 // Weierstrass/Edwards points on the other hand have both `x` and
31502 // `y` coordinates.
31503 if (this.ec.curve.type === 'mont') {
31504 assert(key.x, 'Need x coordinate');
31505 } else if (this.ec.curve.type === 'short' ||
31506 this.ec.curve.type === 'edwards') {
31507 assert(key.x && key.y, 'Need both x and y coordinate');
31509 this.pub = this.ec.curve.point(key.x, key.y);
31512 this.pub = this.ec.curve.decodePoint(key, enc);
31516 KeyPair.prototype.derive = function derive(pub) {
31517 return pub.mul(this.priv).getX();
31521 KeyPair.prototype.sign = function sign(msg, enc, options) {
31522 return this.ec.sign(msg, this, enc, options);
31525 KeyPair.prototype.verify = function verify(msg, signature) {
31526 return this.ec.verify(msg, signature, this);
31529 KeyPair.prototype.inspect = function inspect() {
31530 return '
<Key priv: ' + (this.priv && this.priv.toString(
16,
2)) +
31531 ' pub: ' + (this.pub && this.pub.inspect()) + '
>';
31534 },{"../../elliptic":
39,"bn.js":
33}],
48:[function(require,module,exports){
31537 var BN = require('bn.js');
31539 var elliptic = require('../../elliptic');
31540 var utils = elliptic.utils;
31541 var assert = utils.assert;
31543 function Signature(options, enc) {
31544 if (options instanceof Signature)
31547 if (this._importDER(options, enc))
31550 assert(options.r && options.s, 'Signature without r or s');
31551 this.r = new BN(options.r,
16);
31552 this.s = new BN(options.s,
16);
31553 if (options.recoveryParam === undefined)
31554 this.recoveryParam = null;
31556 this.recoveryParam = options.recoveryParam;
31558 module.exports = Signature;
31560 function Position() {
31564 function getLength(buf, p) {
31565 var initial = buf[p.place++];
31566 if (!(initial &
0x80)) {
31569 var octetLen = initial &
0xf;
31571 for (var i =
0, off = p.place; i < octetLen; i++, off++) {
31579 function rmPadding(buf) {
31581 var len = buf.length -
1;
31582 while (!buf[i] && !(buf[i +
1] &
0x80) && i < len) {
31588 return buf.slice(i);
31591 Signature.prototype._importDER = function _importDER(data, enc) {
31592 data = utils.toArray(data, enc);
31593 var p = new Position();
31594 if (data[p.place++] !==
0x30) {
31597 var len = getLength(data, p);
31598 if ((len + p.place) !== data.length) {
31601 if (data[p.place++] !==
0x02) {
31604 var rlen = getLength(data, p);
31605 var r = data.slice(p.place, rlen + p.place);
31607 if (data[p.place++] !==
0x02) {
31610 var slen = getLength(data, p);
31611 if (data.length !== slen + p.place) {
31614 var s = data.slice(p.place, slen + p.place);
31615 if (r[
0] ===
0 && (r[
1] &
0x80)) {
31618 if (s[
0] ===
0 && (s[
1] &
0x80)) {
31622 this.r = new BN(r);
31623 this.s = new BN(s);
31624 this.recoveryParam = null;
31629 function constructLength(arr, len) {
31634 var octets =
1 + (Math.log(len) / Math.LN2
>>> 3);
31635 arr.push(octets |
0x80);
31637 arr.push((len
>>> (octets <<
3)) &
0xff);
31642 Signature.prototype.toDER = function toDER(enc) {
31643 var r = this.r.toArray();
31644 var s = this.s.toArray();
31648 r = [
0 ].concat(r);
31651 s = [
0 ].concat(s);
31656 while (!s[
0] && !(s[
1] &
0x80)) {
31659 var arr = [
0x02 ];
31660 constructLength(arr, r.length);
31661 arr = arr.concat(r);
31663 constructLength(arr, s.length);
31664 var backHalf = arr.concat(s);
31665 var res = [
0x30 ];
31666 constructLength(res, backHalf.length);
31667 res = res.concat(backHalf);
31668 return utils.encode(res, enc);
31671 },{"../../elliptic":
39,"bn.js":
33}],
49:[function(require,module,exports){
31674 var hash = require('hash.js');
31675 var elliptic = require('../../elliptic');
31676 var utils = elliptic.utils;
31677 var assert = utils.assert;
31678 var parseBytes = utils.parseBytes;
31679 var KeyPair = require('./key');
31680 var Signature = require('./signature');
31682 function EDDSA(curve) {
31683 assert(curve === 'ed25519', 'only tested with ed25519 so far');
31685 if (!(this instanceof EDDSA))
31686 return new EDDSA(curve);
31688 var curve = elliptic.curves[curve].curve;
31689 this.curve = curve;
31691 this.g.precompute(curve.n.bitLength() +
1);
31693 this.pointClass = curve.point().constructor;
31694 this.encodingLength = Math.ceil(curve.n.bitLength() /
8);
31695 this.hash = hash.sha512;
31698 module.exports = EDDSA;
31701 * @param {Array|String} message - message bytes
31702 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
31703 * @returns {Signature} - signature
31705 EDDSA.prototype.sign = function sign(message, secret) {
31706 message = parseBytes(message);
31707 var key = this.keyFromSecret(secret);
31708 var r = this.hashInt(key.messagePrefix(), message);
31709 var R = this.g.mul(r);
31710 var Rencoded = this.encodePoint(R);
31711 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
31713 var S = r.add(s_).umod(this.curve.n);
31714 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
31718 * @param {Array} message - message bytes
31719 * @param {Array|String|Signature} sig - sig bytes
31720 * @param {Array|String|Point|KeyPair} pub - public key
31721 * @returns {Boolean} - true if public key matches sig of message
31723 EDDSA.prototype.verify = function verify(message, sig, pub) {
31724 message = parseBytes(message);
31725 sig = this.makeSignature(sig);
31726 var key = this.keyFromPublic(pub);
31727 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
31728 var SG = this.g.mul(sig.S());
31729 var RplusAh = sig.R().add(key.pub().mul(h));
31730 return RplusAh.eq(SG);
31733 EDDSA.prototype.hashInt = function hashInt() {
31734 var hash = this.hash();
31735 for (var i =
0; i < arguments.length; i++)
31736 hash.update(arguments[i]);
31737 return utils.intFromLE(hash.digest()).umod(this.curve.n);
31740 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
31741 return KeyPair.fromPublic(this, pub);
31744 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
31745 return KeyPair.fromSecret(this, secret);
31748 EDDSA.prototype.makeSignature = function makeSignature(sig) {
31749 if (sig instanceof Signature)
31751 return new Signature(this, sig);
31755 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-
03#section-
5.2
31757 * EDDSA defines methods for encoding and decoding points and integers. These are
31758 * helper convenience methods, that pass along to utility functions implied
31762 EDDSA.prototype.encodePoint = function encodePoint(point) {
31763 var enc = point.getY().toArray('le', this.encodingLength);
31764 enc[this.encodingLength -
1] |= point.getX().isOdd() ?
0x80 :
0;
31768 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
31769 bytes = utils.parseBytes(bytes);
31771 var lastIx = bytes.length -
1;
31772 var normed = bytes.slice(
0, lastIx).concat(bytes[lastIx] & ~
0x80);
31773 var xIsOdd = (bytes[lastIx] &
0x80) !==
0;
31775 var y = utils.intFromLE(normed);
31776 return this.curve.pointFromY(y, xIsOdd);
31779 EDDSA.prototype.encodeInt = function encodeInt(num) {
31780 return num.toArray('le', this.encodingLength);
31783 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
31784 return utils.intFromLE(bytes);
31787 EDDSA.prototype.isPoint = function isPoint(val) {
31788 return val instanceof this.pointClass;
31791 },{"../../elliptic":
39,"./key":
50,"./signature":
51,"hash.js":
57}],
50:[function(require,module,exports){
31794 var elliptic = require('../../elliptic');
31795 var utils = elliptic.utils;
31796 var assert = utils.assert;
31797 var parseBytes = utils.parseBytes;
31798 var cachedProperty = utils.cachedProperty;
31801 * @param {EDDSA} eddsa - instance
31802 * @param {Object} params - public/private key parameters
31804 * @param {Array
<Byte>} [params.secret] - secret seed bytes
31805 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
31806 * @param {Array
<Byte>} [params.pub] - public key point encoded as bytes
31809 function KeyPair(eddsa, params) {
31810 this.eddsa = eddsa;
31811 this._secret = parseBytes(params.secret);
31812 if (eddsa.isPoint(params.pub))
31813 this._pub = params.pub;
31815 this._pubBytes = parseBytes(params.pub);
31818 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
31819 if (pub instanceof KeyPair)
31821 return new KeyPair(eddsa, { pub: pub });
31824 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
31825 if (secret instanceof KeyPair)
31827 return new KeyPair(eddsa, { secret: secret });
31830 KeyPair.prototype.secret = function secret() {
31831 return this._secret;
31834 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
31835 return this.eddsa.encodePoint(this.pub());
31838 cachedProperty(KeyPair, 'pub', function pub() {
31839 if (this._pubBytes)
31840 return this.eddsa.decodePoint(this._pubBytes);
31841 return this.eddsa.g.mul(this.priv());
31844 cachedProperty(KeyPair, 'privBytes', function privBytes() {
31845 var eddsa = this.eddsa;
31846 var hash = this.hash();
31847 var lastIx = eddsa.encodingLength -
1;
31849 var a = hash.slice(
0, eddsa.encodingLength);
31857 cachedProperty(KeyPair, 'priv', function priv() {
31858 return this.eddsa.decodeInt(this.privBytes());
31861 cachedProperty(KeyPair, 'hash', function hash() {
31862 return this.eddsa.hash().update(this.secret()).digest();
31865 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
31866 return this.hash().slice(this.eddsa.encodingLength);
31869 KeyPair.prototype.sign = function sign(message) {
31870 assert(this._secret, 'KeyPair can only verify');
31871 return this.eddsa.sign(message, this);
31874 KeyPair.prototype.verify = function verify(message, sig) {
31875 return this.eddsa.verify(message, sig, this);
31878 KeyPair.prototype.getSecret = function getSecret(enc) {
31879 assert(this._secret, 'KeyPair is public only');
31880 return utils.encode(this.secret(), enc);
31883 KeyPair.prototype.getPublic = function getPublic(enc) {
31884 return utils.encode(this.pubBytes(), enc);
31887 module.exports = KeyPair;
31889 },{"../../elliptic":
39}],
51:[function(require,module,exports){
31892 var BN = require('bn.js');
31893 var elliptic = require('../../elliptic');
31894 var utils = elliptic.utils;
31895 var assert = utils.assert;
31896 var cachedProperty = utils.cachedProperty;
31897 var parseBytes = utils.parseBytes;
31900 * @param {EDDSA} eddsa - eddsa instance
31901 * @param {Array
<Bytes>|Object} sig -
31902 * @param {Array
<Bytes>|Point} [sig.R] - R point as Point or bytes
31903 * @param {Array
<Bytes>|bn} [sig.S] - S scalar as bn or bytes
31904 * @param {Array
<Bytes>} [sig.Rencoded] - R point encoded
31905 * @param {Array
<Bytes>} [sig.Sencoded] - S scalar encoded
31907 function Signature(eddsa, sig) {
31908 this.eddsa = eddsa;
31910 if (typeof sig !== 'object')
31911 sig = parseBytes(sig);
31913 if (Array.isArray(sig)) {
31915 R: sig.slice(
0, eddsa.encodingLength),
31916 S: sig.slice(eddsa.encodingLength)
31920 assert(sig.R && sig.S, 'Signature without R or S');
31922 if (eddsa.isPoint(sig.R))
31924 if (sig.S instanceof BN)
31927 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
31928 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
31931 cachedProperty(Signature, 'S', function S() {
31932 return this.eddsa.decodeInt(this.Sencoded());
31935 cachedProperty(Signature, 'R', function R() {
31936 return this.eddsa.decodePoint(this.Rencoded());
31939 cachedProperty(Signature, 'Rencoded', function Rencoded() {
31940 return this.eddsa.encodePoint(this.R());
31943 cachedProperty(Signature, 'Sencoded', function Sencoded() {
31944 return this.eddsa.encodeInt(this.S());
31947 Signature.prototype.toBytes = function toBytes() {
31948 return this.Rencoded().concat(this.Sencoded());
31951 Signature.prototype.toHex = function toHex() {
31952 return utils.encode(this.toBytes(), 'hex').toUpperCase();
31955 module.exports = Signature;
31957 },{"../../elliptic":
39,"bn.js":
33}],
52:[function(require,module,exports){
31960 var hash = require('hash.js');
31961 var elliptic = require('../elliptic');
31962 var utils = elliptic.utils;
31963 var assert = utils.assert;
31965 function HmacDRBG(options) {
31966 if (!(this instanceof HmacDRBG))
31967 return new HmacDRBG(options);
31968 this.hash = options.hash;
31969 this.predResist = !!options.predResist;
31971 this.outLen = this.hash.outSize;
31972 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
31974 this.reseed = null;
31975 this.reseedInterval = null;
31979 var entropy = utils.toArray(options.entropy, options.entropyEnc);
31980 var nonce = utils.toArray(options.nonce, options.nonceEnc);
31981 var pers = utils.toArray(options.pers, options.persEnc);
31982 assert(entropy.length
>= (this.minEntropy /
8),
31983 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
31984 this._init(entropy, nonce, pers);
31986 module.exports = HmacDRBG;
31988 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
31989 var seed = entropy.concat(nonce).concat(pers);
31991 this.K = new Array(this.outLen /
8);
31992 this.V = new Array(this.outLen /
8);
31993 for (var i =
0; i < this.V.length; i++) {
31998 this._update(seed);
32000 this.reseedInterval =
0x1000000000000; //
2^
48
32003 HmacDRBG.prototype._hmac = function hmac() {
32004 return new hash.hmac(this.hash, this.K);
32007 HmacDRBG.prototype._update = function update(seed) {
32008 var kmac = this._hmac()
32012 kmac = kmac.update(seed);
32013 this.K = kmac.digest();
32014 this.V = this._hmac().update(this.V).digest();
32018 this.K = this._hmac()
32023 this.V = this._hmac().update(this.V).digest();
32026 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
32027 // Optional entropy enc
32028 if (typeof entropyEnc !== 'string') {
32034 entropy = utils.toBuffer(entropy, entropyEnc);
32035 add = utils.toBuffer(add, addEnc);
32037 assert(entropy.length
>= (this.minEntropy /
8),
32038 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
32040 this._update(entropy.concat(add || []));
32044 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
32045 if (this.reseed
> this.reseedInterval)
32046 throw new Error('Reseed is required');
32048 // Optional encoding
32049 if (typeof enc !== 'string') {
32055 // Optional additional data
32057 add = utils.toArray(add, addEnc);
32062 while (temp.length < len) {
32063 this.V = this._hmac().update(this.V).digest();
32064 temp = temp.concat(this.V);
32067 var res = temp.slice(
0, len);
32070 return utils.encode(res, enc);
32073 },{"../elliptic":
39,"hash.js":
57}],
53:[function(require,module,exports){
32079 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
32080 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
32083 '
8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
32084 '
11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
32087 '
175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
32088 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
32091 '
363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
32092 '
4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
32095 '
8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
32096 '
4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
32099 '
723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
32100 '
96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
32103 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
32104 '
5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
32107 '
100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
32108 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
32111 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
32112 '
9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
32115 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
32116 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
32119 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
32120 '
9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
32123 '
53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
32124 '
5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
32127 '
8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
32128 '
10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
32131 '
385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
32132 '
283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
32135 '
6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
32136 '
7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
32139 '
3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
32140 '
56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
32143 '
85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
32144 '
7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
32147 '
948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
32148 '
53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
32151 '
6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
32152 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
32155 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
32156 '
4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
32159 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
32160 '
7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
32163 '
213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
32164 '
4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
32167 '
4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
32168 '
17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
32171 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
32172 '
6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
32175 '
76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
32176 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
32179 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
32180 '
893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
32183 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
32184 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
32187 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
32188 '
2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
32191 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
32192 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
32195 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
32196 '
7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
32199 '
90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
32200 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
32203 '
8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
32204 '
662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
32207 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
32208 '
1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
32211 '
8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
32212 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
32215 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
32216 '
2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
32219 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
32220 '
67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
32223 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
32224 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
32227 '
324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
32228 '
648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
32231 '
4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
32232 '
35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
32235 '
9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
32236 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
32239 '
6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
32240 '
9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
32243 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
32244 '
40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
32247 '
7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
32248 '
34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
32251 '
928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
32252 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
32255 '
85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
32256 '
1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
32259 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
32260 '
493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
32263 '
827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
32264 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
32267 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
32268 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
32271 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
32272 '
4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
32275 '
1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
32276 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
32279 '
146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
32280 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
32283 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
32284 '
6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
32287 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
32288 '
8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
32291 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
32292 '
7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
32295 '
174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
32296 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
32299 '
959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
32300 '
2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
32303 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
32304 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
32307 '
64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
32308 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
32311 '
8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
32312 '
38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
32315 '
13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
32316 '
69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
32319 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
32320 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
32323 '
8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
32324 '
40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
32327 '
8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
32328 '
620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
32331 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
32332 '
7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
32335 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
32336 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
32344 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
32345 '
388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
32348 '
2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
32349 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
32352 '
5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
32353 '
6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
32356 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
32357 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
32360 '
774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
32361 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
32364 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
32365 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
32368 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
32369 '
581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
32372 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
32373 '
4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
32376 '
2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
32377 '
85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
32380 '
352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
32381 '
321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
32384 '
2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
32385 '
2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
32388 '
9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
32389 '
73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
32392 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
32393 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
32396 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
32397 '
2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
32400 '
6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
32401 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
32404 '
1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
32405 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
32408 '
605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
32409 '
2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
32412 '
62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
32413 '
80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
32416 '
80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
32417 '
1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
32420 '
7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
32421 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
32424 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
32425 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
32428 '
49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
32429 '
758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
32432 '
77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
32433 '
958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
32436 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
32437 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
32440 '
463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
32441 '
5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
32444 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
32445 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
32448 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
32449 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
32452 '
2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
32453 '
4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
32456 '
7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
32457 '
91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
32460 '
754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
32461 '
673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
32464 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
32465 '
59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
32468 '
186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
32469 '
3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
32472 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
32473 '
55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
32476 '
5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
32477 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
32480 '
290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
32481 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
32484 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
32485 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
32488 '
766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
32489 '
744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
32492 '
59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
32493 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
32496 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
32497 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
32500 '
7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
32501 '
30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
32504 '
948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
32505 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
32508 '
7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
32509 '
100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
32512 '
3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
32513 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
32516 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
32517 '
8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
32520 '
1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
32521 '
68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
32524 '
733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
32525 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
32528 '
15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
32529 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
32532 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
32533 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
32536 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
32537 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
32540 '
311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
32541 '
66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
32544 '
34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
32545 '
9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
32548 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
32549 '
4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
32552 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
32553 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
32556 '
32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
32557 '
5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
32560 '
7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
32561 '
8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
32564 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
32565 '
8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
32568 '
16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
32569 '
5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
32572 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
32573 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
32576 '
78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
32577 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
32580 '
494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
32581 '
42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
32584 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
32585 '
204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
32588 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
32589 '
4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
32592 '
841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
32593 '
73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
32596 '
5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
32597 '
39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
32600 '
36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
32601 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
32604 '
336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
32605 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
32608 '
8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
32609 '
6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
32612 '
1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
32613 '
60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
32616 '
85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
32617 '
3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
32620 '
29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
32621 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
32624 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
32625 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
32628 '
4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
32629 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
32632 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
32633 '
6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
32636 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
32637 '
322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
32640 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
32641 '
6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
32644 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
32645 '
2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
32648 '
591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
32649 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
32652 '
11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
32653 '
998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
32656 '
3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
32657 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
32660 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
32661 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
32664 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
32665 '
6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
32668 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
32669 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
32672 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
32673 '
21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
32676 '
347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
32677 '
60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
32680 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
32681 '
49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
32684 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
32685 '
5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
32688 '
4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
32689 '
7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
32692 '
3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
32693 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
32696 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
32697 '
8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
32700 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
32701 '
39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
32704 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
32705 '
62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
32708 '
48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
32709 '
25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
32712 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
32713 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
32716 '
6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
32717 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
32720 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
32721 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
32724 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
32725 '
6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
32728 '
13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
32729 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
32732 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
32733 '
1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
32736 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
32737 '
5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
32740 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
32741 '
438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
32744 '
8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
32745 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
32748 '
52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
32749 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
32752 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
32753 '
6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
32756 '
7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
32757 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
32760 '
5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
32761 '
9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
32764 '
32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
32765 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
32768 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
32769 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
32772 '
8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
32773 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
32776 '
4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
32777 '
67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
32780 '
3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
32781 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
32784 '
674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
32785 '
299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
32788 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
32789 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
32792 '
30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
32793 '
462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
32796 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
32797 '
62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
32800 '
93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
32801 '
7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
32804 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
32805 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
32808 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
32809 '
4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
32812 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
32813 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
32816 '
463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
32817 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
32820 '
7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
32821 '
603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
32824 '
74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
32825 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
32828 '
30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
32829 '
553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
32832 '
9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
32833 '
712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
32836 '
176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
32837 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
32840 '
75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
32841 '
9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
32844 '
809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
32845 '
9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
32848 '
1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
32849 '
4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
32855 },{}],
54:[function(require,module,exports){
32858 var utils = exports;
32859 var BN = require('bn.js');
32861 utils.assert = function assert(val, msg) {
32863 throw new Error(msg || 'Assertion failed');
32866 function toArray(msg, enc) {
32867 if (Array.isArray(msg))
32868 return msg.slice();
32872 if (typeof msg !== 'string') {
32873 for (var i =
0; i < msg.length; i++)
32874 res[i] = msg[i] |
0;
32878 for (var i =
0; i < msg.length; i++) {
32879 var c = msg.charCodeAt(i);
32887 } else if (enc === 'hex') {
32888 msg = msg.replace(/[^a-z0-
9]+/ig, '');
32889 if (msg.length %
2 !==
0)
32891 for (var i =
0; i < msg.length; i +=
2)
32892 res.push(parseInt(msg[i] + msg[i +
1],
16));
32896 utils.toArray = toArray;
32898 function zero2(word) {
32899 if (word.length ===
1)
32904 utils.zero2 = zero2;
32906 function toHex(msg) {
32908 for (var i =
0; i < msg.length; i++)
32909 res += zero2(msg[i].toString(
16));
32912 utils.toHex = toHex;
32914 utils.encode = function encode(arr, enc) {
32921 // Represent num in a w-NAF form
32922 function getNAF(num, w) {
32924 var ws =
1 << (w +
1);
32925 var k = num.clone();
32926 while (k.cmpn(
1)
>=
0) {
32929 var mod = k.andln(ws -
1);
32930 if (mod
> (ws
>> 1) -
1)
32931 z = (ws
>> 1) - mod;
32940 // Optimization, shift by word if possible
32941 var shift = (k.cmpn(
0) !==
0 && k.andln(ws -
1) ===
0) ? (w +
1) :
1;
32942 for (var i =
1; i < shift; i++)
32949 utils.getNAF = getNAF;
32951 // Represent k1, k2 in a Joint Sparse Form
32952 function getJSF(k1, k2) {
32962 while (k1.cmpn(-d1)
> 0 || k2.cmpn(-d2)
> 0) {
32965 var m14 = (k1.andln(
3) + d1) &
3;
32966 var m24 = (k2.andln(
3) + d2) &
3;
32972 if ((m14 &
1) ===
0) {
32975 var m8 = (k1.andln(
7) + d1) &
7;
32976 if ((m8 ===
3 || m8 ===
5) && m24 ===
2)
32984 if ((m24 &
1) ===
0) {
32987 var m8 = (k2.andln(
7) + d2) &
7;
32988 if ((m8 ===
3 || m8 ===
5) && m14 ===
2)
32996 if (
2 * d1 === u1 +
1)
32998 if (
2 * d2 === u2 +
1)
33006 utils.getJSF = getJSF;
33008 function cachedProperty(obj, name, computer) {
33009 var key = '_' + name;
33010 obj.prototype[name] = function cachedProperty() {
33011 return this[key] !== undefined ? this[key] :
33012 this[key] = computer.call(this);
33015 utils.cachedProperty = cachedProperty;
33017 function parseBytes(bytes) {
33018 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
33021 utils.parseBytes = parseBytes;
33023 function intFromLE(bytes) {
33024 return new BN(bytes, 'hex', 'le');
33026 utils.intFromLE = intFromLE;
33029 },{
"bn.js":
33}],
55:[function(require,module,exports){
33034 "raw":
"elliptic@^6.2.3",
33036 "escapedName":
"elliptic",
33037 "name":
"elliptic",
33038 "rawSpec":
"^6.2.3",
33039 "spec":
">=6.2.3 <7.0.0",
33042 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
33045 "_from":
"elliptic@>=6.2.3 <7.0.0",
33046 "_id":
"elliptic@6.3.3",
33048 "_location":
"/elliptic",
33049 "_nodeVersion":
"7.0.0",
33050 "_npmOperationalInternal": {
33051 "host":
"packages-18-east.internal.npmjs.com",
33052 "tmp":
"tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
33056 "email":
"fedor@indutny.com"
33058 "_npmVersion":
"3.10.8",
33059 "_phantomChildren": {},
33061 "raw":
"elliptic@^6.2.3",
33063 "escapedName":
"elliptic",
33064 "name":
"elliptic",
33065 "rawSpec":
"^6.2.3",
33066 "spec":
">=6.2.3 <7.0.0",
33070 "/browserify-sign",
33074 "_resolved":
"https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
33075 "_shasum":
"5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
33076 "_shrinkwrap": null,
33077 "_spec":
"elliptic@^6.2.3",
33078 "_where":
"/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
33080 "name":
"Fedor Indutny",
33081 "email":
"fedor@indutny.com"
33084 "url":
"https://github.com/indutny/elliptic/issues"
33088 "brorand":
"^1.0.1",
33089 "hash.js":
"^1.0.0",
33090 "inherits":
"^2.0.1"
33092 "description":
"EC cryptography",
33093 "devDependencies": {
33095 "coveralls":
"^2.11.3",
33097 "grunt-browserify":
"^5.0.0",
33098 "grunt-cli":
"^1.2.0",
33099 "grunt-contrib-connect":
"^1.0.0",
33100 "grunt-contrib-copy":
"^1.0.0",
33101 "grunt-contrib-uglify":
"^1.0.1",
33102 "grunt-mocha-istanbul":
"^3.0.1",
33103 "grunt-saucelabs":
"^8.6.2",
33104 "istanbul":
"^0.4.2",
33106 "jshint":
"^2.6.0",
33111 "shasum":
"5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
33112 "tarball":
"https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
33117 "gitHead":
"63aee8d697e9b7fac37ece24222029117a890a7e",
33118 "homepage":
"https://github.com/indutny/elliptic",
33126 "main":
"lib/elliptic.js",
33130 "email":
"fedor@indutny.com"
33133 "name":
"elliptic",
33134 "optionalDependencies": {},
33135 "readme":
"ERROR: No README data found!",
33138 "url":
"git+ssh://git@github.com/indutny/elliptic.git"
33141 "jscs":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
33142 "jshint":
"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
33143 "lint":
"npm run jscs && npm run jshint",
33144 "test":
"npm run lint && npm run unit",
33145 "unit":
"istanbul test _mocha --reporter=spec test/index.js",
33146 "version":
"grunt dist && git add dist/"
33151 },{}],
56:[function(require,module,exports){
33152 (function (Buffer){
33155 var isHexPrefixed = require('is-hex-prefixed');
33156 var stripHexPrefix = require('strip-hex-prefix');
33159 * Pads a `String` to have an even length
33160 * @param {String} value
33161 * @return {String} output
33163 function padToEven(value) {
33164 var a = value; // eslint-disable-line
33166 if (typeof a !== 'string') {
33167 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
33170 if (a.length %
2) {
33178 * Converts a `Number` into a hex `String`
33179 * @param {Number} i
33182 function intToHex(i) {
33183 var hex = i.toString(
16); // eslint-disable-line
33185 return '
0x' + padToEven(hex);
33189 * Converts an `Number` to a `Buffer`
33190 * @param {Number} i
33193 function intToBuffer(i) {
33194 var hex = intToHex(i);
33196 return new Buffer(hex.slice(
2), 'hex');
33200 * Get the binary size of a string
33201 * @param {String} str
33204 function getBinarySize(str) {
33205 if (typeof str !== 'string') {
33206 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
33209 return Buffer.byteLength(str, 'utf8');
33213 * Returns TRUE if the first specified array contains all elements
33214 * from the second one. FALSE otherwise.
33216 * @param {array} superset
33217 * @param {array} subset
33219 * @returns {boolean}
33221 function arrayContainsArray(superset, subset, some) {
33222 if (Array.isArray(superset) !== true) {
33223 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
33225 if (Array.isArray(subset) !== true) {
33226 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
33229 return subset[Boolean(some) && 'some' || 'every'](function (value) {
33230 return superset.indexOf(value)
>=
0;
33235 * Should be called to get utf8 from it's hex representation
33238 * @param {String} string in hex
33239 * @returns {String} ascii string representation of hex value
33241 function toUtf8(hex) {
33242 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^
0+|
0+$/g, '')), 'hex');
33244 return bufferValue.toString('utf8');
33248 * Should be called to get ascii from it's hex representation
33251 * @param {String} string in hex
33252 * @returns {String} ascii string representation of hex value
33254 function toAscii(hex) {
33255 var str = ''; // eslint-disable-line
33257 l = hex.length; // eslint-disable-line
33259 if (hex.substring(
0,
2) === '
0x') {
33263 for (; i < l; i +=
2) {
33264 var code = parseInt(hex.substr(i,
2),
16);
33265 str += String.fromCharCode(code);
33272 * Should be called to get hex representation (prefixed by
0x) of utf8 string
33275 * @param {String} string
33276 * @param {Number} optional padding
33277 * @returns {String} hex representation of input string
33279 function fromUtf8(stringValue) {
33280 var str = new Buffer(stringValue, 'utf8');
33282 return '
0x' + padToEven(str.toString('hex')).replace(/^
0+|
0+$/g, '');
33286 * Should be called to get hex representation (prefixed by
0x) of ascii string
33288 * @method fromAscii
33289 * @param {String} string
33290 * @param {Number} optional padding
33291 * @returns {String} hex representation of input string
33293 function fromAscii(stringValue) {
33294 var hex = ''; // eslint-disable-line
33295 for (var i =
0; i < stringValue.length; i++) {
33296 // eslint-disable-line
33297 var code = stringValue.charCodeAt(i);
33298 var n = code.toString(
16);
33299 hex += n.length <
2 ? '
0' + n : n;
33306 * getKeys([{a:
1, b:
2}, {a:
3, b:
4}], 'a') =
> [
1,
3]
33308 * @method getKeys get specific key from inner object array of objects
33309 * @param {String} params
33310 * @param {String} key
33311 * @param {Boolean} allowEmpty
33312 * @returns {Array} output just a simple array of output keys
33314 function getKeys(params, key, allowEmpty) {
33315 if (!Array.isArray(params)) {
33316 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
33318 if (typeof key !== 'string') {
33319 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
33322 var result = []; // eslint-disable-line
33324 for (var i =
0; i < params.length; i++) {
33325 // eslint-disable-line
33326 var value = params[i][key]; // eslint-disable-line
33327 if (allowEmpty && !value) {
33329 } else if (typeof value !== 'string') {
33330 throw new Error('invalid abi');
33332 result.push(value);
33339 * Is the string a hex string.
33341 * @method check if string is hex string of specific length
33342 * @param {String} value
33343 * @param {Number} length
33344 * @returns {Boolean} output the string is a hex string
33346 function isHexString(value, length) {
33347 if (typeof value !== 'string' || !value.match(/^
0x[
0-
9A-Fa-f]*$/)) {
33351 if (length && value.length !==
2 +
2 * length) {
33359 arrayContainsArray: arrayContainsArray,
33360 intToBuffer: intToBuffer,
33361 getBinarySize: getBinarySize,
33362 isHexPrefixed: isHexPrefixed,
33363 stripHexPrefix: stripHexPrefix,
33364 padToEven: padToEven,
33365 intToHex: intToHex,
33366 fromAscii: fromAscii,
33367 fromUtf8: fromUtf8,
33371 isHexString: isHexString
33373 }).call(this,require("buffer").Buffer)
33374 },{"buffer":
5,"is-hex-prefixed":
64,"strip-hex-prefix":
87}],
57:[function(require,module,exports){
33375 var hash = exports;
33377 hash.utils = require('./hash/utils');
33378 hash.common = require('./hash/common');
33379 hash.sha = require('./hash/sha');
33380 hash.ripemd = require('./hash/ripemd');
33381 hash.hmac = require('./hash/hmac');
33383 // Proxy hash functions to the main object
33384 hash.sha1 = hash.sha.sha1;
33385 hash.sha256 = hash.sha.sha256;
33386 hash.sha224 = hash.sha.sha224;
33387 hash.sha384 = hash.sha.sha384;
33388 hash.sha512 = hash.sha.sha512;
33389 hash.ripemd160 = hash.ripemd.ripemd160;
33391 },{"./hash/common":
58,"./hash/hmac":
59,"./hash/ripemd":
60,"./hash/sha":
61,"./hash/utils":
62}],
58:[function(require,module,exports){
33392 var hash = require('../hash');
33393 var utils = hash.utils;
33394 var assert = utils.assert;
33396 function BlockHash() {
33397 this.pending = null;
33398 this.pendingTotal =
0;
33399 this.blockSize = this.constructor.blockSize;
33400 this.outSize = this.constructor.outSize;
33401 this.hmacStrength = this.constructor.hmacStrength;
33402 this.padLength = this.constructor.padLength /
8;
33403 this.endian = 'big';
33405 this._delta8 = this.blockSize /
8;
33406 this._delta32 = this.blockSize /
32;
33408 exports.BlockHash = BlockHash;
33410 BlockHash.prototype.update = function update(msg, enc) {
33411 // Convert message to array, pad it, and join into
32bit blocks
33412 msg = utils.toArray(msg, enc);
33414 this.pending = msg;
33416 this.pending = this.pending.concat(msg);
33417 this.pendingTotal += msg.length;
33419 // Enough data, try updating
33420 if (this.pending.length
>= this._delta8) {
33421 msg = this.pending;
33423 // Process pending data in blocks
33424 var r = msg.length % this._delta8;
33425 this.pending = msg.slice(msg.length - r, msg.length);
33426 if (this.pending.length ===
0)
33427 this.pending = null;
33429 msg = utils.join32(msg,
0, msg.length - r, this.endian);
33430 for (var i =
0; i < msg.length; i += this._delta32)
33431 this._update(msg, i, i + this._delta32);
33437 BlockHash.prototype.digest = function digest(enc) {
33438 this.update(this._pad());
33439 assert(this.pending === null);
33441 return this._digest(enc);
33444 BlockHash.prototype._pad = function pad() {
33445 var len = this.pendingTotal;
33446 var bytes = this._delta8;
33447 var k = bytes - ((len + this.padLength) % bytes);
33448 var res = new Array(k + this.padLength);
33450 for (var i =
1; i < k; i++)
33455 if (this.endian === 'big') {
33456 for (var t =
8; t < this.padLength; t++)
33463 res[i++] = (len
>>> 24) &
0xff;
33464 res[i++] = (len
>>> 16) &
0xff;
33465 res[i++] = (len
>>> 8) &
0xff;
33466 res[i++] = len &
0xff;
33468 res[i++] = len &
0xff;
33469 res[i++] = (len
>>> 8) &
0xff;
33470 res[i++] = (len
>>> 16) &
0xff;
33471 res[i++] = (len
>>> 24) &
0xff;
33477 for (var t =
8; t < this.padLength; t++)
33484 },{
"../hash":
57}],
59:[function(require,module,exports){
33485 var hmac = exports;
33487 var hash = require('../hash');
33488 var utils = hash.utils;
33489 var assert = utils.assert;
33491 function Hmac(hash, key, enc) {
33492 if (!(this instanceof Hmac))
33493 return new Hmac(hash, key, enc);
33495 this.blockSize = hash.blockSize /
8;
33496 this.outSize = hash.outSize /
8;
33500 this._init(utils.toArray(key, enc));
33502 module.exports = Hmac;
33504 Hmac.prototype._init = function init(key) {
33505 // Shorten key, if needed
33506 if (key.length
> this.blockSize)
33507 key = new this.Hash().update(key).digest();
33508 assert(key.length <= this.blockSize);
33510 // Add padding to key
33511 for (var i = key.length; i < this.blockSize; i++)
33514 for (var i =
0; i < key.length; i++)
33516 this.inner = new this.Hash().update(key);
33518 //
0x36 ^
0x5c =
0x6a
33519 for (var i =
0; i < key.length; i++)
33521 this.outer = new this.Hash().update(key);
33524 Hmac.prototype.update = function update(msg, enc) {
33525 this.inner.update(msg, enc);
33529 Hmac.prototype.digest = function digest(enc) {
33530 this.outer.update(this.inner.digest());
33531 return this.outer.digest(enc);
33534 },{"../hash":
57}],
60:[function(require,module,exports){
33535 var hash = require('../hash');
33536 var utils = hash.utils;
33538 var rotl32 = utils.rotl32;
33539 var sum32 = utils.sum32;
33540 var sum32_3 = utils.sum32_3;
33541 var sum32_4 = utils.sum32_4;
33542 var BlockHash = hash.common.BlockHash;
33544 function RIPEMD160() {
33545 if (!(this instanceof RIPEMD160))
33546 return new RIPEMD160();
33548 BlockHash.call(this);
33550 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
0x10325476,
0xc3d2e1f0 ];
33551 this.endian = 'little';
33553 utils.inherits(RIPEMD160, BlockHash);
33554 exports.ripemd160 = RIPEMD160;
33556 RIPEMD160.blockSize =
512;
33557 RIPEMD160.outSize =
160;
33558 RIPEMD160.hmacStrength =
192;
33559 RIPEMD160.padLength =
64;
33561 RIPEMD160.prototype._update = function update(msg, start) {
33572 for (var j =
0; j <
80; j++) {
33575 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
33585 sum32_4(Ah, f(
79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
33590 Dh = rotl32(Ch,
10);
33594 T = sum32_3(this.h[
1], C, Dh);
33595 this.h[
1] = sum32_3(this.h[
2], D, Eh);
33596 this.h[
2] = sum32_3(this.h[
3], E, Ah);
33597 this.h[
3] = sum32_3(this.h[
4], A, Bh);
33598 this.h[
4] = sum32_3(this.h[
0], B, Ch);
33602 RIPEMD160.prototype._digest = function digest(enc) {
33604 return utils.toHex32(this.h, 'little');
33606 return utils.split32(this.h, 'little');
33609 function f(j, x, y, z) {
33613 return (x & y) | ((~x) & z);
33615 return (x | (~y)) ^ z;
33617 return (x & z) | (y & (~z));
33619 return x ^ (y | (~z));
33649 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
33650 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
33651 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
33652 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
33653 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
33657 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
33658 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
33659 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
33660 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
33661 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
33665 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
33666 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
33667 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
33668 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
33669 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
33673 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
33674 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
33675 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
33676 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
33677 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
33680 },{"../hash":
57}],
61:[function(require,module,exports){
33681 var hash = require('../hash');
33682 var utils = hash.utils;
33683 var assert = utils.assert;
33685 var rotr32 = utils.rotr32;
33686 var rotl32 = utils.rotl32;
33687 var sum32 = utils.sum32;
33688 var sum32_4 = utils.sum32_4;
33689 var sum32_5 = utils.sum32_5;
33690 var rotr64_hi = utils.rotr64_hi;
33691 var rotr64_lo = utils.rotr64_lo;
33692 var shr64_hi = utils.shr64_hi;
33693 var shr64_lo = utils.shr64_lo;
33694 var sum64 = utils.sum64;
33695 var sum64_hi = utils.sum64_hi;
33696 var sum64_lo = utils.sum64_lo;
33697 var sum64_4_hi = utils.sum64_4_hi;
33698 var sum64_4_lo = utils.sum64_4_lo;
33699 var sum64_5_hi = utils.sum64_5_hi;
33700 var sum64_5_lo = utils.sum64_5_lo;
33701 var BlockHash = hash.common.BlockHash;
33704 0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
33705 0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
33706 0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
33707 0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
33708 0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
33709 0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
33710 0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
33711 0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
33712 0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
33713 0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
33714 0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
33715 0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
33716 0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
33717 0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
33718 0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
33719 0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2
33723 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
33724 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
33725 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
33726 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
33727 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
33728 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
33729 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
33730 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
33731 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
33732 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
33733 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
33734 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
33735 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
33736 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
33737 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
33738 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
33739 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
33740 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
33741 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
33742 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
33743 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
33744 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
33745 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
33746 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
33747 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
33748 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
33749 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
33750 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
33751 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
33752 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
33753 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
33754 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
33755 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
33756 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
33757 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
33758 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
33759 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
33760 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
33761 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
33762 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
33766 0x5A827999,
0x6ED9EBA1,
33767 0x8F1BBCDC,
0xCA62C1D6
33770 function SHA256() {
33771 if (!(this instanceof SHA256))
33772 return new SHA256();
33774 BlockHash.call(this);
33775 this.h = [
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
33776 0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19 ];
33778 this.W = new Array(
64);
33780 utils.inherits(SHA256, BlockHash);
33781 exports.sha256 = SHA256;
33783 SHA256.blockSize =
512;
33784 SHA256.outSize =
256;
33785 SHA256.hmacStrength =
192;
33786 SHA256.padLength =
64;
33788 SHA256.prototype._update = function _update(msg, start) {
33791 for (var i =
0; i <
16; i++)
33792 W[i] = msg[start + i];
33793 for (; i < W.length; i++)
33794 W[i] = sum32_4(g1_256(W[i -
2]), W[i -
7], g0_256(W[i -
15]), W[i -
16]);
33805 assert(this.k.length === W.length);
33806 for (var i =
0; i < W.length; i++) {
33807 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
33808 var T2 = sum32(s0_256(a), maj32(a, b, c));
33819 this.h[
0] = sum32(this.h[
0], a);
33820 this.h[
1] = sum32(this.h[
1], b);
33821 this.h[
2] = sum32(this.h[
2], c);
33822 this.h[
3] = sum32(this.h[
3], d);
33823 this.h[
4] = sum32(this.h[
4], e);
33824 this.h[
5] = sum32(this.h[
5], f);
33825 this.h[
6] = sum32(this.h[
6], g);
33826 this.h[
7] = sum32(this.h[
7], h);
33829 SHA256.prototype._digest = function digest(enc) {
33831 return utils.toHex32(this.h, 'big');
33833 return utils.split32(this.h, 'big');
33836 function SHA224() {
33837 if (!(this instanceof SHA224))
33838 return new SHA224();
33841 this.h = [
0xc1059ed8,
0x367cd507,
0x3070dd17,
0xf70e5939,
33842 0xffc00b31,
0x68581511,
0x64f98fa7,
0xbefa4fa4 ];
33844 utils.inherits(SHA224, SHA256);
33845 exports.sha224 = SHA224;
33847 SHA224.blockSize =
512;
33848 SHA224.outSize =
224;
33849 SHA224.hmacStrength =
192;
33850 SHA224.padLength =
64;
33852 SHA224.prototype._digest = function digest(enc) {
33853 // Just truncate output
33855 return utils.toHex32(this.h.slice(
0,
7), 'big');
33857 return utils.split32(this.h.slice(
0,
7), 'big');
33860 function SHA512() {
33861 if (!(this instanceof SHA512))
33862 return new SHA512();
33864 BlockHash.call(this);
33865 this.h = [
0x6a09e667,
0xf3bcc908,
33866 0xbb67ae85,
0x84caa73b,
33867 0x3c6ef372,
0xfe94f82b,
33868 0xa54ff53a,
0x5f1d36f1,
33869 0x510e527f,
0xade682d1,
33870 0x9b05688c,
0x2b3e6c1f,
33871 0x1f83d9ab,
0xfb41bd6b,
33872 0x5be0cd19,
0x137e2179 ];
33874 this.W = new Array(
160);
33876 utils.inherits(SHA512, BlockHash);
33877 exports.sha512 = SHA512;
33879 SHA512.blockSize =
1024;
33880 SHA512.outSize =
512;
33881 SHA512.hmacStrength =
192;
33882 SHA512.padLength =
128;
33884 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
33887 //
32 x
32bit words
33888 for (var i =
0; i <
32; i++)
33889 W[i] = msg[start + i];
33890 for (; i < W.length; i +=
2) {
33891 var c0_hi = g1_512_hi(W[i -
4], W[i -
3]); // i -
2
33892 var c0_lo = g1_512_lo(W[i -
4], W[i -
3]);
33893 var c1_hi = W[i -
14]; // i -
7
33894 var c1_lo = W[i -
13];
33895 var c2_hi = g0_512_hi(W[i -
30], W[i -
29]); // i -
15
33896 var c2_lo = g0_512_lo(W[i -
30], W[i -
29]);
33897 var c3_hi = W[i -
32]; // i -
16
33898 var c3_lo = W[i -
31];
33900 W[i] = sum64_4_hi(c0_hi, c0_lo,
33904 W[i +
1] = sum64_4_lo(c0_hi, c0_lo,
33911 SHA512.prototype._update = function _update(msg, start) {
33912 this._prepareBlock(msg, start);
33916 var ah = this.h[
0];
33917 var al = this.h[
1];
33918 var bh = this.h[
2];
33919 var bl = this.h[
3];
33920 var ch = this.h[
4];
33921 var cl = this.h[
5];
33922 var dh = this.h[
6];
33923 var dl = this.h[
7];
33924 var eh = this.h[
8];
33925 var el = this.h[
9];
33926 var fh = this.h[
10];
33927 var fl = this.h[
11];
33928 var gh = this.h[
12];
33929 var gl = this.h[
13];
33930 var hh = this.h[
14];
33931 var hl = this.h[
15];
33933 assert(this.k.length === W.length);
33934 for (var i =
0; i < W.length; i +=
2) {
33937 var c1_hi = s1_512_hi(eh, el);
33938 var c1_lo = s1_512_lo(eh, el);
33939 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
33940 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
33941 var c3_hi = this.k[i];
33942 var c3_lo = this.k[i +
1];
33944 var c4_lo = W[i +
1];
33946 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
33951 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
33957 var c0_hi = s0_512_hi(ah, al);
33958 var c0_lo = s0_512_lo(ah, al);
33959 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
33960 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
33962 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
33963 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
33974 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
33975 el = sum64_lo(dl, dl, T1_hi, T1_lo);
33986 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
33987 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
33990 sum64(this.h,
0, ah, al);
33991 sum64(this.h,
2, bh, bl);
33992 sum64(this.h,
4, ch, cl);
33993 sum64(this.h,
6, dh, dl);
33994 sum64(this.h,
8, eh, el);
33995 sum64(this.h,
10, fh, fl);
33996 sum64(this.h,
12, gh, gl);
33997 sum64(this.h,
14, hh, hl);
34000 SHA512.prototype._digest = function digest(enc) {
34002 return utils.toHex32(this.h, 'big');
34004 return utils.split32(this.h, 'big');
34007 function SHA384() {
34008 if (!(this instanceof SHA384))
34009 return new SHA384();
34012 this.h = [
0xcbbb9d5d,
0xc1059ed8,
34013 0x629a292a,
0x367cd507,
34014 0x9159015a,
0x3070dd17,
34015 0x152fecd8,
0xf70e5939,
34016 0x67332667,
0xffc00b31,
34017 0x8eb44a87,
0x68581511,
34018 0xdb0c2e0d,
0x64f98fa7,
34019 0x47b5481d,
0xbefa4fa4 ];
34021 utils.inherits(SHA384, SHA512);
34022 exports.sha384 = SHA384;
34024 SHA384.blockSize =
1024;
34025 SHA384.outSize =
384;
34026 SHA384.hmacStrength =
192;
34027 SHA384.padLength =
128;
34029 SHA384.prototype._digest = function digest(enc) {
34031 return utils.toHex32(this.h.slice(
0,
12), 'big');
34033 return utils.split32(this.h.slice(
0,
12), 'big');
34037 if (!(this instanceof SHA1))
34040 BlockHash.call(this);
34041 this.h = [
0x67452301,
0xefcdab89,
0x98badcfe,
34042 0x10325476,
0xc3d2e1f0 ];
34043 this.W = new Array(
80);
34046 utils.inherits(SHA1, BlockHash);
34047 exports.sha1 = SHA1;
34049 SHA1.blockSize =
512;
34050 SHA1.outSize =
160;
34051 SHA1.hmacStrength =
80;
34052 SHA1.padLength =
64;
34054 SHA1.prototype._update = function _update(msg, start) {
34057 for (var i =
0; i <
16; i++)
34058 W[i] = msg[start + i];
34060 for(; i < W.length; i++)
34061 W[i] = rotl32(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16],
1);
34069 for (var i =
0; i < W.length; i++) {
34070 var s = ~~(i /
20);
34071 var t = sum32_5(rotl32(a,
5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
34079 this.h[
0] = sum32(this.h[
0], a);
34080 this.h[
1] = sum32(this.h[
1], b);
34081 this.h[
2] = sum32(this.h[
2], c);
34082 this.h[
3] = sum32(this.h[
3], d);
34083 this.h[
4] = sum32(this.h[
4], e);
34086 SHA1.prototype._digest = function digest(enc) {
34088 return utils.toHex32(this.h, 'big');
34090 return utils.split32(this.h, 'big');
34093 function ch32(x, y, z) {
34094 return (x & y) ^ ((~x) & z);
34097 function maj32(x, y, z) {
34098 return (x & y) ^ (x & z) ^ (y & z);
34101 function p32(x, y, z) {
34105 function s0_256(x) {
34106 return rotr32(x,
2) ^ rotr32(x,
13) ^ rotr32(x,
22);
34109 function s1_256(x) {
34110 return rotr32(x,
6) ^ rotr32(x,
11) ^ rotr32(x,
25);
34113 function g0_256(x) {
34114 return rotr32(x,
7) ^ rotr32(x,
18) ^ (x
>>> 3);
34117 function g1_256(x) {
34118 return rotr32(x,
17) ^ rotr32(x,
19) ^ (x
>>> 10);
34121 function ft_1(s, x, y, z) {
34123 return ch32(x, y, z);
34124 if (s ===
1 || s ===
3)
34125 return p32(x, y, z);
34127 return maj32(x, y, z);
34130 function ch64_hi(xh, xl, yh, yl, zh, zl) {
34131 var r = (xh & yh) ^ ((~xh) & zh);
34137 function ch64_lo(xh, xl, yh, yl, zh, zl) {
34138 var r = (xl & yl) ^ ((~xl) & zl);
34144 function maj64_hi(xh, xl, yh, yl, zh, zl) {
34145 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
34151 function maj64_lo(xh, xl, yh, yl, zh, zl) {
34152 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
34158 function s0_512_hi(xh, xl) {
34159 var c0_hi = rotr64_hi(xh, xl,
28);
34160 var c1_hi = rotr64_hi(xl, xh,
2); //
34
34161 var c2_hi = rotr64_hi(xl, xh,
7); //
39
34163 var r = c0_hi ^ c1_hi ^ c2_hi;
34169 function s0_512_lo(xh, xl) {
34170 var c0_lo = rotr64_lo(xh, xl,
28);
34171 var c1_lo = rotr64_lo(xl, xh,
2); //
34
34172 var c2_lo = rotr64_lo(xl, xh,
7); //
39
34174 var r = c0_lo ^ c1_lo ^ c2_lo;
34180 function s1_512_hi(xh, xl) {
34181 var c0_hi = rotr64_hi(xh, xl,
14);
34182 var c1_hi = rotr64_hi(xh, xl,
18);
34183 var c2_hi = rotr64_hi(xl, xh,
9); //
41
34185 var r = c0_hi ^ c1_hi ^ c2_hi;
34191 function s1_512_lo(xh, xl) {
34192 var c0_lo = rotr64_lo(xh, xl,
14);
34193 var c1_lo = rotr64_lo(xh, xl,
18);
34194 var c2_lo = rotr64_lo(xl, xh,
9); //
41
34196 var r = c0_lo ^ c1_lo ^ c2_lo;
34202 function g0_512_hi(xh, xl) {
34203 var c0_hi = rotr64_hi(xh, xl,
1);
34204 var c1_hi = rotr64_hi(xh, xl,
8);
34205 var c2_hi = shr64_hi(xh, xl,
7);
34207 var r = c0_hi ^ c1_hi ^ c2_hi;
34213 function g0_512_lo(xh, xl) {
34214 var c0_lo = rotr64_lo(xh, xl,
1);
34215 var c1_lo = rotr64_lo(xh, xl,
8);
34216 var c2_lo = shr64_lo(xh, xl,
7);
34218 var r = c0_lo ^ c1_lo ^ c2_lo;
34224 function g1_512_hi(xh, xl) {
34225 var c0_hi = rotr64_hi(xh, xl,
19);
34226 var c1_hi = rotr64_hi(xl, xh,
29); //
61
34227 var c2_hi = shr64_hi(xh, xl,
6);
34229 var r = c0_hi ^ c1_hi ^ c2_hi;
34235 function g1_512_lo(xh, xl) {
34236 var c0_lo = rotr64_lo(xh, xl,
19);
34237 var c1_lo = rotr64_lo(xl, xh,
29); //
61
34238 var c2_lo = shr64_lo(xh, xl,
6);
34240 var r = c0_lo ^ c1_lo ^ c2_lo;
34246 },{
"../hash":
57}],
62:[function(require,module,exports){
34247 var utils = exports;
34248 var inherits = require('inherits');
34250 function toArray(msg, enc) {
34251 if (Array.isArray(msg))
34252 return msg.slice();
34256 if (typeof msg === 'string') {
34258 for (var i =
0; i < msg.length; i++) {
34259 var c = msg.charCodeAt(i);
34267 } else if (enc === 'hex') {
34268 msg = msg.replace(/[^a-z0-
9]+/ig, '');
34269 if (msg.length %
2 !==
0)
34271 for (var i =
0; i < msg.length; i +=
2)
34272 res.push(parseInt(msg[i] + msg[i +
1],
16));
34275 for (var i =
0; i < msg.length; i++)
34276 res[i] = msg[i] |
0;
34280 utils.toArray = toArray;
34282 function toHex(msg) {
34284 for (var i =
0; i < msg.length; i++)
34285 res += zero2(msg[i].toString(
16));
34288 utils.toHex = toHex;
34290 function htonl(w) {
34291 var res = (w
>>> 24) |
34292 ((w
>>> 8) &
0xff00) |
34293 ((w <<
8) &
0xff0000) |
34294 ((w &
0xff) <<
24);
34297 utils.htonl = htonl;
34299 function toHex32(msg, endian) {
34301 for (var i =
0; i < msg.length; i++) {
34303 if (endian === 'little')
34305 res += zero8(w.toString(
16));
34309 utils.toHex32 = toHex32;
34311 function zero2(word) {
34312 if (word.length ===
1)
34317 utils.zero2 = zero2;
34319 function zero8(word) {
34320 if (word.length ===
7)
34322 else if (word.length ===
6)
34323 return '
00' + word;
34324 else if (word.length ===
5)
34325 return '
000' + word;
34326 else if (word.length ===
4)
34327 return '
0000' + word;
34328 else if (word.length ===
3)
34329 return '
00000' + word;
34330 else if (word.length ===
2)
34331 return '
000000' + word;
34332 else if (word.length ===
1)
34333 return '
0000000' + word;
34337 utils.zero8 = zero8;
34339 function join32(msg, start, end, endian) {
34340 var len = end - start;
34341 assert(len %
4 ===
0);
34342 var res = new Array(len /
4);
34343 for (var i =
0, k = start; i < res.length; i++, k +=
4) {
34345 if (endian === 'big')
34346 w = (msg[k] <<
24) | (msg[k +
1] <<
16) | (msg[k +
2] <<
8) | msg[k +
3];
34348 w = (msg[k +
3] <<
24) | (msg[k +
2] <<
16) | (msg[k +
1] <<
8) | msg[k];
34353 utils.join32 = join32;
34355 function split32(msg, endian) {
34356 var res = new Array(msg.length *
4);
34357 for (var i =
0, k =
0; i < msg.length; i++, k +=
4) {
34359 if (endian === 'big') {
34361 res[k +
1] = (m
>>> 16) &
0xff;
34362 res[k +
2] = (m
>>> 8) &
0xff;
34363 res[k +
3] = m &
0xff;
34365 res[k +
3] = m
>>> 24;
34366 res[k +
2] = (m
>>> 16) &
0xff;
34367 res[k +
1] = (m
>>> 8) &
0xff;
34373 utils.split32 = split32;
34375 function rotr32(w, b) {
34376 return (w
>>> b) | (w << (
32 - b));
34378 utils.rotr32 = rotr32;
34380 function rotl32(w, b) {
34381 return (w << b) | (w
>>> (
32 - b));
34383 utils.rotl32 = rotl32;
34385 function sum32(a, b) {
34386 return (a + b)
>>> 0;
34388 utils.sum32 = sum32;
34390 function sum32_3(a, b, c) {
34391 return (a + b + c)
>>> 0;
34393 utils.sum32_3 = sum32_3;
34395 function sum32_4(a, b, c, d) {
34396 return (a + b + c + d)
>>> 0;
34398 utils.sum32_4 = sum32_4;
34400 function sum32_5(a, b, c, d, e) {
34401 return (a + b + c + d + e)
>>> 0;
34403 utils.sum32_5 = sum32_5;
34405 function assert(cond, msg) {
34407 throw new Error(msg || 'Assertion failed');
34409 utils.assert = assert;
34411 utils.inherits = inherits;
34413 function sum64(buf, pos, ah, al) {
34415 var bl = buf[pos +
1];
34417 var lo = (al + bl)
>>> 0;
34418 var hi = (lo < al ?
1 :
0) + ah + bh;
34419 buf[pos] = hi
>>> 0;
34422 exports.sum64 = sum64;
34424 function sum64_hi(ah, al, bh, bl) {
34425 var lo = (al + bl)
>>> 0;
34426 var hi = (lo < al ?
1 :
0) + ah + bh;
34429 exports.sum64_hi = sum64_hi;
34431 function sum64_lo(ah, al, bh, bl) {
34435 exports.sum64_lo = sum64_lo;
34437 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
34440 lo = (lo + bl)
>>> 0;
34441 carry += lo < al ?
1 :
0;
34442 lo = (lo + cl)
>>> 0;
34443 carry += lo < cl ?
1 :
0;
34444 lo = (lo + dl)
>>> 0;
34445 carry += lo < dl ?
1 :
0;
34447 var hi = ah + bh + ch + dh + carry;
34450 exports.sum64_4_hi = sum64_4_hi;
34452 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
34453 var lo = al + bl + cl + dl;
34456 exports.sum64_4_lo = sum64_4_lo;
34458 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
34461 lo = (lo + bl)
>>> 0;
34462 carry += lo < al ?
1 :
0;
34463 lo = (lo + cl)
>>> 0;
34464 carry += lo < cl ?
1 :
0;
34465 lo = (lo + dl)
>>> 0;
34466 carry += lo < dl ?
1 :
0;
34467 lo = (lo + el)
>>> 0;
34468 carry += lo < el ?
1 :
0;
34470 var hi = ah + bh + ch + dh + eh + carry;
34473 exports.sum64_5_hi = sum64_5_hi;
34475 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
34476 var lo = al + bl + cl + dl + el;
34480 exports.sum64_5_lo = sum64_5_lo;
34482 function rotr64_hi(ah, al, num) {
34483 var r = (al << (
32 - num)) | (ah
>>> num);
34486 exports.rotr64_hi = rotr64_hi;
34488 function rotr64_lo(ah, al, num) {
34489 var r = (ah << (
32 - num)) | (al
>>> num);
34492 exports.rotr64_lo = rotr64_lo;
34494 function shr64_hi(ah, al, num) {
34497 exports.shr64_hi = shr64_hi;
34499 function shr64_lo(ah, al, num) {
34500 var r = (ah << (
32 - num)) | (al
>>> num);
34503 exports.shr64_lo = shr64_lo;
34505 },{
"inherits":
63}],
63:[function(require,module,exports){
34506 arguments[
4][
9][
0].apply(exports,arguments)
34507 },{
"dup":
9}],
64:[function(require,module,exports){
34509 * Returns a `Boolean` on whether or not the a `String` starts with '
0x'
34510 * @param {String} str the string input value
34511 * @return {Boolean} a boolean if it is or is not hex prefixed
34512 * @throws if the str input is not a string
34514 module.exports = function isHexPrefixed(str) {
34515 if (typeof str !== 'string') {
34516 throw new Error(
"[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) +
", while checking isHexPrefixed.");
34519 return str.slice(
0,
2) === '
0x';
34522 },{}],
65:[function(require,module,exports){
34524 module.exports = require('./lib/api')(require('./lib/keccak'))
34526 },{
"./lib/api":
66,
"./lib/keccak":
70}],
66:[function(require,module,exports){
34528 var createKeccak = require('./keccak')
34529 var createShake = require('./shake')
34531 module.exports = function (KeccakState) {
34532 var Keccak = createKeccak(KeccakState)
34533 var Shake = createShake(KeccakState)
34535 return function (algorithm, options) {
34536 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
34538 case 'keccak224': return new Keccak(
1152,
448, null,
224, options)
34539 case 'keccak256': return new Keccak(
1088,
512, null,
256, options)
34540 case 'keccak384': return new Keccak(
832,
768, null,
384, options)
34541 case 'keccak512': return new Keccak(
576,
1024, null,
512, options)
34543 case 'sha3-
224': return new Keccak(
1152,
448,
0x06,
224, options)
34544 case 'sha3-
256': return new Keccak(
1088,
512,
0x06,
256, options)
34545 case 'sha3-
384': return new Keccak(
832,
768,
0x06,
384, options)
34546 case 'sha3-
512': return new Keccak(
576,
1024,
0x06,
512, options)
34548 case 'shake128': return new Shake(
1344,
256,
0x1f, options)
34549 case 'shake256': return new Shake(
1088,
512,
0x1f, options)
34551 default: throw new Error('Invald algorithm: ' + algorithm)
34556 },{
"./keccak":
67,
"./shake":
68}],
67:[function(require,module,exports){
34557 (function (Buffer){
34559 var Transform = require('stream').Transform
34560 var inherits = require('inherits')
34562 module.exports = function (KeccakState) {
34563 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
34564 Transform.call(this, options)
34567 this._capacity = capacity
34568 this._delimitedSuffix = delimitedSuffix
34569 this._hashBitLength = hashBitLength
34570 this._options = options
34572 this._state = new KeccakState()
34573 this._state.initialize(rate, capacity)
34574 this._finalized = false
34577 inherits(Keccak, Transform)
34579 Keccak.prototype._transform = function (chunk, encoding, callback) {
34582 this.update(chunk, encoding)
34590 Keccak.prototype._flush = function (callback) {
34593 this.push(this.digest())
34601 Keccak.prototype.update = function (data, encoding) {
34602 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
34603 if (this._finalized) throw new Error('Digest already called')
34604 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
34606 this._state.absorb(data)
34611 Keccak.prototype.digest = function (encoding) {
34612 if (this._finalized) throw new Error('Digest already called')
34613 this._finalized = true
34615 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
34616 var digest = this._state.squeeze(this._hashBitLength /
8)
34617 if (encoding !== undefined) digest = digest.toString(encoding)
34624 // remove result from memory
34625 Keccak.prototype._resetState = function () {
34626 this._state.initialize(this._rate, this._capacity)
34630 // because sometimes we need hash right now and little later
34631 Keccak.prototype._clone = function () {
34632 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
34633 this._state.copy(clone._state)
34634 clone._finalized = this._finalized
34642 }).call(this,require(
"buffer").Buffer)
34643 },{
"buffer":
5,
"inherits":
63,
"stream":
25}],
68:[function(require,module,exports){
34644 (function (Buffer){
34646 var Transform = require('stream').Transform
34647 var inherits = require('inherits')
34649 module.exports = function (KeccakState) {
34650 function Shake (rate, capacity, delimitedSuffix, options) {
34651 Transform.call(this, options)
34654 this._capacity = capacity
34655 this._delimitedSuffix = delimitedSuffix
34656 this._options = options
34658 this._state = new KeccakState()
34659 this._state.initialize(rate, capacity)
34660 this._finalized = false
34663 inherits(Shake, Transform)
34665 Shake.prototype._transform = function (chunk, encoding, callback) {
34668 this.update(chunk, encoding)
34676 Shake.prototype._flush = function () {}
34678 Shake.prototype._read = function (size) {
34679 this.push(this.squeeze(size))
34682 Shake.prototype.update = function (data, encoding) {
34683 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
34684 if (this._finalized) throw new Error('Squeeze already called')
34685 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
34687 this._state.absorb(data)
34692 Shake.prototype.squeeze = function (dataByteLength, encoding) {
34693 if (!this._finalized) {
34694 this._finalized = true
34695 this._state.absorbLastFewBits(this._delimitedSuffix)
34698 var data = this._state.squeeze(dataByteLength)
34699 if (encoding !== undefined) data = data.toString(encoding)
34704 Shake.prototype._resetState = function () {
34705 this._state.initialize(this._rate, this._capacity)
34709 Shake.prototype._clone = function () {
34710 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
34711 this._state.copy(clone._state)
34712 clone._finalized = this._finalized
34720 }).call(this,require(
"buffer").Buffer)
34721 },{
"buffer":
5,
"inherits":
63,
"stream":
25}],
69:[function(require,module,exports){
34723 var P1600_ROUND_CONSTANTS = [
1,
0,
32898,
0,
32906,
2147483648,
2147516416,
2147483648,
32907,
0,
2147483649,
0,
2147516545,
2147483648,
32777,
2147483648,
138,
0,
136,
0,
2147516425,
0,
2147483658,
0,
2147516555,
0,
139,
2147483648,
32905,
2147483648,
32771,
2147483648,
32770,
2147483648,
128,
2147483648,
32778,
0,
2147483658,
2147483648,
2147516545,
2147483648,
32896,
2147483648,
2147483649,
0,
2147516424,
2147483648]
34725 exports.p1600 = function (s) {
34726 for (var round =
0; round <
24; ++round) {
34728 var lo0 = s[
0] ^ s[
10] ^ s[
20] ^ s[
30] ^ s[
40]
34729 var hi0 = s[
1] ^ s[
11] ^ s[
21] ^ s[
31] ^ s[
41]
34730 var lo1 = s[
2] ^ s[
12] ^ s[
22] ^ s[
32] ^ s[
42]
34731 var hi1 = s[
3] ^ s[
13] ^ s[
23] ^ s[
33] ^ s[
43]
34732 var lo2 = s[
4] ^ s[
14] ^ s[
24] ^ s[
34] ^ s[
44]
34733 var hi2 = s[
5] ^ s[
15] ^ s[
25] ^ s[
35] ^ s[
45]
34734 var lo3 = s[
6] ^ s[
16] ^ s[
26] ^ s[
36] ^ s[
46]
34735 var hi3 = s[
7] ^ s[
17] ^ s[
27] ^ s[
37] ^ s[
47]
34736 var lo4 = s[
8] ^ s[
18] ^ s[
28] ^ s[
38] ^ s[
48]
34737 var hi4 = s[
9] ^ s[
19] ^ s[
29] ^ s[
39] ^ s[
49]
34739 var lo = lo4 ^ (lo1 <<
1 | hi1
>>> 31)
34740 var hi = hi4 ^ (hi1 <<
1 | lo1
>>> 31)
34741 var t1slo0 = s[
0] ^ lo
34742 var t1shi0 = s[
1] ^ hi
34743 var t1slo5 = s[
10] ^ lo
34744 var t1shi5 = s[
11] ^ hi
34745 var t1slo10 = s[
20] ^ lo
34746 var t1shi10 = s[
21] ^ hi
34747 var t1slo15 = s[
30] ^ lo
34748 var t1shi15 = s[
31] ^ hi
34749 var t1slo20 = s[
40] ^ lo
34750 var t1shi20 = s[
41] ^ hi
34751 lo = lo0 ^ (lo2 <<
1 | hi2
>>> 31)
34752 hi = hi0 ^ (hi2 <<
1 | lo2
>>> 31)
34753 var t1slo1 = s[
2] ^ lo
34754 var t1shi1 = s[
3] ^ hi
34755 var t1slo6 = s[
12] ^ lo
34756 var t1shi6 = s[
13] ^ hi
34757 var t1slo11 = s[
22] ^ lo
34758 var t1shi11 = s[
23] ^ hi
34759 var t1slo16 = s[
32] ^ lo
34760 var t1shi16 = s[
33] ^ hi
34761 var t1slo21 = s[
42] ^ lo
34762 var t1shi21 = s[
43] ^ hi
34763 lo = lo1 ^ (lo3 <<
1 | hi3
>>> 31)
34764 hi = hi1 ^ (hi3 <<
1 | lo3
>>> 31)
34765 var t1slo2 = s[
4] ^ lo
34766 var t1shi2 = s[
5] ^ hi
34767 var t1slo7 = s[
14] ^ lo
34768 var t1shi7 = s[
15] ^ hi
34769 var t1slo12 = s[
24] ^ lo
34770 var t1shi12 = s[
25] ^ hi
34771 var t1slo17 = s[
34] ^ lo
34772 var t1shi17 = s[
35] ^ hi
34773 var t1slo22 = s[
44] ^ lo
34774 var t1shi22 = s[
45] ^ hi
34775 lo = lo2 ^ (lo4 <<
1 | hi4
>>> 31)
34776 hi = hi2 ^ (hi4 <<
1 | lo4
>>> 31)
34777 var t1slo3 = s[
6] ^ lo
34778 var t1shi3 = s[
7] ^ hi
34779 var t1slo8 = s[
16] ^ lo
34780 var t1shi8 = s[
17] ^ hi
34781 var t1slo13 = s[
26] ^ lo
34782 var t1shi13 = s[
27] ^ hi
34783 var t1slo18 = s[
36] ^ lo
34784 var t1shi18 = s[
37] ^ hi
34785 var t1slo23 = s[
46] ^ lo
34786 var t1shi23 = s[
47] ^ hi
34787 lo = lo3 ^ (lo0 <<
1 | hi0
>>> 31)
34788 hi = hi3 ^ (hi0 <<
1 | lo0
>>> 31)
34789 var t1slo4 = s[
8] ^ lo
34790 var t1shi4 = s[
9] ^ hi
34791 var t1slo9 = s[
18] ^ lo
34792 var t1shi9 = s[
19] ^ hi
34793 var t1slo14 = s[
28] ^ lo
34794 var t1shi14 = s[
29] ^ hi
34795 var t1slo19 = s[
38] ^ lo
34796 var t1shi19 = s[
39] ^ hi
34797 var t1slo24 = s[
48] ^ lo
34798 var t1shi24 = s[
49] ^ hi
34801 var t2slo0 = t1slo0
34802 var t2shi0 = t1shi0
34803 var t2slo16 = (t1shi5 <<
4 | t1slo5
>>> 28)
34804 var t2shi16 = (t1slo5 <<
4 | t1shi5
>>> 28)
34805 var t2slo7 = (t1slo10 <<
3 | t1shi10
>>> 29)
34806 var t2shi7 = (t1shi10 <<
3 | t1slo10
>>> 29)
34807 var t2slo23 = (t1shi15 <<
9 | t1slo15
>>> 23)
34808 var t2shi23 = (t1slo15 <<
9 | t1shi15
>>> 23)
34809 var t2slo14 = (t1slo20 <<
18 | t1shi20
>>> 14)
34810 var t2shi14 = (t1shi20 <<
18 | t1slo20
>>> 14)
34811 var t2slo10 = (t1slo1 <<
1 | t1shi1
>>> 31)
34812 var t2shi10 = (t1shi1 <<
1 | t1slo1
>>> 31)
34813 var t2slo1 = (t1shi6 <<
12 | t1slo6
>>> 20)
34814 var t2shi1 = (t1slo6 <<
12 | t1shi6
>>> 20)
34815 var t2slo17 = (t1slo11 <<
10 | t1shi11
>>> 22)
34816 var t2shi17 = (t1shi11 <<
10 | t1slo11
>>> 22)
34817 var t2slo8 = (t1shi16 <<
13 | t1slo16
>>> 19)
34818 var t2shi8 = (t1slo16 <<
13 | t1shi16
>>> 19)
34819 var t2slo24 = (t1slo21 <<
2 | t1shi21
>>> 30)
34820 var t2shi24 = (t1shi21 <<
2 | t1slo21
>>> 30)
34821 var t2slo20 = (t1shi2 <<
30 | t1slo2
>>> 2)
34822 var t2shi20 = (t1slo2 <<
30 | t1shi2
>>> 2)
34823 var t2slo11 = (t1slo7 <<
6 | t1shi7
>>> 26)
34824 var t2shi11 = (t1shi7 <<
6 | t1slo7
>>> 26)
34825 var t2slo2 = (t1shi12 <<
11 | t1slo12
>>> 21)
34826 var t2shi2 = (t1slo12 <<
11 | t1shi12
>>> 21)
34827 var t2slo18 = (t1slo17 <<
15 | t1shi17
>>> 17)
34828 var t2shi18 = (t1shi17 <<
15 | t1slo17
>>> 17)
34829 var t2slo9 = (t1shi22 <<
29 | t1slo22
>>> 3)
34830 var t2shi9 = (t1slo22 <<
29 | t1shi22
>>> 3)
34831 var t2slo5 = (t1slo3 <<
28 | t1shi3
>>> 4)
34832 var t2shi5 = (t1shi3 <<
28 | t1slo3
>>> 4)
34833 var t2slo21 = (t1shi8 <<
23 | t1slo8
>>> 9)
34834 var t2shi21 = (t1slo8 <<
23 | t1shi8
>>> 9)
34835 var t2slo12 = (t1slo13 <<
25 | t1shi13
>>> 7)
34836 var t2shi12 = (t1shi13 <<
25 | t1slo13
>>> 7)
34837 var t2slo3 = (t1slo18 <<
21 | t1shi18
>>> 11)
34838 var t2shi3 = (t1shi18 <<
21 | t1slo18
>>> 11)
34839 var t2slo19 = (t1shi23 <<
24 | t1slo23
>>> 8)
34840 var t2shi19 = (t1slo23 <<
24 | t1shi23
>>> 8)
34841 var t2slo15 = (t1slo4 <<
27 | t1shi4
>>> 5)
34842 var t2shi15 = (t1shi4 <<
27 | t1slo4
>>> 5)
34843 var t2slo6 = (t1slo9 <<
20 | t1shi9
>>> 12)
34844 var t2shi6 = (t1shi9 <<
20 | t1slo9
>>> 12)
34845 var t2slo22 = (t1shi14 <<
7 | t1slo14
>>> 25)
34846 var t2shi22 = (t1slo14 <<
7 | t1shi14
>>> 25)
34847 var t2slo13 = (t1slo19 <<
8 | t1shi19
>>> 24)
34848 var t2shi13 = (t1shi19 <<
8 | t1slo19
>>> 24)
34849 var t2slo4 = (t1slo24 <<
14 | t1shi24
>>> 18)
34850 var t2shi4 = (t1shi24 <<
14 | t1slo24
>>> 18)
34853 s[
0] = t2slo0 ^ (~t2slo1 & t2slo2)
34854 s[
1] = t2shi0 ^ (~t2shi1 & t2shi2)
34855 s[
10] = t2slo5 ^ (~t2slo6 & t2slo7)
34856 s[
11] = t2shi5 ^ (~t2shi6 & t2shi7)
34857 s[
20] = t2slo10 ^ (~t2slo11 & t2slo12)
34858 s[
21] = t2shi10 ^ (~t2shi11 & t2shi12)
34859 s[
30] = t2slo15 ^ (~t2slo16 & t2slo17)
34860 s[
31] = t2shi15 ^ (~t2shi16 & t2shi17)
34861 s[
40] = t2slo20 ^ (~t2slo21 & t2slo22)
34862 s[
41] = t2shi20 ^ (~t2shi21 & t2shi22)
34863 s[
2] = t2slo1 ^ (~t2slo2 & t2slo3)
34864 s[
3] = t2shi1 ^ (~t2shi2 & t2shi3)
34865 s[
12] = t2slo6 ^ (~t2slo7 & t2slo8)
34866 s[
13] = t2shi6 ^ (~t2shi7 & t2shi8)
34867 s[
22] = t2slo11 ^ (~t2slo12 & t2slo13)
34868 s[
23] = t2shi11 ^ (~t2shi12 & t2shi13)
34869 s[
32] = t2slo16 ^ (~t2slo17 & t2slo18)
34870 s[
33] = t2shi16 ^ (~t2shi17 & t2shi18)
34871 s[
42] = t2slo21 ^ (~t2slo22 & t2slo23)
34872 s[
43] = t2shi21 ^ (~t2shi22 & t2shi23)
34873 s[
4] = t2slo2 ^ (~t2slo3 & t2slo4)
34874 s[
5] = t2shi2 ^ (~t2shi3 & t2shi4)
34875 s[
14] = t2slo7 ^ (~t2slo8 & t2slo9)
34876 s[
15] = t2shi7 ^ (~t2shi8 & t2shi9)
34877 s[
24] = t2slo12 ^ (~t2slo13 & t2slo14)
34878 s[
25] = t2shi12 ^ (~t2shi13 & t2shi14)
34879 s[
34] = t2slo17 ^ (~t2slo18 & t2slo19)
34880 s[
35] = t2shi17 ^ (~t2shi18 & t2shi19)
34881 s[
44] = t2slo22 ^ (~t2slo23 & t2slo24)
34882 s[
45] = t2shi22 ^ (~t2shi23 & t2shi24)
34883 s[
6] = t2slo3 ^ (~t2slo4 & t2slo0)
34884 s[
7] = t2shi3 ^ (~t2shi4 & t2shi0)
34885 s[
16] = t2slo8 ^ (~t2slo9 & t2slo5)
34886 s[
17] = t2shi8 ^ (~t2shi9 & t2shi5)
34887 s[
26] = t2slo13 ^ (~t2slo14 & t2slo10)
34888 s[
27] = t2shi13 ^ (~t2shi14 & t2shi10)
34889 s[
36] = t2slo18 ^ (~t2slo19 & t2slo15)
34890 s[
37] = t2shi18 ^ (~t2shi19 & t2shi15)
34891 s[
46] = t2slo23 ^ (~t2slo24 & t2slo20)
34892 s[
47] = t2shi23 ^ (~t2shi24 & t2shi20)
34893 s[
8] = t2slo4 ^ (~t2slo0 & t2slo1)
34894 s[
9] = t2shi4 ^ (~t2shi0 & t2shi1)
34895 s[
18] = t2slo9 ^ (~t2slo5 & t2slo6)
34896 s[
19] = t2shi9 ^ (~t2shi5 & t2shi6)
34897 s[
28] = t2slo14 ^ (~t2slo10 & t2slo11)
34898 s[
29] = t2shi14 ^ (~t2shi10 & t2shi11)
34899 s[
38] = t2slo19 ^ (~t2slo15 & t2slo16)
34900 s[
39] = t2shi19 ^ (~t2shi15 & t2shi16)
34901 s[
48] = t2slo24 ^ (~t2slo20 & t2slo21)
34902 s[
49] = t2shi24 ^ (~t2shi20 & t2shi21)
34905 s[
0] ^= P1600_ROUND_CONSTANTS[round *
2]
34906 s[
1] ^= P1600_ROUND_CONSTANTS[round *
2 +
1]
34910 },{}],
70:[function(require,module,exports){
34911 (function (Buffer){
34913 var keccakState = require('./keccak-state-unroll')
34915 function Keccak () {
34916 // much faster than `new Array(
50)`
34925 this.blockSize = null
34927 this.squeezing = false
34930 Keccak.prototype.initialize = function (rate, capacity) {
34931 for (var i =
0; i <
50; ++i) this.state[i] =
0
34932 this.blockSize = rate /
8
34934 this.squeezing = false
34937 Keccak.prototype.absorb = function (data) {
34938 for (var i =
0; i < data.length; ++i) {
34939 this.state[~~(this.count /
4)] ^= data[i] << (
8 * (this.count %
4))
34941 if (this.count === this.blockSize) {
34942 keccakState.p1600(this.state)
34948 Keccak.prototype.absorbLastFewBits = function (bits) {
34949 this.state[~~(this.count /
4)] ^= bits << (
8 * (this.count %
4))
34950 if ((bits &
0x80) !==
0 && this.count === (this.blockSize -
1)) keccakState.p1600(this.state)
34951 this.state[~~((this.blockSize -
1) /
4)] ^=
0x80 << (
8 * ((this.blockSize -
1) %
4))
34952 keccakState.p1600(this.state)
34954 this.squeezing = true
34957 Keccak.prototype.squeeze = function (length) {
34958 if (!this.squeezing) this.absorbLastFewBits(
0x01)
34960 var output = Buffer.allocUnsafe(length)
34961 for (var i =
0; i < length; ++i) {
34962 output[i] = (this.state[~~(this.count /
4)]
>>> (
8 * (this.count %
4))) &
0xff
34964 if (this.count === this.blockSize) {
34965 keccakState.p1600(this.state)
34973 Keccak.prototype.copy = function (dest) {
34974 for (var i =
0; i <
50; ++i) dest.state[i] = this.state[i]
34975 dest.blockSize = this.blockSize
34976 dest.count = this.count
34977 dest.squeezing = this.squeezing
34980 module.exports = Keccak
34982 }).call(this,require("buffer").Buffer)
34983 },{"./keccak-state-unroll":
69,"buffer":
5}],
71:[function(require,module,exports){
34984 (function (Buffer){
34987 code.google.com/p/crypto-js
34988 (c)
2009-
2013 by Jeff Mott. All rights reserved.
34989 code.google.com/p/crypto-js/wiki/License
34992 (c)
2012 by Cédric Mesnil. All rights reserved.
34994 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
34996 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
34997 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
34999 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35004 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
35005 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
35006 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
35007 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
35008 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
35012 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
35013 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
35014 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
35015 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
35016 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
35020 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
35021 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
35022 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
35023 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
35024 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
35028 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
35029 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
35030 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
35031 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
35032 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
35035 var hl = [
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E]
35036 var hr = [
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000]
35038 function bytesToWords (bytes) {
35040 for (var i =
0, b =
0; i < bytes.length; i++, b +=
8) {
35041 words[b
>>> 5] |= bytes[i] << (
24 - b %
32)
35046 function wordsToBytes (words) {
35048 for (var b =
0; b < words.length *
32; b +=
8) {
35049 bytes.push((words[b
>>> 5]
>>> (
24 - b %
32)) &
0xFF)
35054 function processBlock (H, M, offset) {
35056 for (var i =
0; i <
16; i++) {
35057 var offset_i = offset + i
35058 var M_offset_i = M[offset_i]
35062 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
35063 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
35067 // Working variables
35068 var al, bl, cl, dl, el
35069 var ar, br, cr, dr, er
35079 for (i =
0; i <
80; i +=
1) {
35080 t = (al + M[offset + zl[i]]) |
0
35082 t += f1(bl, cl, dl) + hl[
0]
35083 } else if (i <
32) {
35084 t += f2(bl, cl, dl) + hl[
1]
35085 } else if (i <
48) {
35086 t += f3(bl, cl, dl) + hl[
2]
35087 } else if (i <
64) {
35088 t += f4(bl, cl, dl) + hl[
3]
35089 } else {// if (i
<80) {
35090 t += f5(bl, cl, dl) + hl[
4]
35101 t = (ar + M[offset + zr[i]]) |
0
35103 t += f5(br, cr, dr) + hr[
0]
35104 } else if (i <
32) {
35105 t += f4(br, cr, dr) + hr[
1]
35106 } else if (i <
48) {
35107 t += f3(br, cr, dr) + hr[
2]
35108 } else if (i <
64) {
35109 t += f2(br, cr, dr) + hr[
3]
35110 } else {// if (i
<80) {
35111 t += f1(br, cr, dr) + hr[
4]
35124 // intermediate hash value
35125 t = (H[
1] + cl + dr) |
0
35126 H[
1] = (H[
2] + dl + er) |
0
35127 H[
2] = (H[
3] + el + ar) |
0
35128 H[
3] = (H[
4] + al + br) |
0
35129 H[
4] = (H[
0] + bl + cr) |
0
35133 function f1 (x, y, z) {
35134 return ((x) ^ (y) ^ (z))
35137 function f2 (x, y, z) {
35138 return (((x) & (y)) | ((~x) & (z)))
35141 function f3 (x, y, z) {
35142 return (((x) | (~(y))) ^ (z))
35145 function f4 (x, y, z) {
35146 return (((x) & (z)) | ((y) & (~(z))))
35149 function f5 (x, y, z) {
35150 return ((x) ^ ((y) | (~(z))))
35153 function rotl (x, n) {
35154 return (x << n) | (x
>>> (
32 - n))
35157 function ripemd160 (message) {
35158 var H = [
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0]
35160 if (typeof message === 'string') {
35161 message = new Buffer(message, 'utf8')
35164 var m = bytesToWords(message)
35166 var nBitsLeft = message.length *
8
35167 var nBitsTotal = message.length *
8
35170 m[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32)
35171 m[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
35172 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
35173 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
35176 for (var i =
0; i < m.length; i +=
16) {
35177 processBlock(H, m, i)
35181 for (i =
0; i <
5; i++) {
35186 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
35187 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00)
35190 var digestbytes = wordsToBytes(H)
35191 return new Buffer(digestbytes)
35194 module.exports = ripemd160
35196 }).call(this,require(
"buffer").Buffer)
35197 },{
"buffer":
5}],
72:[function(require,module,exports){
35198 (function (Buffer){
35199 const assert = require('assert')
35201 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%
5BEnglish%
5D-RLP
35202 * This function takes in a data, convert it to buffer if not, and a length for recursion
35204 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
35205 * @returns {Buffer} - returns buffer of encoded data
35207 exports.encode = function (input) {
35208 if (input instanceof Array) {
35210 for (var i =
0; i < input.length; i++) {
35211 output.push(exports.encode(input[i]))
35213 var buf = Buffer.concat(output)
35214 return Buffer.concat([encodeLength(buf.length,
192), buf])
35216 input = toBuffer(input)
35217 if (input.length ===
1 && input[
0] <
128) {
35220 return Buffer.concat([encodeLength(input.length,
128), input])
35225 function safeParseInt (v, base) {
35226 if (v.slice(
0,
2) === '
00') {
35227 throw (new Error('invalid RLP: extra zeros'))
35230 return parseInt(v, base)
35233 function encodeLength (len, offset) {
35235 return new Buffer([len + offset])
35237 var hexLength = intToHex(len)
35238 var lLength = hexLength.length /
2
35239 var firstByte = intToHex(offset +
55 + lLength)
35240 return new Buffer(firstByte + hexLength, 'hex')
35245 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%
5BEnglish%
5D-RLP|RLP}
35246 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
35247 * @returns {Array} - returns decode Array of Buffers containg the original message
35249 exports.decode = function (input, stream) {
35250 if (!input || input.length ===
0) {
35251 return new Buffer([])
35254 input = toBuffer(input)
35255 var decoded = _decode(input)
35261 assert.equal(decoded.remainder.length,
0, 'invalid remainder')
35262 return decoded.data
35265 exports.getLength = function (input) {
35266 if (!input || input.length ===
0) {
35267 return new Buffer([])
35270 input = toBuffer(input)
35271 var firstByte = input[
0]
35272 if (firstByte <=
0x7f) {
35273 return input.length
35274 } else if (firstByte <=
0xb7) {
35275 return firstByte -
0x7f
35276 } else if (firstByte <=
0xbf) {
35277 return firstByte -
0xb6
35278 } else if (firstByte <=
0xf7) {
35279 // a list between
0-
55 bytes long
35280 return firstByte -
0xbf
35282 // a list over
55 bytes long
35283 var llength = firstByte -
0xf6
35284 var length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
35285 return llength + length
35289 function _decode (input) {
35290 var length, llength, data, innerRemainder, d
35292 var firstByte = input[
0]
35294 if (firstByte <=
0x7f) {
35295 // a single byte whose value is in the [
0x00,
0x7f] range, that byte is its own RLP encoding.
35297 data: input.slice(
0,
1),
35298 remainder: input.slice(
1)
35300 } else if (firstByte <=
0xb7) {
35301 // string is
0-
55 bytes long. A single byte with value
0x80 plus the length of the string followed by the string
35302 // The range of the first byte is [
0x80,
0xb7]
35303 length = firstByte -
0x7f
35305 // set
0x80 null to
0
35306 if (firstByte ===
0x80) {
35307 data = new Buffer([])
35309 data = input.slice(
1, length)
35312 if (length ===
2 && data[
0] <
0x80) {
35313 throw new Error('invalid rlp encoding: byte must be less
0x80')
35318 remainder: input.slice(length)
35320 } else if (firstByte <=
0xbf) {
35321 llength = firstByte -
0xb6
35322 length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
35323 data = input.slice(llength, length + llength)
35324 if (data.length < length) {
35325 throw (new Error('invalid RLP'))
35330 remainder: input.slice(length + llength)
35332 } else if (firstByte <=
0xf7) {
35333 // a list between
0-
55 bytes long
35334 length = firstByte -
0xbf
35335 innerRemainder = input.slice(
1, length)
35336 while (innerRemainder.length) {
35337 d = _decode(innerRemainder)
35338 decoded.push(d.data)
35339 innerRemainder = d.remainder
35344 remainder: input.slice(length)
35347 // a list over
55 bytes long
35348 llength = firstByte -
0xf6
35349 length = safeParseInt(input.slice(
1, llength).toString('hex'),
16)
35350 var totalLength = llength + length
35351 if (totalLength
> input.length) {
35352 throw new Error('invalid rlp: total length is larger than the data')
35355 innerRemainder = input.slice(llength, totalLength)
35356 if (innerRemainder.length ===
0) {
35357 throw new Error('invalid rlp, List has a invalid length')
35360 while (innerRemainder.length) {
35361 d = _decode(innerRemainder)
35362 decoded.push(d.data)
35363 innerRemainder = d.remainder
35367 remainder: input.slice(totalLength)
35372 function isHexPrefixed (str) {
35373 return str.slice(
0,
2) === '
0x'
35376 // Removes
0x from a given String
35377 function stripHexPrefix (str) {
35378 if (typeof str !== 'string') {
35381 return isHexPrefixed(str) ? str.slice(
2) : str
35384 function intToHex (i) {
35385 var hex = i.toString(
16)
35386 if (hex.length %
2) {
35393 function padToEven (a) {
35394 if (a.length %
2) a = '
0' + a
35398 function intToBuffer (i) {
35399 var hex = intToHex(i)
35400 return new Buffer(hex, 'hex')
35403 function toBuffer (v) {
35404 if (!Buffer.isBuffer(v)) {
35405 if (typeof v === 'string') {
35406 if (isHexPrefixed(v)) {
35407 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
35411 } else if (typeof v === 'number') {
35417 } else if (v === null || v === undefined) {
35419 } else if (v.toArray) {
35420 // converts a BN to a Buffer
35421 v = new Buffer(v.toArray())
35423 throw new Error('invalid type')
35429 }).call(this,require("buffer").Buffer)
35430 },{"assert":
1,"buffer":
5}],
73:[function(require,module,exports){
35432 module.exports = require('./lib')(require('./lib/elliptic'))
35434 },{"./lib":
77,"./lib/elliptic":
76}],
74:[function(require,module,exports){
35435 (function (Buffer){
35437 var toString = Object.prototype.toString
35440 exports.isArray = function (value, message) {
35441 if (!Array.isArray(value)) throw TypeError(message)
35444 exports.isBoolean = function (value, message) {
35445 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
35448 exports.isBuffer = function (value, message) {
35449 if (!Buffer.isBuffer(value)) throw TypeError(message)
35452 exports.isFunction = function (value, message) {
35453 if (toString.call(value) !== '[object Function]') throw TypeError(message)
35456 exports.isNumber = function (value, message) {
35457 if (toString.call(value) !== '[object Number]') throw TypeError(message)
35460 exports.isObject = function (value, message) {
35461 if (toString.call(value) !== '[object Object]') throw TypeError(message)
35465 exports.isBufferLength = function (buffer, length, message) {
35466 if (buffer.length !== length) throw RangeError(message)
35469 exports.isBufferLength2 = function (buffer, length1, length2, message) {
35470 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
35473 exports.isLengthGTZero = function (value, message) {
35474 if (value.length ===
0) throw RangeError(message)
35477 exports.isNumberInInterval = function (number, x, y, message) {
35478 if (number <= x || number
>= y) throw RangeError(message)
35481 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
35482 },{"../../../../../.nvm/versions/node/v7.5
.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":
10}],
75:[function(require,module,exports){
35483 (function (Buffer){
35485 var bip66 = require('bip66')
35487 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
35489 0x30,
0x81,
0xd3,
0x02,
0x01,
0x01,
0x04,
0x20,
35491 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35492 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35494 0xa0,
0x81,
0x85,
0x30,
0x81,
0x82,
0x02,
0x01,
0x01,
0x30,
0x2c,
0x06,
0x07,
0x2a,
0x86,
0x48,
35495 0xcE,
0x3d,
0x01,
0x01,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35496 0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35497 0xff,
0xff,
0xfE,
0xff,
0xff,
0xfc,
0x2f,
0x30,
0x06,
0x04,
0x01,
0x00,
0x04,
0x01,
0x07,
0x04,
35498 0x21,
0x02,
0x79,
0xbE,
0x66,
0x7E,
0xf9,
0xdc,
0xbb,
0xac,
0x55,
0xa0,
0x62,
0x95,
0xcE,
0x87,
35499 0x0b,
0x07,
0x02,
0x9b,
0xfc,
0xdb,
0x2d,
0xcE,
0x28,
0xd9,
0x59,
0xf2,
0x81,
0x5b,
0x16,
0xf8,
35500 0x17,
0x98,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35501 0xff,
0xff,
0xff,
0xff,
0xfE,
0xba,
0xaE,
0xdc,
0xE6,
0xaf,
0x48,
0xa0,
0x3b,
0xbf,
0xd2,
0x5E,
35502 0x8c,
0xd0,
0x36,
0x41,
0x41,
0x02,
0x01,
0x01,
0xa1,
0x24,
0x03,
0x22,
0x00,
35504 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35505 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35509 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
35511 0x30,
0x82,
0x01,
0x13,
0x02,
0x01,
0x01,
0x04,
0x20,
35513 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35514 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35516 0xa0,
0x81,
0xa5,
0x30,
0x81,
0xa2,
0x02,
0x01,
0x01,
0x30,
0x2c,
0x06,
0x07,
0x2a,
0x86,
0x48,
35517 0xcE,
0x3d,
0x01,
0x01,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35518 0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35519 0xff,
0xff,
0xfE,
0xff,
0xff,
0xfc,
0x2f,
0x30,
0x06,
0x04,
0x01,
0x00,
0x04,
0x01,
0x07,
0x04,
35520 0x41,
0x04,
0x79,
0xbE,
0x66,
0x7E,
0xf9,
0xdc,
0xbb,
0xac,
0x55,
0xa0,
0x62,
0x95,
0xcE,
0x87,
35521 0x0b,
0x07,
0x02,
0x9b,
0xfc,
0xdb,
0x2d,
0xcE,
0x28,
0xd9,
0x59,
0xf2,
0x81,
0x5b,
0x16,
0xf8,
35522 0x17,
0x98,
0x48,
0x3a,
0xda,
0x77,
0x26,
0xa3,
0xc4,
0x65,
0x5d,
0xa4,
0xfb,
0xfc,
0x0E,
0x11,
35523 0x08,
0xa8,
0xfd,
0x17,
0xb4,
0x48,
0xa6,
0x85,
0x54,
0x19,
0x9c,
0x47,
0xd0,
0x8f,
0xfb,
0x10,
35524 0xd4,
0xb8,
0x02,
0x21,
0x00,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
0xff,
35525 0xff,
0xff,
0xff,
0xff,
0xfE,
0xba,
0xaE,
0xdc,
0xE6,
0xaf,
0x48,
0xa0,
0x3b,
0xbf,
0xd2,
0x5E,
35526 0x8c,
0xd0,
0x36,
0x41,
0x41,
0x02,
0x01,
0x01,
0xa1,
0x44,
0x03,
0x42,
0x00,
35528 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35529 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35530 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35531 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35535 var ZERO_BUFFER_32 = new Buffer([
35536 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
35537 0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
35540 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
35541 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
35542 privateKey.copy(result, compressed ?
8 :
9)
35543 publicKey.copy(result, compressed ?
181 :
214)
35547 exports.privateKeyImport = function (privateKey) {
35548 var length = privateKey.length
35552 if (length < index +
1 || privateKey[index] !==
0x30) return
35555 // sequence length constructor
35556 if (length < index +
1 || !(privateKey[index] &
0x80)) return
35558 var lenb = privateKey[index] &
0x7f
35560 if (lenb <
1 || lenb
> 2) return
35561 if (length < index + lenb) return
35564 var len = privateKey[index + lenb -
1] | (lenb
> 1 ? privateKey[index + lenb -
2] <<
8 :
0)
35566 if (length < index + len) return
35568 // sequence element
0: version number (=
1)
35569 if (length < index +
3 ||
35570 privateKey[index] !==
0x02 ||
35571 privateKey[index +
1] !==
0x01 ||
35572 privateKey[index +
2] !==
0x01) {
35577 // sequence element
1: octet string, up to
32 bytes
35578 if (length < index +
2 ||
35579 privateKey[index] !==
0x04 ||
35580 privateKey[index +
1]
> 0x20 ||
35581 length < index +
2 + privateKey[index +
1]) {
35585 return privateKey.slice(index +
2, index +
2 + privateKey[index +
1])
35588 exports.signatureExport = function (sigObj) {
35589 var r = Buffer.concat([new Buffer([
0]), sigObj.r])
35590 for (var lenR =
33, posR =
0; lenR
> 1 && r[posR] ===
0x00 && !(r[posR +
1] &
0x80); --lenR, ++posR);
35592 var s = Buffer.concat([new Buffer([
0]), sigObj.s])
35593 for (var lenS =
33, posS =
0; lenS
> 1 && s[posS] ===
0x00 && !(s[posS +
1] &
0x80); --lenS, ++posS);
35595 return bip66.encode(r.slice(posR), s.slice(posS))
35598 exports.signatureImport = function (sig) {
35599 var r = new Buffer(ZERO_BUFFER_32)
35600 var s = new Buffer(ZERO_BUFFER_32)
35603 var sigObj = bip66.decode(sig)
35604 if (sigObj.r.length ===
33 && sigObj.r[
0] ===
0x00) sigObj.r = sigObj.r.slice(
1)
35605 if (sigObj.r.length
> 32) throw new Error('R length is too long')
35606 if (sigObj.s.length ===
33 && sigObj.s[
0] ===
0x00) sigObj.s = sigObj.s.slice(
1)
35607 if (sigObj.s.length
> 32) throw new Error('S length is too long')
35612 sigObj.r.copy(r,
32 - sigObj.r.length)
35613 sigObj.s.copy(s,
32 - sigObj.s.length)
35615 return { r: r, s: s }
35618 exports.signatureImportLax = function (sig) {
35619 var r = new Buffer(ZERO_BUFFER_32)
35620 var s = new Buffer(ZERO_BUFFER_32)
35622 var length = sig.length
35625 // sequence tag byte
35626 if (sig[index++] !==
0x30) return
35628 // sequence length byte
35629 var lenbyte = sig[index++]
35630 if (lenbyte &
0x80) {
35631 index += lenbyte -
0x80
35632 if (index
> length) return
35635 // sequence tag byte for r
35636 if (sig[index++] !==
0x02) return
35639 var rlen = sig[index++]
35641 lenbyte = rlen -
0x80
35642 if (index + lenbyte
> length) return
35643 for (; lenbyte
> 0 && sig[index] ===
0x00; index +=
1, lenbyte -=
1);
35644 for (rlen =
0; lenbyte
> 0; index +=
1, lenbyte -=
1) rlen = (rlen <<
8) + sig[index]
35646 if (rlen
> length - index) return
35650 // sequence tag byte for s
35651 if (sig[index++] !==
0x02) return
35654 var slen = sig[index++]
35656 lenbyte = slen -
0x80
35657 if (index + lenbyte
> length) return
35658 for (; lenbyte
> 0 && sig[index] ===
0x00; index +=
1, lenbyte -=
1);
35659 for (slen =
0; lenbyte
> 0; index +=
1, lenbyte -=
1) slen = (slen <<
8) + sig[index]
35661 if (slen
> length - index) return
35665 // ignore leading zeros in r
35666 for (; rlen
> 0 && sig[rindex] ===
0x00; rlen -=
1, rindex +=
1);
35668 if (rlen
> 32) return
35669 var rvalue = sig.slice(rindex, rindex + rlen)
35670 rvalue.copy(r,
32 - rvalue.length)
35672 // ignore leading zeros in s
35673 for (; slen
> 0 && sig[sindex] ===
0x00; slen -=
1, sindex +=
1);
35675 if (slen
> 32) return
35676 var svalue = sig.slice(sindex, sindex + slen)
35677 svalue.copy(s,
32 - svalue.length)
35679 return { r: r, s: s }
35682 }).call(this,require(
"buffer").Buffer)
35683 },{
"bip66":
32,
"buffer":
5}],
76:[function(require,module,exports){
35684 (function (Buffer){
35686 var createHash = require('create-hash')
35687 var BN = require('bn.js')
35688 var EC = require('elliptic').ec
35690 var messages = require('../messages.json')
35692 var ec = new EC('secp256k1')
35693 var ecparams = ec.curve
35695 function loadCompressedPublicKey (first, xBuffer) {
35696 var x = new BN(xBuffer)
35699 if (x.cmp(ecparams.p)
>=
0) return null
35700 x = x.toRed(ecparams.red)
35702 // compute corresponding Y
35703 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
35704 if ((first ===
0x03) !== y.isOdd()) y = y.redNeg()
35706 return ec.keyPair({ pub: { x: x, y: y } })
35709 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
35710 var x = new BN(xBuffer)
35711 var y = new BN(yBuffer)
35714 if (x.cmp(ecparams.p)
>=
0 || y.cmp(ecparams.p)
>=
0) return null
35716 x = x.toRed(ecparams.red)
35717 y = y.toRed(ecparams.red)
35720 if ((first ===
0x06 || first ===
0x07) && y.isOdd() !== (first ===
0x07)) return null
35723 var x3 = x.redSqr().redIMul(x)
35724 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
35726 return ec.keyPair({ pub: { x: x, y: y } })
35729 function loadPublicKey (publicKey) {
35730 var first = publicKey[
0]
35734 if (publicKey.length !==
33) return null
35735 return loadCompressedPublicKey(first, publicKey.slice(
1,
33))
35739 if (publicKey.length !==
65) return null
35740 return loadUncompressedPublicKey(first, publicKey.slice(
1,
33), publicKey.slice(
33,
65))
35746 exports.privateKeyVerify = function (privateKey) {
35747 var bn = new BN(privateKey)
35748 return bn.cmp(ecparams.n) <
0 && !bn.isZero()
35751 exports.privateKeyExport = function (privateKey, compressed) {
35752 var d = new BN(privateKey)
35753 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
35755 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
35758 exports.privateKeyTweakAdd = function (privateKey, tweak) {
35759 var bn = new BN(tweak)
35760 if (bn.cmp(ecparams.n)
>=
0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
35762 bn.iadd(new BN(privateKey))
35763 if (bn.cmp(ecparams.n)
>=
0) bn.isub(ecparams.n)
35764 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
35766 return bn.toArrayLike(Buffer, 'be',
32)
35769 exports.privateKeyTweakMul = function (privateKey, tweak) {
35770 var bn = new BN(tweak)
35771 if (bn.cmp(ecparams.n)
>=
0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
35773 bn.imul(new BN(privateKey))
35774 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
35776 return bn.toArrayLike(Buffer, 'be',
32)
35779 exports.publicKeyCreate = function (privateKey, compressed) {
35780 var d = new BN(privateKey)
35781 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
35783 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
35786 exports.publicKeyConvert = function (publicKey, compressed) {
35787 var pair = loadPublicKey(publicKey)
35788 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35790 return new Buffer(pair.getPublic(compressed, true))
35793 exports.publicKeyVerify = function (publicKey) {
35794 return loadPublicKey(publicKey) !== null
35797 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
35798 var pair = loadPublicKey(publicKey)
35799 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35801 tweak = new BN(tweak)
35802 if (tweak.cmp(ecparams.n)
>=
0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
35804 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
35807 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
35808 var pair = loadPublicKey(publicKey)
35809 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35811 tweak = new BN(tweak)
35812 if (tweak.cmp(ecparams.n)
>=
0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
35814 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
35817 exports.publicKeyCombine = function (publicKeys, compressed) {
35818 var pairs = new Array(publicKeys.length)
35819 for (var i =
0; i < publicKeys.length; ++i) {
35820 pairs[i] = loadPublicKey(publicKeys[i])
35821 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35824 var point = pairs[
0].pub
35825 for (var j =
1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
35826 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
35828 return new Buffer(point.encode(true, compressed))
35831 exports.signatureNormalize = function (signature) {
35832 var r = new BN(signature.slice(
0,
32))
35833 var s = new BN(signature.slice(
32,
64))
35834 if (r.cmp(ecparams.n)
>=
0 || s.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35836 var result = new Buffer(signature)
35837 if (s.cmp(ec.nh) ===
1) ecparams.n.sub(s).toArrayLike(Buffer, 'be',
32).copy(result,
32)
35842 exports.signatureExport = function (signature) {
35843 var r = signature.slice(
0,
32)
35844 var s = signature.slice(
32,
64)
35845 if (new BN(r).cmp(ecparams.n)
>=
0 || new BN(s).cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35847 return { r: r, s: s }
35850 exports.signatureImport = function (sigObj) {
35851 var r = new BN(sigObj.r)
35852 if (r.cmp(ecparams.n)
>=
0) r = new BN(
0)
35854 var s = new BN(sigObj.s)
35855 if (s.cmp(ecparams.n)
>=
0) s = new BN(
0)
35857 return Buffer.concat([
35858 r.toArrayLike(Buffer, 'be',
32),
35859 s.toArrayLike(Buffer, 'be',
32)
35863 exports.sign = function (message, privateKey, noncefn, data) {
35864 if (typeof noncefn === 'function') {
35865 var getNonce = noncefn
35866 noncefn = function (counter) {
35867 var nonce = getNonce(message, privateKey, null, data, counter)
35868 if (!Buffer.isBuffer(nonce) || nonce.length !==
32) throw new Error(messages.ECDSA_SIGN_FAIL)
35870 return new BN(nonce)
35874 var d = new BN(privateKey)
35875 if (d.cmp(ecparams.n)
>=
0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
35877 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
35879 signature: Buffer.concat([
35880 result.r.toArrayLike(Buffer, 'be',
32),
35881 result.s.toArrayLike(Buffer, 'be',
32)
35883 recovery: result.recoveryParam
35887 exports.verify = function (message, signature, publicKey) {
35888 var sigObj = {r: signature.slice(
0,
32), s: signature.slice(
32,
64)}
35890 var sigr = new BN(sigObj.r)
35891 var sigs = new BN(sigObj.s)
35892 if (sigr.cmp(ecparams.n)
>=
0 || sigs.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35893 if (sigs.cmp(ec.nh) ===
1 || sigr.isZero() || sigs.isZero()) return false
35895 var pair = loadPublicKey(publicKey)
35896 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35898 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
35901 exports.recover = function (message, signature, recovery, compressed) {
35902 var sigObj = {r: signature.slice(
0,
32), s: signature.slice(
32,
64)}
35904 var sigr = new BN(sigObj.r)
35905 var sigs = new BN(sigObj.s)
35906 if (sigr.cmp(ecparams.n)
>=
0 || sigs.cmp(ecparams.n)
>=
0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
35909 if (sigr.isZero() || sigs.isZero()) throw new Error()
35911 var point = ec.recoverPubKey(message, sigObj, recovery)
35912 return new Buffer(point.encode(true, compressed))
35914 throw new Error(messages.ECDSA_RECOVER_FAIL)
35918 exports.ecdh = function (publicKey, privateKey) {
35919 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
35920 return createHash('sha256').update(shared).digest()
35923 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
35924 var pair = loadPublicKey(publicKey)
35925 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
35927 var scalar = new BN(privateKey)
35928 if (scalar.cmp(ecparams.n)
>=
0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
35930 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
35933 }).call(this,require("buffer").Buffer)
35934 },{"../messages.json":
78,"bn.js":
33,"buffer":
5,"create-hash":
36,"elliptic":
39}],
77:[function(require,module,exports){
35936 var assert = require('./assert')
35937 var der = require('./der')
35938 var messages = require('./messages.json')
35940 function initCompressedValue (value, defaultValue) {
35941 if (value === undefined) return defaultValue
35943 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
35947 module.exports = function (secp256k1) {
35949 privateKeyVerify: function (privateKey) {
35950 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35951 return privateKey.length ===
32 && secp256k1.privateKeyVerify(privateKey)
35954 privateKeyExport: function (privateKey, compressed) {
35955 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35956 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35958 compressed = initCompressedValue(compressed, true)
35959 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
35961 return der.privateKeyExport(privateKey, publicKey, compressed)
35964 privateKeyImport: function (privateKey) {
35965 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35967 privateKey = der.privateKeyImport(privateKey)
35968 if (privateKey && privateKey.length ===
32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
35970 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
35973 privateKeyTweakAdd: function (privateKey, tweak) {
35974 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35975 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35977 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35978 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
35980 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
35983 privateKeyTweakMul: function (privateKey, tweak) {
35984 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35985 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35987 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
35988 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
35990 return secp256k1.privateKeyTweakMul(privateKey, tweak)
35993 publicKeyCreate: function (privateKey, compressed) {
35994 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
35995 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
35997 compressed = initCompressedValue(compressed, true)
35999 return secp256k1.publicKeyCreate(privateKey, compressed)
36002 publicKeyConvert: function (publicKey, compressed) {
36003 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36004 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36006 compressed = initCompressedValue(compressed, true)
36008 return secp256k1.publicKeyConvert(publicKey, compressed)
36011 publicKeyVerify: function (publicKey) {
36012 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36013 return secp256k1.publicKeyVerify(publicKey)
36016 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
36017 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36018 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36020 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
36021 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
36023 compressed = initCompressedValue(compressed, true)
36025 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
36028 publicKeyTweakMul: function (publicKey, tweak, compressed) {
36029 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36030 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36032 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
36033 assert.isBufferLength(tweak,
32, messages.TWEAK_LENGTH_INVALID)
36035 compressed = initCompressedValue(compressed, true)
36037 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
36040 publicKeyCombine: function (publicKeys, compressed) {
36041 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
36042 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
36043 for (var i =
0; i < publicKeys.length; ++i) {
36044 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
36045 assert.isBufferLength2(publicKeys[i],
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36048 compressed = initCompressedValue(compressed, true)
36050 return secp256k1.publicKeyCombine(publicKeys, compressed)
36053 signatureNormalize: function (signature) {
36054 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36055 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36057 return secp256k1.signatureNormalize(signature)
36060 signatureExport: function (signature) {
36061 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36062 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36064 var sigObj = secp256k1.signatureExport(signature)
36065 return der.signatureExport(sigObj)
36068 signatureImport: function (sig) {
36069 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36070 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36072 var sigObj = der.signatureImport(sig)
36073 if (sigObj) return secp256k1.signatureImport(sigObj)
36075 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
36078 signatureImportLax: function (sig) {
36079 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36080 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36082 var sigObj = der.signatureImportLax(sig)
36083 if (sigObj) return secp256k1.signatureImport(sigObj)
36085 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
36088 sign: function (message, privateKey, options) {
36089 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
36090 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
36092 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
36093 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
36097 if (options !== undefined) {
36098 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
36100 if (options.data !== undefined) {
36101 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
36102 assert.isBufferLength(options.data,
32, messages.OPTIONS_DATA_LENGTH_INVALID)
36103 data = options.data
36106 if (options.noncefn !== undefined) {
36107 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
36108 noncefn = options.noncefn
36112 return secp256k1.sign(message, privateKey, noncefn, data)
36115 verify: function (message, signature, publicKey) {
36116 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
36117 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
36119 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36120 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36122 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36123 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36125 return secp256k1.verify(message, signature, publicKey)
36128 recover: function (message, signature, recovery, compressed) {
36129 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
36130 assert.isBufferLength(message,
32, messages.MSG32_LENGTH_INVALID)
36132 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
36133 assert.isBufferLength(signature,
64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
36135 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
36136 assert.isNumberInInterval(recovery, -
1,
4, messages.RECOVERY_ID_VALUE_INVALID)
36138 compressed = initCompressedValue(compressed, true)
36140 return secp256k1.recover(message, signature, recovery, compressed)
36143 ecdh: function (publicKey, privateKey) {
36144 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36145 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36147 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
36148 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
36150 return secp256k1.ecdh(publicKey, privateKey)
36153 ecdhUnsafe: function (publicKey, privateKey, compressed) {
36154 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
36155 assert.isBufferLength2(publicKey,
33,
65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
36157 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
36158 assert.isBufferLength(privateKey,
32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
36160 compressed = initCompressedValue(compressed, true)
36162 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
36167 },{"./assert":
74,"./der":
75,"./messages.json":
78}],
78:[function(require,module,exports){
36169 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
36170 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
36171 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
36172 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
36173 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
36174 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
36175 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
36176 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
36177 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least
1 element",
36178 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
36179 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
36180 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
36181 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
36182 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
36183 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
36184 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
36185 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
36186 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
36187 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
36188 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
36189 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
36190 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
36191 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
36192 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
36193 "MSG32_TYPE_INVALID": "message should be a Buffer",
36194 "MSG32_LENGTH_INVALID": "message length is invalid",
36195 "OPTIONS_TYPE_INVALID": "options should be an Object",
36196 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
36197 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
36198 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
36199 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
36200 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -
1 and
4",
36201 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
36202 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
36205 },{}],
79:[function(require,module,exports){
36206 (function (Buffer){
36207 // prototype class for hash functions
36208 function Hash (blockSize, finalSize) {
36209 this._block = new Buffer(blockSize)
36210 this._finalSize = finalSize
36211 this._blockSize = blockSize
36216 Hash.prototype.update = function (data, enc) {
36217 if (typeof data === 'string') {
36218 enc = enc || 'utf8'
36219 data = new Buffer(data, enc)
36222 var l = this._len += data.length
36223 var s = this._s ||
0
36225 var buffer = this._block
36228 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
36231 for (var i =
0; i < ch; i++) {
36232 buffer[(s % this._blockSize) + i] = data[i + f]
36238 if ((s % this._blockSize) ===
0) {
36239 this._update(buffer)
36247 Hash.prototype.digest = function (enc) {
36248 // Suppose the length of the message M, in bits, is l
36249 var l = this._len *
8
36251 // Append the bit
1 to the end of the message
36252 this._block[this._len % this._blockSize] =
0x80
36254 // and then k zero bits, where k is the smallest non-negative solution to the equation (l +
1 + k) === finalSize mod blockSize
36255 this._block.fill(
0, this._len % this._blockSize +
1)
36257 if (l % (this._blockSize *
8)
>= this._finalSize *
8) {
36258 this._update(this._block)
36259 this._block.fill(
0)
36262 // to this append the block which is equal to the number l written in binary
36263 // TODO: handle case where l is
> Math.pow(
2,
29)
36264 this._block.writeInt32BE(l, this._blockSize -
4)
36266 var hash = this._update(this._block) || this._hash()
36268 return enc ? hash.toString(enc) : hash
36271 Hash.prototype._update = function () {
36272 throw new Error('_update must be implemented by subclass')
36275 module.exports = Hash
36277 }).call(this,require("buffer").Buffer)
36278 },{"buffer":
5}],
80:[function(require,module,exports){
36279 var exports = module.exports = function SHA (algorithm) {
36280 algorithm = algorithm.toLowerCase()
36282 var Algorithm = exports[algorithm]
36283 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
36285 return new Algorithm()
36288 exports.sha = require('./sha')
36289 exports.sha1 = require('./sha1')
36290 exports.sha224 = require('./sha224')
36291 exports.sha256 = require('./sha256')
36292 exports.sha384 = require('./sha384')
36293 exports.sha512 = require('./sha512')
36295 },{"./sha":
81,"./sha1":
82,"./sha224":
83,"./sha256":
84,"./sha384":
85,"./sha512":
86}],
81:[function(require,module,exports){
36296 (function (Buffer){
36298 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
0, as defined
36299 * in FIPS PUB
180-
1
36300 * This source code is derived from sha1.js of the same repository.
36301 * The difference between SHA-
0 and SHA-
1 is just a bitwise rotate left
36302 * operation was added.
36305 var inherits = require('inherits')
36306 var Hash = require('./hash')
36309 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
36312 var W = new Array(
80)
36318 Hash.call(this,
64,
56)
36321 inherits(Sha, Hash)
36323 Sha.prototype.init = function () {
36324 this._a =
0x67452301
36325 this._b =
0xefcdab89
36326 this._c =
0x98badcfe
36327 this._d =
0x10325476
36328 this._e =
0xc3d2e1f0
36333 function rotl5 (num) {
36334 return (num <<
5) | (num
>>> 27)
36337 function rotl30 (num) {
36338 return (num <<
30) | (num
>>> 2)
36341 function ft (s, b, c, d) {
36342 if (s ===
0) return (b & c) | ((~b) & d)
36343 if (s ===
2) return (b & c) | (b & d) | (c & d)
36347 Sha.prototype._update = function (M) {
36350 var a = this._a |
0
36351 var b = this._b |
0
36352 var c = this._c |
0
36353 var d = this._d |
0
36354 var e = this._e |
0
36356 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
36357 for (; i <
80; ++i) W[i] = W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16]
36359 for (var j =
0; j <
80; ++j) {
36361 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
36370 this._a = (a + this._a) |
0
36371 this._b = (b + this._b) |
0
36372 this._c = (c + this._c) |
0
36373 this._d = (d + this._d) |
0
36374 this._e = (e + this._e) |
0
36377 Sha.prototype._hash = function () {
36378 var H = new Buffer(
20)
36380 H.writeInt32BE(this._a |
0,
0)
36381 H.writeInt32BE(this._b |
0,
4)
36382 H.writeInt32BE(this._c |
0,
8)
36383 H.writeInt32BE(this._d |
0,
12)
36384 H.writeInt32BE(this._e |
0,
16)
36389 module.exports = Sha
36391 }).call(this,require(
"buffer").Buffer)
36392 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
82:[function(require,module,exports){
36393 (function (Buffer){
36395 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
36396 * in FIPS PUB
180-
1
36397 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
36398 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36399 * Distributed under the BSD License
36400 * See http://pajhome.org.uk/crypt/md5 for details.
36403 var inherits = require('inherits')
36404 var Hash = require('./hash')
36407 0x5a827999,
0x6ed9eba1,
0x8f1bbcdc |
0,
0xca62c1d6 |
0
36410 var W = new Array(
80)
36416 Hash.call(this,
64,
56)
36419 inherits(Sha1, Hash)
36421 Sha1.prototype.init = function () {
36422 this._a =
0x67452301
36423 this._b =
0xefcdab89
36424 this._c =
0x98badcfe
36425 this._d =
0x10325476
36426 this._e =
0xc3d2e1f0
36431 function rotl1 (num) {
36432 return (num <<
1) | (num
>>> 31)
36435 function rotl5 (num) {
36436 return (num <<
5) | (num
>>> 27)
36439 function rotl30 (num) {
36440 return (num <<
30) | (num
>>> 2)
36443 function ft (s, b, c, d) {
36444 if (s ===
0) return (b & c) | ((~b) & d)
36445 if (s ===
2) return (b & c) | (b & d) | (c & d)
36449 Sha1.prototype._update = function (M) {
36452 var a = this._a |
0
36453 var b = this._b |
0
36454 var c = this._c |
0
36455 var d = this._d |
0
36456 var e = this._e |
0
36458 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
36459 for (; i <
80; ++i) W[i] = rotl1(W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16])
36461 for (var j =
0; j <
80; ++j) {
36463 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) |
0
36472 this._a = (a + this._a) |
0
36473 this._b = (b + this._b) |
0
36474 this._c = (c + this._c) |
0
36475 this._d = (d + this._d) |
0
36476 this._e = (e + this._e) |
0
36479 Sha1.prototype._hash = function () {
36480 var H = new Buffer(
20)
36482 H.writeInt32BE(this._a |
0,
0)
36483 H.writeInt32BE(this._b |
0,
4)
36484 H.writeInt32BE(this._c |
0,
8)
36485 H.writeInt32BE(this._d |
0,
12)
36486 H.writeInt32BE(this._e |
0,
16)
36491 module.exports = Sha1
36493 }).call(this,require(
"buffer").Buffer)
36494 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
83:[function(require,module,exports){
36495 (function (Buffer){
36497 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
36499 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
36500 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36504 var inherits = require('inherits')
36505 var Sha256 = require('./sha256')
36506 var Hash = require('./hash')
36508 var W = new Array(
64)
36510 function Sha224 () {
36513 this._w = W // new Array(
64)
36515 Hash.call(this,
64,
56)
36518 inherits(Sha224, Sha256)
36520 Sha224.prototype.init = function () {
36521 this._a =
0xc1059ed8
36522 this._b =
0x367cd507
36523 this._c =
0x3070dd17
36524 this._d =
0xf70e5939
36525 this._e =
0xffc00b31
36526 this._f =
0x68581511
36527 this._g =
0x64f98fa7
36528 this._h =
0xbefa4fa4
36533 Sha224.prototype._hash = function () {
36534 var H = new Buffer(
28)
36536 H.writeInt32BE(this._a,
0)
36537 H.writeInt32BE(this._b,
4)
36538 H.writeInt32BE(this._c,
8)
36539 H.writeInt32BE(this._d,
12)
36540 H.writeInt32BE(this._e,
16)
36541 H.writeInt32BE(this._f,
20)
36542 H.writeInt32BE(this._g,
24)
36547 module.exports = Sha224
36549 }).call(this,require(
"buffer").Buffer)
36550 },{
"./hash":
79,
"./sha256":
84,
"buffer":
5,
"inherits":
63}],
84:[function(require,module,exports){
36551 (function (Buffer){
36553 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
36555 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
36556 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
36560 var inherits = require('inherits')
36561 var Hash = require('./hash')
36564 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
36565 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
36566 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
36567 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
36568 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
36569 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
36570 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
36571 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
36572 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
36573 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
36574 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
36575 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
36576 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
36577 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
36578 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
36579 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
36582 var W = new Array(
64)
36584 function Sha256 () {
36587 this._w = W // new Array(
64)
36589 Hash.call(this,
64,
56)
36592 inherits(Sha256, Hash)
36594 Sha256.prototype.init = function () {
36595 this._a =
0x6a09e667
36596 this._b =
0xbb67ae85
36597 this._c =
0x3c6ef372
36598 this._d =
0xa54ff53a
36599 this._e =
0x510e527f
36600 this._f =
0x9b05688c
36601 this._g =
0x1f83d9ab
36602 this._h =
0x5be0cd19
36607 function ch (x, y, z) {
36608 return z ^ (x & (y ^ z))
36611 function maj (x, y, z) {
36612 return (x & y) | (z & (x | y))
36615 function sigma0 (x) {
36616 return (x
>>> 2 | x <<
30) ^ (x
>>> 13 | x <<
19) ^ (x
>>> 22 | x <<
10)
36619 function sigma1 (x) {
36620 return (x
>>> 6 | x <<
26) ^ (x
>>> 11 | x <<
21) ^ (x
>>> 25 | x <<
7)
36623 function gamma0 (x) {
36624 return (x
>>> 7 | x <<
25) ^ (x
>>> 18 | x <<
14) ^ (x
>>> 3)
36627 function gamma1 (x) {
36628 return (x
>>> 17 | x <<
15) ^ (x
>>> 19 | x <<
13) ^ (x
>>> 10)
36631 Sha256.prototype._update = function (M) {
36634 var a = this._a |
0
36635 var b = this._b |
0
36636 var c = this._c |
0
36637 var d = this._d |
0
36638 var e = this._e |
0
36639 var f = this._f |
0
36640 var g = this._g |
0
36641 var h = this._h |
0
36643 for (var i =
0; i <
16; ++i) W[i] = M.readInt32BE(i *
4)
36644 for (; i <
64; ++i) W[i] = (gamma1(W[i -
2]) + W[i -
7] + gamma0(W[i -
15]) + W[i -
16]) |
0
36646 for (var j =
0; j <
64; ++j) {
36647 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) |
0
36648 var T2 = (sigma0(a) + maj(a, b, c)) |
0
36660 this._a = (a + this._a) |
0
36661 this._b = (b + this._b) |
0
36662 this._c = (c + this._c) |
0
36663 this._d = (d + this._d) |
0
36664 this._e = (e + this._e) |
0
36665 this._f = (f + this._f) |
0
36666 this._g = (g + this._g) |
0
36667 this._h = (h + this._h) |
0
36670 Sha256.prototype._hash = function () {
36671 var H = new Buffer(
32)
36673 H.writeInt32BE(this._a,
0)
36674 H.writeInt32BE(this._b,
4)
36675 H.writeInt32BE(this._c,
8)
36676 H.writeInt32BE(this._d,
12)
36677 H.writeInt32BE(this._e,
16)
36678 H.writeInt32BE(this._f,
20)
36679 H.writeInt32BE(this._g,
24)
36680 H.writeInt32BE(this._h,
28)
36685 module.exports = Sha256
36687 }).call(this,require(
"buffer").Buffer)
36688 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
85:[function(require,module,exports){
36689 (function (Buffer){
36690 var inherits = require('inherits')
36691 var SHA512 = require('./sha512')
36692 var Hash = require('./hash')
36694 var W = new Array(
160)
36696 function Sha384 () {
36700 Hash.call(this,
128,
112)
36703 inherits(Sha384, SHA512)
36705 Sha384.prototype.init = function () {
36706 this._ah =
0xcbbb9d5d
36707 this._bh =
0x629a292a
36708 this._ch =
0x9159015a
36709 this._dh =
0x152fecd8
36710 this._eh =
0x67332667
36711 this._fh =
0x8eb44a87
36712 this._gh =
0xdb0c2e0d
36713 this._hh =
0x47b5481d
36715 this._al =
0xc1059ed8
36716 this._bl =
0x367cd507
36717 this._cl =
0x3070dd17
36718 this._dl =
0xf70e5939
36719 this._el =
0xffc00b31
36720 this._fl =
0x68581511
36721 this._gl =
0x64f98fa7
36722 this._hl =
0xbefa4fa4
36727 Sha384.prototype._hash = function () {
36728 var H = new Buffer(
48)
36730 function writeInt64BE (h, l, offset) {
36731 H.writeInt32BE(h, offset)
36732 H.writeInt32BE(l, offset +
4)
36735 writeInt64BE(this._ah, this._al,
0)
36736 writeInt64BE(this._bh, this._bl,
8)
36737 writeInt64BE(this._ch, this._cl,
16)
36738 writeInt64BE(this._dh, this._dl,
24)
36739 writeInt64BE(this._eh, this._el,
32)
36740 writeInt64BE(this._fh, this._fl,
40)
36745 module.exports = Sha384
36747 }).call(this,require(
"buffer").Buffer)
36748 },{
"./hash":
79,
"./sha512":
86,
"buffer":
5,
"inherits":
63}],
86:[function(require,module,exports){
36749 (function (Buffer){
36750 var inherits = require('inherits')
36751 var Hash = require('./hash')
36754 0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
36755 0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
36756 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
36757 0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
36758 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
36759 0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
36760 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
36761 0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
36762 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
36763 0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
36764 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
36765 0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
36766 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
36767 0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
36768 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
36769 0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
36770 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
36771 0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
36772 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
36773 0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
36774 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
36775 0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
36776 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
36777 0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
36778 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
36779 0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
36780 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
36781 0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
36782 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
36783 0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
36784 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
36785 0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
36786 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
36787 0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
36788 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
36789 0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
36790 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
36791 0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
36792 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
36793 0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817
36796 var W = new Array(
160)
36798 function Sha512 () {
36802 Hash.call(this,
128,
112)
36805 inherits(Sha512, Hash)
36807 Sha512.prototype.init = function () {
36808 this._ah =
0x6a09e667
36809 this._bh =
0xbb67ae85
36810 this._ch =
0x3c6ef372
36811 this._dh =
0xa54ff53a
36812 this._eh =
0x510e527f
36813 this._fh =
0x9b05688c
36814 this._gh =
0x1f83d9ab
36815 this._hh =
0x5be0cd19
36817 this._al =
0xf3bcc908
36818 this._bl =
0x84caa73b
36819 this._cl =
0xfe94f82b
36820 this._dl =
0x5f1d36f1
36821 this._el =
0xade682d1
36822 this._fl =
0x2b3e6c1f
36823 this._gl =
0xfb41bd6b
36824 this._hl =
0x137e2179
36829 function Ch (x, y, z) {
36830 return z ^ (x & (y ^ z))
36833 function maj (x, y, z) {
36834 return (x & y) | (z & (x | y))
36837 function sigma0 (x, xl) {
36838 return (x
>>> 28 | xl <<
4) ^ (xl
>>> 2 | x <<
30) ^ (xl
>>> 7 | x <<
25)
36841 function sigma1 (x, xl) {
36842 return (x
>>> 14 | xl <<
18) ^ (x
>>> 18 | xl <<
14) ^ (xl
>>> 9 | x <<
23)
36845 function Gamma0 (x, xl) {
36846 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7)
36849 function Gamma0l (x, xl) {
36850 return (x
>>> 1 | xl <<
31) ^ (x
>>> 8 | xl <<
24) ^ (x
>>> 7 | xl <<
25)
36853 function Gamma1 (x, xl) {
36854 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6)
36857 function Gamma1l (x, xl) {
36858 return (x
>>> 19 | xl <<
13) ^ (xl
>>> 29 | x <<
3) ^ (x
>>> 6 | xl <<
26)
36861 function getCarry (a, b) {
36862 return (a
>>> 0) < (b
>>> 0) ?
1 :
0
36865 Sha512.prototype._update = function (M) {
36868 var ah = this._ah |
0
36869 var bh = this._bh |
0
36870 var ch = this._ch |
0
36871 var dh = this._dh |
0
36872 var eh = this._eh |
0
36873 var fh = this._fh |
0
36874 var gh = this._gh |
0
36875 var hh = this._hh |
0
36877 var al = this._al |
0
36878 var bl = this._bl |
0
36879 var cl = this._cl |
0
36880 var dl = this._dl |
0
36881 var el = this._el |
0
36882 var fl = this._fl |
0
36883 var gl = this._gl |
0
36884 var hl = this._hl |
0
36886 for (var i =
0; i <
32; i +=
2) {
36887 W[i] = M.readInt32BE(i *
4)
36888 W[i +
1] = M.readInt32BE(i *
4 +
4)
36890 for (; i <
160; i +=
2) {
36891 var xh = W[i -
15 *
2]
36892 var xl = W[i -
15 *
2 +
1]
36893 var gamma0 = Gamma0(xh, xl)
36894 var gamma0l = Gamma0l(xl, xh)
36897 xl = W[i -
2 *
2 +
1]
36898 var gamma1 = Gamma1(xh, xl)
36899 var gamma1l = Gamma1l(xl, xh)
36901 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
36902 var Wi7h = W[i -
7 *
2]
36903 var Wi7l = W[i -
7 *
2 +
1]
36905 var Wi16h = W[i -
16 *
2]
36906 var Wi16l = W[i -
16 *
2 +
1]
36908 var Wil = (gamma0l + Wi7l) |
0
36909 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) |
0
36910 Wil = (Wil + gamma1l) |
0
36911 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) |
0
36912 Wil = (Wil + Wi16l) |
0
36913 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) |
0
36919 for (var j =
0; j <
160; j +=
2) {
36923 var majh = maj(ah, bh, ch)
36924 var majl = maj(al, bl, cl)
36926 var sigma0h = sigma0(ah, al)
36927 var sigma0l = sigma0(al, ah)
36928 var sigma1h = sigma1(eh, el)
36929 var sigma1l = sigma1(el, eh)
36931 // t1 = h + sigma1 + ch + K[j] + W[j]
36935 var chh = Ch(eh, fh, gh)
36936 var chl = Ch(el, fl, gl)
36938 var t1l = (hl + sigma1l) |
0
36939 var t1h = (hh + sigma1h + getCarry(t1l, hl)) |
0
36940 t1l = (t1l + chl) |
0
36941 t1h = (t1h + chh + getCarry(t1l, chl)) |
0
36942 t1l = (t1l + Kil) |
0
36943 t1h = (t1h + Kih + getCarry(t1l, Kil)) |
0
36944 t1l = (t1l + Wil) |
0
36945 t1h = (t1h + Wih + getCarry(t1l, Wil)) |
0
36947 // t2 = sigma0 + maj
36948 var t2l = (sigma0l + majl) |
0
36949 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) |
0
36957 el = (dl + t1l) |
0
36958 eh = (dh + t1h + getCarry(el, dl)) |
0
36965 al = (t1l + t2l) |
0
36966 ah = (t1h + t2h + getCarry(al, t1l)) |
0
36969 this._al = (this._al + al) |
0
36970 this._bl = (this._bl + bl) |
0
36971 this._cl = (this._cl + cl) |
0
36972 this._dl = (this._dl + dl) |
0
36973 this._el = (this._el + el) |
0
36974 this._fl = (this._fl + fl) |
0
36975 this._gl = (this._gl + gl) |
0
36976 this._hl = (this._hl + hl) |
0
36978 this._ah = (this._ah + ah + getCarry(this._al, al)) |
0
36979 this._bh = (this._bh + bh + getCarry(this._bl, bl)) |
0
36980 this._ch = (this._ch + ch + getCarry(this._cl, cl)) |
0
36981 this._dh = (this._dh + dh + getCarry(this._dl, dl)) |
0
36982 this._eh = (this._eh + eh + getCarry(this._el, el)) |
0
36983 this._fh = (this._fh + fh + getCarry(this._fl, fl)) |
0
36984 this._gh = (this._gh + gh + getCarry(this._gl, gl)) |
0
36985 this._hh = (this._hh + hh + getCarry(this._hl, hl)) |
0
36988 Sha512.prototype._hash = function () {
36989 var H = new Buffer(
64)
36991 function writeInt64BE (h, l, offset) {
36992 H.writeInt32BE(h, offset)
36993 H.writeInt32BE(l, offset +
4)
36996 writeInt64BE(this._ah, this._al,
0)
36997 writeInt64BE(this._bh, this._bl,
8)
36998 writeInt64BE(this._ch, this._cl,
16)
36999 writeInt64BE(this._dh, this._dl,
24)
37000 writeInt64BE(this._eh, this._el,
32)
37001 writeInt64BE(this._fh, this._fl,
40)
37002 writeInt64BE(this._gh, this._gl,
48)
37003 writeInt64BE(this._hh, this._hl,
56)
37008 module.exports = Sha512
37010 }).call(this,require(
"buffer").Buffer)
37011 },{
"./hash":
79,
"buffer":
5,
"inherits":
63}],
87:[function(require,module,exports){
37012 var isHexPrefixed = require('is-hex-prefixed');
37015 * Removes '
0x' from a given `String` is present
37016 * @param {String} str the string value
37017 * @return {String|Optional} a string by pass if necessary
37019 module.exports = function stripHexPrefix(str) {
37020 if (typeof str !== 'string') {
37024 return isHexPrefixed(str) ? str.slice(
2) : str;
37027 },{
"is-hex-prefixed":
64}]},{},[
31])(
31)
37029 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
37033 /** @fileOverview Javascript cryptography implementation.
37035 * Crush to remove comments, shorten variable names and
37036 * generally reduce transmission size.
37038 * @author Emily Stark
37039 * @author Mike Hamburg
37040 * @author Dan Boneh
37044 /*jslint indent:
2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
37045 /*global document, window, escape, unescape, module, require, Uint32Array */
37047 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
37049 /** @namespace Symmetric ciphers. */
37052 /** @namespace Hash functions. Right now only SHA256 is implemented. */
37055 /** @namespace Key exchange functions. Right now only SRP is implemented. */
37058 /** @namespace Block cipher modes of operation. */
37061 /** @namespace Miscellaneous. HMAC and PBKDF2. */
37065 * @namespace Bit array encoders and decoders.
37068 * The members of this namespace are functions which translate between
37069 * SJCL's bitArrays and other objects (usually strings). Because it
37070 * isn't always clear which direction is encoding and which is decoding,
37071 * the method names are "fromBits" and "toBits".
37075 /** @namespace Exceptions. */
37077 /** @constructor Ciphertext is corrupt. */
37078 corrupt: function(message) {
37079 this.toString = function() { return "CORRUPT: "+this.message; };
37080 this.message = message;
37083 /** @constructor Invalid parameter. */
37084 invalid: function(message) {
37085 this.toString = function() { return "INVALID: "+this.message; };
37086 this.message = message;
37089 /** @constructor Bug or missing feature in SJCL. @constructor */
37090 bug: function(message) {
37091 this.toString = function() { return "BUG: "+this.message; };
37092 this.message = message;
37095 /** @constructor Something isn't ready. */
37096 notReady: function(message) {
37097 this.toString = function() { return "NOT READY: "+this.message; };
37098 this.message = message;
37103 if(typeof module !== 'undefined' && module.exports){
37104 module.exports = sjcl;
37106 if (typeof define === "function") {
37107 define([], function () {
37115 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
37117 * @author Emily Stark
37118 * @author Mike Hamburg
37119 * @author Dan Boneh
37122 /** @namespace Arrays of bits, encoded as arrays of Numbers.
37126 * These objects are the currency accepted by SJCL's crypto functions.
37130 * Most of our crypto primitives operate on arrays of
4-byte words internally,
37131 * but many of them can take arguments that are not a multiple of
4 bytes.
37132 * This library encodes arrays of bits (whose size need not be a multiple of
8
37133 * bits) as arrays of
32-bit words. The bits are packed, big-endian, into an
37134 * array of words,
32 bits at a time. Since the words are double-precision
37135 * floating point numbers, they fit some extra data. We use this (in a private,
37136 * possibly-changing manner) to encode the number of bits actually present
37137 * in the last word of the array.
37141 * Because bitwise ops clear this out-of-band data, these arrays can be passed
37142 * to ciphers like AES which want arrays of words.
37147 * Array slices in units of bits.
37148 * @param {bitArray} a The array to slice.
37149 * @param {Number} bstart The offset to the start of the slice, in bits.
37150 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
37151 * slice until the end of the array.
37152 * @return {bitArray} The requested slice.
37154 bitSlice: function (a, bstart, bend) {
37155 a = sjcl.bitArray._shiftRight(a.slice(bstart/
32),
32 - (bstart &
31)).slice(
1);
37156 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
37160 * Extract a number packed into a bit array.
37161 * @param {bitArray} a The array to slice.
37162 * @param {Number} bstart The offset to the start of the slice, in bits.
37163 * @param {Number} length The length of the number to extract.
37164 * @return {Number} The requested slice.
37166 extract: function(a, bstart, blength) {
37167 // FIXME: this Math.floor is not necessary at all, but for some reason
37168 // seems to suppress a bug in the Chromium JIT.
37169 var x, sh = Math.floor((-bstart-blength) &
31);
37170 if ((bstart + blength -
1 ^ bstart) & -
32) {
37171 // it crosses a boundary
37172 x = (a[bstart/
32|
0] << (
32 - sh)) ^ (a[bstart/
32+
1|
0]
>>> sh);
37174 // within a single word
37175 x = a[bstart/
32|
0]
>>> sh;
37177 return x & ((
1<
<blength) -
1);
37181 * Concatenate two bit arrays.
37182 * @param {bitArray} a1 The first array.
37183 * @param {bitArray} a2 The second array.
37184 * @return {bitArray} The concatenation of a1 and a2.
37186 concat: function (a1, a2) {
37187 if (a1.length ===
0 || a2.length ===
0) {
37188 return a1.concat(a2);
37191 var last = a1[a1.length-
1], shift = sjcl.bitArray.getPartial(last);
37192 if (shift ===
32) {
37193 return a1.concat(a2);
37195 return sjcl.bitArray._shiftRight(a2, shift, last|
0, a1.slice(
0,a1.length-
1));
37200 * Find the length of an array of bits.
37201 * @param {bitArray} a The array.
37202 * @return {Number} The length of a, in bits.
37204 bitLength: function (a) {
37205 var l = a.length, x;
37206 if (l ===
0) { return
0; }
37208 return (l-
1) *
32 + sjcl.bitArray.getPartial(x);
37212 * Truncate an array.
37213 * @param {bitArray} a The array.
37214 * @param {Number} len The length to truncate to, in bits.
37215 * @return {bitArray} A new array, truncated to len bits.
37217 clamp: function (a, len) {
37218 if (a.length *
32 < len) { return a; }
37219 a = a.slice(
0, Math.ceil(len /
32));
37222 if (l
> 0 && len) {
37223 a[l-
1] = sjcl.bitArray.partial(len, a[l-
1] &
0x80000000 >> (len-
1),
1);
37229 * Make a partial word for a bit array.
37230 * @param {Number} len The number of bits in the word.
37231 * @param {Number} x The bits.
37232 * @param {Number} [
0] _end Pass
1 if x has already been shifted to the high side.
37233 * @return {Number} The partial word.
37235 partial: function (len, x, _end) {
37236 if (len ===
32) { return x; }
37237 return (_end ? x|
0 : x << (
32-len)) + len *
0x10000000000;
37241 * Get the number of bits used by a partial word.
37242 * @param {Number} x The partial word.
37243 * @return {Number} The number of bits used by the partial word.
37245 getPartial: function (x) {
37246 return Math.round(x/
0x10000000000) ||
32;
37250 * Compare two arrays for equality in a predictable amount of time.
37251 * @param {bitArray} a The first array.
37252 * @param {bitArray} b The second array.
37253 * @return {boolean} true if a == b; false otherwise.
37255 equal: function (a, b) {
37256 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
37260 for (i=
0; i
<a.length; i++) {
37266 /** Shift an array right.
37267 * @param {bitArray} a The array to shift.
37268 * @param {Number} shift The number of bits to shift.
37269 * @param {Number} [carry=
0] A byte to carry in
37270 * @param {bitArray} [out=[]] An array to prepend to the output.
37273 _shiftRight: function (a, shift, carry, out) {
37274 var i, last2=
0, shift2;
37275 if (out === undefined) { out = []; }
37277 for (; shift
>=
32; shift -=
32) {
37282 return out.concat(a);
37285 for (i=
0; i
<a.length; i++) {
37286 out.push(carry | a[i]
>>>shift);
37287 carry = a[i] << (
32-shift);
37289 last2 = a.length ? a[a.length-
1] :
0;
37290 shift2 = sjcl.bitArray.getPartial(last2);
37291 out.push(sjcl.bitArray.partial(shift+shift2 &
31, (shift + shift2
> 32) ? carry : out.pop(),
1));
37295 /** xor a block of
4 words together.
37298 _xor4: function(x,y) {
37299 return [x[
0]^y[
0],x[
1]^y[
1],x[
2]^y[
2],x[
3]^y[
3]];
37302 /** byteswap a word array inplace.
37303 * (does not handle partial words)
37304 * @param {sjcl.bitArray} a word array
37305 * @return {sjcl.bitArray} byteswapped array
37307 byteswapM: function(a) {
37308 var i, v, m =
0xff00;
37309 for (i =
0; i < a.length; ++i) {
37311 a[i] = (v
>>> 24) | ((v
>>> 8) & m) | ((v & m) <<
8) | (v <<
24);
37318 //// codecString.js
37320 /** @fileOverview Bit array codec implementations.
37322 * @author Emily Stark
37323 * @author Mike Hamburg
37324 * @author Dan Boneh
37327 /** @namespace UTF-
8 strings */
37328 sjcl.codec.utf8String = {
37329 /** Convert from a bitArray to a UTF-
8 string. */
37330 fromBits: function (arr) {
37331 var out =
"", bl = sjcl.bitArray.bitLength(arr), i, tmp;
37332 for (i=
0; i
<bl/
8; i++) {
37336 out += String.fromCharCode(tmp
>>> 24);
37339 return decodeURIComponent(escape(out));
37342 /** Convert from a UTF-
8 string to a bitArray. */
37343 toBits: function (str) {
37344 str = unescape(encodeURIComponent(str));
37345 var out = [], i, tmp=
0;
37346 for (i=
0; i
<str.length; i++) {
37347 tmp = tmp <<
8 | str.charCodeAt(i);
37354 out.push(sjcl.bitArray.partial(
8*(i&
3), tmp));
37363 /** @fileOverview Bit array codec implementations.
37365 * @author Emily Stark
37366 * @author Mike Hamburg
37367 * @author Dan Boneh
37370 /** @namespace Hexadecimal */
37372 /** Convert from a bitArray to a hex string. */
37373 fromBits: function (arr) {
37375 for (i=
0; i
<arr.length; i++) {
37376 out += ((arr[i]|
0)+
0xF00000000000).toString(
16).substr(
4);
37378 return out.substr(
0, sjcl.bitArray.bitLength(arr)/
4);//.replace(/(.{
8})/g,
"$1 ");
37380 /** Convert from a hex string to a bitArray. */
37381 toBits: function (str) {
37382 var i, out=[], len;
37383 str = str.replace(/\s|
0x/g,
"");
37385 str = str +
"00000000";
37386 for (i=
0; i
<str.length; i+=
8) {
37387 out.push(parseInt(str.substr(i,
8),
16)^
0);
37389 return sjcl.bitArray.clamp(out, len*
4);
37396 /** @fileOverview Javascript SHA-
512 implementation.
37398 * This implementation was written for CryptoJS by Jeff Mott and adapted for
37399 * SJCL by Stefan Thomas.
37401 * CryptoJS (c)
2009–
2012 by Jeff Mott. All rights reserved.
37402 * Released with New BSD License
37404 * @author Emily Stark
37405 * @author Mike Hamburg
37406 * @author Dan Boneh
37407 * @author Jeff Mott
37408 * @author Stefan Thomas
37412 * Context for a SHA-
512 operation in progress.
37414 * @class Secure Hash Algorithm,
512 bits.
37416 sjcl.hash.sha512 = function (hash) {
37417 if (!this._key[
0]) { this._precompute(); }
37419 this._h = hash._h.slice(
0);
37420 this._buffer = hash._buffer.slice(
0);
37421 this._length = hash._length;
37428 * Hash a string or an array of words.
37430 * @param {bitArray|String} data the data to hash.
37431 * @return {bitArray} The hash value, an array of
16 big-endian words.
37433 sjcl.hash.sha512.hash = function (data) {
37434 return (new sjcl.hash.sha512()).update(data).finalize();
37437 sjcl.hash.sha512.prototype = {
37439 * The hash's block size, in bits.
37445 * Reset the hash state.
37448 reset:function () {
37449 this._h = this._init.slice(
0);
37456 * Input several words to the hash.
37457 * @param {bitArray|String} data the data to hash.
37460 update: function (data) {
37461 if (typeof data ===
"string") {
37462 data = sjcl.codec.utf8String.toBits(data);
37464 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
37466 nl = this._length = ol + sjcl.bitArray.bitLength(data);
37467 for (i =
1024+ol & -
1024; i <= nl; i+=
1024) {
37468 this._block(b.splice(
0,
32));
37474 * Complete hashing and output the hash value.
37475 * @return {bitArray} The hash value, an array of
16 big-endian words.
37477 finalize:function () {
37478 var i, b = this._buffer, h = this._h;
37480 // Round out and push the buffer
37481 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(
1,
1)]);
37483 // Round out the buffer to a multiple of
32 words, less the
4 length words.
37484 for (i = b.length +
4; i &
31; i++) {
37488 // append the length
37491 b.push(Math.floor(this._length /
0x100000000));
37492 b.push(this._length |
0);
37495 this._block(b.splice(
0,
32));
37503 * The SHA-
512 initialization vector, to be precomputed.
37509 * Least significant
24 bits of SHA512 initialization values.
37511 * Javascript only has
53 bits of precision, so we compute the
40 most
37512 * significant bits and add the remaining
24 bits as constants.
37516 _initr: [
0xbcc908,
0xcaa73b,
0x94f82b,
0x1d36f1,
0xe682d1,
0x3e6c1f,
0x41bd6b,
0x7e2179 ],
37520 [
0x6a09e667,
0xf3bcc908,
0xbb67ae85,
0x84caa73b,
0x3c6ef372,
0xfe94f82b,
0xa54ff53a,
0x5f1d36f1,
37521 0x510e527f,
0xade682d1,
0x9b05688c,
0x2b3e6c1f,
0x1f83d9ab,
0xfb41bd6b,
0x5be0cd19,
0x137e2179],
37525 * The SHA-
512 hash key, to be precomputed.
37531 * Least significant
24 bits of SHA512 key values.
37535 [
0x28ae22,
0xef65cd,
0x4d3b2f,
0x89dbbc,
0x48b538,
0x05d019,
0x194f9b,
0x6d8118,
37536 0x030242,
0x706fbe,
0xe4b28c,
0xffb4e2,
0x7b896f,
0x1696b1,
0xc71235,
0x692694,
37537 0xf14ad2,
0x4f25e3,
0x8cd5b5,
0xac9c65,
0x2b0275,
0xa6e483,
0x41fbd4,
0x1153b5,
37538 0x66dfab,
0xb43210,
0xfb213f,
0xef0ee4,
0xa88fc2,
0x0aa725,
0x03826f,
0x0e6e70,
37539 0xd22ffc,
0x26c926,
0xc42aed,
0x95b3df,
0xaf63de,
0x77b2a8,
0xedaee6,
0x82353b,
37540 0xf10364,
0x423001,
0xf89791,
0x54be30,
0xef5218,
0x65a910,
0x71202a,
0xbbd1b8,
37541 0xd2d0c8,
0x41ab53,
0x8eeb99,
0x9b48a8,
0xc95a63,
0x418acb,
0x63e373,
0xb2b8a3,
37542 0xefb2fc,
0x172f60,
0xf0ab72,
0x6439ec,
0x631e28,
0x82bde9,
0xc67915,
0x72532b,
37543 0x26619c,
0xc0c207,
0xe0eb1e,
0x6ed178,
0x176fba,
0xc898a6,
0xf90dae,
0x1c471b,
37544 0x047d84,
0xc72493,
0xc9bebc,
0x100d4c,
0x3e42b6,
0x657e2a,
0xd6faec,
0x475817],
37548 [
0x428a2f98,
0xd728ae22,
0x71374491,
0x23ef65cd,
0xb5c0fbcf,
0xec4d3b2f,
0xe9b5dba5,
0x8189dbbc,
37549 0x3956c25b,
0xf348b538,
0x59f111f1,
0xb605d019,
0x923f82a4,
0xaf194f9b,
0xab1c5ed5,
0xda6d8118,
37550 0xd807aa98,
0xa3030242,
0x12835b01,
0x45706fbe,
0x243185be,
0x4ee4b28c,
0x550c7dc3,
0xd5ffb4e2,
37551 0x72be5d74,
0xf27b896f,
0x80deb1fe,
0x3b1696b1,
0x9bdc06a7,
0x25c71235,
0xc19bf174,
0xcf692694,
37552 0xe49b69c1,
0x9ef14ad2,
0xefbe4786,
0x384f25e3,
0x0fc19dc6,
0x8b8cd5b5,
0x240ca1cc,
0x77ac9c65,
37553 0x2de92c6f,
0x592b0275,
0x4a7484aa,
0x6ea6e483,
0x5cb0a9dc,
0xbd41fbd4,
0x76f988da,
0x831153b5,
37554 0x983e5152,
0xee66dfab,
0xa831c66d,
0x2db43210,
0xb00327c8,
0x98fb213f,
0xbf597fc7,
0xbeef0ee4,
37555 0xc6e00bf3,
0x3da88fc2,
0xd5a79147,
0x930aa725,
0x06ca6351,
0xe003826f,
0x14292967,
0x0a0e6e70,
37556 0x27b70a85,
0x46d22ffc,
0x2e1b2138,
0x5c26c926,
0x4d2c6dfc,
0x5ac42aed,
0x53380d13,
0x9d95b3df,
37557 0x650a7354,
0x8baf63de,
0x766a0abb,
0x3c77b2a8,
0x81c2c92e,
0x47edaee6,
0x92722c85,
0x1482353b,
37558 0xa2bfe8a1,
0x4cf10364,
0xa81a664b,
0xbc423001,
0xc24b8b70,
0xd0f89791,
0xc76c51a3,
0x0654be30,
37559 0xd192e819,
0xd6ef5218,
0xd6990624,
0x5565a910,
0xf40e3585,
0x5771202a,
0x106aa070,
0x32bbd1b8,
37560 0x19a4c116,
0xb8d2d0c8,
0x1e376c08,
0x5141ab53,
0x2748774c,
0xdf8eeb99,
0x34b0bcb5,
0xe19b48a8,
37561 0x391c0cb3,
0xc5c95a63,
0x4ed8aa4a,
0xe3418acb,
0x5b9cca4f,
0x7763e373,
0x682e6ff3,
0xd6b2b8a3,
37562 0x748f82ee,
0x5defb2fc,
0x78a5636f,
0x43172f60,
0x84c87814,
0xa1f0ab72,
0x8cc70208,
0x1a6439ec,
37563 0x90befffa,
0x23631e28,
0xa4506ceb,
0xde82bde9,
0xbef9a3f7,
0xb2c67915,
0xc67178f2,
0xe372532b,
37564 0xca273ece,
0xea26619c,
0xd186b8c7,
0x21c0c207,
0xeada7dd6,
0xcde0eb1e,
0xf57d4f7f,
0xee6ed178,
37565 0x06f067aa,
0x72176fba,
0x0a637dc5,
0xa2c898a6,
0x113f9804,
0xbef90dae,
0x1b710b35,
0x131c471b,
37566 0x28db77f5,
0x23047d84,
0x32caab7b,
0x40c72493,
0x3c9ebe0a,
0x15c9bebc,
0x431d67c4,
0x9c100d4c,
37567 0x4cc5d4be,
0xcb3e42b6,
0x597f299c,
0xfc657e2a,
0x5fcb6fab,
0x3ad6faec,
0x6c44198c,
0x4a475817],
37571 * Function to precompute _init and _key.
37574 _precompute: function () {
37575 // XXX: This code is for precomputing the SHA256 constants, change for
37576 // SHA512 and re-enable.
37577 var i =
0, prime =
2, factor;
37579 function frac(x) { return (x-Math.floor(x)) *
0x100000000 |
0; }
37580 function frac2(x) { return (x-Math.floor(x)) *
0x10000000000 &
0xff; }
37582 outer: for (; i
<80; prime++) {
37583 for (factor=
2; factor*factor <= prime; factor++) {
37584 if (prime % factor ===
0) {
37591 this._init[i*
2] = frac(Math.pow(prime,
1/
2));
37592 this._init[i*
2+
1] = (frac2(Math.pow(prime,
1/
2)) <<
24) | this._initr[i];
37594 this._key[i*
2] = frac(Math.pow(prime,
1/
3));
37595 this._key[i*
2+
1] = (frac2(Math.pow(prime,
1/
3)) <<
24) | this._keyr[i];
37601 * Perform one cycle of SHA-
512.
37602 * @param {bitArray} words one block of words.
37605 _block:function (words) {
37607 w = words.slice(
0),
37610 h0h = h[
0], h0l = h[
1], h1h = h[
2], h1l = h[
3],
37611 h2h = h[
4], h2l = h[
5], h3h = h[
6], h3l = h[
7],
37612 h4h = h[
8], h4l = h[
9], h5h = h[
10], h5l = h[
11],
37613 h6h = h[
12], h6l = h[
13], h7h = h[
14], h7l = h[
15];
37615 // Working variables
37616 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
37617 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
37618 eh = h4h, el = h4l, fh = h5h, fl = h5l,
37619 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
37621 for (i=
0; i
<80; i++) {
37622 // load up the input word for this round
37625 wrl = w[i *
2 +
1];
37628 var gamma0xh = w[(i-
15) *
2];
37629 var gamma0xl = w[(i-
15) *
2 +
1];
37631 ((gamma0xl <<
31) | (gamma0xh
>>> 1)) ^
37632 ((gamma0xl <<
24) | (gamma0xh
>>> 8)) ^
37635 ((gamma0xh <<
31) | (gamma0xl
>>> 1)) ^
37636 ((gamma0xh <<
24) | (gamma0xl
>>> 8)) ^
37637 ((gamma0xh <<
25) | (gamma0xl
>>> 7));
37640 var gamma1xh = w[(i-
2) *
2];
37641 var gamma1xl = w[(i-
2) *
2 +
1];
37643 ((gamma1xl <<
13) | (gamma1xh
>>> 19)) ^
37644 ((gamma1xh <<
3) | (gamma1xl
>>> 29)) ^
37647 ((gamma1xh <<
13) | (gamma1xl
>>> 19)) ^
37648 ((gamma1xl <<
3) | (gamma1xh
>>> 29)) ^
37649 ((gamma1xh <<
26) | (gamma1xl
>>> 6));
37652 var wr7h = w[(i-
7) *
2];
37653 var wr7l = w[(i-
7) *
2 +
1];
37655 var wr16h = w[(i-
16) *
2];
37656 var wr16l = w[(i-
16) *
2 +
1];
37658 // W(round) = gamma0 + W(round -
7) + gamma1 + W(round -
16)
37659 wrl = gamma0l + wr7l;
37660 wrh = gamma0h + wr7h + ((wrl
>>> 0) < (gamma0l
>>> 0) ?
1 :
0);
37662 wrh += gamma1h + ((wrl
>>> 0) < (gamma1l
>>> 0) ?
1 :
0);
37664 wrh += wr16h + ((wrl
>>> 0) < (wr16l
>>> 0) ?
1 :
0);
37668 w[i*
2 +
1] = wrl |=
0;
37671 var chh = (eh & fh) ^ (~eh & gh);
37672 var chl = (el & fl) ^ (~el & gl);
37675 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
37676 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
37679 var sigma0h = ((al <<
4) | (ah
>>> 28)) ^ ((ah <<
30) | (al
>>> 2)) ^ ((ah <<
25) | (al
>>> 7));
37680 var sigma0l = ((ah <<
4) | (al
>>> 28)) ^ ((al <<
30) | (ah
>>> 2)) ^ ((al <<
25) | (ah
>>> 7));
37683 var sigma1h = ((el <<
18) | (eh
>>> 14)) ^ ((el <<
14) | (eh
>>> 18)) ^ ((eh <<
23) | (el
>>> 9));
37684 var sigma1l = ((eh <<
18) | (el
>>> 14)) ^ ((eh <<
14) | (el
>>> 18)) ^ ((el <<
23) | (eh
>>> 9));
37688 var krl = k[i*
2+
1];
37690 // t1 = h + sigma1 + ch + K(round) + W(round)
37691 var t1l = hl + sigma1l;
37692 var t1h = hh + sigma1h + ((t1l
>>> 0) < (hl
>>> 0) ?
1 :
0);
37694 t1h += chh + ((t1l
>>> 0) < (chl
>>> 0) ?
1 :
0);
37696 t1h += krh + ((t1l
>>> 0) < (krl
>>> 0) ?
1 :
0);
37697 t1l = t1l + wrl|
0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=
1054972
37698 t1h += wrh + ((t1l
>>> 0) < (wrl
>>> 0) ?
1 :
0);
37700 // t2 = sigma0 + maj
37701 var t2l = sigma0l + majl;
37702 var t2h = sigma0h + majh + ((t2l
>>> 0) < (sigma0l
>>> 0) ?
1 :
0);
37704 // Update working variables
37711 el = (dl + t1l) |
0;
37712 eh = (dh + t1h + ((el
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
37719 al = (t1l + t2l) |
0;
37720 ah = (t1h + t2h + ((al
>>> 0) < (t1l
>>> 0) ?
1 :
0)) |
0;
37723 // Intermediate hash
37724 h0l = h[
1] = (h0l + al) |
0;
37725 h[
0] = (h0h + ah + ((h0l
>>> 0) < (al
>>> 0) ?
1 :
0)) |
0;
37726 h1l = h[
3] = (h1l + bl) |
0;
37727 h[
2] = (h1h + bh + ((h1l
>>> 0) < (bl
>>> 0) ?
1 :
0)) |
0;
37728 h2l = h[
5] = (h2l + cl) |
0;
37729 h[
4] = (h2h + ch + ((h2l
>>> 0) < (cl
>>> 0) ?
1 :
0)) |
0;
37730 h3l = h[
7] = (h3l + dl) |
0;
37731 h[
6] = (h3h + dh + ((h3l
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
37732 h4l = h[
9] = (h4l + el) |
0;
37733 h[
8] = (h4h + eh + ((h4l
>>> 0) < (el
>>> 0) ?
1 :
0)) |
0;
37734 h5l = h[
11] = (h5l + fl) |
0;
37735 h[
10] = (h5h + fh + ((h5l
>>> 0) < (fl
>>> 0) ?
1 :
0)) |
0;
37736 h6l = h[
13] = (h6l + gl) |
0;
37737 h[
12] = (h6h + gh + ((h6l
>>> 0) < (gl
>>> 0) ?
1 :
0)) |
0;
37738 h7l = h[
15] = (h7l + hl) |
0;
37739 h[
14] = (h7h + hh + ((h7l
>>> 0) < (hl
>>> 0) ?
1 :
0)) |
0;
37746 /** @fileOverview HMAC implementation.
37748 * @author Emily Stark
37749 * @author Mike Hamburg
37750 * @author Dan Boneh
37753 /** HMAC with the specified hash function.
37755 * @param {bitArray} key the key for HMAC.
37756 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
37758 sjcl.misc.hmac = function (key, Hash) {
37759 this._hash = Hash = Hash || sjcl.hash.sha256;
37760 var exKey = [[],[]], i,
37761 bs = Hash.prototype.blockSize /
32;
37762 this._baseHash = [new Hash(), new Hash()];
37764 if (key.length
> bs) {
37765 key = Hash.hash(key);
37768 for (i=
0; i
<bs; i++) {
37769 exKey[
0][i] = key[i]^
0x36363636;
37770 exKey[
1][i] = key[i]^
0x5C5C5C5C;
37773 this._baseHash[
0].update(exKey[
0]);
37774 this._baseHash[
1].update(exKey[
1]);
37775 this._resultHash = new Hash(this._baseHash[
0]);
37778 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
37779 * @param {bitArray|String} data The data to mac.
37781 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
37782 if (!this._updated) {
37784 return this.digest(data);
37786 throw new sjcl.exception.invalid(
"encrypt on already updated hmac called!");
37790 sjcl.misc.hmac.prototype.reset = function () {
37791 this._resultHash = new this._hash(this._baseHash[
0]);
37792 this._updated = false;
37795 sjcl.misc.hmac.prototype.update = function (data) {
37796 this._updated = true;
37797 this._resultHash.update(data);
37800 sjcl.misc.hmac.prototype.digest = function () {
37801 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[
1]).update(w).finalize();
37812 /** @fileOverview Password-based key-derivation function, version
2.0.
37814 * @author Emily Stark
37815 * @author Mike Hamburg
37816 * @author Dan Boneh
37819 /** Password-Based Key-Derivation Function, version
2.0.
37821 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
37823 * This is the method specified by RSA's PKCS #
5 standard.
37825 * @param {bitArray|String} password The password.
37826 * @param {bitArray|String} salt The salt. Should have lots of entropy.
37827 * @param {Number} [count=
1000] The number of iterations. Higher numbers make the function slower but more secure.
37828 * @param {Number} [length] The length of the derived key. Defaults to the
37829 output size of the hash function.
37830 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
37831 * @return {bitArray} the derived key.
37833 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
37834 count = count ||
1000;
37836 if (length <
0 || count <
0) {
37837 throw sjcl.exception.invalid(
"invalid params to pbkdf2");
37840 if (typeof password ===
"string") {
37841 password = sjcl.codec.utf8String.toBits(password);
37844 if (typeof salt ===
"string") {
37845 salt = sjcl.codec.utf8String.toBits(salt);
37848 Prff = Prff || sjcl.misc.hmac;
37850 var prf = new Prff(password),
37851 u, ui, i, j, k, out = [], b = sjcl.bitArray;
37853 for (k =
1;
32 * out.length < (length ||
1); k++) {
37854 u = ui = prf.encrypt(b.concat(salt,[k]));
37856 for (i=
1; i
<count; i++) {
37857 ui = prf.encrypt(ui);
37858 for (j=
0; j
<ui.length; j++) {
37863 out = out.concat(u);
37866 if (length) { out = b.clamp(out, length); }
37874 /** @fileOverview Javascript SHA-
256 implementation.
37876 * An older version of this implementation is available in the public
37877 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
37878 * Stanford University
2008-
2010 and BSD-licensed for liability
37881 * Special thanks to Aldo Cortesi for pointing out several bugs in
37884 * @author Emily Stark
37885 * @author Mike Hamburg
37886 * @author Dan Boneh
37890 * Context for a SHA-
256 operation in progress.
37892 * @class Secure Hash Algorithm,
256 bits.
37894 sjcl.hash.sha256 = function (hash) {
37895 if (!this._key[
0]) { this._precompute(); }
37897 this._h = hash._h.slice(
0);
37898 this._buffer = hash._buffer.slice(
0);
37899 this._length = hash._length;
37906 * Hash a string or an array of words.
37908 * @param {bitArray|String} data the data to hash.
37909 * @return {bitArray} The hash value, an array of
16 big-endian words.
37911 sjcl.hash.sha256.hash = function (data) {
37912 return (new sjcl.hash.sha256()).update(data).finalize();
37915 sjcl.hash.sha256.prototype = {
37917 * The hash's block size, in bits.
37923 * Reset the hash state.
37926 reset:function () {
37927 this._h = this._init.slice(
0);
37934 * Input several words to the hash.
37935 * @param {bitArray|String} data the data to hash.
37938 update: function (data) {
37939 if (typeof data ===
"string") {
37940 data = sjcl.codec.utf8String.toBits(data);
37942 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
37944 nl = this._length = ol + sjcl.bitArray.bitLength(data);
37945 for (i =
512+ol & -
512; i <= nl; i+=
512) {
37946 this._block(b.splice(
0,
16));
37952 * Complete hashing and output the hash value.
37953 * @return {bitArray} The hash value, an array of
8 big-endian words.
37955 finalize:function () {
37956 var i, b = this._buffer, h = this._h;
37958 // Round out and push the buffer
37959 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(
1,
1)]);
37961 // Round out the buffer to a multiple of
16 words, less the
2 length words.
37962 for (i = b.length +
2; i &
15; i++) {
37966 // append the length
37967 b.push(Math.floor(this._length /
0x100000000));
37968 b.push(this._length |
0);
37971 this._block(b.splice(
0,
16));
37979 * The SHA-
256 initialization vector, to be precomputed.
37984 _init:[
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19],
37988 * The SHA-
256 hash key, to be precomputed.
37994 [
0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
37995 0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
37996 0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
37997 0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
37998 0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
37999 0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
38000 0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
38001 0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2],
38006 * Function to precompute _init and _key.
38009 _precompute: function () {
38010 var i =
0, prime =
2, factor;
38012 function frac(x) { return (x-Math.floor(x)) *
0x100000000 |
0; }
38014 outer: for (; i
<64; prime++) {
38015 for (factor=
2; factor*factor <= prime; factor++) {
38016 if (prime % factor ===
0) {
38023 this._init[i] = frac(Math.pow(prime,
1/
2));
38025 this._key[i] = frac(Math.pow(prime,
1/
3));
38031 * Perform one cycle of SHA-
256.
38032 * @param {bitArray} words one block of words.
38035 _block:function (words) {
38037 w = words.slice(
0),
38040 h0 = h[
0], h1 = h[
1], h2 = h[
2], h3 = h[
3],
38041 h4 = h[
4], h5 = h[
5], h6 = h[
6], h7 = h[
7];
38043 /* Rationale for placement of |
0 :
38044 * If a value can overflow is original
32 bits by a factor of more than a few
38045 * million (
2^
23 ish), there is a possibility that it might overflow the
38046 *
53-bit mantissa and lose precision.
38048 * To avoid this, we clamp back to
32 bits by |'ing with
0 on any value that
38049 * propagates around the loop, and on the hash state h[]. I don't believe
38050 * that the clamps on h4 and on h0 are strictly necessary, but it's close
38051 * (for h4 anyway), and better safe than sorry.
38053 * The clamps on h[] are necessary for the output to be correct even in the
38054 * common case and for short inputs.
38056 for (i=
0; i
<64; i++) {
38057 // load up the input word for this round
38061 a = w[(i+
1 ) &
15];
38062 b = w[(i+
14) &
15];
38063 tmp = w[i&
15] = ((a
>>>7 ^ a
>>>18 ^ a
>>>3 ^ a<
<25 ^ a<
<14) +
38064 (b
>>>17 ^ b
>>>19 ^ b
>>>10 ^ b<
<15 ^ b<
<13) +
38065 w[i&
15] + w[(i+
9) &
15]) |
0;
38068 tmp = (tmp + h7 + (h4
>>>6 ^ h4
>>>11 ^ h4
>>>25 ^ h4<
<26 ^ h4<
<21 ^ h4<
<7) + (h6 ^ h4&(h5^h6)) + k[i]); // |
0;
38071 h7 = h6; h6 = h5; h5 = h4;
38073 h3 = h2; h2 = h1; h1 = h0;
38075 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1
>>>2 ^ h1
>>>13 ^ h1
>>>22 ^ h1<
<30 ^ h1<
<19 ^ h1<
<10)) |
0;
38078 h[
0] = h[
0]+h0 |
0;
38079 h[
1] = h[
1]+h1 |
0;
38080 h[
2] = h[
2]+h2 |
0;
38081 h[
3] = h[
3]+h3 |
0;
38082 h[
4] = h[
4]+h4 |
0;
38083 h[
5] = h[
5]+h5 |
0;
38084 h[
6] = h[
6]+h6 |
0;
38085 h[
7] = h[
7]+h7 |
0;
38089 <script>// An extremely basic translation library
38093 // Set some html to be translated. Do this using the 'data-translate' attribute:
38095 //
<div data-translate
>Test
</div>
38096 //
<div data-translate-html
><em>keep em tag
</em></div>
38097 //
<input data-translate-placeholder
placeholder=
"Example placeholder">
38098 //
<span data-translate-title
title=
"Example title"></span>
38100 // Obtain all the phrases to be translated via js debug console:
38102 // Translate.phrasesAsJson();
38104 // Use that template to translate the phrases into another language.
38105 // Leave the key the same. Change the value to the new language.
38107 // Create a js file to load the new phrases. In this example for Spanish,
38108 // es.js will contain the following code:
38110 // Translate.loadForeignPhrases("es", {
38111 // "Test": "Test in Spanish",
38112 // "
<em>keep em tag
</em>": "<em>keep em tag in Spanish
</em>",
38113 // "Example placeholder
": "Example placeholder in Spanish
"
38114 // "Example title
": "Example title in Spanish
"
38117 // In your UI put a listener for clicking on the Spanish button:
38119 // mySpanishButton.addEventListener("click
", function() {
38120 // Translate.setLanguage("es
");
38122 // myEnglishButton.addEventListener("click
", function() {
38123 // Translate.setLanguage("en
");
38126 Translate = new (function() {
38128 var defaultLanguage = "en
";
38130 var allPhrases = {};
38131 allPhrases[defaultLanguage] = {};
38136 selector: "[data-translate]
",
38137 getKey: function() {
38138 return this.textContent.trim().replace(/\s+/g, " ");
38140 setPhrase: function(p) {
38141 this.textContent = p;
38146 selector: "[data-translate-html]
",
38147 getKey: function() {
38148 return this.innerHTML.trim().replace(/\s+/g, " ");
38150 setPhrase: function(p) {
38151 this.innerHTML = p;
38155 var placeholder = {
38156 selector: "[data-translate-placeholder]
",
38157 getKey: function() {
38158 return this.getAttribute("placeholder
").trim().replace(/\s+/g, " ");
38160 setPhrase: function(p) {
38161 this.setAttribute("placeholder
", p);
38166 selector: "[data-translate-title]
",
38167 getKey: function() {
38168 return this.getAttribute("title
").trim().replace(/\s+/g, " ");
38170 setPhrase: function(p) {
38171 this.setAttribute("title
", p);
38175 // Get elements to be translated
38176 var allEls = getEls(text)
38177 .concat(getEls(html))
38178 .concat(getEls(placeholder))
38179 .concat(getEls(title));
38181 // Provides access to phrases from a non-default language.
38182 // See phrases_en.js for example usage.
38183 this.loadForeignPhrases = function(language, phrases) {
38184 allPhrases[language] = phrases;
38187 // Displays a different language, eg "en
" or "fr
"
38188 this.setLanguage = function(language) {
38189 for (var i=0; i<allEls.length; i++) {
38190 var el = allEls[i];
38192 if (!(language in allPhrases)) {
38193 console.log(language + " not in allPhrases
");
38196 if (!(key in allPhrases[language])) {
38197 console.log(language + " does not contain phrase:
" + key);
38200 var phrase = allPhrases[language][key];
38201 el.setPhrase(phrase);
38205 // Converts the phrases to a key-pair json file.
38206 // This is a good way to export phrases for use in translation tools.
38207 this.phrasesAsJson = function(language) {
38209 for (var i=0; i<allEls.length; i++) {
38210 var el = allEls[i];
38216 for (var i=0; i<keys.length; i++) {
38218 var translated = "";
38219 if (language in allPhrases && key in allPhrases[language]) {
38220 translated = allPhrases[language][key];
38222 output[key] = translated;
38224 return JSON.stringify(output, null, 2);
38227 function getEls(nodeType) {
38228 var nodes = document.querySelectorAll(nodeType.selector);
38230 for (var i=0; i<nodes.length; i++) {
38231 var node = nodes[i];
38232 node.getKey = nodeType.getKey;
38233 node.setPhrase = nodeType.setPhrase;
38234 node.key = node.getKey();
38235 allPhrases[defaultLanguage][node.key] = node.key;
38243 <script>Translate.loadForeignPhrases("en",
38245 "
<code>m/
44'/
0'/
0'/
0</code> generates public addresses": "
<code>m/
44'/
0'/
0'/
0</code> generates public addresses",
38246 "
<code>m/
44'/
0'/
0'/
1</code> generates change addresses": "
<code>m/
44'/
0'/
0'/
1</code> generates change addresses",
38247 "
<code>m/
44'/
0'/
0'
</code> generates extended keys for import / export": "
<code>m/
44'/
0'/
0'
</code> generates extended keys for import / export",
38248 "
<code>m/
44'/
0'/
1'
</code> for the next account. Continue incrementing for more accounts (most use a single account).": "
<code>m/
44'/
0'/
1'
</code> for the next account. Continue incrementing for more accounts (most use a single account).",
38249 "Accepts binary, base
6,
6-sided dice, base
10, hexadecimal, cards": "Accepts binary, base
6,
6-sided dice, base
10, hexadecimal, cards",
38250 "Account": "Account",
38251 "Address": "Address",
38252 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
38253 "BIP32 Derivation Path": "BIP32 Derivation Path",
38254 "BIP32 Extended Key": "BIP32 Extended Key",
38255 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
38256 "BIP32 Root Key": "BIP32 Root Key",
38257 "BIP39 Mnemonic": "BIP39 Mnemonic",
38258 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
38259 "BIP39 Seed": "BIP39 Seed",
38260 "Base
10": "Base
10",
38261 "Base
6": "Base
6",
38262 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
38263 "Binary": "Binary",
38264 "Bitcoin Core": "Bitcoin Core",
38265 "Bits Per Event": "Bits Per Event",
38266 "Block Explorers": "Block Explorers",
38267 "Can be used with": "Can be used with",
38271 "Do
<strong>NOT
</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you
<i>think
</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do
<strong>NOT
</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you
<i>think
</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
38272 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
38273 "Entropy": "Entropy",
38274 "Entropy Type": "Entropy Type",
38275 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
38276 "Entropy values must be sourced from a
<a href=\
"https://en.wikipedia.org/wiki/Random_number_generation\" target=\
"_blank\">strong source of randomness
</a>.": "Entropy values must be sourced from a
<a href=\
"https://en.wikipedia.org/wiki/Random_number_generation\" target=\
"_blank\">strong source of randomness
</a>.",
38277 "Event Count": "Event Count",
38278 "External / Internal": "External / Internal",
38279 "Filtered Entropy": "Filtered Entropy",
38280 "For more info see the
<a href=\
"http://www.mycelium.com/\" target=\
"_blank\">Mycelium Wallet homepage
</a>": "For more info see the
<a href=\
"http://www.mycelium.com/\" target=\
"_blank\">Mycelium Wallet homepage
</a>",
38281 "For more info see the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\
"_blank\">BIP39 spec
</a>.": "For more info see the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\
"_blank\">BIP39 spec
</a>.",
38282 "For more info see the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\
"_blank\">BIP44 spec
</a>.": "For more info see the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\
"_blank\">BIP44 spec
</a>.",
38283 "For more info see the
<a href=\
"https://github.com/bitcoin/bitcoin/pull/8035\" target=\
"_blank\">Bitcoin Core BIP32 implementation
</a>": "For more info see the
<a href=\
"https://github.com/bitcoin/bitcoin/pull/8035\" target=\
"_blank\">Bitcoin Core BIP32 implementation
</a>",
38284 "For more info see the BIP32 spec
": "For more info see the BIP32 spec
",
38285 "From entropy length (
3 words per
32 bits)
": "From entropy length (
3 words per
32 bits)
",
38286 "Generate a random mnemonic, or enter your own below
": "Generate a random mnemonic, or enter your own below
",
38287 "Get the source code from the repository
": "Get the source code from the repository
",
38289 "Hierarchical Deterministic Wallets
": "Hierarchical Deterministic Wallets
",
38290 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.
": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.
",
38291 "In that case you might choose to use your own source of entropy.
": "In that case you might choose to use your own source of entropy.
",
38292 "In your browser, select file save-as, and save this page as a file.
": "In your browser, select file save-as, and save this page as a file.
",
38293 "Libraries
": "Libraries
",
38294 "Mnemonic Language
": "Mnemonic Language
",
38295 "Mnemonic Length
": "Mnemonic Length
",
38296 "Mnemonic code for generating deterministic keys
": "Mnemonic code for generating deterministic keys
",
38297 "More info
": "More info
",
38298 "Multi-Account Hierarchy for Deterministic Wallets
": "Multi-Account Hierarchy for Deterministic Wallets
",
38299 "Mycelium Wallet
": "Mycelium Wallet
",
38300 "Note these addreses are derived from the BIP32 Extended Key
": "Note these addreses are derived from the BIP32 Extended Key
",
38301 "Offline Usage
": "Offline Usage
",
38302 "Only enter the
<code>xpub
</code> extended key into block explorer search fields, never the
<code>xprv
</code> key.": "Only enter the
<code>xpub
</code> extended key into block explorer search fields, never the
<code>xprv
</code> key.",
38304 "Private Key": "Private Key",
38305 "Private Keys": "Private Keys",
38306 "Public Key": "Public Key",
38307 "Purpose": "Purpose",
38308 "Raw Binary": "Raw Binary",
38309 "Read more": "Read more",
38310 "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\
"_blank\">official BIP32 spec
</a>": "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\
"_blank\">official BIP32 spec
</a>",
38311 "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec
</a>": "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec
</a>",
38312 "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\
"_blank\">official BIP44 spec
</a>": "Read more at the
<a href=\
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\
"_blank\">official BIP44 spec
</a>",
38313 "See the demo at
<a href=\
"http://bip32.org/\" target=\
"_blank\">bip32.org
</a>": "See the demo at
<a href=\
"http://bip32.org/\" target=\
"_blank\">bip32.org
</a>",
38315 "Show more rows
": "Show more rows
",
38316 "Strength
": "Strength
",
38317 "Supply my own source of entropy
": "Supply my own source of entropy
",
38318 "The built in random generator can generally be trusted more than your own intuition about randomness.
": "The built in random generator can generally be trusted more than your own intuition about randomness.
",
38319 "The random mnemonic generator on this page uses a
<a href=\
"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\
"_blank\">cryptographically secure random number generator
</a>.": "The random mnemonic generator on this page uses a
<a href=\
"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\
"_blank\">cryptographically secure random number generator
</a>.",
38320 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
38321 "This project is
100% open-source code": "This project is
100% open-source code",
38322 "Toggle": "Toggle",
38323 "Total Bits": "Total Bits",
38324 "Use hardened addresses": "Use hardened addresses",
38325 "Use path
<code>m/
0'/
0'
</code> with hardened addresses.": "Use path
<code>m/
0'/
0'
</code> with hardened addresses.",
38326 "Use path
<code>m/
44'/
0'/
0'
</code>.": "Use path
<code>m/
44'/
0'/
0'
</code>.",
38327 "Use private keys at
<a href=\
"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\
"_blank\">brainwallet.org
</a>.": "Use private keys at
<a href=\
"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\
"_blank\">brainwallet.org
</a>.",
38328 "Valid entropy values include:": "Valid entropy values include:",
38329 "Warning": "Warning",
38330 "Word Count": "Word Count",
38331 "You are not a good source of entropy.": "You are not a good source of entropy.",
38332 "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).": "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).",
38333 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
38338 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38339 WORDLISTS["english"] = [
38340 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
38341 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
38342 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
38343 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
38344 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
38345 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
38346 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
38347 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
38348 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
38349 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
38350 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
38351 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
38352 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
38353 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
38354 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
38355 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
38356 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
38357 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
38358 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
38359 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
38360 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
38361 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
38362 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
38363 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
38364 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
38365 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
38366 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
38367 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
38368 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
38369 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
38370 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
38371 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
38372 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
38373 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
38374 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
38375 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
38376 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
38377 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
38378 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
38379 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
38380 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
38381 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
38382 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
38383 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
38384 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
38385 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
38386 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
38387 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
38388 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
38389 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
38390 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
38391 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
38392 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
38393 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
38394 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
38395 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
38396 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
38397 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
38398 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
38399 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
38400 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
38401 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
38402 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
38403 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
38404 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
38405 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
38406 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
38407 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
38408 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
38409 "film","filter","final","find","fine","finger","finish","fire","firm","first",
38410 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
38411 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
38412 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
38413 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
38414 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
38415 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
38416 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
38417 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
38418 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
38419 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
38420 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
38421 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
38422 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
38423 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
38424 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
38425 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
38426 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
38427 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
38428 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
38429 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
38430 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
38431 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
38432 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
38433 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
38434 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
38435 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
38436 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
38437 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
38438 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
38439 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
38440 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
38441 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
38442 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
38443 "liar","liberty","library","license","life","lift","light","like","limb","limit",
38444 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
38445 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
38446 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
38447 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
38448 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
38449 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
38450 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
38451 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
38452 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
38453 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
38454 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
38455 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
38456 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
38457 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
38458 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
38459 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
38460 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
38461 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
38462 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
38463 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
38464 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
38465 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
38466 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
38467 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
38468 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
38469 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
38470 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
38471 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
38472 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
38473 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
38474 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
38475 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
38476 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
38477 "prize","problem","process","produce","profit","program","project","promote","proof","property",
38478 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
38479 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
38480 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
38481 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
38482 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
38483 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
38484 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
38485 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
38486 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
38487 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
38488 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
38489 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
38490 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
38491 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
38492 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
38493 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
38494 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
38495 "scrub","sea","search","season","seat","second","secret","section","security","seed",
38496 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
38497 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
38498 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
38499 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
38500 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
38501 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
38502 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
38503 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
38504 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
38505 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
38506 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
38507 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
38508 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
38509 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
38510 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
38511 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
38512 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
38513 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
38514 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
38515 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
38516 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
38517 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
38518 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
38519 "thank","that","theme","then","theory","there","they","thing","this","thought",
38520 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
38521 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
38522 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
38523 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
38524 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
38525 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
38526 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
38527 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
38528 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
38529 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
38530 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
38531 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
38532 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
38533 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
38534 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
38535 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
38536 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
38537 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
38538 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
38539 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
38540 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
38541 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
38542 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
38543 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
38544 "yellow","you","young","youth","zebra","zero","zone","zoo"]
38546 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38547 WORDLISTS["japanese"] = [
38548 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
38549 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
38550 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
38551 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
38552 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
38553 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
38554 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
38555 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
38556 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
38557 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
38558 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
38559 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
38560 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
38561 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
38562 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
38563 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
38564 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
38565 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
38566 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
38567 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
38568 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
38569 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
38570 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
38571 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
38572 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
38573 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
38574 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
38575 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
38576 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
38577 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
38578 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
38579 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
38580 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
38581 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
38582 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
38583 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
38584 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
38585 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
38586 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
38587 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
38588 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
38589 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
38590 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
38591 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
38592 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
38593 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
38594 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
38595 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
38596 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
38597 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
38598 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
38599 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
38600 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
38601 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
38602 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
38603 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
38604 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
38605 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
38606 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
38607 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
38608 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
38609 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
38610 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
38611 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
38612 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
38613 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
38614 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
38615 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
38616 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
38617 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
38618 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
38619 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
38620 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
38621 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
38622 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
38623 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
38624 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
38625 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
38626 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
38627 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
38628 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
38629 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
38630 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
38631 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
38632 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
38633 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
38634 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
38635 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
38636 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
38637 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
38638 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
38639 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
38640 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
38641 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
38642 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
38643 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
38644 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
38645 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
38646 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
38647 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
38648 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
38649 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
38650 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
38651 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
38652 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
38653 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
38654 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
38655 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
38656 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
38657 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
38658 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
38659 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
38660 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
38661 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
38662 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
38663 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
38664 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
38665 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
38666 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
38667 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
38668 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
38669 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
38670 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
38671 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
38672 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
38673 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
38674 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
38675 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
38676 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
38677 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
38678 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
38679 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
38680 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
38681 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
38682 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
38683 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
38684 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
38685 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
38686 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
38687 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
38688 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
38689 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
38690 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
38691 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
38692 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
38693 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
38694 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
38695 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
38696 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
38697 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
38698 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
38699 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
38700 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
38701 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
38702 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
38703 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
38704 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
38705 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
38706 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
38707 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
38708 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
38709 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
38710 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
38711 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
38712 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
38713 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
38714 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
38715 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
38716 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
38717 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
38718 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
38719 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
38720 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
38721 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
38722 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
38723 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
38724 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
38725 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
38726 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
38727 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
38728 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
38729 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
38730 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
38731 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
38732 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
38733 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
38734 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
38735 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
38736 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
38737 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
38738 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
38739 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
38740 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
38741 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
38742 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
38743 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
38744 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
38745 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
38746 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
38747 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
38748 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
38749 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
38750 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
38751 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
38752 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
38754 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38755 WORDLISTS["spanish"] = [
38756 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
38757 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
38758 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
38759 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
38760 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
38761 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
38762 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
38763 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
38764 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
38765 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
38766 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
38767 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
38768 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
38769 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
38770 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
38771 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
38772 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
38773 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
38774 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
38775 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
38776 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
38777 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
38778 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
38779 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
38780 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
38781 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
38782 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
38783 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
38784 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
38785 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
38786 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
38787 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
38788 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
38789 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
38790 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
38791 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
38792 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
38793 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
38794 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
38795 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
38796 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
38797 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
38798 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
38799 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
38800 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
38801 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
38802 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
38803 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
38804 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
38805 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
38806 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
38807 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
38808 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
38809 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
38810 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
38811 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
38812 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
38813 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
38814 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
38815 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
38816 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
38817 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
38818 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
38819 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
38820 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
38821 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
38822 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
38823 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
38824 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
38825 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
38826 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
38827 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
38828 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
38829 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
38830 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
38831 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
38832 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
38833 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
38834 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
38835 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
38836 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
38837 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
38838 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
38839 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
38840 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
38841 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
38842 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
38843 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
38844 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
38845 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
38846 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
38847 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
38848 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
38849 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
38850 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
38851 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
38852 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
38853 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
38854 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
38855 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
38856 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
38857 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
38858 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
38859 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
38860 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
38861 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
38862 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
38863 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
38864 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
38865 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
38866 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
38867 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
38868 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
38869 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
38870 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
38871 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
38872 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
38873 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
38874 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
38875 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
38876 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
38877 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
38878 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
38879 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
38880 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
38881 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
38882 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
38883 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
38884 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
38885 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
38886 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
38887 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
38888 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
38889 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
38890 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
38891 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
38892 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
38893 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
38894 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
38895 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
38896 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
38897 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
38898 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
38899 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
38900 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
38901 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
38902 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
38903 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
38904 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
38905 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
38906 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
38907 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
38908 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
38909 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
38910 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
38911 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
38912 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
38913 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
38914 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
38915 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
38916 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
38917 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
38918 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
38919 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
38920 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
38921 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
38922 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
38923 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
38924 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
38925 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
38926 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
38927 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
38928 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
38929 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
38930 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
38931 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
38932 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
38933 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
38934 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
38935 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
38936 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
38937 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
38938 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
38939 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
38940 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
38941 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
38942 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
38943 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
38944 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
38945 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
38946 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
38947 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
38948 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
38949 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
38950 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
38951 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
38952 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
38953 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
38954 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
38955 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
38956 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
38957 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
38958 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
38959 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
38960 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
38962 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
38963 WORDLISTS["chinese_simplified"] = [
38964 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
38965 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
38966 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
38967 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
38968 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
38969 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
38970 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
38971 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
38972 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
38973 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
38974 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
38975 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
38976 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
38977 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
38978 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
38979 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
38980 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
38981 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
38982 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
38983 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
38984 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
38985 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
38986 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
38987 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
38988 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
38989 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
38990 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
38991 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
38992 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
38993 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
38994 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
38995 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
38996 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
38997 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
38998 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
38999 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
39000 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
39001 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
39002 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
39003 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
39004 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
39005 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
39006 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
39007 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
39008 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
39009 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
39010 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
39011 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
39012 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
39013 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
39014 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
39015 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
39016 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
39017 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
39018 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
39019 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
39020 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
39021 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
39022 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
39023 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
39024 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
39025 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
39026 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
39027 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
39028 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
39029 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
39030 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
39031 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
39032 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
39033 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
39034 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
39035 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
39036 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
39037 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
39038 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
39039 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
39040 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
39041 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
39042 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
39043 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
39044 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
39045 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
39046 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
39047 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
39048 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
39049 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
39050 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
39051 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
39052 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
39053 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
39054 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
39055 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
39056 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
39057 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
39058 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
39059 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
39060 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
39061 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
39062 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
39063 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
39064 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
39065 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
39066 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
39067 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
39068 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
39069 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
39070 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
39071 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
39072 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
39073 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
39074 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
39075 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
39076 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
39077 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
39078 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
39079 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
39080 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
39081 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
39082 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
39083 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
39084 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
39085 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
39086 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
39087 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
39088 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
39089 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
39090 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
39091 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
39092 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
39093 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
39094 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
39095 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
39096 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
39097 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
39098 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
39099 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
39100 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
39101 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
39102 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
39103 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
39104 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
39105 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
39106 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
39107 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
39108 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
39109 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
39110 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
39111 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
39112 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
39113 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
39114 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
39115 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
39116 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
39117 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
39118 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
39119 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
39120 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
39121 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
39122 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
39123 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
39124 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
39125 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
39126 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
39127 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
39128 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
39129 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
39130 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
39131 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
39132 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
39133 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
39134 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
39135 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
39136 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
39137 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
39138 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
39139 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
39140 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
39141 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
39142 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
39143 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
39144 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
39145 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
39146 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
39147 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
39148 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
39149 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
39150 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
39151 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
39152 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
39153 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
39154 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
39155 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
39156 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
39157 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
39158 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
39159 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
39160 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
39161 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
39162 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
39163 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
39164 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
39165 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
39166 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
39167 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
39168 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
39170 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
39171 WORDLISTS["chinese_traditional"] = [
39172 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
39173 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
39174 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
39175 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
39176 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
39177 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
39178 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
39179 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
39180 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
39181 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
39182 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
39183 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
39184 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
39185 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
39186 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
39187 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
39188 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
39189 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
39190 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
39191 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
39192 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
39193 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
39194 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
39195 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
39196 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
39197 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
39198 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
39199 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
39200 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
39201 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
39202 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
39203 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
39204 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
39205 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
39206 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
39207 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
39208 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
39209 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
39210 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
39211 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
39212 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
39213 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
39214 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
39215 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
39216 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
39217 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
39218 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
39219 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
39220 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
39221 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
39222 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
39223 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
39224 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
39225 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
39226 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
39227 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
39228 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
39229 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
39230 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
39231 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
39232 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
39233 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
39234 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
39235 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
39236 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
39237 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
39238 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
39239 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
39240 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
39241 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
39242 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
39243 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
39244 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
39245 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
39246 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
39247 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
39248 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
39249 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
39250 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
39251 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
39252 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
39253 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
39254 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
39255 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
39256 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
39257 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
39258 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
39259 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
39260 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
39261 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
39262 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
39263 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
39264 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
39265 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
39266 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
39267 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
39268 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
39269 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
39270 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
39271 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
39272 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
39273 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
39274 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
39275 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
39276 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
39277 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
39278 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
39279 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
39280 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
39281 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
39282 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
39283 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
39284 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
39285 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
39286 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
39287 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
39288 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
39289 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
39290 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
39291 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
39292 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
39293 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
39294 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
39295 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
39296 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
39297 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
39298 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
39299 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
39300 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
39301 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
39302 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
39303 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
39304 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
39305 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
39306 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
39307 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
39308 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
39309 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
39310 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
39311 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
39312 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
39313 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
39314 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
39315 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
39316 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
39317 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
39318 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
39319 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
39320 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
39321 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
39322 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
39323 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
39324 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
39325 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
39326 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
39327 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
39328 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
39329 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
39330 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
39331 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
39332 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
39333 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
39334 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
39335 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
39336 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
39337 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
39338 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
39339 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
39340 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
39341 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
39342 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
39343 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
39344 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
39345 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
39346 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
39347 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
39348 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
39349 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
39350 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
39351 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
39352 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
39353 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
39354 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
39355 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
39356 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
39357 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
39358 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
39359 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
39360 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
39361 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
39362 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
39363 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
39364 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
39365 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
39366 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
39367 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
39368 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
39369 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
39370 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
39371 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
39372 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
39373 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
39374 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
39375 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
39376 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
39378 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
39379 WORDLISTS["french"] = [
39380 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
39381 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
39382 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
39383 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
39384 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
39385 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
39386 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
39387 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
39388 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
39389 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
39390 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
39391 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
39392 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
39393 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
39394 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
39395 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
39396 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
39397 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
39398 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
39399 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
39400 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
39401 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
39402 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
39403 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
39404 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
39405 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
39406 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
39407 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
39408 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
39409 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
39410 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
39411 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
39412 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
39413 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
39414 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
39415 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
39416 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
39417 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
39418 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
39419 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
39420 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
39421 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
39422 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
39423 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
39424 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
39425 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
39426 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
39427 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
39428 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
39429 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
39430 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
39431 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
39432 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
39433 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
39434 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
39435 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
39436 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
39437 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
39438 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
39439 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
39440 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
39441 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
39442 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
39443 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
39444 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
39445 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
39446 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
39447 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
39448 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
39449 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
39450 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
39451 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
39452 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
39453 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
39454 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
39455 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
39456 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
39457 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
39458 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
39459 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
39460 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
39461 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
39462 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
39463 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
39464 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
39465 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
39466 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
39467 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
39468 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
39469 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
39470 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
39471 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
39472 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
39473 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
39474 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
39475 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
39476 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
39477 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
39478 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
39479 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
39480 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
39481 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
39482 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
39483 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
39484 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
39485 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
39486 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
39487 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
39488 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
39489 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
39490 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
39491 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
39492 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
39493 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
39494 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
39495 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
39496 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
39497 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
39498 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
39499 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
39500 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
39501 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
39502 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
39503 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
39504 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
39505 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
39506 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
39507 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
39508 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
39509 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
39510 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
39511 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
39512 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
39513 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
39514 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
39515 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
39516 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
39517 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
39518 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
39519 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
39520 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
39521 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
39522 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
39523 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
39524 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
39525 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
39526 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
39527 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
39528 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
39529 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
39530 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
39531 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
39532 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
39533 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
39534 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
39535 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
39536 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
39537 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
39538 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
39539 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
39540 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
39541 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
39542 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
39543 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
39544 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
39545 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
39546 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
39547 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
39548 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
39549 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
39550 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
39551 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
39552 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
39553 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
39554 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
39555 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
39556 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
39557 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
39558 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
39559 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
39560 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
39561 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
39562 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
39563 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
39564 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
39565 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
39566 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
39567 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
39568 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
39569 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
39570 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
39571 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
39572 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
39573 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
39574 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
39575 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
39576 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
39577 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
39578 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
39579 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
39580 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
39581 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
39582 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
39583 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
39584 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
39586 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
39587 WORDLISTS["italian"] = [
39588 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
39589 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
39590 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
39591 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
39592 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
39593 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
39594 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
39595 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
39596 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
39597 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
39598 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
39599 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
39600 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
39601 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
39602 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
39603 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
39604 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
39605 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
39606 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
39607 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
39608 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
39609 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
39610 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
39611 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
39612 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
39613 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
39614 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
39615 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
39616 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
39617 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
39618 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
39619 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
39620 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
39621 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
39622 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
39623 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
39624 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
39625 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
39626 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
39627 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
39628 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
39629 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
39630 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
39631 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
39632 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
39633 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
39634 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
39635 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
39636 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
39637 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
39638 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
39639 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
39640 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
39641 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
39642 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
39643 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
39644 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
39645 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
39646 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
39647 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
39648 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
39649 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
39650 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
39651 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
39652 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
39653 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
39654 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
39655 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
39656 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
39657 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
39658 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
39659 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
39660 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
39661 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
39662 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
39663 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
39664 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
39665 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
39666 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
39667 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
39668 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
39669 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
39670 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
39671 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
39672 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
39673 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
39674 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
39675 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
39676 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
39677 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
39678 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
39679 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
39680 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
39681 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
39682 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
39683 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
39684 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
39685 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
39686 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
39687 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
39688 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
39689 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
39690 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
39691 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
39692 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
39693 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
39694 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
39695 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
39696 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
39697 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
39698 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
39699 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
39700 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
39701 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
39702 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
39703 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
39704 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
39705 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
39706 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
39707 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
39708 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
39709 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
39710 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
39711 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
39712 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
39713 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
39714 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
39715 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
39716 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
39717 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
39718 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
39719 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
39720 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
39721 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
39722 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
39723 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
39724 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
39725 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
39726 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
39727 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
39728 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
39729 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
39730 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
39731 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
39732 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
39733 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
39734 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
39735 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
39736 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
39737 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
39738 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
39739 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
39740 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
39741 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
39742 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
39743 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
39744 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
39745 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
39746 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
39747 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
39748 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
39749 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
39750 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
39751 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
39752 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
39753 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
39754 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
39755 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
39756 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
39757 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
39758 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
39759 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
39760 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
39761 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
39762 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
39763 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
39764 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
39765 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
39766 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
39767 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
39768 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
39769 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
39770 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
39771 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
39772 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
39773 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
39774 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
39775 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
39776 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
39777 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
39778 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
39779 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
39780 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
39781 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
39782 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
39783 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
39784 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
39785 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
39786 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
39787 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
39788 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
39789 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
39790 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
39791 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
39792 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
39795 * Copyright (c)
2013 Pavol Rusnak
39797 * Permission is hereby granted, free of charge, to any person obtaining a copy of
39798 * this software and associated documentation files (the "Software"), to deal in
39799 * the Software without restriction, including without limitation the rights to
39800 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
39801 * of the Software, and to permit persons to whom the Software is furnished to do
39802 * so, subject to the following conditions:
39804 * The above copyright notice and this permission notice shall be included in all
39805 * copies or substantial portions of the Software.
39807 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39808 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39809 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
39810 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39811 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
39812 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39816 * Javascript port from python by Ian Coleman
39818 * Requires code from sjcl
39819 * https://github.com/bitwiseshiftleft/sjcl
39822 var Mnemonic = function(language) {
39824 var PBKDF2_ROUNDS =
2048;
39830 var hmacSHA512 = function(key) {
39831 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
39832 this.encrypt = function() {
39833 return hasher.encrypt.apply(hasher, arguments);
39838 wordlist = WORDLISTS[language];
39839 if (wordlist.length != RADIX) {
39840 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
39845 self.generate = function(strength) {
39846 strength = strength ||
128;
39847 var r = strength %
32;
39849 throw 'Strength should be divisible by
32, but it is not (' + r + ').';
39851 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
39852 if (!hasStrongCrypto) {
39853 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
39855 var buffer = new Uint8Array(strength /
8);
39856 var data = crypto.getRandomValues(buffer);
39857 return self.toMnemonic(data);
39860 self.toMnemonic = function(byteArray) {
39861 if (byteArray.length %
4 > 0) {
39862 throw 'Data length in bits should be divisible by
32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*
8 + ' bits).'
39865 //h = hashlib.sha256(data).hexdigest()
39866 var data = byteArrayToWordArray(byteArray);
39867 var hash = sjcl.hash.sha256.hash(data);
39868 var h = sjcl.codec.hex.fromBits(hash);
39870 // b is a binary string, eg '
00111010101100...'
39871 //b = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8) + \
39872 // bin(int(h,
16))[
2:].zfill(
256)[:len(data) *
8 /
32]
39874 // a = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8)
39875 // c = bin(int(h,
16))[
2:].zfill(
256)
39876 // d = c[:len(data) *
8 /
32]
39877 var a = byteArrayToBinaryString(byteArray);
39878 var c = zfill(hexStringToBinaryString(h),
256);
39879 var d = c.substring(
0, byteArray.length *
8 /
32);
39880 // b = line1 + line2
39884 var blen = b.length /
11;
39885 for (var i=
0; i
<blen; i++) {
39886 var idx = parseInt(b.substring(i *
11, (i +
1) *
11),
2);
39887 result.push(wordlist[idx]);
39889 return self.joinWords(result);
39892 self.check = function(mnemonic) {
39893 var mnemonic = self.splitWords(mnemonic);
39894 if (mnemonic.length ==
0 || mnemonic.length %
3 > 0) {
39897 // idx = map(lambda x: bin(self.wordlist.index(x))[
2:].zfill(
11), mnemonic)
39899 for (var i=
0; i
<mnemonic.length; i++) {
39900 var word = mnemonic[i];
39901 var wordIndex = wordlist.indexOf(word);
39902 if (wordIndex == -
1) {
39905 var binaryIndex = zfill(wordIndex.toString(
2),
11);
39906 idx.push(binaryIndex);
39908 var b = idx.join('');
39910 //d = b[:l /
33 *
32]
39912 var d = b.substring(
0, l /
33 *
32);
39913 var h = b.substring(l - l /
33, l);
39914 //nd = binascii.unhexlify(hex(int(d,
2))[
2:].rstrip('L').zfill(l /
33 *
8))
39915 var nd = binaryStringToWordArray(d);
39916 //nh = bin(int(hashlib.sha256(nd).hexdigest(),
16))[
2:].zfill(
256)[:l /
33]
39917 var ndHash = sjcl.hash.sha256.hash(nd);
39918 var ndHex = sjcl.codec.hex.fromBits(ndHash);
39919 var ndBstr = zfill(hexStringToBinaryString(ndHex),
256);
39920 var nh = ndBstr.substring(
0,l/
33);
39924 self.toSeed = function(mnemonic, passphrase) {
39925 passphrase = passphrase || '';
39926 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
39927 var mnemonicNormalized = self.normalizeString(mnemonic);
39928 passphrase = self.normalizeString(passphrase)
39929 passphrase =
"mnemonic" + passphrase;
39930 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
39931 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
39932 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS,
512, hmacSHA512);
39933 var hashHex = sjcl.codec.hex.fromBits(result);
39937 self.splitWords = function(mnemonic) {
39938 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
39941 self.joinWords = function(words) {
39942 // Set space correctly depending on the language
39943 // see https://github.com/bitcoin/bips/blob/master/bip-
0039/bip-
0039-wordlists.md#japanese
39945 if (language ==
"japanese") {
39946 space =
"\u3000"; // ideographic space
39948 return words.join(space);
39951 self.normalizeString = function(str) {
39952 if (typeof str.normalize ==
"function") {
39953 return str.normalize(
"NFKD");
39956 // TODO decide how to handle this in the future.
39957 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
39962 function byteArrayToWordArray(data) {
39964 for (var i=
0; i
<data.length/
4; i++) {
39966 v += data[i*
4 +
0] <<
8 *
3;
39967 v += data[i*
4 +
1] <<
8 *
2;
39968 v += data[i*
4 +
2] <<
8 *
1;
39969 v += data[i*
4 +
3] <<
8 *
0;
39975 function byteArrayToBinaryString(data) {
39977 for (var i=
0; i
<data.length; i++) {
39978 bin += zfill(data[i].toString(
2),
8);
39983 function hexStringToBinaryString(hexString) {
39985 for (var i=
0; i
<hexString.length; i++) {
39986 binaryString += zfill(parseInt(hexString[i],
16).toString(
2),
4);
39988 return binaryString;
39991 function binaryStringToWordArray(binary) {
39992 var aLen = binary.length /
32;
39994 for (var i=
0; i
<aLen; i++) {
39995 var valueStr = binary.substring(
0,
32);
39996 var value = parseInt(valueStr,
2);
39998 binary = binary.slice(
32);
40003 // Pad a numeric string on the left with zero digits until the given width
40005 // Note this differs to the python implementation because it does not
40006 // handle numbers starting with a sign.
40007 function zfill(source, length) {
40008 source = source.toString();
40009 while (source.length < length) {
40010 source = '
0' + source;
40020 JavaScript BigInteger library version
0.9.1
40021 http://silentmatt.com/biginteger/
40023 Copyright (c)
2009 Matthew Crumley
<email@matthewcrumley.com
>
40024 Copyright (c)
2010,
2011 by John Tobey
<John.Tobey@gmail.com
>
40025 Licensed under the MIT license.
40027 Support for arbitrary internal representation base was added by
40032 File: biginteger.js
40038 (function(exports) {
40042 An arbitrarily-large integer.
40044 <BigInteger> objects should be considered immutable. None of the "built-in"
40045 methods modify *this* or their arguments. All properties should be
40046 considered private.
40048 All the methods of
<BigInteger> instances can be called "statically". The
40049 static versions are convenient if you don't already have a
<BigInteger>
40052 As an example, these calls are equivalent.
40054 > BigInteger(
4).multiply(
5); // returns BigInteger(
20);
40055 > BigInteger.multiply(
4,
5); // returns BigInteger(
20);
40058 > var a = BigInteger.toJSValue("
0b101010"); // Not completely useless...
40061 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
40064 Constructor: BigInteger()
40065 Convert a value to a
<BigInteger>.
40067 Although
<BigInteger()
> is the constructor for
<BigInteger> objects, it is
40068 best not to call it as a constructor. If *n* is a
<BigInteger> object, it is
40069 simply returned as-is. Otherwise,
<BigInteger()
> is equivalent to
<parse>
40070 without a radix argument.
40072 > var n0 = BigInteger(); // Same as
<BigInteger.ZERO
>
40073 > var n1 = BigInteger("
123"); // Create a new
<BigInteger> with value
123
40074 > var n2 = BigInteger(
123); // Create a new
<BigInteger> with value
123
40075 > var n3 = BigInteger(n2); // Return n2, unchanged
40077 The constructor form only takes an array and a sign. *n* must be an
40078 array of numbers in little-endian order, where each digit is between
0
40079 and BigInteger.base. The second parameter sets the sign: -
1 for
40080 negative, +
1 for positive, or
0 for zero. The array is *not copied and
40081 may be modified*. If the array contains only zeros, the sign parameter
40082 is ignored and is forced to zero.
40084 > new BigInteger([
5], -
1): create a new BigInteger with value -
5
40088 n - Value to convert to a
<BigInteger>.
40092 A
<BigInteger> value.
40096 <parse>,
<BigInteger>
40098 function BigInteger(n, s, token) {
40099 if (token !== CONSTRUCT) {
40100 if (n instanceof BigInteger) {
40103 else if (typeof n === "undefined") {
40106 return BigInteger.parse(n);
40109 n = n || []; // Provide the nullary constructor for subclasses.
40110 while (n.length && !n[n.length -
1]) {
40114 this._s = n.length ? (s ||
1) :
0;
40117 BigInteger._construct = function(n, s) {
40118 return new BigInteger(n, s, CONSTRUCT);
40121 // Base-
10 speedup hacks in parse, toString, exp10 and log functions
40122 // require base to be a power of
10.
10^
7 is the largest such power
40123 // that won't cause a precision loss when digits are multiplied.
40124 var BigInteger_base =
10000000;
40125 var BigInteger_base_log10 =
7;
40127 BigInteger.base = BigInteger_base;
40128 BigInteger.base_log10 = BigInteger_base_log10;
40130 var ZERO = new BigInteger([],
0, CONSTRUCT);
40133 BigInteger.ZERO = ZERO;
40135 var ONE = new BigInteger([
1],
1, CONSTRUCT);
40138 BigInteger.ONE = ONE;
40140 var M_ONE = new BigInteger(ONE._d, -
1, CONSTRUCT);
40142 //
<BigInteger> -
1.
40143 BigInteger.M_ONE = M_ONE;
40146 // Shortcut for
<ZERO>.
40147 BigInteger._0 = ZERO;
40150 // Shortcut for
<ONE>.
40151 BigInteger._1 = ONE;
40155 Array of
<BigIntegers> from
0 to
36.
40157 These are used internally for parsing, but useful when you need a "small"
40162 <ZERO>,
<ONE>,
<_0>,
<_1>
40164 BigInteger.small = [
40167 /* Assuming BigInteger_base
> 36 */
40168 new BigInteger( [
2],
1, CONSTRUCT),
40169 new BigInteger( [
3],
1, CONSTRUCT),
40170 new BigInteger( [
4],
1, CONSTRUCT),
40171 new BigInteger( [
5],
1, CONSTRUCT),
40172 new BigInteger( [
6],
1, CONSTRUCT),
40173 new BigInteger( [
7],
1, CONSTRUCT),
40174 new BigInteger( [
8],
1, CONSTRUCT),
40175 new BigInteger( [
9],
1, CONSTRUCT),
40176 new BigInteger([
10],
1, CONSTRUCT),
40177 new BigInteger([
11],
1, CONSTRUCT),
40178 new BigInteger([
12],
1, CONSTRUCT),
40179 new BigInteger([
13],
1, CONSTRUCT),
40180 new BigInteger([
14],
1, CONSTRUCT),
40181 new BigInteger([
15],
1, CONSTRUCT),
40182 new BigInteger([
16],
1, CONSTRUCT),
40183 new BigInteger([
17],
1, CONSTRUCT),
40184 new BigInteger([
18],
1, CONSTRUCT),
40185 new BigInteger([
19],
1, CONSTRUCT),
40186 new BigInteger([
20],
1, CONSTRUCT),
40187 new BigInteger([
21],
1, CONSTRUCT),
40188 new BigInteger([
22],
1, CONSTRUCT),
40189 new BigInteger([
23],
1, CONSTRUCT),
40190 new BigInteger([
24],
1, CONSTRUCT),
40191 new BigInteger([
25],
1, CONSTRUCT),
40192 new BigInteger([
26],
1, CONSTRUCT),
40193 new BigInteger([
27],
1, CONSTRUCT),
40194 new BigInteger([
28],
1, CONSTRUCT),
40195 new BigInteger([
29],
1, CONSTRUCT),
40196 new BigInteger([
30],
1, CONSTRUCT),
40197 new BigInteger([
31],
1, CONSTRUCT),
40198 new BigInteger([
32],
1, CONSTRUCT),
40199 new BigInteger([
33],
1, CONSTRUCT),
40200 new BigInteger([
34],
1, CONSTRUCT),
40201 new BigInteger([
35],
1, CONSTRUCT),
40202 new BigInteger([
36],
1, CONSTRUCT)
40205 // Used for parsing/radix conversion
40206 BigInteger.digits =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(
"");
40210 Convert a
<BigInteger> to a string.
40212 When *base* is greater than
10, letters are upper case.
40216 base - Optional base to represent the number in (default is base
10).
40217 Must be between
2 and
36 inclusive, or an Error will be thrown.
40221 The string representation of the
<BigInteger>.
40223 BigInteger.prototype.toString = function(base) {
40224 base = +base ||
10;
40225 if (base <
2 || base
> 36) {
40226 throw new Error(
"illegal radix " + base +
".");
40228 if (this._s ===
0) {
40232 var str = this._s <
0 ?
"-" :
"";
40233 str += this._d[this._d.length -
1].toString();
40234 for (var i = this._d.length -
2; i
>=
0; i--) {
40235 var group = this._d[i].toString();
40236 while (group.length < BigInteger_base_log10) group = '
0' + group;
40242 var numerals = BigInteger.digits;
40243 base = BigInteger.small[base];
40244 var sign = this._s;
40246 var n = this.abs();
40250 while (n._s !==
0) {
40251 var divmod = n.divRem(base);
40254 // TODO: This could be changed to unshift instead of reversing at the end.
40255 // Benchmark both to compare speeds.
40256 digits.push(numerals[digit.valueOf()]);
40258 return (sign <
0 ? "-" : "") + digits.reverse().join("");
40262 // Verify strings for parsing
40263 BigInteger.radixRegex = [
40305 Parse a string into a
<BigInteger>.
40307 *base* is optional but, if provided, must be from
2 to
36 inclusive. If
40308 *base* is not provided, it will be guessed based on the leading characters
40311 - "
0x" or "
0X": *base* =
16
40312 - "
0c" or "
0C": *base* =
8
40313 - "
0b" or "
0B": *base* =
2
40314 - else: *base* =
10
40316 If no base is provided, or *base* is
10, the number can be in exponential
40317 form. For example, these are all valid:
40319 > BigInteger.parse("
1e9"); // Same as "
1000000000"
40320 > BigInteger.parse("
1.234*
10^
3"); // Same as
1234
40321 > BigInteger.parse("
56789 *
10 ** -
2"); // Same as
567
40323 If any characters fall outside the range defined by the radix, an exception
40328 s - The string to parse.
40329 base - Optional radix (default is to guess based on *s*).
40333 a
<BigInteger> instance.
40335 BigInteger.parse = function(s, base) {
40336 // Expands a number in exponential form to decimal form.
40337 // expandExponential("-
13.441*
10^
5") === "
1344100";
40338 // expandExponential("
1.12300e-1") === "
0.112300";
40339 // expandExponential(
1000000000000000000000000000000) === "
1000000000000000000000000000000";
40340 function expandExponential(str) {
40341 str = str.replace(/\s*[*xX]\s*
10\s*(\^|\*\*)\s*/, "e");
40343 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
40346 var i = n.length + c;
40347 x = (l ? n : f).length;
40348 c = ((c = Math.abs(c))
>= x ? c - x + l :
0);
40349 var z = (new Array(c +
1)).join("
0");
40351 return (s || "") + (l ? r = z + r : r += z).substr(
0, i += l ? z.length :
0) + (i < r.length ? "." + r.substr(i) : "");
40356 if (typeof base === "undefined" || +base ===
10) {
40357 s = expandExponential(s);
40361 if (typeof base === "undefined") {
40362 prefixRE = '
0[xcb]';
40364 else if (base ==
16) {
40367 else if (base ==
8) {
40370 else if (base ==
2) {
40376 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([
0-
9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
40378 var sign = parts[
1] || "+";
40379 var baseSection = parts[
2] || "";
40380 var digits = parts[
3] || "";
40382 if (typeof base === "undefined") {
40384 if (baseSection === "
0x" || baseSection === "
0X") { // Hex
40387 else if (baseSection === "
0c" || baseSection === "
0C") { // Octal
40390 else if (baseSection === "
0b" || baseSection === "
0B") { // Binary
40397 else if (base <
2 || base
> 36) {
40398 throw new Error(
"Illegal radix " + base +
".");
40403 // Check for digits outside the range
40404 if (!(BigInteger.radixRegex[base].test(digits))) {
40405 throw new Error(
"Bad digit for radix " + base);
40408 // Strip leading zeros, and convert to array
40409 digits = digits.replace(/^
0+/,
"").split(
"");
40410 if (digits.length ===
0) {
40414 // Get the sign (we know it's not zero)
40415 sign = (sign ===
"-") ? -
1 :
1;
40420 while (digits.length
>= BigInteger_base_log10) {
40421 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''),
10));
40423 d.push(parseInt(digits.join(''),
10));
40424 return new BigInteger(d, sign, CONSTRUCT);
40427 // Do the conversion
40429 base = BigInteger.small[base];
40430 var small = BigInteger.small;
40431 for (var i =
0; i < digits.length; i++) {
40432 d = d.multiply(base).add(small[parseInt(digits[i],
36)]);
40434 return new BigInteger(d._d, sign, CONSTRUCT);
40437 throw new Error("Invalid BigInteger format: " + s);
40443 Add two
<BigIntegers>.
40447 n - The number to add to *this*. Will be converted to a
<BigInteger>.
40451 The numbers added together.
40455 <subtract>,
<multiply>,
<quotient>,
<next>
40457 BigInteger.prototype.add = function(n) {
40458 if (this._s ===
0) {
40459 return BigInteger(n);
40466 if (this._s !== n._s) {
40468 return this.subtract(n);
40475 var sum = new Array(Math.max(al, bl) +
1);
40476 var size = Math.min(al, bl);
40480 for (var i =
0; i < size; i++) {
40481 digit = a[i] + b[i] + carry;
40482 sum[i] = digit % BigInteger_base;
40483 carry = (digit / BigInteger_base) |
0;
40489 for (i = size; carry && i < al; i++) {
40490 digit = a[i] + carry;
40491 sum[i] = digit % BigInteger_base;
40492 carry = (digit / BigInteger_base) |
0;
40498 for ( ; i < al; i++) {
40502 return new BigInteger(sum, this._s, CONSTRUCT);
40507 Get the additive inverse of a
<BigInteger>.
40511 A
<BigInteger> with the same magnatude, but with the opposite sign.
40517 BigInteger.prototype.negate = function() {
40518 return new BigInteger(this._d, (-this._s) |
0, CONSTRUCT);
40523 Get the absolute value of a
<BigInteger>.
40527 A
<BigInteger> with the same magnatude, but always positive (or zero).
40533 BigInteger.prototype.abs = function() {
40534 return (this._s <
0) ? this.negate() : this;
40539 Subtract two
<BigIntegers>.
40543 n - The number to subtract from *this*. Will be converted to a
<BigInteger>.
40547 The *n* subtracted from *this*.
40551 <add>,
<multiply>,
<quotient>,
<prev>
40553 BigInteger.prototype.subtract = function(n) {
40554 if (this._s ===
0) {
40555 return BigInteger(n).negate();
40562 if (this._s !== n._s) {
40564 return this.add(n);
40568 // negative - negative =
> -|a| - -|b| =
> -|a| + |b| =
> |b| - |a|
40570 m = new BigInteger(n._d,
1, CONSTRUCT);
40571 n = new BigInteger(this._d,
1, CONSTRUCT);
40574 // Both are positive =
> a - b
40575 var sign = m.compareAbs(n);
40579 else if (sign <
0) {
40591 var diff = new Array(al); // al
>= bl since a
> b
40596 for (i =
0; i < bl; i++) {
40597 digit = a[i] - borrow - b[i];
40599 digit += BigInteger_base;
40607 for (i = bl; i < al; i++) {
40608 digit = a[i] - borrow;
40610 digit += BigInteger_base;
40618 for ( ; i < al; i++) {
40622 return new BigInteger(diff, sign, CONSTRUCT);
40626 function addOne(n, sign) {
40628 var sum = a.slice();
40633 var digit = (a[i] ||
0) +
1;
40634 sum[i] = digit % BigInteger_base;
40635 if (digit <= BigInteger_base -
1) {
40641 return new BigInteger(sum, sign, CONSTRUCT);
40644 function subtractOne(n, sign) {
40646 var sum = a.slice();
40651 var digit = (a[i] ||
0) -
1;
40653 sum[i] = digit + BigInteger_base;
40662 return new BigInteger(sum, sign, CONSTRUCT);
40667 Get the next
<BigInteger> (add one).
40677 BigInteger.prototype.next = function() {
40682 return subtractOne(this, -
1);
40685 return addOne(this,
1);
40691 Get the previous
<BigInteger> (subtract one).
40701 BigInteger.prototype.prev = function() {
40706 return addOne(this, -
1);
40709 return subtractOne(this,
1);
40715 Function: compareAbs
40716 Compare the absolute value of two
<BigIntegers>.
40718 Calling
<compareAbs> is faster than calling
<abs> twice, then
<compare>.
40722 n - The number to compare to *this*. Will be converted to a
<BigInteger>.
40726 -
1,
0, or +
1 if *|this|* is less than, equal to, or greater than *|n|*.
40732 BigInteger.prototype.compareAbs = function(n) {
40737 if (!(n instanceof BigInteger)) {
40738 if (!isFinite(n)) {
40739 return(isNaN(n) ? n : -
1);
40744 if (this._s ===
0) {
40745 return (n._s !==
0) ? -
1 :
0;
40751 var l = this._d.length;
40752 var nl = n._d.length;
40762 for (var i = l-
1; i
>=
0; i--) {
40763 if (a[i] !== b[i]) {
40764 return a[i] < b[i] ? -
1 :
1;
40773 Compare two
<BigIntegers>.
40777 n - The number to compare to *this*. Will be converted to a
<BigInteger>.
40781 -
1,
0, or +
1 if *this* is less than, equal to, or greater than *n*.
40785 <compareAbs>,
<isPositive>,
<isNegative>,
<isUnit>
40787 BigInteger.prototype.compare = function(n) {
40794 if (this._s ===
0) {
40798 if (this._s === n._s) { // both positive or both negative
40799 var cmp = this.compareAbs(n);
40800 return cmp * this._s;
40809 Return true iff *this* is either
1 or -
1.
40813 true if *this* compares equal to
<BigInteger.ONE
> or
<BigInteger.M_ONE
>.
40817 <isZero>,
<isNegative>,
<isPositive>,
<compareAbs>,
<compare>,
40818 <BigInteger.ONE
>,
<BigInteger.M_ONE
>
40820 BigInteger.prototype.isUnit = function() {
40821 return this === ONE ||
40823 (this._d.length ===
1 && this._d[
0] ===
1);
40828 Multiply two
<BigIntegers>.
40832 n - The number to multiply *this* by. Will be converted to a
40837 The numbers multiplied together.
40841 <add>,
<subtract>,
<quotient>,
<square>
40843 BigInteger.prototype.multiply = function(n) {
40844 // TODO: Consider adding Karatsuba multiplication for large numbers
40845 if (this._s ===
0) {
40853 if (this.isUnit()) {
40861 return this.negate();
40866 return this.square();
40869 var r = (this._d.length
>= n._d.length);
40870 var a = (r ? this : n)._d; // a will be longer than b
40871 var b = (r ? n : this)._d;
40876 var partial = new Array(pl);
40878 for (i =
0; i < pl; i++) {
40882 for (i =
0; i < bl; i++) {
40885 var jlimit = al + i;
40887 for (var j = i; j < jlimit; j++) {
40888 digit = partial[j] + bi * a[j - i] + carry;
40889 carry = (digit / BigInteger_base) |
0;
40890 partial[j] = (digit % BigInteger_base) |
0;
40893 digit = partial[j] + carry;
40894 carry = (digit / BigInteger_base) |
0;
40895 partial[j] = digit % BigInteger_base;
40898 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
40901 // Multiply a BigInteger by a single-digit native number
40902 // Assumes that this and n are
>=
0
40903 // This is not really intended to be used outside the library itself
40904 BigInteger.prototype.multiplySingleDigit = function(n) {
40905 if (n ===
0 || this._s ===
0) {
40913 if (this._d.length ===
1) {
40914 digit = this._d[
0] * n;
40915 if (digit
>= BigInteger_base) {
40916 return new BigInteger([(digit % BigInteger_base)|
0,
40917 (digit / BigInteger_base)|
0],
1, CONSTRUCT);
40919 return new BigInteger([digit],
1, CONSTRUCT);
40923 return this.add(this);
40925 if (this.isUnit()) {
40926 return new BigInteger([n],
1, CONSTRUCT);
40933 var partial = new Array(pl);
40934 for (var i =
0; i < pl; i++) {
40939 for (var j =
0; j < al; j++) {
40940 digit = n * a[j] + carry;
40941 carry = (digit / BigInteger_base) |
0;
40942 partial[j] = (digit % BigInteger_base) |
0;
40945 partial[j] = carry;
40948 return new BigInteger(partial,
1, CONSTRUCT);
40953 Multiply a
<BigInteger> by itself.
40955 This is slightly faster than regular multiplication, since it removes the
40956 duplicated multiplcations.
40960 > this.multiply(this)
40965 BigInteger.prototype.square = function() {
40966 // Normally, squaring a
10-digit number would take
100 multiplications.
40967 // Of these
10 are unique diagonals, of the remaining
90 (
100-
10),
45 are repeated.
40968 // This procedure saves (N*(N-
1))/
2 multiplications, (e.g.,
45 of
100 multiplies).
40969 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
40971 if (this._s ===
0) {
40974 if (this.isUnit()) {
40978 var digits = this._d;
40979 var length = digits.length;
40980 var imult1 = new Array(length + length +
1);
40981 var product, carry, k;
40984 // Calculate diagonal
40985 for (i =
0; i < length; i++) {
40987 product = digits[i] * digits[i];
40988 carry = (product / BigInteger_base) |
0;
40989 imult1[k] = product % BigInteger_base;
40990 imult1[k +
1] = carry;
40993 // Calculate repeating part
40994 for (i =
0; i < length; i++) {
40997 for (var j = i +
1; j < length; j++, k++) {
40998 product = digits[j] * digits[i] *
2 + imult1[k] + carry;
40999 carry = (product / BigInteger_base) |
0;
41000 imult1[k] = product % BigInteger_base;
41003 var digit = carry + imult1[k];
41004 carry = (digit / BigInteger_base) |
0;
41005 imult1[k] = digit % BigInteger_base;
41006 imult1[k +
1] += carry;
41009 return new BigInteger(imult1,
1, CONSTRUCT);
41014 Divide two
<BigIntegers> and truncate towards zero.
41016 <quotient> throws an exception if *n* is zero.
41020 n - The number to divide *this* by. Will be converted to a
<BigInteger>.
41024 The *this* / *n*, truncated to an integer.
41028 <add>,
<subtract>,
<multiply>,
<divRem>,
<remainder>
41030 BigInteger.prototype.quotient = function(n) {
41031 return this.divRem(n)[
0];
41036 Deprecated synonym for
<quotient>.
41038 BigInteger.prototype.divide = BigInteger.prototype.quotient;
41041 Function: remainder
41042 Calculate the remainder of two
<BigIntegers>.
41044 <remainder> throws an exception if *n* is zero.
41048 n - The remainder after *this* is divided *this* by *n*. Will be
41049 converted to a
<BigInteger>.
41057 <divRem>,
<quotient>
41059 BigInteger.prototype.remainder = function(n) {
41060 return this.divRem(n)[
1];
41065 Calculate the integer quotient and remainder of two
<BigIntegers>.
41067 <divRem> throws an exception if *n* is zero.
41071 n - The number to divide *this* by. Will be converted to a
<BigInteger>.
41075 A two-element array containing the quotient and the remainder.
41079 is exactly equivalent to
41081 > [a.quotient(b), a.remainder(b)]
41083 except it is faster, because they are calculated at the same time.
41087 <quotient>,
<remainder>
41089 BigInteger.prototype.divRem = function(n) {
41092 throw new Error("Divide by zero");
41094 if (this._s ===
0) {
41095 return [ZERO, ZERO];
41097 if (n._d.length ===
1) {
41098 return this.divRemSmall(n._s * n._d[
0]);
41101 // Test for easy cases -- |n1| <= |n2|
41102 switch (this.compareAbs(n)) {
41103 case
0: // n1 == n2
41104 return [this._s === n._s ? ONE : M_ONE, ZERO];
41105 case -
1: // |n1| < |n2|
41106 return [ZERO, this];
41109 var sign = this._s * n._s;
41111 var b_digits = this._d;
41112 var b_index = b_digits.length;
41113 var digits = n._d.length;
41117 var part = new BigInteger([],
0, CONSTRUCT);
41120 part._d.unshift(b_digits[--b_index]);
41121 part = new BigInteger(part._d,
1, CONSTRUCT);
41123 if (part.compareAbs(n) <
0) {
41127 if (part._s ===
0) {
41131 var xlen = part._d.length, ylen = a._d.length;
41132 var highx = part._d[xlen-
1]*BigInteger_base + part._d[xlen-
2];
41133 var highy = a._d[ylen-
1]*BigInteger_base + a._d[ylen-
2];
41134 if (part._d.length
> a._d.length) {
41135 // The length of part._d can either match a._d length,
41136 // or exceed it by one.
41137 highx = (highx+
1)*BigInteger_base;
41139 guess = Math.ceil(highx/highy);
41142 var check = a.multiplySingleDigit(guess);
41143 if (check.compareAbs(part) <=
0) {
41153 var diff = part.subtract(check);
41154 part._d = diff._d.slice();
41157 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
41158 new BigInteger(part._d, this._s, CONSTRUCT)];
41161 // Throws an exception if n is outside of (-BigInteger.base, -
1] or
41162 // [
1, BigInteger.base). It's not necessary to call this, since the
41163 // other division functions will call it if they are able to.
41164 BigInteger.prototype.divRemSmall = function(n) {
41168 throw new Error("Divide by zero");
41171 var n_s = n <
0 ? -
1 :
1;
41172 var sign = this._s * n_s;
41175 if (n <
1 || n
>= BigInteger_base) {
41176 throw new Error("Argument out of range");
41179 if (this._s ===
0) {
41180 return [ZERO, ZERO];
41183 if (n ===
1 || n === -
1) {
41184 return [(sign ===
1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
41187 //
2 <= n < BigInteger_base
41189 // divide a single digit by a single digit
41190 if (this._d.length ===
1) {
41191 var q = new BigInteger([(this._d[
0] / n) |
0],
1, CONSTRUCT);
41192 r = new BigInteger([(this._d[
0] % n) |
0],
1, CONSTRUCT);
41202 var digits = this._d.slice();
41203 var quot = new Array(digits.length);
41209 while (digits.length) {
41210 part = part * BigInteger_base + digits[digits.length -
1];
41214 diff = BigInteger_base * diff + part;
41221 guess = (part / n) |
0;
41224 var check = n * guess;
41225 diff = part - check;
41236 r = new BigInteger([diff],
1, CONSTRUCT);
41240 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
41245 Return true iff *this* is divisible by two.
41247 Note that
<BigInteger.ZERO
> is even.
41251 true if *this* is even, false otherwise.
41257 BigInteger.prototype.isEven = function() {
41258 var digits = this._d;
41259 return this._s ===
0 || digits.length ===
0 || (digits[
0] %
2) ===
0;
41264 Return true iff *this* is not divisible by two.
41268 true if *this* is odd, false otherwise.
41274 BigInteger.prototype.isOdd = function() {
41275 return !this.isEven();
41280 Get the sign of a
<BigInteger>.
41290 <isZero>,
<isPositive>,
<isNegative>,
<compare>,
<BigInteger.ZERO
>
41292 BigInteger.prototype.sign = function() {
41297 Function: isPositive
41298 Return true iff *this*
> 0.
41302 true if *this*.compare(
<BigInteger.ZERO
>) ==
1.
41306 <sign>,
<isZero>,
<isNegative>,
<isUnit>,
<compare>,
<BigInteger.ZERO
>
41308 BigInteger.prototype.isPositive = function() {
41309 return this._s
> 0;
41313 Function: isNegative
41314 Return true iff *this* <
0.
41318 true if *this*.compare(
<BigInteger.ZERO
>) == -
1.
41322 <sign>,
<isPositive>,
<isZero>,
<isUnit>,
<compare>,
<BigInteger.ZERO
>
41324 BigInteger.prototype.isNegative = function() {
41325 return this._s <
0;
41330 Return true iff *this* ==
0.
41334 true if *this*.compare(
<BigInteger.ZERO
>) ==
0.
41338 <sign>,
<isPositive>,
<isNegative>,
<isUnit>,
<BigInteger.ZERO
>
41340 BigInteger.prototype.isZero = function() {
41341 return this._s ===
0;
41346 Multiply a
<BigInteger> by a power of
10.
41348 This is equivalent to, but faster than
41351 > return this.multiply(BigInteger("
1e" + n));
41354 > return this.quotient(BigInteger("
1e" + -n));
41359 n - The power of
10 to multiply *this* by. *n* is converted to a
41360 javascipt number and must be no greater than
<BigInteger.MAX_EXP
>
41361 (
0x7FFFFFFF), or an exception will be thrown.
41365 *this* * (
10 ** *n*), truncated to an integer if necessary.
41371 BigInteger.prototype.exp10 = function(n) {
41376 if (Math.abs(n)
> Number(MAX_EXP)) {
41377 throw new Error("exponent too large in BigInteger.exp10");
41379 // Optimization for this ==
0. This also keeps us from having to trim zeros in the positive n case
41380 if (this._s ===
0) {
41384 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
41386 for (; n
>= BigInteger_base_log10; n -= BigInteger_base_log10) {
41392 k = k.multiplySingleDigit(Math.pow(
10, n));
41393 return (this._s <
0 ? k.negate() : k);
41394 } else if (-n
>= this._d.length*BigInteger_base_log10) {
41397 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
41399 for (n = -n; n
>= BigInteger_base_log10; n -= BigInteger_base_log10) {
41402 return (n ==
0) ? k : k.divRemSmall(Math.pow(
10, n))[
0];
41408 Raise a
<BigInteger> to a power.
41410 In this implementation,
0**
0 is
1.
41414 n - The exponent to raise *this* by. *n* must be no greater than
41415 <BigInteger.MAX_EXP
> (
0x7FFFFFFF), or an exception will be thrown.
41419 *this* raised to the *nth* power.
41425 BigInteger.prototype.pow = function(n) {
41426 if (this.isUnit()) {
41431 return BigInteger(n).isOdd() ? this : this.negate();
41439 else if (n._s <
0) {
41440 if (this._s ===
0) {
41441 throw new Error(
"Divide by zero");
41447 if (this._s ===
0) {
41454 if (n.compareAbs(MAX_EXP)
> 0) {
41455 throw new Error(
"exponent too large in BigInteger.pow");
41459 var two = BigInteger.small[
2];
41461 while (n.isPositive()) {
41463 aux = aux.multiply(x);
41469 n = n.quotient(two);
41477 Raise a
<BigInteger> to a power (mod m).
41479 Because it is reduced by a modulus,
<modPow> is not limited by
41480 <BigInteger.MAX_EXP
> like
<pow>.
41484 exponent - The exponent to raise *this* by. Must be positive.
41485 modulus - The modulus.
41489 *this* ^ *exponent* (mod *modulus*).
41495 BigInteger.prototype.modPow = function(exponent, modulus) {
41499 while (exponent.isPositive()) {
41500 if (exponent.isOdd()) {
41501 result = result.multiply(base).remainder(modulus);
41504 exponent = exponent.quotient(BigInteger.small[
2]);
41505 if (exponent.isPositive()) {
41506 base = base.square().remainder(modulus);
41515 Get the natural logarithm of a
<BigInteger> as a native JavaScript number.
41517 This is equivalent to
41519 > Math.log(this.toJSValue())
41521 but handles values outside of the native number range.
41531 BigInteger.prototype.log = function() {
41533 case
0: return -Infinity;
41534 case -
1: return NaN;
41535 default: // Fall through.
41538 var l = this._d.length;
41540 if (l*BigInteger_base_log10 <
30) {
41541 return Math.log(this.valueOf());
41544 var N = Math.ceil(
30/BigInteger_base_log10);
41545 var firstNdigits = this._d.slice(l - N);
41546 return Math.log((new BigInteger(firstNdigits,
1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
41551 Convert a
<BigInteger> to a native JavaScript integer.
41553 This is called automatically by JavaScipt to convert a
<BigInteger> to a
41558 > parseInt(this.toString(),
10)
41562 <toString>,
<toJSValue>
41564 BigInteger.prototype.valueOf = function() {
41565 return parseInt(this.toString(),
10);
41569 Function: toJSValue
41570 Convert a
<BigInteger> to a native JavaScript integer.
41572 This is the same as valueOf, but more explicitly named.
41576 > parseInt(this.toString(),
10)
41580 <toString>,
<valueOf>
41582 BigInteger.prototype.toJSValue = function() {
41583 return parseInt(this.toString(),
10);
41586 var MAX_EXP = BigInteger(
0x7FFFFFFF);
41587 // Constant: MAX_EXP
41588 // The largest exponent allowed in
<pow> and
<exp10> (
0x7FFFFFFF or
2147483647).
41589 BigInteger.MAX_EXP = MAX_EXP;
41592 function makeUnary(fn) {
41593 return function(a) {
41594 return fn.call(BigInteger(a));
41598 function makeBinary(fn) {
41599 return function(a, b) {
41600 return fn.call(BigInteger(a), BigInteger(b));
41604 function makeTrinary(fn) {
41605 return function(a, b, c) {
41606 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
41612 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
41613 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
41614 var trinary = ["modPow"];
41616 for (i =
0; i < unary.length; i++) {
41618 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
41621 for (i =
0; i < binary.length; i++) {
41623 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
41626 for (i =
0; i < trinary.length; i++) {
41628 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
41631 BigInteger.exp10 = function(x, n) {
41632 return BigInteger(x).exp10(n);
41637 exports.BigInteger = BigInteger;
41638 })(typeof exports !== 'undefined' ? exports : this);
41640 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.zxcvbn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);var f=new Error("Cannot find module '"+o+"'");throw f.
code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][
0].call(l.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(require,module,exports){
41641 var adjacency_graphs;adjacency_graphs={qwerty:{
"!":[
"`~",null,null,
"2@",
"qQ",null],'
"':[";:
","[{
","]}
",null,null,"/?
"],"#
":["2@
",null,null,"4$
","eE
","wW
"],$:["3#
",null,null,"5%
","rR
","eE
"],"%
":["4$
",null,null,"6^
","tT
","rR
"],"&
":["6^
",null,null,"8*
","uU
","yY
"],"'
":[";:
","[{
","]}
",null,null,"/?
"],"(
":["8*
",null,null,"0)
","oO
","iI
"],")
":["9(
",null,null,"-_
","pP
","oO
"],"*
":["7&
",null,null,"9(
","iI
","uU
"],"+
":["-_
",null,null,null,"]}
","[{
"],",
":["mM
","kK
","lL
",".
>",null,null],"-
":["0)
",null,null,"=+
","[{
","pP
"],".
":[",<
","lL
",";:
","/?
",null,null],"/
":[".
>",";:
","'\
"",null,null,null],
0:[
"9(",null,null,
"-_",
"pP",
"oO"],
1:[
"`~",null,null,
"2@",
"qQ",null],
2:[
"1!",null,null,
"3#",
"wW",
"qQ"],
3:[
"2@",null,null,
"4$",
"eE",
"wW"],
4:[
"3#",null,null,
"5%",
"rR",
"eE"],
5:[
"4$",null,null,
"6^",
"tT",
"rR"],
6:[
"5%",null,null,
"7&",
"yY",
"tT"],
7:[
"6^",null,null,
"8*",
"uU",
"yY"],
8:[
"7&",null,null,
"9(",
"iI",
"uU"],
9:[
"8*",null,null,
"0)",
"oO",
"iI"],
":":[
"lL",
"pP",
"[{",
"'\"","/?
",".
>"],";
":["lL
","pP
","[{
","'\
"",
"/?",
".>"],
"<":[
"mM",
"kK",
"lL",
".>",null,null],
"=":[
"-_",null,null,null,
"]}",
"[{"],
">":[
",<",
"lL",
";:",
"/?",null,null],
"?":[
".>",
";:",
"'\"",null,null,null],"@
":["1!
",null,null,"3#
","wW
","qQ
"],A:[null,"qQ
","wW
","sS
","zZ
",null],B:["vV
","gG
","hH
","nN
",null,null],C:["xX
","dD
","fF
","vV
",null,null],D:["sS
","eE
","rR
","fF
","cC
","xX
"],E:["wW
","3#
","4$
","rR
","dD
","sS
"],F:["dD
","rR
","tT
","gG
","vV
","cC
"],G:["fF
","tT
","yY
","hH
","bB
","vV
"],H:["gG
","yY
","uU
","jJ
","nN
","bB
"],I:["uU
","8*
","9(
","oO
","kK
","jJ
"],J:["hH
","uU
","iI
","kK
","mM
","nN
"],K:["jJ
","iI
","oO
","lL
",",<
","mM
"],L:["kK
","oO
","pP
",";:
",".
>",",<
"],M:["nN
","jJ
","kK
",",<
",null,null],N:["bB
","hH
","jJ
","mM
",null,null],O:["iI
","9(
","0)
","pP
","lL
","kK
"],P:["oO
","0)
","-_
","[{
",";:
","lL
"],Q:[null,"1!
","2@
","wW
","aA
",null],R:["eE
","4$
","5%
","tT
","fF
","dD
"],S:["aA
","wW
","eE
","dD
","xX
","zZ
"],T:["rR
","5%
","6^
","yY
","gG
","fF
"],U:["yY
","7&
","8*
","iI
","jJ
","hH
"],V:["cC
","fF
","gG
","bB
",null,null],W:["qQ
","2@
","3#
","eE
","sS
","aA
"],X:["zZ
","sS
","dD
","cC
",null,null],Y:["tT
","6^
","7&
","uU
","hH
","gG
"],Z:[null,"aA
","sS
","xX
",null,null],"[
":["pP
","-_
","=+
","]}
","'\
"",
";:"],
"\\":[
"]}",null,null,null,null,null],
"]":[
"[{",
"=+",null,
"\\|",null,
"'\""],"^
":["5%
",null,null,"7&
","yY
","tT
"],_:["0)
",null,null,"=+
","[{
","pP
"],"`
":[null,null,null,"1!
",null,null],a:[null,"qQ
","wW
","sS
","zZ
",null],b:["vV
","gG
","hH
","nN
",null,null],c:["xX
","dD
","fF
","vV
",null,null],d:["sS
","eE
","rR
","fF
","cC
","xX
"],e:["wW
","3#
","4$
","rR
","dD
","sS
"],f:["dD
","rR
","tT
","gG
","vV
","cC
"],g:["fF
","tT
","yY
","hH
","bB
","vV
"],h:["gG
","yY
","uU
","jJ
","nN
","bB
"],i:["uU
","8*
","9(
","oO
","kK
","jJ
"],j:["hH
","uU
","iI
","kK
","mM
","nN
"],k:["jJ
","iI
","oO
","lL
",",<
","mM
"],l:["kK
","oO
","pP
",";:
",".
>",",<
"],m:["nN
","jJ
","kK
",",<
",null,null],n:["bB
","hH
","jJ
","mM
",null,null],o:["iI
","9(
","0)
","pP
","lL
","kK
"],p:["oO
","0)
","-_
","[{
",";:
","lL
"],q:[null,"1!
","2@
","wW
","aA
",null],r:["eE
","4$
","5%
","tT
","fF
","dD
"],s:["aA
","wW
","eE
","dD
","xX
","zZ
"],t:["rR
","5%
","6^
","yY
","gG
","fF
"],u:["yY
","7&
","8*
","iI
","jJ
","hH
"],v:["cC
","fF
","gG
","bB
",null,null],w:["qQ
","2@
","3#
","eE
","sS
","aA
"],x:["zZ
","sS
","dD
","cC
",null,null],y:["tT
","6^
","7&
","uU
","hH
","gG
"],z:[null,"aA
","sS
","xX
",null,null],"{
":["pP
","-_
","=+
","]}
","'\
"",
";:"],
"|":[
"]}",null,null,null,null,null],
"}":[
"[{",
"=+",null,
"\\|",null,
"'\""],"~
":[null,null,null,"1!
",null,null]},dvorak:{"!
":["`~
",null,null,"2@
","'\
"",null],'
"':[null,"1!
","2@
",",<
","aA
",null],"#
":["2@
",null,null,"4$
",".
>",",<
"],$:["3#
",null,null,"5%
","pP
",".
>"],"%
":["4$
",null,null,"6^
","yY
","pP
"],"&
":["6^
",null,null,"8*
","gG
","fF
"],"'
":[null,"1!
","2@
",",<
","aA
",null],"(
":["8*
",null,null,"0)
","rR
","cC
"],")
":["9(
",null,null,"[{
","lL
","rR
"],"*
":["7&
",null,null,"9(
","cC
","gG
"],"+
":["/?
","]}
",null,"\\|
",null,"-_
"],",
":["'\
"",
"2@",
"3#",
".>",
"oO",
"aA"],
"-":[
"sS",
"/?",
"=+",null,null,
"zZ"],
".":[
",<",
"3#",
"4$",
"pP",
"eE",
"oO"],
"/":[
"lL",
"[{",
"]}",
"=+",
"-_",
"sS"],
0:[
"9(",null,null,
"[{",
"lL",
"rR"],
1:[
"`~",null,null,
"2@",
"'\"",null],2:["1!
",null,null,"3#
",",<
","'\
""],
3:[
"2@",null,null,
"4$",
".>",
",<"],
4:[
"3#",null,null,
"5%",
"pP",
".>"],
5:[
"4$",null,null,
"6^",
"yY",
"pP"],
6:[
"5%",null,null,
"7&",
"fF",
"yY"],
7:[
"6^",null,null,
"8*",
"gG",
"fF"],
8:[
"7&",null,null,
"9(",
"cC",
"gG"],
9:[
"8*",null,null,
"0)",
"rR",
"cC"],
":":[null,
"aA",
"oO",
"qQ",null,null],
";":[null,
"aA",
"oO",
"qQ",null,null],
"<":[
"'\"","2@
","3#
",".
>","oO
","aA
"],"=
":["/?
","]}
",null,"\\|
",null,"-_
"],">":[",<
","3#
","4$
","pP
","eE
","oO
"],"?
":["lL
","[{
","]}
","=+
","-_
","sS
"],"@
":["1!
",null,null,"3#
",",<
","'\
""],A:[null,
"'\"",",<
","oO
",";:
",null],B:["xX
","dD
","hH
","mM
",null,null],C:["gG
","8*
","9(
","rR
","tT
","hH
"],D:["iI
","fF
","gG
","hH
","bB
","xX
"],E:["oO
",".
>","pP
","uU
","jJ
","qQ
"],F:["yY
","6^
","7&
","gG
","dD
","iI
"],G:["fF
","7&
","8*
","cC
","hH
","dD
"],H:["dD
","gG
","cC
","tT
","mM
","bB
"],I:["uU
","yY
","fF
","dD
","xX
","kK
"],J:["qQ
","eE
","uU
","kK
",null,null],K:["jJ
","uU
","iI
","xX
",null,null],L:["rR
","0)
","[{
","/?
","sS
","nN
"],M:["bB
","hH
","tT
","wW
",null,null],N:["tT
","rR
","lL
","sS
","vV
","wW
"],O:["aA
",",<
",".
>","eE
","qQ
",";:
"],P:[".
>","4$
","5%
","yY
","uU
","eE
"],Q:[";:
","oO
","eE
","jJ
",null,null],R:["cC
","9(
","0)
","lL
","nN
","tT
"],S:["nN
","lL
","/?
","-_
","zZ
","vV
"],T:["hH
","cC
","rR
","nN
","wW
","mM
"],U:["eE
","pP
","yY
","iI
","kK
","jJ
"],V:["wW
","nN
","sS
","zZ
",null,null],W:["mM
","tT
","nN
","vV
",null,null],X:["kK
","iI
","dD
","bB
",null,null],Y:["pP
","5%
","6^
","fF
","iI
","uU
"],Z:["vV
","sS
","-_
",null,null,null],"[
":["0)
",null,null,"]}
","/?
","lL
"],"\\
":["=+
",null,null,null,null,null],"]
":["[{
",null,null,null,"=+
","/?
"],"^
":["5%
",null,null,"7&
","fF
","yY
"],_:["sS
","/?
","=+
",null,null,"zZ
"],"`
":[null,null,null,"1!
",null,null],a:[null,"'\
"",
",<",
"oO",
";:",null],b:[
"xX",
"dD",
"hH",
"mM",null,null],c:[
"gG",
"8*",
"9(",
"rR",
"tT",
"hH"],d:[
"iI",
"fF",
"gG",
"hH",
"bB",
"xX"],e:[
"oO",
".>",
"pP",
"uU",
"jJ",
"qQ"],f:[
"yY",
"6^",
"7&",
"gG",
"dD",
"iI"],g:[
"fF",
"7&",
"8*",
"cC",
"hH",
"dD"],h:[
"dD",
"gG",
"cC",
"tT",
"mM",
"bB"],i:[
"uU",
"yY",
"fF",
"dD",
"xX",
"kK"],j:[
"qQ",
"eE",
"uU",
"kK",null,null],k:[
"jJ",
"uU",
"iI",
"xX",null,null],l:[
"rR",
"0)",
"[{",
"/?",
"sS",
"nN"],m:[
"bB",
"hH",
"tT",
"wW",null,null],n:[
"tT",
"rR",
"lL",
"sS",
"vV",
"wW"],o:[
"aA",
",<",
".>",
"eE",
"qQ",
";:"],p:[
".>",
"4$",
"5%",
"yY",
"uU",
"eE"],q:[
";:",
"oO",
"eE",
"jJ",null,null],r:[
"cC",
"9(",
"0)",
"lL",
"nN",
"tT"],s:[
"nN",
"lL",
"/?",
"-_",
"zZ",
"vV"],t:[
"hH",
"cC",
"rR",
"nN",
"wW",
"mM"],u:[
"eE",
"pP",
"yY",
"iI",
"kK",
"jJ"],v:[
"wW",
"nN",
"sS",
"zZ",null,null],w:[
"mM",
"tT",
"nN",
"vV",null,null],x:[
"kK",
"iI",
"dD",
"bB",null,null],y:[
"pP",
"5%",
"6^",
"fF",
"iI",
"uU"],z:[
"vV",
"sS",
"-_",null,null,null],
"{":[
"0)",null,null,
"]}",
"/?",
"lL"],
"|":[
"=+",null,null,null,null,null],
"}":[
"[{",null,null,null,
"=+",
"/?"],
"~":[null,null,null,
"1!",null,null]},keypad:{
"*":[
"/",null,null,null,
"-",
"+",
"9",
"8"],
"+":[
"9",
"*",
"-",null,null,null,null,
"6"],
"-":[
"*",null,null,null,null,null,
"+",
"9"],
".":[
"0",
"2",
"3",null,null,null,null,null],
"/":[null,null,null,null,
"*",
"9",
"8",
"7"],
0:[null,
"1",
"2",
"3",
".",null,null,null],
1:[null,null,
"4",
"5",
"2",
"0",null,null],
2:[
"1",
"4",
"5",
"6",
"3",
".",
"0",null],
3:[
"2",
"5",
"6",null,null,null,
".",
"0"],
4:[null,null,
"7",
"8",
"5",
"2",
"1",null],
5:[
"4",
"7",
"8",
"9",
"6",
"3",
"2",
"1"],
6:[
"5",
"8",
"9",
"+",null,null,
"3",
"2"],
7:[null,null,null,
"/",
"8",
"5",
"4",null],
8:[
"7",null,
"/",
"*",
"9",
"6",
"5",
"4"],
9:[
"8",
"/",
"*",
"-",
"+",null,
"6",
"5"]},mac_keypad:{
"*":[
"/",null,null,null,null,null,
"-",
"9"],
"+":[
"6",
"9",
"-",null,null,null,null,
"3"],
"-":[
"9",
"/",
"*",null,null,null,
"+",
"6"],
".":[
"0",
"2",
"3",null,null,null,null,null],
"/":[
"=",null,null,null,
"*",
"-",
"9",
"8"],
0:[null,
"1",
"2",
"3",
".",null,null,null],
1:[null,null,
"4",
"5",
"2",
"0",null,null],
2:[
"1",
"4",
"5",
"6",
"3",
".",
"0",null],
3:[
"2",
"5",
"6",
"+",null,null,
".",
"0"],
4:[null,null,
"7",
"8",
"5",
"2",
"1",null],
5:[
"4",
"7",
"8",
"9",
"6",
"3",
"2",
"1"],
6:[
"5",
"8",
"9",
"-",
"+",null,
"3",
"2"],
7:[null,null,null,
"=",
"8",
"5",
"4",null],
8:[
"7",null,
"=",
"/",
"9",
"6",
"5",
"4"],
9:[
"8",
"=",
"/",
"*",
"-",
"+",
"6",
"5"],
"=":[null,null,null,null,
"/",
"9",
"8",
"7"]}},module.exports=adjacency_graphs;
41643 },{}],
2:[function(require,module,exports){
41644 var feedback,scoring;scoring=require(
"./scoring"),feedback={default_feedback:{warning:
"",suggestions:[
"Use a few words, avoid common phrases",
"No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(
0===s.length)return this.default_feedback;if(e
>2)return{warning:
"",suggestions:[]};for(n=s[
0],i=s.slice(
1),t=
0,r=i.length;t
<r;t++)o=i[t],o.token.length
>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,
1===s.length),
a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.
warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=
1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=
1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or
6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return
n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=
4?"This is similar to a commonly used password":void
0:e.rank<=
10?"This is a top-
10 common password":e.rank<=
100?"This is a top-
100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void
0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length
>=
4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
41646 },{"./scoring":
6}],
3:[function(require,module,exports){
41647 var frequency_lists;frequency_lists={passwords:"
123456,password,
12345678,qwerty,
123456789,
12345,
1234,
111111,
1234567,dragon,
123123,baseball,abc123,football,monkey,letmein,shadow,master,
696969,mustang,
666666,qwertyuiop,
123321,
1234567890,pussy,superman,
654321,
1qaz2wsx,
7777777,fuckyou,qazwsx,jordan,
123qwe,
000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,
112233,zxcvbn,freedom,princess,maggie,pass,ginger,
11111111,
131313,fuck,love,cheese,
159753,summer,chelsea,dallas,biteme,matrix,yankees,
6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,
1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,
123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,
1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,
12344321,blowjob,
8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,
123abc,slipknot,qazxsw,
123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,
159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,
789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,
1q2w3e4r5t,sydney,gators,dexter,red123,
123456q,
12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,
5150,fucking,apollo,
1qazxsw2,
2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,
4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,
01012011,girls,bigboy,
102030,animal,police,online,
11223344,voyager,lifehack,
12qwaszx,fish,sniper,
315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,
789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,
007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,
147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,
12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,
111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,
147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,
010203,lizard,a123456,
123456789a,ruslan,eagle,
1232323q,scarface,qwerty12,
147852,a12345,buddha,porno,
420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,
12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,
123789,infinity,assman,bulldogs,fantasy,sucker,
1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,
123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,
123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,
9379992,hobbes,vegeta,fyfcnfcbz,
852456,picard,
159951,windows,loverboy,victory,vfrcbv,bambam,serega,
123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,
134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,
1q2w3e,
741852963,spiderman,blizzard,
123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,
147852369,caesar,
12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,
01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,
1029384756,
01011,mustang1,flash,
124578,strike,beauty,pavilion,
01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,
135790,packard,weasel,popeye,lucifer,cancer,icecream,
142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,
741852,hacker,bluebird,hawkeye,
456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,
666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,
123qweasdzxc,assassin,
246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,
753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,
31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,
314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,
1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,
01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,
1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,
12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,
1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,
321654,fktrctq,morpheus,
141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,
1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,
13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,
123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,
123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,
951753,
11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,
123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,
1234321,
14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,
911911,
112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,
1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,
555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,
7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,
01012010,
4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,
121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,
1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,
111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,
123456z,princes,slick,chaos,thunder1,sabine,
1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,
1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,
456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,
147896325,pepsi1,milano,grizzly,woody1,knights,photos,
2468,nookie,charly,rammstein,brasil,
123321123,scruffy,munchkin,poopie,
123098,kittycat,latino,walnut,
1701,thegame,viper1,
1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,
192837465,rjntyjr,ledzep,lowrider,
25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,
123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,
0.0.000,bonjour,socrates,chucky,hotboy,sprint,
0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,
12369874,ragnarok,formula,
258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,
123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,
1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,
12312312,kenwood,patrick1,dogg,cowboys1,oracle,
123zxc,nuttertools,
102938,topper,
1122334455,shemale,sleepy,gremlin,yourmom,
123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,
445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,
11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,
1234567q,kisses,magnus,camel,nopass,bosco,
987456,
6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,
12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,
456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,
753159,elvis1,aggies,blackjac,bangkok,scream,
123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,
01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,
1221,spankme,
123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,
8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,
123456aa,lick,gangbang,
223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,
1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,
906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,
789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,
666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,
123457,triton,golfball,technics,trojans,panda,laptop,rookie,
01011991,
15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,
132435,dthjybrf,
1366613,excalibu,
963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,
000007,sassy,bitch1,boots,deskjet,
12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,
123456k,peter1,daisy1,kitty1,
123456789z,crazy1,jamesbon,texas1,sexygirl,
362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,
01011985,thekid,aikido,gofish,mayday,
1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,
73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,
1225,charlton,fortuna,
01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,
4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,
128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,
321654987,billy1,mojo,
01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,
789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,
01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,
1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,
321123,pepper1,katie1,chickens,tyler1,corrado,twisted,
100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,
1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,
150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,
1qa2ws3ed,
13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,
50cent,
0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,
222333,jerkoff,
78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,
18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,
963852741,amsterda,
321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,
332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,
420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,
123123q,snoopdog,critter,theboss,ding,
162534,splinter,kinky,cyclops,jayhawk,
456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,
000001,
789987,floppy,cunts,megapass,
1000,pornos,usmc,kickass,great1,quattro,
135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,
123789456,dallas1,translator,
122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,
12131415,facial,
7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,
10203,deepthroat,malina,
200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,
123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,
01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,
0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,
2128506,chrono,compute,spawn,
01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,
778899,quantum,pisces,boomboom,gunnar,
1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,
1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,
555777,mouse1,assholes,babyblue,
123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,
12345z,
112211,hotred,deejay,hotpussy,
192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,
01011984,idontknow,vfvfgfgf,
1357,aleksey,builder,
01011987,zerocool,godfather,mylife,donuts,allmine,redfish,
777888,sascha,nitram,bounce,
333666,smokes,
1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,
123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,
02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,
03082006,mazafaka,meathead,
4121,ou8122,barefoot,
12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,
336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,
10203040,meowmeow,
1012,boricua,prophet,sauron,
12qwas,reefer,andromeda,crystal1,joker1,
90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,
01011910,lover1,love1,
123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,
1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,
12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,
12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,
1007,
10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,
123451,banane,dbrnjh,ripken,
12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,
784512,
01011992,megatron,illusion,edward1,napster,
11223,squash,roadking,woohoo,
19411945,hoosiers,
01091989,tracker,bagira,midway,leavemealone,br549,
14725836,
235689,menace,rachel1,feng,laser,stoned,realmadrid,
787898,balloons,tinkerbell,
5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,
02071982,jaybird,kashmir,
12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,
135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,
01011975,sancho,ludmila,medusa,mortimer,
123456654321,roadrunn,just4me,stalin,
01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,
7779311,missy1,michae,beautifu,gator1,
1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,
1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,
02021987,
1pussy,redline,lust,jktymrf,
02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,
02081988,eureka,bitchass,
147369,banner,lakota,
123321a,mustafa,preacher,hotbox,
02041986,z1x2c3v4,playstation,
01011977,claymore,electra,checkers,zheng,qing,armagedon,
02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,
02091987,silverad,electron,
12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,
12011987,milkman,
02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,
02031986,marine1,
02021988,pothead,
123456qw,skate,
1369,peng,antoni,neng,miao,bcfields,
1492,marika,
794613,musashi,tulips,nong,piao,chai,ruan,southpar,
02061985,nude,mandarin,
654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,
1020,
1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,
1234567890a,mango,jackson5,ipswich,iamgod,
02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,
111333,iscool,
02091986,petrov,fuzzy,zhou,
1357924680,mollydog,deng,
02021986,
1236987,pheonix,zhun,ghblehjr,othello,starcraf,
000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,
1qaz2ws,luan,sveta,
12qw12,akira,chuai,
369963,cheech,beatle,pickup,paloma,
01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,
02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,
02081987,
02061986,
123qq123,zappa,fergie,
7ugd
5hip
2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,
01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,
02021984,cameron1,artemka,reng,
02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,
02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,
01020304,deutsch,gabriel1,
123455,oceans,
987456321,binladen,latinas,a12345678,speedo,buttercu,
02081989,
21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,
2580,stonecold,snuffy,
01011999,
02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,
02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,
02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,
9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,
50spanks,sexyboy,dogshit,
02021983,shuo,kakashka,syzygy,
111111a,yeahbaby,qiang,netscape,fulham,
120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,
147963,eastwood,microphone,monkey12,
1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,
1234567891,
02021989,
02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,
02051983,hondas,
9562876,trainer,jones1,smashing,liao,
159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,
02031987,kuai,kissmyass,sahara,radiohea,
1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,
02011988,
02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,
1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,
1a2s3d4f,
1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,
02041982,darklord,cang,
02041988,
02041987,tripod,magician,jelly,telephon,
15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,
02011980,pang,tiger123,
2469,mason1,orient,
01011979,zong,cdtnbr,maksimka,
1011,bushido,taxman,giorgio,sphinx,kazantip,
02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,
010180,pluto,zhjckfd,
12365,classics,crusher,mordor,hooligan,strawberry,
02081985,scrabble,hawaii50,
1224,wg8e3wjf,cthtuf,premium,arrow,
123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,
1211,bounty,niang,
02071984,goat,killer12,sweetnes,porno1,masamune,
426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,
02021982,dynamite,
655321,master12,
123465,lollypop,stepan,
1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,
12365478,nextel,violin,volcom,
998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,
02061988,tripper,dabears,haggis,merlin1,
02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,
147741,
258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,
4417,mick,shui,q1q2q3,wingman,
69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,
02081982,broker,zalupa,mihail,vfibyf,dogger,
7007,paddle,varvara,schalke,
1z2x3c,presiden,yankees2,tuning,poopy,
02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,
02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,
02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,
02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,
225588,
369258,krusty,snappy,asdf12,electro,
111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,
1234560,carnage,guyver,boxers,kittens,zeng,
1000000,qwerty11,toaster,cramps,yugioh,
02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,
01081989,dogboy,
02091983,
369852,softail,mypassword,prowler,bigboss,
1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,
02101987,gameboy,enrico,
1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,
123qw,platypus,cindy1,lumber,pinball,foxy,london1,
1023,
05051987,
02041985,password12,superma,longbow,radiohead,nigga,
12051988,spongebo,qwert12345,abrakadabra,dodgers1,
02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,
1013,vikings1,mankind,viktoriya,beardog,hammer1,
02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,
02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,
134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,
02091981,nikki1,irishman,miller1,zildjian,
123000,airwolf,magnet,anai,install,
02041981,
02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,
02091980,
02091984,snowflak,
01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,
123456l,micro,albany,
02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,
02071988,
78945,ultra,
02041979,gasman,thisisit,pavel,idunno,kimmie,
05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,
153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,
111111q,
02051988,
1121,
02081977,sairam,getout,
333777,cobras,
22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,
123456m,
02061984,hewlett,shocker,fuckinside,
02031981,chase1,white1,versace,
123456789s,basebal,iloveyou2,bluebell,
08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,
02051984,colnago,lithium,
02051989,
15051981,zzzxxx,welcom,anastasi,fidelio,franc,
26061987,roadster,stone55,drifter,hookem,hellboy,
1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,
02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,
02061982,
02091985,vintage,redbaron,dalshe,mykids,
11051987,macbeth,julien,james123,krasotka,
111000,
10011986,
987123,pipeline,tatarin,sensei,codered,komodo,frogman,
7894561230,nascar24,juicy,
01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,
1215,spam,winner1,flyfish,moskva,
81fukkc,
21031987,olesya,starligh,summer99,
13041988,fishhead,freesex,super12,
06061986,azazel,scoobydoo,
02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,
1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,
135791,sunny1,chiara,johnson1,
02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,
01011978,wanderer,ohshit,
02101986,sigma,stephen1,paradigm,
02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,
74108520,
123ewq,
12021988,
01061990,gtnhjdbx,
02071981,
01011960,sundevil,
3000gt,mustang6,gagging,maggi,armstron,yfnfkb,
13041987,revolver,
02021976,trouble1,madcat,jeremy1,jackass1,volkswag,
30051985,corndog,pool6123,marines1,
03041991,pizza1,piggy,sissy,
02031979,sunfire,angelus,undead,
24061986,
14061991,wildbill,shinobi,
45m2do5bs,
123qwer,
21011989,cleopatr,lasvega,hornets,amorcit,
11081989,coventry,nirvana1,destin,sidekick,
20061988,
02081983,gbhfvblf,sneaky,bmw325,
22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,
23041987,slayer1,simba1,
02011981,tinkerbe,kieran,
01121986,
172839,boiler,
1125,bluesman,waffle,asdfgh01,threesom,conan,
1102,reflex,
18011987,nautilus,everlast,fatty,vader1,
01071986,cyborg,ghbdtn123,birddog,rubble,
02071983,suckers,
02021973,skyhawk,
12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,
420000,boating,nitro,armada,messiah,
1031,penguin1,
02091989,americ,
02071989,redeye,asdqwe123,
07071987,monty1,goten,spikey,sonata,
635241,tokiohotel,sonyericsson,citroen,compaq1,
1812,umpire,belmont,jonny,pantera1,nudes,palmtree,
14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,
10031988,enterme,malachi,dogface,reptile,
01041985,dindom,handball,marseille,candy1,
19101987,torino,tigge,matthias,viewsoni,
13031987,stinker,evangelion,
24011985,
123456123,rampage,sandrine,
02081980,thecrow,astral,
28041987,sprinter,private1,seabee,shibby,
02101988,
25081988,fearless,junkie,
01091987,aramis,antelope,draven,fuck1,mazda6,eggman,
02021990,barselona,buddy123,
19061987,fyfnjkbq,nancy1,
12121990,
10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,
13061986,fantomas,
17051988,
10051987,
20111986,gladiato,karachi,gambler,gordo,
01011995,biatch,matthe,
25800852,papito,excite,buffalo1,bobdole,cheshire,player1,
28021992,thewho,
10101986,pinky1,mentor,tomahawk,brown1,
03041986,bismillah,bigpoppa,ijrjkfl,
01121988,runaway,
08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,
987321,
14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,
1776,
02031980,coldplay,amand,playa,bigpimp,
04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,
10011990,biker,
09051945,datsun,elcamino,trinitro,malice,audi,voyager1,
02101983,joe123,carpente,spartan1,mario1,glamour,diaper,
12121985,
22011988,winter1,asimov,callisto,nikolai,pebble,
02101981,vendetta,david123,boytoy,
11061985,
02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,
02041980,
27061988,dungeon,leedsutd,
30041986,
11051990,bestbuy,antares,dominion,
24680,
01061986,skillet,enforcer,derparol,
01041988,
196969,
29071983,f00tball,purple1,mingus,
25031987,
21031990,remingto,giggles,klaste,
3x7pxr,
01011994,coolcat,
29051989,megane,
20031987,
02051980,
04041988,synergy,
0000007,macman,iforget,adgjmp,vjqgfhjkm,
28011987,rfvfcenhf,
16051989,
25121987,
16051987,rogue,mamamia,
08051990,
20091991,
1210,carnival,bolitas,paris1,dmitriy,dimas,
05051989,papillon,knuckles,
29011985,hola,tophat,
28021990,
100500,cutiepie,devo,
415263,ducks,ghjuhfvvf,asdqwe,
22021986,freefall,parol,
02011983,zarina,buste,vitamin,warez,bigones,
17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,
1003,dontknow,grinch,sasha_007,
18061990,
12031985,
12031987,calimero,
224466,letmei,
15011987,acmilan,alexandre,
02031977,
08081988,whiteboy,
21051991,barney1,
02071978,money123,
18091985,bigdawg,
02031988,cygnusx1,zoloto,
31011987,firefigh,blowfish,screamer,lfybbk,
20051988,chelse,
11121986,
01031989,harddick,sexylady,
30031988,
02041974,auditt,pizdec,kojak,kfgjxrf,
20091988,
123456ru,wp2003wp,
1204,
15051990,slugger,kordell1,
03031986,swinging,
01011974,
02071979,rockie,dimples,
1234123,
1dragon,trucking,rusty2,roger1,marijuana,kerouac,
02051978,
08031985,paco,thecure,keepout,kernel,noname123,
13121985,francisc,bozo,
02011982,
22071986,
02101979,obsidian,
12345qw,spud,tabasco,
02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,
4200,magneto,
02051976,roswell,
15101986,
21101986,lakeside,bigbang,aspen,little1,
14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,
25091987,
16121987,
02041975,advent,
17011987,slimshady,whistler,
10101990,stryker,
22031984,
15021985,
01031985,blueball,
26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,
13021990,alice1,cassandr,
11111q,john123,
4ever,korova,
02051973,
142857,
25041988,paramedi,eclipse1,salope,
07091990,
1124,darkangel,
23021986,
999666,nomad,
02051981,smackdow,
01021990,yoyoma,argentin,moonligh,
57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,
24111989,magpies,krolik,
21051988,cevthrb,cheddar,
22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,
258369,cherries,
12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,
19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,
02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,
132456,liverpool1,southpaw,seneca,camden,
357159,camero,tenchi,johndoe,
145236,roofer,
741963,vlad,
02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,
02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,
02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,
258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,
1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,
12345m,
07071977,ashle,wormix,murzik,
02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,
01011976,
7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,
1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,
1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,
333444,saigon,
2fast4u,capecod,
23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,
12345qwer,
02071975,platon,bordeaux,vbkfirf,
135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,
159357a,ambers,lenochka,
147896,suckdick,shag,intercourse,blue1234,spiral,
02061977,tosser,ilove,
02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,
123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,
1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,
12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,
875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,
02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,
357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,
02071976,laddie,
123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,
123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,
02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,
02101976,riccardo,egghead,
111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,
02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,
5329,futurama,samoht,klizma,
996633,lobo,honeys,peanut1,
556677,zxasqw,joemama,javelin,samm,
223322,sandra1,flicks,montag,nataly,
3006,tasha1,
1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,
22061941,tyson1,
02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,
5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,
02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,
02011975,fabio,granada,scrapper,
123459,minimoni,q123456789,breaker,
1004,
02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,
132465,blackbird,buffet,jellybean,barfly,behappy,
01011971,carebear,fireblad,
02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,
02101977,pornking,flamengo,
02091975,snowbird,lonesome,robin1,
11111a,weed420,baracuda,bleach,
12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,
123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,
123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,
02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,
1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,
12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,
1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,
5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,
01011973,inlove,laetitia,
02091973,tarpon,nautica,meadow,
0192837465,luckyone,
14881488,chessie,goldeney,tarakan,
69camaro,bungle,wordup,interne,fuckme2,
515000,dragonfl,sprout,
02081974,gerbil,bandit1,
02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,
10293847,bigjohn,bismarck,
7777777a,scamper,
12348765,rabbits,
222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,
777999,sebring,
1michael,lauren1,blake1,killa,
02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,
1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,
369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,
123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,
777333,
1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,
02061974,frenchy,phish1,murphy1,trustno,
02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,
32167,casio,sunshine1,wayne1,longhair,caster,snicker,
02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,
888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,
02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,
789654123,liberty1,rugger,uptown,alcatraz,
123456w,airman,
007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,
1qazzaq1,
1234561,virginie,
1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,
115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,
1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,
321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,
951357,pizzaman,
1234567899,tralala,delpiero,alexi,yamato,itisme,
1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,
02081973,nico,fujitsu,tujhrf,sergbest,blobby,
02051970,sonic1,
1357911,smirnov,video1,panhead,bucky,
02031974,
44332211,duffer,cashmoney,left4dead,bagpuss,salman,
01011972,titfuck,
66613666,england1,malish,dresden,lemans,darina,zapper,
123456as,
123456qqq,met2002,
02041972,redstar,blue23,
1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,
123456n,
02061971,treble,cupoi,password99,dimitri,
3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,
123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,
12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,
02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,
18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,
123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,
02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,
334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,
111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,
5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,
123890,
123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,
777666,legos,mallrats,
1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,
49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,
1qw23er4,satchmo,
1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,
963258,trigun,
1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,
101091m,
123456g,wonderfu,barefeet,
8inches,
1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,
456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,
02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,
333555,redheads,womans,egorka,godbless,
159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,
123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,
22446688,olemiss,whores,culinary,wannabe,maxi,
1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,
4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,
1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,
111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,
918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,
55bgates,bellagio,
0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,
7412369,
123456789987654321,natchez,glitter,
14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,
13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,
1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,
741258963,dipstick,funny1,lizzard,
112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,
12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,
1234qaz,mastermind,
114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,
1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,
01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,
2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,
123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,
444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,
1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,
902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,
999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,
2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,
789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,
123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,
999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,
741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,
7grout,foxfire,
99762000,openit,nathanie,
1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,
123456987,
20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,
0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,
918273645,newuser,qian,edcrfv,booger1,
852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,
1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,
123456789o,blue1,werter,divers,
3000,
123456f,alpina,cali,whoknows,godspeed,
986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,
9111961,topsecret,sniper1,
214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,
12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,
987654321a,
895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,
777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,
2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,
1bitch,
515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,
01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,
1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,
25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,
6uldv
8,zxcvasdf,punkass,flowe,graywolf,peddler,
3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,
124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,
123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,
123456c,sabre,beerme,victory1,kitties,
1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,
24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,
258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,
1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,
0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,
911turbo,funtimes,fhntvrf,nexus6,
159753456,timothy1,bajingan,terry1,frenchie,raiden,
1mustang,babemagnet,
74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,
748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,
651550,passcode,justinbieber,
666333,elodie,sanjay,
110442,alex01,lotus1,
2300mj,lakshmi,zoomer,quake3,
12349876,teapot,
12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,
6661313,wellingt,aqwzsx,madala11,
9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,
1234abc,carling,lockerroom,punani,darth,baron1,vaness,
1password,libido,picher,
232425,karamba,futyn007,daydream,
11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,
123456y,evilone,nastenka,pushok,javie,lilman,
3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,
963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,
333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,
12345w,slasher,papabear,terran,footman,hocke,
153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,
12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,
3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,
123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,
27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,
1monkey,w00t88,shawn1,lorien,
1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,
12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,
987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,
666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,
615243,goethe,manhatta,fastcar,selmer,
1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,
123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,
12345asd,princeto,hellohel,ursitesux,billows,
1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,
1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,
123456789l,bravehea,
12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,
123456ab,lbvjxrf,outlaws,
753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,
555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,
12345k,fokker,
159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,
3984240,ddddd1,sexyme,janet1,
3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,
890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,
1a2b3c4d5e,flyguy,magadan,
1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,
12340987,
1122334,dragrace,lovely1,
22334455,booter,
12345612,corvett,
123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,
13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,
123mudar,samadams,petrus,chris12,charlie123,
123456789123,icetea,sunderla,adrian1,
123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,
123ab,lbtest,banaan,bluenose,
837519,asd12345,waffenss,whateve,
1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,
222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,
665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,
123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,
1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,
123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,
141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,
74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,
43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,
1911a1,harrys,shitfuck,
12345678900,russian7,
007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,
1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,
159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,
1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,
1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,
777111,tecumseh,carajo,nfy.irf,
0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,
555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,
18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,
12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,
357753,barracud,dmband,abcxyz,pathfinder,
335577,yuliya,micky,jayman,asdfg12345,
1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,
823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,
777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,
3151020,duckhunt,segreto,matros,ragnar,
699669,sexsexse,
123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,
1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,
666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,
1q2w3,drinker,penetrating,summertime,
1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,
987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,
11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,
362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,
12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,
1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,
123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,
1ranger,arcane,sixtynin,
222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,
147896321,
369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,
885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,
123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,
999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,
777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,
1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,
17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,
67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,
12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,
78963214,ub6ib9,zz8807zpl,briefs,hawker,
224488,first1,bonzo,brent1,erasure,
69213124,sidewind,soccer13,
622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,
747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,
852963,
123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,
25000,anna123,
654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,
5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,
123698,dragon11,
123qwe456,peepers,trucker1,ganjaman,
1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,
4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,
123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,
1basebal,sport1,emmitt22,porn123,bignasty,morga,
123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,
357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,
8phrowz622,tim123,cassius,
000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,
088011,gophers,indy500,slainte,
5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,
999777,topsecre,blowme1,
123321z,loudog,random1,pantie,drevil,mandolin,
121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,
12345c,vwgolf,pepsi123,amores,passwerd,
01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,
123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,
123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,
085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,
0102030405,seraphim,black123,imzadi,gandon,ducati99,
1shadow,dkflbvbhjdyf,
44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,
55chevy,carefree,willow1,
063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,
100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,
34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,
427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,
1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,
1qaz!qaz,
112233q,
123258,chemistr,coolboy,
0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,
1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,
2w3e4r,pluton,louise1,polarbea,
253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,
112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,
10sne1,saopaulo,shanny,roland1,basser,
3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,
515253,ninguna,dakine,strange1,mexic,vergeten,
12345432,
8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,
74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,
3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,
32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,
654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,
13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,
1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,
33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,
123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,
456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,
1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,
123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,
26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,
333221,legoland,antoshka,counterstrike,buggy,mustang3,
123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,
963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,
48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,
1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,
2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,
1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,
123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,
151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,
159753123,bladerunner,goodone,wonton,doodie,
333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,
10000,makarov,grant1,nighthaw,
13576479,browneye,batigol,nfvfhf,chocolate1,
7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,
315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,
322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,
124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,
131415,tristar,
555000,maroon,
135799,marsik,
555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,
8ball,
1footbal,titlover,lucas123,number6,sampson1,
789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,
145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,
1478520,asssss,agnieszka,haley1,raisin,htubyf,
1buster,cfiekz,derevo,
1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,
1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,
500000,thissuck,picker,stephy,
1fuckme,characte,telecast,
1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,
1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,
3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,
68camaro,iawgk2,xavier1,
1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,
123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,
123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,
1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,
246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,
233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,
1233211,pelikan,rob123,chacal,
1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,
123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,
3234412,bigpapa,jewboy,
3263827,dave123,riches,
333222,tony1,toggle,farter,
124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,
7415963,michael8,birdie1,charl,
123456789abc,
100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,
123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,
1jennife,evgeniya,lfhbyf,coach1,
444777,green12,patryk,pinewood,justin12,
271828,
89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,
777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,
23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,
123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,
08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,
123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,
1231231,nicholas1,flamer,pusher,
1233210,heart1,hun999,jiggy,giddyup,oktober,
123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,
159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,
014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,
1475963,mania,novikov,qwertyasdfgh,goldmine,homies,
777888999,
8balls,holeinon,paper1,samael,
013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,
2234562,smurfs,minion,cadence,flapjack,
123456p,sydne,
135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,
5641110,connect1,therion,clubber,velcro,dave1,astra1,
13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,
001100,
2cool4u,
7555545,ginger12,
2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,
1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,
12233445,sexybaby,
123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,
123sas,blingbling,
1bubba,
0wnsyo0,
1george,baile,richard2,habana,
1diamond,sensatio,
1golfer,maverick1,
1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,
987412365,oceans11,
748159263,cum4me,palmetto,
4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,
524645,futura,valdemar,isacs155,prettygirl,big123,
555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,
5550666,barret,
1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,
212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,
1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,
3edcvfr4,vulture,
1qw23e,
1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,
300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,
123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,
235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,
1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,
451236,polka,olivetti,sysadmin,zepplin,sanjuan,
479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,
4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,
1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,
554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,
12332112,qazxswed,morkovka,daniela1,imback,horny69,
789123456,
123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,
1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,
555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,
123123qwe,kisska,roma123,trafford,sk84life,
326159487,pedros,idiom,plover,bebop,
159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,
13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,
741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,
96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,
123123123q,ronaldo1,scotty1,
1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,
1jordan,sexbomb,omega2,montauk,
258741,dtythf,gibbon,winamp,thebomb,millerli,
852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,
951159,excell,arhangel,emachine,moses1,
968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,
1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,
89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,
12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,
335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,
2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,
963741,asdasdas,katenok,airforce1,
123456789qaz,shotgun1,
12qwasz,reggie1,sharo,
976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,
555555a,toosweet,tiedup,
11121314,startac,lover69,rediska,pirata,vfhrbp,
1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,
21125150,lolit,cabrio,schlong,arisha,verity,
3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,
7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,
123qaz123,butter1,sssss1,texas2,respekt,ou812ic,
123456qaz,
55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,
567765,
380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,
123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,
4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,
4free,bigdee,
000006,
243462536,bigboi,
123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,
12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,
4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,
19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,
12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,
132465798,brianjo,w12345,t34vfrc1991,deadeye,
1robert,
1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,
541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,
789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,
3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,
4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,
1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,
1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,
242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,
007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,
1111122222,vander,woodys,
1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,
135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,
12345f,kozlov,sherpa,marbella,
44445555,bocephus,
1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,
475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,
19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,
12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,
12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,
0147896325,
12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,
1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,
07831505,iluvsex,q1a2z3,larrys,
009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,
123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,
08522580,
2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,
013cpfza,timoha,ghbdtnghbdtn,
3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,
4life,fredderf,bigwilly,
12347890,
12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,
10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,
222888,kukushka,sistema,
224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,
2w3e4r5t,painkiller,robbie1,binger,
8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,
1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,
12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,
11924704,
25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,
010203040506,
1pillow,libby1,vodoley,backlash,piglets,teiubesc,
019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,
270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,
12345zxcvb,funsex,benji1,garci,
113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,
1patrick,cumface,sparkie,kozlova,
123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,
4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,
111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,
2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,
2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,
1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,
1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,
383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,
19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,
557744,rjw7x4,jennys,kickit,rjynfrn,likeit,
555111,corvus,nec3520,
133113,mookie1,bochum,samsung2,locoman0,
154ugeiu,vfvfbgfgf,
135792,[start],tenni,
20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,
1hello,alici,lol12,riker1,hellou,
333888,
1hunter,qw1234,vibrator,mets86,
43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,
123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,
123asd123,almera,grubber,clarkie,thisisme,welkom01,
51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,
4r5t6y,phone1,favorite5,skytommy,abracada,
1martin,
102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,
11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,
6string,nashvill,spicey,boxer1,fabien,
2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,
123432,
123444,
321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,
314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,
123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,
1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,
113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,
123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,
2580456,orange44,kongen,
3cudjz,
78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,
55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,
999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,
45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,
124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,
123kat,raffaele,nikolaev,dapzu455,skooter,
9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,
123zzz,
99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,
12345678c,marta1,dummy1,bethany1,myfamily,history1,
178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,
98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,
192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,
1summer,montan,
1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,
1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,
69a20a,roman123,fuente,
12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,
282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,
654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,
852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,
123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,
1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,
152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,
7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,
12312345,fixit,woobie,andre123,
123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,
123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,
1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,
1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,
1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,
1soccer,
18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,
321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,
1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,
23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,
1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,
198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,
123dan,
89231243658s,farside1,findme,smiley1,
55556666,sartre,ytcnjh,kacper,costarica,
134679258,mikeys,nolimit9,vova123,withyou,
5rxypn,love143,freebie,rescue1,
203040,michael6,
12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,
1dawg,miramar,playas,daddio,orion2,
852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,
159874,
1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,
56qhxs,madzia,vanille,
043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,
1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,
19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,
1ginger,thunder2,virgo1,alien1,bubblegu,
4wwvte,
123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,
2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,
5550123,tatanka,
9638v,cheerios,majere,nomercy,jamesbond007,bh90210,
7550055,jobber,karaganda,pongo,trickle,defamer,
6chid8,
1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,
171819,loveporn,
9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,
232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,
098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,
114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,
123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,
326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,
3ki42x,
4zqauf,ranger2,
4meonly,year2000,
121212a,kfylsi,netzwerk,diese,picasso1,rerecz,
225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,
4815162342lost,qwerty5,fcporto,jazzbo,mierd,
252627,basses,sr20det,
00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,
123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,
1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,
300000,elektro,toonporn,
999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,
12345678z,
3mpz4r,march1,atlantida,strekoza,seagrams,
090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,
197000,lbvekz,passer,torana,
12345as,pallas,koolio,
12qw34,nokia8800,findout,
1thomas,mmmmm1,
654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,
667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,
2good4u,
4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,
2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,
4money,dolittle,adgjmpt,buzzers,brett1,makita,
123123qweqwe,rusalka,sluts1,
123456e,jameson1,bigbaby,
1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,
774411,nylon,juice1,rfn.irf,newyor,
123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,
123456789b,qq123456789,schwein,p3wqaw,
54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,
335533aa,umberto,amber123,
456123789,
456789123,beelch,manta,peeker,
1112131415,
3141592654,gipper,wrinkle5,katies,asd123456,james11,
78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,
852123,blazed,sickan,eljefe,
2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,
4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,
1233214,ironpony,
368ejhih,
88keys,pizza123,sonali,
57np39,quake2,
1234567890qw,
1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,
1bigdick,dragan,autobot,t4nvp7,omega123,
900000,hecnfv,
889988,nitro1,doggie1,fatjoe,
811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,
1qazwsx,zx123456,machine1,asdfgh123,guinnes,
789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,
123459876,nokian95,
775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,
1superma,winter01,muggsy,horny2,
669966,kuleshov,jesusis,calavera,bullet1,
87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,
1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,
12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,
1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,
49527843,ultra1,redrider,offsprin,lovebird,
153426,stymie,aq1sw2,sorrento,
0000001,r3ady41t,webster1,
95175,adam123,coonass,
159487,slut1,gerasim,monkey99,slutwife,
159963,
1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,
12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,
1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,
123qwe456rty,rusty123,salut,
187211,
555666777,
11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,
42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,
123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,
808state,fighton,primavera,
1andrew,moogle,limabean,goddess1,vitalya,blue56,
258025,bullride,cicci,
1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,
2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,
123fuck,stewar1,solnze,
00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,
197500,carvin,ozlq6qwm,
3syqo15hil,pennys,epvjb6,asdfghjkl123,
198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,
554uzpad,sundrop,
1qwertyu,alfie,feliks,briand,
123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,
15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,
12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,
3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,
00096462,techie,cvtifhbrb,redeemed,gocanes,
62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,
989244342a,crazy123,crapola,servus,volvos,
1scooter,griffin1,autopass,ownzyou,deviant,george01,
2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,
1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,
11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,
1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,
19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,
708090a,facesit,
11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,
551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,
75395,spammy,
1357997531,
78678,datalife,zxcvbn123,
1122112211,london22,
23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,
237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,
159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,
201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,
1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,
1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,
777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,
098890,cfvfhf,james7,azalea,sherif,saun24865709,
123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,
3mta3,
123456789f,crownvic,teodor,natusik,
0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,
161718,bowling1,areyukesc,batboy,r123456,
1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,
1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,
12481632,peniss,insuranc,
2b8riedt,
12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,
14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,
4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,
6bjvpe,bangkok1,
666666q,rafiki,letmein0,
0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,
863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,
2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,
1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,
123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,
1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,
111222333a,
13579a,bvgthfnjh,
4506802a,killians,choco,qqqwwweee,raygun,
1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,
4z3al0ts,target1,sheffiel,labrat,stalingrad,
147123,cubfan,corvett1,holden1,snapper1,
4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,
666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,
616913,ybhdfyf,
557711,
555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,
444222,peartree,qqq123,sandmann,spring1,
430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,
313233,markos,love2011,mozart1,viktoriy,reccos,
331234,hornyone,vitesse,
1um
83z,
55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,
543216,zaqqaz,poi123,stabilo,brownie1,
1qwerty1,dinesh,baggins1,
1234567t,davidkin,friend1,lietuva,octopuss,spooks,
12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,
123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,
996699,
1010101,mouche,millenni,
1123456,score1,
1234565,
1234576,eae21157,dave12,pussyy,gfif1991,
1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,
2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,
123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,
123963,thered,fire777,lobito,vball,
1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,
0range,sucker1,scott2,russland,
1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,
80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,
12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,
090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,
1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,
247365,gangstar,jaybee,verycool,
123456789qw,forbidde,prufrock,
12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,
9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,
123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,
1girls,
123xxx,trajan,lerochka,noggin,mtndew,
04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,
686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,
495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,
123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,
1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,
12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,
52678677,mick7278,
9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,
12345l,bigfun,vpmfsz,yxkck878,evgeny,
55667788,lickher,foothill,alesis,poppies,
77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,
1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,
565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,
123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,
1qaz2w,loveable,gimlet,azwebitalia,ragtop,
198500,qweas,mirela,rock123,
11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,
123as123,croucher,demeter,
4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,
8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,
10inch,scarlet1,guido1,raintree,v123456,
1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,
123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,
1236987z,verygoodbot,
1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,
7kbe9d,serpico,jazzie,
1zzzzz,kindbuds,wenef45313,
1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,
1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,
98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,
12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,
96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,
1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,
12345x,
7777755102q,
230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,
24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,
640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,
15975321,
1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,
492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,
1234567w,pussy3,love77,asenna,buffie,
260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,
1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,
333z333,
666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,
123456789qq,c123456,nezabudka,barclays,nisse,dasha1,
12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,
1taylor,goldsink,qazxsw1,
1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,
00001,
1357900,farkle,
1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,
3364068,oranges1,copter,
1samanth,eddies,mimoza,ahfywbz,celtic88,
86mets,applemac,amanda11,taliesin,
1angel,imhere,london11,bandit12,killer666,beer1,
06225930,psylocke,james69,schumach,
24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,
151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,
54321a,sex12345,robert3,atilla,mevefalkcakk,
1johnny,veedub,lilleke,nitsuj,
5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,
794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,
741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,
31217221027711,amalgam,
69dude,qwerty321,roscoe1,
74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,
45454,kidman,
4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,
10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,
1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,
19966991,
19992000,ripken8,masturba,
34524815,primax,paulina1,vp6y38,
427cobra,
4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,
343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,
199000,fvthbrf,redskin1,ryno23,lostlove,
19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,
2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,
12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,
159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,
1guitar,jimjam,dictiona,shammy,flotsam,
0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,
159753q,curious1,hip-hop,
1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,
09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,
99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,
1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,
1hockey,
1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,
123q321,germania,freddd,
1scott,beefy,
5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,
1zxcvbnm,gaetan,homewood,greats,tester1,green99,
1fucker,sc0tland,starss,glori,arnhem,goatman,
1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,
1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,
15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,
1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,
14938685,naughtyboy,pedro123,
21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,
123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,
119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,
12435687,abarth,
12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,
7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,
123645,
1999ar,eric12,
123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,
1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,
8318131,ronnie1,
7558795,sweetgirl,cookie59,sequoia,
5552555,ktyxbr,
4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,
1slayer,black13,rtynfdh,airmax,g00gle,
1panther,artemon,nopasswo,fuck1234,luke1,trinit,
666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,
555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,
4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,
144000,
1chance,
1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,
00197400,
272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,
159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,
06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,
11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,
246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,
72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,
234523,minnie1,rivaldo,angel5,sti2000,xenocide,
11qq11,
1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,
1234567r,assman1,vivahate,buddylee,
38972091,bonds25,
40028922,qrhmis,wp2005,ceejay,pepper01,
51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,
123452000,afdjhbn,greener,
123455432,parachut,mookie12,
123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,
2004rj,delta4,
333222111,calient,ptbdhw,
1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,
1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,
215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,
8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,
007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,
2kash6zq,avemaria,
1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,
1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,
133159,
123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,
1234a,
125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,
998899,spank1,
233391,n123456,
1bear,bellsout,
999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,
123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,
4321rewq,nabokov,hightime,djghjc,
1chelsea,junglist,august16,t3fkvkmj,
1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,
123kid,hajime,
198400,engine1,wessonnn,kingdom1,novembre,
1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,
1313666,
1314520,clemence,wargod,time1,newzealand,snaker,
13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,
1yellow,mistydog,cheetos,
1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,
1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,
55555n,azalia,hockey10,scouter,francy,
1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,
1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,
23wesdxc,kswiss,anna2000,geniusnet,baby2000,
33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,
12qw34er56ty,bassie,nokia5228,
7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,
8543852,sugaree,oshkosh,fedora,bangbus,
5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,
9632147,doglover,baseball2,security1,grunts,orange2,godloves,
213qwe879,julieb,
1qazxsw23edcvfr4,noidea,
8uiazp,betsy1,junior2,parol123,
123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,
1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,
12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,
36460341,konijn,h2slca,kondom25,
123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,
4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,
7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,
77778888,hairy1,monito,comicsans,
81726354,killabee,arclight,yuo67,feelme,
86753099,nnssnn,monday12,
88351132,
88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,
159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,
123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,
89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,
1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,
766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,
299792458,eeeeeee1,confiden,
07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,
481516234,mylove1,shaitan,
1qazxcvb,barbaros,
123456782000,
123wer,thissucks,
7seven,
227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,
1fire,
369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,
183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,
1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,
545ettvy,camaron,flight1,netvideo,tootall,valheru,
481516,
1234as,skimmer,redcross,inuyash,uthvfy,
1012nw,edoardo,bjhgfi,golf11,
9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,
135711,badbo,trapdoor,opopop11,danny2,max2000,
526452,kerry1,leapfrog,daisy2,
134kzbip,
1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,
554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,
024680,vialli,chiva,lucylu,hashem,exbntkm,thema,
23jordan,jake11,wildside,smartie,emerica,
2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,
1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,
2110se,drlove,olesia,kalinina,sergey123,
123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,
3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,
1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,
1blue,fromv,afric,
3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,
1fred,timewarp,
747bbb,druids,julia123,
123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,
123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,
1shot2,a19l1980,
123456@,
1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,
2509mmh,tarkan,sherzod,
1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,
1qaz3edc,frequenc,acuransx,
1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,
21436587,leafs1,
106666,angelochek,ingodwetrust,
123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,
1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,
7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,
1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,
1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,
12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,
12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,
258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,
000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,
20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,
12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,
88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,
1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,
741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,
123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,
2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,
1ashley,gfhjkm22,wwe123,
09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,
2bornot2,duende,
1arthur,nightwing,surfboar,quant4307,
15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,
1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,
36987412,ghbphfr,daddyy,explore1,zoidberg,
5qnzjx,morgane,danilov,blacksex,mickey12,balsam,
83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,
4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,
66669999,whatif,harmony1,ue8fpw,
3tmnej,
254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,
123654987,softbal,killer23,weasel1,lifeson,q123456q,
444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,
198900,asdflkjh,
1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,
302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,
1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,
195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,
2b4dnvsx,
1player,saddie,peapod,
6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,
375125,phitau,yqmbevgk,
89211375759,kumar1,pfhfpf,toyboy,way2go,
7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,
148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,
556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,
666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,
625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,
1beavis,loshara,octobe,jmzacf,
12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,
778811,gjvbljh,
474jdvff,pleaser,misskitty,breaker1,
7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,
123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,
1yyyyy,
159753z,
1fffff,
1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,
1steve,quattro6,fatbob,sp00ky,rastas,
1123581,redsea,rfnmrf,jerky1,
1aaaaaa,spk666,simba123,qwert54321,
123abcd,beavis69,fyfyfc,starr1,
1236547,peanutbutter,sintra,
12345abcde,
1357246,abcde1,climbon,
755dfx,mermaids,monte1,serkan,geilesau,
777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,
2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,
128mo,dallas11,gooner1,manuel1,cocacola1,imesh,
5782790,password8,daboys,
1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,
1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,
005500,jasonx,
1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,
221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,
1clutch,asdfjkl1,hariom,bruce10,jeep95,
1smith,sm9934,karishma,bazzzz,aristo,
669e53e1,nesterov,kill666,fihdfv,
1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,
1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,
04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,
1apple,
1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,
123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,
1grizzly,isaeva,rembrand,toront,
1richard,bigjon,yfltymrf,
1kitty,
4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,
4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,
7894561,dooker,adxel187,cleodog,
4play,
0p9o8i,masterb,bimota,charlee,toystory,
6820055,
6666667,crevette,
6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,
3891576,
3334444,amigo1,gobuffs2,mike21,allianz,
2835493,
179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,
1654321,asdfghj1,motdepas,booga,doogle,
1453145,byron1,
158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,
1234578,februar,
1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,
1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,
1mike,joeblack,
975310,
1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,
889900,goonie,alicat,ggggggg1,
1zzzzzzz,sexywife,northstar,chris23,
888111,containe,trojan1,jason5,graikos,
1ggggg,
1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,
1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,
2004-
10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,
12332100,
1j9e7f6f,jazzzz,yesman,brianm,
42qwerty42,
12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,
305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,
708090,
703751,
700007,ikalcr,tbivbn,
697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,
616879,action1,
600000,sumitomo,albcaz,asian1,
557799,dave69,
556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,
1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,
446655,
444666,chrisa,freespace,vfhbfyyf,chevell,
444333,notyours,
442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,
1wizard,cybernet,iloveme1,veterok,karandash,
392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,
345543,spudman,lurker,bitem,lizzy1,ironsink,minami,
339311,s7fhs127,sterne,
332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,
033028pw,
777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,
987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,
197800,maarten,sam138989,
0u812,ankita,walte,prince12,anvils,bestia,hoschi,
198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,
1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,
999888777,welshman,access123,
963214785,
951753852,babe69,fvcnthlfv,****me,
666999666,testing2,
199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,
159357456,pasca,
123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,
7u8i
9o
0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,
1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,
12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,
0p9o8i7u,s1lver,dorkus,
125478,omega9,sexisgood,mancow,patric1,jetta1,
074401,ghjuhtcc,gfhjk,bibble,terry2,
123213,medicin,rebel2,hen3ry,
4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,
1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,
4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,
1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,
67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,
1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,
1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,
7653ajl1,mardigra,testuser,bunko18,camaro67,
36936,greenie,
454dfmcq,
6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,
1amanda,antani,
78787,antero,
19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,
19899891,patche,greekgod,cbr1000,leader1,
19977991,ettore,chongo,
113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,
1merlin,
222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,
1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,
4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,
19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,
1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,
234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,
123321qweewq,
123qazwsx,
22221111,seesaw,
0987654321a,peach1,
1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,
32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,
9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,
13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,
3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,
13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,
006900,
452073t,schach,hitman1,mariner1,vbnmrf,paint1,
742617000027,bitchboy,pfqxjyjr,
5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,
6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,
7224763,sonofgod,dolphins1,
1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,
1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,
1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,
8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,
1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,
7gorwell,nokia6630,nokia5320,madhatte,
1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,
1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,
26429vadim,lawntrax,
198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,
4311111q,mochaj,presari,bigdo,
753951852,freedom4,kapitan,tomas1,
135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,
123456798,
123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,
92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,
744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,
212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,
44448888,eric123,
112233aa,
2502557i,novass,nanotech,yourname,x12345,indian1,
15975300,
1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,
6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,
267605,rattlesn,
1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,
123sex,tupac1,p1234567,dbrown,
1biteme,tgo4466,
316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,
01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,
123211,
7ertu3ds,necroman,chalky,artist1,simpso,
4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,
878kckxy,
405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,
1qwertyuiop,
6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,
007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,
123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,
456838,keithb,minouche,ariston,savag,
213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,
464811,mynuts,bombo,
1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,
000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,
1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,
0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,
567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,
012345678910,kolesnik,speculum,at4gftlw,kurgan,
93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,
678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,
1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,
1banana,veroniqu,sexfun,sp1der,
4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,
157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,
4gxrzemq,keylargo,
741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,
66699,carlsberg,woodbird,adnama,
45auto,codyman,truck2,
1w2w3w4w,pvjegu,method1,luetdi,
41d8cd98f00b,bankai,
5432112345,
94rwpe,reneee,chrisx,melvins,
775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,
777771,
311music,karla1,golions,
19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,
000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,
1braves,upupa68,happy100,
824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,
867530,narkoman,nhfdvfnjkju123,
1ccccccc,napolean,
0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,
1mouse,nedved,blackone,ghfplybr,
682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,
908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,
19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,
1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,
2196dc,studioworks,
995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,
276115,paula123,
1020315,
38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,
00000001,tiger11,
1butthea,putain,cavalo,basia1,kobebryant,
1232323,
12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,
5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,
1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,
12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,
7f8srt,cumsucker,partagas,bill99,
22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,
1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,
1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,
111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,
1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,
1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,
1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,
123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,
19733791,alias1,movie1,ducat,marzena,shadowru,
56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,
34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,
1234567qw,carson1,samso,
1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,
1green,katieb,steven2,corrado1,satelite,
1michell,
123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,
123445,whore1,
123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,
135135ab,psalm69,lmfao,ranger02,zaharova,
33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,
46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,
57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,
85852008,
1forever,
98798798,irock.,
123456654,
142536789,ford22,brick1,michela,preciou,crazy4u,
01telemike01,nolife,concac,safety1,annie123,brunswic,destini,
123456qwer,madison0,snowball1,
137946,
1133557799,jarule,scout2,songohan,thedead,
00009999,murphy01,spycam,hirsute,aurinko,associat,
1miller,baklan,hermes1,
2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,
14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,
248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,
1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,
7452tr,dalejr88,sombra,anatole,elodi,amazonas,
147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,
0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,
0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,
123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,
02020,shortdog,webhead,chris13,palenque,
3techsrl,knights1,orenburg,prong,nomarg,wutang1,
80637852730,laika,iamfree,
12345670,pillow1,
12343412,bigears,peterg,stunna,rocky5,
12123434,damir,feuerwehr,
7418529630,danone,yanina,valenci,andy69,
111222q,silvia1,
1jjjjj,loveforever,passwo1,stratocaster,
8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,
123456789zx,serdce,stevo,wifey200,ololo123,popeye1,
1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,
321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,
155555,biglou,redbud,jordan7,
159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,
11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,
123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,
2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,
16473a,mark01,bigbro,annarbor,nikita2000,
11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,
123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,
49ers1,mama1963,
1truck,telecaster,punksnotdead,erotik,
1eagles,
1fender,luv269,acdeehan,tanner1,freema,
1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,
1jeffrey,fgdfgdfg,gfgekz,
1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,
110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,
4034407,
51094didi,
3657549,
3630000,
3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,
1726354,lovesong,dude11,moebius,paravoz,
1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,
1010220,
666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,
926337,ufhhbgjnnth,yamakasi,
888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,
456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,
785612,
779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,
7elephants,hardup,gamess,a000000,
267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,
667766,redvette,
666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,
579300,druss,eatshit1,
555123,appleseed,simpleplan,kazak,
526282,fynfyfyfhbde,birthday6,dragon6,
1pookie,bluedevils,omg123,hj8z6e,x5dxwp,
455445,batman23,termin,chrisbrown,animals1,lucky9,
443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,
8xuuobe4,cmu9ggzh,bruno12,
316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,
197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,
1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,
198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,
7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,
8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,
1amber,iownyou,tightend,
07931505,paquito,
1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,
5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,
284655,jaihind,lero4ka,
1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,
7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,
0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,
12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,
1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,
1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,
5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,
222666,gosling,bigmack,
223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,
123456789101,kenpo,
0147852369,raptor1,tallulah,boobys,jjones,
1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,
123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,
246890,
246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,
705499fh,sebast,porn1234,earn381,
1porsche,whatthef,
123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,
531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,
2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,
19719870,liebherr,ck6znp42,gary123,
123654z,alsscan,eyedoc,matrix7,metalgea,chinito,
4iter,falcon11,
7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,
1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,
1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,
164379,rolodex,
166666,rrrrrrr1,almaz666,
167943,russel1,negrito,alianz,goodpussy,veronik,
1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,
123qwe12,vfvf2011,fishe,
1peanut,speedie,qazwsx1234,pass999,
171204j,ketamine,sheena1,energizer,usethis1,
123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,
80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,
00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,
118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,
1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,
44556,emily123,busman,and123,
8546404,paladine,
1world,bulgakov,
4294967296,bball23,
1wwwww,mycats,elain,delta6,
36363,emilyb,color1,
6060842,cdtnkfyrf,hedonism,gfgfrfhkj,
5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,
00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,
2521659,underwat,tanusha,dianas,
3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,
33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,
1w2w3w,registr,tonite,maranello,
1593570,parolamea,galatasara,loranthos,
1472583,asmodean,
1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,
12344321a,kennyb,madma,
85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,
112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,
963147,cnhfcnm,kzinti,
1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,
172839456,basshead,hornball,magnu,pagedown,molly2,
131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,
1happy,shenlong,matrix01,nazarova,
369874125,
800500,webguy,rse2540,ashley2,briank,
789551,
786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,
789632147,asdfg1234,
754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,
5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,
12345$,soboleva,
709394,ubique,drizzt1,elmers,teamster,pokemons,
1472583690,
1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,
4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,
100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,
477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,
444000,adidas12,dripik,cameron2,
442200,a7nz8546,respublika,fkojn6gb,
428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,
337733,
336633,taurus1,
334433,billet,diamondd,
333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,
65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,
46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,
1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,
1234567890m,stingers,nonrev,
3e4r5t,champio,bbbbbb99,
196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,
197300,fitte,monkey00,eldritch,littleone,rfyfgkz,
1member,
66chevy,oohrah,cormac,hpmrbm41,
197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,
1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,
17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,
198910,bristol1,bob007,allister,yjdujhjl,gauloise,
198920,bellaboo,
9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,
200001,grenden,anaell,apa195,model1,
245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,
1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,
8i9o0p,borisenko,taylor01,
111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,
1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,
146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,
12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,
4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,
9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,
1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,
4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,
55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,
1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,
1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,
00000a,millerlite,ironhorse,
2twins,stryke,gggg1,zzzxxxccc,roosevel,
8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,
12345j,
1234567890qaz,sexxxxxx,beagles,lennart,
12345789,pass10,politic,max007,gcheckou,
12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,
123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,
24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,
1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,
11111aaaaa,machina,august17,
1hhhhh,
0773417k,
1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,
261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,
944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,
1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,
01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,
151500,
1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,
7eleven,green8,
153351,
1a2s3d4f5g6h,
154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,
258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,
255225,goldie1,alfa155,
45colt,safeu851,antonova,longtong,
1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,
123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,
11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,
754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,
19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,
123579,co2000,spanner1,todiefor,mangoes,isabel1,
123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,
1knight,
28infern,
241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,
1prince,iop890,bigbroth,mollymoo,waitron,lizottes,
125412,juggler,quinta,
0sister0,zanardi,nata123,heckfyxbr,
22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,
125521,
19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,
125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,
78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,
1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,
5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,
123qweasdzx,baldman,sungod,furka,retsub,
9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,
8481068,
000002,manimal,dthjybxrf,buck123,dick123,
6969696,nospam,strong1,kodeord,bama12,
123321w,superman123,gladiolus,nintend,
5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,
4206969,
87e5nclizry,teufelo7,doller,yfl.irf,quaresma,
3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,
123321az,tomjerry,kawika,
2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,
870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,
753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,
2305822q,iddqdiddqd,
1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,
2i5fdruv,havvoc,
1357913,
1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,
123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,
1232580,
123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,
1011111,torrents,cinta,
123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,
321ret32,rufuss,tarbit,joanna1,
102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,
99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,
888777,ramana,roman777,brandon7,
17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,
123342,w1w2w3,
78621323,
4cancel,
789963,(null,vassago,jaydog472,
123452,timt42,canada99,
123589,rebenok,htyfnf,
785001,osipov,maks123,neverwinter,love2010,
777222,
67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,
66005918,nokian,gonzos,louisian,
1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,
58565254,
5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,
182838,
158uefas,dell50,
1super,
666222,
47ds8x,jackhamm,mineonly,rfnfhbyf,
048ro,
665259,kristina1,bombero,
52545856,secure1,bigloser,peterk,alex2,
51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,
45645645,bugmenot,bigted,
44556677,
556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,
527952,retired1,soxfan,nfyz123,
37583867,goddes,
515069,gxlmxbewym,
1warrior,
36925814,dmb2011,topten,karpova,
89876065093rax,naturals,gateway9,cepseoun,turbot,
493949,cock22,italia1,sasafras,gopnik,stalke,
1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,
31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,
424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,
382436,
369741,
5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,
2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,
1booger,roisin,
1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,
09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,
1ooooo,sofun,snake2,msouthwa,dougla,
1iceman,shahrukh,sharona,dragon666,france98,
196800,
196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,
308win,
1ladybug,corneliu,svetasveta,
197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,
3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,
30624700,amazing1,wahooo,seau55,
1beer,apples2,chulo,dolphin9,heather6,
198206,
198207,hergood,miracle1,njhyflj,
4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,
132333,aishiteru,pangaea,fathead1,smurph,
198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,
199103,cleo123,
1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,
1jjjjjjj,swansong,chris10,laluna,
12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,
199430,saisg002,nosaints,tirpitz,
1gggggg,jason13,kingss,ernest1,
0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,
14159265,cacique,
14142135,orange10,richard0,backdraf,
255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,
1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,
000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,
1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,
123lol
123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,
111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,
1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,
0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,
123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,
1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,
72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,
1bill,chris25,hastur,
1marine,greatdan,french1,hatman,
123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,
1234512i,assa123,
7seven7,monster7,june12,bpvtyf,
149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,
111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,
1001sin,passw,august24,beatoff,
555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,
9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,
123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,
287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,
9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,
12356789,
12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,
10048,indahouse,mykiss,
1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,
1jackson,kakosja,bogomol,
123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,
104328q,marcin1,salima,pcitra,
1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,
0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,
1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,
1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,
159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,
11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,
11223311,nfyrbcn,
11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,
67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,
5c92v5h6,purple13,tango123,plant1,
1baby,xufrgemw,fitta,
1rangers,spawns,kenned,taratata,
19944991,
11111118,coronas,
4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,
68stang,
67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,
223366,nnnnnn1,
226622,junkfood,asilas,cer980,daddymac,persepho,neelam,
00700,shithappens,
255555,qwertyy,xbox36,
19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,
456rty,
1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,
1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,
9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,
65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,
1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,
243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,
8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,
1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,
18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,
02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,
25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,
358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,
1bastard,
413276191q,pngfilt,pchealth,netsnip,bodiroga,
1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,
1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,
98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,
29palms,xanth,
228822,ppppppp1,
1kkkkk,
1lllll,mynewbots,spurss,madmax1,
224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,
86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,
1giants,flippe,
12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,
6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,
1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,
1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,
1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,
4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,
1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,
204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,
5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,
1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,
1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,
125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,
1explore,helge,vaz2114,whynotme,baba123,mugen,
1qazwsxedc,albertjr,
0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,
24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,
199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,
198800,bijoux,frame1,blackmor,giveit,issmall,bear13,
123-
123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,
12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,
198020,n7td4bjl,jackie69,camel123,ben1234,
1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,
4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,
197200,justine1,bendix,morphius,njhvjp,
44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,
4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,
1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,
316271,engine3,pr1ncess,
64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,
7777777z,werty123,metalhead,romanson,redsand,
365214,shalo,arsenii,
1989cc,sissi,duramax,
382563,petera,
414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,
441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,
444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,
483422,tupacshakur,albert12,
1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,
545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,
665566,tooting,hallo12,davinchi,conducto,medias,
666444,invernes,madhatter,
456asd,
12345678i,
687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,
747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,
123qwe1,kolosov,fredrau,run4fun,
789056,jkbvgbflf,chitra,
87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,
880888,cantina,
887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,
1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,
1233215,tony45,tiburo,love15,bmw750,wallstreet,
2h0t4me,
1346795,lamerz,munkee,
134679q,granvill,
1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,
102030q,putangina,brandnew,shadowfax,eagles12,
1falcon,brianw,lokomoti,
2022958,scooper,pegas,jabroni1,
2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,
2525252,sleddog,red333,jamesm,
2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,
19851985p,dogphil3650,totenkopf,monitor2,macross7,
3816778,dudder,semaj1,bounder,racerx1,
5556633,
7085506,ofclr278,brody1,
7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,
9124852,wiley1,dukenukem,iampurehaha2,
9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,
1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,
1creativ,golf1234,hurryup,
1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,
7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,
2letmein,shavkat,paule,dlanor,adamas,
0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,
123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,
1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,
1packers,dannyd,alfonse,qwertgfdsa,
11119999,basket1,ghjtrn,saralee,
12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,
5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,
1sarah,
1assword,sparky01,seymur,tomtom1,
123321qw,goskins,soccer19,luvbekki,bumhole,
2balls,
1muffin,borodin,monkey9,yfeiybrb,
1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,
1bigdadd,
1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,
1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,
147258369a,mazepa,newyorke,
1arsenal,hondas2000,demona,fordgt,steve12,birthday2,
12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,
85bears,jimbo69,
5678ytr,potapova,nokia7070,sunday1,kalleank,
1996gta,refinnej,july1,molodec,nothanks,enigm,
12play,sugardog,nhfkbdfkb,larousse,cannon1,
144444,qazxcdew,stimorol,jhereg,spawn7,
143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,
478jfszk,flavi,hippo1,
9hmlpyjd,july21,
7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,
1flowers,shadow14,alucard1,
1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,
1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,
123boots1,
123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,
1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,
12345abcd,lexus300,pheonix1,alex1974,
123qw123,
137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,
121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,
1cherry,
1q2345,
1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,
1rainbow,cheezit,
1eeeeeee,ashley123,assass1,amanda123,jerbear,
1bbbbbb,azerty12,
15975391,
654321z,twinturb,onlyone1,denis1988,
6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,
1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,
125690,doggy123,craigs,vader123,silkeborg,
124365,peterm,
123978,krakatoa,
123699,
123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,
000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,
1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,
2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,
9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,
1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,
007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,
1digital,matthew0,dclxvi,lisica,roy123,
2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,
999666333,freedom8,botanik,
777555333,marcos1,lubimaya,flash2,einstei,
08080,
123456789j,
159951159,
159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,
98766789,darksun,arxangel,
87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,
2big4u,
5nizza,genesis2,romance1,ofcourse,
1horse,latenite,cubana,sactown,
789456123a,milliona,
61808861,
57699434,imperia,bubba11,yellow3,change12,
55495746,flappy,jimbo123,
19372846,
19380018,cutlass1,craig123,klepto,beagle1,solus,
51502112,pasha1,
19822891,
46466452,
19855891,petshop,nikolaevna,
119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,
115511,eetfuk,gfhfvgfvgfv,
1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,
0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,
12monkeys,fjdksl,inter1,nokia6500,
59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,
1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,
1chester,rjnjatq,emokid,reset1,regal1,j0shua,
134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,
1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,
9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,
10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,
123vika,alena1,platinu,ilford,storm7,undernet,sasha777,
1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,
14028,tiziano,qwerty32,
123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,
17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,
7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,
1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,
50000,burltree,
54343,
54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,
1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,
1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,
1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,
1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,
1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,
2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,
1august,canno,
1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,
7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,
1tigers,jambos,lickme2,suomi,gandalf7,
028526,zygote,brett123,br1ttany,supafly,
159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,
1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,
1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,
1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,
1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,
1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,
2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,
89032073168,denis1984,
2000jeep,weetabix,
199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,
12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,
4seasons,freude,elric1,werule,hockey14,
12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,
1qaz0okm,newmoney,pimpin69,
07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,
1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,
8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,
198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,
198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,
123llll,stillers,sanchin,tulpan,smallvill,
1mmmmm,patti1,folgers,mike31,colts18,
123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,
145678,vfcmrf,compass1,willee,
1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,
142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,
141592,denali1,
37kazoo,copernic,
123456789asd,orange88,bravada,rush211,
197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,
13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,
5element,wer138,chanel1,ooicu812,
10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,
111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,
197101,sweet2,
197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,
9085603566,trace1,fagget,robot1,angel20,
6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,
133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,
196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,
2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,
1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,
1spanky,
1hotdog,
34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,
1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,
12345678d,deadmau5,fredie,
311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,
1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,
20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,
342500,mongini,dfhtybr,horndogg,palermo1,
136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,
1234567887654321,
135642,me2you,
8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,
770129ji,supercat,juntas,tema1234,esthe,
1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,
9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,
420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,
1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,
1inside,pokemon00,
1iiiiiii,jordan20,sexual1,mailliw,calipso,
014702580369,
1zzzzzz,
1jjjjjj,break1,
15253545,yomama1,katinka,kevin11,
1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,
15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,
444111,bishkek,afrika2002,toby22,
1speedy,daishi,
2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,
46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,
1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,
14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,
500600,
1sexsex,facial1,motaro,
511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,
123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,
1-oct,stjohns,
2278124q,
123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,
543211,casita,
1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,
1861brr,k.ljxrf,watchout,fotze,
1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,
552255,shit1,sluggy,
552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,
125267,
125000,
124536,bliss1,dddsss,indonesi,bob69,
123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,
132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,
48n25rcc,djtiesto,
111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,
645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,
4speed,tenorsax,legshow,yoshi1,chrisbl,
44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,
55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,
9085084232,takeme,
123qwaszx,firedept,vfrfhjd,jackfros,
123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,
2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,
69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,
258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,
1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,
1albert,lommerse,coffee11,
777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,
2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,
122333444455555,%e2%
82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,
223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,
1newlife,clove,babyfac,bigwaves,mama1970,shockwav,
1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,
123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,
6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,
888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,
1346798520,
03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,
1234562000,lovedick,gibso,digital2,space199,b26354,
987654123,golive,serious1,pivkoo,better1,
824358553,
794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,
213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,
147852963,bedbug,
147369258,hellbound,gjgjxrf,
123987456,lovehurt,five55,hammer01,
1234554321a,alina2011,peppino,ang238,questor,
112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,
420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,
1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,
76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,
124c41,quixotic,steam181,
1169900,rfcgthcrbq,rfvbkm,sexstuff,
1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,
56836803,jedimaster,pangit,gfhjkm777,tocool,
1237654,stella12,
55378008,
19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,
1357924,
312mas,laser123,arminia,branford,coastie,mrmojo,
19801982,scott11,banaan123,ingres,
300zxtt,hooters6,sweeties,
19821983,
19831985,
19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,
19921993,
789qwe,harsingh,
1597535,thecount,phantom3,
36985214,lukas123,
117711,pakistan1,madmax11,willow01,
19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,
31359092,sasha1993,sanders2,discman,zaq!
2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,
1celtic,asguard,mygal,fitzgera,
1secret,duke33,cyklone,dipascuc,potapov,
1escobar2,c0l0rad0,kki177hk,
1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,
201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,
31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,
5gtgiaxm,
2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,
1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,
3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,
2dumb2live,matt21,forsale,
1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,
6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,
8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,
8538622,maryjan,sasha2011,gineok,
8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,
1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,
12qwer,
9875321,lestat1,satcom,conditio,capri50,sayaka,
9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,
2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,
008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,
1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,
1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,
1234567890d,fatal1ty,prostreet,peruan,
10020,nadya,caution1,marocas,chanel5,summer08,metal123,
111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,
1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,
88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,
2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,
15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,
123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,
26058,prodojo,
002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,
1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,
1dakota,f56307,chipmonk,
4nick8,praline,vbhjh123,king11,
22tango,gemini12,street1,
77879,doodlebu,homyak,
165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,
00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,
1harry,
671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,
1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,
24688642,covingto,
24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,
1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,
78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,
29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,
26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,
20068,
20038,amitech,syoung,dugway,
18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,
14058,cocomo,aliona,
14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,
108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,
1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,
987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,
1qazxs,uhjpysq,zxcvbasdfg,enjoy1,
1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,
1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,
99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,
200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,
18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,
36169544,foxmulder,
118801,kutter,shashank,jamjar,
118811,
119955,aspirina,dinkus,
1sailor,nalgene,
19891959,snarf,allie1,cracky,resipsa,
45678912,kemerovo,
19841989,netware1,alhimik,
19801984,nicole123,
19761977,
51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,
55443322,
1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,
67899876,bobsmith,nikko1,jr1234,hillary1,
78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,
88887777,
91328378,matthew4,itdoes,
98256518,
102938475,alina2002,
123123789,fubared,dannys,
123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,
159357852,dtheyxbr,theman22,
212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,
1212312121,tamplier,pelican1,domodedovo,
1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,
222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,
111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,
123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,
1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,
1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,
123xyi2,fishead,x002tp00,whodaman,
555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,
123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,
123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,
129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,
1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,
1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,
10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,
1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,
1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,
1autopas,autopas1,wwww1,
15935746,daniel20,
2500aa,massim,
1ggggggg,
96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,
5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,
132546,
132613,
12345672000,saretta,
135798,
136666,thomas7,
136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,
14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,
098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,
1birdie,
96328i,escola,extra330,henry12,gfhfyjqz,
14u2nv,max1234,templar1,
1dave,
02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,
13571113,whizzer,nollie,
13467982,upiter,
12string,bluejay1,silkie,william4,kosta1,
143333,connor12,sustanon,
06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,
1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,
1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,
12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,
99strenght,andy01,denis2011,
19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,
1bigfish,mossyoak,
1stunner,getinnow,jessejames,gkfnjy,drako,
1nissan,egor123,hotness,
1hawaii,zxc123456,cantstop,
1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,
153246,crazy2,green9,yoshimi,
1vette,chief123,jasper2,
1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,
1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,
1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,
54gv768,
826248s,tyrone1,
1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,
11234567,rebon,geekboy".split(","),
41648 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,
19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,
1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,
1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,
1990s,officers,physical,
20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,
1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,
1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,
18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,
1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,
17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,
16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,
12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,
13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,
15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,
1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,
14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,
10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,
11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,
1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,
21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,
2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,
25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,
1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,
1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,
50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,
30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,
24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,
22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,
1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,
23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,
26th,periodic,proprietary,
1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,
1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,
27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,
1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,
100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,
1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,
1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,
1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,
1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,
1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,
2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,
4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=
9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,
101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=
3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,
150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,
76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,
1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=
9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,
200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,
125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,
113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,
90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,
1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,
1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,
1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,
110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,
111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,
1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,
104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,
4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,
112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,
360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,
180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,
103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,
116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,
1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,
109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,
1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,
108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,
4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,
107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,
300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,
106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,
105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,
102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,
45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=
12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,
500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,
1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,
1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,
1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,
250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,
400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,
117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=
3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,
114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,
1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,
115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,
125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,
60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,
1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,
4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,
120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,
1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,
30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,
1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,
500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,
1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,
121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,
126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,
118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,
1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,
1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,
1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,
119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,
1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,
180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,
1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,
135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,
160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,
4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,
1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,
124th,plainview,kardashian,neuville,victorians,radiates,
127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,
175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,
250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,
1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,
130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,
128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,
173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,
157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,
131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,
153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,
161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,
148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,
140th,featureless,mafic,rivaling,toyline,
2/
1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,
509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,
137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,
138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,
1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol
.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,
36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,
1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,
10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,
181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,
1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,
141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,
129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,
149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,
145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,
1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,
179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,
155th,vulgarity,pompadour,automorphisms,
1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,
187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,
122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,
20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,
142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
41649 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
41650 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
41651 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
41653 },{}],
4:[function(require,module,exports){
41654 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=
0,s=t.length;c
<s;c++)i=t[c],
"string"!=(m=typeof i)&&
"number"!==m&&
"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
41656 },{
"./feedback":
2,
"./matching":
5,
"./scoring":
6,
"./time_estimates":
7}],
5:[function(require,module,exports){
41657 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require(
"./frequency_lists"),adjacency_graphs=require(
"./adjacency_graphs"),scoring=require(
"./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=
1,r=
0,n=e.length;r
<n;r++)a=e[r],i[a]=t,t+=
1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:[
"4",
"@"],b:[
"8"],c:[
"(",
"{",
"[",
"<"],e:[
"3"],g:[
"6",
"9"],i:[
"1",
"!",
"|"],l:[
"1",
"|",
"7"],o:[
"0"],s:[
"$",
"5"],t:[
"+",
"7"],x:[
"%"],z:[
"2"]},REGEXEN={recent_year:/
19\d\d|
200\d|
201\d/g},DATE_MAX_YEAR=
2050,DATE_MIN_YEAR=
1e3,DATE_SPLITS={
4:[[
1,
2],[
2,
3]],
5:[[
1,
3],[
2,
3]],
6:[[
1,
2],[
2,
4],[
4,
5]],
7:[[
1,
3],[
2,
3],[
4,
5],[
4,
6]],
8:[[
2,
4],[
4,
6]]},matching={empty:function(e){var t;return
0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(
""),s=[],i=
0,r=a.length;i
<r;i++)n=a[i],s.push(t[n]||n);return s}().join(
"")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=
0,t=r.length;a
<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=
0,_=a;
0<=_?o
<_:o>_;r=
0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h
<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+
1||
9e9)in l&&(p=u.slice(r,+i+
1||
9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+
1||
9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!
1,l33t:!
1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=
0,n=i.length;a
<n;a++)r=i[a],r.token=r.token.split(
"").reverse().join(
""),r.reversed=!
0,s=[e.length-
1-r.j,e.length-
1-r.i],r.i=s[
0],r.j=s[
1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(
""),a=
0,r=o.length;a
<r;a++)n=o[a],s[n]=!
0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=
0,e=c.length;t
<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length
>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=
0,a=e.length;o
<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=
0,e=h.length;t
<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=
0,e=t.length;n
<e;u=++n)i=t[u],r.push(i+
","+u);return r}().join(
"-"),r in s||(s[r]=!
0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[
0],m=t.slice(
1),c=[],d=e[a],l=
0,h=d.length;l
<h;l++)for(o=d[l],_=
0,u=p.length;_
<u;_++){for(A=p[_],i=-
1,s=f=
0,g=A.length;
0<=g?f
<g:f>g;s=
0<=g?++f:--f)if(A[s][
0]===o){i=s;break}i===-
1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(
0),E.splice(i,
1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=
0,o=p.length;u
<o;u++){for(_=p[u],f={},c=
0,h=_.length;c
<h;c++)l=_[c],s=l[
0],t=l[
1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=
0,a=_.length;c
<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=
0,s=f.length;l
<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+
1||
9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-
1&&(h[p]=r);o.l33t=!
0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+
" -> "+A);return e}().join(
", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length
>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:
"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty
"!==n&&"dvorak
"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial
",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[
0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[
0].length/i.length}),u=h+
1;return d},MAX_DELTA:
5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(
1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n
>1||
1===Math.abs(i))&&
0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+
1||
9e9),/^[a-z]+$/.test(u)?(
s=
"lower",o=
26):/^[A-Z]+$/.test(u)?(
s=
"upper",o=
26):/^\d+$/.test(u)?(
s=
"digits",o=
10):(
s=
"unicode",o=
26),h.push({pattern:
"sequence",i:n,j:r,token:e.slice(n,+r+
1||
9e9),sequence_name:s,sequence_space:o,ascending:i
>0})}}(this),h=[],n=
0,a=null,i=s=
1,o=e.length;
1<=o?s
<o:s>o;i=
1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-
1),null==a&&(a=t),t!==a&&(r=i-
1,u(n,r,a),n=r,a=t);return u(n,e.length-
1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=
0;i=r.exec(e);)a=i[
0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[
0].length-
1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{
4,
8}$/,d=/^(\d{
1,
4})([\s\/\\_.-])(\d{
1,
2})\
2(\d{
1,
4})$/,s=m=
0,v=e.length-
4;
0<=v?m<=v:m
>=v;s=
0<=v?++m:--m)for(o=A=I=s+
3,R=s+
7;(I<=R?A<=R:A
>=R)&&!(o
>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+
1||
9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=
0,c=T.length;E
<c;E++)D=T[E],h=D[
0],u=D[
1],a=this.map_ints_to_dmy([parseInt(M.slice(
0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length
>0){for(t=r[
0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[
0]),k=r.slice(
1),y=
0,l=k.length;y
<l;y++)n=k[y],i=p(n),i
<g&&(x=[n,i],t=x[
0],g=x[
1]);_.push({pattern:
"date",token:M,i:s,j:o,separator:
"",year:t.year,month:t.month,day:t.day})}}for(s=q=
0,j=e.length-
6;
0<=j?q<=j:q
>=j;s=
0<=j?++q:--q)for(o=L=b=s+
5,N=s+
9;(b<=N?L<=N:L
>=N)&&!(o
>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+
1||
9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[
1]),parseInt(S[
3]),parseInt(S[
4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[
2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!
1,i=
0,n=_.length;i
<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j
>=e.j){t=!
0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[
1]
>31||e[
1]<=
0)){for(o=
0,h=
0,p=
0,s=
0,r=e.length;s
<r;s++){if(n=e[s],
99<n&&n
<DATE_MIN_YEAR||n
>DATE_MAX_YEAR)return;n
>31&&(h+=
1),n
>12&&(o+=
1),n<=
0&&(p+=
1)}if(!(h
>=
2||
3===o||p
>=
2)){for(c=[[e[
2],e.slice(
0,
2)],[e[
0],e.slice(
1,
3)]],u=
0,i=c.length;u
<i;u++)if(_=c[u],g=_[
0],d=_[
1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void
0;for(l=
0,a=c.length;l
<a;l++)if(f=c[l],g=f[
0],d=f[
1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=
0,n=a.length;i
<n;i++)if(s=a[i],t=s[
0],r=s[
1],
1<=t&&t<=
31&&
1<=r&&r<=
12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e
>99?e:e
>50?e+
1900:e+
2e3}},module.exports=matching;
41659 },{
"./adjacency_graphs":
1,
"./frequency_lists":
3,
"./scoring":
6}],
6:[function(require,module,exports){
41660 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require(
"./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=
0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=
0,e=a.length;t
<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=
10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=
1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=
10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=
50,scoring={nCk:function(e,t){var r,n,s,a;if(t
>e)return
0;if(
0===t)return
1;for(s=
1,r=n=
1,a=t;
1<=a?n<=a:n
>=a;r=
1<=a?++n:--n)s*=e,s/=r,e-=
1;return s},log10:function(e){return Math.log(e)/Math.log(
10)},log2:function(e){return Math.log(e)/Math.log(
2)},factorial:function(e){var t,r,n,s;if(e
<2)return
1;for(t=
1,r=n=
2,s=e;
2<=s?n<=s:n
>=s;r=
2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!
1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=
0,t=l;
0<=t?e
<t:e>t;n=
0<=t?++e:--e)r.push([]);return r}(),p=
0,_=t.length;p
<_;p++)c=t[p],f[c.j].push(c);for(v=
0,o=f.length;v
<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=
0,e=l;
0<=e?r
<e:r>e;n=
0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s
>1&&(o*=A.pi[n.i-
1][s-
1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-
1)),h=A.g[_];for(u in h)if(a=h[u],!(u
>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(
0,e),U(c,
1),a=[],t=u=
1,s=e;
1<=s?u<=s:u
>=s;t=
1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-
1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+
1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+
1||
9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-
1,a=void
0,n=
1/
0,i=A.g[s];for(r in i)t=i[r],t
<n&&(a=r,n=t);for(;s
>=
0;)c=A.m[s][a],u.unshift(c),s=c.i-
1,a--;return u}}(this),u=N=
0,I=l;
0<=I?N
<I:N>I;u=
0<=I?++N:--N){for(M=f[u],T=
0,h=M.length;T
<h;T++)if(c=M[T],c.i
>0)for(i in A.m[c.i-
1])i=parseInt(i),U(c,i+
1);else U(c,
1);s(u)}return R=C(l),S=R.length,a=
0===e.length?
1:A.g[l-
1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=
1,e.token.length
<t.length&&(s=
1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=
1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+
1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+
1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(
0),
t=
"a"===r||
"A"===r||
"z"===r||
"Z"===r||
"0"===r||
"1"===r||
"9"===r?
4:r.match(/\d/)?
10:
26,e.ascending||(t*=
2),t*e.token.length},MIN_YEAR_SPACE:
20,REFERENCE_YEAR:
2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:
26,alpha_upper:
26,alpha:
52,alphanumeric:
62,digits:
10,symbols:
33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case
"recent_year":return r=Math.abs(parseInt(e.regex_match[
0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=
365*r,e.separator&&(t*=
4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for(
"qwerty"===(E=e.graph)||
"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=
0,t=e.token.length,A=e.turns,u=_=
2,c=t;
2<=c?_<=c:_
>=c;u=
2<=c?++_:--_)for(o=Math.min(A,u-
1),i=h=
1,g=o;
1<=g?h<=g:h
>=g;i=
1<=g?++h:--h)a+=this.nCk(u-
1,i-
1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,
0===r||
0===n)a*=
2;else{for(p=
0,u=S=
1,f=Math.min(r,n);
1<=f?S<=f:S
>=f;u=
1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&
2||
1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return
1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=
0,a=_.length;u
<a;u++)if(h=_[u],c.match(h))return
2;for(r=function(){var e,t,r,s;for(r=c.split(
""),s=[],t=
0,e=r.length;t
<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(
""),s=[],t=
0,e=r.length;t
<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=
0,s=i=
1,o=Math.min(r,t);
1<=o?i<=o:i
>=o;s=
1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return
1;g=
1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=
0,e=s.length;t
<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=
0,e=s.length;t
<e;t++)n=s[t],n===c&&r.push(n);return r}().length,
0===t||
0===r)g*=
2;else{for(i=Math.min(r,t),_=
0,a=u=
1,h=i;
1<=h?u<=h:u
>=h;a=
1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
41662 },{"./adjacency_graphs":
1}],
7:[function(require,module,exports){
41663 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(
100/
3600),online_no_throttling_10_per_second:e/
10,offline_slow_hashing_1e4_per_second:e/
1e4,offline_fast_hashing_1e10_per_second:e/
1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=
5,e
<1e3+t?
0:e
<1e6+t?
1:e
<1e8+t?
2:e
<1e10+t?
3:
4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=
60,r=
60*i,s=
24*r,a=
31*s,c=
12*a,n=
100*c,u=e
<1?[null,
"less than a second"]:e
<i?(t=Math.round(e),[t,t+
" second"]):e
<r?(t=Math.round(e/i),[t,t+
" minute"]):e
<s?(t=Math.round(e/r),[t,t+
" hour"]):e
<a?(t=Math.round(e/s),[t,t+
" day"]):e
<c?(t=Math.round(e/a),[t,t+
" month"]):e
<n?(t=Math.round(e/c),[t,t+
" year"]):[null,
"centuries"],o=u[
0],_=u[
1],null!=o&&
1!==o&&(_+=
"s"),_}},module.exports=time_estimates;
41667 //# sourceMappingURL=zxcvbn.js.map
41670 * Detects entropy from a string.
41677 * hexadecimal [
0-
9A-F]
41678 * card [A2-
9TJQK][CDHS]
41680 * Automatically uses lowest entropy to avoid issues such as interpretting
0101
41681 * as hexadecimal which would be
16 bits when really it's only
4 bits of binary
41685 window.Entropy = new (function() {
41687 var TWO = new BigInteger(
2);
41689 // matchers returns an array of the matched events for each type of entropy.
41691 // matchers.binary("
010") returns ["
0", "
1", "
0"]
41692 // matchers.binary("a10") returns ["
1", "
0"]
41693 // matchers.hex("a10") returns ["a", "
1", "
0"]
41695 binary: function(str) {
41696 return str.match(/[
0-
1]/gi) || [];
41698 base6: function(str) {
41699 return str.match(/[
0-
5]/gi) || [];
41701 dice: function(str) {
41702 return str.match(/[
1-
6]/gi) || []; // ie dice numbers
41704 base10: function(str) {
41705 return str.match(/[
0-
9]/gi) || [];
41707 hex: function(str) {
41708 return str.match(/[
0-
9A-F]/gi) || [];
41710 card: function(str) {
41711 // Format is NumberSuit, eg
41712 // AH ace of hearts
41713 //
8C eight of clubs
41714 // TD ten of diamonds
41715 // JS jack of spades
41716 // QH queen of hearts
41717 // KC king of clubs
41718 return str.match(/([A2-
9TJQK][CDHS])/gi) || [];
41722 // Convert array of cards from ["ac", "
4d", "ks"]
41723 // to numbers between
0 and
51 [
0,
16,
51]
41724 function convertCardsToInts(cards) {
41726 var values = "a23456789tjqk";
41727 var suits = "cdhs";
41728 for (var i=
0; i
<cards.length; i++) {
41729 var card = cards[i].toLowerCase();
41730 var value = card[
0];
41731 var suit = card[
1];
41732 var asInt =
13 * suits.indexOf(suit) + values.indexOf(value);
41738 this.fromString = function(rawEntropyStr) {
41739 // Find type of entropy being used (binary, hex, dice etc)
41740 var base = getBase(rawEntropyStr);
41741 // Convert dice to base6 entropy (ie
1-
6 to
0-
5)
41742 // This is done by changing all
6s to
0s
41743 if (base.str ==
"dice") {
41746 for (var i=
0; i
<base.parts.length; i++) {
41747 var c = base.parts[i];
41748 if (
"12345".indexOf(c)
> -
1) {
41749 newParts[i] = base.parts[i];
41750 newInts[i] = base.ints[i];
41757 base.str = "base
6 (dice)";
41758 base.ints = newInts;
41759 base.parts = newParts;
41760 base.matcher = matchers.base6;
41762 // Detect empty entropy
41763 if (base.parts.length ==
0) {
41771 // Convert base.ints to BigInteger.
41772 // Due to using unusual bases, eg cards of base52, this is not as simple as
41773 // using BigInteger.parse()
41774 var entropyInt = BigInteger.ZERO;
41775 for (var i=base.ints.length-
1; i
>=
0; i--) {
41776 var thisInt = BigInteger.parse(base.ints[i]);
41777 var power = (base.ints.length -
1) - i;
41778 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
41779 entropyInt = entropyInt.add(additionalEntropy);
41781 // Convert entropy to binary
41782 var entropyBin = entropyInt.toString(
2);
41783 // If the first integer is small, it must be padded with zeros.
41784 // Otherwise the chance of the first bit being
1 is
100%, which is
41785 // obviously incorrect.
41786 // This is not perfect for non-
2^n bases.
41787 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
41788 while (entropyBin.length < expectedBits) {
41789 entropyBin = "
0" + entropyBin;
41791 // Calculate the number of bits per event
41792 var bitsPerEvent = Math.log2(base.asInt);
41793 // Cards binary must be handled differently, since they're not replaced
41794 if (base.asInt ==
52) {
41795 var cardEntropy = processCardEntropy(base.parts);
41796 entropyBin = cardEntropy.binaryStr;
41797 bitsPerEvent = cardEntropy.bitsPerEvent;
41799 // Supply a 'filtered' entropy string for display purposes
41800 var entropyClean = base.parts.join("");
41801 var entropyHtml = base.parts.join("");
41802 if (base.asInt ==
52) {
41803 entropyClean = base.parts.join(" ").toUpperCase();
41804 entropyClean = entropyClean.replace(/C/g, "\u2663");
41805 entropyClean = entropyClean.replace(/D/g, "\u2666");
41806 entropyClean = entropyClean.replace(/H/g, "\u2665");
41807 entropyClean = entropyClean.replace(/S/g, "\u2660");
41808 entropyHtml = base.parts.join(" ").toUpperCase();
41809 entropyHtml = entropyHtml.replace(/C/g, "
<span class='card-suit club'
>\u2663
</span>");
41810 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'
>\u2666
</span>");
41811 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'
>\u2665
</span>");
41812 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'
>\u2660
</span>");
41814 // Return the result
41816 binaryStr: entropyBin,
41817 cleanStr: entropyClean,
41818 cleanHtml: entropyHtml,
41819 bitsPerEvent: bitsPerEvent,
41825 function getSortedDeck() {
41827 var suits = "CDHS
";
41828 var values = "A23456789TJQK
";
41829 for (var i=0; i<suits.length; i++) {
41830 for (var j=0; j<values.length; j++) {
41831 s.push(values[j]+suits[i]);
41837 function getBase(str) {
41838 // Need to get the lowest base for the supplied entropy.
41839 // This prevents interpreting, say, dice rolls as hexadecimal.
41840 var binaryMatches = matchers.binary(str);
41841 var hexMatches = matchers.hex(str);
41842 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
41843 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
41844 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
41847 parts: binaryMatches,
41848 matcher: matchers.binary,
41853 var cardMatches = matchers.card(str);
41854 if (cardMatches.length >= hexMatches.length / 2) {
41855 var ints = convertCardsToInts(cardMatches);
41858 parts: cardMatches,
41859 matcher: matchers.card,
41864 var diceMatches = matchers.dice(str);
41865 if (diceMatches.length == hexMatches.length && hexMatches.length
> 0) {
41866 var ints = diceMatches.map(function(i) { return parseInt(i) });
41869 parts: diceMatches,
41870 matcher: matchers.dice,
41875 var base6Matches = matchers.base6(str);
41876 if (base6Matches.length == hexMatches.length && hexMatches.length
> 0) {
41877 var ints = base6Matches.map(function(i) { return parseInt(i) });
41880 parts: base6Matches,
41881 matcher: matchers.base6,
41886 var base10Matches = matchers.base10(str);
41887 if (base10Matches.length == hexMatches.length && hexMatches.length
> 0) {
41888 var ints = base10Matches.map(function(i) { return parseInt(i) });
41891 parts: base10Matches,
41892 matcher: matchers.base10,
41897 var ints = hexMatches.map(function(i) { return parseInt(i,
16) });
41901 matcher: matchers.hex,
41903 str:
"hexadecimal",
41907 // Assume cards are NOT replaced.
41908 // Additional entropy decreases as more cards are used. This means
41909 // total possible entropy is measured using n!, not base^n.
41910 // eg the second last card can be only one of two, not one of fifty two
41911 // so the added entropy for that card is only one bit at most
41912 function processCardEntropy(cards) {
41913 // Track how many instances of each card have been used, and thus
41914 // how many decks are in use.
41915 var cardCounts = {};
41916 var numberOfDecks =
0;
41917 // Work out number of decks by max(duplicates)
41918 for (var i=
0; i
<cards.length; i++) {
41919 // Get the card that was drawn
41920 var cardLower = cards[i];
41921 var card = cardLower.toUpperCase();
41922 // Initialize the count for this card if needed
41923 if (!(card in cardCounts)) {
41924 cardCounts[card] =
0;
41926 cardCounts[card] +=
1;
41927 // See if this is max(duplicates)
41928 if (cardCounts[card]
> numberOfDecks) {
41929 numberOfDecks = cardCounts[card];
41932 // Work out the total number of bits for this many decks
41933 // See http://crypto.stackexchange.com/q/
41886
41934 var gainedBits =
0;
41935 // Equivalent of Math.log2(factorial(
52*numberOfDecks))
41936 // which becomes infinity for numberOfDecks
> 4
41937 for (var i=
1; i<=
52*numberOfDecks; i++) {
41938 gainedBits = gainedBits + Math.log2(i);
41940 var lostBits =
52 * Math.log2(factorial(numberOfDecks));
41941 var maxBits = gainedBits - lostBits;
41942 // Convert the drawn cards to a binary representation.
41943 // The exact technique for doing this is unclear.
41945 // http://crypto.stackexchange.com/a/
41896
41946 //
"I even doubt that this is well defined (only the average entropy
41947 // is, I believe)."
41949 // https://github.com/iancoleman/bip39/issues/
33#issuecomment-
263021856
41950 //
"The binary representation can be the first log(permutations,2) bits
41951 // of the sha-2 hash of the normalized deck string."
41953 // In this specific implementation, the first N bits of the hash of the
41954 // normalized cards string is being used. Uppercase, no spaces; eg
41955 // sha256(
"AH8DQSTC2H")
41956 var totalCards = numberOfDecks *
52;
41957 var percentUsed = cards.length / totalCards;
41958 // Calculate the average number of bits of entropy for the number of
41960 var numberOfBits = Math.floor(maxBits * percentUsed);
41961 // Create a normalized string of the selected cards
41962 var normalizedCards = cards.join(
"").toUpperCase();
41963 // Convert to binary using the SHA256 hash of the normalized cards.
41964 // If the number of bits is more than
256, multiple hashes
41965 // are used until the required number of bits is reached.
41966 var entropyBin =
"";
41967 var iterations =
0;
41968 while (entropyBin.length < numberOfBits) {
41969 var hashedCards = sjcl.hash.sha256.hash(normalizedCards +
":" + iterations);
41970 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
41971 for (var i=
0; i
<hashHex.length; i++) {
41972 var decimal = parseInt(hashHex[i],
16);
41973 var binary = decimal.toString(
2);
41974 while (binary.length <
4) {
41975 binary =
"0" + binary;
41977 entropyBin = entropyBin + binary;
41979 iterations = iterations +
1;
41981 // Truncate to the appropriate number of bits.
41982 entropyBin = entropyBin.substring(
0, numberOfBits);
41983 // Get the number of bits per event
41984 bitsPerEvent = maxBits / totalCards;
41986 binaryStr: entropyBin,
41987 bitsPerEvent: bitsPerEvent,
41991 // Polyfill for Math.log2
41992 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
41993 Math.log2 = Math.log2 || function(x) {
41994 // The polyfill isn't good enough because of the poor accuracy of
41996 // log2(
8) gave
2.9999999999999996 which when floored causes issues.
41997 // So instead use the BigInteger library to get it right.
41998 return BigInteger.log(x) / BigInteger.log(
2);
42001 // Depends on BigInteger
42002 function factorial(n) {
42006 f = BigInteger.ONE;
42007 for (var i=
1; i<=n; i++) {
42008 f = f.multiply(new BigInteger(i));
42015 <script>/*! jQuery UI - v1.12
.1 -
2016-
09-
14
42016 * http://jqueryui.com
42017 * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-
1-
7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
42018 * Copyright jQuery Foundation and other contributors; Licensed MIT */
42020 (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[
0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),
10),!isNaN(i)&&
0!==i))return i;t=t.parent()}return
0}function s(){this._curInst=null,this._keyEvent=!
1,this._disabledInputs=[],this._datepickerShowing=!
1,this._inDialog=!
1,this.
_mainDivId="ui-datepicker-div",this.
_inlineClass="ui-datepicker-inline",this.
_appendClass="ui-datepicker-append",this.
_triggerClass="ui-datepicker-trigger",this.
_dialogClass="ui-datepicker-dialog",this.
_disableClass="ui-datepicker-disabled",this.
_unselectableClass="ui-datepicker-unselectable",this.
_currentClass="ui-datepicker-current-day",this.
_dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:
0,isRTL:!
1,showMonthAfterYear:!
1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!
1,hideIfNoPrevNext:!
1,navigationAsDateFormat:!
1,gotoCurrent:!
1,changeMonth:!
1,changeYear:!
1,yearRange:"c-
10:c+
10",showOtherMonths:!
1,selectOtherMonths:!
1,showWeek:!
1,calculateWeek:this.iso8601Week,shortYearCutoff:"+
10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:
1,showCurrentAtPos:
0,stepMonths:
1,stepBigMonths:
12,altField:"",altFormat:"",constrainInput:!
0,showButtonPanel:!
1,autoSize:!
1,disabled:!
1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!
0,{},this.regional[""]),this.regional["en-US"]=t.extend(!
0,{},this.regional.en),this.dpDiv=n(t("
<div id='
"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'
></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a
";return e.on("mouseout
",i,function(){t(this).removeClass("ui-state-hover
"),-1!==this.className.indexOf("ui-datepicker-prev
")&&t(this).removeClass("ui-datepicker-prev-hover
"),-1!==this.className.indexOf("ui-datepicker-next
")&&t(this).removeClass("ui-datepicker-next-hover
")}).on("mouseover
",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar
").find("a
").removeClass("ui-state-hover
"),t(this).addClass("ui-state-hover
"),-1!==this.className.indexOf("ui-datepicker-prev
")&&t(this).addClass("ui-datepicker-prev-hover
"),-1!==this.className.indexOf("ui-datepicker-next
")&&t(this).addClass("ui-datepicker-next-hover
"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change
")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events
"),s&&s.remove&&t(n).triggerHandler("remove
")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".
")[0];e=e.split(".
")[1];var l=h+"-
"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":
"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+".
"+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,
1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!
1):o?t.isFunction(o[n])&&"_"!==n.charAt(
0)?(i=o[n].apply(o,a),i!==o&&void
0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!
1):void
0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void
0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace=".
"+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create
",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled
"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string
"==typeof e)if(a={},s=e.split(".
"),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!
0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!
1})},disable:function(){return this._setOptions({disabled:!
0})},_classes:function(e){function i(i,o){var a,r;for(r=
0;i.length
>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!
0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-
1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!
1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!
0)},_toggleClass:function(t,e,i,s){
s="boolean"==typeof s?s:i;var
n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!
1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!
0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void
0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[
1]+o.eventNamespace,c=h[
2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||
0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[
0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[
0],[i].concat(s))===!
1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!
0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[
0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[
0])*(u.test(t[
0])?e/
100:
1),parseFloat(t[
1])*(u.test(t[
1])?i/
100:
1)]}function i(e,i){return parseInt(t.css(e,i),
10)||
0}function s(e){var i=e[
0];return
9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:
0,left:
0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:
0,height:
0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void
0!==n)return n;var e,i,s=t("
<div style='display:block;position:absolute;width:
50px;height:
50px;overflow:hidden;'
><div style='height:
100px;width:auto;'
></div></div>"),o=s.children()[0];return t("body
").append(s),e=o.offsetWidth,s.css("overflow
","scroll
"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x
"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y
"),n="scroll
"===i||"auto
"===i&&e.width<e.element[0].scrollWidth,o="scroll
"===s||"auto
"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip
").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top
"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my
","at
"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center
"]):h.test(i[0])?["center
"].concat(i):["center
","center
"]),i[0]=r.test(i[0])?i[0]:"center
",i[1]=h.test(i[1])?i[1]:"center
",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right
"===n.at[0]?m.left+=p:"center
"===n.at[0]&&(m.left+=p/2),"bottom
"===n.at[1]?m.top+=f:"center
"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft
"),_=i(this,"marginTop
"),x=l+d+i(this,"marginRight
")+y.width,C=c+_+i(this,"marginBottom
")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right
"===n.my[0]?D.left-=l:"center
"===n.my[0]&&(D.left-=l/2),"bottom
"===n.my[1]?D.top-=c:"center
"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left
","top
"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e
>0?
"right":
"center",vertical:
0>r?"top":s
>0?
"bottom":
"middle"};l
>p&&p
>a(e+i)&&(u.
horizontal="center"),c
>f&&f
>a(s+r)&&(u.
vertical="middle"),u.important=o(a(e),a(i))
>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth
>a?h
>0&&
0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l
>0&&
0>=h?n:h
>l?n+a-e.collisionWidth:n:h
>0?t.left+=h:l
>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight
>a?h
>0&&
0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l
>0&&
0>=h?n:h
>l?n+a-e.collisionHeight:n:h
>0?t.top+=h:l
>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,
d=
"left"===e.my[
0]?-e.elemWidth:
"right"===e.my[
0]?e.elemWidth:
0,
p=
"left"===e.at[
0]?e.targetWidth:
"right"===e.at[
0]?-e.targetWidth:
0,f=-
2*e.offset[
0];
0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(
0>i||a(c)
>i)&&(t.left+=d+p+f)):u
>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s
>0||u
>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,
d="top"===e.my[
1],p=d?-e.elemHeight:"bottom"===e.my[
1]?e.elemHeight:
0,
f="top"===e.at[
1]?e.targetHeight:"bottom"===e.at[
1]?-e.targetHeight:
0,g=-
2*e.offset[
1];
0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(
0>s||a(c)
>s)&&(t.top+=p+f+g)):u
>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i
>0||u
>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[
3])}}),t.fn.extend({disableSelection:function(){var
t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var
c="ui-effects-",
u="ui-effects-style",
d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:
0>t?
0:t
>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!
1):e}),n.length?("
0,
0,
0,
0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+
1)%
1,
1>6*i?t+
6*(e-t)*i:
1>2*i?e:
2>3*i?t+
6*(e-t)*(
2/
3-i):t}var o,
a=
"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{
1,
3})\s*,\s*(\d{
1,
3})\s*,\s*(\d{
1,
3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[
1],t[
2],t[
3],t[
4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[
2.55*t[
1],
2.55*t[
2],
2.55*t[
3],t[
4]]}},{re:/#([a-f0-
9]{
2})([a-f0-
9]{
2})([a-f0-
9]{
2})/,parse:function(t){return[parseInt(t[
1],
16),parseInt(t[
2],
16),parseInt(t[
3],
16)]}},{re:/#([a-f0-
9])([a-f0-
9])([a-f0-
9])/,parse:function(t){return[parseInt(t[
1]+t[
1],
16),parseInt(t[
2]+t[
2],
16),parseInt(t[
3]+t[
3],
16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:
"hsla",parse:function(t){return[t[
1],t[
2]/
100,t[
3]/
100,t[
4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:
0,type:
"byte"},green:{idx:
1,type:
"byte"},blue:{idx:
2,type:
"byte"}}},hsla:{props:{hue:{idx:
0,type:
"degrees"},saturation:{idx:
1,type:
"percent"},lightness:{idx:
2,type:
"percent"}}}},u={
"byte":{floor:!
0,max:
255},percent:{max:
1},degrees:{mod:
360,floor:!
0}},d=l.support={},p=t(
"<p>")[
0],f=t.each;p.style.
cssText=
"background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf(
"rgba")
>-
1,f(c,function(t,e){e.
cache="_"+t,e.props.alpha={idx:
3,type:"percent",def:
1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],
d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!
0)}),u[o]&&
0>t.inArray(null,u[o].slice(
0,
3))&&(u[o][
3]=
1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!
0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=
0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a
>c.mod/
2?a+=c.mod:a-l
>c.mod/
2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(
1===this._rgba[
3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(
1-s)*n[e]+s*t}))},toRgbaString:function(){var
e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e
>2?
1:
0:t});return
1===i[
3]&&(i.pop(),
e=
"rgb("),e+i.join()+
")"},toHslaString:function(){var
e=
"hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e
>2?
1:
0),e&&
3>e&&(t=Math.round(
100*t)+"%"),t});return
1===i[
3]&&(i.pop(),
e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(
255*s)),"#"+t.map(i,function(t){return t=(t||
0).toString(
16),
1===t.length?"
0"+t:t}).join("")},toString:function(){return
0===this._rgba[
3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[
0]||null==t[
1]||null==t[
2])return[null,null,null,t[
3]];var e,i,s=t[
0]/
255,n=t[
1]/
255,o=t[
2]/
255,a=t[
3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=
.5*c;return e=h===r?
0:s===r?
60*(n-o)/l+
360:n===r?
60*(o-s)/l+
120:
60*(s-n)/l+
240,i=
0===l?
0:
.5>=u?l/c:l/(
2-c),[Math.round(e)%
360,i,u,null==a?
1:a]},c.hsla.from=function(t){if(null==t[
0]||null==t[
1]||null==t[
2])return[null,null,null,t[
3]];var e=t[
0]/
360,i=t[
1],s=t[
2],o=t[
3],a=
.5>=s?s*(
1+i):s+i-s*i,r=
2*s-a;return[Math.round(
255*n(r,a,e+
1/
3)),Math.round(
255*n(r,a,e)),Math.round(
255*n(r,a,e-
1/
3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),
u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),
h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[
2])*("+"===o[
1]?
1:-
1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,
r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&
1!==n._rgba[
3]){for(
a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!
0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#
00ffff",black:"#
000000",blue:"#
0000ff",fuchsia:"#ff00ff",gray:"#
808080",green:"#
008000",lime:"#
00ff00",maroon:"#
800000",navy:"#
000080",olive:"#
808000",purple:"#
800080",red:"#ff0000",silver:"#c0c0c0",teal:"#
008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,
0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[
0]&&n[n[
0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:
1,borderBottom:
1,borderColor:
1,borderLeft:
1,borderRight:
1,borderTop:
1,borderWidth:
1,margin:
1,padding:
1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||
1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!
0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[
0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!
1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[
0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length
>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return
"boolean"==typeof s||void
0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),(
"number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?
0:
"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||
"number"==typeof e||t.fx.speeds[e]?!
0:
"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!
0:
"object"!=typeof e||e.effect?!
1:!
0:!
0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||[
"",
0,i,s,
0];return{top:parseFloat(o[
1])||
0,right:
"auto"===o[
2]?i:parseFloat(o[
2]),bottom:
"auto"===o[
3]?s:parseFloat(o[
3]),left:parseFloat(o[
4])||
0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!
1&&t.extend(t.effects,{save:function(t,e){for(var i=
0,s=e.length;s
>i;i++)null!==e[i]&&t.data(c+e[i],t[
0].style[e[i]])},restore:function(t,e){for(var i,s=
0,n=e.length;n
>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!
0),height:e.outerHeight(!
0),"float":e.css("float")},s=t("
<div></div>").addClass("ui-effects-wrapper
").css({fontSize:"100%
",background:"transparent
",border:"none
",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus
"),s=e.parent(),"static
"===e.css("position
")?(s.css({position:"relative
"}),e.css({position:"relative
"})):(t.extend(i,{position:e.css("position
"),zIndex:e.css("z-index
")}),t.each(["top
","left
","bottom
","right
"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto
")}),e.css({position:"relative
",top:0,left:0,right:"auto
",bottom:"auto
"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper
")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus
")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect
"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal
"!==i?(e||100)/100:1,n="vertical
"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden
");return"toggle
"===e&&(e=i?"show
":"hide
"),(i?"hide
"===e:"show
"===e)&&(e="none
"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top
":i=0;break;case"middle
":i=.5;break;case"bottom
":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left
":s=0;break;case"center
":s=.5;break;case"right
":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position
"),n=e.position();return e.css({marginTop:e.css("marginTop
"),marginBottom:e.css("marginBottom
"),marginLeft:e.css("marginLeft
"),marginRight:e.css("marginRight
")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute
",i=t("<
"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display
"))?"inline-block
":"block
",visibility:"hidden
",marginTop:e.css("marginTop
"),marginBottom:e.css("marginBottom
"),marginLeft:e.css("marginLeft
"),marginRight:e.css("marginRight
"),"float
":e.css("float
")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder
"),e.data(c+"placeholder
",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder
",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide
"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none
"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden
")?"hide
"===l:"show
"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx
",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show
"===s||s===o&&"hide
"===s)&&i.show(),o&&"none
"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show
",this.effect.call(this,n)
42021 }}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide
",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean
"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle
",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em
","px
","%
","pt
"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip
","rect(
"+t.top+"px
"+t.right+"px
"+t.bottom+"px
"+t.left+"px)
"):s(this.css("clip
"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed
"===n.css("position
"),a=t("body
"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'
></div>").appendTo("body
").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed
":"absolute
"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string
"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad
","Cubic
","Quart
","Quint
","Expo
"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return
1-i(
1-t)},t.easing["easeInOut"+e]=function(t){return
.5>t?i(
2*t)/
2:
1-i(-
2*t+
2)/
2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][
0]]=r.clip[s[o][
1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!
1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,
h="hide"===r,
l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||
5,p=
2*d+(l||h?
1:
0),f=e.duration/p,g=e.easing,
m="up"===c||"down"===c?"top":"left",
_="up"===c||"left"===c,v=
0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/
3),l&&(n={opacity:
1},n[m]=o,a.css("opacity",
0).css(m,_?
2*-u:
2*u).animate(n,f,g)),h&&(u/=Math.pow(
2,d-
1)),n={},n[m]=o;d
>v;v++)s={},s[m]=(_?"
-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?
2*u:u/
2;h&&(s={opacity:
0},s[m]=(_?"
-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+
1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",
r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/
2:s.top,right:h?(s.right-s.left)/
2:s.right,bottom:l?(s.bottom-s.top)/
2:s.bottom,left:h?(s.right-s.left)/
2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!
1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,
a="show"===o,r=e.direction||"left",
h="up"===r||"down"===r?"top":"left",
l="up"===r||"left"===r?"
-=":"+=",
c="+="===l?"
-=":"+=",u={opacity:
0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!
0)/
2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=
1),n.animate(u,{queue:!
1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):
3,d=u,p=t(this),f=e.mode,
g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=
0;u
>o;o++)for(h=m.top+o*v,c=o-(u-
1)/
2,a=
0;d
>a;a++)r=m.left+a*_,l=a-(d-
1)/
2,p.clone().appendTo("body").wrap("
<div></div>").css({position:"absolute
",visibility:"visible
",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode
").css({position:"absolute
",overflow:"hidden
",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade
","toggle
",function(e,i){var s="show
"===e.mode;t(this).css("opacity
",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold
","hide
",function(e,i){var s=t(this),n=e.mode,o="show
"===n,a="hide
"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right
","bottom
"]:["bottom
","right
"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight
","show
",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor
")};"hide
"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none
",backgroundColor:e.color||"#ffff99
"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size
",function(e,i){var s,n,o,a=t(this),r=["fontSize
"],h=["borderTopWidth
","borderBottomWidth
","paddingTop
","paddingBottom
"],l=["borderLeftWidth
","borderRightWidth
","paddingLeft
","paddingRight
"],c=e.mode,u="effect
"!==c,d=e.scale||"both
",p=e.origin||["middle
","center
"],f=a.css("position
"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show
"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box
"===d||"both
"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content
"===d||"both
"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content
"===d||"both
"===d)&&(h=h.concat(["marginTop
","marginBottom
"]).concat(r),l=l.concat(["marginLeft
","marginRight
"]),a.find("*[width]
").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity
",_.opacity),u||(a.css("position
","static
"===f?"relative
":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale
",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect
"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both
"),origin:e.origin||["middle
","center
"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff
","hide
",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate
","show
",function(e,i){var s=t(this),n=e.mode,o="show
"===n,a="hide
"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible
"))&&(s.css("opacity
",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=
1,n=t(this),o=e.direction||"left",a=e.distance||
20,r=e.times||
3,h=
2*r+
1,l=Math.round(e.duration/h),
c="up"===o||"down"===o?"top":"left",
u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"
-=":"+=")+a,p[c]=(u?"+=":"
-=")+
2*a,f[c]=(u?"
-=":"+=")+
2*a,n.animate(d,l,e.easing);r
>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/
2,e.easing).queue(i),t.effects.unshift(n,g,h+
1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",
l="up"===h||"down"===h?"top":"left",
c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!
0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-
1:
1)*u+n,d.clip=o.cssClip(),d.clip[a[h][
1]]=d.clip[a[h][
0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!
1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!
1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length
>0&&a.is(
":visible")):!
1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest(
"fieldset")[
0],h&&(r=!h.disabled))):
r=
"a"===l?i.href||s:s,r&&t(i).is(
":visible")&&e(t(i)))},t.extend(t.expr[
":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,
"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return
"string"==typeof this[
0].form?this.closest(
"form"):t(this[
0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data(
"ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data(
"ui-form-reset-instances")||[];t.length||this.form.on(
"reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data(
"ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data(
"ui-form-reset-instances");e.splice(t.inArray(this,e),
1),e.length?this.form.data(
"ui-form-reset-instances",e):this.form.removeData(
"ui-form-reset-instances").off(
"reset.ui-form-reset")}}},
"1.7"===t.fn.jquery.substring(
0,
3)&&(t.each([
"Width",
"Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,
"padding"+this))||
0,s&&(i-=parseFloat(t.css(e,
"border"+this+
"Width"))||
0),o&&(i-=parseFloat(t.css(e,
"margin"+this))||
0)}),i}var
n=
"Width"===i?[
"Left",
"Right"]:[
"Top",
"Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn[
"inner"+i]=function(e){return void
0===e?a[
"inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+
"px")})},t.fn[
"outer"+i]=function(e,n){return
"number"!=typeof e?a[
"outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!
0,n)+
"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:
8,COMMA:
188,DELETE:
46,DOWN:
40,END:
35,ENTER:
13,ESCAPE:
27,HOME:
36,LEFT:
37,PAGE_DOWN:
34,PAGE_UP:
33,PERIOD:
190,RIGHT:
39,SPACE:
32,TAB:
9,UP:
38},t.ui.escapeSelector=function(){var t=/([!
"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$
1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[
0].labels&&this[
0].labels.length?this.pushStack(this[
0].labels):(n=this.eq(
0).parents("label"),s=this.attr("id"),s&&(e=this.eq(
0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),
i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),
s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!
1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(
0);return"fixed"!==i&&o.length?o:t(this[
0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i
>=
0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=
0;return function(){return this.each(function(){this.id||(this.
id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"
1.12.1",options:{active:
0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!
1,event:"click",header:"
> li
> :first-child,
> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-
1-s",header:"ui-icon-triangle-
1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!
1&&null!=e.active||(e.active=
0),this._processPanels(),
0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("
<span>"),this._addClass(e,"ui-accordion-header-icon
","ui-icon
"+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon
"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons
"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons
"),this.headers.children(".ui-accordion-header-icon
").remove()},_destroy:function(){var t;this.element.removeAttr("role
"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex
").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display
","").removeAttr("role aria-hidden aria-labelledby
").removeUniqueId(),"content
"!==this.options.heightStyle&&t.css("height
","")},_setOption:function(t,e){return"active
"===t?(this._activate(e),void 0):("event
"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible
"!==t||e||this.options.active!==!1||this._activate(0),"icons
"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled
",t),this._toggleClass(null,"ui-state-disabled
",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled
",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex
",-1),t(o).attr("tabIndex
",0),t(o).trigger("focus
"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus
")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled
").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed
","ui-state-default
"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)
").hide(),this._addClass(this.panels,"ui-accordion-content
","ui-helper-reset ui-widget-content
"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active
","ui-state-active
")._removeClass(this.active,"ui-accordion-header-collapsed
"),this._addClass(this.active.next(),"ui-accordion-content-active
"),this.active.next().show(),this.headers.attr("role
","tab
").each(function(){var e=t(this),i=e.uniqueId().attr("id
"),s=e.next(),n=s.uniqueId().attr("id
");e.attr("aria-controls
",n),s.attr("aria-labelledby
",i)}).next().attr("role
","tabpanel
"),this.headers.not(this.active).attr({"aria-selected
":"false
","aria-expanded
":"false
",tabIndex:-1}).next().attr({"aria-hidden
":"true
"}).hide(),this.active.length?this.active.attr({"aria-selected
":"true
","aria-expanded
":"true
",tabIndex:0}).next().attr({"aria-hidden
":"false
"}):this.headers.eq(0).attr("tabIndex
",0),this._createIcons(),this._setupEvents(i.event),"fill
"===s?(e=n.height(),this.element.siblings(":visible
").each(function(){var i=t(this),s=i.css("position
");"absolute
"!==s&&"fixed
"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow
","auto
")):"auto
"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible
");i||t(this).show(),e=Math.max(e,t(this).css("height
","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number
"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown
"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler
"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown
"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate
",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active
","ui-state-active
"),n.icons&&(i=o.children(".ui-accordion-header-icon
"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed
")._addClass(a,"ui-accordion-header-active
","ui-state-active
"),n.icons&&(s=a.children(".ui-accordion-header-icon
"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active
")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden
":"true
"}),s.prev().attr({"aria-selected
":"false
","aria-expanded
":"false
"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded
":"false
"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex
"),10)}).attr("tabIndex
",-1),i.attr("aria-hidden
","false
").prev().attr({"aria-selected
":"true
","aria-expanded
":"true
",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing
"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number
"==typeof u&&(o=u),"string
"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height
"!==i.prop?"content-box
"===h&&(r+=i.now):"content
"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active
"),this._removeClass(i,"ui-accordion-header-active
")._addClass(i,"ui-accordion-header-collapsed
"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate
",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu
",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-
1-e
"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!
1,this.element.uniqueId().attr({role:this.options.role,tabIndex:
0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[
0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!
0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!
0]),this.active&&
1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[
0]===s[
0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(
0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[
0],t.ui.safeActiveElement(this.document[
0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!
1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!
0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!
1,s=this.previousFilter||"",o=!
1,n=e.keyCode
>=
96&&
105>=e.keyCode?""+(e.keyCode-
96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!
0:n=s+n,i=this._filterMenuItems(n),i=o&&-
1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},
1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("
<span>").data("ui-menu-submenu-caret
",!0);a._addClass(s,"ui-menu-icon
","ui-icon
"+r),i.attr("aria-haspopup
","true
").prepend(s),e.attr("aria-labelledby
",i.attr("id
"))}),this._addClass(s,"ui-menu
","ui-widget ui-widget-content ui-front
"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item
").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider
","ui-widget-content
")}),n=i.not(".ui-menu-item, .ui-menu-divider
"),o=n.children().not(".ui-menu
").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item
")._addClass(o,"ui-menu-item-wrapper
"),i.filter(".ui-state-disabled
").attr("aria-disabled
","true
"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem
",listbox:"option
"}[this.options.role]},_setOption:function(t,e){if("icons
"===t){var i=this.element.find(".ui-menu-icon
");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled
",t+""),this._toggleClass(null,"ui-state-disabled
",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus
"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper
"),this._addClass(s,null,"ui-state-active
"),this.options.role&&this.element.attr("aria-activedescendant
",s.attr("id
")),n=this.active.parent().closest(".ui-menu-item
").children(".ui-menu-item-wrapper
"),this._addClass(n,null,"ui-state-active
"),t&&"keydown
"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu
"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus
",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth
"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop
"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(
s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-
1):this.active[t+"All"](".ui-menu-item").eq(
0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),
0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void
0):(this.next(e),void
0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n
>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void
0):(this.next(e),void
0)},_hasScroll:function(){return this.element.outerHeight()
<this.element.prop(
"scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(
".ui-menu-item");var i={item:this.active};this.active.has(
".ui-menu").length||this.collapseAll(e,!
0),this._trigger(
"select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,
"\\$&"),s=RegExp(
"^"+i,
"i");return this.activeMenu.find(this.options.items).filter(
".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(
".ui-menu-item-wrapper").text()))})}}),t.widget(
"ui.autocomplete",{version:
"1.12.1",defaultElement:
"<input>",options:{appendTo:null,autoFocus:!
1,delay:
300,minLength:
1,position:{my:
"left top",at:
"left bottom",collision:
"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:
0,pending:
0,_create:function(){var e,i,s,n=this.element[
0].nodeName.toLowerCase(),
o=
"textarea"===n,
a=
"input"===n;
42022 this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?
"val":
"text"],this.isNewMenu=!
0,this._addClass(
"ui-autocomplete-input"),this.element.attr(
"autocomplete",
"off"),this._on(this.element,{keydown:function(n){if(this.element.prop(
"readOnly"))return e=!
0,s=!
0,i=!
0,void
0;e=!
1,s=!
1,i=!
1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!
0,this._move(
"previousPage",n);break;case o.PAGE_DOWN:e=!
0,this._move(
"nextPage",n);break;case o.UP:e=!
0,this._keyEvent(
"previous",n);break;case o.DOWN:e=!
0,this._keyEvent(
"next",n);break;case o.ENTER:this.menu.active&&(e=!
0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(
":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!
0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!
1,(!this.isMultiLine||this.menu.element.is(
":visible"))&&s.preventDefault(),void
0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move(
"previousPage",s);break;case n.PAGE_DOWN:this._move(
"nextPage",s);break;case n.UP:this._keyEvent(
"previous",s);break;case n.DOWN:this._keyEvent(
"next",s)}}},input:function(t){return s?(s=!
1,t.preventDefault(),void
0):(this._searchTimeout(t),void
0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void
0):(clearTimeout(this.searching),this.close(t),this._change(t),void
0)}}),this._initSource(),this.menu=t(
"<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu(
"instance"),this._addClass(this.menu.element,
"ui-autocomplete",
"ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!
0,this._delay(function(){delete this.cancelBlur,this.element[
0]!==t.ui.safeActiveElement(this.document[
0])&&this.element.trigger(
"focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!
1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one(
"mousemove",function(){t(e.target).trigger(e.originalEvent)}),void
0):(n=i.item.data(
"ui-autocomplete-item"),!
1!==this._trigger(
"focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr(
"aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t(
"<div>").text(s).appendTo(this.liveRegion)),void
0)},menuselect:function(e,i){var s=i.item.data(
"ui-autocomplete-item"),n=this.previous;this.element[
0]!==t.ui.safeActiveElement(this.document[
0])&&(this.element.trigger(
"focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!
1!==this._trigger(
"select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t(
"<div>",{role:
"status",
"aria-live":
"assertive",
"aria-relevant":
"additions"}).appendTo(this.document[
0].body),this._addClass(this.liveRegion,null,
"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr(
"autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr(
"autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),
"source"===t&&this._initSource(),
"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),
"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[
0];return e.target===this.element[
0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(
0)),e&&e[
0]||(e=this.element.closest(
".ui-front, dialog")),e.length||(e=this.document[
0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):
"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:
"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(
":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length
<this.options.minLength?this.close(e):this._trigger(
"search",e)!==!
1?this._search(t):void
0},_search:function(t){this.pending++,this._addClass(
"ui-autocomplete-loading"),this.cancelSearch=!
1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass(
"ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger(
"response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger(
"open")):this._close()},close:function(t){this.cancelSearch=!
0,this._close(t)},_close:function(t){this._off(this.document,
"mousedown"),this.menu.element.is(
":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!
0,this._trigger(
"close",t))},_change:function(t){this.previous!==this._value()&&this._trigger(
"change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[
0].label&&e[
0].value?e:t.map(e,function(e){return
"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!
0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:
"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width(
"").outerWidth()+
1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data(
"ui-autocomplete-item",e)},_renderItem:function(e,i){return t(
"<li>").append(t(
"<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(
":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void
0):(this.menu[t](e),void
0):(this.search(null,e),void
0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(
":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!
1;var e=t.prop(
"contentEditable");return
"inherit"===e?this._isContentEditable(t.parent()):
"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,
"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),
"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget(
"ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:
"No search results.",results:function(t){return t+(t
>1?
" results are":
" result is")+
" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t(
"<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){
2,
6}/g;t.widget(
"ui.controlgroup",{version:
"1.12.1",defaultElement:
"<div>",options:{direction:
"horizontal",disabled:null,onlyVisible:!
0,items:{button:
"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:
".ui-controlgroup-label",checkboxradio:
"input[type='checkbox'], input[type='radio']",selectmenu:
"select",spinner:
".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr(
"role",
"toolbar"),this.refresh()},_destroy:function(){this._callChildMethod(
"destroy"),this.childWidgets.removeData(
"ui-controlgroup-data"),this.element.removeAttr(
"role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(
".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?
"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(
".ui-controlgroup-label-contents").length||e.contents().wrapAll(
"<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,
"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void
0):(t.fn[s]&&(a=e[
"_"+s+
"Options"]?e[
"_"+s+
"Options"](
"middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s](
"instance"),r=t.widget.extend({},a);if(
"button"!==s||!n.parent(
".ui-spinner").length){o||(o=n[s]()[s](
"instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s](
"widget");t.data(h[
0],
"ui-controlgroup-data",o?o:n[s](
"instance")),i.push(h[
0])}})),void
0):void
0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,
"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data(
"ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var
i=
"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,
"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var
i=
"vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:
"",first:
"ui-corner-"+(i?
"top":
"left"),last:
"ui-corner-"+(i?
"bottom":
"right"),only:
"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,
"ui-spinner");return e.classes[
"ui-spinner-up"]=
"",e.classes[
"ui-spinner-down"]=
"",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,
"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,
"ui-checkboxradio-label")},_selectmenuOptions:function(t){var
e=
"vertical"===this.options.direction;return{width:e?
"auto":!
1,classes:{middle:{
"ui-selectmenu-button-open":
"",
"ui-selectmenu-button-closed":
""},first:{
"ui-selectmenu-button-open":
"ui-corner-"+(e?
"top":
"tl"),
"ui-selectmenu-button-closed":
"ui-corner-"+(e?
"top":
"left")},last:{
"ui-selectmenu-button-open":e?
"":
"ui-corner-tr",
"ui-selectmenu-button-closed":
"ui-corner-"+(e?
"bottom":
"right")},only:{
"ui-selectmenu-button-open":
"ui-corner-top",
"ui-selectmenu-button-closed":
"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||
"";o=t.trim(o.replace(g,
"")),s[n]=(o+
" "+e[n]).replace(/\s+/g,
" ")}),s},_setOption:function(t,e){return
"direction"===t&&this._removeClass(
"ui-controlgroup-"+this.options.direction),this._super(t,e),
"disabled"===t?(this._callChildMethod(e?
"disable":
"enable"),void
0):(this.refresh(),void
0)},refresh:function(){var e,i=this;this._addClass(
"ui-controlgroup ui-controlgroup-"+this.options.direction),
"horizontal"===this.options.direction&&this._addClass(null,
"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(
":visible")),e.length&&(t.each([
"first",
"last"],function(t,s){var n=e[s]().data(
"ui-controlgroup-data");if(n&&i[
"_"+n.widgetName+
"Options"]){var o=i[
"_"+n.widgetName+
"Options"](
1===e.length?
"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod(
"refresh"))}}),t.widget(
"ui.checkboxradio",[t.ui.formResetMixin,{version:
"1.12.1",options:{disabled:null,label:null,icon:!
0,classes:{
"ui-checkboxradio-label":
"ui-corner-all",
"ui-checkboxradio-icon":
"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-
1]),this.label.length||t.error(
"No label found for checkboxradio widget"),this.
originalLabel=
"",this.label.contents().not(this.element[
0]).each(function(){s.originalLabel+=
3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[
0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[
0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[
0].disabled),this._setOption(
"disabled",this.options.disabled),this._addClass(
"ui-checkboxradio",
"ui-helper-hidden-accessible"),this._addClass(this.label,
"ui-checkboxradio-label",
"ui-button ui-widget"),
"radio"===this.type&&this._addClass(this.label,
"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,
"ui-checkboxradio-checked",
"ui-state-active"),this.icon&&this._addClass(this.icon,null,
"ui-state-hover")),this._on({change:
"_toggleClasses",focus:function(){this._addClass(this.label,null,
"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,
"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[
0].nodeName.toLowerCase();this.type=this.element[
0].type,
"input"===e&&/radio|checkbox/.test(this.type)||t.error(
"Can't create checkboxradio on element.nodeName="+e+
" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[
0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[
0].name,
s=
"input[name='"+t.ui.escapeSelector(i)+
"']";return i?(e=this.form.length?t(this.form[
0].elements).filter(s):t(s).filter(function(){return
0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[
0].checked;this._toggleClass(this.label,
"ui-checkboxradio-checked",
"ui-state-active",e),this.options.icon&&
"checkbox"===this.type&&this._toggleClass(this.icon,null,
"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,
"ui-icon-blank",!e),
"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio(
"instance");e&&e._removeClass(e.label,
"ui-checkboxradio-checked",
"ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return
"label"!==t||e?(this._super(t,e),
"disabled"===t?(this._toggleClass(this.label,null,
"ui-state-disabled",e),this.element[
0].disabled=e,void
0):(this.refresh(),void
0)):void
0},_updateIcon:function(e){var
i=
"ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(
"<span>"),this.iconSpace=t(
"<span> </span>"),this._addClass(this.iconSpace,
"ui-checkboxradio-icon-space")),
"checkbox"===this.type?(i+=e?
"ui-icon-check ui-state-checked":
"ui-icon-blank",this._removeClass(this.icon,null,e?
"ui-icon-blank":
"ui-icon-check")):i+=
"ui-icon-blank",this._addClass(this.icon,
"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,
"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void
0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[
0]);this.icon&&(t=t.not(this.icon[
0])),this.iconSpace&&(t=t.not(this.iconSpace[
0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[
0].checked,e=this.element[
0].disabled;this._updateIcon(t),this._toggleClass(this.label,
"ui-checkboxradio-checked",
"ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget(
"ui.button",{version:
"1.12.1",defaultElement:
"<button>",options:{classes:{
"ui-button":
"ui-corner-all"},disabled:null,icon:null,iconPosition:
"beginning",label:null,showLabel:!
0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is(
"input"),t=this.element[
0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!
0),null==this.options.disabled&&(this.options.disabled=this.element[
0].disabled||!
1),this.hasTitle=!!this.element.attr(
"title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass(
"ui-button",
"ui-widget"),this._setOption(
"disabled",this.options.disabled),this._enhance(),this.element.is(
"a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[
0].click?this.element[
0].click():this.element.trigger(
"click"))}})},_enhance:function(){this.element.is(
"button")||this.element.attr(
"role",
"button"),this.options.icon&&(this._updateIcon(
"icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr(
"title"),this.options.showLabel||this.title||this.element.attr(
"title",this.options.label)},_updateIcon:function(e,i){var
s=
"iconPosition"!==e,n=s?this.options.iconPosition:i,
o=
"top"===n||
"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t(
"<span>"),this._addClass(this.icon,
"ui-button-icon",
"ui-icon"),this.options.showLabel||this._addClass(
"ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,
"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t(
"<span> </span>"),this._addClass(this.iconSpace,
"ui-button-icon-space")),this._removeClass(this.icon,null,
"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr(
"role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr(
"title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?
"before":
"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?
"append":
"prepend"](this.icon)},_setOptions:function(t){var e=void
0===t.showLabel?this.options.showLabel:t.showLabel,i=void
0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!
0),this._super(t)},_setOption:function(t,e){
"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),
"iconPosition"===t&&this._updateIcon(t,e),
"showLabel"===t&&(this._toggleClass(
"ui-button-icon-only",null,!e),this._updateTooltip()),
"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),
"disabled"===t&&(this._toggleClass(null,
"ui-state-disabled",e),this.element[
0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is(
"input, button")?this.element[
0].disabled:this.element.hasClass(
"ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!
1&&(t.widget(
"ui.button",t.ui.button,{options:{text:!
0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.
iconPosition=
"end"),this._super()},_setOption:function(t,e){return
"text"===t?(this._super(
"showLabel",e),void
0):(
"showLabel"===t&&(this.options.text=e),
"icon"===t&&(this.options.icons.primary=e),
"icons"===t&&(e.primary?(this._super(
"icon",e.primary),this._super(
"iconPosition",
"beginning")):e.secondary&&(this._super(
"icon",e.secondary),this._super(
"iconPosition",
"end"))),this._superApply(arguments),void
0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&
"INPUT"!==this[
0].tagName||this.length&&
"INPUT"===this[
0].tagName&&
"checkbox"!==this.attr(
"type")&&
"radio"!==this.attr(
"type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error(
"Checkboxradio widget missing"),
0===arguments.length?this.checkboxradio({icon:!
1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error(
"Controlgroup widget missing"),
"option"===arguments[
0]&&
"items"===arguments[
1]&&arguments[
2]?this.controlgroup.apply(this,[arguments[
0],
"items.button",arguments[
2]]):
"option"===arguments[
0]&&
"items"===arguments[
1]?this.controlgroup.apply(this,[arguments[
0],
"items.button"]):(
"object"==typeof arguments[
0]&&arguments[
0].items&&(arguments[
0].items={button:arguments[
0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:
"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:
"hasDatepicker",maxRows:
4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),
n=
"div"===s||
"span"===s,e.id||(this.uuid+=
1,e.
id=
"dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),
"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[
0].id.replace(/([^A-Za-z0-
9_\-])/g,
"\\\\$1");return{id:s,input:e,selectedDay:
0,selectedMonth:
0,selectedYear:
0,drawMonth:
0,drawYear:
0,inline:i,dpDiv:i?n(t(
"<div class='"+this._inlineClass+
" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on(
"keydown",this._doKeyDown).on(
"keypress",this._doKeyPress).on(
"keyup",this._doKeyUp),this._autoSize(i),t.data(e,
"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,
"appendText"),r=this._get(i,
"isRTL");i.append&&i.append.remove(),a&&(i.append=t(
"<span class='"+this._appendClass+
"'>"+a+
"</span>"),e[r?
"before":
"after"](i.append)),e.off(
"focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,
"showOn"),(
"focus"===s||
"both"===s)&&e.on(
"focus",this._showDatepicker),(
"button"===s||
"both"===s)&&(n=this._get(i,
"buttonText"),o=this._get(i,
"buttonImage"),i.trigger=t(this._get(i,
"buttonImageOnly")?t(
"<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t(
"<button type='button'></button>").addClass(this._triggerClass).html(o?t(
"<img/>").attr({src:o,alt:n,title:n}):n)),e[r?
"before":
"after"](i.trigger),i.trigger.on(
"click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[
0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[
0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[
0])):t.datepicker._showDatepicker(e[
0]),!
1}))},_autoSize:function(t){if(this._get(t,
"autoSize")&&!t.inline){var e,i,s,n,o=new Date(
2009,
11,
20),a=this._get(t,
"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=
0,s=
0,n=
0;t.length
>n;n++)t[n].length
>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+
20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!
0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=
1,
r="dp"+this.uuid,this._dialogInput=t("
<input type='text' id='
"+r+"' style='position: absolute; top: -
100px; width:
0px;'
/>"),this._dialogInput.on("keydown
",this._doKeyDown),t("body
").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker
",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left
",this._pos[0]+20+"px
").css("top
",this._pos[1]+"px
"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker
",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker
");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker
"),"input
"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus
",this._showDatepicker).off("keydown
",this._doKeyDown).off("keypress
",this._doKeyPress).off("keyup
",this._doKeyUp)):("div
"===i||"span
"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker
");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input
"===i?(e.disabled=!1,o.trigger.filter("button
").each(function(){this.disabled=!1}).end().filter("img
").css({opacity:"1.0",cursor:""})):("div
"===i||"span
"===i)&&(s=n.children(".
"+this._inlineClass),s.children().removeClass("ui-state-disabled
"),s.find("select.ui-datepicker-month, select.ui-datepicker-year
").prop("disabled
",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker
");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input
"===i?(e.disabled=!0,o.trigger.filter("button
").each(function(){this.disabled=!0}).end().filter("img
").css({opacity:"0.5",cursor:"default
"})):("div
"===i||"span
"===i)&&(s=n.children(".
"+this._inlineClass),s.children().addClass("ui-state-disabled
"),s.find("select.ui-datepicker-month, select.ui-datepicker-year
").prop("disabled
",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return
2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!
0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void
0!==n.dateFormat&&void
0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void
0!==n.dateFormat&&void
0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void
0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!
0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!
0,t.datepicker._datepickerShowing)switch(e.keyCode){case
9:t.datepicker._hideDatepicker(),a=!
1;break;case
13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[
0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[
0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[
0]:null,[s,o])):t.datepicker._hideDatepicker(),!
1;case
27:t.datepicker._hideDatepicker();break;case
33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case
34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case
35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case
36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case
37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?
1:-
1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case
38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-
7,"D"),a=e.ctrlKey||e.metaKey;break;case
39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-
1:
1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case
40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,
7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!
1}else
36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!
1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" "
>s||!i||i.indexOf(s)
>-
1):void
0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!
0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[
0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!
0,!
0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[
0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!
1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.
value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[
1]+=e.offsetHeight),r=!
1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[
0],top:t.datepicker._pos[
1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-
1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+
1),t.datepicker._datepickerShowing=!
0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
42023 }},_updateDatepicker:function(e){this.maxRows=
4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[
1],a=
17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length
>0&&o.apply(r.get(
0)),e.dpDiv.removeClass(
"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(
""),n
>1&&e.dpDiv.addClass(
"ui-datepicker-multi-"+n).css(
"width",a*n+
"em"),e.dpDiv[(
1!==s[
0]||
1!==s[
1]?
"add":
"remove")+
"Class"](
"ui-datepicker-multi"),e.dpDiv[(this._get(e,
"isRTL")?
"add":
"remove")+
"Class"](
"ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger(
"focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find(
"select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},
0))},_shouldFocusInput:function(t){return t.input&&t.input.is(
":visible")&&!t.input.is(
":disabled")&&!t.input.is(
":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():
0,r=e.input?e.input.outerHeight():
0,h=document.documentElement.clientWidth+(s?
0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?
0:t(document).scrollTop());return i.left-=this._get(e,
"isRTL")?n-a:
0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():
0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():
0,i.left-=Math.min(i.left,i.left+n
>h&&h
>n?Math.abs(i.left+n-h):
0),i.top-=Math.min(i.top,i.top+o
>l&&l
>o?Math.abs(o+r):
0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||
1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!
1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[
0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"
0",top:"-
100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!
1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[
0]);(i[
0].id!==t.datepicker._mainDivId&&
0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[
0]);this._isDisabledDatepicker(n[
0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):
0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[
0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[
0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,
10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[
0])||(o=this._getInst(a[
0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[
0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[
0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[
0],"object"!=typeof o.input[
0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e
>0&&
6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+
4-(i.getDay()||
7)),e=i.getTime(),i.setMonth(
0),i.setDate(
1),Math.floor(Math.round((e-i)/
864e5)/
7)+
1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(
i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=
0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,
c="string"!=typeof l?l:(new Date).getFullYear()%
100+parseInt(l,
10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-
1,m=-
1,_=-
1,v=-
1,b=!
1,y=function(t){var i=e.length
>n+
1&&e.charAt(n+
1)===t;return i&&n++,i},w=function(t){var e=y(t),
s="@"===t?
14:"!"===t?
20:"y"===t&&e?
4:"o"===t?
3:
2,
n="y"===t?s:
1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[
0].length,parseInt(a[
0],
10)},k=function(e,s,n){var o=-
1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[
1].length-e[
1].length)});if(t.each(a,function(t,e){var s=e[
1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[
0],h+=s.length,!
1):void
0}),-
1!==o)return o+
1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=
0;e.length
>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!
1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+
1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/
1e4),g=r.getFullYear(),m=r.getMonth()+
1,_=r.getDate();break;case"'":y("'")?x():b=!
0;break;default:x()}if(i.length
>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-
1===g?g=(new Date).getFullYear():
100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%
100+(c
>=g?
0:-
100)),v
>-
1)for(m=
1,_=v;;){if(o=this._getDaysInMonth(g,m-
1),o
>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-
1,_)),r.getFullYear()!==g||r.getMonth()+
1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:
1e7*
60*
60*
24*(
718685+Math.floor(
492.5)-Math.floor(
19.7)+Math.floor(
4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length
>s+
1&&t.charAt(s+
1)===e;return i&&s++,i},l=function(t,e,i){var
s=""+e;if(h(t))for(;i
>s.length;)
s="
0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},
u="",d=!
1;if(e)for(s=
0;t.length
>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!
1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),
2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),
0,
0).getTime())/
864e5),
3);break;case"m":u+=l("m",e.getMonth()+
1,
2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(
10>e.getFullYear()%
100?"
0":"")+e.getFullYear()%
100;break;case"@":u+=e.getTime();break;case"!":u+=
1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!
0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,
i="",s=!
1,n=function(i){var s=t.length
>e+
1&&t.charAt(e+
1)===i;return s&&e++,s};for(e=
0;t.length
>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!
1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="
0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!
0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void
0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():
0,t.currentMonth=s?o.getMonth():
0,t.currentYear=s?o.getFullYear():
0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[
0-
9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[
2]||"d"){case"d":case"D":r+=parseInt(l[
1],
10);break;case"w":case"W":r+=
7*parseInt(l[
1],
10);break;case"m":case"M":a+=parseInt(l[
1],
10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[
1],
10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(
0),a.setMinutes(
0),a.setSeconds(
0),a.setMilliseconds(
0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()
>12?t.getHours()+
2:
0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?
"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&
""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,
"stepMonths"),
s=
"#"+e.id.replace(/\\\\/g,
"\\");e.dpDiv.find(
"[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,
"M")},next:function(){t.datepicker._adjustDate(s,+i,
"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute(
"data-month"),+this.getAttribute(
"data-year"),this),!
1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,
"M"),!
1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,
"Y"),!
1}};t(this).on(this.getAttribute(
"data-event"),e[this.getAttribute(
"data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,
"isRTL"),j=this._get(t,
"showButtonPanel"),q=this._get(t,
"hideIfNoPrevNext"),K=this._get(t,
"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,
"showCurrentAtPos"),$=this._get(t,
"stepMonths"),X=
1!==U[
0]||
1!==U[
1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(
9999,
9,
9)),Q=this._getMinMaxDate(t,
"min"),J=this._getMinMaxDate(t,
"max"),Z=t.drawMonth-V,te=t.drawYear;if(
0>Z&&(Z+=
12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[
0]*U[
1]+
1,J.getDate())),e=Q&&Q
>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,
1))
>e;)Z--,
0>Z&&(Z=
11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,
1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-
1,te,Z)?"
<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='
"+i+"'
><span class='ui-icon ui-icon-circle-triangle-
"+(Y?"e
":"w
")+"'
>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='
"+i+"'
><span class='ui-icon ui-icon-circle-triangle-
"+(Y?"e
":"w
")+"'
>"+i+"</span></a>",n=this._get(t,"nextText
"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='
"+n+"'
><span class='ui-icon ui-icon-circle-triangle-
"+(Y?"w
":"e
")+"'
>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='
"+n+"'
><span class='ui-icon ui-icon-circle-triangle-
"+(Y?"w
":"e
")+"'
>"+n+"</span></a>",a=this._get(t,"currentText
"),r=this._get(t,"gotoCurrent
")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'
>"+this._get(t,"closeText
")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'
>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'
>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay
"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek
"),d=this._get(t,"dayNames
"),p=this._get(t,"dayNamesMin
"),f=this._get(t,"monthNames
"),g=this._get(t,"monthNamesShort
"),m=this._get(t,"beforeShowDay
"),_=this._get(t,"showOtherMonths
"),v=this._get(t,"selectOtherMonths
"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=
4,C=
0;U[
1]
>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),
I=" ui-corner-all",
T="",X){if(T+="
<div class='ui-datepicker-group
",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first
",I=" ui-corner-
"+(Y?"right
":"left
");break;case U[1]-1:T+=" ui-datepicker-group-last
",I=" ui-corner-
"+(Y?"left
":"right
");break;default:T+=" ui-datepicker-group-middle
",I=""}T+="'
>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix
"+I+"'
>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'
><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'
>"+this._get(t,"weekHeader
")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'
"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'
":"")+">"+"<span title='
"+d[M]+"'
>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'
>"+this._get(t,"calculateWeek
")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[
0]||Q&&Q
>A||J&&A
>J,W+="
<td class='
"+((w+c+6)%7>=5?" ui-datepicker-week-end
":"")+(F?" ui-datepicker-other-month
":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled
":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today
":""))+"'
"+(F&&!_||!E[2]?"":" title='
"+E[2].replace(/'/g,"'")+"'
")+(L?"":" data-handler='selectDay' data-event='click' data-month='
"+A.getMonth()+"' data-year='
"+A.getFullYear()+"'
")+">"+(F&&!_?" ":L?"<span class='ui-state-default'
>"+A.getDate()+"</span>":"<a class='ui-state-default
"+(A.getTime()===B.getTime()?" ui-state-highlight
":"")+(A.getTime()===G.getTime()?" ui-state-active
":"")+(F?" ui-priority-secondary
":"")+"' href='#'
>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'
></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth
"),_=this._get(t,"changeYear
"),v=this._get(t,"showMonthAfterYear
"),b="<div class='ui-datepicker-title'
>",y="";if(o||!m)y+="<span class='ui-datepicker-month'
>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'
>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='
"+c+"'
"+(c===e?" selected='selected'
":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'
>"+i+"</span>";else{for(u=this._get(t,"yearRange
").split(":
"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'
>";g>=f;f++)t.yearshtml+="<option value='
"+f+"'
"+(f===i?" selected='selected'
":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix
"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y
"===i?e:0),n=t.selectedMonth+("M
"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D
"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M
"===i||"Y
"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min
"),s=this._getMinMaxDate(t,"max
"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[
0]:null,[t.selectedYear,t.selectedMonth+
1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[
1,
1]:"number"==typeof e?[
1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return
32-this._daylightSavingAdjust(new Date(t,e,
32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,
1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(
0>e?e:n[
0]*n[
1]),
1));return
0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[
0],
10),r=parseInt(i[
1],
10),i[
0].match(/[+\-].*/)&&(a+=s),i[
1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()
>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()
>=a)&&(!r||r
>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return
e="string"!=typeof e?e:(new Date).getFullYear()%
100+parseInt(e,
10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!
0),
0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,
1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&
2===arguments.length&&"string"==typeof arguments[
1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[
0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[
0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!
1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.
version="
1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!
1;t(document).on("mouseup",function(){_=!
1}),t.widget("ui.mouse",{version:"
1.12.1",options:{cancel:"input, textarea, button, select, option",distance:
1,delay:
0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!
0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!
1):void
0}),this.started=!
1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!
1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=
1===e.which,
n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!
1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!
0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!
1,!this._mouseStarted)?(e.preventDefault(),!
0):(!
0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!
0,!
0)):!
0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||
9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!
0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!
0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!
1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!
1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!
0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!
1,_=!
1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))
>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!
0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[
0].parentNode&&
11!==t.element[
0].parentNode.nodeType))for(n=
0;o.length
>n;n++)t.options[o[n][
0]]&&o[n][
1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"
1.12.1",widgetEventPrefix:"drag",options:{addClasses:!
0,appendTo:"parent",axis:!
1,connectToSortable:!
1,containment:!
1,cursor:"auto",cursorAt:!
1,grid:!
1,handle:!
1,helper:"original",iframeFix:!
1,opacity:!
1,refreshPositions:!
1,revert:!
1,revertDuration:
500,scope:"default",scroll:!
0,scrollSensitivity:
20,scrollSpeed:
20,snap:!
1,snapMode:"both",snapTolerance:
20,stack:!
1,zIndex:!
1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!
0,void
0):(this._removeHandleClassName(),this._mouseDestroy(),void
0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length
>0?!
1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!
0?
"iframe":i.iframeFix),!
0):!
1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t(
"<div>").css(
"position",
"absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[
0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[
0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,
"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css(
"position"),this.scrollParent=this.helper.scrollParent(!
0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return
"fixed"===t(this).css(
"position")}).length
>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!
1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger(
"start",e)===!
1?(this._clear(),!
1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!
0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!
0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!
1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!
0),this.positionAbs=this._convertPositionTo(
"absolute"),!i){var s=this._uiHash();if(this._trigger(
"drag",e,s)===!
1)return this._mouseUp(new t.Event(
"mouseup",e)),!
1;this.position=s.position}return this.helper[
0].style.left=this.position.left+
"px",this.helper[
0].style.top=this.position.top+
"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!
1},_mouseStop:function(e){var i=this,s=!
1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!
1),
"invalid"===this.options.revert&&!s||
"valid"===this.options.revert&&s||this.options.revert===!
0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
10),function(){i._trigger(
"stop",e)!==!
1&&i._clear()}):this._trigger(
"stop",e)!==!
1&&this._clear(),!
1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger(
"focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(
".ui-draggable-dragging")?this._mouseUp(new t.Event(
"mouseup",{target:this.element[
0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!
0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,
"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,
"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[
0],[e])):
"clone"===i.helper?this.element.clone().removeAttr(
"id"):this.element;return n.parents(
"body").length||n.appendTo(
"parent"===i.appendTo?this.element[
0].parentNode:i.appendTo),s&&n[
0]===this.element[
0]&&this._setPositionRelative(),n[
0]===this.element[
0]||/(fixed|absolute)/.test(n.css(
"position"))||n.css(
"position",
"absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css(
"position"))||(this.element[
0].style.
position=
"relative")},_adjustOffsetFromHelper:function(e){
"string"==typeof e&&(e=e.split(
" ")),t.isArray(e)&&(e={left:+e[
0],top:+e[
1]||
0}),
"left"in e&&(this.offset.click.left=e.left+this.margins.left),
"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),
"top"in e&&(this.offset.click.top=e.top+this.margins.top),
"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[
0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[
0];return
"absolute"===this.cssPosition&&this.scrollParent[
0]!==i&&t.contains(this.scrollParent[
0],this.offsetParent[
0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[
0])&&(e={top:
0,left:
0}),{top:e.top+(parseInt(this.offsetParent.css(
"borderTopWidth"),
10)||
0),left:e.left+(parseInt(this.offsetParent.css(
"borderLeftWidth"),
10)||
0)}},_getRelativeOffset:function(){if(
"relative"!==this.cssPosition)return{top:
0,left:
0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[
0]);return{top:t.top-(parseInt(this.helper.css(
"top"),
10)||
0)+(e?
0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css(
"left"),
10)||
0)+(e?
0:this.scrollParent.scrollLeft())}
42024 },_cacheMargins:function(){this.margins={left:parseInt(this.element.css(
"marginLeft"),
10)||
0,top:parseInt(this.element.css(
"marginTop"),
10)||
0,right:parseInt(this.element.css(
"marginRight"),
10)||
0,bottom:parseInt(this.element.css(
"marginBottom"),
10)||
0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[
0];return this.relativeContainer=null,n.containment?
"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void
0):
"document"===n.containment?(this.containment=[
0,
0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void
0):n.containment.constructor===Array?(this.containment=n.containment,void
0):(
"parent"===n.containment&&(n.containment=this.helper[
0].parentNode),i=t(n.containment),s=i[
0],s&&(e=/(scroll|auto)/.test(i.css(
"overflow")),this.containment=[(parseInt(i.css(
"borderLeftWidth"),
10)||
0)+(parseInt(i.css(
"paddingLeft"),
10)||
0),(parseInt(i.css(
"borderTopWidth"),
10)||
0)+(parseInt(i.css(
"paddingTop"),
10)||
0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css(
"borderRightWidth"),
10)||
0)-(parseInt(i.css(
"paddingRight"),
10)||
0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css(
"borderBottomWidth"),
10)||
0)-(parseInt(i.css(
"paddingBottom"),
10)||
0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void
0):(this.containment=null,void
0)},_convertPositionTo:function(t,e){e||(e=this.position);var
i=
"absolute"===t?
1:-
1,s=this._isRootNode(this.scrollParent[
0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-(
"fixed"===this.cssPosition?-this.offset.scroll.top:s?
0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-(
"fixed"===this.cssPosition?-this.offset.scroll.left:s?
0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[
0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[
0]+s.left,this.containment[
1]+s.top,this.containment[
2]+s.left,this.containment[
3]+s.top]):i=this.containment,t.pageX-this.offset.click.left
<i[
0]&&(h=i[
0]+this.offset.click.left),t.pageY-this.offset.click.top
<i[
1]&&(l=i[
1]+this.offset.click.top),t.pageX-this.offset.click.left
>i[
2]&&(h=i[
2]+this.offset.click.left),t.pageY-this.offset.click.top
>i[
3]&&(l=i[
3]+this.offset.click.top)),a.grid&&(n=a.grid[
1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[
1])*a.grid[
1]:this.originalPageY,l=i?n-this.offset.click.top
>=i[
1]||n-this.offset.click.top
>i[
3]?n:n-this.offset.click.top
>=i[
1]?n-a.grid[
1]:n+a.grid[
1]:n,o=a.grid[
0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[
0])*a.grid[
0]:this.originalPageX,h=i?o-this.offset.click.left
>=i[
0]||o-this.offset.click.left
>i[
2]?o:o-this.offset.click.left
>=i[
0]?o-a.grid[
0]:o+a.grid[
0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?
0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?
0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[
0]===this.element[
0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!
1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!
0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!
1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=
0,s.cancelHelperRemoval=!
0,t.cancelHelperRemoval=!
1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!
0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!
1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!
0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[
0],this.element[
0])&&(n=!
1),n})),n?(o.isOver||(o.isOver=
1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!
0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[
0]},e.target=o.currentItem[
0],o._mouseCapture(e,!
0),o._mouseStart(e,!
0,!
0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=
0,o.cancelHelperRemoval=!
0,o.options._revert=o.options.revert,o.options.revert=!
1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!
0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!
0),s._trigger("fromSortable",e),s.dropped=!
1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!
1)),i.scrollParentNotHidden[
0]!==i.document[
0]&&"HTML"!==i.scrollParentNotHidden[
0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!
1,a=s.scrollParentNotHidden[
0],r=s.document[
0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY
<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top
<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&
"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX
<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left
<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&
"x"===n.axis||(e.pageY-t(r).scrollTop()
<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())
<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&
"y"===n.axis||(e.pageX-t(r).scrollLeft()
<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())
<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!
1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add(
"draggable",
"snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||
":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[
0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-
1;d
>=
0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g
>_||m
>l+g||c-g
>b||v
>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!
1):("inner"!==f.snapMode&&(n=g
>=Math.abs(c-b),o=g
>=Math.abs(u-v),a=g
>=Math.abs(h-_),r=g
>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:
0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:
0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:
0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:
0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g
>=Math.abs(c-v),o=g
>=Math.abs(u-b),a=g
>=Math.abs(h-m),r=g
>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:
0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:
0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:
0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:
0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),
10)||
0)-(parseInt(t(i).css("zIndex"),
10)||
0)});a.length&&(n=parseInt(t(a[
0]).css("zIndex"),
10)||
0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"
1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!
1,animate:!
1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!
1,autoHide:!
1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!
1,ghost:!
1,grid:!
1,handles:"e,s,se",helper:!
1,maxHeight:null,maxWidth:null,minHeight:
10,minWidth:
10,zIndex:
90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||
0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!
1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!
1;return e[s]
>0?!
0:(e[s]=
1,n=e[s]
>0,e[s]=
0,n)},_create:function(){var e,i=this.options,s=this;this._addClass(
"ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||
"ui-resizable-helper":null}),this.element[
0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t(
"<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css(
"position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(
"top"),left:this.element.css(
"left")})),this.element=this.element.parent().data(
"ui-resizable",this.element.resizable(
"instance")),this.elementIsWrapper=!
0,e={marginTop:this.originalElement.css(
"marginTop"),marginRight:this.originalElement.css(
"marginRight"),marginBottom:this.originalElement.css(
"marginBottom"),marginLeft:this.originalElement.css(
"marginLeft")},this.element.css(e),this.originalElement.css(
"margin",
0),this.originalResizeStyle=this.originalElement.css(
"resize"),this.originalElement.css(
"resize",
"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:
"static",zoom:
1,display:
"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on(
"mouseenter",function(){i.disabled||(s._removeClass(
"ui-resizable-autohide"),s._handles.show())}).on(
"mouseleave",function(){i.disabled||s.resizing||(s._addClass(
"ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData(
"resizable").removeData(
"ui-resizable").off(
".resizable").find(
".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css(
"position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css(
"top"),left:e.css(
"left")}).insertAfter(e),e.remove()),this.originalElement.css(
"resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case
"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(
".ui-resizable-handle",this.element).length?{n:
".ui-resizable-n",e:
".ui-resizable-e",s:
".ui-resizable-s",w:
".ui-resizable-w",se:
".ui-resizable-se",sw:
".ui-resizable-sw",ne:
".ui-resizable-ne",nw:
".ui-resizable-nw"}:
"e,s,se"),this._handles=t(),this.handles.constructor===String)for(
"all"===this.handles&&(this.
handles=
"n,e,s,w,se,sw,ne,nw"),s=this.handles.split(
","),this.handles={},i=
0;s.length
>i;i++)e=t.trim(s[i]),
n="ui-resizable-"+e,o=t("
<div>"),this._addClass(o,"ui-resizable-handle
"+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-
"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding
",/ne|nw|n/.test(i)?"Top
":/se|sw|s/.test(i)?"Bottom
":/^e$/.test(i)?"Right
":"Left
"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle
")),this._handles.disableSelection(),this._handles.on("mouseover
",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se
")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide
"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left
")),s=this._num(this.helper.css("top
")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number
"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-
"+this.axis).css("cursor
"),t("body
").css("cursor
","auto
"===n?this.axis+"-resize
":n),this._addClass("ui-resizable-resizing
"),this._propagate("start
",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize
",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize
",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left
")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left
"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top
"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body
").css("cursor
","auto
"),this._removeClass("ui-resizable-resizing
"),this._propagate("stop
",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px
"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px
"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px
"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px
"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth
<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight
<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth
>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight
>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=
0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];
4>e;e++)i[e]=parseFloat(s[e])||
0,i[e]+=parseFloat(n[e])||
0;return{height:i[
0]+i[
2],width:i[
1]+i[
3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=
0,i=this.helper||this.element;this._proportionallyResizeElements.length
>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||
0,width:i.width()-this.outerDimensions.width||
0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
<div style='overflow:hidden;'
></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute
",left:this.elementOffset.left+"px
",top:this.elementOffset.top+"px
",zIndex:++i.zIndex}),this.helper.appendTo("body
").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize
"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable
","animate
",{stop:function(e){var i=t(this).resizable("instance
"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left
")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left
"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top
"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width
")),height:parseFloat(i.element.css("height
")),top:parseFloat(i.element.css("top
")),left:parseFloat(i.element.css("left
"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize
",e)}})}}),t.ui.plugin.add("resizable
","containment
",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance
"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top
","Right
","Left
","Bottom
"]).each(function(t,s){i[t]=h._num(e.css("padding
"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left
")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance
"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position
"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position
")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||
0,width:s.size.width-o.width||
0,top:s.position.top-a.top||
0,left:s.position.left-a.left||
0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[
0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||
0)+(r[e]||
0);i&&i
>=
0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:
.25,display:"block",position:"relative",height:i.height,width:i.width,margin:
0,left:
0,top:
0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!
1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(
0).removeChild(e.ghost.get(
0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,
h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[
0]||
1,c=h[
1]||
1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p
>s.maxWidth,m=s.maxHeight&&f
>s.maxHeight,_=s.minWidth&&s.minWidth
>p,v=s.minHeight&&s.minHeight
>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((
0>=f-c||
0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c
>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l
>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget(
"ui.dialog",{version:
"1.12.1",options:{appendTo:
"body",autoOpen:!
0,buttons:[],classes:{
"ui-dialog":
"ui-corner-all",
"ui-dialog-titlebar":
"ui-corner-all"},closeOnEscape:!
0,closeText:
"Close",draggable:!
0,hide:null,height:
"auto",maxHeight:null,maxWidth:null,minHeight:
150,minWidth:
150,modal:!
1,position:{my:
"center",at:
"center",of:window,collision:
"fit",using:function(e){var i=t(this).css(e).offset().top;
0>i&&t(this).css("top",e.top-i)}},resizable:!
0,show:null,title:null,width:
300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!
0,height:!
0,maxHeight:!
0,maxWidth:!
0,minHeight:!
0,minWidth:!
0,width:!
0},resizableRelatedOptions:{maxHeight:!
0,maxWidth:!
0,minHeight:!
0,minWidth:!
0},_create:function(){this.originalCss={display:this.element[
0].style.display,width:this.element[
0].style.width,minHeight:this.element[
0].style.minHeight,maxHeight:this.element[
0].style.maxHeight,height:this.element[
0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!
1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!
1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(
0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[
0]!==this.element[
0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
42025 },disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!
1&&(this._isOpen=!
1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[
0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!
1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o
>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+
1),s=!
0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void
0):(this._isOpen=!
0,this.opener=t(t.ui.safeActiveElement(this.document[
0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!
0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-
1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void
0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(
0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[
0]),i=this.uiDialog[
0]===e||t.contains(this.uiDialog[
0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
<div>").hide().attr({tabIndex:-1,role:"dialog
"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog
","ui-widget ui-widget-content ui-front
"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable
"),s=i.filter(":first
"),n=i.filter(":last
");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus
")}),e.preventDefault()):(this._delay(function(){s.trigger("focus
")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]
").length||this.uiDialog.attr({"aria-describedby
":this.element.uniqueId().attr("id
")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar
","ui-widget-header ui-helper-clearfix
"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close
")||this.uiDialog.trigger("focus
")}}),this.uiDialogTitlebarClose=t("<button type='button'
></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick
",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close
"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title
"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby
":e.attr("id
")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane
","ui-widget-content ui-helper-clearfix
"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset
"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons
"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button
"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean
"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click
",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons
"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close
",handle:".ui-dialog-titlebar
",containment:"document
",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging
"),i._blockFrames(),i._trigger("dragStart
",s,e(n))},drag:function(t,s){i._trigger("drag
",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top
",at:"left
"+(a>=0?"+
":"")+a+" "+"top
"+(r>=0?"+
":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging
"),i._unblockFrames(),i._trigger("dragStop
",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position
"),a="string
"==typeof n?n:"n,e,s,w,se,sw,ne,nw
";this.uiDialog.resizable({cancel:".ui-dialog-content
",containment:"document
",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing
"),i._blockFrames(),i._trigger("resizeStart
",s,e(n))},resize:function(t,s){i._trigger("resize
",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top
",at:"left
"+(r>=0?"+
":"")+r+" "+"top
"+(h>=0?"+
":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing
"),i._unblockFrames(),i._trigger("resizeStop
",n,e(o))}}).css("position
",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances
");return t||(t=[],this.document.data("ui-dialog-instances
",t)),t},_minHeight:function(){var t=this.options;return"auto
"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible
");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)
")&&this.uiDialog.resizable("option
",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled
"!==e&&(this._super(e,i),"appendTo
"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons
"===e&&this._createButtons(),"closeText
"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable
"===e&&(s=o.is(":data(ui-draggable)
"),s&&!i&&o.draggable("destroy
"),!s&&i&&this._makeDraggable()),"position
"===e&&this._position(),"resizable
"===e&&(n=o.is(":data(ui-resizable)
"),n&&!i&&o.resizable("destroy
"),n&&"string
"==typeof i&&o.resizable("option
","handles
",i),n||i===!1||this._makeResizable()),"title
"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title
")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto
",minHeight:0,maxHeight:"none
",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(
0,s.minHeight-t),
i="number"==typeof s.maxHeight?Math.max(
0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(
0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
<div>").css({position:"absolute
",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog
").length?!0:!!t(e.target).closest(".ui-datepicker
").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays
")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front
"),this._on(this.overlay,{mousedown:"_keepFocus
"}),this.document.data("ui-dialog-overlays
",(this.document.data("ui-dialog-overlays
")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays
")-1;t?this.document.data("ui-dialog-overlays
",t):(this._off(this.document,"focusin
"),this.document.removeData("ui-dialog-overlays
")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog
",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass
"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable
",{version:"1.12.1",widgetEventPrefix:"drop
",options:{accept:"*
",addClasses:!0,greedy:!1,scope:"default
",tolerance:"intersect
",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable
")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[
0]!==this.element[
0]&&this.accept.call(this.element[
0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[
0]!==this.element[
0]&&this.accept.call(this.element[
0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!
1;return s&&(s.currentItem||s.element)[
0]!==this.element[
0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[
0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!
0,!
1):void
0}),n?!
1:this.accept.call(this.element[
0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!
1):!
1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t
>=e&&e+i
>t}return function(e,i,s,n){if(!i.offset)return!
1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o
>=l&&u
>=r&&a
>=c&&d
>=h;case"intersect":return o+e.helperProportions.width/
2>l&&u
>r-e.helperProportions.width/
2&&a+e.helperProportions.height/
2>c&&d
>h-e.helperProportions.height/
2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a
>=c&&d
>=a||h
>=c&&d
>=h||c
>a&&h
>d)&&(o
>=l&&u
>=o||r
>=l&&u
>=r||l
>o&&r
>u);default:return!
1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=
0;o.length
>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[
0],e.currentItem||e.element))){for(n=
0;r.length
>n;n++)if(r[n]===o[s].element[
0]){o[s].proportions().height=
0;continue t}o[s].
visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[
0].offsetWidth,height:o[s].element[
0].offsetHeight}))}},drop:function(e,i){var s=!
1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[
0],e.currentItem||e.element)&&(this.isout=!
0,this.isover=!
1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[
0]).droppable("instance"),s.
greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!
1,s.isout=!
0,s._out.call(s,i)),this[r]=!
0,this["isout"===r?"isover":"isout"]=!
1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!
1,s.isover=!
0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!
1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!
1,activeClass:!
1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"
1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:
100,value:
0,change:null,complete:null},min:
0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value
","ui-widget-header
"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow
"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number
"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max
"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled
",t),this._toggleClass(null,"ui-state-disabled
",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay
"))):(this.element.attr({"aria-valuemax
":this.options.max,"aria-valuenow
":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change
")),e===this.options.max&&this._trigger("complete
")}}),t.widget("ui.selectable
",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body
",autoRefresh:!0,distance:0,filter:"*
",tolerance:"touch
",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable
"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee
"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item
",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected
"),selecting:i.hasClass("ui-selecting
"),unselecting:i.hasClass("ui-unselecting
")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper
")},_destroy:function(){this.selectees.removeData("selectable-item
"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start
",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected
").each(function(){var s=t.data(this,"selectable-item
");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected
"),s.selected=!1,i._addClass(s.$element,"ui-unselecting
"),s.unselecting=!0,i._trigger("unselecting
",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item
");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected
"),i._removeClass(n.$element,s?"ui-unselecting
":"ui-selected
")._addClass(n.$element,s?"ui-selecting
":"ui-unselecting
"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting
",e,{selecting:n.element}):i._trigger("unselecting
",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!
1,c={};i&&i.element!==s.element[
0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left
>r||o
>c.right||c.top
>h||a
>c.bottom):"fit"===n.tolerance&&(l=c.left
>o&&r
>c.right&&c.top
>a&&h
>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!
1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!
1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!
0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!
1,s._addClass(i.$element,"ui-selected"),i.selected=!
0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!
1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!
0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!
1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!
0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!
1}},_mouseStop:function(e){var i=this;return this.dragged=!
1,t(".ui-unselecting",this.element[
0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!
1,s.startselected=!
1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[
0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!
1,s.selected=!
0,s.startselected=!
0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!
1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"
1.12.1",defaultElement:"
<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open
":"ui-corner-top
","ui-selectmenu-button-closed
":"ui-corner-all
"},disabled:null,icons:{button:"ui-icon-triangle-
1-s
"},position:{my:"left top
",at:"left bottom
",collision:"none
"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id
");this.ids={element:e,button:e+"-button
",menu:e+"-menu
"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected
"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for
",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox
","aria-expanded
":"false
","aria-autocomplete
":"list
","aria-owns
":this.ids.menu,"aria-haspopup
":"true
",title:this.element.attr("title
")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed
","ui-button ui-widget
"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon
","ui-icon
"+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin
",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden
":"true
","aria-labelledby
":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu
","ui-front
"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu
":"ui-corner-bottom
"},role:"listbox
",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item
"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item
");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus
",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant
",e.menuItems.eq(s.index).attr("id
"))}}).menu("instance
"),this.menuInstance._off(this.menu,"mouseleave
"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item
")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option
");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li
").not(".ui-selectmenu-optgroup
").find(".ui-menu-item-wrapper
"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item
")),this._setOption("disabled
",this.element.prop("disabled
")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active
"),null,"ui-state-active
"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open
",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close
",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text
"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup
","ui-menu-divider
"+(o.element.parent("optgroup
").prop("disabled
")?" ui-state-disabled
":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item
",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title
")});return i.disabled&&this._addClass(s,null,"ui-state-disabled
"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item
";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li
"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li
"),n+=":not(.ui-state-disabled)
"),s="first
"===t||"last
"===t?i["first
"===t?"prevAll
":"nextAll
"](n).eq(-1):i[t+"All
"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li
")},_toggle:function(t){this[this.isOpen?"close
":"open
"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #
"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev
",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next
",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev
",e);break;case t.ui.keyCode.RIGHT:this._move("next
",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first
",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last
",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li
");e.hasClass("ui-state-disabled
")||this._select(e.data("ui-selectmenu-item
"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select
",e,{item:t}),t.index!==i&&this._trigger("change
",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id
");this.button.attr({"aria-labelledby
":e,"aria-activedescendant
":e}),this.menu.attr("aria-activedescendant
",e)},_setOption:function(t,e){if("icons
"===t){var i=this.button.find("span.ui-icon
");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo
"===t&&this.menuWrap.appendTo(this._appendTo()),"width
"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled
",t),this.button.attr("aria-disabled
",t),this._toggleClass(this.button,null,"ui-state-disabled
",t),this.element.prop("disabled
",t),t?(this.button.attr("tabindex
",-1),this.close()):this.button.attr("tabindex
",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog
")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded
",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-
"+(this.isOpen?"closed
":"open
"))._addClass(this.button,"ui-selectmenu-button-
"+(this.isOpen?"open
":"closed
"))._toggleClass(this.menuWrap,"ui-selectmenu-open
",null,this.isOpen),this.menu.attr("aria-hidden
",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width
",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled
"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup
");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label
")||"",disabled:i.prop("disabled
")||t.prop("disabled
")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for
",this.ids.element)}}]),t.widget("ui.slider
",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide
",options:{animate:!1,classes:{"ui-slider
":"ui-corner-all
","ui-slider-handle
":"ui-corner-all
","ui-slider-range
":"ui-corner-all ui-widget-header
"},distance:0,max:100,min:0,orientation:"horizontal
",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-
"+this.orientation,"ui-widget ui-widget-content
"),this._refresh(),this._animateOff=!1
42026 },_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle
"),o="<span tabindex='
0'
></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(
0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",
0)})},_createRange:function(){var e=this.options;e.range?(e.range===!
0&&(e.values?e.values.length&&
2!==e.values.length?e.values=[e.values[
0],e.values[
0]]:t.isArray(e.values)&&(e.values=e.values.slice(
0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range
")),("min
"===e.range||"max
"===e.range)&&this._addClass(this.range,"ui-slider-range-
"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:
0,top:
0}:{left:e.pageX-h.left-o.width()/
2,top:e.pageY-h.top-o.height()/
2-(parseInt(o.css("borderTopWidth"),
10)||
0)-(parseInt(o.css("borderBottomWidth"),
10)||
0)+(parseInt(o.css("marginTop"),
10)||
0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!
0,!
0))},_mouseStart:function(){return!
0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!
1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!
1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!
1,!
1},_detectOrientation:function(){this.
orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:
0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:
0)),s=i/e,s
>1&&(s=
1),
0>s&&(s=
0),"vertical"===this.orientation&&(s=
1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void
0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void
0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?
0:
1),o=this.values(e),
2===this.options.values.length&&this.options.range===!
0&&(i=
0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!
1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,
0),void
0):this._value()},values:function(e,i){var s,n,o;if(arguments.length
>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void
0;if(!arguments.length)return this._values();if(!t.isArray(arguments[
0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[
0],o=
0;s.length
>o;o+=
1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=
0;switch("range"===e&&this.options.range===!
0&&("min"===i?(this.options.value=this._values(
0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-
1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!
0,this._refreshValue(),this._change(null,
0),this._animateOff=!
1;break;case"values":for(this._animateOff=!
0,this._refreshValue(),s=n-
1;s
>=
0;s--)this._change(null,s);this._animateOff=!
1;break;case"step":case"min":case"max":this._animateOff=!
0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!
1;break;case"range":this._animateOff=!
0,this._refresh(),this._animateOff=!
1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=
0;i.length
>s;s+=
1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()
>=t)return this._valueMin();if(t
>=this._valueMax())return this._valueMax();var e=this.options.step
>0?this.options.step:
1,i=(t-this._valueMin())%e,s=t-i;return
2*Math.abs(i)
>=e&&(s+=i
>0?e:-e),parseFloat(s.toFixed(
5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t
>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var
e=""+t,i=e.indexOf(".");return-
1===i?
0:e.length-i-
1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!
1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=
100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(
1,
1)[l?"animate":"css"](c,r.animate),h.options.range===!
0&&("horizontal"===h.orientation?(
0===s&&h.range.stop(
1,
1)[l?"animate":"css"]({left:i+"%"},r.animate),
1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!
1,duration:r.animate})):(
0===s&&h.range.stop(
1,
1)[l?"animate":"css"]({bottom:i+"%"},r.animate),
1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!
1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?
100*((s-n)/(o-n)):
0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(
1,
1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(
1,
1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(
1,
1)[l?"animate":"css"]({width:
100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(
1,
1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(
1,
1)[l?"animate":"css"]({height:
100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!
0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!
1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!
1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"
1.12.1",widgetEventPrefix:"sort",ready:!
1,options:{appendTo:"parent",axis:!
1,connectWith:!
1,containment:!
1,cursor:"auto",cursorAt:!
1,dropOnEmpty:!
0,forcePlaceholderSize:!
1,forceHelperSize:!
1,grid:!
1,handle:!
1,helper:"original",items:"
> *",opacity:!
1,placeholder:!
1,revert:!
1,scroll:!
0,scrollSensitivity:
20,scrollSpeed:
20,scope:"default",tolerance:"intersect",zIndex:
1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t
>=e&&e+i
>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!
0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-
1;t
>=
0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!
1,o=this;return this.reverting?!
1:this.options.disabled||"static"===this.options.type?!
1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!
1):void
0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!
0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!
0):!
1:!
1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[
0],parent:this.currentItem.parent()[
0]},this.helper[
0]!==this.currentItem[
0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("
<style>*{ cursor: "+a.cursor+" !important; }
</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity
")&&(this._storedOpacity=this.helper.css("opacity
")),this.helper.css("opacity
",a.opacity)),a.zIndex&&(this.helper.css("zIndex
")&&(this._storedZIndex=this.helper.css("zIndex
")),this.helper.css("zIndex
",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML
"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start
",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate
",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper
"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute
"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML
"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute
"),this.options.axis&&"y
"===this.options.axis||(this.helper[0].style.left=this.position.left+"px
"),this.options.axis&&"x
"===this.options.axis||(this.helper[0].style.top=this.position.top+"px
"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next
":"prev
"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic
"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down
":"up
","pointer
"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change
",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort
",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x
"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y
"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup
",{target:null})),"original
"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper
")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate
",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out
",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original
"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id
")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]
")+"=
"+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"=
"),s.join("&
")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id
")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x
"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c
>o&&a
>e+c,p=u&
&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]
>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/
2>o&&a
>i-this.helperProportions.width/
2&&s+this.helperProportions.height/
2>r&&h
>n-this.helperProportions.height/
2},_intersectsWithPointer:function(t){var e,i,
s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),
n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&
&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?
2:
1:e&&("down"===e?
2:
1)):!
1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/
2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/
2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return
0!==t&&(t
>0?
"down":
"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return
0!==t&&(t
>0?
"right":
"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-
1;s
>=
0;s--)for(o=t(l[s],this.document[
0]),n=o.length-
1;n
>=
0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-
1;s
>=
0;s--)h[s][
0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=
0;e.length
>i;i++)if(e[i]===t.item[
0])return!
1;return!
0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[
0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-
1;i
>=
0;i--)for(n=t(d[i],this.document[
0]),s=n.length-
1;s
>=
0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[
0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-
1;i
>=
0;i--)for(a=u[i][
1],r=u[i][
0],s=
0,l=r.length;l
>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:
0,height:
0,left:
0,top:
0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[
0].item):!
1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-
1;i
>=
0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[
0]!==this.currentItem[
0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-
1;i
>=
0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[
0].nodeName.toLowerCase(),n=t("<"+s+"
>",e.document[0]);return e._addClass(n,"ui-sortable-placeholder
",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper
"),"tbody
"===s?e._createTrPlaceholder(e.currentItem.find("tr
").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr
"===s?e._createTrPlaceholder(e.currentItem,n):"img
"===s&&n.attr("src
",e.currentItem.attr("src
")),i||n.css("visibility
","hidden
"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop
")||0,10)-parseInt(e.currentItem.css("paddingBottom
")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft
")||0,10)-parseInt(e.currentItem.css("paddingRight
")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan
",t(this).attr("colspan
")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out
",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over
",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left
":"top
",r=c?"width
":"height
",u=c?"pageX
":"pageY
",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=
1),void
0;o?this._rearrange(e,o,null,!
0):this._rearrange(e,null,this.containers[p].element,!
0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=
1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[
0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[
0].parentNode)[
0].appendChild(s[
0]),s[
0]===this.currentItem[
0]&&(this._storedCSS={width:this.currentItem[
0].style.width,height:this.currentItem[
0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[
0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[
0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[
0],top:+e[
1]||
0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[
0]!==this.document[
0]&&t.contains(this.scrollParent[
0],this.offsetParent[
0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[
0]===this.document[
0].body||this.offsetParent[
0].tagName&&"html"===this.offsetParent[
0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:
0,left:
0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),
10)||
0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
10)||
0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),
10)||
0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),
10)||
0)+this.scrollParent.scrollLeft()}}return{top:
0,left:
0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),
10)||
0,top:parseInt(this.currentItem.css("marginTop"),
10)||
0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[
0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[
0-this.offset.relative.left-this.offset.parent.left,
0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[
0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[
0],i=t(n.containment).offset(),
s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),
10)||
0)+(parseInt(t(e).css("paddingLeft"),
10)||
0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),
10)||
0)+(parseInt(t(e).css("paddingTop"),
10)||
0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),
10)||
0)-(parseInt(t(e).css("paddingRight"),
10)||
0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),
10)||
0)-(parseInt(t(e).css("paddingBottom"),
10)||
0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var
s="absolute"===e?
1:-
1,
n="absolute"!==this.cssPosition||this.scrollParent[
0]!==this.document[
0]&&t.contains(this.scrollParent[
0],this.offsetParent[
0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[
0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?
0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?
0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,
r="absolute"!==this.cssPosition||this.scrollParent[
0]!==this.document[
0]&&t.contains(this.scrollParent[
0],this.offsetParent[
0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[
0].tagName);return"relative"!==this.cssPosition||this.scrollParent[
0]!==this.document[
0]&&this.scrollParent[
0]!==this.offsetParent[
0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left
<this.containment[
0]&&(o=this.containment[
0]+this.offset.click.left),e.pageY-this.offset.click.top
<this.containment[
1]&&(a=this.containment[
1]+this.offset.click.top),e.pageX-this.offset.click.left
>this.containment[
2]&&(o=this.containment[
2]+this.offset.click.left),e.pageY-this.offset.click.top
>this.containment[
3]&&(a=this.containment[
3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[
1])*n.grid[
1],a=this.containment?i-this.offset.click.top
>=this.containment[
1]&&i-this.offset.click.top<=this.containment[
3]?i:i-this.offset.click.top
>=this.containment[
1]?i-n.grid[
1]:i+n.grid[
1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[
0])*n.grid[
0],o=this.containment?s-this.offset.click.left
>=this.containment[
0]&&s-this.offset.click.left<=this.containment[
2]?s:s-this.offset.click.left
>=this.containment[
0]?s-n.grid[
0]:s+n.grid[
0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?
0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?
0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[
0].appendChild(this.placeholder[
0]):e.item[
0].parentNode.insertBefore(this.placeholder[
0],"down"===this.direction?e.item[
0]:e.item[
0].nextSibling),this.counter=this.counter?++this.counter:
1;var n=this.counter;
42027 this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!
1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[
0]===this.currentItem[
0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[
0]&&this.domPosition.parent===this.currentItem.parent()[
0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-
1;s
>=
0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=
0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!
1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[
0].parentNode.removeChild(this.placeholder[
0]),this.cancelHelperRemoval||(this.helper[
0]!==this.currentItem[
0]&&this.helper.remove(),this.helper=null),!e){for(s=
0;n.length
>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!
1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!
1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"
1.12.1",defaultElement:"
<input>",widgetEventPrefix:"spin
",options:{classes:{"ui-spinner
":"ui-corner-all
","ui-spinner-down
":"ui-corner-br
","ui-spinner-up
":"ui-corner-tr
"},culture:null,icons:{down:"ui-icon-triangle-
1-s
",up:"ui-icon-triangle-
1-n
"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max
",this.options.max),this._setOption("min
",this.options.min),this._setOption("step
",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete
")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min
","max
","step
"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop
",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change
",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button
":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus
"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up
")?1:-1,e)},"mouseup .ui-spinner-button
":"_stop
","mouseenter .ui-spinner-button
":function(e){return t(e.currentTarget).hasClass("ui-state-active
")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up
")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button
":"_stop
"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete
","off
").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner
","ui-widget ui-widget-content
"),this._addClass("ui-spinner-input
"),this.element.attr("role
","spinbutton
"),this.buttons=this.uiSpinner.children("a
").attr("tabIndex
",-1).attr("aria-hidden
",!0).button({classes:{"ui-button
":""}}),this._removeClass(this.buttons,"ui-corner-all
"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up
"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down
"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start
",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin
",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".
");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void
0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void
0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,
10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!
1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!
1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||
1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||
1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||
1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||
1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void
0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!
1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"
<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs
",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs
":"ui-corner-all
","ui-tabs-nav
":"ui-corner-all
","ui-tabs-panel
":"ui-corner-bottom
","ui-tabs-tab
":"ui-corner-top
"},collapsible:!1,event:"click
",heightStyle:"content
",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs
","ui-widget ui-widget-content
"),this._toggleClass("ui-tabs-collapsible
",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled
"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls
")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active
"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li
"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected
","false
"),this.tabs.eq(s).attr("aria-selected
","true
"),this.activating=this._delay(function(){this.option("active
",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus
"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void
0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!
1||this._activate(
0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void
0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=
>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!
1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[
0],this.active[
0])?this.tabs.length===e.disabled.length?(e.active=!
1,this.active=t()):this._activate(this._findNextTab(Math.max(
0,e.active-
1),!
1)):e.active=this.tabs.index(this.active):(e.active=!
1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-
1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:
0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(
0).attr("tabIndex",
0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"
> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("
> li:has(a[href])").attr({role:"tab",tabIndex:-
1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[
0]}).attr({role:"presentation",tabIndex:-
1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(
1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[
0].id,
n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-
1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(
0)},_createPanel:function(e){return t("
<div>").attr("id
",e).data("ui-tabs-destroy
",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled
","true
"),this._addClass(i,null,"ui-state-disabled
")):(i.removeAttr("aria-disabled
"),this._removeClass(i,null,"ui-state-disabled
"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled
",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler
"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown
"}),this._on(this.panels,{keydown:"_panelKeydown
"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill
"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible
").each(function(){var e=t(this),s=e.css("position
");"absolute
"!==s&&"fixed
"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow
","auto
")):"auto
"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li
"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled
")||o.hasClass("ui-tabs-loading
")||this.running||a&&!i.collapsible||this._trigger("beforeActivate
",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier.
"),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate
",e,i)}function n(){o._addClass(i.newTab.closest("li
"),"ui-tabs-active
","ui-state-active
"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li
"),"ui-tabs-active
","ui-state-active
"),n()}):(this._removeClass(i.oldTab.closest("li
"),"ui-tabs-active
","ui-state-active
"),r.hide(),n()),r.attr("aria-hidden
","true
"),i.oldTab.attr({"aria-selected
":"false
","aria-expanded
":"false
"}),a.length&&r.length?i.oldTab.attr("tabIndex
",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex
")}).attr("tabIndex
",-1),a.attr("aria-hidden
","false
"),i.newTab.attr({"aria-selected
":"true
","aria-expanded
":"true
",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor
")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string
"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='
"+t.ui.escapeSelector(e)+"']
"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role
").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex
").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy
")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded
")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls
");i?e.attr("aria-controls
",i).removeData("ui-tabs-aria-controls
"):e.removeAttr("aria-controls
")}),this.panels.show(),"content
"!==this.options.heightStyle&&this.panels.css("height
","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor
"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort
"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading
"),a.removeAttr("aria-busy
"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled
"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading
"),a.attr("aria-busy
","true
"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load
",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href
").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad
",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls
");return this.element.find(this._sanitizeSelector("#
"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs
",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab
")}}),t.ui.tabs,t.widget("ui.tooltip
",{version:"1.12.1",options:{classes:{"ui-tooltip
":"ui-corner-all ui-widget-shadow
"},content:function(){var e=t(this).attr("title
")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])
",position:{my:"left top+
15",at:"left bottom
",collision:"flipfit flip
"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby
")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id
",i).attr("aria-describedby
",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id
"),s=(e.attr("aria-describedby
")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id
"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby
",s):e.removeAttr("aria-describedby
")},_create:function(){this._on({mouseover:"open
",focusin:"open
"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log
","aria-live
":"assertive
","aria-relevant
":"additions
"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible
"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content
"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable
":"_enable
"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur
");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]
")?e.data("ui-tooltip-title
",e.attr("title
")).removeAttr("title
"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title
")&&e.attr("title
",e.data("ui-tooltip-title
"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id
")&&(s.attr("title
")&&s.data("ui-tooltip-title
",s.attr("title
")),s.data("ui-tooltip-open
",!0),e&&"mouseover
"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open
")&&(e=t.Event("blur
"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title
")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title
")},s.attr("title
",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string
"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open
")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden
")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content
").html(s),void 0;i.is("[title]
")&&(e&&"mouseover
"===e.type?i.attr("title
",""):i.removeAttr("title
")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id
")),a.find(".ui-tooltip-content
").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content
").html()),h.removeAttr("name
").find("[name]
").removeAttr("name
"),h.removeAttr("id
").find("[id]
").removeAttr("id
"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible
")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open
",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover
"!==e.type||(s.mouseleave="close
"),e&&"focusin
"!==e.type||(s.focusout="close
"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title
")&&!n.attr("title
")&&n.attr("title
",n.data("ui-tooltip-title
")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open
"),this._off(n,"mouseleave focusout keyup
"),n[0]!==this.element[0]&&this._off(n,"remove
"),this._off(this.document,"mousemove
"),e&&"mouseleave
"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title
",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close
",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open
"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role
","tooltip
"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id
");return this._addClass(s,"ui-tooltip-content
"),this._addClass(i,"ui-tooltip
","ui-widget ui-widget-content
"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id
");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id
")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog
");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur
"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#
"+i).remove(),o.data("ui-tooltip-title
")&&(o.attr("title
")||o.attr("title
",o.data("ui-tooltip-title
")),o.removeData("ui-tooltip-title
"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip
",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});</script>
42028 <script>/*! jQuery UI Virtual Keyboard v1.26.22 *//*
42029 Author: Jeremy Satterfield
42030 Maintained: Rob Garrison (Mottie on github)
42031 Licensed under the MIT License
42033 An on-screen virtual keyboard embedded within the browser window which
42034 will popup when a specified entry field is focused. The user can then
42035 type and preview their input before Accepting or Canceling.
42037 This plugin adds default class names to match jQuery UI theme styling.
42038 Bootstrap & custom themes may also be applied - See
42039 https://github.com/Mottie/Keyboard#themes
42043 Caret plugin (included)
42045 jQuery UI (position utility only) & CSS theme
42049 Please refer to https://github.com/Mottie/Keyboard/wiki
42051 -----------------------------------------
42052 Caret code modified from jquery.caret.1.02.js
42053 Licensed under the MIT License:
42054 http://www.opensource.org/licenses/mit-license.php
42055 -----------------------------------------
42057 /*jshint browser:true, jquery:true, unused:false */
42058 /*global require:false, define:false, module:false */
42059 ;(function (factory) {
42060 if (typeof define === 'function' && define.amd) {
42061 define(['jquery'], factory);
42062 } else if (typeof module === 'object' && typeof module.exports === 'object') {
42063 module.exports = factory(require('jquery'));
42069 var $keyboard = $.keyboard = function (el, options) {
42070 var o, base = this;
42072 base.version = '1.26.22';
42074 // Access to jQuery and DOM versions of element
42078 // Add a reverse reference to the DOM object
42079 base.$el.data('keyboard', base);
42081 base.init = function () {
42082 base.initialized = false;
42083 var k, position, tmp,
42084 kbcss = $keyboard.css,
42085 kbevents = $keyboard.events;
42086 base.settings = options || {};
42087 // shallow copy position to prevent performance issues; see #357
42088 if (options && options.position) {
42089 position = $.extend({}, options.position);
42090 options.position = null;
42092 base.options = o = $.extend(true, {}, $keyboard.defaultOptions, options);
42094 o.position = position;
42095 options.position = position;
42098 // keyboard is active (not destroyed);
42099 base.el.active = true;
42100 // unique keyboard namespace
42101 base.namespace = '.keyboard' + Math.random().toString(16).slice(2);
42102 // extension namespaces added here (to unbind listeners on base.$el upon destroy)
42103 base.extensionNamespace = [];
42104 // Shift and Alt key toggles, sets is true if a layout has more than one keyset
42105 // used for mousewheel message
42106 base.shiftActive = base.altActive = base.metaActive = base.sets = base.capsLock = false;
42107 // Class names of the basic key set - meta keysets are handled by the keyname
42108 base.rows = ['', '-shift', '-alt', '-alt-shift'];
42110 base.inPlaceholder = base.$el.attr('placeholder') || '';
42111 // html 5 placeholder/watermark
42112 base.watermark = $keyboard.watermark && base.inPlaceholder !== '';
42113 // convert mouse repeater rate (characters per second) into a time in milliseconds.
42114 base.repeatTime = 1000 / (o.repeatRate || 20);
42115 // delay in ms to prevent mousedown & touchstart from both firing events at the same time
42116 o.preventDoubleEventTime = o.preventDoubleEventTime || 100;
42117 // flag indication that a keyboard is open
42118 base.isOpen = false;
42119 // is mousewheel plugin loaded?
42120 base.wheel = $.isFunction($.fn.mousewheel);
42121 // special character in regex that need to be escaped
42122 base.escapeRegex = /[-\/\\^$*+?.()|[\]{}]/g;
42124 // keyCode of keys always allowed to be typed
42125 k = $keyboard.keyCodes;
42126 // base.alwaysAllowed = [20,33,34,35,36,37,38,39,40,45,46];
42127 base.alwaysAllowed = [
42140 base.$keyboard = [];
42141 // keyboard enabled; set to false on destroy
42142 base.enabled = true;
42144 base.checkCaret = (o.lockInput || $keyboard.checkCaretSupport());
42154 keyset: [false, false, false], // [shift, alt, meta]
42159 // used when building the keyboard - [keyset element, row, index]
42160 base.temp = ['', 0, 0];
42165 kbevents.kbBeforeVisible,
42166 kbevents.kbVisible,
42168 kbevents.inputCanceled,
42169 kbevents.inputAccepted,
42170 kbevents.kbBeforeClose,
42171 kbevents.inputRestricted
42172 ], function (i, callback) {
42173 if ($.isFunction(o[callback])) {
42174 // bind callback functions within options to triggered events
42175 base.$el.bind(callback + base.namespace + 'callbacks', o[callback]);
42179 // Close with esc key & clicking outside
42180 if (o.alwaysOpen) {
42185 if (base.el.ownerDocument !== document) {
42186 tmp = tmp.add(base.el.ownerDocument);
42189 var bindings = 'keyup checkkeyboard mousedown touchstart ';
42190 if (o.closeByClickEvent) {
42191 bindings += 'click ';
42193 // debounce bindings... see #542
42194 tmp.bind(bindings.split(' ').join(base.namespace + ' '), function(e) {
42195 clearTimeout(base.timer3);
42196 base.timer3 = setTimeout(function() {
42197 base.checkClose(e);
42201 // Display keyboard on focus
42203 .addClass(kbcss.input + ' ' + o.css.input)
42205 'aria-haspopup': 'true',
42209 // set lockInput if the element is readonly; or make the element readonly if lockInput is set
42210 if (o.lockInput || base.el.readOnly) {
42211 o.lockInput = true;
42213 .addClass(kbcss.locked)
42215 'readonly': 'readonly'
42218 // add disabled/readonly class - dynamically updated on reveal
42219 if (base.$el.is(':disabled') || (base.$el.attr('readonly') &&
42220 !base.$el.hasClass(kbcss.locked))) {
42221 base.$el.addClass(kbcss.noKeyboard);
42227 // Add placeholder if not supported by the browser
42228 if (!base.watermark && base.$el.val() === '' && base.inPlaceholder !== '' &&
42229 base.$el.attr('placeholder') !== '') {
42231 .addClass(kbcss.placeholder) // css watermark style (darker text)
42232 .val(base.inPlaceholder);
42235 base.$el.trigger(kbevents.kbInit, [base, base.el]);
42237 // initialized with keyboard open
42238 if (o.alwaysOpen) {
42241 base.initialized = true;
42244 base.toggle = function () {
42245 if (!base.hasKeyboard()) { return; }
42246 var $toggle = base.$keyboard.find('.' + $keyboard.css.keyToggle),
42247 locked = !base.enabled;
42248 // prevent physical keyboard from working
42249 base.$preview.prop('readonly', locked || base.options.lockInput);
42250 // disable all buttons
42252 .toggleClass($keyboard.css.keyDisabled, locked)
42253 .find('.' + $keyboard.css.keyButton)
42255 .prop('disabled', locked)
42256 .attr('aria-disabled', locked);
42257 $toggle.toggleClass($keyboard.css.keyDisabled, locked);
42258 // stop auto typing
42259 if (locked && base.typing_options) {
42260 base.typing_options.text = '';
42266 base.setCurrent = function () {
42267 var kbcss = $keyboard.css,
42268 // close any "isCurrent" keyboard (just in case they are always open)
42269 $current = $('.' + kbcss.isCurrent),
42270 kb = $current.data('keyboard');
42271 // close keyboard, if not self
42272 if (!$.isEmptyObject(kb) && kb.el !== base.el) {
42273 kb.close(kb.options.autoAccept ? 'true' : false);
42275 $current.removeClass(kbcss.isCurrent);
42276 // ui-keyboard-has-focus is applied in case multiple keyboards have
42277 // alwaysOpen = true and are stacked
42278 $('.' + kbcss.hasFocus).removeClass(kbcss.hasFocus);
42280 base.$el.addClass(kbcss.isCurrent);
42281 base.$keyboard.addClass(kbcss.hasFocus);
42282 base.isCurrent(true);
42283 base.isOpen = true;
42286 base.isCurrent = function (set) {
42287 var cur = $keyboard.currentKeyboard || false;
42289 cur = $keyboard.currentKeyboard = base.el;
42290 } else if (set === false && cur === base.el) {
42291 cur = $keyboard.currentKeyboard = '';
42293 return cur === base.el;
42296 base.hasKeyboard = function () {
42297 return base.$keyboard && base.$keyboard.length
> 0;
42300 base.isVisible = function () {
42301 return base.hasKeyboard() ? base.$keyboard.is(':visible') : false;
42304 base.focusOn = function () {
42305 if (!base && base.el.active) {
42306 // keyboard was destroyed
42309 if (!base.isVisible()) {
42310 clearTimeout(base.timer);
42313 // keyboard already open, make it the current keyboard
42318 // add redraw method to make API more clear
42319 base.redraw = function (layout) {
42321 // allow updating the layout by calling redraw
42322 base.options.layout = layout;
42324 // update keyboard after a layout change
42325 if (base.$keyboard.length) {
42327 base.last.preVal = '' + base.last.val;
42328 base.last.val = base.$preview && base.$preview.val() || base.$el.val();
42329 base.$el.val( base.last.val );
42331 base.removeKeyboard();
42332 base.shiftActive = base.altActive = base.metaActive = false;
42334 base.isOpen = o.alwaysOpen;
42339 base.reveal = function (redraw) {
42340 var alreadyOpen = base.isOpen,
42341 kbcss = $keyboard.css;
42342 base.opening = !alreadyOpen;
42343 // remove all 'extra' keyboards by calling close function
42344 $('.' + kbcss.keyboard).not('.' + kbcss.alwaysOpen).each(function(){
42345 var kb = $(this).data('keyboard');
42346 if (!$.isEmptyObject(kb)) {
42347 // this closes previous keyboard when clicking another input - see #
515
42348 kb.close(kb.options.autoAccept ? 'true' : false);
42352 // Don't open if disabled
42353 if (base.$el.is(':disabled') || (base.$el.attr('readonly') && !base.$el.hasClass(kbcss.locked))) {
42354 base.$el.addClass(kbcss.noKeyboard);
42357 base.$el.removeClass(kbcss.noKeyboard);
42360 // Unbind focus to prevent recursion - openOn may be empty if keyboard is opened externally
42362 base.$el.unbind($.trim((o.openOn + ' ').split(/\s+/).join(base.namespace + ' ')));
42365 // build keyboard if it doesn't exist; or attach keyboard if it was removed, but not cleared
42366 if (!base.$keyboard || base.$keyboard &&
42367 (!base.$keyboard.length || $.contains(document.body, base.$keyboard[
0]))) {
42372 if (!base.watermark && base.el.value === base.inPlaceholder) {
42374 .removeClass(kbcss.placeholder)
42377 // save starting content, in case we cancel
42378 base.originalContent = base.$el.val();
42379 base.$preview.val(base.originalContent);
42381 // disable/enable accept button
42382 if (o.acceptValid) {
42386 if (o.resetDefault) {
42387 base.shiftActive = base.altActive = base.metaActive = false;
42391 // beforeVisible event
42392 if (!base.isVisible()) {
42393 base.$el.trigger($keyboard.events.kbBeforeVisible, [base, base.el]);
42396 base.initialized ||
42398 ( !o.initialFocus && base.$el.hasClass($keyboard.css.initialFocus) )
42402 // update keyboard - enabled or disabled?
42406 base.$keyboard.show();
42408 // adjust keyboard preview window width - save width so IE won't keep expanding (fix issue #
6)
42409 if (o.usePreview && $keyboard.msie) {
42410 if (typeof base.width === 'undefined') {
42411 base.$preview.hide(); // preview is
100% browser width in IE7, so hide the damn thing
42412 base.width = Math.ceil(base.$keyboard.width()); // set input width to match the widest keyboard row
42413 base.$preview.show();
42415 base.$preview.width(base.width);
42420 base.checkDecimal();
42422 // get preview area line height
42423 // add roughly
4px to get line height from font height, works well for font-sizes from
14-
36px
42424 // needed for textareas
42425 base.lineHeight = parseInt(base.$preview.css('lineHeight'),
10) ||
42426 parseInt(base.$preview.css('font-size'),
10) +
4;
42428 if (o.caretToEnd) {
42429 base.saveCaret(base.originalContent.length, base.originalContent.length);
42432 // IE caret haxx0rs
42433 if ($keyboard.allie) {
42434 // sometimes end =
0 while start is
> 0
42435 if (base.last.end ===
0 && base.last.start
> 0) {
42436 base.last.end = base.last.start;
42438 // IE will have start -
1, end of
0 when not focused (see demo: https://jsfiddle.net/Mottie/fgryQ/
3/)
42439 if (base.last.start <
0) {
42440 // ensure caret is at the end of the text (needed for IE)
42441 base.last.start = base.last.end = base.originalContent.length;
42445 if (alreadyOpen || redraw) {
42446 // restore caret position (userClosed)
42447 $keyboard.caret(base.$preview, base.last);
42451 // opening keyboard flag; delay allows switching between keyboards without immediately closing
42453 base.timer2 = setTimeout(function () {
42455 base.opening = false;
42456 // Number inputs don't support selectionStart and selectionEnd
42457 // Number/email inputs don't support selectionStart and selectionEnd
42458 if (!/(number|email)/i.test(base.el.type) && !o.caretToEnd) {
42459 // caret position is always
0,
0 in webkit; and nothing is focused at this point... odd
42460 // save caret position in the input to transfer it to the preview
42461 // inside delay to get correct caret position
42462 base.saveCaret(undef, undef, base.$el);
42464 if (o.initialFocus || base.$el.hasClass($keyboard.css.initialFocus)) {
42465 $keyboard.caret(base.$preview, base.last);
42467 // save event time for keyboards with stayOpen: true
42468 base.last.eventTime = new Date().getTime();
42469 base.$el.trigger($keyboard.events.kbVisible, [base, base.el]);
42470 base.timer = setTimeout(function () {
42471 // get updated caret information after visible event - fixes #
331
42472 if (base) { // Check if base exists, this is a case when destroy is called, before timers fire
42477 // return base to allow chaining in typing extension
42481 base.updateLanguage = function () {
42482 // change language if layout is named something like 'french-azerty-
1'
42483 var layouts = $keyboard.layouts,
42484 lang = o.language || layouts[o.layout] && layouts[o.layout].lang &&
42485 layouts[o.layout].lang || [o.language || 'en'],
42486 kblang = $keyboard.language;
42488 // some languages include a dash, e.g. 'en-gb' or 'fr-ca'
42489 // allow o.language to be a string or array...
42490 // array is for future expansion where a layout can be set for multiple languages
42491 lang = ($.isArray(lang) ? lang[
0] : lang).split('-')[
0];
42493 // set keyboard language
42494 o.display = $.extend(true, {},
42496 kblang[lang] && kblang[lang].display || {},
42497 base.settings.display
42499 o.combos = $.extend(true, {},
42501 kblang[lang] && kblang[lang].combos || {},
42502 base.settings.combos
42504 o.wheelMessage = kblang[lang] && kblang[lang].wheelMessage || kblang.en.wheelMessage;
42505 // rtl can be in the layout or in the language definition; defaults to false
42506 o.rtl = layouts[o.layout] && layouts[o.layout].rtl || kblang[lang] && kblang[lang].rtl || false;
42508 // save default regex (in case loading another layout changes it)
42509 base.regex = kblang[lang] && kblang[lang].comboRegex || $keyboard.comboRegex;
42510 // determine if US '.' or European ',' system being used
42511 base.decimal = /^\./.test(o.display.dec);
42513 .toggleClass('rtl', o.rtl)
42514 .css('direction', o.rtl ? 'rtl' : '');
42517 base.startup = function () {
42518 var kbcss = $keyboard.css;
42519 // ensure base.$preview is defined; but don't overwrite it if keyboard is always visible
42520 if (!((o.alwaysOpen || o.userClosed) && base.$preview)) {
42521 base.makePreview();
42523 if (!base.hasKeyboard()) {
42524 // custom layout - create a unique layout name based on the hash
42525 if (o.layout === 'custom') {
42526 o.layoutHash = 'custom' + base.customHash();
42528 base.layout = o.layout === 'custom' ? o.layoutHash : o.layout;
42529 base.last.layout = base.layout;
42531 base.updateLanguage();
42532 if (typeof $keyboard.builtLayouts[base.layout] === 'undefined') {
42533 if ($.isFunction(o.create)) {
42534 // create must call buildKeyboard() function; or create it's own keyboard
42535 base.$keyboard = o.create(base);
42536 } else if (!base.$keyboard.length) {
42537 base.buildKeyboard(base.layout, true);
42540 base.$keyboard = $keyboard.builtLayouts[base.layout].$keyboard.clone();
42541 base.$keyboard.data('keyboard', base);
42542 if ((base.el.id || '') !== '') {
42543 // add ID to keyboard for styling purposes
42544 base.$keyboard.attr('id', base.el.id + $keyboard.css.idSuffix);
42547 base.makePreview();
42550 base.$decBtn = base.$keyboard.find('.' + kbcss.keyPrefix + 'dec');
42551 // add enter to allowed keys; fixes #
190
42552 if (o.enterNavigation || base.el.nodeName === 'TEXTAREA') {
42553 base.alwaysAllowed.push(
13);
42556 base.bindKeyboard();
42558 base.$keyboard.appendTo(o.appendLocally ? base.$el.parent() : o.appendTo || 'body');
42562 // reposition keyboard on window resize
42563 if (o.reposition && $.ui && $.ui.position && o.appendTo == 'body') {
42564 $(window).bind('resize' + base.namespace, function () {
42571 base.reposition = function () {
42572 base.position = $.isEmptyObject(o.position) ? false : o.position;
42573 // position after keyboard is visible (required for UI position utility)
42574 // and appropriately sized
42575 if ($.ui && $.ui.position && base.position) {
42577 // get single target position
42578 base.position.of ||
42579 // OR target stored in element data (multiple targets)
42580 base.$el.data('keyboardPosition') ||
42581 // OR default @ element
42583 base.position.collision = base.position.collision || 'flipfit flipfit';
42584 base.position.at = o.usePreview ? o.position.at : o.position.at2;
42585 if (base.isVisible()) {
42586 base.$keyboard.position(base.position);
42593 base.makePreview = function () {
42594 if (o.usePreview) {
42595 var indx, attrs, attr, removedAttr,
42596 kbcss = $keyboard.css;
42597 base.$preview = base.$el.clone(false)
42598 .data('keyboard', base)
42599 .removeClass(kbcss.placeholder + ' ' + kbcss.input)
42600 .addClass(kbcss.preview + ' ' + o.css.input)
42601 .attr('tabindex', '-
1')
42602 .show(); // for hidden inputs
42603 base.preview = base.$preview[
0];
42605 // Switch the number input field to text so the caret positioning will work again
42606 if (base.preview.type === 'number') {
42607 base.preview.type = 'text';
42610 // remove extraneous attributes.
42611 removedAttr = /^(data-|id|aria-haspopup)/i;
42612 attrs = base.$preview.get(
0).attributes;
42613 for (indx = attrs.length -
1; indx
>=
0; indx--) {
42614 attr = attrs[indx] && attrs[indx].name;
42615 if (removedAttr.test(attr)) {
42616 // remove data-attributes - see #
351
42617 base.preview.removeAttribute(attr);
42620 // build preview container and append preview display
42622 .addClass(kbcss.wrapper)
42623 .append(base.$preview)
42624 .prependTo(base.$keyboard);
42626 base.$preview = base.$el;
42627 base.preview = base.el;
42631 // Added in v1.26
.8 to allow chaining of the caret function, e.g.
42632 // keyboard.reveal().caret(
4,
5).insertText('test').caret('end');
42633 base.caret = function(param1, param2) {
42634 $keyboard.caret(base.$preview, param1, param2);
42638 base.saveCaret = function (start, end, $el) {
42639 if (base.isCurrent()) {
42640 var p = $keyboard.caret($el || base.$preview, start, end);
42641 base.last.start = typeof start === 'undefined' ? p.start : start;
42642 base.last.end = typeof end === 'undefined' ? p.end : end;
42646 base.setScroll = function () {
42647 // Set scroll so caret & current text is in view
42648 // needed for virtual keyboard typing, NOT manual typing - fixes #
23
42649 if (base.last.virtual) {
42651 var scrollWidth, clientWidth, adjustment, direction,
42652 isTextarea = base.preview.nodeName === 'TEXTAREA',
42653 value = base.last.val.substring(
0, Math.max(base.last.start, base.last.end));
42655 if (!base.$previewCopy) {
42657 base.$previewCopy = base.$preview.clone()
42658 .removeAttr('id') // fixes #
334
42660 position: 'absolute',
42663 visibility: 'hidden'
42665 .addClass($keyboard.css.inputClone);
42666 // prevent submitting content on form submission
42667 base.$previewCopy[
0].disabled = true;
42669 // make input zero-width because we need an accurate scrollWidth
42670 base.$previewCopy.css({
42671 'white-space': 'pre',
42675 if (o.usePreview) {
42676 // add clone inside of preview wrapper
42677 base.$preview.after(base.$previewCopy);
42679 // just slap that thing in there somewhere
42680 base.$keyboard.prepend(base.$previewCopy);
42685 // need the textarea scrollHeight, so set the clone textarea height to be the line height
42687 .height(base.lineHeight)
42689 // set scrollTop for Textarea
42690 base.preview.scrollTop = base.lineHeight *
42691 (Math.floor(base.$previewCopy[
0].scrollHeight / base.lineHeight) -
1);
42693 // add non-breaking spaces
42694 base.$previewCopy.val(value.replace(/\s/g, '\xa0'));
42696 // if scrollAdjustment option is set to "c" or "center" then center the caret
42697 adjustment = /c/i.test(o.scrollAdjustment) ? base.preview.clientWidth /
2 : o.scrollAdjustment;
42698 scrollWidth = base.$previewCopy[
0].scrollWidth -
1;
42700 // set initial state as moving right
42701 if (typeof base.last.scrollWidth === 'undefined') {
42702 base.last.scrollWidth = scrollWidth;
42703 base.last.direction = true;
42705 // if direction = true; we're scrolling to the right
42706 direction = base.last.scrollWidth === scrollWidth ?
42707 base.last.direction :
42708 base.last.scrollWidth < scrollWidth;
42709 clientWidth = base.preview.clientWidth - adjustment;
42711 // set scrollLeft for inputs; try to mimic the inherit caret positioning + scrolling:
42712 // hug right while scrolling right...
42714 if (scrollWidth < clientWidth) {
42715 base.preview.scrollLeft =
0;
42717 base.preview.scrollLeft = scrollWidth - clientWidth;
42720 // hug left while scrolling left...
42721 if (scrollWidth
>= base.preview.scrollWidth - clientWidth) {
42722 base.preview.scrollLeft = base.preview.scrollWidth - adjustment;
42723 } else if (scrollWidth - adjustment
> 0) {
42724 base.preview.scrollLeft = scrollWidth - adjustment;
42726 base.preview.scrollLeft =
0;
42730 base.last.scrollWidth = scrollWidth;
42731 base.last.direction = direction;
42736 base.bindFocus = function () {
42738 // make sure keyboard isn't destroyed
42739 // Check if base exists, this is a case when destroy is called, before timers have fired
42740 if (base && base.el.active) {
42741 base.$el.bind(o.openOn + base.namespace, function () {
42744 // remove focus from element (needed for IE since blur doesn't seem to work)
42745 if ($(':focus')[
0] === base.el) {
42752 base.bindKeyboard = function () {
42754 keyCodes = $keyboard.keyCodes,
42755 layout = $keyboard.builtLayouts[base.layout];
42757 .unbind(base.namespace)
42758 .bind('click' + base.namespace + ' touchstart' + base.namespace, function () {
42759 if (o.alwaysOpen && !base.isCurrent()) {
42762 // update last caret position after user click, use at least
150ms or it doesn't work in IE
42763 base.timer2 = setTimeout(function () {
42770 .bind('keypress' + base.namespace, function (e) {
42774 if (!base.isCurrent()) {
42778 var k = e.charCode || e.which,
42779 // capsLock can only be checked while typing a-z
42780 k1 = k
>= keyCodes.A && k <= keyCodes.Z,
42781 k2 = k
>= keyCodes.a && k <= keyCodes.z,
42782 str = base.last.key = String.fromCharCode(k);
42783 base.last.virtual = false;
42784 base.last.event = e;
42785 base.last.$key = []; // not a virtual keyboard key
42786 if (base.checkCaret) {
42791 if (k !== keyCodes.capsLock && (k1 || k2)) {
42792 base.capsLock = (k1 && !e.shiftKey) || (k2 && e.shiftKey);
42793 // if shifted keyset not visible, then show it
42794 if (base.capsLock && !base.shiftActive) {
42795 base.shiftActive = true;
42800 // restrict input - keyCode in keypress special keys:
42801 // see http://www.asquare.net/javascript/tests/KeyCode.html
42802 if (o.restrictInput) {
42803 // allow navigation keys to work - Chrome doesn't fire a keypress event (
8 = bksp)
42804 if ((e.which === keyCodes.backSpace || e.which ===
0) &&
42805 $.inArray(e.keyCode, base.alwaysAllowed)) {
42809 if ($.inArray(str, layout.acceptedKeys) === -
1) {
42810 e.preventDefault();
42811 // copy event object in case e.preventDefault() breaks when changing the type
42812 evt = $.extend({}, e);
42813 evt.type = $keyboard.events.inputRestricted;
42814 base.$el.trigger(evt, [base, base.el]);
42816 } else if ((e.ctrlKey || e.metaKey) &&
42817 (e.which === keyCodes.A || e.which === keyCodes.C || e.which === keyCodes.V ||
42818 (e.which
>= keyCodes.X && e.which <= keyCodes.Z))) {
42819 // Allow select all (ctrl-a), copy (ctrl-c), paste (ctrl-v) & cut (ctrl-x) &
42820 // redo (ctrl-y)& undo (ctrl-z); meta key for mac
42823 // Mapped Keys - allows typing on a regular keyboard and the mapped key is entered
42824 // Set up a key in the layout as follows: 'm(a):label'; m = key to map, (a) = actual keyboard key
42825 // to map to (optional), ':label' = title/tooltip (optional)
42826 // example: \u0391 or \u0391(A) or \u0391:alpha or \u0391(A):alpha
42827 if (layout.hasMappedKeys && layout.mappedKeys.hasOwnProperty(str)) {
42828 base.last.key = layout.mappedKeys[str];
42829 base.insertText(base.last.key);
42830 e.preventDefault();
42832 if (typeof o.beforeInsert === 'function') {
42833 base.insertText(base.last.key);
42834 e.preventDefault();
42836 base.checkMaxLength();
42839 .bind('keyup' + base.namespace, function (e) {
42840 if (!base.isCurrent()) { return; }
42841 base.last.virtual = false;
42845 // Added a flag to prevent from tabbing into an input, keyboard opening, then adding the tab
42846 // to the keyboard preview area on keyup. Sadly it still happens if you don't release the tab
42847 // key immediately because keydown event auto-repeats
42848 if (base.tab && o.tabNavigation && !o.lockInput) {
42849 base.shiftActive = e.shiftKey;
42850 // when switching inputs, the tab keyaction returns false
42851 var notSwitching = $keyboard.keyaction.tab(base);
42853 if (!notSwitching) {
42857 e.preventDefault();
42861 // Escape will hide the keyboard
42862 case keyCodes.escape:
42863 if (!o.ignoreEsc) {
42864 base.close(o.autoAccept && o.autoAcceptOnEsc ? 'true' : false);
42869 // throttle the check combo function because fast typers will have an incorrectly positioned caret
42870 clearTimeout(base.throttled);
42871 base.throttled = setTimeout(function () {
42872 // fix error in OSX? see issue #
102
42873 if (base && base.isVisible()) {
42874 base.checkCombos();
42878 base.checkMaxLength();
42880 base.last.preVal = '' + base.last.val;
42881 base.last.val = base.$preview.val();
42883 // don't alter "e" or the "keyup" event never finishes processing; fixes #
552
42884 var event = jQuery.Event( $keyboard.events.kbChange );
42885 // base.last.key may be empty string (shift, enter, tab, etc) when keyboard is first visible
42886 // use e.key instead, if browser supports it
42887 event.action = base.last.key;
42888 base.$el.trigger(event, [base, base.el]);
42890 // change callback is no longer bound to the input element as the callback could be
42891 // called during an external change event with all the necessary parameters (issue #
157)
42892 if ($.isFunction(o.change)) {
42893 event.type = $keyboard.events.inputChange;
42894 o.change(event, base, base.el);
42897 if (o.acceptValid && o.autoAcceptOnValid) {
42898 if ($.isFunction(o.validate) && o.validate(base, base.$preview.val())) {
42899 base.$preview.blur();
42904 .bind('keydown' + base.namespace, function (e) {
42905 base.last.keyPress = e.which;
42906 // ensure alwaysOpen keyboards are made active
42907 if (o.alwaysOpen && !base.isCurrent()) {
42910 // prevent tab key from leaving the preview window
42911 if (e.which === keyCodes.tab) {
42912 // allow tab to pass through - tab to next input/shift-tab for prev
42921 base.last.virtual = false;
42924 case keyCodes.backSpace:
42925 $keyboard.keyaction.bksp(base, null, e);
42926 e.preventDefault();
42929 case keyCodes.enter:
42930 $keyboard.keyaction.enter(base, null, e);
42934 case keyCodes.capsLock:
42935 base.shiftActive = base.capsLock = !base.capsLock;
42940 // prevent ctrl-v/cmd-v
42941 if (e.ctrlKey || e.metaKey) {
42942 if (o.preventPaste) {
42943 e.preventDefault();
42946 base.checkCombos(); // check pasted content
42951 .bind('mouseup touchend '.split(' ').join(base.namespace + ' '), function () {
42952 base.last.virtual = true;
42956 // prevent keyboard event bubbling
42957 base.$keyboard.bind('mousedown click touchstart '.split(' ').join(base.namespace + ' '), function (e) {
42958 e.stopPropagation();
42959 if (!base.isCurrent()) {
42961 $(document).trigger('checkkeyboard' + base.namespace);
42963 if (!o.noFocus && base.$preview) {
42964 base.$preview.focus();
42968 // If preventing paste, block context menu (right click)
42969 if (o.preventPaste) {
42970 base.$preview.bind('contextmenu' + base.namespace, function (e) {
42971 e.preventDefault();
42973 base.$el.bind('contextmenu' + base.namespace, function (e) {
42974 e.preventDefault();
42980 base.bindKeys = function () {
42981 var kbcss = $keyboard.css;
42982 base.$allKeys = base.$keyboard.find('button.' + kbcss.keyButton)
42983 .unbind(base.namespace + ' ' + base.namespace + 'kb')
42984 // Change hover class and tooltip - moved this touchstart before option.keyBinding touchstart
42985 // to prevent mousewheel lag/duplication - Fixes #
379 & #
411
42986 .bind('mouseenter mouseleave touchstart '.split(' ').join(base.namespace + ' '), function (e) {
42987 if ((o.alwaysOpen || o.userClosed) && e.type !== 'mouseleave' && !base.isCurrent()) {
42990 base.$preview.focus();
42992 $keyboard.caret(base.$preview, base.last);
42994 if (!base.isCurrent()) {
43002 if (o.useWheel && base.wheel) {
43003 $keys = base.getLayers($this);
43004 txt = ($keys.length ? $keys.map(function () {
43005 return $(this).attr('data-value') || '';
43007 .get() : '') || [$this.text()];
43008 last.wheel_$Keys = $keys;
43009 last.wheelLayers = txt;
43010 last.wheelIndex = $.inArray($this.attr('data-value'), txt);
43013 if ((type === 'mouseenter' || type === 'touchstart') && base.el.type !== 'password' &&
43014 !$this.hasClass(o.css.buttonDisabled)) {
43015 $this.addClass(o.css.buttonHover);
43016 if (o.useWheel && base.wheel) {
43017 $this.attr('title', function (i, t) {
43018 // show mouse wheel message
43019 return (base.wheel && t === '' && base.sets && txt.length
> 1 && type !== 'touchstart') ?
43020 o.wheelMessage : t;
43024 if (type === 'mouseleave') {
43025 // needed or IE flickers really bad
43026 $this.removeClass((base.el.type === 'password') ? '' : o.css.buttonHover);
43027 if (o.useWheel && base.wheel) {
43028 last.wheelIndex =
0;
43029 last.wheelLayers = [];
43030 last.wheel_$Keys = null;
43032 .attr('title', function (i, t) {
43033 return (t === o.wheelMessage) ? '' : t;
43035 .html($this.attr('data-html')); // restore original button text
43039 // keyBinding = 'mousedown touchstart' by default
43040 .bind(o.keyBinding.split(' ').join(base.namespace + ' ') + base.namespace + ' ' +
43041 $keyboard.events.kbRepeater, function (e) {
43042 e.preventDefault();
43043 // prevent errors when external triggers attempt to 'type' - see issue #
158
43044 if (!base.$keyboard.is(':visible')) {
43051 // prevent mousedown & touchstart from both firing events at the same time - see #
184
43052 timer = new Date().getTime();
43054 if (o.useWheel && base.wheel) {
43055 // get keys from other layers/keysets (shift, alt, meta, etc) that line up by data-position
43056 $keys = last.wheel_$Keys;
43057 // target mousewheel selected key
43058 $key = $keys && last.wheelIndex
> -
1 ? $keys.eq(last.wheelIndex) : $key;
43060 action = $key.attr('data-action');
43061 if (timer - (last.eventTime ||
0) < o.preventDoubleEventTime) {
43064 last.eventTime = timer;
43066 last.virtual = true;
43068 base.$preview.focus();
43071 last.key = $key.attr('data-value');
43072 last.keyPress = "";
43073 // Start caret in IE when not focused (happens with each virtual keyboard button click
43074 if (base.checkCaret) {
43075 $keyboard.caret(base.$preview, last);
43077 if (/^meta/.test(action)) {
43080 // keyaction is added as a string, override original action & text
43081 if (action === last.key && typeof $keyboard.keyaction[action] === 'string') {
43082 last.key = action = $keyboard.keyaction[action];
43083 } else if (action in $keyboard.keyaction && $.isFunction($keyboard.keyaction[action])) {
43084 // stop processing if action returns false (close & cancel)
43085 if ($keyboard.keyaction[action](base, this, e) === false) {
43088 action = null; // prevent inserting action name
43090 // stop processing if keyboard closed and keyaction did not return false - see #
536
43091 if (!base.hasKeyboard()) {
43094 if (typeof action !== 'undefined' && action !== null) {
43095 last.key = $(this).hasClass(kbcss.keyAction) ? action : last.key;
43096 base.insertText(last.key);
43097 if (!base.capsLock && !o.stickyShift && !e.shiftKey) {
43098 base.shiftActive = false;
43099 base.showSet($key.attr('data-name'));
43102 // set caret if caret moved by action function; also, attempt to fix issue #
131
43103 $keyboard.caret(base.$preview, last);
43104 base.checkCombos();
43105 e.type = $keyboard.events.kbChange;
43106 e.action = last.key;
43107 base.$el.trigger(e, [base, base.el]);
43108 last.preVal = '' + last.val;
43109 last.val = base.$preview.val();
43111 if ($.isFunction(o.change)) {
43112 e.type = $keyboard.events.inputChange;
43113 o.change(e, base, base.el);
43114 // return false to prevent reopening keyboard if base.accept() was called
43119 // using 'kb' namespace for mouse repeat functionality to keep it separate
43120 // I need to trigger a 'repeater.keyboard' to make it work
43121 .bind('mouseup' + base.namespace + ' ' + 'mouseleave touchend touchmove touchcancel '.split(' ')
43122 .join(base.namespace + 'kb '), function (e) {
43123 base.last.virtual = true;
43126 if (e.type === 'touchmove') {
43127 // if moving within the same key, don't stop repeating
43128 offset = $this.offset();
43129 offset.right = offset.left + $this.outerWidth();
43130 offset.bottom = offset.top + $this.outerHeight();
43131 if (e.originalEvent.touches[
0].pageX
>= offset.left &&
43132 e.originalEvent.touches[
0].pageX < offset.right &&
43133 e.originalEvent.touches[
0].pageY
>= offset.top &&
43134 e.originalEvent.touches[
0].pageY < offset.bottom) {
43137 } else if (/(mouseleave|touchend|touchcancel)/i.test(e.type)) {
43138 $this.removeClass(o.css.buttonHover); // needed for touch devices
43140 if (!o.noFocus && base.isCurrent() && base.isVisible()) {
43141 base.$preview.focus();
43143 if (base.checkCaret) {
43144 $keyboard.caret(base.$preview, base.last);
43147 base.mouseRepeat = [false, ''];
43148 clearTimeout(base.repeater); // make sure key repeat stops!
43149 if (o.acceptValid && o.autoAcceptOnValid) {
43150 if ($.isFunction(o.validate) && o.validate(base, base.$preview.val())) {
43151 base.$preview.blur();
43157 // prevent form submits when keyboard is bound locally - issue #
64
43158 .bind('click' + base.namespace, function () {
43161 // no mouse repeat for action keys (shift, ctrl, alt, meta, etc)
43162 .not('.' + kbcss.keyAction)
43163 // Allow mousewheel to scroll through other keysets of the same (non-action) key
43164 .bind('mousewheel' + base.namespace, function (e, delta) {
43165 if (o.useWheel && base.wheel) {
43166 // deltaY used by newer versions of mousewheel plugin
43167 delta = delta || e.deltaY;
43169 txt = base.last.wheelLayers || [];
43170 if (txt.length
> 1) {
43171 n = base.last.wheelIndex + (delta
> 0 ? -
1 :
1);
43172 if (n
> txt.length -
1) {
43176 n = txt.length -
1;
43181 base.last.wheelIndex = n;
43182 $(this).html(txt[n]);
43186 // mouse repeated action key exceptions
43187 .add('.' + kbcss.keyPrefix + ('tab bksp space enter'.split(' ')
43188 .join(',.' + kbcss.keyPrefix)), base.$keyboard)
43189 .bind('mousedown touchstart '.split(' ').join(base.namespace + 'kb '), function () {
43190 if (o.repeatRate !==
0) {
43192 // save the key, make sure we are repeating the right one (fast typers)
43193 base.mouseRepeat = [true, key];
43194 setTimeout(function () {
43195 // don't repeat keys if it is disabled - see #
431
43196 if (base && base.mouseRepeat[
0] && base.mouseRepeat[
1] === key && !key[
0].disabled) {
43197 base.repeatKey(key);
43205 // Insert text at caret/selection - thanks to Derek Wickwire for fixing this up!
43206 base.insertText = function (txt) {
43207 if (!base.$preview) { return; }
43208 if (typeof o.beforeInsert === 'function') {
43209 txt = o.beforeInsert(base.last.event, base, base.el, txt);
43211 if (typeof txt === 'undefined' || txt === false) {
43212 base.last.key = '';
43216 isBksp = txt === '\b',
43217 // use base.$preview.val() instead of base.preview.value (val.length includes carriage returns in IE).
43218 val = base.$preview.val(),
43219 pos = $keyboard.caret(base.$preview),
43220 len = val.length; // save original content length
43222 // silly IE caret hacks... it should work correctly, but navigating using arrow keys in a textarea
43223 // is still difficult
43224 // in IE, pos.end can be zero after input loses focus
43225 if (pos.end < pos.start) {
43226 pos.end = pos.start;
43228 if (pos.start
> len) {
43229 pos.end = pos.start = len;
43232 if (base.preview.nodeName === 'TEXTAREA') {
43233 // This makes sure the caret moves to the next line after clicking on enter (manual typing works fine)
43234 if ($keyboard.msie && val.substr(pos.start,
1) === '\n') {
43240 if (txt === '{d}') {
43246 bksp = isBksp && pos.start === pos.end;
43247 txt = isBksp ? '' : txt;
43248 val = val.substr(
0, pos.start - (bksp ?
1 :
0)) + txt + val.substr(pos.end);
43249 t = pos.start + (bksp ? -
1 : txt.length);
43251 base.$preview.val(val);
43252 base.saveCaret(t, t); // save caret in case of bksp
43254 // see #
506.. allow chaining of insertText
43258 // check max length
43259 base.checkMaxLength = function () {
43260 if (!base.$preview) { return; }
43262 val = base.$preview.val();
43263 if (o.maxLength !== false && val.length
> o.maxLength) {
43264 start = $keyboard.caret(base.$preview).start;
43265 caret = Math.min(start, o.maxLength);
43267 // prevent inserting new characters when maxed #
289
43268 if (!o.maxInsert) {
43269 val = base.last.val;
43270 caret = start -
1; // move caret back one
43273 base.$preview.val(val.substring(
0, o.maxLength));
43274 // restore caret on change, otherwise it ends up at the end.
43275 base.saveCaret(caret, caret);
43277 if (base.$decBtn.length) {
43278 base.checkDecimal();
43284 // mousedown repeater
43285 base.repeatKey = function (key) {
43286 key.trigger($keyboard.events.kbRepeater);
43287 if (base.mouseRepeat[
0]) {
43288 base.repeater = setTimeout(function () {
43290 base.repeatKey(key);
43292 }, base.repeatTime);
43296 base.getKeySet = function () {
43298 if (base.altActive) {
43301 if (base.shiftActive) {
43302 sets.push('shift');
43304 if (base.metaActive) {
43305 // base.metaActive contains the string name of the
43306 // current meta keyset
43307 sets.push(base.metaActive);
43309 return sets.length ? sets.join('+') : 'normal';
43312 // make it easier to switch keysets via API
43313 // showKeySet('shift+alt+meta1')
43314 base.showKeySet = function (str) {
43315 if (typeof str === 'string') {
43316 base.last.keyset = [base.shiftActive, base.altActive, base.metaActive];
43317 base.shiftActive = /shift/i.test(str);
43318 base.altActive = /alt/i.test(str);
43319 if (/\bmeta/.test(str)) {
43320 base.metaActive = true;
43321 base.showSet(str.match(/\bmeta[\w-]+/i)[
0]);
43323 base.metaActive = false;
43333 base.showSet = function (name) {
43334 if (!base.hasKeyboard()) { return; }
43335 o = base.options; // refresh options
43336 var kbcss = $keyboard.css,
43337 prefix = '.' + kbcss.keyPrefix,
43338 active = o.css.buttonActive,
43340 toShow = (base.shiftActive ?
1 :
0) + (base.altActive ?
2 :
0);
43341 if (!base.shiftActive) {
43342 base.capsLock = false;
43344 // check meta key set
43345 if (base.metaActive) {
43346 // remove "-shift" and "-alt" from meta name if it exists
43347 if (base.shiftActive) {
43348 name = (name || "").replace("-shift", "");
43350 if (base.altActive) {
43351 name = (name || "").replace("-alt", "");
43353 // the name attribute contains the meta set name 'meta99'
43354 key = (/^meta/i.test(name)) ? name : '';
43355 // save active meta keyset name
43357 key = (base.metaActive === true) ? '' : base.metaActive;
43359 base.metaActive = key;
43361 // if meta keyset doesn't have a shift or alt keyset, then show just the meta key set
43362 if ((!o.stickyShift && base.last.keyset[
2] !== base.metaActive) ||
43363 ((base.shiftActive || base.altActive) &&
43364 !base.$keyboard.find('.' + kbcss.keySet + '-' + key + base.rows[toShow]).length)) {
43365 base.shiftActive = base.altActive = false;
43367 } else if (!o.stickyShift && base.last.keyset[
2] !== base.metaActive && base.shiftActive) {
43368 // switching from meta key set back to default, reset shift & alt if using stickyShift
43369 base.shiftActive = base.altActive = false;
43371 toShow = (base.shiftActive ?
1 :
0) + (base.altActive ?
2 :
0);
43372 key = (toShow ===
0 && !base.metaActive) ? '-normal' : (key === '') ? '' : '-' + key;
43373 if (!base.$keyboard.find('.' + kbcss.keySet + key + base.rows[toShow]).length) {
43374 // keyset doesn't exist, so restore last keyset settings
43375 base.shiftActive = base.last.keyset[
0];
43376 base.altActive = base.last.keyset[
1];
43377 base.metaActive = base.last.keyset[
2];
43381 .find(prefix + 'alt,' + prefix + 'shift,.' + kbcss.keyAction + '[class*=meta]')
43382 .removeClass(active)
43384 .find(prefix + 'alt')
43385 .toggleClass(active, base.altActive)
43387 .find(prefix + 'shift')
43388 .toggleClass(active, base.shiftActive)
43390 .find(prefix + 'lock')
43391 .toggleClass(active, base.capsLock)
43393 .find('.' + kbcss.keySet)
43396 .find('.' + (kbcss.keyAction + prefix + key).replace("--", "-"))
43399 // show keyset using inline-block ( extender layout will then line up )
43400 base.$keyboard.find('.' + kbcss.keySet + key + base.rows[toShow])[
0].style.display = 'inline-block';
43401 if (base.metaActive) {
43402 base.$keyboard.find(prefix + base.metaActive)
43403 // base.metaActive contains the string "meta#" or false
43404 // without the !== false, jQuery UI tries to transition the classes
43405 .toggleClass(active, base.metaActive !== false);
43407 base.last.keyset = [base.shiftActive, base.altActive, base.metaActive];
43408 base.$el.trigger($keyboard.events.kbKeysetChange, [base, base.el]);
43409 if (o.reposition) {
43414 // check for key combos (dead keys)
43415 base.checkCombos = function () {
43416 // return val for close function
43418 base.isVisible() || (
43419 base.hasKeyboard() &&
43420 base.$keyboard.hasClass( $keyboard.css.hasFocus )
43423 return ( base.$preview || base.$el ).val();
43426 // use base.$preview.val() instead of base.preview.value (val.length includes carriage returns in IE).
43427 val = base.$preview.val(),
43428 pos = $keyboard.caret(base.$preview),
43429 layout = $keyboard.builtLayouts[base.layout],
43430 len = val.length; // save original content length
43431 // return if val is empty; fixes #
352
43433 // check valid on empty string - see #
429
43434 if (o.acceptValid) {
43440 // silly IE caret hacks... it should work correctly, but navigating using arrow keys in a textarea
43441 // is still difficult
43442 // in IE, pos.end can be zero after input loses focus
43443 if (pos.end < pos.start) {
43444 pos.end = pos.start;
43446 if (pos.start
> len) {
43447 pos.end = pos.start = len;
43449 // This makes sure the caret moves to the next line after clicking on enter (manual typing works fine)
43450 if ($keyboard.msie && val.substr(pos.start,
1) === '\n') {
43456 // keep 'a' and 'o' in the regex for ae and oe ligature (æ,œ)
43457 // thanks to KennyTM: http://stackoverflow.com/q/
4275077
43458 // original regex /([`\'~\^\"ao])([a-z])/mig moved to $.keyboard.comboRegex
43459 if ($keyboard.msie) {
43460 // old IE may not have the caret positioned correctly, so just check the whole thing
43461 val = val.replace(base.regex, function (s, accent, letter) {
43462 return (o.combos.hasOwnProperty(accent)) ? o.combos[accent][letter] || s : s;
43464 // prevent combo replace error, in case the keyboard closes - see issue #
116
43465 } else if (base.$preview.length) {
43466 // Modern browsers - check for combos from last two characters left of the caret
43467 t = pos.start - (pos.start -
2 >=
0 ?
2 :
0);
43468 // target last two characters
43469 $keyboard.caret(base.$preview, t, pos.end);
43470 // do combo replace
43471 t2 = ($keyboard.caret(base.$preview).text || '').replace(base.regex, function (s, accent, letter) {
43472 return (o.combos.hasOwnProperty(accent)) ? o.combos[accent][letter] || s : s;
43475 t = $keyboard.caret(base.$preview);
43476 // prevent error if caret doesn't return a function
43477 if (t && t.replaceStr) {
43478 base.$preview.val(t.replaceStr(t2));
43480 val = base.$preview.val();
43484 // check input restrictions - in case content was pasted
43485 if (o.restrictInput && val !== '') {
43486 t = layout.acceptedKeys.length;
43488 r = layout.acceptedKeysRegex;
43490 t2 = $.map(layout.acceptedKeys, function (v) {
43491 // escape any special characters
43492 return v.replace(base.escapeRegex, '\\$&');
43494 r = layout.acceptedKeysRegex = new RegExp('(' + t2.join('|') + ')', 'g');
43497 // only save matching keys
43502 // no valid characters
43508 // save changes, then reposition caret
43509 pos.start += val.length - len;
43510 pos.end += val.length - len;
43511 base.$preview.val(val);
43512 base.saveCaret(pos.start, pos.end);
43513 // set scroll to keep caret in view
43516 base.checkMaxLength();
43518 if (o.acceptValid) {
43522 return val; // return text, used for keyboard closing section
43525 // Toggle accept button classes, if validating
43526 base.checkValid = function () {
43527 var kbcss = $keyboard.css,
43528 $accept = base.$keyboard.find('.' + kbcss.keyPrefix + 'accept'),
43530 if ($.isFunction(o.validate)) {
43531 valid = o.validate(base, base.$preview.val(), false);
43533 // toggle accept button classes; defined in the css
43535 .toggleClass(kbcss.inputInvalid, !valid)
43536 .toggleClass(kbcss.inputValid, valid)
43537 // update title to indicate that the entry is valid or invalid
43538 .attr('title', $accept.attr('data-title') + ' (' + o.display[valid ? 'valid' : 'invalid'] + ')');
43541 // Decimal button for num pad - only allow one (not used by default)
43542 base.checkDecimal = function () {
43543 // Check US '.' or European ',' format
43544 if ((base.decimal && /\./g.test(base.preview.value)) ||
43545 (!base.decimal && /\,/g.test(base.preview.value))) {
43548 'disabled': 'disabled',
43549 'aria-disabled': 'true'
43551 .removeClass(o.css.buttonHover)
43552 .addClass(o.css.buttonDisabled);
43555 .removeAttr('disabled')
43557 'aria-disabled': 'false'
43559 .addClass(o.css.buttonDefault)
43560 .removeClass(o.css.buttonDisabled);
43564 // get other layer values for a specific key
43565 base.getLayers = function ($el) {
43566 var kbcss = $keyboard.css,
43567 key = $el.attr('data-pos'),
43568 $keys = $el.closest('.' + kbcss.keyboard)
43569 .find('button[
data-pos="' + key + '"]');
43570 return $keys.filter(function () {
43572 .find('.' + kbcss.keyText)
43578 // Go to next or prev inputs
43579 // goToNext = true, then go to next input; if false go to prev
43580 // isAccepted is from autoAccept option or true if user presses shift+enter
43581 base.switchInput = function (goToNext, isAccepted) {
43582 if ($.isFunction(o.switchInput)) {
43583 o.switchInput(base, goToNext, isAccepted);
43585 // base.$keyboard may be an empty array - see #
275 (apod42)
43586 if (base.$keyboard.length) {
43587 base.$keyboard.hide();
43591 all = $('button, input, select, textarea, a')
43592 .filter(':visible')
43594 indx = all.index(base.$el) + (goToNext ?
1 : -
1);
43595 if (base.$keyboard.length) {
43596 base.$keyboard.show();
43598 if (indx
> all.length -
1) {
43599 stopped = o.stopAtEnd;
43600 indx =
0; // go to first input
43603 stopped = o.stopAtEnd;
43604 indx = all.length -
1; // stop or go to last
43607 isAccepted = base.close(isAccepted);
43611 kb = all.eq(indx).data('keyboard');
43612 if (kb && kb.options.openOn.length) {
43615 all.eq(indx).focus();
43622 // Close the keyboard, if visible. Pass a status of true, if the content was accepted
43623 // (for the event trigger).
43624 base.close = function (accepted) {
43625 if (base.isOpen && base.$keyboard.length) {
43626 clearTimeout(base.throttled);
43627 var kbcss = $keyboard.css,
43628 kbevents = $keyboard.events,
43629 val = (accepted) ? base.checkCombos() : base.originalContent;
43630 // validate input if accepted
43631 if (accepted && $.isFunction(o.validate) && !o.validate(base, val, true)) {
43632 val = base.originalContent;
43634 if (o.cancelClose) {
43638 base.isCurrent(false);
43639 base.isOpen = o.alwaysOpen || o.userClosed;
43640 // update value for always open keyboards
43641 base.$preview.val(val);
43643 .removeClass(kbcss.isCurrent + ' ' + kbcss.inputAutoAccepted)
43644 // add 'ui-keyboard-autoaccepted' to inputs - see issue #
66
43645 .addClass((accepted || false) ? accepted === true ? '' : kbcss.inputAutoAccepted : '')
43647 // trigger default change event - see issue #
146
43648 .trigger(kbevents.inputChange);
43649 // don't trigger an empty event - see issue #
463
43650 if (!o.alwaysOpen) {
43651 // don't trigger beforeClose if keyboard is always open
43652 base.$el.trigger(kbevents.kbBeforeClose, [base, base.el, (accepted || false)]);
43654 // save caret after updating value (fixes userClosed issue with changing focus)
43655 $keyboard.caret(base.$preview, base.last);
43658 .trigger(((accepted || false) ? kbevents.inputAccepted : kbevents.inputCanceled), [base, base.el])
43659 .trigger((o.alwaysOpen) ? kbevents.kbInactive : kbevents.kbHidden, [base, base.el])
43662 // base is undefined if keyboard was destroyed - fixes #
358
43664 // add close event time
43665 base.last.eventTime = new Date().getTime();
43666 if (!(o.alwaysOpen || o.userClosed && accepted === 'true') && base.$keyboard.length) {
43668 base.removeKeyboard();
43669 // rebind input focus - delayed to fix IE issue #
72
43670 base.timer = setTimeout(function () {
43676 if (!base.watermark && base.el.value === '' && base.inPlaceholder !== '') {
43678 .addClass(kbcss.placeholder)
43679 .val(base.inPlaceholder);
43686 base.accept = function () {
43687 return base.close(true);
43690 base.checkClose = function (e) {
43691 if (base.opening) {
43695 var kbcss = $.keyboard.css,
43696 $target = $(e.target);
43697 // needed for IE to allow switching between keyboards smoothly
43698 if ($target.hasClass(kbcss.input)) {
43699 var kb = $target.data('keyboard');
43700 // only trigger on self
43703 !kb.$el.hasClass(kbcss.isCurrent) &&
43704 kb.options.openOn &&
43705 e.type === o.openOn
43712 base.escClose = function (e) {
43713 if (e && e.type === 'keyup') {
43714 return (e.which === $keyboard.keyCodes.escape && !o.ignoreEsc) ?
43715 base.close(o.autoAccept && o.autoAcceptOnEsc ? 'true' : false) :
43718 // keep keyboard open if alwaysOpen or stayOpen is true - fixes mutliple always open keyboards or
43719 // single stay open keyboard
43720 if (!base.isOpen) {
43723 // ignore autoaccept if using escape - good idea?
43724 if (!base.isCurrent() && base.isOpen || base.isOpen && e.target !== base.el) {
43725 // don't close if stayOpen is set; but close if a different keyboard is being opened
43726 if ((o.stayOpen || o.userClosed) && !$(e.target).hasClass($keyboard.css.input)) {
43729 // stop propogation in IE - an input getting focus doesn't open a keyboard if one is already open
43730 if ($keyboard.allie) {
43731 e.preventDefault();
43733 if (o.closeByClickEvent) {
43734 // only close the keyboard if the user is clicking on an input or if he causes a click
43735 // event (touchstart/mousedown will not force the close with this setting)
43736 var name = e.target.nodeName.toLowerCase();
43737 if (name === 'input' || name === 'textarea' || e.type === 'click') {
43738 base.close(o.autoAccept ? 'true' : false);
43741 // send 'true' instead of a true (boolean), the input won't get a 'ui-keyboard-autoaccepted'
43742 // class name - see issue #
66
43743 base.close(o.autoAccept ? 'true' : false);
43748 // Build default button
43749 base.keyBtn = $('
<button />')
43753 'aria-disabled': 'false',
43756 .addClass($keyboard.css.keyButton);
43758 // convert key names into a class name
43759 base.processName = function (name) {
43761 process = (name || '').replace(/[^a-z0-
9-_]/gi, ''),
43762 len = process.length,
43764 if (len
> 1 && name === process) {
43765 // return name if basic text
43768 // return character code sequence
43771 for (index =
0; index < len; index++) {
43773 // keep '-' and '_'... so for dash, we get two dashes in a row
43774 newName.push(/[a-z0-
9-_]/i.test(n) ?
43775 (/[-_]/.test(n) && index !==
0 ? '' : n) :
43776 (index ===
0 ? '' : '-') + n.charCodeAt(
0)
43779 return newName.join('');
43785 base.processKeys = function (name) {
43787 parts = name.split(':'),
43793 /* map defined keys
43794 format 'key(A):Label_for_key_(ignore_parentheses_here)'
43795 'key' = key that is seen (can any character(s); but it might need to be escaped using '\'
43796 or entered as unicode '\u####'
43797 '(A)' = the actual key on the real keyboard to remap
43798 ':Label_for_key' ends up in the title/tooltip
43800 '\u0391(A):alpha', 'x(y):this_(might)_cause_problems
43801 or edge cases of ':(x)', 'x(:)', 'x(()' or 'x())'
43802 Enhancement (if I can get alt keys to work):
43803 A mapped key will include the mod key, e.g. 'x(alt-x)' or 'x(alt-shift-x)'
43805 if (/\(.+\)/.test(parts[
0]) || /^:\(.+\)/.test(name) || /\([(:)]\)/.test(name)) {
43806 // edge cases 'x(:)', 'x(()' or 'x())'
43807 if (/\([(:)]\)/.test(name)) {
43808 tmp = parts[
0].match(/([^(]+)\((.+)\)/);
43809 if (tmp && tmp.length) {
43810 data.name = tmp[
1];
43812 data.title = parts.length
> 1 ? parts.slice(
1).join(':') : '';
43814 // edge cases 'x(:)', ':(x)' or ':(:)'
43815 data.name = name.match(/([^(]+)/)[
0];
43816 if (data.name === ':') {
43817 // ':(:):test' =
> parts = [ '', '(', ')', 'title' ] need to slice
1
43818 parts = parts.slice(
1);
43820 if (tmp === null) {
43821 // 'x(:):test' =
> parts = [ 'x(', ')', 'title' ] need to slice
2
43823 parts = parts.slice(
2);
43825 data.title = parts.length ? parts.join(':') : '';
43828 // example: \u0391(A):alpha; extract 'A' from '(A)'
43829 data.map = name.match(/\(([^()]+?)\)/)[
1];
43830 // remove '(A)', left with '\u0391:alpha'
43831 name = name.replace(/\(([^()]+)\)/, '');
43832 tmp = name.split(':');
43833 // get '\u0391' from '\u0391:alpha'
43834 if (tmp[
0] === '') {
43836 parts = parts.slice(
1);
43838 data.name = tmp[
0];
43840 data.title = parts.length
> 1 ? parts.slice(
1).join(':') : '';
43844 // corner case of '::;' reduced to ':;', split as ['', ';']
43845 if (name !== '' && parts[
0] === '') {
43847 parts = parts.slice(
1);
43849 data.name = parts[
0];
43851 data.title = parts.length
> 1 ? parts.slice(
1).join(':') : '';
43853 data.title = $.trim(data.title).replace(/_/g, ' ');
43857 // Add key function
43858 // keyName = the name of the function called in $.keyboard.keyaction when the button is clicked
43859 // name = name added to key, or cross-referenced in the display options
43860 // base.temp[
0] = keyset to attach the new button
43861 // regKey = true when it is not an action key
43862 base.addKey = function (keyName, action, regKey) {
43863 var keyClass, tmp, keys,
43865 txt = base.processKeys(regKey ? keyName : action),
43866 kbcss = $keyboard.css;
43868 if (!regKey && o.display[txt.name]) {
43869 keys = base.processKeys(o.display[txt.name]);
43870 // action contained in
"keyName" (e.g. keyName =
"accept",
43871 // action =
"a" (use checkmark instead of text))
43872 keys.action = base.processKeys(keyName).name;
43874 // when regKey is true, keyName is the same as action
43876 keys.action = txt.name;
43879 data.name = base.processName(txt.name);
43881 if (keys.map !== '') {
43882 $keyboard.builtLayouts[base.layout].mappedKeys[keys.map] = keys.name;
43883 $keyboard.builtLayouts[base.layout].acceptedKeys.push(keys.name);
43884 } else if (regKey) {
43885 $keyboard.builtLayouts[base.layout].acceptedKeys.push(keys.name);
43889 keyClass = data.name === '' ? '' : kbcss.keyPrefix + data.name;
43891 // Action keys will have the 'ui-keyboard-actionkey' class
43892 keyClass = kbcss.keyAction + ' ' + kbcss.keyPrefix + keys.action;
43894 // '\u2190'.length =
1 because the unicode is converted, so if more than one character,
43895 // add the wide class
43896 keyClass += (keys.name.length
> 2 ? ' ' + kbcss.keyWide : '') + ' ' + o.css.buttonDefault;
43898 data.html = '
<span class=
"' + kbcss.keyText + '">' +
43899 // this prevents HTML from being added to the key
43900 keys.name.replace(/[\u00A0-\u9999]/gim, function (i) {
43901 return '&#' + i.charCodeAt(
0) + ';';
43905 data.$key = base.keyBtn
43908 'data-value': regKey ? keys.name : keys.action, // value
43909 'data-name': keys.action,
43910 'data-pos': base.temp[
1] + ',' + base.temp[
2],
43911 'data-action': keys.action,
43912 'data-html': data.html
43914 // add 'ui-keyboard-' + data.name for all keys
43915 // (e.g. 'Bksp' will have 'ui-keyboard-bskp' class)
43916 // any non-alphanumeric characters will be replaced with
43917 // their decimal unicode value
43918 // (e.g. '~' is a regular key, class = 'ui-keyboard-
126'
43919 // (
126 is the unicode decimal value - same as
~)
43920 // See https://en.wikipedia.org/wiki/List_of_Unicode_characters#Control_codes
43921 .addClass(keyClass)
43923 .appendTo(base.temp[
0]);
43926 data.$key.attr('data-mapped', keys.map);
43928 if (keys.title || txt.title) {
43930 'data-title': txt.title || keys.title, // used to allow adding content to title
43931 'title': txt.title || keys.title
43935 if (typeof o.buildKey === 'function') {
43936 data = o.buildKey(base, data);
43937 // copy html back to attributes
43938 tmp = data.$key.html();
43939 data.$key.attr('data-html', tmp);
43944 base.customHash = function (layout) {
43945 /*jshint bitwise:false */
43946 var i, array, hash, character, len,
43949 // pass layout to allow for testing
43950 layout = typeof layout === 'undefined' ? o.customLayout : layout;
43951 // get all layout arrays
43952 for (array in layout) {
43953 if (layout.hasOwnProperty(array)) {
43954 arrays.push(layout[array]);
43958 merged = merged.concat.apply(merged, arrays).join(' ');
43959 // produce hash name - http://stackoverflow.com/a/
7616484/
145346
43961 len = merged.length;
43965 for (i =
0; i < len; i++) {
43966 character = merged.charCodeAt(i);
43967 hash = ((hash <<
5) - hash) + character;
43968 hash = hash & hash; // Convert to
32bit integer
43973 base.buildKeyboard = function (name, internal) {
43974 // o.display is empty when this is called from the scramble extension (when alwaysOpen:true)
43975 if ($.isEmptyObject(o.display)) {
43976 // set keyboard language
43977 base.updateLanguage();
43979 var row, $row, currentSet,
43980 kbcss = $keyboard.css,
43982 layout = $keyboard.builtLayouts[name || base.layout || o.layout] = {
43986 acceptedKeys = layout.acceptedKeys = o.restrictInclude ?
43987 ('' + o.restrictInclude).split(/\s+/) || [] :
43989 // using $layout temporarily to hold keyboard popup classnames
43990 $layout = kbcss.keyboard + ' ' + o.css.popup + ' ' + o.css.container +
43991 (o.alwaysOpen || o.userClosed ? ' ' + kbcss.alwaysOpen : ''),
43993 container = $('
<div />')
43999 // verify layout or setup custom keyboard
44000 if ((internal && o.layout === 'custom') || !$keyboard.layouts.hasOwnProperty(o.layout)) {
44001 o.layout = 'custom';
44002 $layout = $keyboard.layouts.custom = o.customLayout || {
44003 'normal': ['{cancel}']
44006 $layout = $keyboard.layouts[internal ? o.layout : name || base.layout || o.layout];
44009 // Main keyboard building loop
44010 $.each($layout, function (set, keySet) {
44011 // skip layout name & lang settings
44012 if (set !== '' && !/^(name|lang|rtl)$/i.test(set)) {
44013 // keep backwards compatibility for change from default to normal naming
44014 if (set === 'default') {
44018 $row = $('
<div />')
44019 .attr('name', set) // added for typing extension
44020 .addClass(kbcss.keySet + ' ' + kbcss.keySet + '-' + set)
44021 .appendTo(container)
44022 .toggle(set === 'normal');
44024 for (row =
0; row < keySet.length; row++) {
44025 // remove extra spaces before spliting (regex probably could be improved)
44026 currentSet = $.trim(keySet[row]).replace(/\{(\.?)[\s+]?:[\s+]?(\.?)\}/g, '{$
1:$
2}');
44027 base.buildRow($row, row, currentSet.split(/\s+/), acceptedKeys);
44028 $row.find('.' + kbcss.keyButton + ',.' + kbcss.keySpacer)
44030 .after('
<br class=
"' + kbcss.endRow + '"/>');
44038 layout.hasMappedKeys = !($.isEmptyObject(layout.mappedKeys));
44039 layout.$keyboard = container;
44043 base.buildRow = function ($row, row, keys, acceptedKeys) {
44044 var t, txt, key, isAction, action, margin,
44045 kbcss = $keyboard.css;
44046 for (key =
0; key < keys.length; key++) {
44047 // used by addKey function
44048 base.temp = [$row, row, key];
44051 // ignore empty keys
44052 if (keys[key].length ===
0) {
44056 // process here if it's an action key
44057 if (/^\{\S+\}$/.test(keys[key])) {
44058 action = keys[key].match(/^\{(\S+)\}$/)[
1];
44059 // add active class if there are double exclamation points in the name
44060 if (/\!\!/.test(action)) {
44061 action = action.replace('!!', '');
44066 if (/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/i.test(action)) {
44067 // not perfect globalization, but allows you to use {sp:
1,
1em}, {sp:
1.2em} or {sp:
15px}
44068 margin = parseFloat(action
44070 .match(/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/i)[
1] ||
0
44072 $('
<span class=
"' + kbcss.keyText + '"></span>')
44073 // previously {sp:
1} would add
1em margin to each side of a
0 width span
44074 // now Firefox doesn't seem to render
0px dimensions, so now we set the
44075 //
1em margin x
2 for the width
44076 .width((action.match(/px/i) ? margin + 'px' : (margin *
2) + 'em'))
44077 .addClass(kbcss.keySpacer)
44081 // add empty button
44082 if (/^empty(:((\d+)?([\.|,]\d+)?)(em|px)?)?$/i.test(action)) {
44083 margin = (/:/.test(action)) ? parseFloat(action
44085 .match(/^empty:((\d+)?([\.|,]\d+)?)(em|px)?$/i)[
1] ||
0
44088 .addKey('', ' ', true)
44089 .addClass(o.css.buttonDisabled + ' ' + o.css.buttonEmpty)
44090 .attr('aria-disabled', true)
44091 .width(margin ? (action.match('px') ? margin + 'px' : (margin *
2) + 'em') : '');
44096 if (/^meta[\w-]+\:?(\w+)?/i.test(action)) {
44098 .addKey(action.split(':')[
0], action)
44099 .addClass(kbcss.keyHasActive);
44103 // switch needed for action keys with multiple names/shortcuts or
44104 // default will catch all others
44105 txt = action.split(':');
44106 switch (txt[
0].toLowerCase()) {
44111 .addKey('accept', action)
44112 .addClass(o.css.buttonAction + ' ' + kbcss.keyAction);
44118 .addKey('alt', action)
44119 .addClass(kbcss.keyHasActive);
44124 base.addKey('bksp', action);
44130 .addKey('cancel', action)
44131 .addClass(o.css.buttonAction + ' ' + kbcss.keyAction);
44134 // toggle combo/diacritic key
44138 .addKey('combo', action)
44139 .addClass(kbcss.keyHasActive)
44140 .attr('title', function (indx, title) {
44141 // add combo key state to title
44142 return title + ' ' + o.display[o.useCombos ? 'active' : 'disabled'];
44144 .toggleClass(o.css.buttonActive, o.useCombos);
44147 // Decimal - unique decimal point (num pad layout)
44149 acceptedKeys.push((base.decimal) ? '.' : ',');
44150 base.addKey('dec', action);
44156 .addKey('enter', action)
44157 .addClass(o.css.buttonAction + ' ' + kbcss.keyAction);
44162 .addKey('lock', action)
44163 .addClass(kbcss.keyHasActive);
44169 .addKey('shift', action)
44170 .addClass(kbcss.keyHasActive);
44173 // Change sign (for num pad layout)
44175 acceptedKeys.push('-');
44176 base.addKey('sign', action);
44180 acceptedKeys.push(' ');
44181 base.addKey('space', action);
44186 base.addKey('tab', action);
44190 if ($keyboard.keyaction.hasOwnProperty(txt[
0])) {
44192 .addKey(txt[
0], action)
44193 .toggleClass(o.css.buttonAction + ' ' + kbcss.keyAction, isAction);
44200 // regular button (not an action key)
44202 base.addKey(t, t, true);
44207 base.removeBindings = function (namespace) {
44208 $(document).unbind(namespace);
44209 if (base.el.ownerDocument !== document) {
44210 $(base.el.ownerDocument).unbind(namespace);
44212 $(window).unbind(namespace);
44213 base.$el.unbind(namespace);
44216 base.removeKeyboard = function () {
44217 base.$allKeys = [];
44219 // base.$preview === base.$el when o.usePreview is false - fixes #
442
44220 if (o.usePreview) {
44221 base.$preview.removeData('keyboard');
44223 base.preview = null;
44224 base.$preview = null;
44225 base.$previewCopy = null;
44226 base.$keyboard.removeData('keyboard');
44227 base.$keyboard.remove();
44228 base.$keyboard = [];
44229 base.isOpen = false;
44230 base.isCurrent(false);
44233 base.destroy = function (callback) {
44235 kbcss = $keyboard.css,
44236 len = base.extensionNamespace.length,
44246 clearTimeout(base.timer);
44247 clearTimeout(base.timer2);
44248 if (base.$keyboard.length) {
44249 base.removeKeyboard();
44251 base.removeBindings(base.namespace);
44252 base.removeBindings(base.namespace + 'callbacks');
44253 for (index =
0; index < len; index++) {
44254 base.removeBindings(base.extensionNamespace[index]);
44256 base.el.active = false;
44260 .removeAttr('aria-haspopup')
44261 .removeAttr('role')
44262 .removeData('keyboard');
44265 if (typeof callback === 'function') {
44273 }; // end $.keyboard definition
44275 // event.which & ASCII values
44276 $keyboard.keyCodes = {
44293 // event.which keyCodes (uppercase letters)
44300 // ASCII lowercase a & z
44306 // keyboard id suffix
44307 idSuffix: '_keyboard',
44308 // class name to set initial focus
44309 initialFocus: 'keyboard-init-focus',
44310 // element class names
44311 input: 'ui-keyboard-input',
44312 inputClone: 'ui-keyboard-preview-clone',
44313 wrapper: 'ui-keyboard-preview-wrapper',
44314 preview: 'ui-keyboard-preview',
44315 keyboard: 'ui-keyboard',
44316 keySet: 'ui-keyboard-keyset',
44317 keyButton: 'ui-keyboard-button',
44318 keyWide: 'ui-keyboard-widekey',
44319 keyPrefix: 'ui-keyboard-',
44320 keyText: 'ui-keyboard-text', // span with button text
44321 keyHasActive: 'ui-keyboard-hasactivestate',
44322 keyAction: 'ui-keyboard-actionkey',
44323 keySpacer: 'ui-keyboard-spacer', // empty keys
44324 keyToggle: 'ui-keyboard-toggle',
44325 keyDisabled: 'ui-keyboard-disabled',
44327 locked: 'ui-keyboard-lockedinput',
44328 alwaysOpen: 'ui-keyboard-always-open',
44329 noKeyboard: 'ui-keyboard-nokeyboard',
44330 placeholder: 'ui-keyboard-placeholder',
44331 hasFocus: 'ui-keyboard-has-focus',
44332 isCurrent: 'ui-keyboard-input-current',
44333 // validation & autoaccept
44334 inputValid: 'ui-keyboard-valid-input',
44335 inputInvalid: 'ui-keyboard-invalid-input',
44336 inputAutoAccepted: 'ui-keyboard-autoaccepted',
44337 endRow: 'ui-keyboard-button-endrow' // class added to
<br>
44340 $keyboard.events = {
44342 kbChange: 'keyboardChange',
44343 kbBeforeClose: 'beforeClose',
44344 kbBeforeVisible: 'beforeVisible',
44345 kbVisible: 'visible',
44346 kbInit: 'initialized',
44347 kbInactive: 'inactive',
44348 kbHidden: 'hidden',
44349 kbRepeater: 'repeater',
44350 kbKeysetChange: 'keysetChange',
44352 inputAccepted: 'accepted',
44353 inputCanceled: 'canceled',
44354 inputChange: 'change',
44355 inputRestricted: 'restricted'
44358 // Action key function list
44359 $keyboard.keyaction = {
44360 accept: function (base) {
44361 base.close(true); // same as base.accept();
44362 return false; // return false prevents further processing
44364 alt: function (base) {
44365 base.altActive = !base.altActive;
44368 bksp: function (base) {
44369 // the script looks for the '\b' string and initiates a backspace
44370 base.insertText('\b');
44372 cancel: function (base) {
44374 return false; // return false prevents further processing
44376 clear: function (base) {
44377 base.$preview.val('');
44378 if (base.$decBtn.length) {
44379 base.checkDecimal();
44382 combo: function (base) {
44383 var o = base.options,
44385 $combo = base.$keyboard.find('.' + $keyboard.css.keyPrefix + 'combo');
44388 .toggleClass(o.css.buttonActive, c)
44389 // update combo key state
44390 .attr('title', $combo.attr('data-title') + ' (' + o.display[c ? 'active' : 'disabled'] + ')');
44392 base.checkCombos();
44396 dec: function (base) {
44397 base.insertText((base.decimal) ? '.' : ',');
44399 del: function (base) {
44400 // the script looks for the '{d}' string and initiates a delete
44401 base.insertText('{d}');
44403 // resets to base keyset (deprecated because "default" is a reserved word)
44404 'default': function (base) {
44405 base.shiftActive = base.altActive = base.metaActive = false;
44408 // el is the pressed key (button) object; it is null when the real keyboard enter is pressed
44409 enter: function (base, el, e) {
44410 var tag = base.el.nodeName,
44412 // shift+enter in textareas
44413 if (e.shiftKey || base.shiftActive) {
44414 // textarea & input - enterMod + shift + enter = accept, then go to prev;
44415 // base.switchInput(goToNext, autoAccept)
44416 // textarea & input - shift + enter = accept (no navigation)
44417 return (o.enterNavigation) ? base.switchInput(!e[o.enterMod], true) : base.close(true);
44419 // input only - enterMod + enter to navigate
44420 if (o.enterNavigation && (tag !== 'TEXTAREA' || e[o.enterMod])) {
44421 return base.switchInput(!e[o.enterMod], o.autoAccept ? 'true' : false);
44423 // pressing virtual enter button inside of a textarea - add a carriage return
44424 // e.target is span when clicking on text and button at other times
44425 if (tag === 'TEXTAREA' && $(e.target).closest('button').length) {
44426 // IE8 fix (space + \n) - fixes #
71 thanks Blookie!
44427 base.insertText(($keyboard.msie ? ' ' : '') + '\n');
44431 lock: function (base) {
44432 base.last.keyset[
0] = base.shiftActive = base.capsLock = !base.capsLock;
44435 left: function (base) {
44436 var p = $keyboard.caret(base.$preview);
44437 if (p.start -
1 >=
0) {
44438 // move both start and end of caret (prevents text selection) & save caret position
44439 base.last.start = base.last.end = p.start -
1;
44440 $keyboard.caret(base.$preview, base.last);
44444 meta: function (base, el) {
44446 base.metaActive = !$el.hasClass(base.options.css.buttonActive);
44447 base.showSet($el.attr('data-name'));
44449 next: function (base) {
44450 base.switchInput(true, base.options.autoAccept);
44453 // same as 'default' - resets to base keyset
44454 normal: function (base) {
44455 base.shiftActive = base.altActive = base.metaActive = false;
44458 prev: function (base) {
44459 base.switchInput(false, base.options.autoAccept);
44462 right: function (base) {
44463 var p = $keyboard.caret(base.$preview);
44464 if (p.start +
1 <= base.$preview.val().length) {
44465 // move both start and end of caret (prevents text selection) && save caret position
44466 base.last.start = base.last.end = p.start +
1;
44467 $keyboard.caret(base.$preview, base.last);
44471 shift: function (base) {
44472 base.last.keyset[
0] = base.shiftActive = !base.shiftActive;
44475 sign: function (base) {
44476 if (/^\-?\d*\.?\d*$/.test(base.$preview.val())) {
44477 base.$preview.val((base.$preview.val() * -
1));
44480 space: function (base) {
44481 base.insertText(' ');
44483 tab: function (base) {
44484 var tag = base.el.nodeName,
44486 if (tag === 'INPUT') {
44487 if (o.tabNavigation) {
44488 return base.switchInput(!base.shiftActive, true);
44490 // ignore tab key in input
44494 base.insertText('\t');
44496 toggle: function (base) {
44497 base.enabled = !base.enabled;
44500 // *** Special action keys: NBSP & zero-width characters ***
44501 // Non-breaking space
44503 // zero width space
44505 // Zero width non-joiner
44507 // Zero width joiner
44509 // Left-to-right Mark
44511 // Right-to-left Mark
44515 // Default keyboard layouts
44516 $keyboard.builtLayouts = {};
44517 $keyboard.layouts = {
44520 '`
1 2 3 4 5 6 7 8 9 0 - = {bksp}',
44521 '{tab} a b c d e f g h i j [ ] \\',
44522 'k l m n o p q r s ; \' {enter}',
44523 '{shift} t u v w x y z , . / {shift}',
44524 '{accept} {space} {cancel}'
44527 '~ ! @ # $ % ^ & * ( ) _ + {bksp}',
44528 '{tab} A B C D E F G H I J { } |',
44529 'K L M N O P Q R S : " {enter}',
44530 '{shift} T U V W X Y Z <
> ? {shift}',
44531 '{accept} {space} {cancel}'
44536 '`
1 2 3 4 5 6 7 8 9 0 - = {bksp}',
44537 '{tab} q w e r t y u i o p [ ] \\',
44538 'a s d f g h j k l ; \' {enter}',
44539 '{shift} z x c v b n m , . / {shift}',
44540 '{accept} {space} {cancel}'
44543 '~ ! @ # $ % ^ & * ( ) _ + {bksp}',
44544 '{tab} Q W E R T Y U I O P { } |',
44545 'A S D F G H J K L : " {enter}',
44546 '{shift} Z X C V B N M <
> ? {shift}',
44547 '{accept} {space} {cancel}'
44552 '`
1 2 3 4 5 6 7 8 9 0 - = {bksp}',
44553 '{tab} q w e r t y u i o p [ ] \\',
44554 'a s d f g h j k l ; \' {enter}',
44555 '{shift} z x c v b n m , . / {shift}',
44556 '{accept} {alt} {space} {alt} {cancel}'
44559 '~ ! @ # $ % ^ & * ( ) _ + {bksp}',
44560 '{tab} Q W E R T Y U I O P { } |',
44561 'A S D F G H J K L : " {enter}',
44562 '{shift} Z X C V B N M <
> ? {shift}',
44563 '{accept} {alt} {space} {alt} {cancel}'
44566 '~ \u00a1 \u00b2 \u00b3 \u00a4 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00d7 {bksp}',
44567 '{tab} \u00e4 \u00e5 \u00e9 \u00ae \u00fe \u00fc \u00fa \u00ed \u00f3 \u00f6 \u00ab \u00bb \u00ac',
44568 '\u00e1 \u00df \u00f0 f g h j k \u00f8 \u00b6 \u00b4 {enter}',
44569 '{shift} \u00e6 x \u00a9 v b \u00f1 \u00b5 \u00e7
> \u00bf {shift}',
44570 '{accept} {alt} {space} {alt} {cancel}'
44573 '~ \u00b9 \u00b2 \u00b3 \u00a3 \u20ac \u00bc \u00bd \u00be \u2018 \u2019 \u00a5 \u00f7 {bksp}',
44574 '{tab} \u00c4 \u00c5 \u00c9 \u00ae \u00de \u00dc \u00da \u00cd \u00d3 \u00d6 \u00ab \u00bb \u00a6',
44575 '\u00c4 \u00a7 \u00d0 F G H J K \u00d8 \u00b0 \u00a8 {enter}',
44576 '{shift} \u00c6 X \u00a2 V B \u00d1 \u00b5 \u00c7 . \u00bf {shift}',
44577 '{accept} {alt} {space} {alt} {cancel}'
44582 '`
1 2 3 4 5 6 7 8 9 0 - = {bksp}',
44583 '{tab} q w f p g j l u y ; [ ] \\',
44584 '{bksp} a r s t d h n e i o \' {enter}',
44585 '{shift} z x c v b k m , . / {shift}',
44586 '{accept} {space} {cancel}'
44589 '~ ! @ # $ % ^ & * ( ) _ + {bksp}',
44590 '{tab} Q W F P G J L U Y : { } |',
44591 '{bksp} A R S T D H N E I O " {enter}',
44592 '{shift} Z X C V B K M <
> ? {shift}',
44593 '{accept} {space} {cancel}'
44598 '`
1 2 3 4 5 6 7 8 9 0 [ ] {bksp}',
44599 '{tab} \' , . p y f g c r l / = \\',
44600 'a o e u i d h t n s - {enter}',
44601 '{shift} ; q j k x b m w v z {shift}',
44602 '{accept} {space} {cancel}'
44605 '~ ! @ # $ % ^ & * ( ) { } {bksp}',
44606 '{tab} " <
> P Y F G C R L ? + |',
44607 'A O E U I D H T N S _ {enter}',
44608 '{shift} : Q J K X B M W V Z {shift}',
44609 '{accept} {space} {cancel}'
44624 $keyboard.language = {
44627 // check mark - same action as accept
44628 'a': '\u2714:Accept (Shift+Enter)',
44629 'accept': 'Accept:Accept (Shift+Enter)',
44630 // other alternatives \u2311
44631 'alt': 'Alt:\u2325 AltGr',
44632 // Left arrow (same as
←)
44633 'b': '\u232b:Backspace',
44634 'bksp': 'Bksp:Backspace',
44635 // big X, close - same action as cancel
44636 'c': '\u2716:Cancel (Esc)',
44637 'cancel': 'Cancel:Cancel (Esc)',
44639 'clear': 'C:Clear',
44640 'combo': '\u00f6:Toggle Combo Keys',
44641 // decimal point for num pad (optional), change '.' to ',' for European format
44642 'dec': '.:Decimal',
44643 // down, then left arrow - enter symbol
44644 'e': '\u23ce:Enter',
44646 'enter': 'Enter:Enter \u23ce',
44647 // left arrow (move caret)
44650 'lock': 'Lock:\u21ea Caps Lock',
44651 'next': 'Next \u21e8',
44652 'prev': '\u21e6 Prev',
44653 // right arrow (move caret)
44655 // thick hollow up arrow
44656 's': '\u21e7:Shift',
44657 'shift': 'Shift:Shift',
44658 // +/- sign for num pad
44659 'sign': '\u00b1:Change Sign',
44660 'space': '\u00a0:Space',
44661 // right arrow to bar (used since this virtual keyboard works with one directional tabs)
44663 // \u21b9 is the true tab symbol (left & right arrows)
44664 'tab': '\u21e5 Tab:Tab',
44665 // replaced by an image
44668 // added to titles of keys
44669 // accept key status when acceptValid:true
44671 'invalid': 'invalid',
44672 // combo key states
44673 'active': 'active',
44674 'disabled': 'disabled'
44677 // Message added to the key title while hovering, if the mousewheel plugin exists
44678 wheelMessage: 'Use mousewheel to see other keys',
44680 comboRegex: /([`\'~\^\"ao])([a-z])/mig,
44683 '`': { a: '\u00e0', A: '\u00c0', e: '\u00e8', E: '\u00c8', i: '\u00ec', I: '\u00cc', o: '\u00f2',
44684 O: '\u00d2', u: '\u00f9', U: '\u00d9', y: '\u1ef3', Y: '\u1ef2' },
44686 "'": { a: '\u00e1', A: '\u00c1', e: '\u00e9', E: '\u00c9', i: '\u00ed', I: '\u00cd', o: '\u00f3',
44687 O: '\u00d3', u: '\u00fa', U: '\u00da', y: '\u00fd', Y: '\u00dd' },
44689 '"': { a: '\u00e4', A: '\u00c4', e: '\u00eb', E: '\u00cb', i: '\u00ef', I: '\u00cf', o: '\u00f6',
44690 O: '\u00d6', u: '\u00fc', U: '\u00dc', y: '\u00ff', Y: '\u0178' },
44692 '^': { a: '\u00e2', A: '\u00c2', e: '\u00ea', E: '\u00ca', i: '\u00ee', I: '\u00ce', o: '\u00f4',
44693 O: '\u00d4', u: '\u00fb', U: '\u00db', y: '\u0177', Y: '\u0176' },
44695 '~': { a: '\u00e3', A: '\u00c3', e: '\u1ebd', E: '\u1ebc', i: '\u0129', I: '\u0128', o: '\u00f5',
44696 O: '\u00d5', u: '\u0169', U: '\u0168', y: '\u1ef9', Y: '\u1ef8', n: '\u00f1', N: '\u00d1' }
44701 $keyboard.defaultOptions = {
44702 // set this to ISO
639-
1 language code to override language set by the layout
44703 // http://en.wikipedia.org/wiki/List_of_ISO_639-
1_codes
44704 // language defaults to 'en' if not found
44708 // *** choose layout & positioning ***
44710 customLayout: null,
44713 // optional - null (attach to input/textarea) or a jQuery object (attach elsewhere)
44717 // used when 'usePreview' is false (centers the keyboard at the bottom of the input/textarea)
44718 at2: 'center bottom'
44721 // allow jQuery position utility to reposition the keyboard on window resize
44724 // preview added above keyboard if true, original input/textarea used if false
44727 // if true, the keyboard will always be visible
44730 // give the preview initial focus when the keyboard becomes visible
44731 initialFocus: true,
44733 // avoid changing the focus (hardware keyboard probably won't work)
44736 // if true, keyboard will remain open even if the input loses focus, but closes on escape
44737 // or when another keyboard opens.
44740 // Prevents the keyboard from closing when the user clicks or presses outside the keyboard
44741 // the `autoAccept` option must also be set to true when this option is true or changes are lost
44744 // if true, keyboard will not close if you press escape.
44747 // if true, keyboard will only closed on click event instead of mousedown and touchstart
44748 closeByClickEvent: false,
44752 input: 'ui-widget-content ui-corner-all',
44753 // keyboard container
44754 container: 'ui-widget-content ui-widget ui-corner-all ui-helper-clearfix',
44755 // keyboard container extra class (same as container, but separate)
44758 buttonDefault: 'ui-state-default ui-corner-all',
44760 buttonHover: 'ui-state-hover',
44761 // Action keys (e.g. Accept, Cancel, Tab, etc); this replaces 'actionClass' option
44762 buttonAction: 'ui-state-active',
44763 // Active keys (e.g. shift down, meta keyset active, combo keys active)
44764 buttonActive: 'ui-state-active',
44765 // used when disabling the decimal button {dec} when a decimal exists in the input area
44766 buttonDisabled: 'ui-state-disabled',
44767 buttonEmpty: 'ui-keyboard-empty'
44770 // *** Useability ***
44771 // Auto-accept content when clicking outside the keyboard (popup will close)
44773 // Auto-accept content even if the user presses escape (only works if `autoAccept` is `true`)
44774 autoAcceptOnEsc: false,
44776 // Prevents direct input in the preview window when true
44779 // Prevent keys not in the displayed keyboard from being typed in
44780 restrictInput: false,
44781 // Additional allowed characters while restrictInput is true
44782 restrictInclude: '', // e.g. 'a b foo \ud83d\ude38'
44784 // Check input against validate function, if valid the accept button gets a class name of
44785 // 'ui-keyboard-valid-input'. If invalid, the accept button gets a class name of
44786 // 'ui-keyboard-invalid-input'
44787 acceptValid: false,
44788 // Auto-accept when input is valid; requires `acceptValid` set `true` & validate callback
44789 autoAcceptOnValid: false,
44791 // if acceptValid is true & the validate function returns a false, this option will cancel
44792 // a keyboard close only after the accept button is pressed
44795 // tab to go to next, shift-tab for previous (default behavior)
44796 tabNavigation: false,
44798 // enter for next input; shift+enter accepts content & goes to next
44799 // shift + 'enterMod' + enter ('enterMod' is the alt as set below) will accept content and go
44800 // to previous in a textarea
44801 enterNavigation: false,
44802 // mod key options: 'ctrlKey', 'shiftKey', 'altKey', 'metaKey' (MAC only)
44803 enterMod: 'altKey', // alt-enter to go to previous; shift-alt-enter to accept & go to previous
44805 // if true, the next button will stop on the last keyboard input/textarea; prev button stops at first
44806 // if false, the next button will wrap to target the first input/textarea; prev will go to the last
44809 // Set this to append the keyboard after the input/textarea (appended to the input/textarea parent).
44810 // This option works best when the input container doesn't have a set width & when the 'tabNavigation'
44812 appendLocally: false,
44813 // When appendLocally is false, the keyboard will be appended to this object
44816 // If false, the shift key will remain active until the next key is (mouse) clicked on; if true it will
44817 // stay active until pressed again
44820 // Prevent pasting content into the area
44821 preventPaste: false,
44823 // caret placed at the end of any text when keyboard becomes visible
44826 // caret stays this many pixels from the edge of the input while scrolling left/right;
44827 // use "c" or "center" to center the caret while scrolling
44828 scrollAdjustment:
10,
44830 // Set the max number of characters allowed in the input, setting it to false disables this option
44832 // allow inserting characters @ caret when maxLength is set
44835 // Mouse repeat delay - when clicking/touching a virtual keyboard key, after this delay the key will
44839 // Mouse repeat rate - after the repeatDelay, this is the rate (characters per second) at which the
44840 // key is repeated Added to simulate holding down a real keyboard key and having it repeat. I haven't
44841 // calculated the upper limit of this rate, but it is limited to how fast the javascript can process
44842 // the keys. And for me, in Firefox, it's around
20.
44845 // resets the keyboard to the default keyset when visible
44846 resetDefault: true,
44848 // Event (namespaced) on the input to reveal the keyboard. To disable it, just set it to ''.
44851 // Event (namepaced) for when the character is added to the input (clicking on the keyboard)
44852 keyBinding: 'mousedown touchstart',
44854 // enable/disable mousewheel functionality
44855 // enabling still depends on the mousewheel plugin
44858 // combos (emulate dead keys : http://en.wikipedia.org/wiki/Keyboard_layout#US-International)
44859 // if user inputs `a the script converts it to à, ^o becomes ô, etc.
44864 // commenting these out to reduce the size of the minified version
44865 // Callbacks - attach a function to any of these callbacks as desired
44866 initialized : function(e, keyboard, el) {},
44867 beforeVisible : function(e, keyboard, el) {},
44868 visible : function(e, keyboard, el) {},
44869 beforeInsert : function(e, keyboard, el, textToAdd) { return textToAdd; },
44870 change : function(e, keyboard, el) {},
44871 beforeClose : function(e, keyboard, el, accepted) {},
44872 accepted : function(e, keyboard, el) {},
44873 canceled : function(e, keyboard, el) {},
44874 restricted : function(e, keyboard, el) {},
44875 hidden : function(e, keyboard, el) {},
44876 // called instead of base.switchInput
44877 switchInput : function(keyboard, goToNext, isAccepted) {},
44878 // used if you want to create a custom layout or modify the built-in keyboard
44879 create : function(keyboard) { return keyboard.buildKeyboard(); },
44881 // build key callback
44882 buildKey : function( keyboard, data ) {
44886 isAction : [boolean] true if key is an action key
44887 name : [string] key class name suffix ( prefix = 'ui-keyboard-' );
44888 may include decimal ascii value of character
44889 value : [string] text inserted (non-action keys)
44890 title : [string] title attribute of key
44891 action : [string] keyaction name
44892 html : [string] HTML of the key; it includes a
<span> wrapping the text
44893 // use to modify key HTML
44894 $key : [object] jQuery selector of key which is already appended to keyboard
44901 // this callback is called, if the acceptValid is true, and just before the 'beforeClose' to check
44902 // the value if the value is valid, return true and the keyboard will continue as it should
44903 // (close if not always open, etc). If the value is not valid, return false and clear the keyboard
44904 // value ( like this "keyboard.$preview.val('');" ), if desired. The validate function is called after
44905 // each input, the 'isClosing' value will be false; when the accept button is clicked,
44906 // 'isClosing' is true
44907 validate: function (keyboard, value, isClosing) {
44913 // for checking combos
44914 $keyboard.comboRegex = /([`\'~\^\"ao])([a-z])/mig;
44916 // store current keyboard element; used by base.isCurrent()
44917 $keyboard.currentKeyboard = '';
44919 $('
<!--[if lte IE 8]><script>jQuery("body").addClass("oldie");</script><![endif]--><!--[if IE]>' +
44920 '<script>jQuery("body").addClass("ie");</script><![endif]-->')
44923 $keyboard.msie = $('body').hasClass('oldie'); // Old IE flag, used for caret positioning
44924 $keyboard.allie = $('body').hasClass('ie');
44926 $keyboard.watermark = (typeof (document.createElement('input').placeholder) !== 'undefined');
44928 $keyboard.checkCaretSupport = function () {
44929 if (typeof $keyboard.checkCaret !== 'boolean') {
44930 // Check if caret position is saved when input is hidden or loses focus
44931 // (*cough* all versions of IE and I think Opera has/had an issue as well
44932 var $temp = $('
<div style=
"height:0px;width:0px;overflow:hidden;position:fixed;top:0;left:-100px;">' +
44933 '
<input type=
"text" value=
"testing"/></div>').prependTo('body'); // stop page scrolling
44934 $keyboard.caret($temp.find('input'),
3,
3);
44935 // Also save caret position of the input if it is locked
44936 $keyboard.checkCaret = $keyboard.caret($temp.find('input').hide().show()).start !==
3;
44939 return $keyboard.checkCaret;
44942 $keyboard.caret = function ($el, param1, param2) {
44943 if (!$el || !$el.length || $el.is(':hidden') || $el.css('visibility') === 'hidden') {
44946 var start, end, txt, pos,
44947 kb = $el.data('keyboard'),
44948 noFocus = kb && kb.options.noFocus;
44952 // set caret position
44953 if (typeof param1 !== 'undefined') {
44954 // allow setting caret using ( $el, { start: x, end: y } )
44955 if (typeof param1 === 'object' && 'start' in param1 && 'end' in param1) {
44956 start = param1.start;
44958 } else if (typeof param2 === 'undefined') {
44959 param2 = param1; // set caret using start position
44961 // set caret using ( $el, start, end );
44962 if (typeof param1 === 'number' && typeof param2 === 'number') {
44965 } else if (param1 === 'start') {
44967 } else if (typeof param1 === 'string') {
44968 // unknown string setting, move caret to end
44969 start = end = $el.val().length;
44972 // *** SET CARET POSITION ***
44973 // modify the line below to adapt to other caret plugins
44974 return $el.caret(start, end, noFocus);
44976 // *** GET CARET POSITION ***
44977 // modify the line below to adapt to other caret plugins
44982 // *** utilities ***
44983 txt = ($el[
0].value || $el.text() || '');
44987 // return selected text
44988 text: txt.substring(start, end),
44989 // return a replace selected string method
44990 replaceStr: function (str) {
44991 return txt.substring(
0, start) + str + txt.substring(end, txt.length);
44996 $.fn.keyboard = function (options) {
44997 return this.each(function () {
44998 if (!$(this).data('keyboard')) {
44999 /*jshint nonew:false */
45000 (new $.keyboard(this, options));
45005 $.fn.getkeyboard = function () {
45006 return this.data('keyboard');
45009 /* Copyright (c)
2010 C. F., Wong (
<a href=
"http://cloudgen.w0ng.hk">Cloudgen Examplet Store
</a>)
45010 * Licensed under the MIT License:
45011 * http://www.opensource.org/licenses/mit-license.php
45012 * Highly modified from the original
45015 $.fn.caret = function (start, end, noFocus) {
45016 if (typeof this[
0] === 'undefined' || this.is(':hidden') || this.css('visibility') === 'hidden') {
45019 var selRange, range, stored_range, txt, val,
45020 selection = document.selection,
45023 sTop = el.scrollTop,
45025 supportCaret = true;
45027 ss = 'selectionStart' in el;
45029 supportCaret = false;
45031 if (supportCaret && typeof start !== 'undefined') {
45032 if (!/(email|number)/i.test(el.type)) {
45034 el.selectionStart = start;
45035 el.selectionEnd = end;
45037 selRange = el.createTextRange();
45038 selRange.collapse(true);
45039 selRange.moveStart('character', start);
45040 selRange.moveEnd('character', end - start);
45044 // must be visible or IE8 crashes; IE9 in compatibility mode works fine - issue #
56
45045 if (!noFocus && ($el.is(':visible') || $el.css('visibility') !== 'hidden')) {
45048 el.scrollTop = sTop;
45051 if (/(email|number)/i.test(el.type)) {
45052 // fix suggested by raduanastase (https://github.com/Mottie/Keyboard/issues/
105#issuecomment-
40456535)
45053 start = end = $el.val().length;
45055 start = el.selectionStart;
45056 end = el.selectionEnd;
45057 } else if (selection) {
45058 if (el.nodeName === 'TEXTAREA') {
45060 range = selection.createRange();
45061 stored_range = range.duplicate();
45062 stored_range.moveToElementText(el);
45063 stored_range.setEndPoint('EndToEnd', range);
45064 // thanks to the awesome comments in the rangy plugin
45065 start = stored_range.text.replace(/\r/g, '\n').length;
45066 end = start + range.text.replace(/\r/g, '\n').length;
45068 val = $el.val().replace(/\r/g, '\n');
45069 range = selection.createRange().duplicate();
45070 range.moveEnd('character', val.length);
45071 start = (range.text === '' ? val.length : val.lastIndexOf(range.text));
45072 range = selection.createRange().duplicate();
45073 range.moveStart('character', -val.length);
45074 end = range.text.length;
45077 // caret positioning not supported
45078 start = end = (el.value || '').length;
45080 txt = (el.value || '');
45084 text: txt.substring(start, end),
45085 replace: function (str) {
45086 return txt.substring(
0, start) + str + txt.substring(end, txt.length);
45096 <script>jQuery(function($) {
45097 $('.virtual-keyboard').keyboard({
45101 accepted : function(event, keyboard, el) {
45102 $('.virtual-keyboard').trigger('input');
45114 '`
1 2 3 4 5 6 7 8 9 0 - = {bksp}',
45115 'q w e r t y u i o p [ ] \\',
45116 'a s d f g h j k l ; \'',
45117 '{s} z x c v b n m , . / {s}',
45121 '~ ! @ # $ % ^ & * ( ) _ + {bksp}',
45122 'Q W E R T Y U I O P { } |',
45123 'A S D F G H J K L : "',
45124 '{s} Z X C V B N M <
> ? {s}',
45133 <script>(function() {
45135 // mnemonics is populated as required by getLanguage
45136 var mnemonics = { "english": new Mnemonic("english") };
45137 var mnemonic = mnemonics["english"];
45139 var bip32RootKey = null;
45140 var bip32ExtendedKey = null;
45141 var network = bitcoin.networks.bitcoin;
45142 var addressRowTemplate = $("#address-row-template");
45144 var showIndex = true;
45145 var showAddress = true;
45146 var showPubKey = true;
45147 var showPrivKey = true;
45148 var showQr = false;
45150 var entropyChangeTimeoutEvent = null;
45151 var phraseChangeTimeoutEvent = null;
45152 var rootKeyChangedTimeoutEvent = null;
45154 var generationProcesses = [];
45157 DOM.network = $(".network");
45158 DOM.bip32Client = $("#bip32-client");
45159 DOM.phraseNetwork = $("#network-phrase");
45160 DOM.useEntropy = $(".use-entropy");
45161 DOM.entropyContainer = $(".entropy-container");
45162 DOM.entropy = $(".entropy");
45163 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
45164 DOM.entropyType = DOM.entropyContainer.find(".type");
45165 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
45166 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
45167 DOM.entropyBits = DOM.entropyContainer.find(".bits");
45168 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
45169 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
45170 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
45171 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
45172 DOM.phrase = $(".phrase");
45173 DOM.passphrase = $(".passphrase");
45174 DOM.generateContainer = $(".generate-container");
45175 DOM.generate = $(".generate");
45176 DOM.seed = $(".seed");
45177 DOM.rootKey = $(".root-key");
45178 DOM.extendedPrivKey = $(".extended-priv-key");
45179 DOM.extendedPubKey = $(".extended-pub-key");
45180 DOM.bip32tab = $("#bip32-tab");
45181 DOM.bip44tab = $("#bip44-tab");
45182 DOM.bip32panel = $("#bip32");
45183 DOM.bip44panel = $("#bip44");
45184 DOM.bip32path = $("#bip32-path");
45185 DOM.bip44path = $("#bip44-path");
45186 DOM.bip44purpose = $("#bip44 .purpose");
45187 DOM.bip44coin = $("#bip44 .coin");
45188 DOM.bip44account = $("#bip44 .account");
45189 DOM.bip44accountXprv = $("#bip44 .account-xprv");
45190 DOM.bip44accountXpub = $("#bip44 .account-xpub");
45191 DOM.bip44change = $("#bip44 .change");
45192 DOM.generatedStrength = $(".generate-container .strength");
45193 DOM.hardenedAddresses = $(".hardened-addresses");
45194 DOM.addresses = $(".addresses");
45195 DOM.rowsToAdd = $(".rows-to-add");
45196 DOM.more = $(".more");
45197 DOM.feedback = $(".feedback");
45198 DOM.tab = $(".derivation-type a");
45199 DOM.indexToggle = $(".index-toggle");
45200 DOM.addressToggle = $(".address-toggle");
45201 DOM.publicKeyToggle = $(".public-key-toggle");
45202 DOM.privateKeyToggle = $(".private-key-toggle");
45203 DOM.languages = $(".languages a");
45204 DOM.qrContainer = $(".qr-container");
45205 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
45206 DOM.qrImage = DOM.qrContainer.find(".qr-image");
45207 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
45208 DOM.showQrEls = $("[data-show-qr]");
45212 DOM.network.on("change", networkChanged);
45213 DOM.bip32Client.on("change", bip32ClientChanged);
45214 DOM.useEntropy.on("change", setEntropyVisibility);
45215 DOM.entropy.on("input", delayedEntropyChanged);
45216 DOM.entropyMnemonicLength.on("change", entropyChanged);
45217 DOM.phrase.on("input", delayedPhraseChanged);
45218 DOM.passphrase.on("input", delayedPhraseChanged);
45219 DOM.generate.on("click", generateClicked);
45220 DOM.more.on("click", showMore);
45221 DOM.rootKey.on("input", delayedRootKeyChanged);
45222 DOM.bip32path.on("input", calcForDerivationPath);
45223 DOM.bip44purpose.on("input", calcForDerivationPath);
45224 DOM.bip44coin.on("input", calcForDerivationPath);
45225 DOM.bip44account.on("input", calcForDerivationPath);
45226 DOM.bip44change.on("input", calcForDerivationPath);
45227 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
45228 DOM.hardenedAddresses.on("change", calcForDerivationPath);
45229 DOM.indexToggle.on("click", toggleIndexes);
45230 DOM.addressToggle.on("click", toggleAddresses);
45231 DOM.publicKeyToggle.on("click", togglePublicKeys);
45232 DOM.privateKeyToggle.on("click", togglePrivateKeys);
45233 DOM.languages.on("click", languageChanged);
45234 setQrEvents(DOM.showQrEls);
45237 hideValidationError();
45238 populateNetworkSelect();
45239 populateClientSelect();
45244 function networkChanged(e) {
45245 var networkIndex = e.target.value;
45246 networks[networkIndex].onSelect();
45247 if (seed != null) {
45255 function bip32ClientChanged(e) {
45256 var clientIndex = DOM.bip32Client.val();
45257 if (clientIndex == "custom") {
45258 DOM.bip32path.prop("readonly", false);
45261 DOM.bip32path.prop("readonly", true);
45262 clients[clientIndex].onSelect();
45263 if (seed != null) {
45272 function setEntropyVisibility() {
45273 if (isUsingOwnEntropy()) {
45274 DOM.entropyContainer.removeClass("hidden");
45275 DOM.generateContainer.addClass("hidden");
45276 DOM.phrase.prop("readonly", true);
45277 DOM.entropy.focus();
45281 DOM.entropyContainer.addClass("hidden");
45282 DOM.generateContainer.removeClass("hidden");
45283 DOM.phrase.prop("readonly", false);
45288 function delayedPhraseChanged() {
45289 hideValidationError();
45291 if (phraseChangeTimeoutEvent != null) {
45292 clearTimeout(phraseChangeTimeoutEvent);
45294 phraseChangeTimeoutEvent = setTimeout(phraseChanged,
400);
45297 function phraseChanged() {
45299 hideValidationError();
45300 setMnemonicLanguage();
45301 // Get the mnemonic phrase
45302 var phrase = DOM.phrase.val();
45303 var errorText = findPhraseErrors(phrase);
45305 showValidationError(errorText);
45308 // Calculate and display
45309 var passphrase = DOM.passphrase.val();
45310 calcBip32RootKeyFromSeed(phrase, passphrase);
45311 calcForDerivationPath();
45315 function delayedEntropyChanged() {
45316 hideValidationError();
45318 if (entropyChangeTimeoutEvent != null) {
45319 clearTimeout(entropyChangeTimeoutEvent);
45321 entropyChangeTimeoutEvent = setTimeout(entropyChanged,
400);
45324 function entropyChanged() {
45325 // If blank entropy, clear mnemonic, addresses, errors
45326 if (DOM.entropy.val().trim().length ==
0) {
45328 clearEntropyFeedback();
45329 DOM.phrase.val("");
45330 showValidationError("Blank entropy");
45333 // Get the current phrase to detect changes
45334 var phrase = DOM.phrase.val();
45335 // Set the phrase from the entropy
45336 setMnemonicFromEntropy();
45337 // Recalc addresses if the phrase has changed
45338 var newPhrase = DOM.phrase.val();
45339 if (newPhrase != phrase) {
45340 if (newPhrase.length ==
0) {
45352 function delayedRootKeyChanged() {
45353 // Warn if there is an existing mnemonic or passphrase.
45354 if (DOM.phrase.val().length
> 0 || DOM.passphrase.val().length
> 0) {
45355 if (!confirm(
"This will clear existing mnemonic and passphrase")) {
45356 DOM.rootKey.val(bip32RootKey);
45360 hideValidationError();
45362 // Clear existing mnemonic and passphrase
45363 DOM.phrase.val(
"");
45364 DOM.passphrase.val(
"");
45366 if (rootKeyChangedTimeoutEvent != null) {
45367 clearTimeout(rootKeyChangedTimeoutEvent);
45369 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged,
400);
45372 function rootKeyChanged() {
45374 hideValidationError();
45375 // Validate the root key TODO
45376 var rootKeyBase58 = DOM.rootKey.val();
45377 var errorText = validateRootKey(rootKeyBase58);
45379 showValidationError(errorText);
45382 // Calculate and display
45383 calcBip32RootKeyFromBase58(rootKeyBase58);
45384 calcForDerivationPath();
45387 function calcForDerivationPath() {
45389 clearAddressesList();
45390 hideValidationError();
45391 // Get the derivation path
45392 var derivationPath = getDerivationPath();
45393 var errorText = findDerivationPathErrors(derivationPath);
45395 showValidationError(errorText);
45398 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
45399 if (bip44TabSelected()) {
45400 displayBip44Info();
45402 displayBip32Info();
45406 function generateClicked() {
45407 if (isUsingOwnEntropy()) {
45412 setTimeout(function() {
45413 setMnemonicLanguage();
45414 var phrase = generateRandomPhrase();
45422 function languageChanged() {
45423 setTimeout(function() {
45424 setMnemonicLanguage();
45425 if (DOM.phrase.val().length
> 0) {
45426 var newPhrase = convertPhraseToNewLanguage();
45427 DOM.phrase.val(newPhrase);
45431 DOM.generate.trigger(
"click");
45436 function toggleIndexes() {
45437 showIndex = !showIndex;
45438 $(
"td.index span").toggleClass(
"invisible");
45441 function toggleAddresses() {
45442 showAddress = !showAddress;
45443 $(
"td.address span").toggleClass(
"invisible");
45446 function togglePublicKeys() {
45447 showPubKey = !showPubKey;
45448 $(
"td.pubkey span").toggleClass(
"invisible");
45451 function togglePrivateKeys() {
45452 showPrivKey = !showPrivKey;
45453 $(
"td.privkey span").toggleClass(
"invisible");
45458 function generateRandomPhrase() {
45459 if (!hasStrongRandom()) {
45460 var errorText =
"This browser does not support strong randomness";
45461 showValidationError(errorText);
45464 var numWords = parseInt(DOM.generatedStrength.val());
45465 var strength = numWords /
3 *
32;
45466 var words = mnemonic.generate(strength);
45467 DOM.phrase.val(words);
45471 function calcBip32RootKeyFromSeed(phrase, passphrase) {
45472 seed = mnemonic.toSeed(phrase, passphrase);
45473 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
45476 function calcBip32RootKeyFromBase58(rootKeyBase58) {
45477 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
45480 function calcBip32ExtendedKey(path) {
45481 // Check there's a root key to derive from
45482 if (!bip32RootKey) {
45483 return bip32RootKey;
45485 var extendedKey = bip32RootKey;
45486 // Derive the key from the path
45487 var pathBits = path.split(
"/");
45488 for (var i=
0; i
<pathBits.length; i++) {
45489 var bit = pathBits[i];
45490 var index = parseInt(bit);
45491 if (isNaN(index)) {
45494 var hardened = bit[bit.length-
1] ==
"'";
45495 var isPriv =
"privKey" in extendedKey;
45496 var invalidDerivationPath = hardened && !isPriv;
45497 if (invalidDerivationPath) {
45498 extendedKey = null;
45500 else if (hardened) {
45501 extendedKey = extendedKey.deriveHardened(index);
45504 extendedKey = extendedKey.derive(index);
45510 function showValidationError(errorText) {
45516 function hideValidationError() {
45522 function findPhraseErrors(phrase) {
45523 // Preprocess the words
45524 phrase = mnemonic.normalizeString(phrase);
45525 var words = phraseToWordArray(phrase);
45526 // Detect blank phrase
45527 if (words.length ==
0) {
45528 return
"Blank mnemonic";
45531 for (var i=
0; i
<words.length; i++) {
45532 var word = words[i];
45533 var language = getLanguage();
45534 if (WORDLISTS[language].indexOf(word) == -
1) {
45535 console.log(
"Finding closest match to " + word);
45536 var nearestWord = findNearestWord(word);
45537 return word +
" not in wordlist, did you mean " + nearestWord +
"?";
45540 // Check the words are valid
45541 var properPhrase = wordArrayToPhrase(words);
45542 var isValid = mnemonic.check(properPhrase);
45544 return
"Invalid mnemonic";
45549 function validateRootKey(rootKeyBase58) {
45551 bitcoin.HDNode.fromBase58(rootKeyBase58);
45554 return
"Invalid root key";
45559 function getDerivationPath() {
45560 if (bip44TabSelected()) {
45561 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
45562 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
45563 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
45564 var change = parseIntNoNaN(DOM.bip44change.val(),
0);
45566 path += purpose +
"'/";
45567 path += coin +
"'/";
45568 path += account +
"'/";
45570 DOM.bip44path.val(path);
45571 var derivationPath = DOM.bip44path.val();
45572 console.log(
"Using derivation path from BIP44 tab: " + derivationPath);
45573 return derivationPath;
45575 else if (bip32TabSelected()) {
45576 var derivationPath = DOM.bip32path.val();
45577 console.log(
"Using derivation path from BIP32 tab: " + derivationPath);
45578 return derivationPath;
45581 console.log(
"Unknown derivation path");
45585 function findDerivationPathErrors(path) {
45586 // TODO is not perfect but is better than nothing
45588 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#test-vectors
45590 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#extended-keys
45591 var maxDepth =
255; // TODO verify this!!
45592 var maxIndexValue = Math.pow(
2,
31); // TODO verify this!!
45593 if (path[
0] !=
"m") {
45594 return
"First character must be 'm'";
45596 if (path.length
> 1) {
45597 if (path[
1] !=
"/") {
45598 return
"Separator must be '/'";
45600 var indexes = path.split(
"/");
45601 if (indexes.length
> maxDepth) {
45602 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
45604 for (var depth =
1; depth
<indexes.length; depth++) {
45605 var index = indexes[depth];
45606 var invalidChars = index.replace(/^[
0-
9]+'?$/g,
"")
45607 if (invalidChars.length
> 0) {
45608 return
"Invalid characters " + invalidChars +
" found at depth " + depth;
45610 var indexValue = parseInt(index.replace(
"'",
""));
45611 if (isNaN(depth)) {
45612 return
"Invalid number at depth " + depth;
45614 if (indexValue
> maxIndexValue) {
45615 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
45619 // Check root key exists or else derivation path is useless!
45620 if (!bip32RootKey) {
45621 return "No root key";
45623 // Check no hardened derivation path when using xpub keys
45624 var hardened = path.indexOf("'")
> -
1;
45625 var isXpubkey = !("privKey" in bip32RootKey);
45626 if (hardened && isXpubkey) {
45627 return "Hardened derivation path is invalid with xpub key";
45632 function displayBip44Info() {
45633 // Get the derivation path for the account
45634 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
45635 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
45636 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
45638 path += purpose + "'/";
45639 path += coin + "'/";
45640 path += account + "'/";
45641 // Calculate the account extended keys
45642 var accountExtendedKey = calcBip32ExtendedKey(path);
45643 var accountXprv = accountExtendedKey.toBase58();
45644 var accountXpub = accountExtendedKey.toBase58(false);
45645 // Display the extended keys
45646 DOM.bip44accountXprv.val(accountXprv);
45647 DOM.bip44accountXpub.val(accountXpub);
45650 function displayBip32Info() {
45652 DOM.seed.val(seed);
45653 var rootKey = bip32RootKey.toBase58();
45654 DOM.rootKey.val(rootKey);
45655 var xprvkeyB58 = "NA";
45656 if (bip32ExtendedKey.privKey) {
45657 xprvkeyB58 = bip32ExtendedKey.toBase58();
45659 var extendedPrivKey = xprvkeyB58;
45660 DOM.extendedPrivKey.val(extendedPrivKey);
45661 var extendedPubKey = bip32ExtendedKey.toBase58(false);
45662 DOM.extendedPubKey.val(extendedPubKey);
45663 // Display the addresses and privkeys
45664 clearAddressesList();
45665 displayAddresses(
0,
20);
45668 function displayAddresses(start, total) {
45669 generationProcesses.push(new (function() {
45673 this.stop = function() {
45674 for (var i=
0; i
<rows.length; i++) {
45675 rows[i].shouldGenerate = false;
45679 for (var i=
0; i
<total; i++) {
45680 var index = i + start;
45681 rows.push(new TableRow(index));
45687 function TableRow(index) {
45690 this.shouldGenerate = true;
45691 var useHardenedAddresses = DOM.hardenedAddresses.prop(
"checked");
45697 function calculateValues() {
45698 setTimeout(function() {
45699 if (!self.shouldGenerate) {
45703 if (useHardenedAddresses) {
45704 key = bip32ExtendedKey.deriveHardened(index);
45707 key = bip32ExtendedKey.derive(index);
45709 var address = key.getAddress().toString();
45710 var privkey =
"NA";
45712 privkey = key.privKey.toWIF(network);
45714 var pubkey = key.pubKey.toHex();
45715 var indexText = getDerivationPath() +
"/" + index;
45716 if (useHardenedAddresses) {
45717 indexText = indexText +
"'";
45719 // Ethereum values are different
45720 if (networks[DOM.network.val()].name ==
"Ethereum") {
45721 var privKeyBuffer = key.privKey.d.toBuffer();
45722 privkey = privKeyBuffer.toString('hex');
45723 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
45724 var hexAddress = addressBuffer.toString('hex');
45725 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
45726 address = ethUtil.addHexPrefix(checksumAddress);
45728 addAddressToList(indexText, address, pubkey, privkey);
45736 function showMore() {
45737 var start = DOM.addresses.children().length;
45738 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
45739 if (isNaN(rowsToAdd)) {
45741 DOM.rowsToAdd.val(
"20");
45743 if (rowsToAdd
> 200) {
45744 var msg =
"Generating " + rowsToAdd +
" rows could take a while. ";
45745 msg +=
"Do you want to continue?";
45746 if (!confirm(msg)) {
45750 displayAddresses(start, rowsToAdd);
45753 function clearDisplay() {
45754 clearAddressesList();
45756 hideValidationError();
45759 function clearAddressesList() {
45760 DOM.addresses.empty();
45764 function stopGenerating() {
45765 while (generationProcesses.length
> 0) {
45766 var generation = generationProcesses.shift();
45771 function clearKey() {
45772 DOM.rootKey.val(
"");
45773 DOM.extendedPrivKey.val(
"");
45774 DOM.extendedPubKey.val(
"");
45777 function addAddressToList(indexText, address, pubkey, privkey) {
45778 var row = $(addressRowTemplate.html());
45780 var indexCell = row.find(
".index span");
45781 var addressCell = row.find(
".address span");
45782 var pubkeyCell = row.find(
".pubkey span");
45783 var privkeyCell = row.find(
".privkey span");
45785 indexCell.text(indexText);
45786 addressCell.text(address);
45787 pubkeyCell.text(pubkey);
45788 privkeyCell.text(privkey);
45791 indexCell.addClass(
"invisible");
45793 if (!showAddress) {
45794 addressCell.addClass(
"invisible");
45797 pubkeyCell.addClass(
"invisible");
45799 if (!showPrivKey) {
45800 privkeyCell.addClass(
"invisible");
45802 DOM.addresses.append(row);
45803 var rowShowQrEls = row.find(
"[data-show-qr]");
45804 setQrEvents(rowShowQrEls);
45807 function hasStrongRandom() {
45808 return 'crypto' in window && window['crypto'] !== null;
45811 function disableForms() {
45812 $(
"form").on(
"submit", function(e) {
45813 e.preventDefault();
45817 function parseIntNoNaN(val, defaultVal) {
45818 var v = parseInt(val);
45825 function showPending() {
45827 .text(
"Calculating...")
45831 function findNearestWord(word) {
45832 var language = getLanguage();
45833 var words = WORDLISTS[language];
45834 var minDistance =
99;
45835 var closestWord = words[
0];
45836 for (var i=
0; i
<words.length; i++) {
45837 var comparedTo = words[i];
45838 if (comparedTo.indexOf(word) ==
0) {
45841 var distance = Levenshtein.get(word, comparedTo);
45842 if (distance < minDistance) {
45843 closestWord = comparedTo;
45844 minDistance = distance;
45847 return closestWord;
45850 function hidePending() {
45856 function populateNetworkSelect() {
45857 for (var i=
0; i
<networks.length; i++) {
45858 var network = networks[i];
45859 var option = $(
"<option>");
45860 option.attr(
"value", i);
45861 option.text(network.name);
45862 DOM.phraseNetwork.append(option);
45866 function populateClientSelect() {
45867 for (var i=
0; i
<clients.length; i++) {
45868 var client = clients[i];
45869 var option = $(
"<option>");
45870 option.attr(
"value", i);
45871 option.text(client.name);
45872 DOM.bip32Client.append(option);
45876 function getLanguage() {
45877 var defaultLanguage =
"english";
45878 // Try to get from existing phrase
45879 var language = getLanguageFromPhrase();
45880 // Try to get from url if not from phrase
45881 if (language.length ==
0) {
45882 language = getLanguageFromUrl();
45884 // Default to English if no other option
45885 if (language.length ==
0) {
45886 language = defaultLanguage;
45891 function getLanguageFromPhrase(phrase) {
45892 // Check if how many words from existing phrase match a language.
45895 phrase = DOM.phrase.val();
45897 if (phrase.length
> 0) {
45898 var words = phraseToWordArray(phrase);
45899 var languageMatches = {};
45900 for (l in WORDLISTS) {
45901 // Track how many words match in this language
45902 languageMatches[l] =
0;
45903 for (var i=
0; i
<words.length; i++) {
45904 var wordInLanguage = WORDLISTS[l].indexOf(words[i])
> -
1;
45905 if (wordInLanguage) {
45906 languageMatches[l]++;
45909 // Find languages with most word matches.
45910 // This is made difficult due to commonalities between Chinese
45911 // simplified vs traditional.
45912 var mostMatches =
0;
45913 var mostMatchedLanguages = [];
45914 for (var l in languageMatches) {
45915 var numMatches = languageMatches[l];
45916 if (numMatches
> mostMatches) {
45917 mostMatches = numMatches;
45918 mostMatchedLanguages = [l];
45920 else if (numMatches == mostMatches) {
45921 mostMatchedLanguages.push(l);
45925 if (mostMatchedLanguages.length
> 0) {
45926 // Use first language and warn if multiple detected
45927 language = mostMatchedLanguages[
0];
45928 if (mostMatchedLanguages.length
> 1) {
45929 console.warn(
"Multiple possible languages");
45930 console.warn(mostMatchedLanguages);
45937 function getLanguageFromUrl() {
45938 for (var language in WORDLISTS) {
45939 if (window.location.hash.indexOf(language)
> -
1) {
45946 function setMnemonicLanguage() {
45947 var language = getLanguage();
45948 // Load the bip39 mnemonic generator for this language if required
45949 if (!(language in mnemonics)) {
45950 mnemonics[language] = new Mnemonic(language);
45952 mnemonic = mnemonics[language];
45955 function convertPhraseToNewLanguage() {
45956 var oldLanguage = getLanguageFromPhrase();
45957 var newLanguage = getLanguageFromUrl();
45958 var oldPhrase = DOM.phrase.val();
45959 var oldWords = phraseToWordArray(oldPhrase);
45961 for (var i=
0; i
<oldWords.length; i++) {
45962 var oldWord = oldWords[i];
45963 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
45964 var newWord = WORDLISTS[newLanguage][index];
45965 newWords.push(newWord);
45967 newPhrase = wordArrayToPhrase(newWords);
45971 // TODO look at jsbip39 - mnemonic.splitWords
45972 function phraseToWordArray(phrase) {
45973 var words = phrase.split(/\s/g);
45975 for (var i=
0; i
<words.length; i++) {
45976 var word = words[i];
45977 if (word.length
> 0) {
45978 noBlanks.push(word);
45984 // TODO look at jsbip39 - mnemonic.joinWords
45985 function wordArrayToPhrase(words) {
45986 var phrase = words.join(
" ");
45987 var language = getLanguageFromPhrase(phrase);
45988 if (language ==
"japanese") {
45989 phrase = words.join(
"\u3000");
45994 function isUsingOwnEntropy() {
45995 return DOM.useEntropy.prop(
"checked");
45998 function setMnemonicFromEntropy() {
45999 clearEntropyFeedback();
46000 // Get entropy value
46001 var entropyStr = DOM.entropy.val();
46002 // Work out minimum base for entropy
46003 var entropy = Entropy.fromString(entropyStr);
46004 if (entropy.binaryStr.length ==
0) {
46007 // Show entropy details
46008 showEntropyFeedback(entropy);
46009 // Use entropy hash if not using raw entropy
46010 var bits = entropy.binaryStr;
46011 var mnemonicLength = DOM.entropyMnemonicLength.val();
46012 if (mnemonicLength !=
"raw") {
46013 // Get bits by hashing entropy with SHA256
46014 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
46015 var hex = sjcl.codec.hex.fromBits(hash);
46016 bits = BigInteger.parse(hex,
16).toString(
2);
46017 while (bits.length %
256 !=
0) {
46020 // Truncate hash to suit number of words
46021 mnemonicLength = parseInt(mnemonicLength);
46022 var numberOfBits =
32 * mnemonicLength /
3;
46023 bits = bits.substring(
0, numberOfBits);
46025 // Discard trailing entropy
46026 var bitsToUse = Math.floor(bits.length /
32) *
32;
46027 var start = bits.length - bitsToUse;
46028 var binaryStr = bits.substring(start);
46029 // Convert entropy string to numeric array
46030 var entropyArr = [];
46031 for (var i=
0; i
<binaryStr.length /
8; i++) {
46032 var byteAsBits = binaryStr.substring(i*
8, i*
8+
8);
46033 var entropyByte = parseInt(byteAsBits,
2);
46034 entropyArr.push(entropyByte)
46036 // Convert entropy array to mnemonic
46037 var phrase = mnemonic.toMnemonic(entropyArr);
46038 // Set the mnemonic in the UI
46039 DOM.phrase.val(phrase);
46042 function clearEntropyFeedback() {
46043 DOM.entropyStrength.text(
"...");
46044 DOM.entropyType.text(
"");
46045 DOM.entropyWordCount.text(
"0");
46046 DOM.entropyEventCount.text(
"0");
46047 DOM.entropyBitsPerEvent.text(
"0");
46048 DOM.entropyBits.text(
"0");
46049 DOM.entropyFiltered.html(
" ");
46050 DOM.entropyBinary.html(
" ");
46053 function showEntropyFeedback(entropy) {
46054 var numberOfBits = entropy.binaryStr.length;
46055 var strength =
"extremely weak";
46056 if (numberOfBits
>=
64) {
46057 strength = "very weak";
46059 if (numberOfBits
>=
96) {
46062 if (numberOfBits
>=
128) {
46063 strength = "strong";
46065 if (numberOfBits
>=
160) {
46066 strength = "very strong";
46068 if (numberOfBits
>=
192) {
46069 strength = "extremely strong";
46071 // If time to crack is less than one day, and password is considered
46072 // strong or better based on the number of bits, rename strength to
46073 // 'easily cracked'.
46075 var z = zxcvbn(entropy.base.parts.join(""));
46076 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
46077 if (timeToCrack <
86400 && entropy.binaryStr.length
>=
128) {
46078 strength = "easily cracked";
46079 if (z.feedback.warning != "") {
46080 strength = strength + " - " + z.feedback.warning;
46085 strength = "unknown";
46086 console.log("Error detecting entropy strength with zxcvbn:");
46089 var entropyTypeStr = getEntropyTypeStr(entropy);
46090 var wordCount = Math.floor(numberOfBits /
32) *
3;
46091 var bitsPerEvent = entropy.bitsPerEvent.toFixed(
2);
46092 DOM.entropyFiltered.html(entropy.cleanHtml);
46093 DOM.entropyType.text(entropyTypeStr);
46094 DOM.entropyStrength.text(strength);
46095 DOM.entropyEventCount.text(entropy.base.ints.length);
46096 DOM.entropyBits.text(numberOfBits);
46097 DOM.entropyWordCount.text(wordCount);
46098 DOM.entropyBinary.text(entropy.binaryStr);
46099 DOM.entropyBitsPerEvent.text(bitsPerEvent);
46102 function getEntropyTypeStr(entropy) {
46103 var typeStr = entropy.base.str;
46104 // Add some detail if these are cards
46105 if (entropy.base.asInt ==
52) {
46106 var cardDetail = []; // array of message strings
46107 // Detect duplicates
46109 var dupeTracker = {};
46110 for (var i=
0; i
<entropy.base.parts.length; i++) {
46111 var card = entropy.base.parts[i];
46112 var cardUpper = card.toUpperCase();
46113 if (cardUpper in dupeTracker) {
46116 dupeTracker[cardUpper] = true;
46118 if (dupes.length
> 0) {
46119 var dupeWord =
"duplicates";
46120 if (dupes.length ==
1) {
46121 dupeWord =
"duplicate";
46123 var msg = dupes.length +
" " + dupeWord +
": " + dupes.slice(
0,
3).join(
" ");
46124 if (dupes.length
> 3) {
46127 cardDetail.push(msg);
46129 // Detect full deck
46130 var uniqueCards = [];
46131 for (var uniqueCard in dupeTracker) {
46132 uniqueCards.push(uniqueCard);
46134 if (uniqueCards.length ==
52) {
46135 cardDetail.unshift(
"full deck");
46137 // Detect missing cards
46138 var values =
"A23456789TJQK";
46139 var suits =
"CDHS";
46140 var missingCards = [];
46141 for (var i=
0; i
<suits.length; i++) {
46142 for (var j=
0; j
<values.length; j++) {
46143 var card = values[j] + suits[i];
46144 if (!(card in dupeTracker)) {
46145 missingCards.push(card);
46149 // Display missing cards if six or less, ie clearly going for full deck
46150 if (missingCards.length
> 0 && missingCards.length <=
6) {
46151 var msg = missingCards.length +
" missing: " + missingCards.slice(
0,
3).join(
" ");
46152 if (missingCards.length
> 3) {
46155 cardDetail.push(msg);
46157 // Add card details to typeStr
46158 if (cardDetail.length
> 0) {
46159 typeStr +=
" (" + cardDetail.join(
", ") +
")";
46165 function setQrEvents(els) {
46166 els.on(
"mouseenter", createQr);
46167 els.on(
"mouseleave", destroyQr);
46168 els.on(
"click", toggleQr);
46171 function createQr(e) {
46172 var content = e.target.textContent || e.target.value;
46175 DOM.qrImage.qrcode({width: size, height: size, text: content});
46177 DOM.qrHider.addClass(
"hidden");
46180 DOM.qrHider.removeClass(
"hidden");
46182 DOM.qrContainer.removeClass(
"hidden");
46186 function destroyQr() {
46187 DOM.qrImage.text(
"");
46188 DOM.qrContainer.addClass(
"hidden");
46191 function toggleQr() {
46193 DOM.qrHider.toggleClass(
"hidden");
46194 DOM.qrHint.toggleClass(
"hidden");
46197 function bip44TabSelected() {
46198 return DOM.bip44tab.hasClass(
"active");
46201 function bip32TabSelected() {
46202 return DOM.bip32tab.hasClass(
"active");
46208 onSelect: function() {
46209 network = bitcoin.networks.bitcoin;
46210 DOM.bip44coin.val(
0);
46214 name:
"Bitcoin Testnet",
46215 onSelect: function() {
46216 network = bitcoin.networks.testnet;
46217 DOM.bip44coin.val(
1);
46222 onSelect: function() {
46223 network = bitcoin.networks.clam;
46224 DOM.bip44coin.val(
23);
46229 onSelect: function() {
46230 network = bitcoin.networks.dogecoin;
46231 DOM.bip44coin.val(
3);
46236 onSelect: function() {
46237 network = bitcoin.networks.dash;
46238 DOM.bip44coin.val(
5);
46243 onSelect: function() {
46244 network = bitcoin.networks.bitcoin;
46245 DOM.bip44coin.val(
60);
46250 onSelect: function() {
46251 network = bitcoin.networks.game;
46252 DOM.bip44coin.val(
101);
46257 onSelect: function() {
46258 network = bitcoin.networks.jumbucks;
46259 DOM.bip44coin.val(
26);
46264 onSelect: function() {
46265 network = bitcoin.networks.litecoin;
46266 DOM.bip44coin.val(
2);
46271 onSelect: function() {
46272 network = bitcoin.networks.namecoin;
46273 DOM.bip44coin.val(
7);
46278 onSelect: function() {
46279 network = bitcoin.networks.peercoin;
46280 DOM.bip44coin.val(
6);
46284 name:
"ShadowCash",
46285 onSelect: function() {
46286 network = bitcoin.networks.shadow;
46287 DOM.bip44coin.val(
35);
46291 name:
"ShadowCash Testnet",
46292 onSelect: function() {
46293 network = bitcoin.networks.shadowtn;
46294 DOM.bip44coin.val(
1);
46299 onSelect: function() {
46300 network = bitcoin.networks.viacoin;
46301 DOM.bip44coin.val(
14);
46305 name:
"Viacoin Testnet",
46306 onSelect: function() {
46307 network = bitcoin.networks.viacointestnet;
46308 DOM.bip44coin.val(
1);
46315 name:
"Bitcoin Core",
46316 onSelect: function() {
46317 DOM.bip32path.val(
"m/0'/0'");
46318 DOM.hardenedAddresses.prop('checked', true);
46322 name:
"blockchain.info",
46323 onSelect: function() {
46324 DOM.bip32path.val(
"m/44'/0'/0'");
46325 DOM.hardenedAddresses.prop('checked', false);
46329 name:
"MultiBit HD",
46330 onSelect: function() {
46331 DOM.bip32path.val(
"m/0'/0");
46332 DOM.hardenedAddresses.prop('checked', false);