]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Add CRW - Crown
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
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 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.1.1</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <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>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <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>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 </form>
274 </div>
275 </div>
276
277 <hr>
278
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
283 <li id="bip44-tab" class="active">
284 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
285 </li>
286 <li id="bip32-tab">
287 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
288 </li>
289 </ul>
290 <div class="derivation-type tab-content">
291 <div id="bip44" class="tab-pane active">
292 <form class="form-horizontal" role="form">
293 <br>
294 <div class="col-sm-2"></div>
295 <div class="col-sm-10">
296 <p data-translate-html>
297 For more info see the
298 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
299 </p>
300 </div>
301 <div class="form-group">
302 <label for="purpose" class="col-sm-2 control-label">
303 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
304 </label>
305 <div class="col-sm-10">
306 <input id="purpose" type="text" class="purpose form-control" value="44">
307 </div>
308 </div>
309 <div class="form-group">
310 <label for="coin" class="col-sm-2 control-label">
311 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
312 </label>
313 <div class="col-sm-10">
314 <input id="coin" type="text" class="coin form-control" value="0">
315 </div>
316 </div>
317 <div class="form-group">
318 <label for="account" class="col-sm-2 control-label">
319 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
320 </label>
321 <div class="col-sm-10">
322 <input id="account" type="text" class="account form-control" value="0">
323 </div>
324 </div>
325 <div class="form-group">
326 <label for="change" class="col-sm-2 control-label">
327 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
328 </label>
329 <div class="col-sm-10">
330 <input id="change" type="text" class="change form-control" value="0">
331 </div>
332 </div>
333 <div class="form-group">
334 <label class="col-sm-2 control-label">
335 </label>
336 <div class="col-sm-10">
337 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
338 </div>
339 </div>
340 <div class="form-group">
341 <label for="account-xprv" class="col-sm-2 control-label">
342 <span data-translate>Account Extended Private Key</span>
343 </label>
344 <div class="col-sm-10">
345 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
346 </div>
347 </div>
348 <div class="form-group">
349 <label for="account-xpub" class="col-sm-2 control-label">
350 <span data-translate>Account Extended Public Key</span>
351 </label>
352 <div class="col-sm-10">
353 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
354 </div>
355 </div>
356 <div class="form-group">
357 <label class="col-sm-2 control-label">
358 </label>
359 <div class="col-sm-10">
360 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
361 </div>
362 </div>
363 <div class="form-group">
364 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
365 <div class="col-sm-10">
366 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
367 </div>
368 </div>
369 </form>
370 </div>
371 <div id="bip32" class="tab-pane">
372 <form class="form-horizontal" role="form">
373 <br>
374 <div class="col-sm-2"></div>
375 <div class="col-sm-10">
376 <p data-translate>
377 For more info see the
378 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
379 </p>
380 </div>
381 <div class="form-group">
382 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
383 <div class="col-sm-10">
384 <select id="bip32-client" class="client form-control">
385 <option value="custom">Custom derivation path</option>
386 <!-- populated by javascript -->
387 </select>
388 </div>
389 </div>
390 <div class="form-group">
391 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
392 <div class="col-sm-10">
393 <input id="bip32-path" type="text" class="path form-control" value="m/0">
394 </div>
395 </div>
396 <div class="form-group">
397 <div class="col-sm-2"></div>
398 <label class="col-sm-10">
399 <input class="hardened-addresses" type="checkbox">
400 <span data-translate>Use hardened addresses</span>
401 </label>
402 </div>
403 <div class="form-group">
404 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
405 <div class="col-sm-10">
406 <p class="form-control no-border" data-translate-html>
407 Use path <code>m/0'/0'</code> with hardened addresses.
408 </p>
409 <p class="form-control no-border" data-translate-html>
410 For more info see the
411 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
412 </p>
413 </div>
414 </div>
415 <div class="form-group">
416 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
417 <div class="col-sm-10">
418 <p class="form-control no-border">
419 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
420 </p>
421 <p class="form-control no-border">
422 <span data-translate>For more info see</span>
423 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
424 </p>
425 </div>
426 </div>
427 <div class="form-group">
428 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
429 <div class="col-sm-10">
430 <p class="form-control no-border">
431 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
432 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
433 </p>
434 <p class="form-control no-border">
435 <span data-translate>Can be used with</span>:
436 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
437 </p>
438 </div>
439 </div>
440 </form>
441 </div>
442 </div>
443 <form class="form-horizontal" role="form">
444 <div class="form-group">
445 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
446 <div class="col-sm-10">
447 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
448 </div>
449 </div>
450 <div class="form-group">
451 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
452 <div class="col-sm-10">
453 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
454 </div>
455 </div>
456 </form>
457 </div>
458 </div>
459
460 <hr>
461
462 <div class="row">
463 <div class="col-md-12">
464 <h2>Derived Addresses</h2>
465 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
466 <table class="table table-striped">
467 <thead>
468 <th>
469 <div class="input-group">
470 <span data-translate>Path</span>&nbsp;&nbsp;
471 <button class="index-toggle" data-translate>Toggle</button>
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
476 <span data-translate>Address</span>&nbsp;&nbsp;
477 <button class="address-toggle" data-translate>Toggle</button>
478 </div>
479 </th>
480 <th>
481 <div class="input-group">
482 <span data-translate>Public Key</span>&nbsp;&nbsp;
483 <button class="public-key-toggle" data-translate>Toggle</button>
484 </div>
485 </th>
486 <th>
487 <div class="input-group">
488 <span data-translate>Private Key</span>&nbsp;&nbsp;
489 <button class="private-key-toggle" data-translate>Toggle</button>
490 </div>
491 </th>
492 </thead>
493 <tbody class="addresses monospace">
494 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
495 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
496 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
497 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
498 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
499 </tbody>
500 </table>
501 </div>
502 </div>
503 <span data-translate>Show more rows</span>:
504 <input type="number" class="rows-to-add" value="20">
505 <button class="more" data-translate>Show</button>
506
507 <hr>
508
509 <div class="row">
510 <div class="col-md-12">
511 <h2 data-translate>More info</h2>
512 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
513 <p data-translate-html>
514 Read more at the
515 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
516 </p>
517 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
518 <p data-translate-html>
519 Read more at the
520 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
521 </p>
522 <p data-translate-html>
523 See the demo at
524 <a href="http://bip32.org/" target="_blank">bip32.org</a>
525 </p>
526 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
527 <p data-translate-html>
528 Read more at the
529 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
530 </p>
531 <h3 data-translate>Private Keys</h3>
532 <p>
533 <span data-translate-html>
534 Use private keys at
535 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
536 </span>
537 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
538 </p>
539 <h3 id="entropy-notes" data-translate>Entropy</h3>
540 <p>
541 <span data-translate-html>
542 Entropy values must be sourced from a
543 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
544 </span>
545 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
546 <span data-translate-html>
547 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
548 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
549 random enough for the needs of this tool.
550 </span>
551 </p>
552 <p>
553 <strong><span data-translate>Do not store entropy.</span></strong>
554 </p>
555 <p>
556 <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>
557 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
558 <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>
559 </p>
560 <p>
561 <span data-translate-html>
562 The random mnemonic generator on this page uses a
563 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
564 </span>
565 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
566 <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>
567 <span data-translate>In that case you might choose to use your own source of entropy.</span>
568 </p>
569 <p>
570 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
571 </p>
572 <h3 data-translate>License</h3>
573 <p>
574 <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.
575 </span>
576 </p>
577 <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>
578 </div>
579 </div>
580
581 <hr>
582
583 <div class="row">
584 <div class="col-md-12">
585
586 <h2 data-translate>Offline Usage</h2>
587
588 <p data-translate>
589 You can use this tool without having to be online.
590 </p>
591 <p data-translate>
592 In your browser, select file save-as, and save this page
593 as a file.
594 </p>
595 <p data-translate>
596 Double-click that file to open it in a browser
597 on any offline computer.
598 </p>
599 <p>
600 <span data-translate>Alternatively, download the file from the repository</span>
601 -
602 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
603 </p>
604
605 </div>
606 </div>
607
608 <hr>
609
610 <div class="row">
611 <div class="col-md-12">
612
613 <h2 data-translate>This project is 100% open-source code</h2>
614
615 <p>
616 <span data-translate>Get the source code from the repository</span>
617 -
618 <a href="https://github.com/iancoleman/bip39" target="_blank">
619 https://github.com/iancoleman/bip39
620 </a>
621 </p>
622
623 <h3 data-translate>Libraries</h3>
624
625 <p>
626 <span>BitcoinJS - </span>
627 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
628 https://github.com/bitcoinjs/bitcoinjs-lib
629 </a>
630 </p>
631
632 <p>
633 <span>jsBIP39 - </span>
634 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
635 https://github.com/iancoleman/jsbip39
636 </a>
637 </p>
638
639 <p>
640 <span>sjcl - </span>
641 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
642 https://github.com/bitwiseshiftleft/sjcl
643 </a>
644 </p>
645
646 <p>
647 <span>jQuery - </span>
648 <a href="https://jquery.com/" target="_blank">
649 https://jquery.com/
650 </a>
651 </p>
652
653 <p>
654 <span>Twitter Bootstrap - </span>
655 <a href="http://getbootstrap.com/" target="_blank">
656 http://getbootstrap.com/
657 </a>
658 </p>
659
660 </div>
661 </div>
662
663 </div>
664
665 <div class="qr-container hidden">
666 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
667 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
668 <div class="qr-hider hidden">
669 <div class="qr-image"></div>
670 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
671 </div>
672 </div>
673
674 <div class="feedback-container">
675 <div class="feedback">Loading...</div>
676 </div>
677
678 <script type="text/template" id="address-row-template">
679 <tr>
680 <td class="index"><span></span></td>
681 <td class="address"><span data-show-qr></span></td>
682 <td class="pubkey"><span data-show-qr></span></td>
683 <td class="privkey"><span data-show-qr></span></td>
684 </tr>
685 </script>
686 <script>// From
687 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
688 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
689 // but is not required in any modern browsers.
690 // For more information, see
691 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
692
693 //----------------------------------------------------------------------
694 //
695 // ECMAScript 2015 Polyfills
696 //
697 //----------------------------------------------------------------------
698
699 (function (global) {
700 "use strict";
701
702 // Set this to always override native implementations, for testing
703 // the polyfill in browsers with partial/full ES2015 support.
704 var OVERRIDE_NATIVE_FOR_TESTING = false;
705
706 var undefined = (void 0); // Paranoia
707
708 // Helpers
709
710 function strict(o) {
711 return o === global ? undefined : o;
712 }
713
714 function hook(o, p, f) {
715 var op = o[p];
716 console.assert(typeof op === 'function', 'Hooking a non-function');
717 o[p] = function() {
718 var o = strict(this);
719 var r = f.apply(o, arguments);
720 return r !== undefined ? r : op.apply(o, arguments);
721 };
722 }
723
724 function isSymbol(s) {
725 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
726 }
727
728 function getPropertyDescriptor(target, name) {
729 var desc = Object.getOwnPropertyDescriptor(target, name);
730 var proto = Object.getPrototypeOf(target);
731 while (!desc && proto) {
732 desc = Object.getOwnPropertyDescriptor(proto, name);
733 proto = Object.getPrototypeOf(proto);
734 }
735 return desc;
736 }
737
738 var enqueue = (function(nativePromise, nativeSetImmediate) {
739 if (nativePromise)
740 return function(job) { nativePromise.resolve().then(function() { job(); }); };
741 if (nativeSetImmediate)
742 return function(job) { nativeSetImmediate(job); };
743 return function(job) { setTimeout(job, 0); };
744 }(global['Promise'], global['setImmediate']));
745
746 function define(o, p, v, override) {
747 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
748 return;
749
750 if (typeof v === 'function') {
751 // Sanity check that functions are appropriately named (where possible)
752 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
753 Object.defineProperty(o, p, {
754 value: v,
755 configurable: true,
756 enumerable: false,
757 writable: true
758 });
759 } else {
760 Object.defineProperty(o, p, {
761 value: v,
762 configurable: false,
763 enumerable: false,
764 writable: false
765 });
766 }
767 }
768
769 function set_internal(o, p, v) {
770 Object.defineProperty(o, p, {
771 value: v,
772 configurable: false,
773 enumerable: false,
774 writable: true
775 });
776 }
777
778 // Snapshot intrinsic functions
779 var $isNaN = global.isNaN,
780 $parseInt = global.parseInt,
781 $parseFloat = global.parseFloat;
782
783 var E = Math.E,
784 LOG10E = Math.LOG10E,
785 LOG2E = Math.LOG2E,
786 abs = Math.abs,
787 ceil = Math.ceil,
788 exp = Math.exp,
789 floor = Math.floor,
790 log = Math.log,
791 max = Math.max,
792 min = Math.min,
793 pow = Math.pow,
794 random = Math.random,
795 sqrt = Math.sqrt;
796
797 var orig_match = String.prototype.match,
798 orig_replace = String.prototype.replace,
799 orig_search = String.prototype.search,
800 orig_split = String.prototype.split;
801
802 // These are used for implementing the polyfills, but not exported.
803
804 // Inspired by https://gist.github.com/1638059
805 /** @constructor */
806 function EphemeronTable() {
807 var secretKey = ObjectCreate(null);
808
809 function conceal(o) {
810 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
811 Object.defineProperty(o, 'valueOf', {
812 value: (function(secretKey) {
813 return function (k) {
814 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
815 };
816 }(secretKey)),
817 configurable: true,
818 writeable: true,
819 enumerable: false
820 });
821 return secrets;
822 }
823
824 function reveal(o) {
825 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
826 return v === o ? null : v;
827 }
828
829 return {
830 clear: function() {
831 secretKey = ObjectCreate(null);
832 },
833 remove: function(key) {
834 var secrets = reveal(key);
835 if (secrets && HasOwnProperty(secrets, 'value')) {
836 delete secrets.value;
837 return true;
838 }
839 return false;
840 },
841 get: function(key, defaultValue) {
842 var secrets = reveal(key);
843 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
844 },
845 has: function(key) {
846 var secrets = reveal(key);
847 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
848 },
849 set: function(key, value) {
850 var secrets = reveal(key) || conceal(key);
851 secrets.value = value;
852 }
853 };
854 }
855
856 var empty = Object.create(null);
857
858 //----------------------------------------------------------------------
859 //
860 // ECMAScript 2015
861 // http://www.ecma-international.org/ecma-262/6.0/
862 //
863 //----------------------------------------------------------------------
864
865 // ---------------------------------------
866 // 19.4 Symbol Objects
867 // ---------------------------------------
868
869 // NOTE: Symbols are defined here - out of spec order - since we need the
870 // properties and prototype to be populated for other polyfills.
871
872 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
873
874 var symbolForKey;
875 (function() {
876 var secret = Object.create(null);
877 var symbolMap = {};
878 symbolForKey = function(k) {
879 return symbolMap[k];
880 };
881
882 var GlobalSymbolRegistry = [];
883
884 function unique(bits) {
885 return Array(bits + 1).join('x').replace(/x/g, function() {
886 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
887 });
888 }
889
890 // 19.4.1 The Symbol Constructor
891 // 19.4.1.1 Symbol ( description=undefined )
892 function Symbol(description) {
893 if (!(this instanceof Symbol)) return new Symbol(description, secret);
894 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
895
896 var descString = description === undefined ? undefined : String(description);
897
898 set_internal(this, '[[SymbolData]]', unique(128));
899 set_internal(this, '[[Description]]', descString);
900
901 symbolMap[this] = this;
902 return this;
903 }
904
905 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
906 global.Symbol = Symbol;
907
908 // 19.4.2 Properties of the Symbol Constructor
909
910 // 19.4.2.1 Symbol.for (key)
911 define(Symbol, 'for', function for_(key) {
912 var stringKey = String(key);
913 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
914 var e = GlobalSymbolRegistry[i];
915 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
916 }
917 var newSymbol = Symbol(key);
918 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
919 return newSymbol;
920 });
921
922 // 19.4.2.2 Symbol.hasInstance
923 // 19.4.2.3 Symbol.isConcatSpreadable
924
925 // 19.4.2.4 Symbol.iterator
926 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
927
928 // 19.4.2.5 Symbol.keyFor (sym)
929 define(Symbol, 'keyFor', function keyFor(sym) {
930 if (!(sym instanceof Symbol)) throw TypeError();
931 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
932 var e = GlobalSymbolRegistry[i];
933 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
934 }
935 return undefined;
936 });
937
938 // 19.4.2.6 Symbol.match
939 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
940
941 // 19.4.2.7 Symbol.prototype
942
943 // 19.4.2.8 Symbol.replace
944 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
945
946 // 19.4.2.9 Symbol.search
947 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
948
949 // 19.4.2.10 Symbol.species
950
951 // 19.4.2.11 Symbol.search
952 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
953
954 // 19.4.2.12 Symbol.toPrimitive
955
956 // 19.4.2.13 Symbol.toStringTag
957 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
958
959 // 19.4.2.14 Symbol.unscopables
960
961 // 19.4.3 Properties of the Symbol Prototype Object
962 // 19.4.3.1 Symbol.prototype.constructor
963
964 // 19.4.3.2 Symbol.prototype.toString ( )
965 Object.defineProperty(Symbol.prototype, 'toString', {
966 value: function toString() {
967 var s = strict(this);
968 var desc = s['[[Description]]'];
969 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
970 },
971 configurable: true, writeable: true, enumerable: false });
972
973 // 19.4.3.3 Symbol.prototype.valueOf ( )
974 Object.defineProperty(Symbol.prototype, 'valueOf', {
975 value: function valueOf() {
976 // To prevent automatic string conversion:
977 throw TypeError();
978
979 // Spec has approximately the following:
980 //var s = strict(this);
981 //if (Type(s) === 'symbol') return s;
982 //if (Type(s) !== 'object') throw TypeError();
983 //if (!('[[SymbolData]]' in s)) throw TypeError();
984 //return s['[[SymbolData]]'];
985 },
986 configurable: true, writeable: true, enumerable: false });
987
988 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
989 // (Done later to polyfill partial implementations)
990
991 // 19.4.4 Properties of Symbol Instances
992 }());
993
994 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
995
996 // Defined here so that other prototypes can reference it
997 // 25.1.2 The %IteratorPrototype% Object
998 var $IteratorPrototype$ = {};
999
1000 //----------------------------------------
1001 // 6 ECMAScript Data Types and Values
1002 //----------------------------------------
1003
1004 // 6.1 ECMAScript Language Types
1005
1006 // "Type(x)" is used as shorthand for "the type of x"...
1007 function Type(v) {
1008 switch (typeof v) {
1009 case 'undefined': return 'undefined';
1010 case 'boolean': return 'boolean';
1011 case 'number': return 'number';
1012 case 'string': return 'string';
1013 case 'symbol': return 'symbol';
1014 default:
1015 if (v === null) return 'null';
1016 if (v instanceof global.Symbol) return 'symbol';
1017 return 'object';
1018 }
1019 }
1020
1021 // 6.1.5.1 Well-Known Symbols
1022 var $$iterator = global.Symbol.iterator,
1023 $$match = global.Symbol.match,
1024 $$replace = global.Symbol.replace,
1025 $$search = global.Symbol.search,
1026 $$split = global.Symbol.split,
1027 $$toStringTag = global.Symbol.toStringTag;
1028
1029 //----------------------------------------
1030 // 7 Abstract Operations
1031 //----------------------------------------
1032
1033 //----------------------------------------
1034 // 7.1 Type Conversion
1035 //----------------------------------------
1036
1037 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1038 // just use valueOf()
1039
1040 // 7.1.2 ToBoolean ( argument )
1041 // just use Boolean()
1042
1043 // 7.1.3 ToNumber ( argument )
1044 // just use Number()
1045
1046 // 7.1.4 ToInteger ( argument )
1047 function ToInteger(n) {
1048 n = Number(n);
1049 if ($isNaN(n)) return 0;
1050 if (n === 0 || n === Infinity || n === -Infinity) return n;
1051 return ((n < 0) ? -1 : 1) * floor(abs(n));
1052 }
1053
1054 // 7.1.5 ToInt32 ( argument )
1055 function ToInt32(v) { return v >> 0; }
1056
1057 // 7.1.6 ToUint32 ( argument )
1058 function ToUint32(v) { return v >>> 0; }
1059
1060 // 7.1.7 ToInt16 ( argument )
1061 function ToInt16(v) { return (v << 16) >> 16; }
1062
1063 // 7.1.8 ToUint16 ( argument )
1064 function ToUint16(v) { return v & 0xFFFF; }
1065
1066 // 7.1.9 ToInt8 ( argument )
1067 function ToInt8(v) { return (v << 24) >> 24; }
1068
1069 // 7.1.10 ToUint8 ( argument )
1070 function ToUint8(v) { return v & 0xFF; }
1071
1072 // 7.1.11 ToUint8Clamp ( argument )
1073 function ToUint8Clamp(argument) {
1074 var number = Number(argument);
1075 if ($isNaN(number)) return 0;
1076 if (number <= 0) return 0;
1077 if (number >= 255) return 255;
1078 var f = floor(number);
1079 if ((f + 0.5) < number) return f + 1;
1080 if (number < (f + 0.5)) return f;
1081 if (f % 2) return f + 1;
1082 return f;
1083 }
1084
1085 // 7.1.12 ToString ( argument )
1086 // just use String()
1087
1088 // 7.1.13 ToObject ( argument )
1089 function ToObject(v) {
1090 if (v === null || v === undefined) throw TypeError();
1091 return Object(v);
1092 }
1093
1094 // 7.1.14 ToPropertyKey ( argument )
1095 function ToPropertyKey(v) {
1096 return String(v);
1097 }
1098
1099 // 7.1.15 ToLength ( argument )
1100 function ToLength(v) {
1101 var len = ToInteger(v);
1102 if (len <= 0) return 0;
1103 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1104 return min(len, 0x20000000000000 - 1); // 2^53-1
1105 }
1106
1107 // 7.1.16 CanonicalNumericIndexString ( argument )
1108
1109 //----------------------------------------
1110 // 7.2 Testing and Comparison Operations
1111 //----------------------------------------
1112
1113 // 7.2.1 RequireObjectCoercible ( argument )
1114 // 7.2.2 IsArray ( argument )
1115
1116 // 7.2.3 IsCallable ( argument )
1117 function IsCallable(o) { return typeof o === 'function'; }
1118
1119 // 7.2.4 IsConstructor ( argument )
1120 function IsConstructor(o) {
1121 // Hacks for Safari 7 TypedArray XXXConstructor objects
1122 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1123 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1124 // TODO: Can this be improved on?
1125 return typeof o === 'function';
1126 }
1127
1128 // 7.2.5 IsExtensible (O)
1129 // 7.2.6 IsInteger ( argument )
1130
1131 // 7.2.7 IsPropertyKey ( argument )
1132 function IsPropertyKey(argument) {
1133 if (Type(argument) === 'string') return true;
1134 if (Type(argument) === 'symbol') return true;
1135 return false;
1136 }
1137
1138 // 7.2.8 IsRegExp ( argument )
1139 // 7.2.5 IsConstructor ( argument )
1140
1141 // 7.2.9 SameValue(x, y)
1142 function SameValue(x, y) {
1143 if (typeof x !== typeof y) return false;
1144 switch (typeof x) {
1145 case 'undefined':
1146 return true;
1147 case 'number':
1148 if (x !== x && y !== y) return true;
1149 if (x === 0 && y === 0) return 1/x === 1/y;
1150 return x === y;
1151 case 'boolean':
1152 case 'string':
1153 case 'object':
1154 default:
1155 return x === y;
1156 }
1157 }
1158
1159 // 7.2.10 SameValueZero(x, y)
1160 function SameValueZero(x, y) {
1161 if (typeof x !== typeof y) return false;
1162 switch (typeof x) {
1163 case 'undefined':
1164 return true;
1165 case 'number':
1166 if (x !== x && y !== y) return true;
1167 return x === y;
1168 case 'boolean':
1169 case 'string':
1170 case 'object':
1171 default:
1172 return x === y;
1173 }
1174 }
1175
1176 //----------------------------------------
1177 // 7.3 Operations on Objects
1178 //----------------------------------------
1179
1180 // 7.3.1 Get (O, P)
1181 // - just use o.p or o[p]
1182
1183 // 7.3.2 GetV (V, P)
1184 function GetV(v, p) {
1185 var o = ToObject(v);
1186 return o[p];
1187 }
1188
1189 // 7.3.3 Set (O, P, V, Throw)
1190 // - just use o.p = v or o[p] = v
1191
1192
1193
1194
1195 // 7.3.9 GetMethod (O, P)
1196 function GetMethod(o, p) {
1197 var func = GetV(o, p);
1198 if (func === undefined || func === null) return undefined;
1199 if (!IsCallable(func)) throw TypeError();
1200 return func;
1201 }
1202
1203 // 7.3.10 HasProperty (O, P)
1204 function HasProperty(o, p) {
1205 while (o) {
1206 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1207 if (Type(o) !== 'object') return false;
1208 o = Object.getPrototypeOf(o);
1209 }
1210 return false;
1211 }
1212
1213 // 7.3.11 HasOwnProperty (O, P)
1214 function HasOwnProperty(o, p) {
1215 return Object.prototype.hasOwnProperty.call(o, p);
1216 }
1217
1218 //----------------------------------------
1219 // 7.4 Operations on Iterator Objects
1220 //----------------------------------------
1221
1222 // 7.4.1 GetIterator ( obj, method )
1223 function GetIterator(obj, method) {
1224 if (arguments.length < 2)
1225 method = GetMethod(obj, $$iterator);
1226 var iterator = method.call(obj);
1227 if (Type(iterator) !== 'object') throw TypeError();
1228 return iterator;
1229 }
1230
1231 // 7.4.2 IteratorNext ( iterator, value )
1232 function IteratorNext(iterator, value) {
1233 if (arguments.length < 2)
1234 var result = iterator.next();
1235 else
1236 result = iterator.next(value);
1237 if (Type(result) !== 'object') throw TypeError();
1238 return result;
1239 }
1240
1241 // 7.4.3 IteratorComplete ( iterResult )
1242 function IteratorComplete(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return Boolean(iterResult.done);
1245 }
1246
1247 // 7.4.4 IteratorValue ( iterResult )
1248 function IteratorValue(iterResult) {
1249 console.assert(Type(iterResult) === 'object');
1250 return iterResult.value;
1251 }
1252
1253 // 7.4.5 IteratorStep ( iterator )
1254 function IteratorStep( iterator, value ) {
1255 var result = IteratorNext(iterator, value);
1256 var done = result['done'];
1257 if (Boolean(done) === true) return false;
1258 return result;
1259 }
1260
1261 // 7.4.6 IteratorClose( iterator, completion )
1262 function IteratorClose( iterator, completion ) {
1263 console.assert(Type(iterator) === 'object');
1264 var _return = GetMethod(iterator, 'return');
1265 if (_return === undefined) return completion;
1266 try {
1267 var innerResult = _return[iterator]();
1268 } catch (result) {
1269 // TODO: If completion.[[type]] is throw, return completion
1270 return result;
1271 }
1272 if (Type(innerResult) !== 'object') throw TypeError();
1273 return completion;
1274 }
1275
1276 // 7.4.7 CreateIterResultObject (value, done)
1277 function CreateIterResultObject(value, done) {
1278 console.assert(Type(done) === 'boolean');
1279 var obj = {};
1280 obj["value"] = value;
1281 obj["done"] = done;
1282 return obj;
1283 }
1284
1285 // 7.4.8 CreateListIterator (list)
1286 // 7.4.8.1 ListIterator next( )
1287 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1288 // 7.4.9.1 CompoundIterator next( )
1289
1290 //----------------------------------------
1291 // 8 Executable Code and Execution Contexts
1292 //----------------------------------------
1293
1294 //----------------------------------------
1295 // 8.4 Jobs and Job Queues
1296 //----------------------------------------
1297
1298 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1299 function EnqueueJob(queueName, job, args) {
1300 var fn = function() { job.apply(undefined, args); };
1301 enqueue(fn);
1302 }
1303
1304 // 8.4.2 NextJob result
1305 function NextJob(result) {
1306 // no-op
1307 }
1308
1309 //----------------------------------------
1310 // 9 Ordinary and Exotic Objects Behaviors
1311 //----------------------------------------
1312
1313 // 9.1.11 [[Enumerate]] ()
1314 function Enumerate(obj) {
1315 var e = [];
1316 if (Object(obj) !== obj) return e;
1317 var visited = new Set;
1318 while (obj !== null) {
1319 Object.getOwnPropertyNames(obj).forEach(function(name) {
1320 if (!visited.has(name)) {
1321 var desc = Object.getOwnPropertyDescriptor(obj, name);
1322 if (desc) {
1323 visited.add(name);
1324 if (desc.enumerable) e.push(name);
1325 }
1326 }
1327 });
1328 obj = Object.getPrototypeOf(obj);
1329 }
1330 return e[$$iterator]();
1331 }
1332
1333 // 9.1.12 [[OwnPropertyKeys]] ( )
1334 function OwnPropertyKeys(o) {
1335 return Object.getOwnPropertyNames(o);
1336 }
1337
1338 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1339 function ObjectCreate(proto, internalSlotsList) {
1340 return Object.create(proto, internalSlotsList);
1341 }
1342
1343 // ---------------------------------------
1344 // 19 Fundamental Objects
1345 // ---------------------------------------
1346
1347 // ---------------------------------------
1348 // 19.1 Object Objects
1349 // ---------------------------------------
1350
1351 // 19.1.1 The Object Constructor
1352 // 19.1.1.1 Object ( [ value ] )
1353 // 19.1.2 Properties of the Object Constructor
1354 // 19.1.2.1 Object.assign ( target, ...sources )
1355 define(
1356 Object, 'assign',
1357 function assign(target, /*...*/sources) {
1358 var to = ToObject(target);
1359 if (arguments.length < 2) return to;
1360
1361 var sourcesIndex = 1;
1362 while (sourcesIndex < arguments.length) {
1363 var nextSource = arguments[sourcesIndex++];
1364 if (nextSource === undefined || nextSource === null) {
1365 var keys = [];
1366 } else {
1367 var from = ToObject(nextSource);
1368 keys = OwnPropertyKeys(from);
1369 }
1370 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1371 var nextKey = keys[keysIndex];
1372 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1373 if (desc !== undefined && desc.enumerable) {
1374 var propValue = from[nextKey];
1375 to[nextKey] = propValue;
1376 }
1377 }
1378 }
1379 return to;
1380 });
1381
1382 // 19.1.2.2 Object.create ( O [ , Properties ] )
1383 // 19.1.2.3 Object.defineProperties ( O, Properties )
1384 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1385 // 19.1.2.5 Object.freeze ( O )
1386 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1387
1388 (function() {
1389 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1390 $getOwnPropertyNames = Object.getOwnPropertyNames,
1391 $keys = Object.keys,
1392 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1393
1394 function isStringKey(k) { return !symbolForKey(k); }
1395
1396 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1397 define(
1398 Object, 'getOwnPropertyNames',
1399 function getOwnPropertyNames(o) {
1400 if (Object.prototype.toString.call(o) === '[object Window]') {
1401 // Workaround for cross-realm calling by IE itself.
1402 // https://github.com/inexorabletash/polyfill/issues/96
1403 try {
1404 return $getOwnPropertyNames(o).filter(isStringKey);
1405 } catch (_) {
1406 return $window_names.slice();
1407 }
1408 }
1409 return $getOwnPropertyNames(o).filter(isStringKey);
1410 }, !nativeSymbols);
1411
1412 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1413 define(
1414 Object, 'getOwnPropertySymbols',
1415 function getOwnPropertySymbols(o) {
1416 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1417 }, !nativeSymbols);
1418
1419 // 19.1.2.14 Object.keys ( O )
1420 define(
1421 Object, 'keys',
1422 function keys(o) {
1423 return $keys(o).filter(isStringKey);
1424 }, !nativeSymbols);
1425 }());
1426
1427 // 19.1.2.9 Object.getPrototypeOf ( O )
1428 // 19.1.2.10 Object.is ( value1, value2 )
1429 define(
1430 Object, 'is',
1431 function is(value1, value2) {
1432 return SameValue(value1, value2);
1433 });
1434
1435 // 19.1.2.11 Object.isExtensible ( O )
1436 // 19.1.2.12 Object.isFrozen ( O )
1437 // 19.1.2.13 Object.isSealed ( O )
1438
1439 // 19.1.2.14 Object.keys ( O )
1440 // see above
1441
1442 // 19.1.2.15 Object.preventExtensions ( O )
1443 // 19.1.2.16 Object.prototype
1444 // 19.1.2.17 Object.seal ( O )
1445
1446 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1447 define(
1448 Object, 'setPrototypeOf',
1449 function setPrototypeOf(o, proto) {
1450 if (Type(o) !== 'object') throw TypeError();
1451 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1452 o.__proto__ = proto;
1453 return o;
1454 }
1455 );
1456
1457 // 19.1.3 Properties of the Object Prototype Object
1458 // 19.1.3.1 Object.prototype.constructor
1459 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1460 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1461 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1462 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1463 // 19.1.3.6 Object.prototype.toString ( )
1464 hook(Object.prototype, 'toString',
1465 function() {
1466 var o = strict(this);
1467 if (o === Object(o) && $$toStringTag in o) {
1468 return '[object ' + o[$$toStringTag] + ']';
1469 }
1470 return undefined;
1471 });
1472
1473 // 19.1.3.7 Object.prototype.valueOf ( )
1474 // 19.1.4 Properties of Object Instances
1475
1476 // ---------------------------------------
1477 // 19.2 Function Objects
1478 // ---------------------------------------
1479
1480 // 19.2.1 The Function Constructor
1481 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1482 // 19.2.2 Properties of the Function Constructor
1483 // 19.2.2.1 Function.length
1484 // 19.2.2.2 Function.prototype
1485 // 19.2.3 Properties of the Function Prototype Object
1486 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1487 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1488 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1489 // 19.2.3.4 Function.prototype.constructor
1490 // 19.2.3.5 Function.prototype.toString ( )
1491 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1492 // 19.2.4 Function Instances
1493 // 19.2.4.1 length
1494 // 19.2.4.2 name
1495 // 19.2.4.3 prototype
1496
1497 // (No polyfillable changes from ES5)
1498
1499 // ---------------------------------------
1500 // 19.3 Boolean Objects
1501 // ---------------------------------------
1502
1503 // 19.3.1 The Boolean Constructor
1504 // 19.3.1.1 Boolean ( value )
1505 // 19.3.2 Properties of the Boolean Constructor
1506 // 19.3.2.1 Boolean.prototype
1507 // 19.3.3 Properties of the Boolean Prototype Object
1508 // 19.3.3.1 Boolean.prototype.constructor
1509 // 19.3.3.2 Boolean.prototype.toString ( )
1510 // 19.3.3.3 Boolean.prototype.valueOf ( )
1511 // 19.3.4 Properties of Boolean Instances
1512
1513 // (No polyfillable changes from ES5)
1514
1515 // ---------------------------------------
1516 // 19.4 Symbol Objects
1517 // ---------------------------------------
1518
1519 // Moved earlier in this script, so that other polyfills can depend on them.
1520
1521 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1522 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1523
1524 // ---------------------------------------
1525 // 19.5 Error Objects
1526 // ---------------------------------------
1527
1528 // 19.5.1 The Error Constructor
1529 // 19.5.1.1 Error ( message )
1530 // 19.5.1.2 new Error( ...argumentsList )
1531 // 19.5.2 Properties of the Error Constructor
1532 // 19.5.2.1 Error.prototype
1533 // 19.5.3 Properties of the Error Prototype Object
1534 // 19.5.3.1 Error.prototype.constructor
1535 // 19.5.3.2 Error.prototype.message
1536 // 19.5.3.3 Error.prototype.name
1537 // 19.5.3.4 Error.prototype.toString ( )
1538 // 19.5.4 Properties of Error Instances
1539 // 19.5.5 Native Error Types Used in This Standard
1540 // 19.5.5.1 EvalError
1541 // 19.5.5.2 RangeError
1542 // 19.5.5.3 ReferenceError
1543 // 19.5.5.4 SyntaxError
1544 // 19.5.5.5 TypeError
1545 // 19.5.5.6 URIError
1546 // 19.5.6 NativeError Object Structure
1547 // 19.5.6.1 NativeError Constructors
1548 // 19.5.6.1.1 NativeError ( message )
1549 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1550 // 19.5.6.2 Properties of the NativeError Constructors
1551 // 19.5.6.2.1 NativeError.prototype
1552 // 19.5.6.3 Properties of the NativeError Prototype Objects
1553 // 19.5.6.4 Properties of NativeError Instances
1554
1555 // (No polyfillable changes from ES5)
1556
1557 // ---------------------------------------
1558 // 20 Numbers and Dates
1559 // ---------------------------------------
1560
1561 // ---------------------------------------
1562 // 20.1 Number Objects
1563 // ---------------------------------------
1564
1565 // 20.1.1 The Number Constructor
1566 // 20.1.1.1 Number ( [ value ] )
1567 // 20.1.1.2 new Number ( ...argumentsList )
1568 // 20.1.2 Properties of the Number Constructor
1569
1570 // 20.1.2.1 Number.EPSILON
1571 define(
1572 Number, 'EPSILON',
1573 (function () {
1574 var next, result;
1575 for (next = 1; 1 + next !== 1; next = next / 2)
1576 result = next;
1577 return result;
1578 }()));
1579
1580 // 20.1.2.2 Number.isFinite ( number )
1581 define(
1582 Number, 'isFinite',
1583 function isFinite(number) {
1584 if (Type(number) !== 'number') return false;
1585 if (number !== number || number === +Infinity || number === -Infinity) return false;
1586 return true;
1587 });
1588
1589 // 20.1.2.3 Number.isInteger ( number )
1590 define(
1591 Number, 'isInteger',
1592 function isInteger(number) {
1593 if (Type(number) !== 'number') return false;
1594 if (number !== number || number === +Infinity || number === -Infinity) return false;
1595 var integer = ToInteger(number);
1596 if (integer !== number) return false;
1597 return true;
1598 });
1599
1600 // 20.1.2.4 Number.isNaN ( number )
1601 define(
1602 Number, 'isNaN',
1603 function isNaN(number) {
1604 if (Type(number) !== 'number') return false;
1605 if (number !== number) return true;
1606 return false;
1607 });
1608
1609 // 20.1.2.5 Number.isSafeInteger ( number )
1610 define(
1611 Number, 'isSafeInteger',
1612 function isSafeInteger(number) {
1613 if (Type(number) !== 'number') return false;
1614 if (number !== number || number === +Infinity || number === -Infinity) return false;
1615 var integer = ToInteger(number);
1616 if (integer !== number) return false;
1617 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1618 return true;
1619 return false;
1620 });
1621
1622 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1623 define(
1624 Number, 'MAX_SAFE_INTEGER',
1625 9007199254740991); // 2^53-1
1626
1627 // 20.1.2.7 Number.MAX_VALUE
1628
1629 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1630 define(
1631 Number, 'MIN_SAFE_INTEGER',
1632 -9007199254740991); // -2^53+1
1633
1634 // 20.1.2.9 Number.MIN_VALUE
1635 // 20.1.2.10 Number.NaN
1636 // 20.1.2.11 Number.NEGATIVE_INFINITY
1637
1638 // 20.1.2.12 Number.parseFloat ( string )
1639 define(Number, 'parseFloat', $parseFloat);
1640
1641 // 20.1.2.13 Number.parseInt ( string, radix )
1642 define(Number, 'parseInt', $parseInt);
1643
1644 // 20.1.2.14 Number.POSITIVE_INFINITY
1645 // 20.1.2.15 Number.prototype
1646
1647 // 20.1.3 Properties of the Number Prototype Object
1648 // 20.1.3.1 Number.prototype.constructor
1649 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1650 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1651 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1652 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1653 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1654 // 20.1.3.7 Number.prototype.valueOf ( )
1655 // 20.1.4 Properties of Number Instances
1656
1657 // ---------------------------------------
1658 // 20.2 The Math Object
1659 // ---------------------------------------
1660
1661 // 20.2.1 Value Properties of the Math Object
1662 // 20.2.1.1 Math.E
1663 // 20.2.1.2 Math.LN10
1664 // 20.2.1.3 Math.LN2
1665 // 20.2.1.4 Math.LOG10E
1666 // 20.2.1.5 Math.LOG2E
1667 // 20.2.1.6 Math.PI
1668 // 20.2.1.7 Math.SQRT1_2
1669 // 20.2.1.8 Math.SQRT2
1670
1671 // 20.2.1.9 Math [ @@toStringTag ]
1672 define(Math, $$toStringTag, 'Math');
1673
1674 // 20.2.2 Function Properties of the Math Object
1675 // 20.2.2.1 Math.abs ( x )
1676 // 20.2.2.2 Math.acos ( x )
1677
1678 // 20.2.2.3 Math.acosh(x)
1679 define(
1680 Math, 'acosh',
1681 function acosh(x) {
1682 x = Number(x);
1683 return log(x + sqrt(x * x - 1));
1684 });
1685
1686 // 20.2.2.4 Math.asin ( x )
1687
1688 // 20.2.2.5 Math.asinh( x )
1689 define(
1690 Math, 'asinh',
1691 function asinh(x) {
1692 x = Number(x);
1693 if (SameValue(x, -0)) {
1694 return x;
1695 }
1696 var s = sqrt(x * x + 1);
1697 return (s === -x) ? log(0) : log(x + s);
1698 });
1699
1700 // 20.2.2.6 Math.atan ( x )
1701
1702 // 20.2.2.7 Math.atanh( x )
1703 define(
1704 Math, 'atanh',
1705 function atanh(x) {
1706 x = Number(x);
1707 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1708 });
1709
1710 // 20.2.2.8 Math.atan2 ( y, x )
1711
1712 // 20.2.2.9 Math.cbrt ( x )
1713 define(
1714 Math, 'cbrt',
1715 function cbrt(x) {
1716 x = Number(x);
1717 if ($isNaN(x/x)) {
1718 return x;
1719 }
1720 var r = pow(abs(x), 1/3);
1721 var t = x/r/r;
1722 return r + (r * (t-r) / (2*r + t));
1723 });
1724
1725 // 20.2.2.10 Math.ceil ( x )
1726
1727 // 20.2.2.11 Math.clz32 ( x )
1728 define(
1729 Math, 'clz32',
1730 function clz32(x) {
1731 function clz8(x) {
1732 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1733 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1734 }
1735 x = ToUint32(x);
1736 return x & 0xff000000 ? clz8(x >> 24) :
1737 x & 0xff0000 ? clz8(x >> 16) + 8 :
1738 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1739 });
1740
1741
1742
1743 // 20.2.2.12 Math.cos ( x )
1744
1745 // 20.2.2.13 Math.cosh ( x )
1746 define(
1747 Math, 'cosh',
1748 function cosh(x) {
1749 x = Number(x);
1750 return (pow(E, x) + pow(E, -x)) / 2;
1751 });
1752
1753 // 20.2.2.14 Math.exp ( x )
1754
1755 // 20.2.2.15 Math.expm1 ( x )
1756 define(
1757 Math, 'expm1',
1758 function expm1(x) {
1759 x = Number(x);
1760 // from: http://www.johndcook.com/cpp_log1p.html
1761 if (SameValue(x, -0)) {
1762 return -0;
1763 } else if (abs(x) < 1e-5) {
1764 return x + 0.5 * x * x; // two terms of Taylor expansion
1765 } else {
1766 return exp(x) - 1;
1767 }
1768 });
1769
1770 // 20.2.2.16 Math.floor ( x )
1771
1772 // 20.2.2.17 Math.fround ( x )
1773 define(
1774 Math, 'fround',
1775 function fround(x) {
1776 if ($isNaN(x)) {
1777 return NaN;
1778 }
1779 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1780 return x;
1781 }
1782 return (new Float32Array([x]))[0];
1783 });
1784
1785 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1786 define(
1787 Math, 'hypot',
1788 function hypot() {
1789 var values = [];
1790 var m = 0, sawNaN = false;
1791 for (var i = 0; i < arguments.length; ++i) {
1792 var n = abs(Number(arguments[i]));
1793 if (n === Infinity) return n;
1794 if (n !== n) sawNaN = true;
1795 if (n > m) m = n;
1796 values[i] = n;
1797 }
1798 if (sawNaN) return NaN;
1799 if (m === 0) return +0;
1800 var sum = +0;
1801 for (i = 0; i < values.length; ++i) {
1802 var r = values[i] / m;
1803 sum = sum + r * r;
1804 }
1805 return m * sqrt(sum);
1806 });
1807
1808 // 20.2.2.19 Math.imul ( x, y )
1809 define(
1810 Math, 'imul',
1811 function imul(x, y) {
1812 var a = ToUint32(x);
1813 var b = ToUint32(y);
1814 // (slow but accurate)
1815 var ah = (a >>> 16) & 0xffff;
1816 var al = a & 0xffff;
1817 var bh = (b >>> 16) & 0xffff;
1818 var bl = b & 0xffff;
1819 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1820 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1821 );
1822
1823 // 20.2.2.20 Math.log ( x )
1824
1825 // 20.2.2.21 Math.log1p ( x )
1826 define(
1827 Math, 'log1p',
1828 function log1p(x) {
1829 x = Number(x);
1830 // from: http://www.johndcook.com/cpp_expm1.html
1831 if (x < -1) {
1832 return NaN;
1833 } else if (SameValue(x, -0)) {
1834 return -0;
1835 } else if (abs(x) > 1e-4) {
1836 return log(1 + x);
1837 } else {
1838 return (-0.5 * x + 1) * x;
1839 }
1840 });
1841
1842 // 20.2.2.22 Math.log10 ( x )
1843 define(
1844 Math, 'log10',
1845 function log10(x) {
1846 x = Number(x);
1847 return log(x) * LOG10E;
1848 });
1849
1850 // 20.2.2.23 Math.log2 ( x )
1851 define(
1852 Math, 'log2',
1853 function log2(x) {
1854 x = Number(x);
1855 return log(x) * LOG2E;
1856 });
1857
1858 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1859 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1860 // 20.2.2.26 Math.pow ( x, y )
1861 // 20.2.2.27 Math.random ( )
1862 // 20.2.2.28 Math.round ( x )
1863
1864 // 20.2.2.29 Math.sign(x)
1865 define(
1866 Math, 'sign',
1867 function sign(x) {
1868 x = Number(x);
1869 return x < 0 ? -1 : x > 0 ? 1 : x;
1870 });
1871
1872 // 20.2.2.30 Math.sin ( x )
1873
1874 // 20.2.2.31 Math.sinh( x )
1875 define(
1876 Math, 'sinh',
1877 function sinh(x) {
1878 x = Number(x);
1879 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1880 });
1881
1882 // 20.2.2.32 Math.sqrt ( x )
1883 // 20.2.2.33 Math.tan ( x )
1884
1885 // 20.2.2.34 Math.tanh ( x )
1886 define(
1887 Math, 'tanh',
1888 function tanh(x) {
1889 x = Number(x);
1890 var n = pow(E, 2 * x) - 1,
1891 d = pow(E, 2 * x) + 1;
1892 if (SameValue(x, -0))
1893 return x;
1894 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1895 });
1896
1897 // 20.2.2.35 Math.trunc ( x )
1898 define(
1899 Math, 'trunc',
1900 function trunc(x) {
1901 x = Number(x);
1902 return $isNaN(x) ? NaN :
1903 x < 0 ? ceil(x) : floor(x);
1904 });
1905
1906 // ---------------------------------------
1907 // 20.3 Date Objects
1908 // ---------------------------------------
1909
1910 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1911 // 20.3.1.1 Time Values and Time Range
1912 // 20.3.1.2 Day Number and Time within Day
1913 // 20.3.1.3 Year Number
1914 // 20.3.1.4 Month Number
1915 // 20.3.1.5 Date Number
1916 // 20.3.1.6 Week Day
1917 // 20.3.1.7 Local Time Zone Adjustment
1918 // 20.3.1.8 Daylight Saving Time Adjustment
1919 // 20.3.1.9 Local Time
1920 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1921 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1922 // 20.3.1.12 MakeDay (year, month, date)
1923 // 20.3.1.13 MakeDate (day, time)
1924 // 20.3.1.14 TimeClip (time)
1925 // 20.3.1.15 Date Time String Format
1926 // 20.3.1.15.1 Extended years
1927 // 20.3.2 The Date Constructor
1928 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1929 // 20.3.2.2 Date ( value )
1930 // 20.3.2.3 Date ( )
1931 // 20.3.3 Properties of the Date Constructor
1932 // 20.3.3.1 Date.now ( )
1933 // 20.3.3.2 Date.parse (string)
1934 // 20.3.3.3 Date.prototype
1935 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1936 // 20.3.4 Properties of the Date Prototype Object
1937 // 20.3.4.1 Date.prototype.constructor
1938 // 20.3.4.2 Date.prototype.getDate ( )
1939 // 20.3.4.3 Date.prototype.getDay ( )
1940 // 20.3.4.4 Date.prototype.getFullYear ( )
1941 // 20.3.4.5 Date.prototype.getHours ( )
1942 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1943 // 20.3.4.7 Date.prototype.getMinutes ( )
1944 // 20.3.4.8 Date.prototype.getMonth ( )
1945 // 20.3.4.9 Date.prototype.getSeconds ( )
1946 // 20.3.4.10 Date.prototype.getTime ( )
1947 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1948 // 20.3.4.12 Date.prototype.getUTCDate ( )
1949 // 20.3.4.13 Date.prototype.getUTCDay ( )
1950 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1951 // 20.3.4.15 Date.prototype.getUTCHours ( )
1952 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1953 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1954 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1955 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1956 // 20.3.4.20 Date.prototype.setDate ( date )
1957 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1958 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1959 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1960 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1961 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1962 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1963 // 20.3.4.27 Date.prototype.setTime ( time )
1964 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1965 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1966 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1967 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1968 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1969 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1970 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1971 // 20.3.4.35 Date.prototype.toDateString ( )
1972 // 20.3.4.36 Date.prototype.toISOString ( )
1973 // 20.3.4.37 Date.prototype.toJSON ( key )
1974 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1975 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1976 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1977 // 20.3.4.41 Date.prototype.toString ( )
1978 // 20.3.4.42 Date.prototype.toTimeString ( )
1979 // 20.3.4.43 Date.prototype.toUTCString ( )
1980 // 20.3.4.44 Date.prototype.valueOf ( )
1981 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1982 // 20.3.5 Properties of Date Instances
1983
1984 // (No polyfillable changes from ES5)
1985
1986 // ---------------------------------------
1987 // 21 Text Processing
1988 // ---------------------------------------
1989
1990 var string_regexp_dispatch = (function() {
1991 var faux = {}, secret = Symbol();
1992 faux[Symbol.match] = function() { return secret; };
1993 return ("").match(faux) === secret;
1994 }());
1995
1996 // 21.1 String Objects
1997 // 21.1.1 The String Constructor
1998 // 21.1.1.1 String ( value )
1999 // 21.1.2 Properties of the String Constructor
2000 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2001
2002 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2003 define(
2004 String, 'fromCodePoint',
2005 function fromCodePoint(/*...codePoints*/) {
2006 var codePoints = arguments,
2007 length = codePoints.length,
2008 elements = [],
2009 nextIndex = 0;
2010 while (nextIndex < length) {
2011 var next = codePoints[nextIndex];
2012 var nextCP = Number(next);
2013 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2014 nextCP < 0 || nextCP > 0x10FFFF) {
2015 throw RangeError('Invalid code point ' + nextCP);
2016 }
2017 if (nextCP < 0x10000) {
2018 elements.push(String.fromCharCode(nextCP));
2019 } else {
2020 nextCP -= 0x10000;
2021 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2022 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2023 }
2024 nextIndex += 1;
2025 }
2026 return elements.join('');
2027 });
2028
2029 // 21.1.2.3 String.prototype
2030
2031 // 21.1.2.4 String.raw ( template , ...substitutions )
2032 define(
2033 String, 'raw',
2034 function raw(template /*, ...substitutions*/) {
2035 var substitutions = [].slice.call(arguments, 1);
2036
2037 var cooked = Object(template);
2038 var rawValue = cooked['raw'];
2039 var raw = Object(rawValue);
2040 var len = raw['length'];
2041 var literalSegments = ToLength(len);
2042 if (literalSegments <= 0) return '';
2043 var stringElements = [];
2044 var nextIndex = 0;
2045 while (true) {
2046 var next = raw[nextIndex];
2047 var nextSeg = String(next);
2048 stringElements.push(nextSeg);
2049 if (nextIndex + 1 === literalSegments)
2050 return stringElements.join('');
2051 next = substitutions[nextIndex];
2052 var nextSub = String(next);
2053 stringElements.push(nextSub);
2054 nextIndex = nextIndex + 1;
2055 }
2056 });
2057
2058 // See https://githib.com/inexorabletash/uate for a more useful version.
2059
2060 // 21.1.3 Properties of the String Prototype Object
2061 // 21.1.3.1 String.prototype.charAt ( pos )
2062 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2063
2064 // 21.1.3.3 String.prototype.codePointAt ( pos )
2065 define(
2066 String.prototype, 'codePointAt',
2067 function codePointAt(pos) {
2068 var o = strict(this);
2069 var s = String(o);
2070 var position = ToInteger(pos);
2071 var size = s.length;
2072 if (position < 0 || position >= size) return undefined;
2073 var first = s.charCodeAt(position);
2074 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2075 var second = s.charCodeAt(position + 1);
2076 if (second < 0xDC00 || second > 0xDFFF) return first;
2077 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2078 });
2079
2080 // 21.1.3.4 String.prototype.concat ( ...args )
2081 // 21.1.3.5 String.prototype.constructor
2082
2083 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2084 define(
2085 String.prototype, 'endsWith',
2086 function endsWith(searchString) {
2087 var endPosition = arguments[1];
2088
2089 var o = strict(this);
2090 var s = String(o);
2091 var searchStr = String(searchString);
2092 var len = s.length;
2093 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2094 var end = min(max(pos, 0), len);
2095 var searchLength = searchStr.length;
2096 var start = end - searchLength;
2097 if (start < 0) return false;
2098 if (s.substring(start, start + searchLength) === searchStr) return true;
2099 return false;
2100 });
2101
2102 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2103 define(
2104 String.prototype, 'includes',
2105 function includes(searchString) {
2106 var position = arguments[1];
2107
2108 var o = strict(this);
2109 var s = String(o);
2110 var searchStr = String(searchString);
2111 var pos = ToInteger(position);
2112 var len = s.length;
2113 var start = min(max(pos, 0), len);
2114 return s.indexOf(searchStr, start) !== -1;
2115 });
2116
2117 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2118 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2119 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2120 // 21.1.3.11 String.prototype.match ( regexp )
2121 define(
2122 String.prototype, 'match',
2123 function match(regexp) {
2124 var o = strict(this);
2125 var s = String(o);
2126 if (HasProperty(regexp, $$match)) var rx = regexp;
2127 else rx = new RegExp(regexp);
2128 return rx[$$match](s);
2129 }, !string_regexp_dispatch);
2130
2131 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2132
2133 // Not practical due to table sizes; if needed, pull in:
2134 // https://github.com/walling/unorm/
2135
2136 // 21.1.3.13 String.prototype.repeat ( count )
2137 define(
2138 String.prototype, 'repeat',
2139 function repeat(count) {
2140 var o = strict(this);
2141 var s = String(o);
2142 var n = ToInteger(count);
2143 if (n < 0) throw RangeError();
2144 if (n === Infinity) throw RangeError();
2145 var t = new Array(n + 1).join(s);
2146 return t;
2147 });
2148
2149 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2150 define(
2151 String.prototype, 'replace',
2152 function replace(searchValue, replaceValue) {
2153 var o = strict(this);
2154 if (HasProperty(searchValue, $$replace))
2155 return searchValue[$$replace](o, replaceValue);
2156 return orig_replace.call(o, searchValue, replaceValue);
2157 }, !string_regexp_dispatch);
2158
2159 // 21.1.3.15 String.prototype.search ( regexp )
2160 define(
2161 String.prototype, 'search',
2162 function search(regexp) {
2163 var o = strict(this);
2164 var string = String(o);
2165 if (HasProperty(regexp, $$search)) var rx = regexp;
2166 else rx = new RegExp(regexp);
2167 return rx[$$search](string);
2168 }, !string_regexp_dispatch);
2169
2170 // 21.1.3.16 String.prototype.slice ( start, end )
2171 // 21.1.3.17 String.prototype.split ( separator, limit )
2172 define(
2173 String.prototype, 'split',
2174 function split(separator, limit) {
2175 var o = strict(this);
2176 if (HasProperty(separator, $$split))
2177 return separator[$$split](o, limit);
2178 return orig_split.call(o, separator, limit);
2179 }, !string_regexp_dispatch);
2180
2181 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2182 define(
2183 String.prototype, 'startsWith',
2184 function startsWith(searchString) {
2185 var position = arguments[1];
2186
2187 var o = strict(this);
2188 var s = String(o);
2189 var searchStr = String(searchString);
2190 var pos = ToInteger(position);
2191 var len = s.length;
2192 var start = min(max(pos, 0), len);
2193 var searchLength = searchStr.length;
2194 if (searchLength + start > len) return false;
2195 if (s.substring(start, start + searchLength) === searchStr) return true;
2196 return false;
2197 });
2198
2199 // 21.1.3.19 String.prototype.substring ( start, end )
2200 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2201 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2202 // 21.1.3.22 String.prototype.toLowerCase ( )
2203 // 21.1.3.23 String.prototype.toString ( )
2204 // 21.1.3.24 String.prototype.toUpperCase ( )
2205 // 21.1.3.25 String.prototype.trim ( )
2206 // 21.1.3.26 String.prototype.valueOf ( )
2207
2208 // 21.1.3.27 String.prototype [ @@iterator ]( )
2209 define(
2210 String.prototype, $$iterator,
2211 function entries() {
2212 return CreateStringIterator(this, 'value');
2213 });
2214
2215 // 21.1.4 Properties of String Instances
2216 // 21.1.4.1 length
2217
2218 // 21.1.5 String Iterator Objects
2219 /** @constructor */
2220 function StringIterator() {}
2221
2222 // 21.1.5.1 CreateStringIterator Abstract Operation
2223 function CreateStringIterator(string, kind) {
2224 var s = String(string);
2225 var iterator = new StringIterator;
2226 set_internal(iterator, '[[IteratedString]]', s);
2227 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2228 set_internal(iterator, '[[StringIterationKind]]', kind);
2229 return iterator;
2230 }
2231
2232 // 21.1.5.2 The %StringIteratorPrototype% Object
2233 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2234 StringIterator.prototype = $StringIteratorPrototype$;
2235
2236 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2237 define(
2238 $StringIteratorPrototype$, 'next',
2239 function next() {
2240 var o = ToObject(this);
2241 var s = String(o['[[IteratedString]]']),
2242 index = o['[[StringIteratorNextIndex]]'],
2243 len = s.length;
2244 if (index >= len) {
2245 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2246 return CreateIterResultObject(undefined, true);
2247 }
2248 var cp = s.codePointAt(index);
2249 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2250 return CreateIterResultObject(String.fromCodePoint(cp), false);
2251 });
2252
2253 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2254 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2255
2256 // 21.1.5.3 Properties of String Iterator Instances
2257
2258 // ---------------------------------------
2259 // 21.2 RegExp (Regular Expression) Objects
2260 // ---------------------------------------
2261
2262 // 21.2.1 Patterns
2263 // 21.2.2 Pattern Semantics
2264 // 21.2.2.1 Notation
2265 // 21.2.2.2 Pattern
2266 // 21.2.2.3 Disjunction
2267 // 21.2.2.4 Alternative
2268 // 21.2.2.5 Term
2269 // 21.2.2.6 Assertion
2270 // 21.2.2.7 Quantifier
2271 // 21.2.2.8 Atom
2272 // 21.2.2.9 AtomEscape
2273 // 21.2.2.10 CharacterEscape
2274 // 21.2.2.11 DecimalEscape
2275 // 21.2.2.12 CharacterClassEscape
2276 // 21.2.2.13 CharacterClass
2277 // 21.2.2.14 ClassRanges
2278 // 21.2.2.15 NonemptyClassRanges
2279 // 21.2.2.16 NonemptyClassRangesNoDash
2280 // 21.2.2.17 ClassAtom
2281 // 21.2.2.18 ClassAtomNoDash
2282 // 21.2.2.19 ClassEscape
2283 // 21.2.3 The RegExp Constructor
2284 // 21.2.3.1 RegExp ( pattern, flags )
2285 // 21.2.3.2 new RegExp( ...argumentsList )
2286 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2287 // 21.2.4 Properties of the RegExp Constructor
2288 // 21.2.4.1 RegExp.prototype
2289 // 21.2.5 Properties of the RegExp Prototype Object
2290 // 21.2.5.1 RegExp.prototype.constructor
2291 // 21.2.5.2 RegExp.prototype.exec ( string )
2292
2293 // 21.2.5.3 get RegExp.prototype.flags
2294 if (!('flags' in RegExp.prototype)) {
2295 Object.defineProperty(
2296 RegExp.prototype, 'flags', {
2297 get: function() {
2298 var s = String(this);
2299 return s.substring(s.lastIndexOf('/') + 1);
2300 }
2301 });
2302 }
2303
2304 // 21.2.5.4 get RegExp.prototype.global
2305 // 21.2.5.5 get RegExp.prototype.ignoreCase
2306
2307 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2308 define(RegExp.prototype, $$match, function(string) {
2309 var o = strict(this);
2310 return orig_match.call(string, o);
2311 });
2312
2313 // 21.2.5.7 get RegExp.prototype.multiline
2314
2315 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2316 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2317 var o = strict(this);
2318 return orig_replace.call(string, o, replaceValue);
2319 });
2320
2321 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2322 define(RegExp.prototype, $$search, function(string) {
2323 var o = strict(this);
2324 return orig_search.call(string, o);
2325 });
2326
2327 // 21.2.5.10 get RegExp.prototype.source
2328
2329 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2330 define(RegExp.prototype, $$split, function(string, limit) {
2331 var o = strict(this);
2332 return orig_split.call(string, o, limit);
2333 });
2334
2335 // 21.2.5.12 get RegExp.prototype.sticky
2336 // 21.2.5.13 RegExp.prototype.test( S )
2337 // 21.2.5.14 RegExp.prototype.toString ( )
2338 // 21.2.5.15 get RegExp.prototype.unicode
2339
2340 // 21.2.6 Properties of RegExp Instances
2341 // 21.2.6.1 lastIndex
2342
2343 // (No polyfillable changes from ES5)
2344
2345 // ---------------------------------------
2346 // 22 Indexed Collections
2347 // ---------------------------------------
2348
2349 // ---------------------------------------
2350 // 22.1 Array Objects
2351 // ---------------------------------------
2352
2353 // 22.1.1 The Array Constructor
2354 // 22.1.1.1 Array ( )
2355 // 22.1.1.2 Array (len)
2356 // 22.1.1.3 Array (...items )
2357
2358 // 22.1.2 Properties of the Array Constructor
2359
2360 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2361 define(
2362 Array, 'from',
2363 function from(items) {
2364 var mapfn = arguments[1];
2365 var thisArg = arguments[2];
2366
2367 var c = strict(this);
2368 if (mapfn === undefined) {
2369 var mapping = false;
2370 } else {
2371 if (!IsCallable(mapfn)) throw TypeError();
2372 var t = thisArg;
2373 mapping = true;
2374 }
2375 var usingIterator = GetMethod(items, $$iterator);
2376 if (usingIterator !== undefined) {
2377 if (IsConstructor(c)) {
2378 var a = new c();
2379 } else {
2380 a = new Array(0);
2381 }
2382 var iterator = GetIterator(items, usingIterator);
2383 var k = 0;
2384 while (true) {
2385 var next = IteratorStep(iterator);
2386 if (next === false) {
2387 a.length = k;
2388 return a;
2389 }
2390 var nextValue = IteratorValue(next);
2391 if (mapping)
2392 var mappedValue = mapfn.call(t, nextValue);
2393 else
2394 mappedValue = nextValue;
2395 a[k] = mappedValue;
2396 k += 1;
2397 }
2398 }
2399 var arrayLike = ToObject(items);
2400 var lenValue = arrayLike.length;
2401 var len = ToLength(lenValue);
2402 if (IsConstructor(c)) {
2403 a = new c(len);
2404 } else {
2405 a = new Array(len);
2406 }
2407 k = 0;
2408 while (k < len) {
2409 var kValue = arrayLike[k];
2410 if (mapping)
2411 mappedValue = mapfn.call(t, kValue, k);
2412 else
2413 mappedValue = kValue;
2414 a[k] = mappedValue;
2415 k += 1;
2416 }
2417 a.length = len;
2418 return a;
2419 });
2420
2421 // 22.1.2.2 Array.isArray ( arg )
2422
2423 // 22.1.2.3 Array.of ( ...items )
2424 define(
2425 Array, 'of',
2426 function of() {
2427 var items = arguments;
2428
2429 var lenValue = items.length;
2430 var len = ToUint32(lenValue);
2431 var c = strict(this), a;
2432 if (IsConstructor(c)) {
2433 a = new c(len);
2434 a = ToObject(a);
2435 } else {
2436 a = new Array(len);
2437 }
2438 var k = 0;
2439 while (k < len) {
2440 a[k] = items[k];
2441 k += 1;
2442 }
2443 a.length = len;
2444 return a;
2445 });
2446
2447 // 22.1.2.4 Array.prototype
2448 // 22.1.2.5 get Array [ @@species ]
2449 // 22.1.3 Properties of the Array Prototype Object
2450 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2451 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2452 // 22.1.3.2 Array.prototype.constructor
2453 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2454 define(
2455 Array.prototype, 'copyWithin',
2456 function copyWithin(target, start/*, end*/) {
2457 var end = arguments[2];
2458
2459 var o = ToObject(this);
2460 var lenVal = o.length;
2461 var len = ToLength(lenVal);
2462 len = max(len, 0);
2463 var relativeTarget = ToInteger(target);
2464 var to;
2465 if (relativeTarget < 0)
2466 to = max(len + relativeTarget, 0);
2467 else
2468 to = min(relativeTarget, len);
2469 var relativeStart = ToInteger(start);
2470 var from;
2471 if (relativeStart < 0)
2472 from = max(len + relativeStart, 0);
2473 else
2474 from = min(relativeStart, len);
2475 var relativeEnd;
2476 if (end === undefined)
2477 relativeEnd = len;
2478 else
2479 relativeEnd = ToInteger(end);
2480 var final;
2481 if (relativeEnd < 0)
2482 final = max(len + relativeEnd, 0);
2483 else
2484 final = min(relativeEnd, len);
2485 var count = min(final - from, len - to);
2486 var direction;
2487 if (from < to && to < from + count) {
2488 direction = -1;
2489 from = from + count - 1;
2490 to = to + count - 1;
2491 } else {
2492 direction = 1;
2493 }
2494 while (count > 0) {
2495 var fromKey = String(from);
2496 var toKey = String(to);
2497 var fromPresent = HasProperty(o, fromKey);
2498 if (fromPresent) {
2499 var fromVal = o[fromKey];
2500 o[toKey] = fromVal;
2501 } else {
2502 delete o[toKey];
2503 }
2504 from = from + direction;
2505 to = to + direction;
2506 count = count - 1;
2507 }
2508 return o;
2509 });
2510
2511 // 22.1.3.4 Array.prototype.entries ( )
2512 var nativeArrayIteratorMethods =
2513 ('entries' in Array.prototype && 'next' in [].entries());
2514
2515 define(
2516 Array.prototype, 'entries',
2517 function entries() {
2518 return CreateArrayIterator(this, 'key+value');
2519 }, !nativeArrayIteratorMethods);
2520
2521 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2522
2523 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2524 define(
2525 Array.prototype, 'fill',
2526 function fill(value/*, start, end*/) {
2527 var start = arguments[1],
2528 end = arguments[2];
2529
2530 var o = ToObject(this);
2531 var lenVal = o.length;
2532 var len = ToLength(lenVal);
2533 len = max(len, 0);
2534 var relativeStart = ToInteger(start);
2535 var k;
2536 if (relativeStart < 0)
2537 k = max((len + relativeStart), 0);
2538 else
2539 k = min(relativeStart, len);
2540 var relativeEnd;
2541 if (end === undefined)
2542 relativeEnd = len;
2543 else
2544 relativeEnd = ToInteger(end);
2545 var final;
2546 if (relativeEnd < 0)
2547 final = max((len + relativeEnd), 0);
2548 else
2549 final = min(relativeEnd, len);
2550 while (k < final) {
2551 var pk = String(k);
2552 o[pk] = value;
2553 k += 1;
2554 }
2555 return o;
2556 });
2557
2558 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2559
2560 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2561 define(
2562 Array.prototype, 'find',
2563 function find(predicate) {
2564 var o = ToObject(this);
2565 var lenValue = o.length;
2566 var len = ToInteger(lenValue);
2567 if (!IsCallable(predicate)) throw TypeError();
2568 var t = arguments.length > 1 ? arguments[1] : undefined;
2569 var k = 0;
2570 while (k < len) {
2571 var pk = String(k);
2572 var kPresent = HasProperty(o, pk);
2573 if (kPresent) {
2574 var kValue = o[pk];
2575 var testResult = predicate.call(t, kValue, k, o);
2576 if (Boolean(testResult)) {
2577 return kValue;
2578 }
2579 }
2580 ++k;
2581 }
2582 return undefined;
2583 });
2584
2585 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2586 define(
2587 Array.prototype, 'findIndex',
2588 function findIndex(predicate) {
2589 var o = ToObject(this);
2590 var lenValue = o.length;
2591 var len = ToLength(lenValue);
2592 if (!IsCallable(predicate)) throw TypeError();
2593 var t = arguments.length > 1 ? arguments[1] : undefined;
2594 var k = 0;
2595 while (k < len) {
2596 var pk = String(k);
2597 var kPresent = HasProperty(o, pk);
2598 if (kPresent) {
2599 var kValue = o[pk];
2600 var testResult = predicate.call(t, kValue, k, o);
2601 if (Boolean(testResult)) {
2602 return k;
2603 }
2604 }
2605 ++k;
2606 }
2607 return -1;
2608 });
2609
2610 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2611 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2612 // 22.1.3.12 Array.prototype.join (separator)
2613
2614 // 22.1.3.13 Array.prototype.keys ( )
2615 define(
2616 Array.prototype, 'keys',
2617 function keys() {
2618 return CreateArrayIterator(this, 'key');
2619 }, !nativeArrayIteratorMethods);
2620
2621 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2622 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2623 // 22.1.3.16 Array.prototype.pop ( )
2624 // 22.1.3.17 Array.prototype.push ( ...items )
2625 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2626 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2627 // 22.1.3.20 Array.prototype.reverse ( )
2628 // 22.1.3.21 Array.prototype.shift ( )
2629 // 22.1.3.22 Array.prototype.slice (start, end)
2630 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2631 // 22.1.3.24 Array.prototype.sort (comparefn)
2632 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2633 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2634 // 22.1.3.27 Array.prototype.toString ( )
2635 // 22.1.3.28 Array.prototype.unshift ( ...items )
2636
2637 // 22.1.3.29 Array.prototype.values ( )
2638 define(
2639 Array.prototype, 'values',
2640 function values() {
2641 return CreateArrayIterator(this, 'value');
2642 }, !nativeArrayIteratorMethods);
2643
2644 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2645 define(
2646 Array.prototype, $$iterator,
2647 Array.prototype.values
2648 );
2649
2650 // 22.1.3.31 Array.prototype [ @@unscopables ]
2651 // 22.1.4 Properties of Array Instances
2652 // 22.1.4.1 length
2653
2654 // 22.1.5 Array Iterator Objects
2655 function ArrayIterator() {}
2656
2657 // 22.1.5.1 CreateArrayIterator Abstract Operation
2658 function CreateArrayIterator(array, kind) {
2659 var o = ToObject(array);
2660 var iterator = new ArrayIterator;
2661 set_internal(iterator, '[[IteratedObject]]', o);
2662 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2663 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2664 return iterator;
2665 }
2666
2667 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2668 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2669 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2670
2671 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2672 define(
2673 $ArrayIteratorPrototype$, 'next',
2674 function next() {
2675 var o = strict(this);
2676 if (Type(o) !== 'object') throw TypeError();
2677 var a = o['[[IteratedObject]]'],
2678 index = o['[[ArrayIteratorNextIndex]]'],
2679 itemKind = o['[[ArrayIterationKind]]'],
2680 lenValue = a.length,
2681 len = ToUint32(lenValue),
2682 elementKey,
2683 elementValue;
2684 if (itemKind.indexOf('sparse') !== -1) {
2685 var found = false;
2686 while (!found && index < len) {
2687 elementKey = String(index);
2688 found = HasProperty(a, elementKey);
2689 if (!found) {
2690 index += 1;
2691 }
2692 }
2693 }
2694 if (index >= len) {
2695 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2696 return CreateIterResultObject(undefined, true);
2697 }
2698 elementKey = index;
2699 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2700 if (itemKind.indexOf('value') !== -1)
2701 elementValue = a[elementKey];
2702 if (itemKind.indexOf('key+value') !== -1)
2703 return CreateIterResultObject([elementKey, elementValue], false);
2704 if (itemKind.indexOf('key') !== -1)
2705 return CreateIterResultObject(elementKey, false);
2706 if (itemKind === 'value')
2707 return CreateIterResultObject(elementValue, false);
2708 throw Error('Internal error');
2709 });
2710
2711 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2712 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2713
2714 // 22.1.5.3 Properties of Array Iterator Instances
2715
2716
2717 // ---------------------------------------
2718 // 22.2 TypedArray Objects
2719 // ---------------------------------------
2720
2721 // See typedarray.js for TypedArray polyfill
2722
2723 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2724 'Int16Array', 'Uint16Array',
2725 'Int32Array', 'Uint32Array',
2726 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2727 if (!($TypedArrayName$ in global))
2728 return;
2729 var $TypedArray$ = global[$TypedArrayName$];
2730
2731 // 22.2.1 The %TypedArray% Intrinsic Object
2732 // 22.2.1.1 %TypedArray% ( length )
2733 // 22.2.1.2 %TypedArray% ( typedArray )
2734 // 22.2.1.3 %TypedArray% ( object )
2735 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2736 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2737 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2738
2739 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2740 define(
2741 $TypedArray$, 'from',
2742 function from(source) {
2743 var mapfn = arguments[1];
2744 var thisArg = arguments[2];
2745
2746 var c = strict(this);
2747 if (!IsConstructor(c)) throw TypeError();
2748 if (mapfn === undefined) {
2749 var mapping = false;
2750 } else {
2751 if (IsCallable(mapfn)) throw TypeError();
2752 var t = thisArg;
2753 mapping = true;
2754 }
2755 var usingIterator = GetMethod(source, $$iterator);
2756 if (usingIterator !== undefined) {
2757 var iterator = GetIterator(source, usingIterator);
2758 var values = [];
2759 var next = true;
2760 while (next !== false) {
2761 next = IteratorStep(iterator);
2762 if (next !== false) {
2763 var nextValue = IteratorValue(next);
2764 values.push(nextValue);
2765 }
2766 }
2767 var len = values.length;
2768 var newObj = new c(len);
2769 var k = 0;
2770 while (k < len) {
2771 var kValue = values.shift();
2772 if (mapping) {
2773 var mappedValue = mapfn.call(t, kValue);
2774 } else {
2775 mappedValue = kValue;
2776 }
2777 newObj[k] = mappedValue;
2778 ++k;
2779 }
2780 console.assert(values.length === 0);
2781 return newObj;
2782 }
2783 var arrayLike = ToObject(source);
2784 var lenValue = arrayLike.length;
2785 len = ToLength(lenValue);
2786 newObj = new c(len);
2787 k = 0;
2788 while (k < len) {
2789 kValue = arrayLike[k];
2790 if (mapping) {
2791 mappedValue = mapfn.call(t, kValue, k);
2792 } else {
2793 mappedValue = kValue;
2794 }
2795 newObj[k] = mappedValue;
2796 ++k;
2797 }
2798 return newObj;
2799 });
2800
2801 // 22.2.2.2 %TypedArray%.of ( ...items )
2802 define(
2803 $TypedArray$, 'of',
2804 function of() {
2805 var items = arguments;
2806
2807 var len = items.length;
2808 var c = strict(this);
2809 var newObj = new c(len);
2810 var k = 0;
2811 while (k < len) {
2812 newObj[k] = items[k];
2813 ++k;
2814 }
2815 return newObj;
2816 });
2817
2818 // 22.2.2.3 %TypedArray%.prototype
2819 // 22.2.2.4 get %TypedArray% [ @@species ]
2820 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2821 // 22.2.3.1 get %TypedArray%.prototype.buffer
2822 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2823 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2824 // 22.2.3.4 %TypedArray%.prototype.constructor
2825
2826 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2827 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2828
2829 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2830 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2831
2832 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2833 define($TypedArray$.prototype, 'every', Array.prototype.every);
2834
2835 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2836 define(
2837 $TypedArray$.prototype, 'fill',
2838 //Array.prototype.fill // Doesn't work in Safari 7
2839 function fill(value/*, start, end*/) {
2840 var start = arguments[1],
2841 end = arguments[2];
2842
2843 var o = ToObject(this);
2844 var lenVal = o.length;
2845 var len = ToLength(lenVal);
2846 len = max(len, 0);
2847 var relativeStart = ToInteger(start);
2848 var k;
2849 if (relativeStart < 0) k = max((len + relativeStart), 0);
2850 else k = min(relativeStart, len);
2851 var relativeEnd;
2852 if (end === undefined) relativeEnd = len;
2853 else relativeEnd = ToInteger(end);
2854 var final;
2855 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2856 else final = min(relativeEnd, len);
2857 while (k < final) {
2858 var pk = String(k);
2859 o[pk] = value;
2860 k += 1;
2861 }
2862 return o;
2863 });
2864
2865 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2866 define(
2867 $TypedArray$.prototype, 'filter',
2868 function filter(callbackfn) {
2869 var thisArg = arguments[1];
2870
2871 var o = ToObject(this);
2872 var lenVal = o.length;
2873 var len = ToLength(lenVal);
2874 if (!IsCallable(callbackfn)) throw TypeError();
2875 var t = thisArg;
2876 var c = o.constructor;
2877 var kept = [];
2878 var k = 0;
2879 var captured = 0;
2880 while (k < len) {
2881 var kValue = o[k];
2882 var selected = callbackfn.call(t, kValue, k, o);
2883 if (selected) {
2884 kept.push(kValue);
2885 ++captured;
2886 }
2887 ++k;
2888 }
2889 var a = new c(captured);
2890 var n = 0;
2891 for (var i = 0; i < kept.length; ++i) {
2892 var e = kept[i];
2893 a[n] = e;
2894 ++n;
2895 }
2896 return a;
2897 });
2898
2899 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2900 define($TypedArray$.prototype, 'find', Array.prototype.find);
2901
2902 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2903 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2904
2905 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2906 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2907
2908 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2909 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2910
2911 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2912 define($TypedArray$.prototype, 'join', Array.prototype.join);
2913
2914 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2915 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2916
2917 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2918 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2919
2920 // 22.2.3.17 get %TypedArray%.prototype.length
2921
2922 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2923 define(
2924 $TypedArray$.prototype, 'map',
2925 function map(callbackfn) {
2926 var thisArg = arguments[1];
2927
2928 var o = ToObject(this);
2929 var lenValue = o.length;
2930 var len = ToLength(lenValue);
2931 if (!IsCallable(callbackfn)) throw TypeError();
2932 var t = thisArg;
2933 var a = undefined;
2934 var c = o.constructor;
2935 if (IsConstructor(c))
2936 a = new c(len);
2937 if (a === undefined)
2938 a = new Array(len);
2939 var k = 0;
2940 while (k < len) {
2941 var kPresent = HasProperty(o, k);
2942 if (kPresent) {
2943 var kValue = o[k];
2944 var mappedValue = callbackfn.call(t, kValue, k, o);
2945 a[k] = mappedValue;
2946 }
2947 ++k;
2948 }
2949 return a;
2950 });
2951
2952 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2953 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2954
2955 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2956 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2957
2958 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2959 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2960
2961 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2962 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2963 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2964
2965 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2966 define(
2967 $TypedArray$.prototype, 'slice',
2968 function slice(start, end) {
2969 var o = ToObject(this);
2970 var lenVal = o.length;
2971 var len = ToLength(lenVal);
2972 var relativeStart = ToInteger(start);
2973 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2974 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2975 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2976 var count = final - k;
2977 var c = o.constructor;
2978 if (IsConstructor(c)) {
2979 var a = new c(count);
2980 } else {
2981 throw TypeError();
2982 }
2983 var n = 0;
2984 while (k < final) {
2985 var kValue = o[k];
2986 a[n] = kValue;
2987 ++k;
2988 ++n;
2989 }
2990 return a;
2991 });
2992
2993 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2994 define($TypedArray$.prototype, 'some', Array.prototype.some);
2995
2996 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2997 define(
2998 $TypedArray$.prototype, 'sort',
2999 function sort() {
3000 var comparefn = arguments[0];
3001
3002 function sortCompare(x, y) {
3003 console.assert(Type(x) === 'number' && Type(y) === 'number');
3004 if (x !== x && y !== y) return +0;
3005 if (x !== x) return 1;
3006 if (y !== y) return -1;
3007 if (comparefn !== undefined) {
3008 return comparefn(x, y);
3009 }
3010 if (x < y) return -1;
3011 if (x > y) return 1;
3012 return +0;
3013 }
3014 return Array.prototype.sort.call(this, sortCompare);
3015 });
3016
3017 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3018 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3019 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3020
3021 // 22.2.3.29 %TypedArray%.prototype.values ( )
3022 define($TypedArray$.prototype, 'values', Array.prototype.values);
3023
3024 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3025 define(
3026 $TypedArray$.prototype, $$iterator,
3027 $TypedArray$.prototype.values
3028 );
3029
3030 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3031 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3032
3033 // 22.2.4 The TypedArray Constructors
3034 // 22.2.4.1TypedArray( ... argumentsList)
3035 // 22.2.5 Properties of the TypedArray Constructors
3036 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3037 // 22.2.5.2 TypedArray.prototype
3038 // 22.2.6 Properties of TypedArray Prototype Objects
3039 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3040 // 22.2.6.2 TypedArray.prototype.constructor
3041 // 22.2.7 Properties of TypedArray Instances
3042 });
3043
3044 // ---------------------------------------
3045 // 23 Keyed Collection
3046 // ---------------------------------------
3047
3048 // ---------------------------------------
3049 // 23.1 Map Objects
3050 // ---------------------------------------
3051
3052 (function() {
3053 // 23.1.1 The Map Constructor
3054
3055 // 23.1.1.1 Map ( [ iterable ] )
3056 /** @constructor */
3057 function Map(/*iterable*/) {
3058 var map = strict(this);
3059 var iterable = arguments[0];
3060
3061 if (Type(map) !== 'object') throw TypeError();
3062 if ('[[MapData]]' in map) throw TypeError();
3063
3064 if (iterable !== undefined) {
3065 var adder = map['set'];
3066 if (!IsCallable(adder)) throw TypeError();
3067 var iter = GetIterator(ToObject(iterable));
3068 }
3069 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3070 if (iter === undefined) return map;
3071 while (true) {
3072 var next = IteratorStep(iter);
3073 if (next === false)
3074 return map;
3075 var nextItem = IteratorValue(next);
3076 if (Type(nextItem) !== 'object') throw TypeError();
3077 var k = nextItem[0];
3078 var v = nextItem[1];
3079 adder.call(map, k, v);
3080 }
3081
3082 return map;
3083 }
3084
3085 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3086 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3087 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3088 (new global.Map([['a', 1]]).size !== 1))
3089 global.Map = Map;
3090
3091
3092 function MapDataIndexOf(mapData, key) {
3093 var i;
3094 if (key === key) return mapData.keys.indexOf(key);
3095 // Slow case for NaN
3096 for (i = 0; i < mapData.keys.length; i += 1)
3097 if (SameValueZero(mapData.keys[i], key)) return i;
3098 return -1;
3099 }
3100
3101 // 23.1.1.2 new Map ( ... argumentsList )
3102 // 23.1.2 Properties of the Map Constructor
3103 // 23.1.2.1 Map.prototype
3104 var $MapPrototype$ = {};
3105 Map.prototype = $MapPrototype$;
3106
3107 // 23.1.2.2 get Map [ @@species ]
3108
3109 // 23.1.3 Properties of the Map Prototype Object
3110 // 23.1.3.1 Map.prototype.clear ()
3111 define(
3112 Map.prototype, 'clear',
3113 function clear() {
3114 var m = strict(this);
3115 if (Type(m) !== 'object') throw TypeError();
3116 if (!('[[MapData]]' in m)) throw TypeError();
3117 if (m['[[MapData]]'] === undefined) throw TypeError();
3118 var entries = m['[[MapData]]'];
3119 entries.keys.length = 0;
3120 entries.values.length = 0;
3121 return undefined;
3122 });
3123
3124 // 23.1.3.2 Map.prototype.constructor
3125
3126 // 23.1.3.3 Map.prototype.delete ( key )
3127 define(
3128 Map.prototype, 'delete',
3129 function delete_(key) {
3130 var m = strict(this);
3131 if (Type(m) !== 'object') throw TypeError();
3132 if (!('[[MapData]]' in m)) throw TypeError();
3133 if (m['[[MapData]]'] === undefined) throw TypeError();
3134 var entries = m['[[MapData]]'];
3135 var i = MapDataIndexOf(entries, key);
3136 if (i < 0) return false;
3137 entries.keys[i] = empty;
3138 entries.values[i] = empty;
3139 return true;
3140 });
3141
3142 // 23.1.3.4 Map.prototype.entries ( )
3143 define(
3144 Map.prototype, 'entries',
3145 function entries() {
3146 var m = strict(this);
3147 if (Type(m) !== 'object') throw TypeError();
3148 return CreateMapIterator(m, 'key+value');
3149 });
3150
3151 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3152 define(
3153 Map.prototype, 'forEach',
3154 function forEach(callbackfn /*, thisArg*/) {
3155 var thisArg = arguments[1];
3156
3157 var m = strict(this);
3158 if (Type(m) !== 'object') throw TypeError();
3159 if (!('[[MapData]]' in m)) throw TypeError();
3160 if (m['[[MapData]]'] === undefined) throw TypeError();
3161 var entries = m['[[MapData]]'];
3162
3163 if (!IsCallable(callbackfn)) {
3164 throw TypeError('First argument to forEach is not callable.');
3165 }
3166 for (var i = 0; i < entries.keys.length; ++i) {
3167 if (entries.keys[i] !== empty) {
3168 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3169 }
3170 }
3171 return undefined;
3172 });
3173
3174 // 23.1.3.6 Map.prototype.get ( key )
3175 define(
3176 Map.prototype, 'get',
3177 function get(key) {
3178 var m = strict(this);
3179 if (Type(m) !== 'object') throw TypeError();
3180 if (!('[[MapData]]' in m)) throw TypeError();
3181 if (m['[[MapData]]'] === undefined) throw TypeError();
3182 var entries = m['[[MapData]]'];
3183 var i = MapDataIndexOf(entries, key);
3184 if (i >= 0) return entries.values[i];
3185 return undefined;
3186 });
3187
3188 // 23.1.3.7 Map.prototype.has ( key )
3189 define(
3190 Map.prototype, 'has',
3191 function has(key) {
3192 var m = strict(this);
3193 if (Type(m) !== 'object') throw TypeError();
3194 if (!('[[MapData]]' in m)) throw TypeError();
3195 if (m['[[MapData]]'] === undefined) throw TypeError();
3196 var entries = m['[[MapData]]'];
3197 if (MapDataIndexOf(entries, key) >= 0) return true;
3198 return false;
3199 });
3200
3201 // 23.1.3.8 Map.prototype.keys ( )
3202 define(
3203 Map.prototype, 'keys',
3204 function keys() {
3205 var m = strict(this);
3206 if (Type(m) !== 'object') throw TypeError();
3207 return CreateMapIterator(m, 'key');
3208 });
3209
3210 // 23.1.3.9 Map.prototype.set ( key , value )
3211 define(
3212 Map.prototype, 'set',
3213 function set(key, value) {
3214 var m = strict(this);
3215 if (Type(m) !== 'object') throw TypeError();
3216 if (!('[[MapData]]' in m)) throw TypeError();
3217 if (m['[[MapData]]'] === undefined) throw TypeError();
3218 var entries = m['[[MapData]]'];
3219 var i = MapDataIndexOf(entries, key);
3220 if (i < 0) i = entries.keys.length;
3221 if (SameValue(key, -0)) key = 0;
3222 entries.keys[i] = key;
3223 entries.values[i] = value;
3224 return m;
3225 });
3226
3227 // 23.1.3.10 get Map.prototype.size
3228 Object.defineProperty(
3229 Map.prototype, 'size', {
3230 get: function() {
3231 var m = strict(this);
3232 if (Type(m) !== 'object') throw TypeError();
3233 if (!('[[MapData]]' in m)) throw TypeError();
3234 if (m['[[MapData]]'] === undefined) throw TypeError();
3235 var entries = m['[[MapData]]'];
3236 var count = 0;
3237 for (var i = 0; i < entries.keys.length; ++i) {
3238 if (entries.keys[i] !== empty)
3239 count = count + 1;
3240 }
3241 return count;
3242 }
3243 });
3244
3245 // 23.1.3.11 Map.prototype.values ( )
3246 define(
3247 Map.prototype, 'values',
3248 function values() {
3249 var m = strict(this);
3250 if (Type(m) !== 'object') throw TypeError();
3251 return CreateMapIterator(m, 'value');
3252 });
3253
3254 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3255 define(
3256 Map.prototype, $$iterator,
3257 function() {
3258 var m = strict(this);
3259 if (Type(m) !== 'object') throw TypeError();
3260 return CreateMapIterator(m, 'key+value');
3261 });
3262
3263 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3264 define(global.Map.prototype, $$toStringTag, 'Map');
3265
3266 // 23.1.4 Properties of Map Instances
3267 // 23.1.5 Map Iterator Objects
3268
3269 /** @constructor */
3270 function MapIterator() {}
3271
3272 // 23.1.5.1 CreateMapIterator Abstract Operation
3273 function CreateMapIterator(map, kind) {
3274 if (Type(map) !== 'object') throw TypeError();
3275 if (!('[[MapData]]' in map)) throw TypeError();
3276 if (map['[[MapData]]'] === undefined) throw TypeError();
3277 var iterator = new MapIterator;
3278 set_internal(iterator, '[[Map]]', map);
3279 set_internal(iterator, '[[MapNextIndex]]', 0);
3280 set_internal(iterator, '[[MapIterationKind]]', kind);
3281 return iterator;
3282 }
3283
3284 // 23.1.5.2 The %MapIteratorPrototype% Object
3285 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3286 MapIterator.prototype = $MapIteratorPrototype$;
3287
3288 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3289 define(
3290 $MapIteratorPrototype$, 'next',
3291 function next() {
3292 var o = strict(this);
3293 if (Type(o) !== 'object') throw TypeError();
3294 var m = o['[[Map]]'],
3295 index = o['[[MapNextIndex]]'],
3296 itemKind = o['[[MapIterationKind]]'],
3297 entries = m['[[MapData]]'];
3298 while (index < entries.keys.length) {
3299 var e = {key: entries.keys[index], value: entries.values[index]};
3300 index = index += 1;
3301 set_internal(o, '[[MapNextIndex]]', index);
3302 if (e.key !== empty) {
3303 if (itemKind === 'key') {
3304 return CreateIterResultObject(e.key, false);
3305 } else if (itemKind === 'value') {
3306 return CreateIterResultObject(e.value, false);
3307 } else {
3308 return CreateIterResultObject([e.key, e.value], false);
3309 }
3310 }
3311 }
3312 return CreateIterResultObject(undefined, true);
3313 });
3314
3315 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3316 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3317
3318 // 23.1.5.3 Properties of Map Iterator Instances
3319 }());
3320
3321 // ---------------------------------------
3322 // 23.2 Set Objects
3323 // ---------------------------------------
3324
3325 (function() {
3326 // 23.2.1 The Set Constructor
3327 // 23.2.1.1 Set ( [ iterable ] )
3328
3329 /** @constructor */
3330 function Set(/*iterable*/) {
3331 var set = strict(this);
3332 var iterable = arguments[0];
3333
3334 if (Type(set) !== 'object') throw TypeError();
3335 if ('[[SetData]]' in set) throw TypeError();
3336
3337 if (iterable !== undefined) {
3338 var adder = set['add'];
3339 if (!IsCallable(adder)) throw TypeError();
3340 var iter = GetIterator(ToObject(iterable));
3341 }
3342 set_internal(set, '[[SetData]]', []);
3343 if (iter === undefined) return set;
3344 while (true) {
3345 var next = IteratorStep(iter);
3346 if (next === false)
3347 return set;
3348 var nextValue = IteratorValue(next);
3349 adder.call(set, nextValue);
3350 }
3351
3352 return set;
3353 }
3354
3355 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3356 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3357 (new global.Set([1]).size !== 1))
3358 global.Set = Set;
3359
3360 function SetDataIndexOf(setData, key) {
3361 var i;
3362 if (key === key)
3363 return setData.indexOf(key);
3364 // Slow case for NaN
3365 for (i = 0; i < setData.length; i += 1)
3366 if (SameValueZero(setData[i], key)) return i;
3367 return -1;
3368 }
3369
3370 // 23.2.1.2 new Set ( ...argumentsList )
3371 // 23.2.2 Properties of the Set Constructor
3372
3373 // 23.2.2.1 Set.prototype
3374 var $SetPrototype$ = {};
3375 Set.prototype = $SetPrototype$;
3376
3377 // 23.2.2.2 get Set [ @@species ]
3378 // 23.2.3 Properties of the Set Prototype Object
3379
3380 // 23.2.3.1 Set.prototype.add (value )
3381 define(
3382 Set.prototype, 'add',
3383 function add(value) {
3384 var s = strict(this);
3385 if (Type(s) !== 'object') throw TypeError();
3386 if (!('[[SetData]]' in s)) throw TypeError();
3387 if (s['[[SetData]]'] === undefined) throw TypeError();
3388 if (SameValue(value, -0)) value = 0;
3389 var entries = s['[[SetData]]'];
3390 var i = SetDataIndexOf(entries, value);
3391 if (i < 0) i = s['[[SetData]]'].length;
3392 s['[[SetData]]'][i] = value;
3393
3394 return s;
3395 });
3396
3397 // 23.2.3.2 Set.prototype.clear ()
3398 define(
3399 Set.prototype, 'clear',
3400 function clear() {
3401 var s = strict(this);
3402 if (Type(s) !== 'object') throw TypeError();
3403 if (!('[[SetData]]' in s)) throw TypeError();
3404 if (s['[[SetData]]'] === undefined) throw TypeError();
3405 var entries = s['[[SetData]]'];
3406 entries.length = 0;
3407 return undefined;
3408 });
3409
3410 // 23.2.3.3 Set.prototype.constructor
3411 // 23.2.3.4 Set.prototype.delete ( value )
3412 define(
3413 Set.prototype, 'delete',
3414 function delete_(value) {
3415 var s = strict(this);
3416 if (Type(s) !== 'object') throw TypeError();
3417 if (!('[[SetData]]' in s)) throw TypeError();
3418 if (s['[[SetData]]'] === undefined) throw TypeError();
3419 var entries = s['[[SetData]]'];
3420 var i = SetDataIndexOf(entries, value);
3421 if (i < 0) return false;
3422 entries[i] = empty;
3423 return true;
3424 });
3425
3426 // 23.2.3.5 Set.prototype.entries ( )
3427 define(
3428 Set.prototype, 'entries',
3429 function entries() {
3430 var s = strict(this);
3431 if (Type(s) !== 'object') throw TypeError();
3432 return CreateSetIterator(s, 'key+value');
3433 });
3434
3435 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3436 define(
3437 Set.prototype, 'forEach',
3438 function forEach(callbackfn/*, thisArg*/) {
3439 var thisArg = arguments[1];
3440
3441 var s = strict(this);
3442 if (Type(s) !== 'object') throw TypeError();
3443 if (!('[[SetData]]' in s)) throw TypeError();
3444 if (s['[[SetData]]'] === undefined) throw TypeError();
3445 var entries = s['[[SetData]]'];
3446
3447 if (!IsCallable(callbackfn)) {
3448 throw TypeError('First argument to forEach is not callable.');
3449 }
3450 for (var i = 0; i < entries.length; ++i) {
3451 if (entries[i] !== empty) {
3452 callbackfn.call(thisArg, entries[i], entries[i], s);
3453 }
3454 }
3455 });
3456
3457 // 23.2.3.7 Set.prototype.has ( value )
3458 define(
3459 Set.prototype, 'has',
3460 function has(key) {
3461 var s = strict(this);
3462 if (Type(s) !== 'object') throw TypeError();
3463 if (!('[[SetData]]' in s)) throw TypeError();
3464 if (s['[[SetData]]'] === undefined) throw TypeError();
3465 var entries = s['[[SetData]]'];
3466 return SetDataIndexOf(entries, key) !== -1;
3467 });
3468
3469 // 23.2.3.8 Set.prototype.keys ( )
3470 // See Set.prototype.values
3471
3472 // 23.2.3.9 get Set.prototype.size
3473 Object.defineProperty(
3474 Set.prototype, 'size', {
3475 get: function() {
3476 var s = strict(this);
3477 if (Type(s) !== 'object') throw TypeError();
3478 if (!('[[SetData]]' in s)) throw TypeError();
3479 if (s['[[SetData]]'] === undefined) throw TypeError();
3480 var entries = s['[[SetData]]'];
3481 var count = 0;
3482 for (var i = 0; i < entries.length; ++i) {
3483 if (entries[i] !== empty)
3484 count = count + 1;
3485 }
3486 return count;
3487 }
3488 });
3489
3490 // 23.2.3.10 Set.prototype.values ( )
3491 define(
3492 Set.prototype, 'values',
3493 function values() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 return CreateSetIterator(s, 'value');
3497 });
3498 // NOTE: function name is still 'values':
3499 Set.prototype.keys = Set.prototype.values;
3500
3501 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3502 define(
3503 Set.prototype, $$iterator,
3504 function() {
3505 var s = strict(this);
3506 if (Type(s) !== 'object') throw TypeError();
3507 return CreateSetIterator(s);
3508 });
3509
3510 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3511 define(global.Set.prototype, $$toStringTag, 'Set');
3512
3513 // 23.2.4 Properties of Set Instances
3514 // 23.2.5 Set Iterator Objects
3515 /** @constructor */
3516 function SetIterator() {}
3517
3518 // 23.2.5.1 CreateSetIterator Abstract Operation
3519 function CreateSetIterator(set, kind) {
3520 if (Type(set) !== 'object') throw TypeError();
3521 if (!('[[SetData]]' in set)) throw TypeError();
3522 if (set['[[SetData]]'] === undefined) throw TypeError();
3523 var iterator = new SetIterator;
3524 set_internal(iterator, '[[IteratedSet]]', set);
3525 set_internal(iterator, '[[SetNextIndex]]', 0);
3526 set_internal(iterator, '[[SetIterationKind]]', kind);
3527 return iterator;
3528 }
3529
3530 // 23.2.5.2 The %SetIteratorPrototype% Object
3531 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3532 SetIterator.prototype = $SetIteratorPrototype$;
3533
3534 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3535 define(
3536 $SetIteratorPrototype$, 'next',
3537 function next() {
3538 var o = strict(this);
3539 if (Type(o) !== 'object') throw TypeError();
3540 var s = o['[[IteratedSet]]'],
3541 index = o['[[SetNextIndex]]'],
3542 itemKind = o['[[SetIterationKind]]'],
3543 entries = s['[[SetData]]'];
3544 while (index < entries.length) {
3545 var e = entries[index];
3546 index = index += 1;
3547 set_internal(o, '[[SetNextIndex]]', index);
3548 if (e !== empty) {
3549 if (itemKind === 'key+value')
3550 return CreateIterResultObject([e, e], false);
3551 return CreateIterResultObject(e, false);
3552 }
3553 }
3554 return CreateIterResultObject(undefined, true);
3555 });
3556
3557 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3558 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3559
3560 // 23.2.5.3 Properties of Set Iterator Instances
3561
3562 }());
3563
3564 // ---------------------------------------
3565 // 23.3 WeakMap Objects
3566 // ---------------------------------------
3567
3568 (function() {
3569 // 23.3.1 The WeakMap Constructor
3570 // 23.3.1.1 WeakMap ( [ iterable ] )
3571 /** @constructor */
3572 function WeakMap(/*iterable*/) {
3573 var map = strict(this);
3574 var iterable = arguments[0];
3575
3576 if (Type(map) !== 'object') throw TypeError();
3577 if ('[[WeakMapData]]' in map) throw TypeError();
3578
3579 if (iterable !== undefined) {
3580 var adder = map['set'];
3581 if (!IsCallable(adder)) throw TypeError();
3582 var iter = GetIterator(ToObject(iterable));
3583 }
3584 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3585 if (iter === undefined) return map;
3586 while (true) {
3587 var next = IteratorStep(iter);
3588 if (next === false)
3589 return map;
3590 var nextValue = IteratorValue(next);
3591 if (Type(nextValue) !== 'object') throw TypeError();
3592 var k = nextValue[0];
3593 var v = nextValue[1];
3594 adder.call(map, k, v);
3595 }
3596
3597 return map;
3598 }
3599
3600 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3601 global.WeakMap = WeakMap;
3602
3603 // 23.3.2 Properties of the WeakMap Constructor
3604 // 23.3.2.1 WeakMap.prototype
3605 var $WeakMapPrototype$ = {};
3606 WeakMap.prototype = $WeakMapPrototype$;
3607
3608
3609
3610 // 23.3.2.2 WeakMap[ @@create ] ( )
3611 // 23.3.3 Properties of the WeakMap Prototype Object
3612
3613 // 23.3.3.1 WeakMap.prototype.constructor
3614
3615 // 23.3.3.2 WeakMap.prototype.delete ( key )
3616 define(
3617 WeakMap.prototype, 'delete',
3618 function delete_(key) {
3619 var M = strict(this);
3620 if (Type(M) !== 'object') throw TypeError();
3621 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3622 if (Type(key) !== 'object') throw TypeError('Expected object');
3623 return M['[[WeakMapData]]'].remove(key);
3624 });
3625
3626 // 23.3.3.3 WeakMap.prototype.get ( key )
3627 define(
3628 WeakMap.prototype, 'get',
3629 function get(key, defaultValue) {
3630 var M = strict(this);
3631 if (Type(M) !== 'object') throw TypeError();
3632 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3633 if (Type(key) !== 'object') throw TypeError('Expected object');
3634 return M['[[WeakMapData]]'].get(key, defaultValue);
3635 });
3636
3637 // 23.3.3.4 WeakMap.prototype.has ( key )
3638 define(
3639 WeakMap.prototype, 'has',
3640 function has(key) {
3641 var M = strict(this);
3642 if (Type(M) !== 'object') throw TypeError();
3643 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3644 if (Type(key) !== 'object') throw TypeError('Expected object');
3645 return M['[[WeakMapData]]'].has(key);
3646 });
3647
3648 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3649 define(
3650 WeakMap.prototype, 'set',
3651 function set(key, value) {
3652 var M = strict(this);
3653 if (Type(M) !== 'object') throw TypeError();
3654 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3655 if (Type(key) !== 'object') throw TypeError('Expected object');
3656 M['[[WeakMapData]]'].set(key, value);
3657 return M;
3658 });
3659
3660 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3661 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3662
3663 // 23.3.4 Properties of WeakMap Instances
3664
3665 // Polyfills for incomplete native implementations:
3666 (function() {
3667 var wm = new global.WeakMap();
3668 var orig = global.WeakMap.prototype.set;
3669 define(global.WeakMap.prototype, 'set', function set() {
3670 orig.apply(this, arguments);
3671 return this;
3672 }, wm.set({}, 0) !== wm);
3673 }());
3674 }());
3675
3676 // ---------------------------------------
3677 // 23.4 WeakSet Objects
3678 // ---------------------------------------
3679
3680 (function() {
3681 // 23.4.1 The WeakSet Constructor
3682 // 23.4.1.1 WeakSet ( [ iterable ] )
3683 /** @constructor */
3684 function WeakSet(/*iterable*/) {
3685 var set = strict(this);
3686 var iterable = arguments[0];
3687
3688 if (Type(set) !== 'object') throw TypeError();
3689 if ('[[WeakSetData]]' in set) throw TypeError();
3690
3691 if (iterable !== undefined) {
3692 var adder = set['add'];
3693 if (!IsCallable(adder)) throw TypeError();
3694 var iter = GetIterator(ToObject(iterable));
3695 }
3696 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3697 if (iter === undefined) return set;
3698 while (true) {
3699 var next = IteratorStep(iter);
3700 if (next === false)
3701 return set;
3702 var nextValue = IteratorValue(next);
3703 adder.call(set, nextValue);
3704 }
3705
3706 return set;
3707 }
3708
3709 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3710 global.WeakSet = WeakSet;
3711
3712 // 23.4.2 Properties of the WeakSet Constructor
3713 // 23.4.2.1 WeakSet.prototype
3714 var $WeakSetPrototype$ = {};
3715 WeakSet.prototype = $WeakSetPrototype$;
3716
3717 // 23.4.3 Properties of the WeakSet Prototype Object
3718 // 23.4.3.1 WeakSet.prototype.add (value )
3719 define(
3720 WeakSet.prototype, 'add',
3721 function add(value) {
3722 var S = strict(this);
3723 if (Type(S) !== 'object') throw TypeError();
3724 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3725 if (Type(value) !== 'object') throw TypeError('Expected object');
3726 S['[[WeakSetData]]'].set(value, true);
3727 return S;
3728 });
3729
3730 // 23.4.3.2 WeakSet.prototype.constructor
3731 // 23.4.3.3 WeakSet.prototype.delete ( value )
3732 define(
3733 WeakSet.prototype, 'delete',
3734 function delete_(value) {
3735 var S = strict(this);
3736 if (Type(S) !== 'object') throw TypeError();
3737 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3738 if (Type(value) !== 'object') throw TypeError('Expected object');
3739 return S['[[WeakSetData]]'].remove(value);
3740 });
3741
3742 // 23.4.3.4 WeakSet.prototype.has ( value )
3743 define(
3744 WeakSet.prototype, 'has',
3745 function has(key) {
3746 var S = strict(this);
3747 if (Type(S) !== 'object') throw TypeError();
3748 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3749 if (Type(key) !== 'object') throw TypeError('Expected object');
3750 return S['[[WeakSetData]]'].has(key);
3751 });
3752
3753 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3754 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3755
3756 // 23.4.4 Properties of WeakSet Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var ws = new global.WeakSet();
3761 var orig = global.WeakSet.prototype.add;
3762 define(global.WeakSet.prototype, 'add', function add() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, ws.add({}) !== ws);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 24 Structured Data
3771 // ---------------------------------------
3772
3773 // ---------------------------------------
3774 // 24.1 ArrayBuffer Objects
3775 // ---------------------------------------
3776
3777 // See typedarray.js for TypedArray polyfill
3778
3779 (function() {
3780 if (!('ArrayBuffer' in global))
3781 return;
3782
3783 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3784 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3785 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3786 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3787 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3788 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3789 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3790 // 24.1.2 The ArrayBuffer Constructor
3791 // 24.1.2.1 ArrayBuffer( length )
3792 // 24.1.3 Properties of the ArrayBuffer Constructor
3793
3794 // 24.1.3.1 ArrayBuffer.isView ( arg )
3795 define(
3796 ArrayBuffer, 'isView',
3797 function isView(arg) {
3798 if (Type(arg) !== 'object') return false;
3799 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3800 return false;
3801 });
3802
3803 // 24.1.3.2 ArrayBuffer.prototype
3804 // 24.1.3.3 get ArrayBuffer [ @@species ]
3805 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3806 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3807 // 24.1.4.2 ArrayBuffer.prototype.constructor
3808 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3809
3810 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3811 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3812
3813 // 24.1.5 Properties of the ArrayBuffer Instances
3814 }());
3815
3816 // ---------------------------------------
3817 // 24.2 DataView Objects
3818 // ---------------------------------------
3819
3820 // See typedarray.js for TypedArray polyfill
3821
3822 (function() {
3823 if (!('DataView' in global))
3824 return;
3825
3826 // 24.2.1 Abstract Operations For DataView Objects
3827 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3828 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3829 // 24.2.2 The DataView Constructor
3830 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3831 // 24.2.3 Properties of the DataView Constructor
3832 // 24.2.3.1 DataView.prototype
3833 // 24.2.4 Properties of the DataView Prototype Object
3834 // 24.2.4.1 get DataView.prototype.buffer
3835 // 24.2.4.2 get DataView.prototype.byteLength
3836 // 24.2.4.3 get DataView.prototype.byteOffset
3837 // 24.2.4.4 DataView.prototype.constructor
3838 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3841 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3842 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3843 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3844 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3845 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3846 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3848 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3849 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3850 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3851 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3852 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3853 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3854
3855 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3856 define(DataView.prototype, $$toStringTag, 'DataView');
3857
3858 // 24.2.5 Properties of DataView Instances
3859 }());
3860
3861 // ---------------------------------------
3862 // 24.3 The JSON Object
3863 // ---------------------------------------
3864
3865 // 24.3.1 JSON.parse ( text [ , reviver ] )
3866 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3867 // 24.3.3 JSON [ @@toStringTag ]
3868 define(JSON, $$toStringTag, 'JSON');
3869
3870 // ---------------------------------------
3871 // 25.1 Iteration
3872 // ---------------------------------------
3873
3874 // 25.1.1 Common Iteration Interfaces
3875 // 25.1.1.1 The Iterable Interface
3876 // 25.1.1.2 The Iterator Interface
3877 // 25.1.1.3 The IteratorResult Interface
3878
3879 // 25.1.2 The %IteratorPrototype% Object
3880 // Defined earlier, so other prototypes can reference it.
3881 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3882 define($IteratorPrototype$, $$iterator, function() {
3883 return this;
3884 });
3885
3886
3887 // ---------------------------------------
3888 // 25.4 Promise Objects
3889 // ---------------------------------------
3890
3891 (function() {
3892 // 25.4 Promise Objects
3893
3894 // 25.4.1 Promise Abstract Operations
3895
3896 // 25.4.1.1 PromiseCapability Records
3897 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3898
3899 function IfAbruptRejectPromise(value, capability) {
3900 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3901 return capability['[[Promise]]'];
3902 }
3903
3904 // 25.4.1.2 PromiseReaction Records
3905
3906 // 25.4.1.3 CreateResolvingFunctions ( promise )
3907
3908 function CreateResolvingFunctions(promise) {
3909 var alreadyResolved = {'[[value]]': false};
3910 var resolve = PromiseResolveFunction();
3911 set_internal(resolve, '[[Promise]]', promise);
3912 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3913 var reject = PromiseRejectFunction();
3914 set_internal(reject, '[[Promise]]', promise);
3915 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3916 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3917 }
3918
3919 // 25.4.1.3.1 Promise Reject Functions
3920
3921 function PromiseRejectFunction() {
3922 var F = function(reason) {
3923 console.assert(Type(F['[[Promise]]']) === 'object');
3924 var promise = F['[[Promise]]'];
3925 var alreadyResolved = F['[[AlreadyResolved]]'];
3926 if (alreadyResolved['[[value]]']) return undefined;
3927 set_internal(alreadyResolved, '[[value]]', true);
3928 return RejectPromise(promise, reason);
3929 };
3930 return F;
3931 }
3932
3933 // 25.4.1.3.2 Promise Resolve Functions
3934
3935 function PromiseResolveFunction() {
3936 var F = function(resolution) {
3937 console.assert(Type(F['[[Promise]]']) === 'object');
3938 var promise = F['[[Promise]]'];
3939 var alreadyResolved = F['[[AlreadyResolved]]'];
3940 if (alreadyResolved['[[value]]']) return undefined;
3941 set_internal(alreadyResolved, '[[value]]', true);
3942
3943 if (SameValue(resolution, promise)) {
3944 var selfResolutionError = TypeError();
3945 return RejectPromise(promise, selfResolutionError);
3946 }
3947 if (Type(resolution) !== 'object')
3948 return FulfillPromise(promise, resolution);
3949 try {
3950 var then = resolution['then'];
3951 } catch(then) {
3952 return RejectPromise(promise, then);
3953 }
3954 if (!IsCallable(then))
3955 return FulfillPromise(promise, resolution);
3956 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3957 return undefined;
3958 };
3959 return F;
3960 }
3961
3962 // 25.4.1.4 FulfillPromise ( promise, value )
3963
3964 function FulfillPromise(promise, value) {
3965 console.assert(promise['[[PromiseState]]'] === 'pending');
3966 var reactions = promise['[[PromiseFulfillReactions]]'];
3967 set_internal(promise, '[[PromiseResult]]', value);
3968 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3969 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3970 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3971 return TriggerPromiseReactions(reactions, value);
3972 }
3973
3974 // 25.4.1.5 NewPromiseCapability ( C )
3975
3976 function NewPromiseCapability(c) {
3977 // To keep Promise hermetic, this doesn't look much like the spec.
3978 return CreatePromiseCapabilityRecord(undefined, c);
3979 }
3980
3981 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3982
3983 function CreatePromiseCapabilityRecord(promise, constructor) {
3984 // To keep Promise hermetic, this doesn't look much like the spec.
3985 console.assert(IsConstructor(constructor));
3986 var promiseCapability = {};
3987 set_internal(promiseCapability, '[[Promise]]', promise);
3988 set_internal(promiseCapability, '[[Resolve]]', undefined);
3989 set_internal(promiseCapability, '[[Reject]]', undefined);
3990 var executor = GetCapabilitiesExecutor();
3991 set_internal(executor, '[[Capability]]', promiseCapability);
3992
3993 // NOTE: Differs from spec; object is constructed here
3994 var constructorResult = promise = new constructor(executor);
3995 set_internal(promiseCapability, '[[Promise]]', promise);
3996
3997 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3998 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3999 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4000 return promiseCapability;
4001 }
4002
4003 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4004
4005 function GetCapabilitiesExecutor() {
4006 var F = function(resolve, reject) {
4007 console.assert(F['[[Capability]]']);
4008 var promiseCapability = F['[[Capability]]'];
4009 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4010 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4011 set_internal(promiseCapability, '[[Resolve]]', resolve);
4012 set_internal(promiseCapability, '[[Reject]]', reject);
4013 return undefined;
4014 };
4015 return F;
4016 }
4017
4018 // 25.4.1.6 IsPromise ( x )
4019
4020 function IsPromise(x) {
4021 if (Type(x) !== 'object') return false;
4022 if (!('[[PromiseState]]' in x)) return false;
4023 if (x['[[PromiseState]]'] === undefined) return false;
4024 return true;
4025 }
4026
4027 // 25.4.1.7 RejectPromise ( promise, reason )
4028
4029 function RejectPromise(promise, reason) {
4030 console.assert(promise['[[PromiseState]]'] === 'pending');
4031 var reactions = promise['[[PromiseRejectReactions]]'];
4032 set_internal(promise, '[[PromiseResult]]', reason);
4033 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4034 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4035 set_internal(promise, '[[PromiseState]]', 'rejected');
4036 return TriggerPromiseReactions(reactions, reason);
4037 }
4038
4039 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4040
4041 function TriggerPromiseReactions(reactions, argument) {
4042 for (var i = 0, len = reactions.length; i < len; ++i)
4043 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4044 return undefined;
4045 }
4046
4047 // 25.4.2 Promise Jobs
4048
4049 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4050
4051 function PromiseReactionJob(reaction, argument) {
4052 var promiseCapability = reaction['[[Capabilities]]'];
4053 var handler = reaction['[[Handler]]'];
4054 var handlerResult, status;
4055 try {
4056 if (handler === 'Identity') handlerResult = argument;
4057 else if (handler === 'Thrower') throw argument;
4058 else handlerResult = handler.call(undefined, argument);
4059 } catch (handlerResult) {
4060 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4061 NextJob(status); return;
4062 }
4063 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4064 NextJob(status);
4065 }
4066
4067 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4068
4069 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4070 // SPEC BUG: promise vs. promiseToResolve
4071 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4072 try {
4073 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4074 resolvingFunctions['[[Reject]]']);
4075 } catch (thenCallResult) {
4076 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4077 NextJob(status); return;
4078 }
4079 NextJob(thenCallResult);
4080 }
4081
4082 // 25.4.3 The Promise Constructor
4083
4084 // 25.4.3.1 Promise ( executor )
4085
4086 function Promise(executor) {
4087 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4088 Object.defineProperty(this, '[[PromiseState]]', config);
4089 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4090 Object.defineProperty(this, '[[PromiseResult]]', config);
4091 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4092 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4093
4094 var promise = this;
4095 if (Type(promise) !== 'object') throw new TypeError();
4096 if (!('[[PromiseState]]' in promise)) throw TypeError();
4097 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4098 if (!IsCallable(executor)) throw TypeError();
4099
4100 set_internal(promise, '[[PromiseConstructor]]', Promise);
4101
4102 return InitializePromise(promise, executor);
4103 }
4104
4105 // 25.4.3.1.1 InitializePromise ( promise, executor )
4106
4107 function InitializePromise(promise, executor) {
4108 console.assert('[[PromiseState]]' in promise);
4109 console.assert(IsCallable(executor));
4110 set_internal(promise, '[[PromiseState]]', 'pending');
4111 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4112 set_internal(promise, '[[PromiseRejectReactions]]', []);
4113 var resolvingFunctions = CreateResolvingFunctions(promise);
4114 try {
4115 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4116 resolvingFunctions['[[Reject]]']);
4117 } catch (completion) {
4118 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4119 }
4120 return promise;
4121 }
4122
4123 // 25.4.4 Properties of the Promise Constructor
4124 // 25.4.4.1 Promise.all ( iterable )
4125
4126 define(Promise, 'all', function all(iterable) {
4127 var c = strict(this);
4128 var promiseCapability = NewPromiseCapability(c);
4129 try {
4130 var iterator = GetIterator(iterable);
4131 } catch (value) {
4132 promiseCapability['[[Reject]]'].call(undefined, value);
4133 return promiseCapability['[[Promise]]'];
4134 }
4135 var values = [];
4136 var remainingElementsCount = { value: 1 };
4137 var index = 0;
4138 while (true) {
4139 try {
4140 var next = IteratorStep(iterator);
4141 } catch (value) {
4142 promiseCapability['[[Reject]]'].call(undefined, value);
4143 return promiseCapability['[[Promise]]'];
4144 }
4145 if (!next) {
4146 remainingElementsCount.value -= 1;
4147 if (remainingElementsCount.value === 0) {
4148 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4149
4150
4151 }
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextValue = IteratorValue(next);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 try {
4161 var nextPromise = c.resolve(nextValue);
4162 } catch (value) {
4163 promiseCapability['[[Reject]]'].call(undefined, value);
4164 return promiseCapability['[[Promise]]'];
4165 }
4166 var resolveElement = PromiseAllResolveElementFunction();
4167 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4168 set_internal(resolveElement, '[[Index]]', index);
4169 set_internal(resolveElement, '[[Values]]', values);
4170 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4171 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4172 remainingElementsCount.value += 1;
4173 try {
4174 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4175 } catch (value) {
4176 promiseCapability['[[Reject]]'].call(undefined, value);
4177 return promiseCapability['[[Promise]]'];
4178 }
4179 index += 1;
4180 }
4181 });
4182
4183 // 25.4.4.1.1 Promise.all Resolve Element Functions
4184
4185 function PromiseAllResolveElementFunction() {
4186 var F = function(x) {
4187 var alreadyCalled = F['[[AlreadyCalled]]'];
4188 if (alreadyCalled.value) return undefined;
4189 alreadyCalled.value = true;
4190 var index = F['[[Index]]'];
4191 var values = F['[[Values]]'];
4192 var promiseCapability = F['[[Capabilities]]'];
4193 var remainingElementsCount = F['[[RemainingElements]]'];
4194 try {
4195 values[index] = x;
4196 } catch (result) {
4197 promiseCapability['[[Reject]]'].call(undefined, result);
4198 return promiseCapability['[[Promise]]'];
4199 }
4200 remainingElementsCount.value -= 1;
4201 if (remainingElementsCount.value === 0)
4202 return promiseCapability['[[Resolve]]'].call(undefined, values);
4203 return undefined;
4204 };
4205 return F;
4206 }
4207
4208 // 25.4.4.2 Promise.prototype
4209
4210 Promise.prototype = {};
4211
4212 // 25.4.4.3 Promise.race ( iterable )
4213
4214 define(Promise, 'race', function race(iterable) {
4215 var c = strict(this);
4216 var promiseCapability = NewPromiseCapability(c);
4217 try {
4218 var iterator = GetIterator(iterable);
4219 } catch (value) {
4220 promiseCapability['[[Reject]]'].call(undefined, value);
4221 return promiseCapability['[[Promise]]'];
4222 }
4223 while (true) {
4224 try {
4225 var next = IteratorStep(iterator);
4226 } catch (value) {
4227 promiseCapability['[[Reject]]'].call(undefined, value);
4228 return promiseCapability['[[Promise]]'];
4229 }
4230 if (!next) return promiseCapability['[[Promise]]'];
4231 try {
4232 var nextValue = IteratorValue(next);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 var nextPromise = c.resolve(nextValue);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 try {
4244 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4245 } catch (value) {
4246 promiseCapability['[[Reject]]'].call(undefined, value);
4247 return promiseCapability['[[Promise]]'];
4248 }
4249 }
4250 });
4251
4252 // 25.4.4.4 Promise.reject ( r )
4253
4254 define(Promise, 'reject', function reject(r) {
4255 var c = strict(this);
4256 var promiseCapability = NewPromiseCapability(c);
4257 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4258 return promiseCapability['[[Promise]]'];
4259 });
4260
4261 // 25.4.4.5 Promise.resolve ( x )
4262
4263 define(Promise, 'resolve', function resolve(x) {
4264 var c = strict(this);
4265 if (IsPromise(x)) {
4266 var constructor = x['[[PromiseConstructor]]'];
4267 if (SameValue(constructor, c)) return x;
4268 }
4269 var promiseCapability = NewPromiseCapability(c);
4270 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4271 return promiseCapability['[[Promise]]'];
4272 });
4273
4274 // 25.4.4.6 Promise [ @@create ] ( )
4275 // 25.4.4.6.1 AllocatePromise ( constructor )
4276 // 25.4.5 Properties of the Promise Prototype Object
4277 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4278
4279 define(Promise.prototype, 'catch', function catch_(onRejected) {
4280 var promise = this;
4281 return promise.then(undefined, onRejected);
4282 });
4283
4284 // 25.4.5.2 Promise.prototype.constructor
4285
4286 Promise.prototype.constructor = Promise;
4287
4288 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4289
4290 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4291 var promise = this;
4292 if (!IsPromise(promise)) throw TypeError();
4293 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4294 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4295 var c = promise.constructor;
4296 var promiseCapability = NewPromiseCapability(c);
4297 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4298 '[[Handler]]': onFulfilled };
4299 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4300 '[[Handler]]': onRejected };
4301 if (promise['[[PromiseState]]'] === 'pending') {
4302 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4303 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4304 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4305 var value = promise['[[PromiseResult]]'];
4306 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4307 } else if (promise['[[PromiseState]]'] === 'rejected') {
4308 var reason = promise['[[PromiseResult]]'];
4309 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4310 }
4311 return promiseCapability['[[Promise]]'];
4312 });
4313
4314 // 25.4.6 Properties of Promise Instances
4315
4316 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4317 global.Promise = Promise;
4318
4319 // Patch early Promise.cast vs. Promise.resolve implementations
4320 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4321 }());
4322
4323 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4324 define(Promise.prototype, $$toStringTag, 'Promise');
4325
4326 // ---------------------------------------
4327 // 26 Reflection
4328 // ---------------------------------------
4329
4330 (function() {
4331 // 26.1 The Reflect Object
4332 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4333 global.Reflect = {};
4334
4335 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4336 define(
4337 Reflect, 'apply',
4338 function apply(target, thisArgument, argumentsList) {
4339 if (!IsCallable(target)) throw TypeError();
4340 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4341 });
4342
4343 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4344 define(
4345 Reflect, 'construct',
4346 function construct(target, argumentsList) {
4347 return __cons(target, argumentsList);
4348 });
4349
4350 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4351 define(
4352 Reflect, 'defineProperty',
4353 function defineProperty(target, propertyKey, attributes) {
4354 try {
4355 Object.defineProperty(target, propertyKey, attributes);
4356 return true;
4357 } catch (_) {
4358 return false;
4359 }
4360 });
4361
4362 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4363 define(
4364 Reflect, 'deleteProperty',
4365 function deleteProperty(target,name) {
4366 try {
4367 delete target[name];
4368 return !HasOwnProperty(target, name);
4369 } catch (_) {
4370 return false;
4371 }
4372 });
4373
4374 // 26.1.5 Reflect.enumerate ( target )
4375 define(
4376 Reflect, 'enumerate',
4377 function enumerate(target) {
4378 target = ToObject(target);
4379 var iterator = Enumerate(target);
4380 return iterator;
4381 });
4382
4383 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4384 define(
4385 Reflect, 'get',
4386 function get(target, name, receiver) {
4387 target = ToObject(target);
4388 name = String(name);
4389 receiver = (receiver === undefined) ? target : ToObject(receiver);
4390 var desc = getPropertyDescriptor(target, name);
4391 if (desc && 'get' in desc)
4392 return Function.prototype.call.call(desc['get'], receiver);
4393 return target[name];
4394 });
4395
4396 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4397 define(
4398 Reflect, 'getOwnPropertyDescriptor',
4399 Object.getOwnPropertyDescriptor);
4400
4401 // 26.1.8 Reflect.getPrototypeOf ( target )
4402 define(
4403 Reflect, 'getPrototypeOf',
4404 Object.getPrototypeOf);
4405
4406 // 26.1.9 Reflect.has ( target, propertyKey )
4407 define(
4408 Reflect, 'has',
4409 function has(target,name) {
4410 return String(name) in ToObject(target);
4411 });
4412
4413 // 26.1.10 Reflect.isExtensible (target)
4414 define(
4415 Reflect, 'isExtensible',
4416 Object.isExtensible);
4417
4418 // 26.1.11 Reflect.ownKeys ( target )
4419 define(
4420 Reflect, 'ownKeys',
4421 function ownKeys(target) {
4422 var obj = ToObject(target);
4423 return Object.getOwnPropertyNames(obj);
4424 });
4425
4426 // 26.1.12 Reflect.preventExtensions ( target )
4427 define(
4428 Reflect, 'preventExtensions',
4429 function preventExtensions(target) {
4430 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4431 });
4432
4433 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4434 define(
4435 Reflect, 'set',
4436 function set(target, name, value, receiver) {
4437 target = ToObject(target);
4438 name = String(name);
4439 receiver = (receiver === undefined) ? target : ToObject(receiver);
4440 var desc = getPropertyDescriptor(target, name);
4441 try {
4442 if (desc && 'set' in desc)
4443 Function.prototype.call.call(desc['set'], receiver, value);
4444 else
4445 target[name] = value;
4446 return true;
4447 } catch (_) {
4448 return false;
4449 }
4450 });
4451
4452 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4453 define(
4454 Reflect, 'setPrototypeOf',
4455 function setPrototypeOf(target, proto) {
4456 try {
4457 target.__proto__ = proto;
4458 return Reflect.getPrototypeOf(target) === proto;
4459 } catch(_) {
4460 return false;
4461 }
4462 });
4463
4464 }());
4465
4466 // ---------------------------------------
4467 // 26.2 Proxy Objects
4468 // ---------------------------------------
4469
4470 // Not polyfillable.
4471
4472 }(self));
4473
4474 // This helper is defined outside the main scope so that the use of
4475 // 'eval' does not taint the scope for minifiers.
4476 function __cons(t, a) {
4477 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4478 }
4479 </script>
4480 <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.foo = 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){
4481 'use strict'
4482
4483 exports.byteLength = byteLength
4484 exports.toByteArray = toByteArray
4485 exports.fromByteArray = fromByteArray
4486
4487 var lookup = []
4488 var revLookup = []
4489 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4490
4491 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4492 for (var i = 0, len = code.length; i < len; ++i) {
4493 lookup[i] = code[i]
4494 revLookup[code.charCodeAt(i)] = i
4495 }
4496
4497 revLookup['-'.charCodeAt(0)] = 62
4498 revLookup['_'.charCodeAt(0)] = 63
4499
4500 function placeHoldersCount (b64) {
4501 var len = b64.length
4502 if (len % 4 > 0) {
4503 throw new Error('Invalid string. Length must be a multiple of 4')
4504 }
4505
4506 // the number of equal signs (place holders)
4507 // if there are two placeholders, than the two characters before it
4508 // represent one byte
4509 // if there is only one, then the three characters before it represent 2 bytes
4510 // this is just a cheap hack to not do indexOf twice
4511 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4512 }
4513
4514 function byteLength (b64) {
4515 // base64 is 4/3 + up to two characters of the original data
4516 return b64.length * 3 / 4 - placeHoldersCount(b64)
4517 }
4518
4519 function toByteArray (b64) {
4520 var i, j, l, tmp, placeHolders, arr
4521 var len = b64.length
4522 placeHolders = placeHoldersCount(b64)
4523
4524 arr = new Arr(len * 3 / 4 - placeHolders)
4525
4526 // if there are placeholders, only get up to the last complete 4 chars
4527 l = placeHolders > 0 ? len - 4 : len
4528
4529 var L = 0
4530
4531 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4532 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4533 arr[L++] = (tmp >> 16) & 0xFF
4534 arr[L++] = (tmp >> 8) & 0xFF
4535 arr[L++] = tmp & 0xFF
4536 }
4537
4538 if (placeHolders === 2) {
4539 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4540 arr[L++] = tmp & 0xFF
4541 } else if (placeHolders === 1) {
4542 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4543 arr[L++] = (tmp >> 8) & 0xFF
4544 arr[L++] = tmp & 0xFF
4545 }
4546
4547 return arr
4548 }
4549
4550 function tripletToBase64 (num) {
4551 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4552 }
4553
4554 function encodeChunk (uint8, start, end) {
4555 var tmp
4556 var output = []
4557 for (var i = start; i < end; i += 3) {
4558 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4559 output.push(tripletToBase64(tmp))
4560 }
4561 return output.join('')
4562 }
4563
4564 function fromByteArray (uint8) {
4565 var tmp
4566 var len = uint8.length
4567 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4568 var output = ''
4569 var parts = []
4570 var maxChunkLength = 16383 // must be multiple of 3
4571
4572 // go through the array every three bytes, we'll deal with trailing stuff later
4573 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4574 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4575 }
4576
4577 // pad the end with zeros, but make sure to not forget the extra bytes
4578 if (extraBytes === 1) {
4579 tmp = uint8[len - 1]
4580 output += lookup[tmp >> 2]
4581 output += lookup[(tmp << 4) & 0x3F]
4582 output += '=='
4583 } else if (extraBytes === 2) {
4584 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4585 output += lookup[tmp >> 10]
4586 output += lookup[(tmp >> 4) & 0x3F]
4587 output += lookup[(tmp << 2) & 0x3F]
4588 output += '='
4589 }
4590
4591 parts.push(output)
4592
4593 return parts.join('')
4594 }
4595
4596 },{}],2:[function(require,module,exports){
4597 /*!
4598 * The buffer module from node.js, for the browser.
4599 *
4600 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4601 * @license MIT
4602 */
4603 /* eslint-disable no-proto */
4604
4605 'use strict'
4606
4607 var base64 = require('base64-js')
4608 var ieee754 = require('ieee754')
4609
4610 exports.Buffer = Buffer
4611 exports.SlowBuffer = SlowBuffer
4612 exports.INSPECT_MAX_BYTES = 50
4613
4614 var K_MAX_LENGTH = 0x7fffffff
4615 exports.kMaxLength = K_MAX_LENGTH
4616
4617 /**
4618 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4619 * === true Use Uint8Array implementation (fastest)
4620 * === false Print warning and recommend using `buffer` v4.x which has an Object
4621 * implementation (most compatible, even IE6)
4622 *
4623 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4624 * Opera 11.6+, iOS 4.2+.
4625 *
4626 * We report that the browser does not support typed arrays if the are not subclassable
4627 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4628 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4629 * for __proto__ and has a buggy typed array implementation.
4630 */
4631 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4632
4633 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4634 typeof console.error === 'function') {
4635 console.error(
4636 'This browser lacks typed array (Uint8Array) support which is required by ' +
4637 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4638 )
4639 }
4640
4641 function typedArraySupport () {
4642 // Can typed array instances can be augmented?
4643 try {
4644 var arr = new Uint8Array(1)
4645 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4646 return arr.foo() === 42
4647 } catch (e) {
4648 return false
4649 }
4650 }
4651
4652 function createBuffer (length) {
4653 if (length > K_MAX_LENGTH) {
4654 throw new RangeError('Invalid typed array length')
4655 }
4656 // Return an augmented `Uint8Array` instance
4657 var buf = new Uint8Array(length)
4658 buf.__proto__ = Buffer.prototype
4659 return buf
4660 }
4661
4662 /**
4663 * The Buffer constructor returns instances of `Uint8Array` that have their
4664 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4665 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4666 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4667 * returns a single octet.
4668 *
4669 * The `Uint8Array` prototype remains unmodified.
4670 */
4671
4672 function Buffer (arg, encodingOrOffset, length) {
4673 // Common case.
4674 if (typeof arg === 'number') {
4675 if (typeof encodingOrOffset === 'string') {
4676 throw new Error(
4677 'If encoding is specified then the first argument must be a string'
4678 )
4679 }
4680 return allocUnsafe(arg)
4681 }
4682 return from(arg, encodingOrOffset, length)
4683 }
4684
4685 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4686 if (typeof Symbol !== 'undefined' && Symbol.species &&
4687 Buffer[Symbol.species] === Buffer) {
4688 Object.defineProperty(Buffer, Symbol.species, {
4689 value: null,
4690 configurable: true,
4691 enumerable: false,
4692 writable: false
4693 })
4694 }
4695
4696 Buffer.poolSize = 8192 // not used by this implementation
4697
4698 function from (value, encodingOrOffset, length) {
4699 if (typeof value === 'number') {
4700 throw new TypeError('"value" argument must not be a number')
4701 }
4702
4703 if (value instanceof ArrayBuffer) {
4704 return fromArrayBuffer(value, encodingOrOffset, length)
4705 }
4706
4707 if (typeof value === 'string') {
4708 return fromString(value, encodingOrOffset)
4709 }
4710
4711 return fromObject(value)
4712 }
4713
4714 /**
4715 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4716 * if value is a number.
4717 * Buffer.from(str[, encoding])
4718 * Buffer.from(array)
4719 * Buffer.from(buffer)
4720 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4721 **/
4722 Buffer.from = function (value, encodingOrOffset, length) {
4723 return from(value, encodingOrOffset, length)
4724 }
4725
4726 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4727 // https://github.com/feross/buffer/pull/148
4728 Buffer.prototype.__proto__ = Uint8Array.prototype
4729 Buffer.__proto__ = Uint8Array
4730
4731 function assertSize (size) {
4732 if (typeof size !== 'number') {
4733 throw new TypeError('"size" argument must be a number')
4734 } else if (size < 0) {
4735 throw new RangeError('"size" argument must not be negative')
4736 }
4737 }
4738
4739 function alloc (size, fill, encoding) {
4740 assertSize(size)
4741 if (size <= 0) {
4742 return createBuffer(size)
4743 }
4744 if (fill !== undefined) {
4745 // Only pay attention to encoding if it's a string. This
4746 // prevents accidentally sending in a number that would
4747 // be interpretted as a start offset.
4748 return typeof encoding === 'string'
4749 ? createBuffer(size).fill(fill, encoding)
4750 : createBuffer(size).fill(fill)
4751 }
4752 return createBuffer(size)
4753 }
4754
4755 /**
4756 * Creates a new filled Buffer instance.
4757 * alloc(size[, fill[, encoding]])
4758 **/
4759 Buffer.alloc = function (size, fill, encoding) {
4760 return alloc(size, fill, encoding)
4761 }
4762
4763 function allocUnsafe (size) {
4764 assertSize(size)
4765 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4766 }
4767
4768 /**
4769 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4770 * */
4771 Buffer.allocUnsafe = function (size) {
4772 return allocUnsafe(size)
4773 }
4774 /**
4775 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4776 */
4777 Buffer.allocUnsafeSlow = function (size) {
4778 return allocUnsafe(size)
4779 }
4780
4781 function fromString (string, encoding) {
4782 if (typeof encoding !== 'string' || encoding === '') {
4783 encoding = 'utf8'
4784 }
4785
4786 if (!Buffer.isEncoding(encoding)) {
4787 throw new TypeError('"encoding" must be a valid string encoding')
4788 }
4789
4790 var length = byteLength(string, encoding) | 0
4791 var buf = createBuffer(length)
4792
4793 var actual = buf.write(string, encoding)
4794
4795 if (actual !== length) {
4796 // Writing a hex string, for example, that contains invalid characters will
4797 // cause everything after the first invalid character to be ignored. (e.g.
4798 // 'abxxcd' will be treated as 'ab')
4799 buf = buf.slice(0, actual)
4800 }
4801
4802 return buf
4803 }
4804
4805 function fromArrayLike (array) {
4806 var length = array.length < 0 ? 0 : checked(array.length) | 0
4807 var buf = createBuffer(length)
4808 for (var i = 0; i < length; i += 1) {
4809 buf[i] = array[i] & 255
4810 }
4811 return buf
4812 }
4813
4814 function fromArrayBuffer (array, byteOffset, length) {
4815 if (byteOffset < 0 || array.byteLength < byteOffset) {
4816 throw new RangeError('\'offset\' is out of bounds')
4817 }
4818
4819 if (array.byteLength < byteOffset + (length || 0)) {
4820 throw new RangeError('\'length\' is out of bounds')
4821 }
4822
4823 var buf
4824 if (byteOffset === undefined && length === undefined) {
4825 buf = new Uint8Array(array)
4826 } else if (length === undefined) {
4827 buf = new Uint8Array(array, byteOffset)
4828 } else {
4829 buf = new Uint8Array(array, byteOffset, length)
4830 }
4831
4832 // Return an augmented `Uint8Array` instance
4833 buf.__proto__ = Buffer.prototype
4834 return buf
4835 }
4836
4837 function fromObject (obj) {
4838 if (Buffer.isBuffer(obj)) {
4839 var len = checked(obj.length) | 0
4840 var buf = createBuffer(len)
4841
4842 if (buf.length === 0) {
4843 return buf
4844 }
4845
4846 obj.copy(buf, 0, 0, len)
4847 return buf
4848 }
4849
4850 if (obj) {
4851 if (isArrayBufferView(obj) || 'length' in obj) {
4852 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4853 return createBuffer(0)
4854 }
4855 return fromArrayLike(obj)
4856 }
4857
4858 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4859 return fromArrayLike(obj.data)
4860 }
4861 }
4862
4863 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4864 }
4865
4866 function checked (length) {
4867 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4868 // length is NaN (which is otherwise coerced to zero.)
4869 if (length >= K_MAX_LENGTH) {
4870 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4871 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4872 }
4873 return length | 0
4874 }
4875
4876 function SlowBuffer (length) {
4877 if (+length != length) { // eslint-disable-line eqeqeq
4878 length = 0
4879 }
4880 return Buffer.alloc(+length)
4881 }
4882
4883 Buffer.isBuffer = function isBuffer (b) {
4884 return b != null && b._isBuffer === true
4885 }
4886
4887 Buffer.compare = function compare (a, b) {
4888 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4889 throw new TypeError('Arguments must be Buffers')
4890 }
4891
4892 if (a === b) return 0
4893
4894 var x = a.length
4895 var y = b.length
4896
4897 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4898 if (a[i] !== b[i]) {
4899 x = a[i]
4900 y = b[i]
4901 break
4902 }
4903 }
4904
4905 if (x < y) return -1
4906 if (y < x) return 1
4907 return 0
4908 }
4909
4910 Buffer.isEncoding = function isEncoding (encoding) {
4911 switch (String(encoding).toLowerCase()) {
4912 case 'hex':
4913 case 'utf8':
4914 case 'utf-8':
4915 case 'ascii':
4916 case 'latin1':
4917 case 'binary':
4918 case 'base64':
4919 case 'ucs2':
4920 case 'ucs-2':
4921 case 'utf16le':
4922 case 'utf-16le':
4923 return true
4924 default:
4925 return false
4926 }
4927 }
4928
4929 Buffer.concat = function concat (list, length) {
4930 if (!Array.isArray(list)) {
4931 throw new TypeError('"list" argument must be an Array of Buffers')
4932 }
4933
4934 if (list.length === 0) {
4935 return Buffer.alloc(0)
4936 }
4937
4938 var i
4939 if (length === undefined) {
4940 length = 0
4941 for (i = 0; i < list.length; ++i) {
4942 length += list[i].length
4943 }
4944 }
4945
4946 var buffer = Buffer.allocUnsafe(length)
4947 var pos = 0
4948 for (i = 0; i < list.length; ++i) {
4949 var buf = list[i]
4950 if (!Buffer.isBuffer(buf)) {
4951 throw new TypeError('"list" argument must be an Array of Buffers')
4952 }
4953 buf.copy(buffer, pos)
4954 pos += buf.length
4955 }
4956 return buffer
4957 }
4958
4959 function byteLength (string, encoding) {
4960 if (Buffer.isBuffer(string)) {
4961 return string.length
4962 }
4963 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4964 return string.byteLength
4965 }
4966 if (typeof string !== 'string') {
4967 string = '' + string
4968 }
4969
4970 var len = string.length
4971 if (len === 0) return 0
4972
4973 // Use a for loop to avoid recursion
4974 var loweredCase = false
4975 for (;;) {
4976 switch (encoding) {
4977 case 'ascii':
4978 case 'latin1':
4979 case 'binary':
4980 return len
4981 case 'utf8':
4982 case 'utf-8':
4983 case undefined:
4984 return utf8ToBytes(string).length
4985 case 'ucs2':
4986 case 'ucs-2':
4987 case 'utf16le':
4988 case 'utf-16le':
4989 return len * 2
4990 case 'hex':
4991 return len >>> 1
4992 case 'base64':
4993 return base64ToBytes(string).length
4994 default:
4995 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4996 encoding = ('' + encoding).toLowerCase()
4997 loweredCase = true
4998 }
4999 }
5000 }
5001 Buffer.byteLength = byteLength
5002
5003 function slowToString (encoding, start, end) {
5004 var loweredCase = false
5005
5006 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5007 // property of a typed array.
5008
5009 // This behaves neither like String nor Uint8Array in that we set start/end
5010 // to their upper/lower bounds if the value passed is out of range.
5011 // undefined is handled specially as per ECMA-262 6th Edition,
5012 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5013 if (start === undefined || start < 0) {
5014 start = 0
5015 }
5016 // Return early if start > this.length. Done here to prevent potential uint32
5017 // coercion fail below.
5018 if (start > this.length) {
5019 return ''
5020 }
5021
5022 if (end === undefined || end > this.length) {
5023 end = this.length
5024 }
5025
5026 if (end <= 0) {
5027 return ''
5028 }
5029
5030 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5031 end >>>= 0
5032 start >>>= 0
5033
5034 if (end <= start) {
5035 return ''
5036 }
5037
5038 if (!encoding) encoding = 'utf8'
5039
5040 while (true) {
5041 switch (encoding) {
5042 case 'hex':
5043 return hexSlice(this, start, end)
5044
5045 case 'utf8':
5046 case 'utf-8':
5047 return utf8Slice(this, start, end)
5048
5049 case 'ascii':
5050 return asciiSlice(this, start, end)
5051
5052 case 'latin1':
5053 case 'binary':
5054 return latin1Slice(this, start, end)
5055
5056 case 'base64':
5057 return base64Slice(this, start, end)
5058
5059 case 'ucs2':
5060 case 'ucs-2':
5061 case 'utf16le':
5062 case 'utf-16le':
5063 return utf16leSlice(this, start, end)
5064
5065 default:
5066 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5067 encoding = (encoding + '').toLowerCase()
5068 loweredCase = true
5069 }
5070 }
5071 }
5072
5073 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5074 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5075 // reliably in a browserify context because there could be multiple different
5076 // copies of the 'buffer' package in use. This method works even for Buffer
5077 // instances that were created from another copy of the `buffer` package.
5078 // See: https://github.com/feross/buffer/issues/154
5079 Buffer.prototype._isBuffer = true
5080
5081 function swap (b, n, m) {
5082 var i = b[n]
5083 b[n] = b[m]
5084 b[m] = i
5085 }
5086
5087 Buffer.prototype.swap16 = function swap16 () {
5088 var len = this.length
5089 if (len % 2 !== 0) {
5090 throw new RangeError('Buffer size must be a multiple of 16-bits')
5091 }
5092 for (var i = 0; i < len; i += 2) {
5093 swap(this, i, i + 1)
5094 }
5095 return this
5096 }
5097
5098 Buffer.prototype.swap32 = function swap32 () {
5099 var len = this.length
5100 if (len % 4 !== 0) {
5101 throw new RangeError('Buffer size must be a multiple of 32-bits')
5102 }
5103 for (var i = 0; i < len; i += 4) {
5104 swap(this, i, i + 3)
5105 swap(this, i + 1, i + 2)
5106 }
5107 return this
5108 }
5109
5110 Buffer.prototype.swap64 = function swap64 () {
5111 var len = this.length
5112 if (len % 8 !== 0) {
5113 throw new RangeError('Buffer size must be a multiple of 64-bits')
5114 }
5115 for (var i = 0; i < len; i += 8) {
5116 swap(this, i, i + 7)
5117 swap(this, i + 1, i + 6)
5118 swap(this, i + 2, i + 5)
5119 swap(this, i + 3, i + 4)
5120 }
5121 return this
5122 }
5123
5124 Buffer.prototype.toString = function toString () {
5125 var length = this.length
5126 if (length === 0) return ''
5127 if (arguments.length === 0) return utf8Slice(this, 0, length)
5128 return slowToString.apply(this, arguments)
5129 }
5130
5131 Buffer.prototype.equals = function equals (b) {
5132 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5133 if (this === b) return true
5134 return Buffer.compare(this, b) === 0
5135 }
5136
5137 Buffer.prototype.inspect = function inspect () {
5138 var str = ''
5139 var max = exports.INSPECT_MAX_BYTES
5140 if (this.length > 0) {
5141 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5142 if (this.length > max) str += ' ... '
5143 }
5144 return '<Buffer ' + str + '>'
5145 }
5146
5147 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5148 if (!Buffer.isBuffer(target)) {
5149 throw new TypeError('Argument must be a Buffer')
5150 }
5151
5152 if (start === undefined) {
5153 start = 0
5154 }
5155 if (end === undefined) {
5156 end = target ? target.length : 0
5157 }
5158 if (thisStart === undefined) {
5159 thisStart = 0
5160 }
5161 if (thisEnd === undefined) {
5162 thisEnd = this.length
5163 }
5164
5165 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5166 throw new RangeError('out of range index')
5167 }
5168
5169 if (thisStart >= thisEnd && start >= end) {
5170 return 0
5171 }
5172 if (thisStart >= thisEnd) {
5173 return -1
5174 }
5175 if (start >= end) {
5176 return 1
5177 }
5178
5179 start >>>= 0
5180 end >>>= 0
5181 thisStart >>>= 0
5182 thisEnd >>>= 0
5183
5184 if (this === target) return 0
5185
5186 var x = thisEnd - thisStart
5187 var y = end - start
5188 var len = Math.min(x, y)
5189
5190 var thisCopy = this.slice(thisStart, thisEnd)
5191 var targetCopy = target.slice(start, end)
5192
5193 for (var i = 0; i < len; ++i) {
5194 if (thisCopy[i] !== targetCopy[i]) {
5195 x = thisCopy[i]
5196 y = targetCopy[i]
5197 break
5198 }
5199 }
5200
5201 if (x < y) return -1
5202 if (y < x) return 1
5203 return 0
5204 }
5205
5206 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5207 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5208 //
5209 // Arguments:
5210 // - buffer - a Buffer to search
5211 // - val - a string, Buffer, or number
5212 // - byteOffset - an index into `buffer`; will be clamped to an int32
5213 // - encoding - an optional encoding, relevant is val is a string
5214 // - dir - true for indexOf, false for lastIndexOf
5215 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5216 // Empty buffer means no match
5217 if (buffer.length === 0) return -1
5218
5219 // Normalize byteOffset
5220 if (typeof byteOffset === 'string') {
5221 encoding = byteOffset
5222 byteOffset = 0
5223 } else if (byteOffset > 0x7fffffff) {
5224 byteOffset = 0x7fffffff
5225 } else if (byteOffset < -0x80000000) {
5226 byteOffset = -0x80000000
5227 }
5228 byteOffset = +byteOffset // Coerce to Number.
5229 if (numberIsNaN(byteOffset)) {
5230 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5231 byteOffset = dir ? 0 : (buffer.length - 1)
5232 }
5233
5234 // Normalize byteOffset: negative offsets start from the end of the buffer
5235 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5236 if (byteOffset >= buffer.length) {
5237 if (dir) return -1
5238 else byteOffset = buffer.length - 1
5239 } else if (byteOffset < 0) {
5240 if (dir) byteOffset = 0
5241 else return -1
5242 }
5243
5244 // Normalize val
5245 if (typeof val === 'string') {
5246 val = Buffer.from(val, encoding)
5247 }
5248
5249 // Finally, search either indexOf (if dir is true) or lastIndexOf
5250 if (Buffer.isBuffer(val)) {
5251 // Special case: looking for empty string/buffer always fails
5252 if (val.length === 0) {
5253 return -1
5254 }
5255 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5256 } else if (typeof val === 'number') {
5257 val = val & 0xFF // Search for a byte value [0-255]
5258 if (typeof Uint8Array.prototype.indexOf === 'function') {
5259 if (dir) {
5260 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5261 } else {
5262 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5263 }
5264 }
5265 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5266 }
5267
5268 throw new TypeError('val must be string, number or Buffer')
5269 }
5270
5271 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5272 var indexSize = 1
5273 var arrLength = arr.length
5274 var valLength = val.length
5275
5276 if (encoding !== undefined) {
5277 encoding = String(encoding).toLowerCase()
5278 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5279 encoding === 'utf16le' || encoding === 'utf-16le') {
5280 if (arr.length < 2 || val.length < 2) {
5281 return -1
5282 }
5283 indexSize = 2
5284 arrLength /= 2
5285 valLength /= 2
5286 byteOffset /= 2
5287 }
5288 }
5289
5290 function read (buf, i) {
5291 if (indexSize === 1) {
5292 return buf[i]
5293 } else {
5294 return buf.readUInt16BE(i * indexSize)
5295 }
5296 }
5297
5298 var i
5299 if (dir) {
5300 var foundIndex = -1
5301 for (i = byteOffset; i < arrLength; i++) {
5302 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5303 if (foundIndex === -1) foundIndex = i
5304 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5305 } else {
5306 if (foundIndex !== -1) i -= i - foundIndex
5307 foundIndex = -1
5308 }
5309 }
5310 } else {
5311 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5312 for (i = byteOffset; i >= 0; i--) {
5313 var found = true
5314 for (var j = 0; j < valLength; j++) {
5315 if (read(arr, i + j) !== read(val, j)) {
5316 found = false
5317 break
5318 }
5319 }
5320 if (found) return i
5321 }
5322 }
5323
5324 return -1
5325 }
5326
5327 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5328 return this.indexOf(val, byteOffset, encoding) !== -1
5329 }
5330
5331 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5332 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5333 }
5334
5335 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5336 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5337 }
5338
5339 function hexWrite (buf, string, offset, length) {
5340 offset = Number(offset) || 0
5341 var remaining = buf.length - offset
5342 if (!length) {
5343 length = remaining
5344 } else {
5345 length = Number(length)
5346 if (length > remaining) {
5347 length = remaining
5348 }
5349 }
5350
5351 // must be an even number of digits
5352 var strLen = string.length
5353 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5354
5355 if (length > strLen / 2) {
5356 length = strLen / 2
5357 }
5358 for (var i = 0; i < length; ++i) {
5359 var parsed = parseInt(string.substr(i * 2, 2), 16)
5360 if (numberIsNaN(parsed)) return i
5361 buf[offset + i] = parsed
5362 }
5363 return i
5364 }
5365
5366 function utf8Write (buf, string, offset, length) {
5367 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5368 }
5369
5370 function asciiWrite (buf, string, offset, length) {
5371 return blitBuffer(asciiToBytes(string), buf, offset, length)
5372 }
5373
5374 function latin1Write (buf, string, offset, length) {
5375 return asciiWrite(buf, string, offset, length)
5376 }
5377
5378 function base64Write (buf, string, offset, length) {
5379 return blitBuffer(base64ToBytes(string), buf, offset, length)
5380 }
5381
5382 function ucs2Write (buf, string, offset, length) {
5383 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5384 }
5385
5386 Buffer.prototype.write = function write (string, offset, length, encoding) {
5387 // Buffer#write(string)
5388 if (offset === undefined) {
5389 encoding = 'utf8'
5390 length = this.length
5391 offset = 0
5392 // Buffer#write(string, encoding)
5393 } else if (length === undefined && typeof offset === 'string') {
5394 encoding = offset
5395 length = this.length
5396 offset = 0
5397 // Buffer#write(string, offset[, length][, encoding])
5398 } else if (isFinite(offset)) {
5399 offset = offset >>> 0
5400 if (isFinite(length)) {
5401 length = length >>> 0
5402 if (encoding === undefined) encoding = 'utf8'
5403 } else {
5404 encoding = length
5405 length = undefined
5406 }
5407 } else {
5408 throw new Error(
5409 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5410 )
5411 }
5412
5413 var remaining = this.length - offset
5414 if (length === undefined || length > remaining) length = remaining
5415
5416 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5417 throw new RangeError('Attempt to write outside buffer bounds')
5418 }
5419
5420 if (!encoding) encoding = 'utf8'
5421
5422 var loweredCase = false
5423 for (;;) {
5424 switch (encoding) {
5425 case 'hex':
5426 return hexWrite(this, string, offset, length)
5427
5428 case 'utf8':
5429 case 'utf-8':
5430 return utf8Write(this, string, offset, length)
5431
5432 case 'ascii':
5433 return asciiWrite(this, string, offset, length)
5434
5435 case 'latin1':
5436 case 'binary':
5437 return latin1Write(this, string, offset, length)
5438
5439 case 'base64':
5440 // Warning: maxLength not taken into account in base64Write
5441 return base64Write(this, string, offset, length)
5442
5443 case 'ucs2':
5444 case 'ucs-2':
5445 case 'utf16le':
5446 case 'utf-16le':
5447 return ucs2Write(this, string, offset, length)
5448
5449 default:
5450 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5451 encoding = ('' + encoding).toLowerCase()
5452 loweredCase = true
5453 }
5454 }
5455 }
5456
5457 Buffer.prototype.toJSON = function toJSON () {
5458 return {
5459 type: 'Buffer',
5460 data: Array.prototype.slice.call(this._arr || this, 0)
5461 }
5462 }
5463
5464 function base64Slice (buf, start, end) {
5465 if (start === 0 && end === buf.length) {
5466 return base64.fromByteArray(buf)
5467 } else {
5468 return base64.fromByteArray(buf.slice(start, end))
5469 }
5470 }
5471
5472 function utf8Slice (buf, start, end) {
5473 end = Math.min(buf.length, end)
5474 var res = []
5475
5476 var i = start
5477 while (i < end) {
5478 var firstByte = buf[i]
5479 var codePoint = null
5480 var bytesPerSequence = (firstByte > 0xEF) ? 4
5481 : (firstByte > 0xDF) ? 3
5482 : (firstByte > 0xBF) ? 2
5483 : 1
5484
5485 if (i + bytesPerSequence <= end) {
5486 var secondByte, thirdByte, fourthByte, tempCodePoint
5487
5488 switch (bytesPerSequence) {
5489 case 1:
5490 if (firstByte < 0x80) {
5491 codePoint = firstByte
5492 }
5493 break
5494 case 2:
5495 secondByte = buf[i + 1]
5496 if ((secondByte & 0xC0) === 0x80) {
5497 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5498 if (tempCodePoint > 0x7F) {
5499 codePoint = tempCodePoint
5500 }
5501 }
5502 break
5503 case 3:
5504 secondByte = buf[i + 1]
5505 thirdByte = buf[i + 2]
5506 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5507 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5508 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5509 codePoint = tempCodePoint
5510 }
5511 }
5512 break
5513 case 4:
5514 secondByte = buf[i + 1]
5515 thirdByte = buf[i + 2]
5516 fourthByte = buf[i + 3]
5517 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5518 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5519 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5520 codePoint = tempCodePoint
5521 }
5522 }
5523 }
5524 }
5525
5526 if (codePoint === null) {
5527 // we did not generate a valid codePoint so insert a
5528 // replacement char (U+FFFD) and advance only 1 byte
5529 codePoint = 0xFFFD
5530 bytesPerSequence = 1
5531 } else if (codePoint > 0xFFFF) {
5532 // encode to utf16 (surrogate pair dance)
5533 codePoint -= 0x10000
5534 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5535 codePoint = 0xDC00 | codePoint & 0x3FF
5536 }
5537
5538 res.push(codePoint)
5539 i += bytesPerSequence
5540 }
5541
5542 return decodeCodePointsArray(res)
5543 }
5544
5545 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5546 // the lowest limit is Chrome, with 0x10000 args.
5547 // We go 1 magnitude less, for safety
5548 var MAX_ARGUMENTS_LENGTH = 0x1000
5549
5550 function decodeCodePointsArray (codePoints) {
5551 var len = codePoints.length
5552 if (len <= MAX_ARGUMENTS_LENGTH) {
5553 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5554 }
5555
5556 // Decode in chunks to avoid "call stack size exceeded".
5557 var res = ''
5558 var i = 0
5559 while (i < len) {
5560 res += String.fromCharCode.apply(
5561 String,
5562 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5563 )
5564 }
5565 return res
5566 }
5567
5568 function asciiSlice (buf, start, end) {
5569 var ret = ''
5570 end = Math.min(buf.length, end)
5571
5572 for (var i = start; i < end; ++i) {
5573 ret += String.fromCharCode(buf[i] & 0x7F)
5574 }
5575 return ret
5576 }
5577
5578 function latin1Slice (buf, start, end) {
5579 var ret = ''
5580 end = Math.min(buf.length, end)
5581
5582 for (var i = start; i < end; ++i) {
5583 ret += String.fromCharCode(buf[i])
5584 }
5585 return ret
5586 }
5587
5588 function hexSlice (buf, start, end) {
5589 var len = buf.length
5590
5591 if (!start || start < 0) start = 0
5592 if (!end || end < 0 || end > len) end = len
5593
5594 var out = ''
5595 for (var i = start; i < end; ++i) {
5596 out += toHex(buf[i])
5597 }
5598 return out
5599 }
5600
5601 function utf16leSlice (buf, start, end) {
5602 var bytes = buf.slice(start, end)
5603 var res = ''
5604 for (var i = 0; i < bytes.length; i += 2) {
5605 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5606 }
5607 return res
5608 }
5609
5610 Buffer.prototype.slice = function slice (start, end) {
5611 var len = this.length
5612 start = ~~start
5613 end = end === undefined ? len : ~~end
5614
5615 if (start < 0) {
5616 start += len
5617 if (start < 0) start = 0
5618 } else if (start > len) {
5619 start = len
5620 }
5621
5622 if (end < 0) {
5623 end += len
5624 if (end < 0) end = 0
5625 } else if (end > len) {
5626 end = len
5627 }
5628
5629 if (end < start) end = start
5630
5631 var newBuf = this.subarray(start, end)
5632 // Return an augmented `Uint8Array` instance
5633 newBuf.__proto__ = Buffer.prototype
5634 return newBuf
5635 }
5636
5637 /*
5638 * Need to make sure that buffer isn't trying to write out of bounds.
5639 */
5640 function checkOffset (offset, ext, length) {
5641 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5642 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5643 }
5644
5645 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5646 offset = offset >>> 0
5647 byteLength = byteLength >>> 0
5648 if (!noAssert) checkOffset(offset, byteLength, this.length)
5649
5650 var val = this[offset]
5651 var mul = 1
5652 var i = 0
5653 while (++i < byteLength && (mul *= 0x100)) {
5654 val += this[offset + i] * mul
5655 }
5656
5657 return val
5658 }
5659
5660 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5661 offset = offset >>> 0
5662 byteLength = byteLength >>> 0
5663 if (!noAssert) {
5664 checkOffset(offset, byteLength, this.length)
5665 }
5666
5667 var val = this[offset + --byteLength]
5668 var mul = 1
5669 while (byteLength > 0 && (mul *= 0x100)) {
5670 val += this[offset + --byteLength] * mul
5671 }
5672
5673 return val
5674 }
5675
5676 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 1, this.length)
5679 return this[offset]
5680 }
5681
5682 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return this[offset] | (this[offset + 1] << 8)
5686 }
5687
5688 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 2, this.length)
5691 return (this[offset] << 8) | this[offset + 1]
5692 }
5693
5694 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5695 offset = offset >>> 0
5696 if (!noAssert) checkOffset(offset, 4, this.length)
5697
5698 return ((this[offset]) |
5699 (this[offset + 1] << 8) |
5700 (this[offset + 2] << 16)) +
5701 (this[offset + 3] * 0x1000000)
5702 }
5703
5704 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5705 offset = offset >>> 0
5706 if (!noAssert) checkOffset(offset, 4, this.length)
5707
5708 return (this[offset] * 0x1000000) +
5709 ((this[offset + 1] << 16) |
5710 (this[offset + 2] << 8) |
5711 this[offset + 3])
5712 }
5713
5714 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5715 offset = offset >>> 0
5716 byteLength = byteLength >>> 0
5717 if (!noAssert) checkOffset(offset, byteLength, this.length)
5718
5719 var val = this[offset]
5720 var mul = 1
5721 var i = 0
5722 while (++i < byteLength && (mul *= 0x100)) {
5723 val += this[offset + i] * mul
5724 }
5725 mul *= 0x80
5726
5727 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5728
5729 return val
5730 }
5731
5732 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5733 offset = offset >>> 0
5734 byteLength = byteLength >>> 0
5735 if (!noAssert) checkOffset(offset, byteLength, this.length)
5736
5737 var i = byteLength
5738 var mul = 1
5739 var val = this[offset + --i]
5740 while (i > 0 && (mul *= 0x100)) {
5741 val += this[offset + --i] * mul
5742 }
5743 mul *= 0x80
5744
5745 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5746
5747 return val
5748 }
5749
5750 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5751 offset = offset >>> 0
5752 if (!noAssert) checkOffset(offset, 1, this.length)
5753 if (!(this[offset] & 0x80)) return (this[offset])
5754 return ((0xff - this[offset] + 1) * -1)
5755 }
5756
5757 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5758 offset = offset >>> 0
5759 if (!noAssert) checkOffset(offset, 2, this.length)
5760 var val = this[offset] | (this[offset + 1] << 8)
5761 return (val & 0x8000) ? val | 0xFFFF0000 : val
5762 }
5763
5764 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5765 offset = offset >>> 0
5766 if (!noAssert) checkOffset(offset, 2, this.length)
5767 var val = this[offset + 1] | (this[offset] << 8)
5768 return (val & 0x8000) ? val | 0xFFFF0000 : val
5769 }
5770
5771 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5772 offset = offset >>> 0
5773 if (!noAssert) checkOffset(offset, 4, this.length)
5774
5775 return (this[offset]) |
5776 (this[offset + 1] << 8) |
5777 (this[offset + 2] << 16) |
5778 (this[offset + 3] << 24)
5779 }
5780
5781 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 4, this.length)
5784
5785 return (this[offset] << 24) |
5786 (this[offset + 1] << 16) |
5787 (this[offset + 2] << 8) |
5788 (this[offset + 3])
5789 }
5790
5791 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, true, 23, 4)
5795 }
5796
5797 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800 return ieee754.read(this, offset, false, 23, 4)
5801 }
5802
5803 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, true, 52, 8)
5807 }
5808
5809 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5810 offset = offset >>> 0
5811 if (!noAssert) checkOffset(offset, 8, this.length)
5812 return ieee754.read(this, offset, false, 52, 8)
5813 }
5814
5815 function checkInt (buf, value, offset, ext, max, min) {
5816 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5817 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5818 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5819 }
5820
5821 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5822 value = +value
5823 offset = offset >>> 0
5824 byteLength = byteLength >>> 0
5825 if (!noAssert) {
5826 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5827 checkInt(this, value, offset, byteLength, maxBytes, 0)
5828 }
5829
5830 var mul = 1
5831 var i = 0
5832 this[offset] = value & 0xFF
5833 while (++i < byteLength && (mul *= 0x100)) {
5834 this[offset + i] = (value / mul) & 0xFF
5835 }
5836
5837 return offset + byteLength
5838 }
5839
5840 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5841 value = +value
5842 offset = offset >>> 0
5843 byteLength = byteLength >>> 0
5844 if (!noAssert) {
5845 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5846 checkInt(this, value, offset, byteLength, maxBytes, 0)
5847 }
5848
5849 var i = byteLength - 1
5850 var mul = 1
5851 this[offset + i] = value & 0xFF
5852 while (--i >= 0 && (mul *= 0x100)) {
5853 this[offset + i] = (value / mul) & 0xFF
5854 }
5855
5856 return offset + byteLength
5857 }
5858
5859 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5860 value = +value
5861 offset = offset >>> 0
5862 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5863 this[offset] = (value & 0xff)
5864 return offset + 1
5865 }
5866
5867 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5868 value = +value
5869 offset = offset >>> 0
5870 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5871 this[offset] = (value & 0xff)
5872 this[offset + 1] = (value >>> 8)
5873 return offset + 2
5874 }
5875
5876 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5877 value = +value
5878 offset = offset >>> 0
5879 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5880 this[offset] = (value >>> 8)
5881 this[offset + 1] = (value & 0xff)
5882 return offset + 2
5883 }
5884
5885 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5886 value = +value
5887 offset = offset >>> 0
5888 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5889 this[offset + 3] = (value >>> 24)
5890 this[offset + 2] = (value >>> 16)
5891 this[offset + 1] = (value >>> 8)
5892 this[offset] = (value & 0xff)
5893 return offset + 4
5894 }
5895
5896 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5897 value = +value
5898 offset = offset >>> 0
5899 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5900 this[offset] = (value >>> 24)
5901 this[offset + 1] = (value >>> 16)
5902 this[offset + 2] = (value >>> 8)
5903 this[offset + 3] = (value & 0xff)
5904 return offset + 4
5905 }
5906
5907 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5908 value = +value
5909 offset = offset >>> 0
5910 if (!noAssert) {
5911 var limit = Math.pow(2, (8 * byteLength) - 1)
5912
5913 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5914 }
5915
5916 var i = 0
5917 var mul = 1
5918 var sub = 0
5919 this[offset] = value & 0xFF
5920 while (++i < byteLength && (mul *= 0x100)) {
5921 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5922 sub = 1
5923 }
5924 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5925 }
5926
5927 return offset + byteLength
5928 }
5929
5930 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5931 value = +value
5932 offset = offset >>> 0
5933 if (!noAssert) {
5934 var limit = Math.pow(2, (8 * byteLength) - 1)
5935
5936 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5937 }
5938
5939 var i = byteLength - 1
5940 var mul = 1
5941 var sub = 0
5942 this[offset + i] = value & 0xFF
5943 while (--i >= 0 && (mul *= 0x100)) {
5944 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5945 sub = 1
5946 }
5947 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5948 }
5949
5950 return offset + byteLength
5951 }
5952
5953 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5954 value = +value
5955 offset = offset >>> 0
5956 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5957 if (value < 0) value = 0xff + value + 1
5958 this[offset] = (value & 0xff)
5959 return offset + 1
5960 }
5961
5962 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5963 value = +value
5964 offset = offset >>> 0
5965 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5966 this[offset] = (value & 0xff)
5967 this[offset + 1] = (value >>> 8)
5968 return offset + 2
5969 }
5970
5971 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5972 value = +value
5973 offset = offset >>> 0
5974 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5975 this[offset] = (value >>> 8)
5976 this[offset + 1] = (value & 0xff)
5977 return offset + 2
5978 }
5979
5980 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5981 value = +value
5982 offset = offset >>> 0
5983 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5984 this[offset] = (value & 0xff)
5985 this[offset + 1] = (value >>> 8)
5986 this[offset + 2] = (value >>> 16)
5987 this[offset + 3] = (value >>> 24)
5988 return offset + 4
5989 }
5990
5991 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5992 value = +value
5993 offset = offset >>> 0
5994 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5995 if (value < 0) value = 0xffffffff + value + 1
5996 this[offset] = (value >>> 24)
5997 this[offset + 1] = (value >>> 16)
5998 this[offset + 2] = (value >>> 8)
5999 this[offset + 3] = (value & 0xff)
6000 return offset + 4
6001 }
6002
6003 function checkIEEE754 (buf, value, offset, ext, max, min) {
6004 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6005 if (offset < 0) throw new RangeError('Index out of range')
6006 }
6007
6008 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6009 value = +value
6010 offset = offset >>> 0
6011 if (!noAssert) {
6012 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6013 }
6014 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6015 return offset + 4
6016 }
6017
6018 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6019 return writeFloat(this, value, offset, true, noAssert)
6020 }
6021
6022 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6023 return writeFloat(this, value, offset, false, noAssert)
6024 }
6025
6026 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6027 value = +value
6028 offset = offset >>> 0
6029 if (!noAssert) {
6030 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6031 }
6032 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6033 return offset + 8
6034 }
6035
6036 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6037 return writeDouble(this, value, offset, true, noAssert)
6038 }
6039
6040 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6041 return writeDouble(this, value, offset, false, noAssert)
6042 }
6043
6044 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6045 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6046 if (!start) start = 0
6047 if (!end && end !== 0) end = this.length
6048 if (targetStart >= target.length) targetStart = target.length
6049 if (!targetStart) targetStart = 0
6050 if (end > 0 && end < start) end = start
6051
6052 // Copy 0 bytes; we're done
6053 if (end === start) return 0
6054 if (target.length === 0 || this.length === 0) return 0
6055
6056 // Fatal error conditions
6057 if (targetStart < 0) {
6058 throw new RangeError('targetStart out of bounds')
6059 }
6060 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6061 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6062
6063 // Are we oob?
6064 if (end > this.length) end = this.length
6065 if (target.length - targetStart < end - start) {
6066 end = target.length - targetStart + start
6067 }
6068
6069 var len = end - start
6070 var i
6071
6072 if (this === target && start < targetStart && targetStart < end) {
6073 // descending copy from end
6074 for (i = len - 1; i >= 0; --i) {
6075 target[i + targetStart] = this[i + start]
6076 }
6077 } else if (len < 1000) {
6078 // ascending copy from start
6079 for (i = 0; i < len; ++i) {
6080 target[i + targetStart] = this[i + start]
6081 }
6082 } else {
6083 Uint8Array.prototype.set.call(
6084 target,
6085 this.subarray(start, start + len),
6086 targetStart
6087 )
6088 }
6089
6090 return len
6091 }
6092
6093 // Usage:
6094 // buffer.fill(number[, offset[, end]])
6095 // buffer.fill(buffer[, offset[, end]])
6096 // buffer.fill(string[, offset[, end]][, encoding])
6097 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6098 // Handle string cases:
6099 if (typeof val === 'string') {
6100 if (typeof start === 'string') {
6101 encoding = start
6102 start = 0
6103 end = this.length
6104 } else if (typeof end === 'string') {
6105 encoding = end
6106 end = this.length
6107 }
6108 if (val.length === 1) {
6109 var code = val.charCodeAt(0)
6110 if (code < 256) {
6111 val = code
6112 }
6113 }
6114 if (encoding !== undefined && typeof encoding !== 'string') {
6115 throw new TypeError('encoding must be a string')
6116 }
6117 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6118 throw new TypeError('Unknown encoding: ' + encoding)
6119 }
6120 } else if (typeof val === 'number') {
6121 val = val & 255
6122 }
6123
6124 // Invalid ranges are not set to a default, so can range check early.
6125 if (start < 0 || this.length < start || this.length < end) {
6126 throw new RangeError('Out of range index')
6127 }
6128
6129 if (end <= start) {
6130 return this
6131 }
6132
6133 start = start >>> 0
6134 end = end === undefined ? this.length : end >>> 0
6135
6136 if (!val) val = 0
6137
6138 var i
6139 if (typeof val === 'number') {
6140 for (i = start; i < end; ++i) {
6141 this[i] = val
6142 }
6143 } else {
6144 var bytes = Buffer.isBuffer(val)
6145 ? val
6146 : new Buffer(val, encoding)
6147 var len = bytes.length
6148 for (i = 0; i < end - start; ++i) {
6149 this[i + start] = bytes[i % len]
6150 }
6151 }
6152
6153 return this
6154 }
6155
6156 // HELPER FUNCTIONS
6157 // ================
6158
6159 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6160
6161 function base64clean (str) {
6162 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6163 str = str.trim().replace(INVALID_BASE64_RE, '')
6164 // Node converts strings with length < 2 to ''
6165 if (str.length < 2) return ''
6166 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6167 while (str.length % 4 !== 0) {
6168 str = str + '='
6169 }
6170 return str
6171 }
6172
6173 function toHex (n) {
6174 if (n < 16) return '0' + n.toString(16)
6175 return n.toString(16)
6176 }
6177
6178 function utf8ToBytes (string, units) {
6179 units = units || Infinity
6180 var codePoint
6181 var length = string.length
6182 var leadSurrogate = null
6183 var bytes = []
6184
6185 for (var i = 0; i < length; ++i) {
6186 codePoint = string.charCodeAt(i)
6187
6188 // is surrogate component
6189 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6190 // last char was a lead
6191 if (!leadSurrogate) {
6192 // no lead yet
6193 if (codePoint > 0xDBFF) {
6194 // unexpected trail
6195 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6196 continue
6197 } else if (i + 1 === length) {
6198 // unpaired lead
6199 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6200 continue
6201 }
6202
6203 // valid lead
6204 leadSurrogate = codePoint
6205
6206 continue
6207 }
6208
6209 // 2 leads in a row
6210 if (codePoint < 0xDC00) {
6211 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6212 leadSurrogate = codePoint
6213 continue
6214 }
6215
6216 // valid surrogate pair
6217 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6218 } else if (leadSurrogate) {
6219 // valid bmp char, but last char was a lead
6220 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6221 }
6222
6223 leadSurrogate = null
6224
6225 // encode utf8
6226 if (codePoint < 0x80) {
6227 if ((units -= 1) < 0) break
6228 bytes.push(codePoint)
6229 } else if (codePoint < 0x800) {
6230 if ((units -= 2) < 0) break
6231 bytes.push(
6232 codePoint >> 0x6 | 0xC0,
6233 codePoint & 0x3F | 0x80
6234 )
6235 } else if (codePoint < 0x10000) {
6236 if ((units -= 3) < 0) break
6237 bytes.push(
6238 codePoint >> 0xC | 0xE0,
6239 codePoint >> 0x6 & 0x3F | 0x80,
6240 codePoint & 0x3F | 0x80
6241 )
6242 } else if (codePoint < 0x110000) {
6243 if ((units -= 4) < 0) break
6244 bytes.push(
6245 codePoint >> 0x12 | 0xF0,
6246 codePoint >> 0xC & 0x3F | 0x80,
6247 codePoint >> 0x6 & 0x3F | 0x80,
6248 codePoint & 0x3F | 0x80
6249 )
6250 } else {
6251 throw new Error('Invalid code point')
6252 }
6253 }
6254
6255 return bytes
6256 }
6257
6258 function asciiToBytes (str) {
6259 var byteArray = []
6260 for (var i = 0; i < str.length; ++i) {
6261 // Node's code seems to be doing this and not & 0x7F..
6262 byteArray.push(str.charCodeAt(i) & 0xFF)
6263 }
6264 return byteArray
6265 }
6266
6267 function utf16leToBytes (str, units) {
6268 var c, hi, lo
6269 var byteArray = []
6270 for (var i = 0; i < str.length; ++i) {
6271 if ((units -= 2) < 0) break
6272
6273 c = str.charCodeAt(i)
6274 hi = c >> 8
6275 lo = c % 256
6276 byteArray.push(lo)
6277 byteArray.push(hi)
6278 }
6279
6280 return byteArray
6281 }
6282
6283 function base64ToBytes (str) {
6284 return base64.toByteArray(base64clean(str))
6285 }
6286
6287 function blitBuffer (src, dst, offset, length) {
6288 for (var i = 0; i < length; ++i) {
6289 if ((i + offset >= dst.length) || (i >= src.length)) break
6290 dst[i + offset] = src[i]
6291 }
6292 return i
6293 }
6294
6295 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6296 function isArrayBufferView (obj) {
6297 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6298 }
6299
6300 function numberIsNaN (obj) {
6301 return obj !== obj // eslint-disable-line no-self-compare
6302 }
6303
6304 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6305 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6306 var e, m
6307 var eLen = nBytes * 8 - mLen - 1
6308 var eMax = (1 << eLen) - 1
6309 var eBias = eMax >> 1
6310 var nBits = -7
6311 var i = isLE ? (nBytes - 1) : 0
6312 var d = isLE ? -1 : 1
6313 var s = buffer[offset + i]
6314
6315 i += d
6316
6317 e = s & ((1 << (-nBits)) - 1)
6318 s >>= (-nBits)
6319 nBits += eLen
6320 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6321
6322 m = e & ((1 << (-nBits)) - 1)
6323 e >>= (-nBits)
6324 nBits += mLen
6325 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6326
6327 if (e === 0) {
6328 e = 1 - eBias
6329 } else if (e === eMax) {
6330 return m ? NaN : ((s ? -1 : 1) * Infinity)
6331 } else {
6332 m = m + Math.pow(2, mLen)
6333 e = e - eBias
6334 }
6335 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6336 }
6337
6338 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6339 var e, m, c
6340 var eLen = nBytes * 8 - mLen - 1
6341 var eMax = (1 << eLen) - 1
6342 var eBias = eMax >> 1
6343 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6344 var i = isLE ? 0 : (nBytes - 1)
6345 var d = isLE ? 1 : -1
6346 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6347
6348 value = Math.abs(value)
6349
6350 if (isNaN(value) || value === Infinity) {
6351 m = isNaN(value) ? 1 : 0
6352 e = eMax
6353 } else {
6354 e = Math.floor(Math.log(value) / Math.LN2)
6355 if (value * (c = Math.pow(2, -e)) < 1) {
6356 e--
6357 c *= 2
6358 }
6359 if (e + eBias >= 1) {
6360 value += rt / c
6361 } else {
6362 value += rt * Math.pow(2, 1 - eBias)
6363 }
6364 if (value * c >= 2) {
6365 e++
6366 c /= 2
6367 }
6368
6369 if (e + eBias >= eMax) {
6370 m = 0
6371 e = eMax
6372 } else if (e + eBias >= 1) {
6373 m = (value * c - 1) * Math.pow(2, mLen)
6374 e = e + eBias
6375 } else {
6376 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6377 e = 0
6378 }
6379 }
6380
6381 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6382
6383 e = (e << mLen) | m
6384 eLen += mLen
6385 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6386
6387 buffer[offset + i - d] |= s * 128
6388 }
6389
6390 },{}],4:[function(require,module,exports){
6391 window.basex = require('base-x')
6392 },{"base-x":5}],5:[function(require,module,exports){
6393 // base-x encoding
6394 // Forked from https://github.com/cryptocoinjs/bs58
6395 // Originally written by Mike Hearn for BitcoinJ
6396 // Copyright (c) 2011 Google Inc
6397 // Ported to JavaScript by Stefan Thomas
6398 // Merged Buffer refactorings from base58-native by Stephen Pair
6399 // Copyright (c) 2013 BitPay Inc
6400
6401 var Buffer = require('safe-buffer').Buffer
6402
6403 module.exports = function base (ALPHABET) {
6404 var ALPHABET_MAP = {}
6405 var BASE = ALPHABET.length
6406 var LEADER = ALPHABET.charAt(0)
6407
6408 // pre-compute lookup table
6409 for (var z = 0; z < ALPHABET.length; z++) {
6410 var x = ALPHABET.charAt(z)
6411
6412 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6413 ALPHABET_MAP[x] = z
6414 }
6415
6416 function encode (source) {
6417 if (source.length === 0) return ''
6418
6419 var digits = [0]
6420 for (var i = 0; i < source.length; ++i) {
6421 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6422 carry += digits[j] << 8
6423 digits[j] = carry % BASE
6424 carry = (carry / BASE) | 0
6425 }
6426
6427 while (carry > 0) {
6428 digits.push(carry % BASE)
6429 carry = (carry / BASE) | 0
6430 }
6431 }
6432
6433 var string = ''
6434
6435 // deal with leading zeros
6436 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6437 // convert digits to a string
6438 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6439
6440 return string
6441 }
6442
6443 function decodeUnsafe (string) {
6444 if (string.length === 0) return Buffer.allocUnsafe(0)
6445
6446 var bytes = [0]
6447 for (var i = 0; i < string.length; i++) {
6448 var value = ALPHABET_MAP[string[i]]
6449 if (value === undefined) return
6450
6451 for (var j = 0, carry = value; j < bytes.length; ++j) {
6452 carry += bytes[j] * BASE
6453 bytes[j] = carry & 0xff
6454 carry >>= 8
6455 }
6456
6457 while (carry > 0) {
6458 bytes.push(carry & 0xff)
6459 carry >>= 8
6460 }
6461 }
6462
6463 // deal with leading zeros
6464 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6465 bytes.push(0)
6466 }
6467
6468 return Buffer.from(bytes.reverse())
6469 }
6470
6471 function decode (string) {
6472 var buffer = decodeUnsafe(string)
6473 if (buffer) return buffer
6474
6475 throw new Error('Non-base' + BASE + ' character')
6476 }
6477
6478 return {
6479 encode: encode,
6480 decodeUnsafe: decodeUnsafe,
6481 decode: decode
6482 }
6483 }
6484
6485 },{"safe-buffer":6}],6:[function(require,module,exports){
6486 module.exports = require('buffer')
6487
6488 },{"buffer":2}]},{},[4])(4)
6489 });</script>
6490 <script>(function (root) {
6491 "use strict";
6492
6493 /***** unorm.js *****/
6494
6495 /*
6496 * UnicodeNormalizer 1.0.0
6497 * Copyright (c) 2008 Matsuza
6498 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6499 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6500 * $Rev: 13309 $
6501 */
6502
6503 var DEFAULT_FEATURE = [null, 0, {}];
6504 var CACHE_THRESHOLD = 10;
6505 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6506 var NCount = VCount * TCount; // 588
6507 var SCount = LCount * NCount; // 11172
6508
6509 var UChar = function(cp, feature){
6510 this.codepoint = cp;
6511 this.feature = feature;
6512 };
6513
6514 // Strategies
6515 var cache = {};
6516 var cacheCounter = [];
6517 for (var i = 0; i <= 0xFF; ++i){
6518 cacheCounter[i] = 0;
6519 }
6520
6521 function fromCache(next, cp, needFeature){
6522 var ret = cache[cp];
6523 if(!ret){
6524 ret = next(cp, needFeature);
6525 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6526 cache[cp] = ret;
6527 }
6528 }
6529 return ret;
6530 }
6531
6532 function fromData(next, cp, needFeature){
6533 var hash = cp & 0xFF00;
6534 var dunit = UChar.udata[hash] || {};
6535 var f = dunit[cp];
6536 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6537 }
6538 function fromCpOnly(next, cp, needFeature){
6539 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6540 }
6541 function fromRuleBasedJamo(next, cp, needFeature){
6542 var j;
6543 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6544 return next(cp, needFeature);
6545 }
6546 if(LBase <= cp && cp < LBase + LCount){
6547 var c = {};
6548 var base = (cp - LBase) * VCount;
6549 for (j = 0; j < VCount; ++j){
6550 c[VBase + j] = SBase + TCount * (j + base);
6551 }
6552 return new UChar(cp, [,,c]);
6553 }
6554
6555 var SIndex = cp - SBase;
6556 var TIndex = SIndex % TCount;
6557 var feature = [];
6558 if(TIndex !== 0){
6559 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6560 } else {
6561 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6562 feature[2] = {};
6563 for (j = 1; j < TCount; ++j){
6564 feature[2][TBase + j] = cp + j;
6565 }
6566 }
6567 return new UChar(cp, feature);
6568 }
6569 function fromCpFilter(next, cp, needFeature){
6570 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6571 }
6572
6573 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6574
6575 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6576 return function (cp, needFeature) {
6577 return strategy(next, cp, needFeature);
6578 };
6579 }, null);
6580
6581 UChar.isHighSurrogate = function(cp){
6582 return cp >= 0xD800 && cp <= 0xDBFF;
6583 };
6584 UChar.isLowSurrogate = function(cp){
6585 return cp >= 0xDC00 && cp <= 0xDFFF;
6586 };
6587
6588 UChar.prototype.prepFeature = function(){
6589 if(!this.feature){
6590 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6591 }
6592 };
6593
6594 UChar.prototype.toString = function(){
6595 if(this.codepoint < 0x10000){
6596 return String.fromCharCode(this.codepoint);
6597 } else {
6598 var x = this.codepoint - 0x10000;
6599 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6600 }
6601 };
6602
6603 UChar.prototype.getDecomp = function(){
6604 this.prepFeature();
6605 return this.feature[0] || null;
6606 };
6607
6608 UChar.prototype.isCompatibility = function(){
6609 this.prepFeature();
6610 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6611 };
6612 UChar.prototype.isExclude = function(){
6613 this.prepFeature();
6614 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6615 };
6616 UChar.prototype.getCanonicalClass = function(){
6617 this.prepFeature();
6618 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6619 };
6620 UChar.prototype.getComposite = function(following){
6621 this.prepFeature();
6622 if(!this.feature[2]){
6623 return null;
6624 }
6625 var cp = this.feature[2][following.codepoint];
6626 return cp ? UChar.fromCharCode(cp) : null;
6627 };
6628
6629 var UCharIterator = function(str){
6630 this.str = str;
6631 this.cursor = 0;
6632 };
6633 UCharIterator.prototype.next = function(){
6634 if(!!this.str && this.cursor < this.str.length){
6635 var cp = this.str.charCodeAt(this.cursor++);
6636 var d;
6637 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6638 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6639 ++this.cursor;
6640 }
6641 return UChar.fromCharCode(cp);
6642 } else {
6643 this.str = null;
6644 return null;
6645 }
6646 };
6647
6648 var RecursDecompIterator = function(it, cano){
6649 this.it = it;
6650 this.canonical = cano;
6651 this.resBuf = [];
6652 };
6653
6654 RecursDecompIterator.prototype.next = function(){
6655 function recursiveDecomp(cano, uchar){
6656 var decomp = uchar.getDecomp();
6657 if(!!decomp && !(cano && uchar.isCompatibility())){
6658 var ret = [];
6659 for(var i = 0; i < decomp.length; ++i){
6660 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6661 ret = ret.concat(a);
6662 }
6663 return ret;
6664 } else {
6665 return [uchar];
6666 }
6667 }
6668 if(this.resBuf.length === 0){
6669 var uchar = this.it.next();
6670 if(!uchar){
6671 return null;
6672 }
6673 this.resBuf = recursiveDecomp(this.canonical, uchar);
6674 }
6675 return this.resBuf.shift();
6676 };
6677
6678 var DecompIterator = function(it){
6679 this.it = it;
6680 this.resBuf = [];
6681 };
6682
6683 DecompIterator.prototype.next = function(){
6684 var cc;
6685 if(this.resBuf.length === 0){
6686 do{
6687 var uchar = this.it.next();
6688 if(!uchar){
6689 break;
6690 }
6691 cc = uchar.getCanonicalClass();
6692 var inspt = this.resBuf.length;
6693 if(cc !== 0){
6694 for(; inspt > 0; --inspt){
6695 var uchar2 = this.resBuf[inspt - 1];
6696 var cc2 = uchar2.getCanonicalClass();
6697 if(cc2 <= cc){
6698 break;
6699 }
6700 }
6701 }
6702 this.resBuf.splice(inspt, 0, uchar);
6703 } while(cc !== 0);
6704 }
6705 return this.resBuf.shift();
6706 };
6707
6708 var CompIterator = function(it){
6709 this.it = it;
6710 this.procBuf = [];
6711 this.resBuf = [];
6712 this.lastClass = null;
6713 };
6714
6715 CompIterator.prototype.next = function(){
6716 while(this.resBuf.length === 0){
6717 var uchar = this.it.next();
6718 if(!uchar){
6719 this.resBuf = this.procBuf;
6720 this.procBuf = [];
6721 break;
6722 }
6723 if(this.procBuf.length === 0){
6724 this.lastClass = uchar.getCanonicalClass();
6725 this.procBuf.push(uchar);
6726 } else {
6727 var starter = this.procBuf[0];
6728 var composite = starter.getComposite(uchar);
6729 var cc = uchar.getCanonicalClass();
6730 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6731 this.procBuf[0] = composite;
6732 } else {
6733 if(cc === 0){
6734 this.resBuf = this.procBuf;
6735 this.procBuf = [];
6736 }
6737 this.lastClass = cc;
6738 this.procBuf.push(uchar);
6739 }
6740 }
6741 }
6742 return this.resBuf.shift();
6743 };
6744
6745 var createIterator = function(mode, str){
6746 switch(mode){
6747 case "NFD":
6748 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6749 case "NFKD":
6750 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6751 case "NFC":
6752 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6753 case "NFKC":
6754 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6755 }
6756 throw mode + " is invalid";
6757 };
6758 var normalize = function(mode, str){
6759 var it = createIterator(mode, str);
6760 var ret = "";
6761 var uchar;
6762 while(!!(uchar = it.next())){
6763 ret += uchar.toString();
6764 }
6765 return ret;
6766 };
6767
6768 /* API functions */
6769 function nfd(str){
6770 return normalize("NFD", str);
6771 }
6772
6773 function nfkd(str){
6774 return normalize("NFKD", str);
6775 }
6776
6777 function nfc(str){
6778 return normalize("NFC", str);
6779 }
6780
6781 function nfkc(str){
6782 return normalize("NFKC", str);
6783 }
6784
6785 /* Unicode data */
6786 UChar.udata={
6787 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]]},
6788 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]},
6789 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]},
6790 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]},
6791 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]]},
6792 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]},
6793 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]},
6794 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]},
6795 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]},
6796 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]},
6797 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]},
6798 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]},
6799 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]},
6800 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]]},
6801 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]},
6802 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]},
6803 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]},
6804 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]},
6805 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6806 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]},
6807 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6808 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6809 5632:{71231:[,9],71350:[,9],71351:[,7]},
6810 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6811 6144:{6313:[,228]},
6812 6400:{6457:[,222],6458:[,230],6459:[,220]},
6813 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]},
6814 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]},
6815 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]},
6816 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]},
6817 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]]},
6818 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}]},
6819 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]},
6820 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}]},
6821 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]]},
6822 8960:{9001:[[12296]],9002:[[12297]]},
6823 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]},
6824 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]},
6825 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6826 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]},
6827 11776:{11935:[[27597],256],12019:[[40863],256]},
6828 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]},
6829 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]},
6830 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]},
6831 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]},
6832 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]},
6833 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6834 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6835 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]},
6836 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6837 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]},
6838 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6839 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6840 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6841 48128:{113822:[,1]},
6842 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]},
6843 53760:{119362:[,230],119363:[,230],119364:[,230]},
6844 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]},
6845 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]},
6846 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]},
6847 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]},
6848 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6849 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]},
6850 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]},
6851 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]},
6852 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]]},
6853 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]]},
6854 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]]},
6855 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]},
6856 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]},
6857 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]},
6858 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]},
6859 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]}
6860
6861 };
6862
6863 /***** Module to export */
6864 var unorm = {
6865 nfc: nfc,
6866 nfd: nfd,
6867 nfkc: nfkc,
6868 nfkd: nfkd
6869 };
6870
6871 /*globals module:true,define:true*/
6872
6873 // CommonJS
6874 if (typeof module === "object") {
6875 module.exports = unorm;
6876
6877 // AMD
6878 } else if (typeof define === "function" && define.amd) {
6879 define("unorm", function () {
6880 return unorm;
6881 });
6882
6883 // Global
6884 } else {
6885 root.unorm = unorm;
6886 }
6887
6888 /***** Export as shim for String::normalize method *****/
6889 /*
6890 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6891
6892 21.1.3.12 String.prototype.normalize(form="NFC")
6893 When the normalize method is called with one argument form, the following steps are taken:
6894
6895 1. Let O be CheckObjectCoercible(this value).
6896 2. Let S be ToString(O).
6897 3. ReturnIfAbrupt(S).
6898 4. If form is not provided or undefined let form be "NFC".
6899 5. Let f be ToString(form).
6900 6. ReturnIfAbrupt(f).
6901 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6902 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.
6903 9. Return ns.
6904
6905 The length property of the normalize method is 0.
6906
6907 *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.
6908 */
6909 unorm.shimApplied = false;
6910
6911 if (!String.prototype.normalize) {
6912 String.prototype.normalize = function(form) {
6913 var str = "" + this;
6914 form = form === undefined ? "NFC" : form;
6915
6916 if (form === "NFC") {
6917 return unorm.nfc(str);
6918 } else if (form === "NFD") {
6919 return unorm.nfd(str);
6920 } else if (form === "NFKC") {
6921 return unorm.nfkc(str);
6922 } else if (form === "NFKD") {
6923 return unorm.nfkd(str);
6924 } else {
6925 throw new RangeError("Invalid normalization form: " + form);
6926 }
6927 };
6928
6929 unorm.shimApplied = true;
6930 }
6931 }(this));
6932 </script>
6933 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6934 !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)
6935 },_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))
6936 },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});
6937 </script>
6938 <script>/*!
6939 * Bootstrap v3.2.0 (http://getbootstrap.com)
6940 * Copyright 2011-2014 Twitter, Inc.
6941 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6942 */
6943 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>
6944 <script>(function() {
6945 'use strict';
6946
6947 /**
6948 * Extend an Object with another Object's properties.
6949 *
6950 * The source objects are specified as additional arguments.
6951 *
6952 * @param dst Object the object to extend.
6953 *
6954 * @return Object the final object.
6955 */
6956 var _extend = function(dst) {
6957 var sources = Array.prototype.slice.call(arguments, 1);
6958 for (var i=0; i<sources.length; ++i) {
6959 var src = sources[i];
6960 for (var p in src) {
6961 if (src.hasOwnProperty(p)) dst[p] = src[p];
6962 }
6963 }
6964 return dst;
6965 };
6966
6967
6968 /**
6969 * Defer execution of given function.
6970 * @param {Function} func
6971 */
6972 var _defer = function(func) {
6973 if (typeof setImmediate === 'function') {
6974 return setImmediate(func);
6975 } else {
6976 return setTimeout(func, 0);
6977 }
6978 };
6979
6980 /**
6981 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6982 */
6983 var Levenshtein = {
6984 /**
6985 * Calculate levenshtein distance of the two strings.
6986 *
6987 * @param str1 String the first string.
6988 * @param str2 String the second string.
6989 * @return Integer the levenshtein distance (0 and above).
6990 */
6991 get: function(str1, str2) {
6992 // base cases
6993 if (str1 === str2) return 0;
6994 if (str1.length === 0) return str2.length;
6995 if (str2.length === 0) return str1.length;
6996
6997 // two rows
6998 var prevRow = new Array(str2.length + 1),
6999 curCol, nextCol, i, j, tmp;
7000
7001 // initialise previous row
7002 for (i=0; i<prevRow.length; ++i) {
7003 prevRow[i] = i;
7004 }
7005
7006 // calculate current row distance from previous row
7007 for (i=0; i<str1.length; ++i) {
7008 nextCol = i + 1;
7009
7010 for (j=0; j<str2.length; ++j) {
7011 curCol = nextCol;
7012
7013 // substution
7014 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7015 // insertion
7016 tmp = curCol + 1;
7017 if (nextCol > tmp) {
7018 nextCol = tmp;
7019 }
7020 // deletion
7021 tmp = prevRow[j + 1] + 1;
7022 if (nextCol > tmp) {
7023 nextCol = tmp;
7024 }
7025
7026 // copy current col value into previous (in preparation for next iteration)
7027 prevRow[j] = curCol;
7028 }
7029
7030 // copy last col value into previous (in preparation for next iteration)
7031 prevRow[j] = nextCol;
7032 }
7033
7034 return nextCol;
7035 },
7036
7037 /**
7038 * Asynchronously calculate levenshtein distance of the two strings.
7039 *
7040 * @param str1 String the first string.
7041 * @param str2 String the second string.
7042 * @param cb Function callback function with signature: function(Error err, int distance)
7043 * @param [options] Object additional options.
7044 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7045 */
7046 getAsync: function(str1, str2, cb, options) {
7047 options = _extend({}, {
7048 progress: null
7049 }, options);
7050
7051 // base cases
7052 if (str1 === str2) return cb(null, 0);
7053 if (str1.length === 0) return cb(null, str2.length);
7054 if (str2.length === 0) return cb(null, str1.length);
7055
7056 // two rows
7057 var prevRow = new Array(str2.length + 1),
7058 curCol, nextCol,
7059 i, j, tmp,
7060 startTime, currentTime;
7061
7062 // initialise previous row
7063 for (i=0; i<prevRow.length; ++i) {
7064 prevRow[i] = i;
7065 }
7066
7067 nextCol = 1;
7068 i = 0;
7069 j = -1;
7070
7071 var __calculate = function() {
7072 // reset timer
7073 startTime = new Date().valueOf();
7074 currentTime = startTime;
7075
7076 // keep going until one second has elapsed
7077 while (currentTime - startTime < 1000) {
7078 // reached end of current row?
7079 if (str2.length <= (++j)) {
7080 // copy current into previous (in preparation for next iteration)
7081 prevRow[j] = nextCol;
7082
7083 // if already done all chars
7084 if (str1.length <= (++i)) {
7085 return cb(null, nextCol);
7086 }
7087 // else if we have more left to do
7088 else {
7089 nextCol = i + 1;
7090 j = 0;
7091 }
7092 }
7093
7094 // calculation
7095 curCol = nextCol;
7096
7097 // substution
7098 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7099 // insertion
7100 tmp = curCol + 1;
7101 if (nextCol > tmp) {
7102 nextCol = tmp;
7103 }
7104 // deletion
7105 tmp = prevRow[j + 1] + 1;
7106 if (nextCol > tmp) {
7107 nextCol = tmp;
7108 }
7109
7110 // copy current into previous (in preparation for next iteration)
7111 prevRow[j] = curCol;
7112
7113 // get current time
7114 currentTime = new Date().valueOf();
7115 }
7116
7117 // send a progress update?
7118 if (null !== options.progress) {
7119 try {
7120 options.progress.call(null, (i * 100.0/ str1.length));
7121 } catch (err) {
7122 return cb('Progress callback: ' + err.toString());
7123 }
7124 }
7125
7126 // next iteration
7127 _defer(__calculate);
7128 };
7129
7130 __calculate();
7131 }
7132
7133 };
7134
7135 // amd
7136 if (typeof define !== "undefined" && define !== null && define.amd) {
7137 define(function() {
7138 return Levenshtein;
7139 });
7140 }
7141 // commonjs
7142 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7143 module.exports = Levenshtein;
7144 }
7145 // web worker
7146 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7147 self.Levenshtein = Levenshtein;
7148 }
7149 // browser main thread
7150 else if (typeof window !== "undefined" && window !== null) {
7151 window.Levenshtein = Levenshtein;
7152 }
7153 }());
7154
7155 </script>
7156 <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},
7157 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;
7158 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-
7159 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]=
7160 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},
7161 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=
7162 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-
7163 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,
7164 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=
7165 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&&
7166 (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,
7167 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)-
7168 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:"+
7169 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:"+
7170 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+
7171 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),
7172 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>
7173 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],
7174 [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,
7175 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,
7176 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,
7177 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,
7178 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,
7179 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*
7180 (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,
7181 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),
7182 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",
7183 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7184 </script>
7185 <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){
7186 // (public) Constructor
7187 function BigInteger(a, b, c) {
7188 if (!(this instanceof BigInteger))
7189 return new BigInteger(a, b, c)
7190
7191 if (a != null) {
7192 if ("number" == typeof a) this.fromNumber(a, b, c)
7193 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7194 else this.fromString(a, b)
7195 }
7196 }
7197
7198 var proto = BigInteger.prototype
7199
7200 // duck-typed isBigInteger
7201 proto.__bigi = require('../package.json').version
7202 BigInteger.isBigInteger = function (obj, check_ver) {
7203 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7204 }
7205
7206 // Bits per digit
7207 var dbits
7208
7209 // am: Compute w_j += (x*this_i), propagate carries,
7210 // c is initial carry, returns final carry.
7211 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7212 // We need to select the fastest one that works in this environment.
7213
7214 // am1: use a single mult and divide to get the high bits,
7215 // max digit bits should be 26 because
7216 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7217 function am1(i, x, w, j, c, n) {
7218 while (--n >= 0) {
7219 var v = x * this[i++] + w[j] + c
7220 c = Math.floor(v / 0x4000000)
7221 w[j++] = v & 0x3ffffff
7222 }
7223 return c
7224 }
7225 // am2 avoids a big mult-and-extract completely.
7226 // Max digit bits should be <= 30 because we do bitwise ops
7227 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7228 function am2(i, x, w, j, c, n) {
7229 var xl = x & 0x7fff,
7230 xh = x >> 15
7231 while (--n >= 0) {
7232 var l = this[i] & 0x7fff
7233 var h = this[i++] >> 15
7234 var m = xh * l + h * xl
7235 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7236 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7237 w[j++] = l & 0x3fffffff
7238 }
7239 return c
7240 }
7241 // Alternately, set max digit bits to 28 since some
7242 // browsers slow down when dealing with 32-bit numbers.
7243 function am3(i, x, w, j, c, n) {
7244 var xl = x & 0x3fff,
7245 xh = x >> 14
7246 while (--n >= 0) {
7247 var l = this[i] & 0x3fff
7248 var h = this[i++] >> 14
7249 var m = xh * l + h * xl
7250 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7251 c = (l >> 28) + (m >> 14) + xh * h
7252 w[j++] = l & 0xfffffff
7253 }
7254 return c
7255 }
7256
7257 // wtf?
7258 BigInteger.prototype.am = am1
7259 dbits = 26
7260
7261 BigInteger.prototype.DB = dbits
7262 BigInteger.prototype.DM = ((1 << dbits) - 1)
7263 var DV = BigInteger.prototype.DV = (1 << dbits)
7264
7265 var BI_FP = 52
7266 BigInteger.prototype.FV = Math.pow(2, BI_FP)
7267 BigInteger.prototype.F1 = BI_FP - dbits
7268 BigInteger.prototype.F2 = 2 * dbits - BI_FP
7269
7270 // Digit conversions
7271 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7272 var BI_RC = new Array()
7273 var rr, vv
7274 rr = "0".charCodeAt(0)
7275 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7276 rr = "a".charCodeAt(0)
7277 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7278 rr = "A".charCodeAt(0)
7279 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7280
7281 function int2char(n) {
7282 return BI_RM.charAt(n)
7283 }
7284
7285 function intAt(s, i) {
7286 var c = BI_RC[s.charCodeAt(i)]
7287 return (c == null) ? -1 : c
7288 }
7289
7290 // (protected) copy this to r
7291 function bnpCopyTo(r) {
7292 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7293 r.t = this.t
7294 r.s = this.s
7295 }
7296
7297 // (protected) set from integer value x, -DV <= x < DV
7298 function bnpFromInt(x) {
7299 this.t = 1
7300 this.s = (x < 0) ? -1 : 0
7301 if (x > 0) this[0] = x
7302 else if (x < -1) this[0] = x + DV
7303 else this.t = 0
7304 }
7305
7306 // return bigint initialized to value
7307 function nbv(i) {
7308 var r = new BigInteger()
7309 r.fromInt(i)
7310 return r
7311 }
7312
7313 // (protected) set from string and radix
7314 function bnpFromString(s, b) {
7315 var self = this
7316
7317 var k
7318 if (b == 16) k = 4
7319 else if (b == 8) k = 3
7320 else if (b == 256) k = 8; // byte array
7321 else if (b == 2) k = 1
7322 else if (b == 32) k = 5
7323 else if (b == 4) k = 2
7324 else {
7325 self.fromRadix(s, b)
7326 return
7327 }
7328 self.t = 0
7329 self.s = 0
7330 var i = s.length,
7331 mi = false,
7332 sh = 0
7333 while (--i >= 0) {
7334 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7335 if (x < 0) {
7336 if (s.charAt(i) == "-") mi = true
7337 continue
7338 }
7339 mi = false
7340 if (sh == 0)
7341 self[self.t++] = x
7342 else if (sh + k > self.DB) {
7343 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7344 self[self.t++] = (x >> (self.DB - sh))
7345 } else
7346 self[self.t - 1] |= x << sh
7347 sh += k
7348 if (sh >= self.DB) sh -= self.DB
7349 }
7350 if (k == 8 && (s[0] & 0x80) != 0) {
7351 self.s = -1
7352 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7353 }
7354 self.clamp()
7355 if (mi) BigInteger.ZERO.subTo(self, self)
7356 }
7357
7358 // (protected) clamp off excess high words
7359 function bnpClamp() {
7360 var c = this.s & this.DM
7361 while (this.t > 0 && this[this.t - 1] == c)--this.t
7362 }
7363
7364 // (public) return string representation in given radix
7365 function bnToString(b) {
7366 var self = this
7367 if (self.s < 0) return "-" + self.negate()
7368 .toString(b)
7369 var k
7370 if (b == 16) k = 4
7371 else if (b == 8) k = 3
7372 else if (b == 2) k = 1
7373 else if (b == 32) k = 5
7374 else if (b == 4) k = 2
7375 else return self.toRadix(b)
7376 var km = (1 << k) - 1,
7377 d, m = false,
7378 r = "",
7379 i = self.t
7380 var p = self.DB - (i * self.DB) % k
7381 if (i-- > 0) {
7382 if (p < self.DB && (d = self[i] >> p) > 0) {
7383 m = true
7384 r = int2char(d)
7385 }
7386 while (i >= 0) {
7387 if (p < k) {
7388 d = (self[i] & ((1 << p) - 1)) << (k - p)
7389 d |= self[--i] >> (p += self.DB - k)
7390 } else {
7391 d = (self[i] >> (p -= k)) & km
7392 if (p <= 0) {
7393 p += self.DB
7394 --i
7395 }
7396 }
7397 if (d > 0) m = true
7398 if (m) r += int2char(d)
7399 }
7400 }
7401 return m ? r : "0"
7402 }
7403
7404 // (public) -this
7405 function bnNegate() {
7406 var r = new BigInteger()
7407 BigInteger.ZERO.subTo(this, r)
7408 return r
7409 }
7410
7411 // (public) |this|
7412 function bnAbs() {
7413 return (this.s < 0) ? this.negate() : this
7414 }
7415
7416 // (public) return + if this > a, - if this < a, 0 if equal
7417 function bnCompareTo(a) {
7418 var r = this.s - a.s
7419 if (r != 0) return r
7420 var i = this.t
7421 r = i - a.t
7422 if (r != 0) return (this.s < 0) ? -r : r
7423 while (--i >= 0)
7424 if ((r = this[i] - a[i]) != 0) return r
7425 return 0
7426 }
7427
7428 // returns bit length of the integer x
7429 function nbits(x) {
7430 var r = 1,
7431 t
7432 if ((t = x >>> 16) != 0) {
7433 x = t
7434 r += 16
7435 }
7436 if ((t = x >> 8) != 0) {
7437 x = t
7438 r += 8
7439 }
7440 if ((t = x >> 4) != 0) {
7441 x = t
7442 r += 4
7443 }
7444 if ((t = x >> 2) != 0) {
7445 x = t
7446 r += 2
7447 }
7448 if ((t = x >> 1) != 0) {
7449 x = t
7450 r += 1
7451 }
7452 return r
7453 }
7454
7455 // (public) return the number of bits in "this"
7456 function bnBitLength() {
7457 if (this.t <= 0) return 0
7458 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7459 }
7460
7461 // (public) return the number of bytes in "this"
7462 function bnByteLength() {
7463 return this.bitLength() >> 3
7464 }
7465
7466 // (protected) r = this << n*DB
7467 function bnpDLShiftTo(n, r) {
7468 var i
7469 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7470 for (i = n - 1; i >= 0; --i) r[i] = 0
7471 r.t = this.t + n
7472 r.s = this.s
7473 }
7474
7475 // (protected) r = this >> n*DB
7476 function bnpDRShiftTo(n, r) {
7477 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7478 r.t = Math.max(this.t - n, 0)
7479 r.s = this.s
7480 }
7481
7482 // (protected) r = this << n
7483 function bnpLShiftTo(n, r) {
7484 var self = this
7485 var bs = n % self.DB
7486 var cbs = self.DB - bs
7487 var bm = (1 << cbs) - 1
7488 var ds = Math.floor(n / self.DB),
7489 c = (self.s << bs) & self.DM,
7490 i
7491 for (i = self.t - 1; i >= 0; --i) {
7492 r[i + ds + 1] = (self[i] >> cbs) | c
7493 c = (self[i] & bm) << bs
7494 }
7495 for (i = ds - 1; i >= 0; --i) r[i] = 0
7496 r[ds] = c
7497 r.t = self.t + ds + 1
7498 r.s = self.s
7499 r.clamp()
7500 }
7501
7502 // (protected) r = this >> n
7503 function bnpRShiftTo(n, r) {
7504 var self = this
7505 r.s = self.s
7506 var ds = Math.floor(n / self.DB)
7507 if (ds >= self.t) {
7508 r.t = 0
7509 return
7510 }
7511 var bs = n % self.DB
7512 var cbs = self.DB - bs
7513 var bm = (1 << bs) - 1
7514 r[0] = self[ds] >> bs
7515 for (var i = ds + 1; i < self.t; ++i) {
7516 r[i - ds - 1] |= (self[i] & bm) << cbs
7517 r[i - ds] = self[i] >> bs
7518 }
7519 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7520 r.t = self.t - ds
7521 r.clamp()
7522 }
7523
7524 // (protected) r = this - a
7525 function bnpSubTo(a, r) {
7526 var self = this
7527 var i = 0,
7528 c = 0,
7529 m = Math.min(a.t, self.t)
7530 while (i < m) {
7531 c += self[i] - a[i]
7532 r[i++] = c & self.DM
7533 c >>= self.DB
7534 }
7535 if (a.t < self.t) {
7536 c -= a.s
7537 while (i < self.t) {
7538 c += self[i]
7539 r[i++] = c & self.DM
7540 c >>= self.DB
7541 }
7542 c += self.s
7543 } else {
7544 c += self.s
7545 while (i < a.t) {
7546 c -= a[i]
7547 r[i++] = c & self.DM
7548 c >>= self.DB
7549 }
7550 c -= a.s
7551 }
7552 r.s = (c < 0) ? -1 : 0
7553 if (c < -1) r[i++] = self.DV + c
7554 else if (c > 0) r[i++] = c
7555 r.t = i
7556 r.clamp()
7557 }
7558
7559 // (protected) r = this * a, r != this,a (HAC 14.12)
7560 // "this" should be the larger one if appropriate.
7561 function bnpMultiplyTo(a, r) {
7562 var x = this.abs(),
7563 y = a.abs()
7564 var i = x.t
7565 r.t = i + y.t
7566 while (--i >= 0) r[i] = 0
7567 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7568 r.s = 0
7569 r.clamp()
7570 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7571 }
7572
7573 // (protected) r = this^2, r != this (HAC 14.16)
7574 function bnpSquareTo(r) {
7575 var x = this.abs()
7576 var i = r.t = 2 * x.t
7577 while (--i >= 0) r[i] = 0
7578 for (i = 0; i < x.t - 1; ++i) {
7579 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7580 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7581 r[i + x.t] -= x.DV
7582 r[i + x.t + 1] = 1
7583 }
7584 }
7585 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7586 r.s = 0
7587 r.clamp()
7588 }
7589
7590 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7591 // r != q, this != m. q or r may be null.
7592 function bnpDivRemTo(m, q, r) {
7593 var self = this
7594 var pm = m.abs()
7595 if (pm.t <= 0) return
7596 var pt = self.abs()
7597 if (pt.t < pm.t) {
7598 if (q != null) q.fromInt(0)
7599 if (r != null) self.copyTo(r)
7600 return
7601 }
7602 if (r == null) r = new BigInteger()
7603 var y = new BigInteger(),
7604 ts = self.s,
7605 ms = m.s
7606 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7607 if (nsh > 0) {
7608 pm.lShiftTo(nsh, y)
7609 pt.lShiftTo(nsh, r)
7610 } else {
7611 pm.copyTo(y)
7612 pt.copyTo(r)
7613 }
7614 var ys = y.t
7615 var y0 = y[ys - 1]
7616 if (y0 == 0) return
7617 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7618 var d1 = self.FV / yt,
7619 d2 = (1 << self.F1) / yt,
7620 e = 1 << self.F2
7621 var i = r.t,
7622 j = i - ys,
7623 t = (q == null) ? new BigInteger() : q
7624 y.dlShiftTo(j, t)
7625 if (r.compareTo(t) >= 0) {
7626 r[r.t++] = 1
7627 r.subTo(t, r)
7628 }
7629 BigInteger.ONE.dlShiftTo(ys, t)
7630 t.subTo(y, y); // "negative" y so we can replace sub with am later
7631 while (y.t < ys) y[y.t++] = 0
7632 while (--j >= 0) {
7633 // Estimate quotient digit
7634 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7635 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7636 y.dlShiftTo(j, t)
7637 r.subTo(t, r)
7638 while (r[i] < --qd) r.subTo(t, r)
7639 }
7640 }
7641 if (q != null) {
7642 r.drShiftTo(ys, q)
7643 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7644 }
7645 r.t = ys
7646 r.clamp()
7647 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7648 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7649 }
7650
7651 // (public) this mod a
7652 function bnMod(a) {
7653 var r = new BigInteger()
7654 this.abs()
7655 .divRemTo(a, null, r)
7656 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7657 return r
7658 }
7659
7660 // Modular reduction using "classic" algorithm
7661 function Classic(m) {
7662 this.m = m
7663 }
7664
7665 function cConvert(x) {
7666 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7667 else return x
7668 }
7669
7670 function cRevert(x) {
7671 return x
7672 }
7673
7674 function cReduce(x) {
7675 x.divRemTo(this.m, null, x)
7676 }
7677
7678 function cMulTo(x, y, r) {
7679 x.multiplyTo(y, r)
7680 this.reduce(r)
7681 }
7682
7683 function cSqrTo(x, r) {
7684 x.squareTo(r)
7685 this.reduce(r)
7686 }
7687
7688 Classic.prototype.convert = cConvert
7689 Classic.prototype.revert = cRevert
7690 Classic.prototype.reduce = cReduce
7691 Classic.prototype.mulTo = cMulTo
7692 Classic.prototype.sqrTo = cSqrTo
7693
7694 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7695 // justification:
7696 // xy == 1 (mod m)
7697 // xy = 1+km
7698 // xy(2-xy) = (1+km)(1-km)
7699 // x[y(2-xy)] = 1-k^2m^2
7700 // x[y(2-xy)] == 1 (mod m^2)
7701 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7702 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7703 // JS multiply "overflows" differently from C/C++, so care is needed here.
7704 function bnpInvDigit() {
7705 if (this.t < 1) return 0
7706 var x = this[0]
7707 if ((x & 1) == 0) return 0
7708 var y = x & 3; // y == 1/x mod 2^2
7709 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7710 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7711 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7712 // last step - calculate inverse mod DV directly
7713 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7714 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7715 // we really want the negative inverse, and -DV < y < DV
7716 return (y > 0) ? this.DV - y : -y
7717 }
7718
7719 // Montgomery reduction
7720 function Montgomery(m) {
7721 this.m = m
7722 this.mp = m.invDigit()
7723 this.mpl = this.mp & 0x7fff
7724 this.mph = this.mp >> 15
7725 this.um = (1 << (m.DB - 15)) - 1
7726 this.mt2 = 2 * m.t
7727 }
7728
7729 // xR mod m
7730 function montConvert(x) {
7731 var r = new BigInteger()
7732 x.abs()
7733 .dlShiftTo(this.m.t, r)
7734 r.divRemTo(this.m, null, r)
7735 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7736 return r
7737 }
7738
7739 // x/R mod m
7740 function montRevert(x) {
7741 var r = new BigInteger()
7742 x.copyTo(r)
7743 this.reduce(r)
7744 return r
7745 }
7746
7747 // x = x/R mod m (HAC 14.32)
7748 function montReduce(x) {
7749 while (x.t <= this.mt2) // pad x so am has enough room later
7750 x[x.t++] = 0
7751 for (var i = 0; i < this.m.t; ++i) {
7752 // faster way of calculating u0 = x[i]*mp mod DV
7753 var j = x[i] & 0x7fff
7754 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7755 // use am to combine the multiply-shift-add into one call
7756 j = i + this.m.t
7757 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7758 // propagate carry
7759 while (x[j] >= x.DV) {
7760 x[j] -= x.DV
7761 x[++j]++
7762 }
7763 }
7764 x.clamp()
7765 x.drShiftTo(this.m.t, x)
7766 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7767 }
7768
7769 // r = "x^2/R mod m"; x != r
7770 function montSqrTo(x, r) {
7771 x.squareTo(r)
7772 this.reduce(r)
7773 }
7774
7775 // r = "xy/R mod m"; x,y != r
7776 function montMulTo(x, y, r) {
7777 x.multiplyTo(y, r)
7778 this.reduce(r)
7779 }
7780
7781 Montgomery.prototype.convert = montConvert
7782 Montgomery.prototype.revert = montRevert
7783 Montgomery.prototype.reduce = montReduce
7784 Montgomery.prototype.mulTo = montMulTo
7785 Montgomery.prototype.sqrTo = montSqrTo
7786
7787 // (protected) true iff this is even
7788 function bnpIsEven() {
7789 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7790 }
7791
7792 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7793 function bnpExp(e, z) {
7794 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7795 var r = new BigInteger(),
7796 r2 = new BigInteger(),
7797 g = z.convert(this),
7798 i = nbits(e) - 1
7799 g.copyTo(r)
7800 while (--i >= 0) {
7801 z.sqrTo(r, r2)
7802 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7803 else {
7804 var t = r
7805 r = r2
7806 r2 = t
7807 }
7808 }
7809 return z.revert(r)
7810 }
7811
7812 // (public) this^e % m, 0 <= e < 2^32
7813 function bnModPowInt(e, m) {
7814 var z
7815 if (e < 256 || m.isEven()) z = new Classic(m)
7816 else z = new Montgomery(m)
7817 return this.exp(e, z)
7818 }
7819
7820 // protected
7821 proto.copyTo = bnpCopyTo
7822 proto.fromInt = bnpFromInt
7823 proto.fromString = bnpFromString
7824 proto.clamp = bnpClamp
7825 proto.dlShiftTo = bnpDLShiftTo
7826 proto.drShiftTo = bnpDRShiftTo
7827 proto.lShiftTo = bnpLShiftTo
7828 proto.rShiftTo = bnpRShiftTo
7829 proto.subTo = bnpSubTo
7830 proto.multiplyTo = bnpMultiplyTo
7831 proto.squareTo = bnpSquareTo
7832 proto.divRemTo = bnpDivRemTo
7833 proto.invDigit = bnpInvDigit
7834 proto.isEven = bnpIsEven
7835 proto.exp = bnpExp
7836
7837 // public
7838 proto.toString = bnToString
7839 proto.negate = bnNegate
7840 proto.abs = bnAbs
7841 proto.compareTo = bnCompareTo
7842 proto.bitLength = bnBitLength
7843 proto.byteLength = bnByteLength
7844 proto.mod = bnMod
7845 proto.modPowInt = bnModPowInt
7846
7847 // (public)
7848 function bnClone() {
7849 var r = new BigInteger()
7850 this.copyTo(r)
7851 return r
7852 }
7853
7854 // (public) return value as integer
7855 function bnIntValue() {
7856 if (this.s < 0) {
7857 if (this.t == 1) return this[0] - this.DV
7858 else if (this.t == 0) return -1
7859 } else if (this.t == 1) return this[0]
7860 else if (this.t == 0) return 0
7861 // assumes 16 < DB < 32
7862 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7863 }
7864
7865 // (public) return value as byte
7866 function bnByteValue() {
7867 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7868 }
7869
7870 // (public) return value as short (assumes DB>=16)
7871 function bnShortValue() {
7872 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7873 }
7874
7875 // (protected) return x s.t. r^x < DV
7876 function bnpChunkSize(r) {
7877 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7878 }
7879
7880 // (public) 0 if this == 0, 1 if this > 0
7881 function bnSigNum() {
7882 if (this.s < 0) return -1
7883 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7884 else return 1
7885 }
7886
7887 // (protected) convert to radix string
7888 function bnpToRadix(b) {
7889 if (b == null) b = 10
7890 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7891 var cs = this.chunkSize(b)
7892 var a = Math.pow(b, cs)
7893 var d = nbv(a),
7894 y = new BigInteger(),
7895 z = new BigInteger(),
7896 r = ""
7897 this.divRemTo(d, y, z)
7898 while (y.signum() > 0) {
7899 r = (a + z.intValue())
7900 .toString(b)
7901 .substr(1) + r
7902 y.divRemTo(d, y, z)
7903 }
7904 return z.intValue()
7905 .toString(b) + r
7906 }
7907
7908 // (protected) convert from radix string
7909 function bnpFromRadix(s, b) {
7910 var self = this
7911 self.fromInt(0)
7912 if (b == null) b = 10
7913 var cs = self.chunkSize(b)
7914 var d = Math.pow(b, cs),
7915 mi = false,
7916 j = 0,
7917 w = 0
7918 for (var i = 0; i < s.length; ++i) {
7919 var x = intAt(s, i)
7920 if (x < 0) {
7921 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7922 continue
7923 }
7924 w = b * w + x
7925 if (++j >= cs) {
7926 self.dMultiply(d)
7927 self.dAddOffset(w, 0)
7928 j = 0
7929 w = 0
7930 }
7931 }
7932 if (j > 0) {
7933 self.dMultiply(Math.pow(b, j))
7934 self.dAddOffset(w, 0)
7935 }
7936 if (mi) BigInteger.ZERO.subTo(self, self)
7937 }
7938
7939 // (protected) alternate constructor
7940 function bnpFromNumber(a, b, c) {
7941 var self = this
7942 if ("number" == typeof b) {
7943 // new BigInteger(int,int,RNG)
7944 if (a < 2) self.fromInt(1)
7945 else {
7946 self.fromNumber(a, c)
7947 if (!self.testBit(a - 1)) // force MSB set
7948 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7949 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7950 while (!self.isProbablePrime(b)) {
7951 self.dAddOffset(2, 0)
7952 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7953 }
7954 }
7955 } else {
7956 // new BigInteger(int,RNG)
7957 var x = new Array(),
7958 t = a & 7
7959 x.length = (a >> 3) + 1
7960 b.nextBytes(x)
7961 if (t > 0) x[0] &= ((1 << t) - 1)
7962 else x[0] = 0
7963 self.fromString(x, 256)
7964 }
7965 }
7966
7967 // (public) convert to bigendian byte array
7968 function bnToByteArray() {
7969 var self = this
7970 var i = self.t,
7971 r = new Array()
7972 r[0] = self.s
7973 var p = self.DB - (i * self.DB) % 8,
7974 d, k = 0
7975 if (i-- > 0) {
7976 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7977 r[k++] = d | (self.s << (self.DB - p))
7978 while (i >= 0) {
7979 if (p < 8) {
7980 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7981 d |= self[--i] >> (p += self.DB - 8)
7982 } else {
7983 d = (self[i] >> (p -= 8)) & 0xff
7984 if (p <= 0) {
7985 p += self.DB
7986 --i
7987 }
7988 }
7989 if ((d & 0x80) != 0) d |= -256
7990 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7991 if (k > 0 || d != self.s) r[k++] = d
7992 }
7993 }
7994 return r
7995 }
7996
7997 function bnEquals(a) {
7998 return (this.compareTo(a) == 0)
7999 }
8000
8001 function bnMin(a) {
8002 return (this.compareTo(a) < 0) ? this : a
8003 }
8004
8005 function bnMax(a) {
8006 return (this.compareTo(a) > 0) ? this : a
8007 }
8008
8009 // (protected) r = this op a (bitwise)
8010 function bnpBitwiseTo(a, op, r) {
8011 var self = this
8012 var i, f, m = Math.min(a.t, self.t)
8013 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8014 if (a.t < self.t) {
8015 f = a.s & self.DM
8016 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8017 r.t = self.t
8018 } else {
8019 f = self.s & self.DM
8020 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8021 r.t = a.t
8022 }
8023 r.s = op(self.s, a.s)
8024 r.clamp()
8025 }
8026
8027 // (public) this & a
8028 function op_and(x, y) {
8029 return x & y
8030 }
8031
8032 function bnAnd(a) {
8033 var r = new BigInteger()
8034 this.bitwiseTo(a, op_and, r)
8035 return r
8036 }
8037
8038 // (public) this | a
8039 function op_or(x, y) {
8040 return x | y
8041 }
8042
8043 function bnOr(a) {
8044 var r = new BigInteger()
8045 this.bitwiseTo(a, op_or, r)
8046 return r
8047 }
8048
8049 // (public) this ^ a
8050 function op_xor(x, y) {
8051 return x ^ y
8052 }
8053
8054 function bnXor(a) {
8055 var r = new BigInteger()
8056 this.bitwiseTo(a, op_xor, r)
8057 return r
8058 }
8059
8060 // (public) this & ~a
8061 function op_andnot(x, y) {
8062 return x & ~y
8063 }
8064
8065 function bnAndNot(a) {
8066 var r = new BigInteger()
8067 this.bitwiseTo(a, op_andnot, r)
8068 return r
8069 }
8070
8071 // (public) ~this
8072 function bnNot() {
8073 var r = new BigInteger()
8074 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8075 r.t = this.t
8076 r.s = ~this.s
8077 return r
8078 }
8079
8080 // (public) this << n
8081 function bnShiftLeft(n) {
8082 var r = new BigInteger()
8083 if (n < 0) this.rShiftTo(-n, r)
8084 else this.lShiftTo(n, r)
8085 return r
8086 }
8087
8088 // (public) this >> n
8089 function bnShiftRight(n) {
8090 var r = new BigInteger()
8091 if (n < 0) this.lShiftTo(-n, r)
8092 else this.rShiftTo(n, r)
8093 return r
8094 }
8095
8096 // return index of lowest 1-bit in x, x < 2^31
8097 function lbit(x) {
8098 if (x == 0) return -1
8099 var r = 0
8100 if ((x & 0xffff) == 0) {
8101 x >>= 16
8102 r += 16
8103 }
8104 if ((x & 0xff) == 0) {
8105 x >>= 8
8106 r += 8
8107 }
8108 if ((x & 0xf) == 0) {
8109 x >>= 4
8110 r += 4
8111 }
8112 if ((x & 3) == 0) {
8113 x >>= 2
8114 r += 2
8115 }
8116 if ((x & 1) == 0)++r
8117 return r
8118 }
8119
8120 // (public) returns index of lowest 1-bit (or -1 if none)
8121 function bnGetLowestSetBit() {
8122 for (var i = 0; i < this.t; ++i)
8123 if (this[i] != 0) return i * this.DB + lbit(this[i])
8124 if (this.s < 0) return this.t * this.DB
8125 return -1
8126 }
8127
8128 // return number of 1 bits in x
8129 function cbit(x) {
8130 var r = 0
8131 while (x != 0) {
8132 x &= x - 1
8133 ++r
8134 }
8135 return r
8136 }
8137
8138 // (public) return number of set bits
8139 function bnBitCount() {
8140 var r = 0,
8141 x = this.s & this.DM
8142 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8143 return r
8144 }
8145
8146 // (public) true iff nth bit is set
8147 function bnTestBit(n) {
8148 var j = Math.floor(n / this.DB)
8149 if (j >= this.t) return (this.s != 0)
8150 return ((this[j] & (1 << (n % this.DB))) != 0)
8151 }
8152
8153 // (protected) this op (1<<n)
8154 function bnpChangeBit(n, op) {
8155 var r = BigInteger.ONE.shiftLeft(n)
8156 this.bitwiseTo(r, op, r)
8157 return r
8158 }
8159
8160 // (public) this | (1<<n)
8161 function bnSetBit(n) {
8162 return this.changeBit(n, op_or)
8163 }
8164
8165 // (public) this & ~(1<<n)
8166 function bnClearBit(n) {
8167 return this.changeBit(n, op_andnot)
8168 }
8169
8170 // (public) this ^ (1<<n)
8171 function bnFlipBit(n) {
8172 return this.changeBit(n, op_xor)
8173 }
8174
8175 // (protected) r = this + a
8176 function bnpAddTo(a, r) {
8177 var self = this
8178
8179 var i = 0,
8180 c = 0,
8181 m = Math.min(a.t, self.t)
8182 while (i < m) {
8183 c += self[i] + a[i]
8184 r[i++] = c & self.DM
8185 c >>= self.DB
8186 }
8187 if (a.t < self.t) {
8188 c += a.s
8189 while (i < self.t) {
8190 c += self[i]
8191 r[i++] = c & self.DM
8192 c >>= self.DB
8193 }
8194 c += self.s
8195 } else {
8196 c += self.s
8197 while (i < a.t) {
8198 c += a[i]
8199 r[i++] = c & self.DM
8200 c >>= self.DB
8201 }
8202 c += a.s
8203 }
8204 r.s = (c < 0) ? -1 : 0
8205 if (c > 0) r[i++] = c
8206 else if (c < -1) r[i++] = self.DV + c
8207 r.t = i
8208 r.clamp()
8209 }
8210
8211 // (public) this + a
8212 function bnAdd(a) {
8213 var r = new BigInteger()
8214 this.addTo(a, r)
8215 return r
8216 }
8217
8218 // (public) this - a
8219 function bnSubtract(a) {
8220 var r = new BigInteger()
8221 this.subTo(a, r)
8222 return r
8223 }
8224
8225 // (public) this * a
8226 function bnMultiply(a) {
8227 var r = new BigInteger()
8228 this.multiplyTo(a, r)
8229 return r
8230 }
8231
8232 // (public) this^2
8233 function bnSquare() {
8234 var r = new BigInteger()
8235 this.squareTo(r)
8236 return r
8237 }
8238
8239 // (public) this / a
8240 function bnDivide(a) {
8241 var r = new BigInteger()
8242 this.divRemTo(a, r, null)
8243 return r
8244 }
8245
8246 // (public) this % a
8247 function bnRemainder(a) {
8248 var r = new BigInteger()
8249 this.divRemTo(a, null, r)
8250 return r
8251 }
8252
8253 // (public) [this/a,this%a]
8254 function bnDivideAndRemainder(a) {
8255 var q = new BigInteger(),
8256 r = new BigInteger()
8257 this.divRemTo(a, q, r)
8258 return new Array(q, r)
8259 }
8260
8261 // (protected) this *= n, this >= 0, 1 < n < DV
8262 function bnpDMultiply(n) {
8263 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8264 ++this.t
8265 this.clamp()
8266 }
8267
8268 // (protected) this += n << w words, this >= 0
8269 function bnpDAddOffset(n, w) {
8270 if (n == 0) return
8271 while (this.t <= w) this[this.t++] = 0
8272 this[w] += n
8273 while (this[w] >= this.DV) {
8274 this[w] -= this.DV
8275 if (++w >= this.t) this[this.t++] = 0
8276 ++this[w]
8277 }
8278 }
8279
8280 // A "null" reducer
8281 function NullExp() {}
8282
8283 function nNop(x) {
8284 return x
8285 }
8286
8287 function nMulTo(x, y, r) {
8288 x.multiplyTo(y, r)
8289 }
8290
8291 function nSqrTo(x, r) {
8292 x.squareTo(r)
8293 }
8294
8295 NullExp.prototype.convert = nNop
8296 NullExp.prototype.revert = nNop
8297 NullExp.prototype.mulTo = nMulTo
8298 NullExp.prototype.sqrTo = nSqrTo
8299
8300 // (public) this^e
8301 function bnPow(e) {
8302 return this.exp(e, new NullExp())
8303 }
8304
8305 // (protected) r = lower n words of "this * a", a.t <= n
8306 // "this" should be the larger one if appropriate.
8307 function bnpMultiplyLowerTo(a, n, r) {
8308 var i = Math.min(this.t + a.t, n)
8309 r.s = 0; // assumes a,this >= 0
8310 r.t = i
8311 while (i > 0) r[--i] = 0
8312 var j
8313 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8314 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8315 r.clamp()
8316 }
8317
8318 // (protected) r = "this * a" without lower n words, n > 0
8319 // "this" should be the larger one if appropriate.
8320 function bnpMultiplyUpperTo(a, n, r) {
8321 --n
8322 var i = r.t = this.t + a.t - n
8323 r.s = 0; // assumes a,this >= 0
8324 while (--i >= 0) r[i] = 0
8325 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8326 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8327 r.clamp()
8328 r.drShiftTo(1, r)
8329 }
8330
8331 // Barrett modular reduction
8332 function Barrett(m) {
8333 // setup Barrett
8334 this.r2 = new BigInteger()
8335 this.q3 = new BigInteger()
8336 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8337 this.mu = this.r2.divide(m)
8338 this.m = m
8339 }
8340
8341 function barrettConvert(x) {
8342 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8343 else if (x.compareTo(this.m) < 0) return x
8344 else {
8345 var r = new BigInteger()
8346 x.copyTo(r)
8347 this.reduce(r)
8348 return r
8349 }
8350 }
8351
8352 function barrettRevert(x) {
8353 return x
8354 }
8355
8356 // x = x mod m (HAC 14.42)
8357 function barrettReduce(x) {
8358 var self = this
8359 x.drShiftTo(self.m.t - 1, self.r2)
8360 if (x.t > self.m.t + 1) {
8361 x.t = self.m.t + 1
8362 x.clamp()
8363 }
8364 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8365 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8366 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8367 x.subTo(self.r2, x)
8368 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8369 }
8370
8371 // r = x^2 mod m; x != r
8372 function barrettSqrTo(x, r) {
8373 x.squareTo(r)
8374 this.reduce(r)
8375 }
8376
8377 // r = x*y mod m; x,y != r
8378 function barrettMulTo(x, y, r) {
8379 x.multiplyTo(y, r)
8380 this.reduce(r)
8381 }
8382
8383 Barrett.prototype.convert = barrettConvert
8384 Barrett.prototype.revert = barrettRevert
8385 Barrett.prototype.reduce = barrettReduce
8386 Barrett.prototype.mulTo = barrettMulTo
8387 Barrett.prototype.sqrTo = barrettSqrTo
8388
8389 // (public) this^e % m (HAC 14.85)
8390 function bnModPow(e, m) {
8391 var i = e.bitLength(),
8392 k, r = nbv(1),
8393 z
8394 if (i <= 0) return r
8395 else if (i < 18) k = 1
8396 else if (i < 48) k = 3
8397 else if (i < 144) k = 4
8398 else if (i < 768) k = 5
8399 else k = 6
8400 if (i < 8)
8401 z = new Classic(m)
8402 else if (m.isEven())
8403 z = new Barrett(m)
8404 else
8405 z = new Montgomery(m)
8406
8407 // precomputation
8408 var g = new Array(),
8409 n = 3,
8410 k1 = k - 1,
8411 km = (1 << k) - 1
8412 g[1] = z.convert(this)
8413 if (k > 1) {
8414 var g2 = new BigInteger()
8415 z.sqrTo(g[1], g2)
8416 while (n <= km) {
8417 g[n] = new BigInteger()
8418 z.mulTo(g2, g[n - 2], g[n])
8419 n += 2
8420 }
8421 }
8422
8423 var j = e.t - 1,
8424 w, is1 = true,
8425 r2 = new BigInteger(),
8426 t
8427 i = nbits(e[j]) - 1
8428 while (j >= 0) {
8429 if (i >= k1) w = (e[j] >> (i - k1)) & km
8430 else {
8431 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8432 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8433 }
8434
8435 n = k
8436 while ((w & 1) == 0) {
8437 w >>= 1
8438 --n
8439 }
8440 if ((i -= n) < 0) {
8441 i += this.DB
8442 --j
8443 }
8444 if (is1) { // ret == 1, don't bother squaring or multiplying it
8445 g[w].copyTo(r)
8446 is1 = false
8447 } else {
8448 while (n > 1) {
8449 z.sqrTo(r, r2)
8450 z.sqrTo(r2, r)
8451 n -= 2
8452 }
8453 if (n > 0) z.sqrTo(r, r2)
8454 else {
8455 t = r
8456 r = r2
8457 r2 = t
8458 }
8459 z.mulTo(r2, g[w], r)
8460 }
8461
8462 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8463 z.sqrTo(r, r2)
8464 t = r
8465 r = r2
8466 r2 = t
8467 if (--i < 0) {
8468 i = this.DB - 1
8469 --j
8470 }
8471 }
8472 }
8473 return z.revert(r)
8474 }
8475
8476 // (public) gcd(this,a) (HAC 14.54)
8477 function bnGCD(a) {
8478 var x = (this.s < 0) ? this.negate() : this.clone()
8479 var y = (a.s < 0) ? a.negate() : a.clone()
8480 if (x.compareTo(y) < 0) {
8481 var t = x
8482 x = y
8483 y = t
8484 }
8485 var i = x.getLowestSetBit(),
8486 g = y.getLowestSetBit()
8487 if (g < 0) return x
8488 if (i < g) g = i
8489 if (g > 0) {
8490 x.rShiftTo(g, x)
8491 y.rShiftTo(g, y)
8492 }
8493 while (x.signum() > 0) {
8494 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8495 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8496 if (x.compareTo(y) >= 0) {
8497 x.subTo(y, x)
8498 x.rShiftTo(1, x)
8499 } else {
8500 y.subTo(x, y)
8501 y.rShiftTo(1, y)
8502 }
8503 }
8504 if (g > 0) y.lShiftTo(g, y)
8505 return y
8506 }
8507
8508 // (protected) this % n, n < 2^26
8509 function bnpModInt(n) {
8510 if (n <= 0) return 0
8511 var d = this.DV % n,
8512 r = (this.s < 0) ? n - 1 : 0
8513 if (this.t > 0)
8514 if (d == 0) r = this[0] % n
8515 else
8516 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8517 return r
8518 }
8519
8520 // (public) 1/this % m (HAC 14.61)
8521 function bnModInverse(m) {
8522 var ac = m.isEven()
8523 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8524 var u = m.clone(),
8525 v = this.clone()
8526 var a = nbv(1),
8527 b = nbv(0),
8528 c = nbv(0),
8529 d = nbv(1)
8530 while (u.signum() != 0) {
8531 while (u.isEven()) {
8532 u.rShiftTo(1, u)
8533 if (ac) {
8534 if (!a.isEven() || !b.isEven()) {
8535 a.addTo(this, a)
8536 b.subTo(m, b)
8537 }
8538 a.rShiftTo(1, a)
8539 } else if (!b.isEven()) b.subTo(m, b)
8540 b.rShiftTo(1, b)
8541 }
8542 while (v.isEven()) {
8543 v.rShiftTo(1, v)
8544 if (ac) {
8545 if (!c.isEven() || !d.isEven()) {
8546 c.addTo(this, c)
8547 d.subTo(m, d)
8548 }
8549 c.rShiftTo(1, c)
8550 } else if (!d.isEven()) d.subTo(m, d)
8551 d.rShiftTo(1, d)
8552 }
8553 if (u.compareTo(v) >= 0) {
8554 u.subTo(v, u)
8555 if (ac) a.subTo(c, a)
8556 b.subTo(d, b)
8557 } else {
8558 v.subTo(u, v)
8559 if (ac) c.subTo(a, c)
8560 d.subTo(b, d)
8561 }
8562 }
8563 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8564 if (d.compareTo(m) >= 0) return d.subtract(m)
8565 if (d.signum() < 0) d.addTo(m, d)
8566 else return d
8567 if (d.signum() < 0) return d.add(m)
8568 else return d
8569 }
8570
8571 var lowprimes = [
8572 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8573 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8574 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8575 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8576 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8577 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8578 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8579 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8580 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8581 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8582 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8583 ]
8584
8585 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8586
8587 // (public) test primality with certainty >= 1-.5^t
8588 function bnIsProbablePrime(t) {
8589 var i, x = this.abs()
8590 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8591 for (i = 0; i < lowprimes.length; ++i)
8592 if (x[0] == lowprimes[i]) return true
8593 return false
8594 }
8595 if (x.isEven()) return false
8596 i = 1
8597 while (i < lowprimes.length) {
8598 var m = lowprimes[i],
8599 j = i + 1
8600 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8601 m = x.modInt(m)
8602 while (i < j) if (m % lowprimes[i++] == 0) return false
8603 }
8604 return x.millerRabin(t)
8605 }
8606
8607 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8608 function bnpMillerRabin(t) {
8609 var n1 = this.subtract(BigInteger.ONE)
8610 var k = n1.getLowestSetBit()
8611 if (k <= 0) return false
8612 var r = n1.shiftRight(k)
8613 t = (t + 1) >> 1
8614 if (t > lowprimes.length) t = lowprimes.length
8615 var a = new BigInteger(null)
8616 var j, bases = []
8617 for (var i = 0; i < t; ++i) {
8618 for (;;) {
8619 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8620 if (bases.indexOf(j) == -1) break
8621 }
8622 bases.push(j)
8623 a.fromInt(j)
8624 var y = a.modPow(r, this)
8625 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8626 var j = 1
8627 while (j++ < k && y.compareTo(n1) != 0) {
8628 y = y.modPowInt(2, this)
8629 if (y.compareTo(BigInteger.ONE) == 0) return false
8630 }
8631 if (y.compareTo(n1) != 0) return false
8632 }
8633 }
8634 return true
8635 }
8636
8637 // protected
8638 proto.chunkSize = bnpChunkSize
8639 proto.toRadix = bnpToRadix
8640 proto.fromRadix = bnpFromRadix
8641 proto.fromNumber = bnpFromNumber
8642 proto.bitwiseTo = bnpBitwiseTo
8643 proto.changeBit = bnpChangeBit
8644 proto.addTo = bnpAddTo
8645 proto.dMultiply = bnpDMultiply
8646 proto.dAddOffset = bnpDAddOffset
8647 proto.multiplyLowerTo = bnpMultiplyLowerTo
8648 proto.multiplyUpperTo = bnpMultiplyUpperTo
8649 proto.modInt = bnpModInt
8650 proto.millerRabin = bnpMillerRabin
8651
8652 // public
8653 proto.clone = bnClone
8654 proto.intValue = bnIntValue
8655 proto.byteValue = bnByteValue
8656 proto.shortValue = bnShortValue
8657 proto.signum = bnSigNum
8658 proto.toByteArray = bnToByteArray
8659 proto.equals = bnEquals
8660 proto.min = bnMin
8661 proto.max = bnMax
8662 proto.and = bnAnd
8663 proto.or = bnOr
8664 proto.xor = bnXor
8665 proto.andNot = bnAndNot
8666 proto.not = bnNot
8667 proto.shiftLeft = bnShiftLeft
8668 proto.shiftRight = bnShiftRight
8669 proto.getLowestSetBit = bnGetLowestSetBit
8670 proto.bitCount = bnBitCount
8671 proto.testBit = bnTestBit
8672 proto.setBit = bnSetBit
8673 proto.clearBit = bnClearBit
8674 proto.flipBit = bnFlipBit
8675 proto.add = bnAdd
8676 proto.subtract = bnSubtract
8677 proto.multiply = bnMultiply
8678 proto.divide = bnDivide
8679 proto.remainder = bnRemainder
8680 proto.divideAndRemainder = bnDivideAndRemainder
8681 proto.modPow = bnModPow
8682 proto.modInverse = bnModInverse
8683 proto.pow = bnPow
8684 proto.gcd = bnGCD
8685 proto.isProbablePrime = bnIsProbablePrime
8686
8687 // JSBN-specific extension
8688 proto.square = bnSquare
8689
8690 // constants
8691 BigInteger.ZERO = nbv(0)
8692 BigInteger.ONE = nbv(1)
8693 BigInteger.valueOf = nbv
8694
8695 module.exports = BigInteger
8696
8697 },{"../package.json":4}],2:[function(require,module,exports){
8698 (function (Buffer){
8699 // FIXME: Kind of a weird way to throw exceptions, consider removing
8700 var assert = require('assert')
8701 var BigInteger = require('./bigi')
8702
8703 /**
8704 * Turns a byte array into a big integer.
8705 *
8706 * This function will interpret a byte array as a big integer in big
8707 * endian notation.
8708 */
8709 BigInteger.fromByteArrayUnsigned = function(byteArray) {
8710 // BigInteger expects a DER integer conformant byte array
8711 if (byteArray[0] & 0x80) {
8712 return new BigInteger([0].concat(byteArray))
8713 }
8714
8715 return new BigInteger(byteArray)
8716 }
8717
8718 /**
8719 * Returns a byte array representation of the big integer.
8720 *
8721 * This returns the absolute of the contained value in big endian
8722 * form. A value of zero results in an empty array.
8723 */
8724 BigInteger.prototype.toByteArrayUnsigned = function() {
8725 var byteArray = this.toByteArray()
8726 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8727 }
8728
8729 BigInteger.fromDERInteger = function(byteArray) {
8730 return new BigInteger(byteArray)
8731 }
8732
8733 /*
8734 * Converts BigInteger to a DER integer representation.
8735 *
8736 * The format for this value uses the most significant bit as a sign
8737 * bit. If the most significant bit is already set and the integer is
8738 * positive, a 0x00 is prepended.
8739 *
8740 * Examples:
8741 *
8742 * 0 => 0x00
8743 * 1 => 0x01
8744 * -1 => 0xff
8745 * 127 => 0x7f
8746 * -127 => 0x81
8747 * 128 => 0x0080
8748 * -128 => 0x80
8749 * 255 => 0x00ff
8750 * -255 => 0xff01
8751 * 16300 => 0x3fac
8752 * -16300 => 0xc054
8753 * 62300 => 0x00f35c
8754 * -62300 => 0xff0ca4
8755 */
8756 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8757
8758 BigInteger.fromBuffer = function(buffer) {
8759 // BigInteger expects a DER integer conformant byte array
8760 if (buffer[0] & 0x80) {
8761 var byteArray = Array.prototype.slice.call(buffer)
8762
8763 return new BigInteger([0].concat(byteArray))
8764 }
8765
8766 return new BigInteger(buffer)
8767 }
8768
8769 BigInteger.fromHex = function(hex) {
8770 if (hex === '') return BigInteger.ZERO
8771
8772 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8773 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8774 return new BigInteger(hex, 16)
8775 }
8776
8777 BigInteger.prototype.toBuffer = function(size) {
8778 var byteArray = this.toByteArrayUnsigned()
8779 var zeros = []
8780
8781 var padding = size - byteArray.length
8782 while (zeros.length < padding) zeros.push(0)
8783
8784 return new Buffer(zeros.concat(byteArray))
8785 }
8786
8787 BigInteger.prototype.toHex = function(size) {
8788 return this.toBuffer(size).toString('hex')
8789 }
8790
8791 }).call(this,require("buffer").Buffer)
8792 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8793 var BigInteger = require('./bigi')
8794
8795 //addons
8796 require('./convert')
8797
8798 module.exports = BigInteger
8799 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8800 module.exports={
8801 "name": "bigi",
8802 "version": "1.4.0",
8803 "description": "Big integers.",
8804 "keywords": [
8805 "cryptography",
8806 "math",
8807 "bitcoin",
8808 "arbitrary",
8809 "precision",
8810 "arithmetic",
8811 "big",
8812 "integer",
8813 "int",
8814 "number",
8815 "biginteger",
8816 "bigint",
8817 "bignumber",
8818 "decimal",
8819 "float"
8820 ],
8821 "devDependencies": {
8822 "mocha": "^1.20.1",
8823 "jshint": "^2.5.1",
8824 "coveralls": "^2.10.0",
8825 "istanbul": "^0.2.11"
8826 },
8827 "repository": {
8828 "url": "https://github.com/cryptocoinjs/bigi",
8829 "type": "git"
8830 },
8831 "main": "./lib/index.js",
8832 "scripts": {
8833 "test": "_mocha -- test/*.js",
8834 "jshint": "jshint --config jshint.json lib/*.js ; true",
8835 "unit": "mocha",
8836 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8837 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8838 },
8839 "dependencies": {},
8840 "testling": {
8841 "files": "test/*.js",
8842 "harness": "mocha",
8843 "browsers": [
8844 "ie/9..latest",
8845 "firefox/latest",
8846 "chrome/latest",
8847 "safari/6.0..latest",
8848 "iphone/6.0..latest",
8849 "android-browser/4.2..latest"
8850 ]
8851 },
8852 "bugs": {
8853 "url": "https://github.com/cryptocoinjs/bigi/issues"
8854 },
8855 "homepage": "https://github.com/cryptocoinjs/bigi",
8856 "_id": "bigi@1.4.0",
8857 "dist": {
8858 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8859 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8860 },
8861 "_from": "bigi@^1.4.0",
8862 "_npmVersion": "1.4.3",
8863 "_npmUser": {
8864 "name": "jp",
8865 "email": "jprichardson@gmail.com"
8866 },
8867 "maintainers": [
8868 {
8869 "name": "jp",
8870 "email": "jprichardson@gmail.com"
8871 },
8872 {
8873 "name": "midnightlightning",
8874 "email": "boydb@midnightdesign.ws"
8875 },
8876 {
8877 "name": "sidazhang",
8878 "email": "sidazhang89@gmail.com"
8879 },
8880 {
8881 "name": "nadav",
8882 "email": "npm@shesek.info"
8883 }
8884 ],
8885 "directories": {},
8886 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8887 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8888 }
8889
8890 },{}],5:[function(require,module,exports){
8891 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8892 //
8893 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8894 //
8895 // Originally from narwhal.js (http://narwhaljs.org)
8896 // Copyright (c) 2009 Thomas Robinson <280north.com>
8897 //
8898 // Permission is hereby granted, free of charge, to any person obtaining a copy
8899 // of this software and associated documentation files (the 'Software'), to
8900 // deal in the Software without restriction, including without limitation the
8901 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8902 // sell copies of the Software, and to permit persons to whom the Software is
8903 // furnished to do so, subject to the following conditions:
8904 //
8905 // The above copyright notice and this permission notice shall be included in
8906 // all copies or substantial portions of the Software.
8907 //
8908 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8909 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8910 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8911 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8912 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8913 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8914
8915 // when used in node, this will actually load the util module we depend on
8916 // versus loading the builtin util module as happens otherwise
8917 // this is a bug in node module loading as far as I am concerned
8918 var util = require('util/');
8919
8920 var pSlice = Array.prototype.slice;
8921 var hasOwn = Object.prototype.hasOwnProperty;
8922
8923 // 1. The assert module provides functions that throw
8924 // AssertionError's when particular conditions are not met. The
8925 // assert module must conform to the following interface.
8926
8927 var assert = module.exports = ok;
8928
8929 // 2. The AssertionError is defined in assert.
8930 // new assert.AssertionError({ message: message,
8931 // actual: actual,
8932 // expected: expected })
8933
8934 assert.AssertionError = function AssertionError(options) {
8935 this.name = 'AssertionError';
8936 this.actual = options.actual;
8937 this.expected = options.expected;
8938 this.operator = options.operator;
8939 if (options.message) {
8940 this.message = options.message;
8941 this.generatedMessage = false;
8942 } else {
8943 this.message = getMessage(this);
8944 this.generatedMessage = true;
8945 }
8946 var stackStartFunction = options.stackStartFunction || fail;
8947
8948 if (Error.captureStackTrace) {
8949 Error.captureStackTrace(this, stackStartFunction);
8950 }
8951 else {
8952 // non v8 browsers so we can have a stacktrace
8953 var err = new Error();
8954 if (err.stack) {
8955 var out = err.stack;
8956
8957 // try to strip useless frames
8958 var fn_name = stackStartFunction.name;
8959 var idx = out.indexOf('\n' + fn_name);
8960 if (idx >= 0) {
8961 // once we have located the function frame
8962 // we need to strip out everything before it (and its line)
8963 var next_line = out.indexOf('\n', idx + 1);
8964 out = out.substring(next_line + 1);
8965 }
8966
8967 this.stack = out;
8968 }
8969 }
8970 };
8971
8972 // assert.AssertionError instanceof Error
8973 util.inherits(assert.AssertionError, Error);
8974
8975 function replacer(key, value) {
8976 if (util.isUndefined(value)) {
8977 return '' + value;
8978 }
8979 if (util.isNumber(value) && !isFinite(value)) {
8980 return value.toString();
8981 }
8982 if (util.isFunction(value) || util.isRegExp(value)) {
8983 return value.toString();
8984 }
8985 return value;
8986 }
8987
8988 function truncate(s, n) {
8989 if (util.isString(s)) {
8990 return s.length < n ? s : s.slice(0, n);
8991 } else {
8992 return s;
8993 }
8994 }
8995
8996 function getMessage(self) {
8997 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8998 self.operator + ' ' +
8999 truncate(JSON.stringify(self.expected, replacer), 128);
9000 }
9001
9002 // At present only the three keys mentioned above are used and
9003 // understood by the spec. Implementations or sub modules can pass
9004 // other keys to the AssertionError's constructor - they will be
9005 // ignored.
9006
9007 // 3. All of the following functions must throw an AssertionError
9008 // when a corresponding condition is not met, with a message that
9009 // may be undefined if not provided. All assertion methods provide
9010 // both the actual and expected values to the assertion error for
9011 // display purposes.
9012
9013 function fail(actual, expected, message, operator, stackStartFunction) {
9014 throw new assert.AssertionError({
9015 message: message,
9016 actual: actual,
9017 expected: expected,
9018 operator: operator,
9019 stackStartFunction: stackStartFunction
9020 });
9021 }
9022
9023 // EXTENSION! allows for well behaved errors defined elsewhere.
9024 assert.fail = fail;
9025
9026 // 4. Pure assertion tests whether a value is truthy, as determined
9027 // by !!guard.
9028 // assert.ok(guard, message_opt);
9029 // This statement is equivalent to assert.equal(true, !!guard,
9030 // message_opt);. To test strictly for the value true, use
9031 // assert.strictEqual(true, guard, message_opt);.
9032
9033 function ok(value, message) {
9034 if (!value) fail(value, true, message, '==', assert.ok);
9035 }
9036 assert.ok = ok;
9037
9038 // 5. The equality assertion tests shallow, coercive equality with
9039 // ==.
9040 // assert.equal(actual, expected, message_opt);
9041
9042 assert.equal = function equal(actual, expected, message) {
9043 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9044 };
9045
9046 // 6. The non-equality assertion tests for whether two objects are not equal
9047 // with != assert.notEqual(actual, expected, message_opt);
9048
9049 assert.notEqual = function notEqual(actual, expected, message) {
9050 if (actual == expected) {
9051 fail(actual, expected, message, '!=', assert.notEqual);
9052 }
9053 };
9054
9055 // 7. The equivalence assertion tests a deep equality relation.
9056 // assert.deepEqual(actual, expected, message_opt);
9057
9058 assert.deepEqual = function deepEqual(actual, expected, message) {
9059 if (!_deepEqual(actual, expected)) {
9060 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9061 }
9062 };
9063
9064 function _deepEqual(actual, expected) {
9065 // 7.1. All identical values are equivalent, as determined by ===.
9066 if (actual === expected) {
9067 return true;
9068
9069 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9070 if (actual.length != expected.length) return false;
9071
9072 for (var i = 0; i < actual.length; i++) {
9073 if (actual[i] !== expected[i]) return false;
9074 }
9075
9076 return true;
9077
9078 // 7.2. If the expected value is a Date object, the actual value is
9079 // equivalent if it is also a Date object that refers to the same time.
9080 } else if (util.isDate(actual) && util.isDate(expected)) {
9081 return actual.getTime() === expected.getTime();
9082
9083 // 7.3 If the expected value is a RegExp object, the actual value is
9084 // equivalent if it is also a RegExp object with the same source and
9085 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9086 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9087 return actual.source === expected.source &&
9088 actual.global === expected.global &&
9089 actual.multiline === expected.multiline &&
9090 actual.lastIndex === expected.lastIndex &&
9091 actual.ignoreCase === expected.ignoreCase;
9092
9093 // 7.4. Other pairs that do not both pass typeof value == 'object',
9094 // equivalence is determined by ==.
9095 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9096 return actual == expected;
9097
9098 // 7.5 For all other Object pairs, including Array objects, equivalence is
9099 // determined by having the same number of owned properties (as verified
9100 // with Object.prototype.hasOwnProperty.call), the same set of keys
9101 // (although not necessarily the same order), equivalent values for every
9102 // corresponding key, and an identical 'prototype' property. Note: this
9103 // accounts for both named and indexed properties on Arrays.
9104 } else {
9105 return objEquiv(actual, expected);
9106 }
9107 }
9108
9109 function isArguments(object) {
9110 return Object.prototype.toString.call(object) == '[object Arguments]';
9111 }
9112
9113 function objEquiv(a, b) {
9114 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9115 return false;
9116 // an identical 'prototype' property.
9117 if (a.prototype !== b.prototype) return false;
9118 // if one is a primitive, the other must be same
9119 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9120 return a === b;
9121 }
9122 var aIsArgs = isArguments(a),
9123 bIsArgs = isArguments(b);
9124 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9125 return false;
9126 if (aIsArgs) {
9127 a = pSlice.call(a);
9128 b = pSlice.call(b);
9129 return _deepEqual(a, b);
9130 }
9131 var ka = objectKeys(a),
9132 kb = objectKeys(b),
9133 key, i;
9134 // having the same number of owned properties (keys incorporates
9135 // hasOwnProperty)
9136 if (ka.length != kb.length)
9137 return false;
9138 //the same set of keys (although not necessarily the same order),
9139 ka.sort();
9140 kb.sort();
9141 //~~~cheap key test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 if (ka[i] != kb[i])
9144 return false;
9145 }
9146 //equivalent values for every corresponding key, and
9147 //~~~possibly expensive deep test
9148 for (i = ka.length - 1; i >= 0; i--) {
9149 key = ka[i];
9150 if (!_deepEqual(a[key], b[key])) return false;
9151 }
9152 return true;
9153 }
9154
9155 // 8. The non-equivalence assertion tests for any deep inequality.
9156 // assert.notDeepEqual(actual, expected, message_opt);
9157
9158 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9159 if (_deepEqual(actual, expected)) {
9160 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9161 }
9162 };
9163
9164 // 9. The strict equality assertion tests strict equality, as determined by ===.
9165 // assert.strictEqual(actual, expected, message_opt);
9166
9167 assert.strictEqual = function strictEqual(actual, expected, message) {
9168 if (actual !== expected) {
9169 fail(actual, expected, message, '===', assert.strictEqual);
9170 }
9171 };
9172
9173 // 10. The strict non-equality assertion tests for strict inequality, as
9174 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9175
9176 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9177 if (actual === expected) {
9178 fail(actual, expected, message, '!==', assert.notStrictEqual);
9179 }
9180 };
9181
9182 function expectedException(actual, expected) {
9183 if (!actual || !expected) {
9184 return false;
9185 }
9186
9187 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9188 return expected.test(actual);
9189 } else if (actual instanceof expected) {
9190 return true;
9191 } else if (expected.call({}, actual) === true) {
9192 return true;
9193 }
9194
9195 return false;
9196 }
9197
9198 function _throws(shouldThrow, block, expected, message) {
9199 var actual;
9200
9201 if (util.isString(expected)) {
9202 message = expected;
9203 expected = null;
9204 }
9205
9206 try {
9207 block();
9208 } catch (e) {
9209 actual = e;
9210 }
9211
9212 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9213 (message ? ' ' + message : '.');
9214
9215 if (shouldThrow && !actual) {
9216 fail(actual, expected, 'Missing expected exception' + message);
9217 }
9218
9219 if (!shouldThrow && expectedException(actual, expected)) {
9220 fail(actual, expected, 'Got unwanted exception' + message);
9221 }
9222
9223 if ((shouldThrow && actual && expected &&
9224 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9225 throw actual;
9226 }
9227 }
9228
9229 // 11. Expected to throw an error:
9230 // assert.throws(block, Error_opt, message_opt);
9231
9232 assert.throws = function(block, /*optional*/error, /*optional*/message) {
9233 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9234 };
9235
9236 // EXTENSION! This is annoying to write outside this module.
9237 assert.doesNotThrow = function(block, /*optional*/message) {
9238 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9239 };
9240
9241 assert.ifError = function(err) { if (err) {throw err;}};
9242
9243 var objectKeys = Object.keys || function (obj) {
9244 var keys = [];
9245 for (var key in obj) {
9246 if (hasOwn.call(obj, key)) keys.push(key);
9247 }
9248 return keys;
9249 };
9250
9251 },{"util/":29}],6:[function(require,module,exports){
9252
9253 },{}],7:[function(require,module,exports){
9254 /*!
9255 * The buffer module from node.js, for the browser.
9256 *
9257 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9258 * @license MIT
9259 */
9260
9261 var base64 = require('base64-js')
9262 var ieee754 = require('ieee754')
9263 var isArray = require('is-array')
9264
9265 exports.Buffer = Buffer
9266 exports.SlowBuffer = SlowBuffer
9267 exports.INSPECT_MAX_BYTES = 50
9268 Buffer.poolSize = 8192 // not used by this implementation
9269
9270 var rootParent = {}
9271
9272 /**
9273 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9274 * === true Use Uint8Array implementation (fastest)
9275 * === false Use Object implementation (most compatible, even IE6)
9276 *
9277 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9278 * Opera 11.6+, iOS 4.2+.
9279 *
9280 * Due to various browser bugs, sometimes the Object implementation will be used even
9281 * when the browser supports typed arrays.
9282 *
9283 * Note:
9284 *
9285 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9286 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9287 *
9288 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9289 * on objects.
9290 *
9291 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9292 *
9293 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9294 * incorrect length in some situations.
9295
9296 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9297 * get the Object implementation, which is slower but behaves correctly.
9298 */
9299 Buffer.TYPED_ARRAY_SUPPORT = (function () {
9300 function Bar () {}
9301 try {
9302 var arr = new Uint8Array(1)
9303 arr.foo = function () { return 42 }
9304 arr.constructor = Bar
9305 return arr.foo() === 42 && // typed array instances can be augmented
9306 arr.constructor === Bar && // constructor can be set
9307 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9308 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9309 } catch (e) {
9310 return false
9311 }
9312 })()
9313
9314 function kMaxLength () {
9315 return Buffer.TYPED_ARRAY_SUPPORT
9316 ? 0x7fffffff
9317 : 0x3fffffff
9318 }
9319
9320 /**
9321 * Class: Buffer
9322 * =============
9323 *
9324 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9325 * with function properties for all the node `Buffer` API functions. We use
9326 * `Uint8Array` so that square bracket notation works as expected -- it returns
9327 * a single octet.
9328 *
9329 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9330 * prototype.
9331 */
9332 function Buffer (arg) {
9333 if (!(this instanceof Buffer)) {
9334 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9335 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9336 return new Buffer(arg)
9337 }
9338
9339 this.length = 0
9340 this.parent = undefined
9341
9342 // Common case.
9343 if (typeof arg === 'number') {
9344 return fromNumber(this, arg)
9345 }
9346
9347 // Slightly less common case.
9348 if (typeof arg === 'string') {
9349 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9350 }
9351
9352 // Unusual.
9353 return fromObject(this, arg)
9354 }
9355
9356 function fromNumber (that, length) {
9357 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9358 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9359 for (var i = 0; i < length; i++) {
9360 that[i] = 0
9361 }
9362 }
9363 return that
9364 }
9365
9366 function fromString (that, string, encoding) {
9367 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9368
9369 // Assumption: byteLength() return value is always < kMaxLength.
9370 var length = byteLength(string, encoding) | 0
9371 that = allocate(that, length)
9372
9373 that.write(string, encoding)
9374 return that
9375 }
9376
9377 function fromObject (that, object) {
9378 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9379
9380 if (isArray(object)) return fromArray(that, object)
9381
9382 if (object == null) {
9383 throw new TypeError('must start with number, buffer, array or string')
9384 }
9385
9386 if (typeof ArrayBuffer !== 'undefined') {
9387 if (object.buffer instanceof ArrayBuffer) {
9388 return fromTypedArray(that, object)
9389 }
9390 if (object instanceof ArrayBuffer) {
9391 return fromArrayBuffer(that, object)
9392 }
9393 }
9394
9395 if (object.length) return fromArrayLike(that, object)
9396
9397 return fromJsonObject(that, object)
9398 }
9399
9400 function fromBuffer (that, buffer) {
9401 var length = checked(buffer.length) | 0
9402 that = allocate(that, length)
9403 buffer.copy(that, 0, 0, length)
9404 return that
9405 }
9406
9407 function fromArray (that, array) {
9408 var length = checked(array.length) | 0
9409 that = allocate(that, length)
9410 for (var i = 0; i < length; i += 1) {
9411 that[i] = array[i] & 255
9412 }
9413 return that
9414 }
9415
9416 // Duplicate of fromArray() to keep fromArray() monomorphic.
9417 function fromTypedArray (that, array) {
9418 var length = checked(array.length) | 0
9419 that = allocate(that, length)
9420 // Truncating the elements is probably not what people expect from typed
9421 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9422 // of the old Buffer constructor.
9423 for (var i = 0; i < length; i += 1) {
9424 that[i] = array[i] & 255
9425 }
9426 return that
9427 }
9428
9429 function fromArrayBuffer (that, array) {
9430 if (Buffer.TYPED_ARRAY_SUPPORT) {
9431 // Return an augmented `Uint8Array` instance, for best performance
9432 array.byteLength
9433 that = Buffer._augment(new Uint8Array(array))
9434 } else {
9435 // Fallback: Return an object instance of the Buffer class
9436 that = fromTypedArray(that, new Uint8Array(array))
9437 }
9438 return that
9439 }
9440
9441 function fromArrayLike (that, array) {
9442 var length = checked(array.length) | 0
9443 that = allocate(that, length)
9444 for (var i = 0; i < length; i += 1) {
9445 that[i] = array[i] & 255
9446 }
9447 return that
9448 }
9449
9450 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9451 // Returns a zero-length buffer for inputs that don't conform to the spec.
9452 function fromJsonObject (that, object) {
9453 var array
9454 var length = 0
9455
9456 if (object.type === 'Buffer' && isArray(object.data)) {
9457 array = object.data
9458 length = checked(array.length) | 0
9459 }
9460 that = allocate(that, length)
9461
9462 for (var i = 0; i < length; i += 1) {
9463 that[i] = array[i] & 255
9464 }
9465 return that
9466 }
9467
9468 function allocate (that, length) {
9469 if (Buffer.TYPED_ARRAY_SUPPORT) {
9470 // Return an augmented `Uint8Array` instance, for best performance
9471 that = Buffer._augment(new Uint8Array(length))
9472 } else {
9473 // Fallback: Return an object instance of the Buffer class
9474 that.length = length
9475 that._isBuffer = true
9476 }
9477
9478 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9479 if (fromPool) that.parent = rootParent
9480
9481 return that
9482 }
9483
9484 function checked (length) {
9485 // Note: cannot use `length < kMaxLength` here because that fails when
9486 // length is NaN (which is otherwise coerced to zero.)
9487 if (length >= kMaxLength()) {
9488 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9489 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9490 }
9491 return length | 0
9492 }
9493
9494 function SlowBuffer (subject, encoding) {
9495 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9496
9497 var buf = new Buffer(subject, encoding)
9498 delete buf.parent
9499 return buf
9500 }
9501
9502 Buffer.isBuffer = function isBuffer (b) {
9503 return !!(b != null && b._isBuffer)
9504 }
9505
9506 Buffer.compare = function compare (a, b) {
9507 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9508 throw new TypeError('Arguments must be Buffers')
9509 }
9510
9511 if (a === b) return 0
9512
9513 var x = a.length
9514 var y = b.length
9515
9516 var i = 0
9517 var len = Math.min(x, y)
9518 while (i < len) {
9519 if (a[i] !== b[i]) break
9520
9521 ++i
9522 }
9523
9524 if (i !== len) {
9525 x = a[i]
9526 y = b[i]
9527 }
9528
9529 if (x < y) return -1
9530 if (y < x) return 1
9531 return 0
9532 }
9533
9534 Buffer.isEncoding = function isEncoding (encoding) {
9535 switch (String(encoding).toLowerCase()) {
9536 case 'hex':
9537 case 'utf8':
9538 case 'utf-8':
9539 case 'ascii':
9540 case 'binary':
9541 case 'base64':
9542 case 'raw':
9543 case 'ucs2':
9544 case 'ucs-2':
9545 case 'utf16le':
9546 case 'utf-16le':
9547 return true
9548 default:
9549 return false
9550 }
9551 }
9552
9553 Buffer.concat = function concat (list, length) {
9554 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9555
9556 if (list.length === 0) {
9557 return new Buffer(0)
9558 }
9559
9560 var i
9561 if (length === undefined) {
9562 length = 0
9563 for (i = 0; i < list.length; i++) {
9564 length += list[i].length
9565 }
9566 }
9567
9568 var buf = new Buffer(length)
9569 var pos = 0
9570 for (i = 0; i < list.length; i++) {
9571 var item = list[i]
9572 item.copy(buf, pos)
9573 pos += item.length
9574 }
9575 return buf
9576 }
9577
9578 function byteLength (string, encoding) {
9579 if (typeof string !== 'string') string = '' + string
9580
9581 var len = string.length
9582 if (len === 0) return 0
9583
9584 // Use a for loop to avoid recursion
9585 var loweredCase = false
9586 for (;;) {
9587 switch (encoding) {
9588 case 'ascii':
9589 case 'binary':
9590 // Deprecated
9591 case 'raw':
9592 case 'raws':
9593 return len
9594 case 'utf8':
9595 case 'utf-8':
9596 return utf8ToBytes(string).length
9597 case 'ucs2':
9598 case 'ucs-2':
9599 case 'utf16le':
9600 case 'utf-16le':
9601 return len * 2
9602 case 'hex':
9603 return len >>> 1
9604 case 'base64':
9605 return base64ToBytes(string).length
9606 default:
9607 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9608 encoding = ('' + encoding).toLowerCase()
9609 loweredCase = true
9610 }
9611 }
9612 }
9613 Buffer.byteLength = byteLength
9614
9615 // pre-set for values that may exist in the future
9616 Buffer.prototype.length = undefined
9617 Buffer.prototype.parent = undefined
9618
9619 function slowToString (encoding, start, end) {
9620 var loweredCase = false
9621
9622 start = start | 0
9623 end = end === undefined || end === Infinity ? this.length : end | 0
9624
9625 if (!encoding) encoding = 'utf8'
9626 if (start < 0) start = 0
9627 if (end > this.length) end = this.length
9628 if (end <= start) return ''
9629
9630 while (true) {
9631 switch (encoding) {
9632 case 'hex':
9633 return hexSlice(this, start, end)
9634
9635 case 'utf8':
9636 case 'utf-8':
9637 return utf8Slice(this, start, end)
9638
9639 case 'ascii':
9640 return asciiSlice(this, start, end)
9641
9642 case 'binary':
9643 return binarySlice(this, start, end)
9644
9645 case 'base64':
9646 return base64Slice(this, start, end)
9647
9648 case 'ucs2':
9649 case 'ucs-2':
9650 case 'utf16le':
9651 case 'utf-16le':
9652 return utf16leSlice(this, start, end)
9653
9654 default:
9655 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9656 encoding = (encoding + '').toLowerCase()
9657 loweredCase = true
9658 }
9659 }
9660 }
9661
9662 Buffer.prototype.toString = function toString () {
9663 var length = this.length | 0
9664 if (length === 0) return ''
9665 if (arguments.length === 0) return utf8Slice(this, 0, length)
9666 return slowToString.apply(this, arguments)
9667 }
9668
9669 Buffer.prototype.equals = function equals (b) {
9670 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9671 if (this === b) return true
9672 return Buffer.compare(this, b) === 0
9673 }
9674
9675 Buffer.prototype.inspect = function inspect () {
9676 var str = ''
9677 var max = exports.INSPECT_MAX_BYTES
9678 if (this.length > 0) {
9679 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9680 if (this.length > max) str += ' ... '
9681 }
9682 return '<Buffer ' + str + '>'
9683 }
9684
9685 Buffer.prototype.compare = function compare (b) {
9686 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9687 if (this === b) return 0
9688 return Buffer.compare(this, b)
9689 }
9690
9691 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9692 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9693 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9694 byteOffset >>= 0
9695
9696 if (this.length === 0) return -1
9697 if (byteOffset >= this.length) return -1
9698
9699 // Negative offsets start from the end of the buffer
9700 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9701
9702 if (typeof val === 'string') {
9703 if (val.length === 0) return -1 // special case: looking for empty string always fails
9704 return String.prototype.indexOf.call(this, val, byteOffset)
9705 }
9706 if (Buffer.isBuffer(val)) {
9707 return arrayIndexOf(this, val, byteOffset)
9708 }
9709 if (typeof val === 'number') {
9710 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9711 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9712 }
9713 return arrayIndexOf(this, [ val ], byteOffset)
9714 }
9715
9716 function arrayIndexOf (arr, val, byteOffset) {
9717 var foundIndex = -1
9718 for (var i = 0; byteOffset + i < arr.length; i++) {
9719 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9720 if (foundIndex === -1) foundIndex = i
9721 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9722 } else {
9723 foundIndex = -1
9724 }
9725 }
9726 return -1
9727 }
9728
9729 throw new TypeError('val must be string, number or Buffer')
9730 }
9731
9732 // `get` is deprecated
9733 Buffer.prototype.get = function get (offset) {
9734 console.log('.get() is deprecated. Access using array indexes instead.')
9735 return this.readUInt8(offset)
9736 }
9737
9738 // `set` is deprecated
9739 Buffer.prototype.set = function set (v, offset) {
9740 console.log('.set() is deprecated. Access using array indexes instead.')
9741 return this.writeUInt8(v, offset)
9742 }
9743
9744 function hexWrite (buf, string, offset, length) {
9745 offset = Number(offset) || 0
9746 var remaining = buf.length - offset
9747 if (!length) {
9748 length = remaining
9749 } else {
9750 length = Number(length)
9751 if (length > remaining) {
9752 length = remaining
9753 }
9754 }
9755
9756 // must be an even number of digits
9757 var strLen = string.length
9758 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9759
9760 if (length > strLen / 2) {
9761 length = strLen / 2
9762 }
9763 for (var i = 0; i < length; i++) {
9764 var parsed = parseInt(string.substr(i * 2, 2), 16)
9765 if (isNaN(parsed)) throw new Error('Invalid hex string')
9766 buf[offset + i] = parsed
9767 }
9768 return i
9769 }
9770
9771 function utf8Write (buf, string, offset, length) {
9772 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9773 }
9774
9775 function asciiWrite (buf, string, offset, length) {
9776 return blitBuffer(asciiToBytes(string), buf, offset, length)
9777 }
9778
9779 function binaryWrite (buf, string, offset, length) {
9780 return asciiWrite(buf, string, offset, length)
9781 }
9782
9783 function base64Write (buf, string, offset, length) {
9784 return blitBuffer(base64ToBytes(string), buf, offset, length)
9785 }
9786
9787 function ucs2Write (buf, string, offset, length) {
9788 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9789 }
9790
9791 Buffer.prototype.write = function write (string, offset, length, encoding) {
9792 // Buffer#write(string)
9793 if (offset === undefined) {
9794 encoding = 'utf8'
9795 length = this.length
9796 offset = 0
9797 // Buffer#write(string, encoding)
9798 } else if (length === undefined && typeof offset === 'string') {
9799 encoding = offset
9800 length = this.length
9801 offset = 0
9802 // Buffer#write(string, offset[, length][, encoding])
9803 } else if (isFinite(offset)) {
9804 offset = offset | 0
9805 if (isFinite(length)) {
9806 length = length | 0
9807 if (encoding === undefined) encoding = 'utf8'
9808 } else {
9809 encoding = length
9810 length = undefined
9811 }
9812 // legacy write(string, encoding, offset, length) - remove in v0.13
9813 } else {
9814 var swap = encoding
9815 encoding = offset
9816 offset = length | 0
9817 length = swap
9818 }
9819
9820 var remaining = this.length - offset
9821 if (length === undefined || length > remaining) length = remaining
9822
9823 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9824 throw new RangeError('attempt to write outside buffer bounds')
9825 }
9826
9827 if (!encoding) encoding = 'utf8'
9828
9829 var loweredCase = false
9830 for (;;) {
9831 switch (encoding) {
9832 case 'hex':
9833 return hexWrite(this, string, offset, length)
9834
9835 case 'utf8':
9836 case 'utf-8':
9837 return utf8Write(this, string, offset, length)
9838
9839 case 'ascii':
9840 return asciiWrite(this, string, offset, length)
9841
9842 case 'binary':
9843 return binaryWrite(this, string, offset, length)
9844
9845 case 'base64':
9846 // Warning: maxLength not taken into account in base64Write
9847 return base64Write(this, string, offset, length)
9848
9849 case 'ucs2':
9850 case 'ucs-2':
9851 case 'utf16le':
9852 case 'utf-16le':
9853 return ucs2Write(this, string, offset, length)
9854
9855 default:
9856 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9857 encoding = ('' + encoding).toLowerCase()
9858 loweredCase = true
9859 }
9860 }
9861 }
9862
9863 Buffer.prototype.toJSON = function toJSON () {
9864 return {
9865 type: 'Buffer',
9866 data: Array.prototype.slice.call(this._arr || this, 0)
9867 }
9868 }
9869
9870 function base64Slice (buf, start, end) {
9871 if (start === 0 && end === buf.length) {
9872 return base64.fromByteArray(buf)
9873 } else {
9874 return base64.fromByteArray(buf.slice(start, end))
9875 }
9876 }
9877
9878 function utf8Slice (buf, start, end) {
9879 end = Math.min(buf.length, end)
9880 var firstByte
9881 var secondByte
9882 var thirdByte
9883 var fourthByte
9884 var bytesPerSequence
9885 var tempCodePoint
9886 var codePoint
9887 var res = []
9888 var i = start
9889
9890 for (; i < end; i += bytesPerSequence) {
9891 firstByte = buf[i]
9892 codePoint = 0xFFFD
9893
9894 if (firstByte > 0xEF) {
9895 bytesPerSequence = 4
9896 } else if (firstByte > 0xDF) {
9897 bytesPerSequence = 3
9898 } else if (firstByte > 0xBF) {
9899 bytesPerSequence = 2
9900 } else {
9901 bytesPerSequence = 1
9902 }
9903
9904 if (i + bytesPerSequence <= end) {
9905 switch (bytesPerSequence) {
9906 case 1:
9907 if (firstByte < 0x80) {
9908 codePoint = firstByte
9909 }
9910 break
9911 case 2:
9912 secondByte = buf[i + 1]
9913 if ((secondByte & 0xC0) === 0x80) {
9914 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9915 if (tempCodePoint > 0x7F) {
9916 codePoint = tempCodePoint
9917 }
9918 }
9919 break
9920 case 3:
9921 secondByte = buf[i + 1]
9922 thirdByte = buf[i + 2]
9923 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9924 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9925 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9926 codePoint = tempCodePoint
9927 }
9928 }
9929 break
9930 case 4:
9931 secondByte = buf[i + 1]
9932 thirdByte = buf[i + 2]
9933 fourthByte = buf[i + 3]
9934 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9935 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9936 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9937 codePoint = tempCodePoint
9938 }
9939 }
9940 }
9941 }
9942
9943 if (codePoint === 0xFFFD) {
9944 // we generated an invalid codePoint so make sure to only advance by 1 byte
9945 bytesPerSequence = 1
9946 } else if (codePoint > 0xFFFF) {
9947 // encode to utf16 (surrogate pair dance)
9948 codePoint -= 0x10000
9949 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9950 codePoint = 0xDC00 | codePoint & 0x3FF
9951 }
9952
9953 res.push(codePoint)
9954 }
9955
9956 return String.fromCharCode.apply(String, res)
9957 }
9958
9959 function asciiSlice (buf, start, end) {
9960 var ret = ''
9961 end = Math.min(buf.length, end)
9962
9963 for (var i = start; i < end; i++) {
9964 ret += String.fromCharCode(buf[i] & 0x7F)
9965 }
9966 return ret
9967 }
9968
9969 function binarySlice (buf, start, end) {
9970 var ret = ''
9971 end = Math.min(buf.length, end)
9972
9973 for (var i = start; i < end; i++) {
9974 ret += String.fromCharCode(buf[i])
9975 }
9976 return ret
9977 }
9978
9979 function hexSlice (buf, start, end) {
9980 var len = buf.length
9981
9982 if (!start || start < 0) start = 0
9983 if (!end || end < 0 || end > len) end = len
9984
9985 var out = ''
9986 for (var i = start; i < end; i++) {
9987 out += toHex(buf[i])
9988 }
9989 return out
9990 }
9991
9992 function utf16leSlice (buf, start, end) {
9993 var bytes = buf.slice(start, end)
9994 var res = ''
9995 for (var i = 0; i < bytes.length; i += 2) {
9996 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9997 }
9998 return res
9999 }
10000
10001 Buffer.prototype.slice = function slice (start, end) {
10002 var len = this.length
10003 start = ~~start
10004 end = end === undefined ? len : ~~end
10005
10006 if (start < 0) {
10007 start += len
10008 if (start < 0) start = 0
10009 } else if (start > len) {
10010 start = len
10011 }
10012
10013 if (end < 0) {
10014 end += len
10015 if (end < 0) end = 0
10016 } else if (end > len) {
10017 end = len
10018 }
10019
10020 if (end < start) end = start
10021
10022 var newBuf
10023 if (Buffer.TYPED_ARRAY_SUPPORT) {
10024 newBuf = Buffer._augment(this.subarray(start, end))
10025 } else {
10026 var sliceLen = end - start
10027 newBuf = new Buffer(sliceLen, undefined)
10028 for (var i = 0; i < sliceLen; i++) {
10029 newBuf[i] = this[i + start]
10030 }
10031 }
10032
10033 if (newBuf.length) newBuf.parent = this.parent || this
10034
10035 return newBuf
10036 }
10037
10038 /*
10039 * Need to make sure that buffer isn't trying to write out of bounds.
10040 */
10041 function checkOffset (offset, ext, length) {
10042 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10043 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10044 }
10045
10046 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10047 offset = offset | 0
10048 byteLength = byteLength | 0
10049 if (!noAssert) checkOffset(offset, byteLength, this.length)
10050
10051 var val = this[offset]
10052 var mul = 1
10053 var i = 0
10054 while (++i < byteLength && (mul *= 0x100)) {
10055 val += this[offset + i] * mul
10056 }
10057
10058 return val
10059 }
10060
10061 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10062 offset = offset | 0
10063 byteLength = byteLength | 0
10064 if (!noAssert) {
10065 checkOffset(offset, byteLength, this.length)
10066 }
10067
10068 var val = this[offset + --byteLength]
10069 var mul = 1
10070 while (byteLength > 0 && (mul *= 0x100)) {
10071 val += this[offset + --byteLength] * mul
10072 }
10073
10074 return val
10075 }
10076
10077 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10078 if (!noAssert) checkOffset(offset, 1, this.length)
10079 return this[offset]
10080 }
10081
10082 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10083 if (!noAssert) checkOffset(offset, 2, this.length)
10084 return this[offset] | (this[offset + 1] << 8)
10085 }
10086
10087 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10088 if (!noAssert) checkOffset(offset, 2, this.length)
10089 return (this[offset] << 8) | this[offset + 1]
10090 }
10091
10092 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10093 if (!noAssert) checkOffset(offset, 4, this.length)
10094
10095 return ((this[offset]) |
10096 (this[offset + 1] << 8) |
10097 (this[offset + 2] << 16)) +
10098 (this[offset + 3] * 0x1000000)
10099 }
10100
10101 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10102 if (!noAssert) checkOffset(offset, 4, this.length)
10103
10104 return (this[offset] * 0x1000000) +
10105 ((this[offset + 1] << 16) |
10106 (this[offset + 2] << 8) |
10107 this[offset + 3])
10108 }
10109
10110 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10111 offset = offset | 0
10112 byteLength = byteLength | 0
10113 if (!noAssert) checkOffset(offset, byteLength, this.length)
10114
10115 var val = this[offset]
10116 var mul = 1
10117 var i = 0
10118 while (++i < byteLength && (mul *= 0x100)) {
10119 val += this[offset + i] * mul
10120 }
10121 mul *= 0x80
10122
10123 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10124
10125 return val
10126 }
10127
10128 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10129 offset = offset | 0
10130 byteLength = byteLength | 0
10131 if (!noAssert) checkOffset(offset, byteLength, this.length)
10132
10133 var i = byteLength
10134 var mul = 1
10135 var val = this[offset + --i]
10136 while (i > 0 && (mul *= 0x100)) {
10137 val += this[offset + --i] * mul
10138 }
10139 mul *= 0x80
10140
10141 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10142
10143 return val
10144 }
10145
10146 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 1, this.length)
10148 if (!(this[offset] & 0x80)) return (this[offset])
10149 return ((0xff - this[offset] + 1) * -1)
10150 }
10151
10152 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset] | (this[offset + 1] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156 }
10157
10158 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 2, this.length)
10160 var val = this[offset + 1] | (this[offset] << 8)
10161 return (val & 0x8000) ? val | 0xFFFF0000 : val
10162 }
10163
10164 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10165 if (!noAssert) checkOffset(offset, 4, this.length)
10166
10167 return (this[offset]) |
10168 (this[offset + 1] << 8) |
10169 (this[offset + 2] << 16) |
10170 (this[offset + 3] << 24)
10171 }
10172
10173 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10174 if (!noAssert) checkOffset(offset, 4, this.length)
10175
10176 return (this[offset] << 24) |
10177 (this[offset + 1] << 16) |
10178 (this[offset + 2] << 8) |
10179 (this[offset + 3])
10180 }
10181
10182 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10183 if (!noAssert) checkOffset(offset, 4, this.length)
10184 return ieee754.read(this, offset, true, 23, 4)
10185 }
10186
10187 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10188 if (!noAssert) checkOffset(offset, 4, this.length)
10189 return ieee754.read(this, offset, false, 23, 4)
10190 }
10191
10192 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10193 if (!noAssert) checkOffset(offset, 8, this.length)
10194 return ieee754.read(this, offset, true, 52, 8)
10195 }
10196
10197 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10198 if (!noAssert) checkOffset(offset, 8, this.length)
10199 return ieee754.read(this, offset, false, 52, 8)
10200 }
10201
10202 function checkInt (buf, value, offset, ext, max, min) {
10203 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10204 if (value > max || value < min) throw new RangeError('value is out of bounds')
10205 if (offset + ext > buf.length) throw new RangeError('index out of range')
10206 }
10207
10208 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10209 value = +value
10210 offset = offset | 0
10211 byteLength = byteLength | 0
10212 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10213
10214 var mul = 1
10215 var i = 0
10216 this[offset] = value & 0xFF
10217 while (++i < byteLength && (mul *= 0x100)) {
10218 this[offset + i] = (value / mul) & 0xFF
10219 }
10220
10221 return offset + byteLength
10222 }
10223
10224 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10225 value = +value
10226 offset = offset | 0
10227 byteLength = byteLength | 0
10228 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10229
10230 var i = byteLength - 1
10231 var mul = 1
10232 this[offset + i] = value & 0xFF
10233 while (--i >= 0 && (mul *= 0x100)) {
10234 this[offset + i] = (value / mul) & 0xFF
10235 }
10236
10237 return offset + byteLength
10238 }
10239
10240 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10241 value = +value
10242 offset = offset | 0
10243 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10244 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10245 this[offset] = value
10246 return offset + 1
10247 }
10248
10249 function objectWriteUInt16 (buf, value, offset, littleEndian) {
10250 if (value < 0) value = 0xffff + value + 1
10251 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10252 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10253 (littleEndian ? i : 1 - i) * 8
10254 }
10255 }
10256
10257 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10258 value = +value
10259 offset = offset | 0
10260 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10261 if (Buffer.TYPED_ARRAY_SUPPORT) {
10262 this[offset] = value
10263 this[offset + 1] = (value >>> 8)
10264 } else {
10265 objectWriteUInt16(this, value, offset, true)
10266 }
10267 return offset + 2
10268 }
10269
10270 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10271 value = +value
10272 offset = offset | 0
10273 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10274 if (Buffer.TYPED_ARRAY_SUPPORT) {
10275 this[offset] = (value >>> 8)
10276 this[offset + 1] = value
10277 } else {
10278 objectWriteUInt16(this, value, offset, false)
10279 }
10280 return offset + 2
10281 }
10282
10283 function objectWriteUInt32 (buf, value, offset, littleEndian) {
10284 if (value < 0) value = 0xffffffff + value + 1
10285 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10286 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10287 }
10288 }
10289
10290 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10291 value = +value
10292 offset = offset | 0
10293 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10294 if (Buffer.TYPED_ARRAY_SUPPORT) {
10295 this[offset + 3] = (value >>> 24)
10296 this[offset + 2] = (value >>> 16)
10297 this[offset + 1] = (value >>> 8)
10298 this[offset] = value
10299 } else {
10300 objectWriteUInt32(this, value, offset, true)
10301 }
10302 return offset + 4
10303 }
10304
10305 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10306 value = +value
10307 offset = offset | 0
10308 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10309 if (Buffer.TYPED_ARRAY_SUPPORT) {
10310 this[offset] = (value >>> 24)
10311 this[offset + 1] = (value >>> 16)
10312 this[offset + 2] = (value >>> 8)
10313 this[offset + 3] = value
10314 } else {
10315 objectWriteUInt32(this, value, offset, false)
10316 }
10317 return offset + 4
10318 }
10319
10320 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10321 value = +value
10322 offset = offset | 0
10323 if (!noAssert) {
10324 var limit = Math.pow(2, 8 * byteLength - 1)
10325
10326 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10327 }
10328
10329 var i = 0
10330 var mul = 1
10331 var sub = value < 0 ? 1 : 0
10332 this[offset] = value & 0xFF
10333 while (++i < byteLength && (mul *= 0x100)) {
10334 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10335 }
10336
10337 return offset + byteLength
10338 }
10339
10340 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10341 value = +value
10342 offset = offset | 0
10343 if (!noAssert) {
10344 var limit = Math.pow(2, 8 * byteLength - 1)
10345
10346 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10347 }
10348
10349 var i = byteLength - 1
10350 var mul = 1
10351 var sub = value < 0 ? 1 : 0
10352 this[offset + i] = value & 0xFF
10353 while (--i >= 0 && (mul *= 0x100)) {
10354 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10355 }
10356
10357 return offset + byteLength
10358 }
10359
10360 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10361 value = +value
10362 offset = offset | 0
10363 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10364 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10365 if (value < 0) value = 0xff + value + 1
10366 this[offset] = value
10367 return offset + 1
10368 }
10369
10370 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10371 value = +value
10372 offset = offset | 0
10373 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10374 if (Buffer.TYPED_ARRAY_SUPPORT) {
10375 this[offset] = value
10376 this[offset + 1] = (value >>> 8)
10377 } else {
10378 objectWriteUInt16(this, value, offset, true)
10379 }
10380 return offset + 2
10381 }
10382
10383 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10384 value = +value
10385 offset = offset | 0
10386 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10387 if (Buffer.TYPED_ARRAY_SUPPORT) {
10388 this[offset] = (value >>> 8)
10389 this[offset + 1] = value
10390 } else {
10391 objectWriteUInt16(this, value, offset, false)
10392 }
10393 return offset + 2
10394 }
10395
10396 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10397 value = +value
10398 offset = offset | 0
10399 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10400 if (Buffer.TYPED_ARRAY_SUPPORT) {
10401 this[offset] = value
10402 this[offset + 1] = (value >>> 8)
10403 this[offset + 2] = (value >>> 16)
10404 this[offset + 3] = (value >>> 24)
10405 } else {
10406 objectWriteUInt32(this, value, offset, true)
10407 }
10408 return offset + 4
10409 }
10410
10411 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10412 value = +value
10413 offset = offset | 0
10414 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10415 if (value < 0) value = 0xffffffff + value + 1
10416 if (Buffer.TYPED_ARRAY_SUPPORT) {
10417 this[offset] = (value >>> 24)
10418 this[offset + 1] = (value >>> 16)
10419 this[offset + 2] = (value >>> 8)
10420 this[offset + 3] = value
10421 } else {
10422 objectWriteUInt32(this, value, offset, false)
10423 }
10424 return offset + 4
10425 }
10426
10427 function checkIEEE754 (buf, value, offset, ext, max, min) {
10428 if (value > max || value < min) throw new RangeError('value is out of bounds')
10429 if (offset + ext > buf.length) throw new RangeError('index out of range')
10430 if (offset < 0) throw new RangeError('index out of range')
10431 }
10432
10433 function writeFloat (buf, value, offset, littleEndian, noAssert) {
10434 if (!noAssert) {
10435 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10436 }
10437 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10438 return offset + 4
10439 }
10440
10441 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10442 return writeFloat(this, value, offset, true, noAssert)
10443 }
10444
10445 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10446 return writeFloat(this, value, offset, false, noAssert)
10447 }
10448
10449 function writeDouble (buf, value, offset, littleEndian, noAssert) {
10450 if (!noAssert) {
10451 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10452 }
10453 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10454 return offset + 8
10455 }
10456
10457 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10458 return writeDouble(this, value, offset, true, noAssert)
10459 }
10460
10461 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10462 return writeDouble(this, value, offset, false, noAssert)
10463 }
10464
10465 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10466 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10467 if (!start) start = 0
10468 if (!end && end !== 0) end = this.length
10469 if (targetStart >= target.length) targetStart = target.length
10470 if (!targetStart) targetStart = 0
10471 if (end > 0 && end < start) end = start
10472
10473 // Copy 0 bytes; we're done
10474 if (end === start) return 0
10475 if (target.length === 0 || this.length === 0) return 0
10476
10477 // Fatal error conditions
10478 if (targetStart < 0) {
10479 throw new RangeError('targetStart out of bounds')
10480 }
10481 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10482 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10483
10484 // Are we oob?
10485 if (end > this.length) end = this.length
10486 if (target.length - targetStart < end - start) {
10487 end = target.length - targetStart + start
10488 }
10489
10490 var len = end - start
10491 var i
10492
10493 if (this === target && start < targetStart && targetStart < end) {
10494 // descending copy from end
10495 for (i = len - 1; i >= 0; i--) {
10496 target[i + targetStart] = this[i + start]
10497 }
10498 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10499 // ascending copy from start
10500 for (i = 0; i < len; i++) {
10501 target[i + targetStart] = this[i + start]
10502 }
10503 } else {
10504 target._set(this.subarray(start, start + len), targetStart)
10505 }
10506
10507 return len
10508 }
10509
10510 // fill(value, start=0, end=buffer.length)
10511 Buffer.prototype.fill = function fill (value, start, end) {
10512 if (!value) value = 0
10513 if (!start) start = 0
10514 if (!end) end = this.length
10515
10516 if (end < start) throw new RangeError('end < start')
10517
10518 // Fill 0 bytes; we're done
10519 if (end === start) return
10520 if (this.length === 0) return
10521
10522 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10523 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10524
10525 var i
10526 if (typeof value === 'number') {
10527 for (i = start; i < end; i++) {
10528 this[i] = value
10529 }
10530 } else {
10531 var bytes = utf8ToBytes(value.toString())
10532 var len = bytes.length
10533 for (i = start; i < end; i++) {
10534 this[i] = bytes[i % len]
10535 }
10536 }
10537
10538 return this
10539 }
10540
10541 /**
10542 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10543 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10544 */
10545 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10546 if (typeof Uint8Array !== 'undefined') {
10547 if (Buffer.TYPED_ARRAY_SUPPORT) {
10548 return (new Buffer(this)).buffer
10549 } else {
10550 var buf = new Uint8Array(this.length)
10551 for (var i = 0, len = buf.length; i < len; i += 1) {
10552 buf[i] = this[i]
10553 }
10554 return buf.buffer
10555 }
10556 } else {
10557 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10558 }
10559 }
10560
10561 // HELPER FUNCTIONS
10562 // ================
10563
10564 var BP = Buffer.prototype
10565
10566 /**
10567 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10568 */
10569 Buffer._augment = function _augment (arr) {
10570 arr.constructor = Buffer
10571 arr._isBuffer = true
10572
10573 // save reference to original Uint8Array set method before overwriting
10574 arr._set = arr.set
10575
10576 // deprecated
10577 arr.get = BP.get
10578 arr.set = BP.set
10579
10580 arr.write = BP.write
10581 arr.toString = BP.toString
10582 arr.toLocaleString = BP.toString
10583 arr.toJSON = BP.toJSON
10584 arr.equals = BP.equals
10585 arr.compare = BP.compare
10586 arr.indexOf = BP.indexOf
10587 arr.copy = BP.copy
10588 arr.slice = BP.slice
10589 arr.readUIntLE = BP.readUIntLE
10590 arr.readUIntBE = BP.readUIntBE
10591 arr.readUInt8 = BP.readUInt8
10592 arr.readUInt16LE = BP.readUInt16LE
10593 arr.readUInt16BE = BP.readUInt16BE
10594 arr.readUInt32LE = BP.readUInt32LE
10595 arr.readUInt32BE = BP.readUInt32BE
10596 arr.readIntLE = BP.readIntLE
10597 arr.readIntBE = BP.readIntBE
10598 arr.readInt8 = BP.readInt8
10599 arr.readInt16LE = BP.readInt16LE
10600 arr.readInt16BE = BP.readInt16BE
10601 arr.readInt32LE = BP.readInt32LE
10602 arr.readInt32BE = BP.readInt32BE
10603 arr.readFloatLE = BP.readFloatLE
10604 arr.readFloatBE = BP.readFloatBE
10605 arr.readDoubleLE = BP.readDoubleLE
10606 arr.readDoubleBE = BP.readDoubleBE
10607 arr.writeUInt8 = BP.writeUInt8
10608 arr.writeUIntLE = BP.writeUIntLE
10609 arr.writeUIntBE = BP.writeUIntBE
10610 arr.writeUInt16LE = BP.writeUInt16LE
10611 arr.writeUInt16BE = BP.writeUInt16BE
10612 arr.writeUInt32LE = BP.writeUInt32LE
10613 arr.writeUInt32BE = BP.writeUInt32BE
10614 arr.writeIntLE = BP.writeIntLE
10615 arr.writeIntBE = BP.writeIntBE
10616 arr.writeInt8 = BP.writeInt8
10617 arr.writeInt16LE = BP.writeInt16LE
10618 arr.writeInt16BE = BP.writeInt16BE
10619 arr.writeInt32LE = BP.writeInt32LE
10620 arr.writeInt32BE = BP.writeInt32BE
10621 arr.writeFloatLE = BP.writeFloatLE
10622 arr.writeFloatBE = BP.writeFloatBE
10623 arr.writeDoubleLE = BP.writeDoubleLE
10624 arr.writeDoubleBE = BP.writeDoubleBE
10625 arr.fill = BP.fill
10626 arr.inspect = BP.inspect
10627 arr.toArrayBuffer = BP.toArrayBuffer
10628
10629 return arr
10630 }
10631
10632 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10633
10634 function base64clean (str) {
10635 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10636 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10637 // Node converts strings with length < 2 to ''
10638 if (str.length < 2) return ''
10639 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10640 while (str.length % 4 !== 0) {
10641 str = str + '='
10642 }
10643 return str
10644 }
10645
10646 function stringtrim (str) {
10647 if (str.trim) return str.trim()
10648 return str.replace(/^\s+|\s+$/g, '')
10649 }
10650
10651 function toHex (n) {
10652 if (n < 16) return '0' + n.toString(16)
10653 return n.toString(16)
10654 }
10655
10656 function utf8ToBytes (string, units) {
10657 units = units || Infinity
10658 var codePoint
10659 var length = string.length
10660 var leadSurrogate = null
10661 var bytes = []
10662
10663 for (var i = 0; i < length; i++) {
10664 codePoint = string.charCodeAt(i)
10665
10666 // is surrogate component
10667 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10668 // last char was a lead
10669 if (!leadSurrogate) {
10670 // no lead yet
10671 if (codePoint > 0xDBFF) {
10672 // unexpected trail
10673 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10674 continue
10675
10676 } else if (i + 1 === length) {
10677 // unpaired lead
10678 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10679 continue
10680 }
10681
10682 // valid lead
10683 leadSurrogate = codePoint
10684
10685 continue
10686 }
10687
10688 // 2 leads in a row
10689 if (codePoint < 0xDC00) {
10690 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10691 leadSurrogate = codePoint
10692 continue
10693 }
10694
10695 // valid surrogate pair
10696 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10697
10698 } else if (leadSurrogate) {
10699 // valid bmp char, but last char was a lead
10700 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10701 }
10702
10703 leadSurrogate = null
10704
10705 // encode utf8
10706 if (codePoint < 0x80) {
10707 if ((units -= 1) < 0) break
10708 bytes.push(codePoint)
10709 } else if (codePoint < 0x800) {
10710 if ((units -= 2) < 0) break
10711 bytes.push(
10712 codePoint >> 0x6 | 0xC0,
10713 codePoint & 0x3F | 0x80
10714 )
10715 } else if (codePoint < 0x10000) {
10716 if ((units -= 3) < 0) break
10717 bytes.push(
10718 codePoint >> 0xC | 0xE0,
10719 codePoint >> 0x6 & 0x3F | 0x80,
10720 codePoint & 0x3F | 0x80
10721 )
10722 } else if (codePoint < 0x110000) {
10723 if ((units -= 4) < 0) break
10724 bytes.push(
10725 codePoint >> 0x12 | 0xF0,
10726 codePoint >> 0xC & 0x3F | 0x80,
10727 codePoint >> 0x6 & 0x3F | 0x80,
10728 codePoint & 0x3F | 0x80
10729 )
10730 } else {
10731 throw new Error('Invalid code point')
10732 }
10733 }
10734
10735 return bytes
10736 }
10737
10738 function asciiToBytes (str) {
10739 var byteArray = []
10740 for (var i = 0; i < str.length; i++) {
10741 // Node's code seems to be doing this and not & 0x7F..
10742 byteArray.push(str.charCodeAt(i) & 0xFF)
10743 }
10744 return byteArray
10745 }
10746
10747 function utf16leToBytes (str, units) {
10748 var c, hi, lo
10749 var byteArray = []
10750 for (var i = 0; i < str.length; i++) {
10751 if ((units -= 2) < 0) break
10752
10753 c = str.charCodeAt(i)
10754 hi = c >> 8
10755 lo = c % 256
10756 byteArray.push(lo)
10757 byteArray.push(hi)
10758 }
10759
10760 return byteArray
10761 }
10762
10763 function base64ToBytes (str) {
10764 return base64.toByteArray(base64clean(str))
10765 }
10766
10767 function blitBuffer (src, dst, offset, length) {
10768 for (var i = 0; i < length; i++) {
10769 if ((i + offset >= dst.length) || (i >= src.length)) break
10770 dst[i + offset] = src[i]
10771 }
10772 return i
10773 }
10774
10775 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10776 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10777
10778 ;(function (exports) {
10779 'use strict';
10780
10781 var Arr = (typeof Uint8Array !== 'undefined')
10782 ? Uint8Array
10783 : Array
10784
10785 var PLUS = '+'.charCodeAt(0)
10786 var SLASH = '/'.charCodeAt(0)
10787 var NUMBER = '0'.charCodeAt(0)
10788 var LOWER = 'a'.charCodeAt(0)
10789 var UPPER = 'A'.charCodeAt(0)
10790 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10791 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10792
10793 function decode (elt) {
10794 var code = elt.charCodeAt(0)
10795 if (code === PLUS ||
10796 code === PLUS_URL_SAFE)
10797 return 62 // '+'
10798 if (code === SLASH ||
10799 code === SLASH_URL_SAFE)
10800 return 63 // '/'
10801 if (code < NUMBER)
10802 return -1 //no match
10803 if (code < NUMBER + 10)
10804 return code - NUMBER + 26 + 26
10805 if (code < UPPER + 26)
10806 return code - UPPER
10807 if (code < LOWER + 26)
10808 return code - LOWER + 26
10809 }
10810
10811 function b64ToByteArray (b64) {
10812 var i, j, l, tmp, placeHolders, arr
10813
10814 if (b64.length % 4 > 0) {
10815 throw new Error('Invalid string. Length must be a multiple of 4')
10816 }
10817
10818 // the number of equal signs (place holders)
10819 // if there are two placeholders, than the two characters before it
10820 // represent one byte
10821 // if there is only one, then the three characters before it represent 2 bytes
10822 // this is just a cheap hack to not do indexOf twice
10823 var len = b64.length
10824 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10825
10826 // base64 is 4/3 + up to two characters of the original data
10827 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10828
10829 // if there are placeholders, only get up to the last complete 4 chars
10830 l = placeHolders > 0 ? b64.length - 4 : b64.length
10831
10832 var L = 0
10833
10834 function push (v) {
10835 arr[L++] = v
10836 }
10837
10838 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10839 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10840 push((tmp & 0xFF0000) >> 16)
10841 push((tmp & 0xFF00) >> 8)
10842 push(tmp & 0xFF)
10843 }
10844
10845 if (placeHolders === 2) {
10846 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10847 push(tmp & 0xFF)
10848 } else if (placeHolders === 1) {
10849 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10850 push((tmp >> 8) & 0xFF)
10851 push(tmp & 0xFF)
10852 }
10853
10854 return arr
10855 }
10856
10857 function uint8ToBase64 (uint8) {
10858 var i,
10859 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10860 output = "",
10861 temp, length
10862
10863 function encode (num) {
10864 return lookup.charAt(num)
10865 }
10866
10867 function tripletToBase64 (num) {
10868 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10869 }
10870
10871 // go through the array every three bytes, we'll deal with trailing stuff later
10872 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10873 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10874 output += tripletToBase64(temp)
10875 }
10876
10877 // pad the end with zeros, but make sure to not forget the extra bytes
10878 switch (extraBytes) {
10879 case 1:
10880 temp = uint8[uint8.length - 1]
10881 output += encode(temp >> 2)
10882 output += encode((temp << 4) & 0x3F)
10883 output += '=='
10884 break
10885 case 2:
10886 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10887 output += encode(temp >> 10)
10888 output += encode((temp >> 4) & 0x3F)
10889 output += encode((temp << 2) & 0x3F)
10890 output += '='
10891 break
10892 }
10893
10894 return output
10895 }
10896
10897 exports.toByteArray = b64ToByteArray
10898 exports.fromByteArray = uint8ToBase64
10899 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10900
10901 },{}],9:[function(require,module,exports){
10902 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10903 var e, m
10904 var eLen = nBytes * 8 - mLen - 1
10905 var eMax = (1 << eLen) - 1
10906 var eBias = eMax >> 1
10907 var nBits = -7
10908 var i = isLE ? (nBytes - 1) : 0
10909 var d = isLE ? -1 : 1
10910 var s = buffer[offset + i]
10911
10912 i += d
10913
10914 e = s & ((1 << (-nBits)) - 1)
10915 s >>= (-nBits)
10916 nBits += eLen
10917 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10918
10919 m = e & ((1 << (-nBits)) - 1)
10920 e >>= (-nBits)
10921 nBits += mLen
10922 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10923
10924 if (e === 0) {
10925 e = 1 - eBias
10926 } else if (e === eMax) {
10927 return m ? NaN : ((s ? -1 : 1) * Infinity)
10928 } else {
10929 m = m + Math.pow(2, mLen)
10930 e = e - eBias
10931 }
10932 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10933 }
10934
10935 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10936 var e, m, c
10937 var eLen = nBytes * 8 - mLen - 1
10938 var eMax = (1 << eLen) - 1
10939 var eBias = eMax >> 1
10940 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10941 var i = isLE ? 0 : (nBytes - 1)
10942 var d = isLE ? 1 : -1
10943 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10944
10945 value = Math.abs(value)
10946
10947 if (isNaN(value) || value === Infinity) {
10948 m = isNaN(value) ? 1 : 0
10949 e = eMax
10950 } else {
10951 e = Math.floor(Math.log(value) / Math.LN2)
10952 if (value * (c = Math.pow(2, -e)) < 1) {
10953 e--
10954 c *= 2
10955 }
10956 if (e + eBias >= 1) {
10957 value += rt / c
10958 } else {
10959 value += rt * Math.pow(2, 1 - eBias)
10960 }
10961 if (value * c >= 2) {
10962 e++
10963 c /= 2
10964 }
10965
10966 if (e + eBias >= eMax) {
10967 m = 0
10968 e = eMax
10969 } else if (e + eBias >= 1) {
10970 m = (value * c - 1) * Math.pow(2, mLen)
10971 e = e + eBias
10972 } else {
10973 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10974 e = 0
10975 }
10976 }
10977
10978 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10979
10980 e = (e << mLen) | m
10981 eLen += mLen
10982 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10983
10984 buffer[offset + i - d] |= s * 128
10985 }
10986
10987 },{}],10:[function(require,module,exports){
10988
10989 /**
10990 * isArray
10991 */
10992
10993 var isArray = Array.isArray;
10994
10995 /**
10996 * toString
10997 */
10998
10999 var str = Object.prototype.toString;
11000
11001 /**
11002 * Whether or not the given `val`
11003 * is an array.
11004 *
11005 * example:
11006 *
11007 * isArray([]);
11008 * // > true
11009 * isArray(arguments);
11010 * // > false
11011 * isArray('');
11012 * // > false
11013 *
11014 * @param {mixed} val
11015 * @return {bool}
11016 */
11017
11018 module.exports = isArray || function (val) {
11019 return !! val && '[object Array]' == str.call(val);
11020 };
11021
11022 },{}],11:[function(require,module,exports){
11023 // Copyright Joyent, Inc. and other Node contributors.
11024 //
11025 // Permission is hereby granted, free of charge, to any person obtaining a
11026 // copy of this software and associated documentation files (the
11027 // "Software"), to deal in the Software without restriction, including
11028 // without limitation the rights to use, copy, modify, merge, publish,
11029 // distribute, sublicense, and/or sell copies of the Software, and to permit
11030 // persons to whom the Software is furnished to do so, subject to the
11031 // following conditions:
11032 //
11033 // The above copyright notice and this permission notice shall be included
11034 // in all copies or substantial portions of the Software.
11035 //
11036 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11037 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11038 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11039 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11040 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11041 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11042 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11043
11044 function EventEmitter() {
11045 this._events = this._events || {};
11046 this._maxListeners = this._maxListeners || undefined;
11047 }
11048 module.exports = EventEmitter;
11049
11050 // Backwards-compat with node 0.10.x
11051 EventEmitter.EventEmitter = EventEmitter;
11052
11053 EventEmitter.prototype._events = undefined;
11054 EventEmitter.prototype._maxListeners = undefined;
11055
11056 // By default EventEmitters will print a warning if more than 10 listeners are
11057 // added to it. This is a useful default which helps finding memory leaks.
11058 EventEmitter.defaultMaxListeners = 10;
11059
11060 // Obviously not all Emitters should be limited to 10. This function allows
11061 // that to be increased. Set to zero for unlimited.
11062 EventEmitter.prototype.setMaxListeners = function(n) {
11063 if (!isNumber(n) || n < 0 || isNaN(n))
11064 throw TypeError('n must be a positive number');
11065 this._maxListeners = n;
11066 return this;
11067 };
11068
11069 EventEmitter.prototype.emit = function(type) {
11070 var er, handler, len, args, i, listeners;
11071
11072 if (!this._events)
11073 this._events = {};
11074
11075 // If there is no 'error' event listener then throw.
11076 if (type === 'error') {
11077 if (!this._events.error ||
11078 (isObject(this._events.error) && !this._events.error.length)) {
11079 er = arguments[1];
11080 if (er instanceof Error) {
11081 throw er; // Unhandled 'error' event
11082 }
11083 throw TypeError('Uncaught, unspecified "error" event.');
11084 }
11085 }
11086
11087 handler = this._events[type];
11088
11089 if (isUndefined(handler))
11090 return false;
11091
11092 if (isFunction(handler)) {
11093 switch (arguments.length) {
11094 // fast cases
11095 case 1:
11096 handler.call(this);
11097 break;
11098 case 2:
11099 handler.call(this, arguments[1]);
11100 break;
11101 case 3:
11102 handler.call(this, arguments[1], arguments[2]);
11103 break;
11104 // slower
11105 default:
11106 len = arguments.length;
11107 args = new Array(len - 1);
11108 for (i = 1; i < len; i++)
11109 args[i - 1] = arguments[i];
11110 handler.apply(this, args);
11111 }
11112 } else if (isObject(handler)) {
11113 len = arguments.length;
11114 args = new Array(len - 1);
11115 for (i = 1; i < len; i++)
11116 args[i - 1] = arguments[i];
11117
11118 listeners = handler.slice();
11119 len = listeners.length;
11120 for (i = 0; i < len; i++)
11121 listeners[i].apply(this, args);
11122 }
11123
11124 return true;
11125 };
11126
11127 EventEmitter.prototype.addListener = function(type, listener) {
11128 var m;
11129
11130 if (!isFunction(listener))
11131 throw TypeError('listener must be a function');
11132
11133 if (!this._events)
11134 this._events = {};
11135
11136 // To avoid recursion in the case that type === "newListener"! Before
11137 // adding it to the listeners, first emit "newListener".
11138 if (this._events.newListener)
11139 this.emit('newListener', type,
11140 isFunction(listener.listener) ?
11141 listener.listener : listener);
11142
11143 if (!this._events[type])
11144 // Optimize the case of one listener. Don't need the extra array object.
11145 this._events[type] = listener;
11146 else if (isObject(this._events[type]))
11147 // If we've already got an array, just append.
11148 this._events[type].push(listener);
11149 else
11150 // Adding the second element, need to change to array.
11151 this._events[type] = [this._events[type], listener];
11152
11153 // Check for listener leak
11154 if (isObject(this._events[type]) && !this._events[type].warned) {
11155 var m;
11156 if (!isUndefined(this._maxListeners)) {
11157 m = this._maxListeners;
11158 } else {
11159 m = EventEmitter.defaultMaxListeners;
11160 }
11161
11162 if (m && m > 0 && this._events[type].length > m) {
11163 this._events[type].warned = true;
11164 console.error('(node) warning: possible EventEmitter memory ' +
11165 'leak detected. %d listeners added. ' +
11166 'Use emitter.setMaxListeners() to increase limit.',
11167 this._events[type].length);
11168 if (typeof console.trace === 'function') {
11169 // not supported in IE 10
11170 console.trace();
11171 }
11172 }
11173 }
11174
11175 return this;
11176 };
11177
11178 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11179
11180 EventEmitter.prototype.once = function(type, listener) {
11181 if (!isFunction(listener))
11182 throw TypeError('listener must be a function');
11183
11184 var fired = false;
11185
11186 function g() {
11187 this.removeListener(type, g);
11188
11189 if (!fired) {
11190 fired = true;
11191 listener.apply(this, arguments);
11192 }
11193 }
11194
11195 g.listener = listener;
11196 this.on(type, g);
11197
11198 return this;
11199 };
11200
11201 // emits a 'removeListener' event iff the listener was removed
11202 EventEmitter.prototype.removeListener = function(type, listener) {
11203 var list, position, length, i;
11204
11205 if (!isFunction(listener))
11206 throw TypeError('listener must be a function');
11207
11208 if (!this._events || !this._events[type])
11209 return this;
11210
11211 list = this._events[type];
11212 length = list.length;
11213 position = -1;
11214
11215 if (list === listener ||
11216 (isFunction(list.listener) && list.listener === listener)) {
11217 delete this._events[type];
11218 if (this._events.removeListener)
11219 this.emit('removeListener', type, listener);
11220
11221 } else if (isObject(list)) {
11222 for (i = length; i-- > 0;) {
11223 if (list[i] === listener ||
11224 (list[i].listener && list[i].listener === listener)) {
11225 position = i;
11226 break;
11227 }
11228 }
11229
11230 if (position < 0)
11231 return this;
11232
11233 if (list.length === 1) {
11234 list.length = 0;
11235 delete this._events[type];
11236 } else {
11237 list.splice(position, 1);
11238 }
11239
11240 if (this._events.removeListener)
11241 this.emit('removeListener', type, listener);
11242 }
11243
11244 return this;
11245 };
11246
11247 EventEmitter.prototype.removeAllListeners = function(type) {
11248 var key, listeners;
11249
11250 if (!this._events)
11251 return this;
11252
11253 // not listening for removeListener, no need to emit
11254 if (!this._events.removeListener) {
11255 if (arguments.length === 0)
11256 this._events = {};
11257 else if (this._events[type])
11258 delete this._events[type];
11259 return this;
11260 }
11261
11262 // emit removeListener for all listeners on all events
11263 if (arguments.length === 0) {
11264 for (key in this._events) {
11265 if (key === 'removeListener') continue;
11266 this.removeAllListeners(key);
11267 }
11268 this.removeAllListeners('removeListener');
11269 this._events = {};
11270 return this;
11271 }
11272
11273 listeners = this._events[type];
11274
11275 if (isFunction(listeners)) {
11276 this.removeListener(type, listeners);
11277 } else {
11278 // LIFO order
11279 while (listeners.length)
11280 this.removeListener(type, listeners[listeners.length - 1]);
11281 }
11282 delete this._events[type];
11283
11284 return this;
11285 };
11286
11287 EventEmitter.prototype.listeners = function(type) {
11288 var ret;
11289 if (!this._events || !this._events[type])
11290 ret = [];
11291 else if (isFunction(this._events[type]))
11292 ret = [this._events[type]];
11293 else
11294 ret = this._events[type].slice();
11295 return ret;
11296 };
11297
11298 EventEmitter.listenerCount = function(emitter, type) {
11299 var ret;
11300 if (!emitter._events || !emitter._events[type])
11301 ret = 0;
11302 else if (isFunction(emitter._events[type]))
11303 ret = 1;
11304 else
11305 ret = emitter._events[type].length;
11306 return ret;
11307 };
11308
11309 function isFunction(arg) {
11310 return typeof arg === 'function';
11311 }
11312
11313 function isNumber(arg) {
11314 return typeof arg === 'number';
11315 }
11316
11317 function isObject(arg) {
11318 return typeof arg === 'object' && arg !== null;
11319 }
11320
11321 function isUndefined(arg) {
11322 return arg === void 0;
11323 }
11324
11325 },{}],12:[function(require,module,exports){
11326 if (typeof Object.create === 'function') {
11327 // implementation from standard node.js 'util' module
11328 module.exports = function inherits(ctor, superCtor) {
11329 ctor.super_ = superCtor
11330 ctor.prototype = Object.create(superCtor.prototype, {
11331 constructor: {
11332 value: ctor,
11333 enumerable: false,
11334 writable: true,
11335 configurable: true
11336 }
11337 });
11338 };
11339 } else {
11340 // old school shim for old browsers
11341 module.exports = function inherits(ctor, superCtor) {
11342 ctor.super_ = superCtor
11343 var TempCtor = function () {}
11344 TempCtor.prototype = superCtor.prototype
11345 ctor.prototype = new TempCtor()
11346 ctor.prototype.constructor = ctor
11347 }
11348 }
11349
11350 },{}],13:[function(require,module,exports){
11351 module.exports = Array.isArray || function (arr) {
11352 return Object.prototype.toString.call(arr) == '[object Array]';
11353 };
11354
11355 },{}],14:[function(require,module,exports){
11356 // shim for using process in browser
11357
11358 var process = module.exports = {};
11359 var queue = [];
11360 var draining = false;
11361 var currentQueue;
11362 var queueIndex = -1;
11363
11364 function cleanUpNextTick() {
11365 draining = false;
11366 if (currentQueue.length) {
11367 queue = currentQueue.concat(queue);
11368 } else {
11369 queueIndex = -1;
11370 }
11371 if (queue.length) {
11372 drainQueue();
11373 }
11374 }
11375
11376 function drainQueue() {
11377 if (draining) {
11378 return;
11379 }
11380 var timeout = setTimeout(cleanUpNextTick);
11381 draining = true;
11382
11383 var len = queue.length;
11384 while(len) {
11385 currentQueue = queue;
11386 queue = [];
11387 while (++queueIndex < len) {
11388 currentQueue[queueIndex].run();
11389 }
11390 queueIndex = -1;
11391 len = queue.length;
11392 }
11393 currentQueue = null;
11394 draining = false;
11395 clearTimeout(timeout);
11396 }
11397
11398 process.nextTick = function (fun) {
11399 var args = new Array(arguments.length - 1);
11400 if (arguments.length > 1) {
11401 for (var i = 1; i < arguments.length; i++) {
11402 args[i - 1] = arguments[i];
11403 }
11404 }
11405 queue.push(new Item(fun, args));
11406 if (queue.length === 1 && !draining) {
11407 setTimeout(drainQueue, 0);
11408 }
11409 };
11410
11411 // v8 likes predictible objects
11412 function Item(fun, array) {
11413 this.fun = fun;
11414 this.array = array;
11415 }
11416 Item.prototype.run = function () {
11417 this.fun.apply(null, this.array);
11418 };
11419 process.title = 'browser';
11420 process.browser = true;
11421 process.env = {};
11422 process.argv = [];
11423 process.version = ''; // empty string to avoid regexp issues
11424 process.versions = {};
11425
11426 function noop() {}
11427
11428 process.on = noop;
11429 process.addListener = noop;
11430 process.once = noop;
11431 process.off = noop;
11432 process.removeListener = noop;
11433 process.removeAllListeners = noop;
11434 process.emit = noop;
11435
11436 process.binding = function (name) {
11437 throw new Error('process.binding is not supported');
11438 };
11439
11440 // TODO(shtylman)
11441 process.cwd = function () { return '/' };
11442 process.chdir = function (dir) {
11443 throw new Error('process.chdir is not supported');
11444 };
11445 process.umask = function() { return 0; };
11446
11447 },{}],15:[function(require,module,exports){
11448 module.exports = require("./lib/_stream_duplex.js")
11449
11450 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11451 (function (process){
11452 // Copyright Joyent, Inc. and other Node contributors.
11453 //
11454 // Permission is hereby granted, free of charge, to any person obtaining a
11455 // copy of this software and associated documentation files (the
11456 // "Software"), to deal in the Software without restriction, including
11457 // without limitation the rights to use, copy, modify, merge, publish,
11458 // distribute, sublicense, and/or sell copies of the Software, and to permit
11459 // persons to whom the Software is furnished to do so, subject to the
11460 // following conditions:
11461 //
11462 // The above copyright notice and this permission notice shall be included
11463 // in all copies or substantial portions of the Software.
11464 //
11465 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11466 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11467 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11468 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11469 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11470 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11471 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11472
11473 // a duplex stream is just a stream that is both readable and writable.
11474 // Since JS doesn't have multiple prototypal inheritance, this class
11475 // prototypally inherits from Readable, and then parasitically from
11476 // Writable.
11477
11478 module.exports = Duplex;
11479
11480 /*<replacement>*/
11481 var objectKeys = Object.keys || function (obj) {
11482 var keys = [];
11483 for (var key in obj) keys.push(key);
11484 return keys;
11485 }
11486 /*</replacement>*/
11487
11488
11489 /*<replacement>*/
11490 var util = require('core-util-is');
11491 util.inherits = require('inherits');
11492 /*</replacement>*/
11493
11494 var Readable = require('./_stream_readable');
11495 var Writable = require('./_stream_writable');
11496
11497 util.inherits(Duplex, Readable);
11498
11499 forEach(objectKeys(Writable.prototype), function(method) {
11500 if (!Duplex.prototype[method])
11501 Duplex.prototype[method] = Writable.prototype[method];
11502 });
11503
11504 function Duplex(options) {
11505 if (!(this instanceof Duplex))
11506 return new Duplex(options);
11507
11508 Readable.call(this, options);
11509 Writable.call(this, options);
11510
11511 if (options && options.readable === false)
11512 this.readable = false;
11513
11514 if (options && options.writable === false)
11515 this.writable = false;
11516
11517 this.allowHalfOpen = true;
11518 if (options && options.allowHalfOpen === false)
11519 this.allowHalfOpen = false;
11520
11521 this.once('end', onend);
11522 }
11523
11524 // the no-half-open enforcer
11525 function onend() {
11526 // if we allow half-open state, or if the writable side ended,
11527 // then we're ok.
11528 if (this.allowHalfOpen || this._writableState.ended)
11529 return;
11530
11531 // no more data can be written.
11532 // But allow more writes to happen in this tick.
11533 process.nextTick(this.end.bind(this));
11534 }
11535
11536 function forEach (xs, f) {
11537 for (var i = 0, l = xs.length; i < l; i++) {
11538 f(xs[i], i);
11539 }
11540 }
11541
11542 }).call(this,require('_process'))
11543 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11544 // Copyright Joyent, Inc. and other Node contributors.
11545 //
11546 // Permission is hereby granted, free of charge, to any person obtaining a
11547 // copy of this software and associated documentation files (the
11548 // "Software"), to deal in the Software without restriction, including
11549 // without limitation the rights to use, copy, modify, merge, publish,
11550 // distribute, sublicense, and/or sell copies of the Software, and to permit
11551 // persons to whom the Software is furnished to do so, subject to the
11552 // following conditions:
11553 //
11554 // The above copyright notice and this permission notice shall be included
11555 // in all copies or substantial portions of the Software.
11556 //
11557 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11558 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11559 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11560 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11561 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11562 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11563 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11564
11565 // a passthrough stream.
11566 // basically just the most minimal sort of Transform stream.
11567 // Every written chunk gets output as-is.
11568
11569 module.exports = PassThrough;
11570
11571 var Transform = require('./_stream_transform');
11572
11573 /*<replacement>*/
11574 var util = require('core-util-is');
11575 util.inherits = require('inherits');
11576 /*</replacement>*/
11577
11578 util.inherits(PassThrough, Transform);
11579
11580 function PassThrough(options) {
11581 if (!(this instanceof PassThrough))
11582 return new PassThrough(options);
11583
11584 Transform.call(this, options);
11585 }
11586
11587 PassThrough.prototype._transform = function(chunk, encoding, cb) {
11588 cb(null, chunk);
11589 };
11590
11591 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11592 (function (process){
11593 // Copyright Joyent, Inc. and other Node contributors.
11594 //
11595 // Permission is hereby granted, free of charge, to any person obtaining a
11596 // copy of this software and associated documentation files (the
11597 // "Software"), to deal in the Software without restriction, including
11598 // without limitation the rights to use, copy, modify, merge, publish,
11599 // distribute, sublicense, and/or sell copies of the Software, and to permit
11600 // persons to whom the Software is furnished to do so, subject to the
11601 // following conditions:
11602 //
11603 // The above copyright notice and this permission notice shall be included
11604 // in all copies or substantial portions of the Software.
11605 //
11606 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11607 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11608 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11609 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11610 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11611 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11612 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11613
11614 module.exports = Readable;
11615
11616 /*<replacement>*/
11617 var isArray = require('isarray');
11618 /*</replacement>*/
11619
11620
11621 /*<replacement>*/
11622 var Buffer = require('buffer').Buffer;
11623 /*</replacement>*/
11624
11625 Readable.ReadableState = ReadableState;
11626
11627 var EE = require('events').EventEmitter;
11628
11629 /*<replacement>*/
11630 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11631 return emitter.listeners(type).length;
11632 };
11633 /*</replacement>*/
11634
11635 var Stream = require('stream');
11636
11637 /*<replacement>*/
11638 var util = require('core-util-is');
11639 util.inherits = require('inherits');
11640 /*</replacement>*/
11641
11642 var StringDecoder;
11643
11644
11645 /*<replacement>*/
11646 var debug = require('util');
11647 if (debug && debug.debuglog) {
11648 debug = debug.debuglog('stream');
11649 } else {
11650 debug = function () {};
11651 }
11652 /*</replacement>*/
11653
11654
11655 util.inherits(Readable, Stream);
11656
11657 function ReadableState(options, stream) {
11658 var Duplex = require('./_stream_duplex');
11659
11660 options = options || {};
11661
11662 // the point at which it stops calling _read() to fill the buffer
11663 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11664 var hwm = options.highWaterMark;
11665 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11666 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11667
11668 // cast to ints.
11669 this.highWaterMark = ~~this.highWaterMark;
11670
11671 this.buffer = [];
11672 this.length = 0;
11673 this.pipes = null;
11674 this.pipesCount = 0;
11675 this.flowing = null;
11676 this.ended = false;
11677 this.endEmitted = false;
11678 this.reading = false;
11679
11680 // a flag to be able to tell if the onwrite cb is called immediately,
11681 // or on a later tick. We set this to true at first, because any
11682 // actions that shouldn't happen until "later" should generally also
11683 // not happen before the first write call.
11684 this.sync = true;
11685
11686 // whenever we return null, then we set a flag to say
11687 // that we're awaiting a 'readable' event emission.
11688 this.needReadable = false;
11689 this.emittedReadable = false;
11690 this.readableListening = false;
11691
11692
11693 // object stream flag. Used to make read(n) ignore n and to
11694 // make all the buffer merging and length checks go away
11695 this.objectMode = !!options.objectMode;
11696
11697 if (stream instanceof Duplex)
11698 this.objectMode = this.objectMode || !!options.readableObjectMode;
11699
11700 // Crypto is kind of old and crusty. Historically, its default string
11701 // encoding is 'binary' so we have to make this configurable.
11702 // Everything else in the universe uses 'utf8', though.
11703 this.defaultEncoding = options.defaultEncoding || 'utf8';
11704
11705 // when piping, we only care about 'readable' events that happen
11706 // after read()ing all the bytes and not getting any pushback.
11707 this.ranOut = false;
11708
11709 // the number of writers that are awaiting a drain event in .pipe()s
11710 this.awaitDrain = 0;
11711
11712 // if true, a maybeReadMore has been scheduled
11713 this.readingMore = false;
11714
11715 this.decoder = null;
11716 this.encoding = null;
11717 if (options.encoding) {
11718 if (!StringDecoder)
11719 StringDecoder = require('string_decoder/').StringDecoder;
11720 this.decoder = new StringDecoder(options.encoding);
11721 this.encoding = options.encoding;
11722 }
11723 }
11724
11725 function Readable(options) {
11726 var Duplex = require('./_stream_duplex');
11727
11728 if (!(this instanceof Readable))
11729 return new Readable(options);
11730
11731 this._readableState = new ReadableState(options, this);
11732
11733 // legacy
11734 this.readable = true;
11735
11736 Stream.call(this);
11737 }
11738
11739 // Manually shove something into the read() buffer.
11740 // This returns true if the highWaterMark has not been hit yet,
11741 // similar to how Writable.write() returns true if you should
11742 // write() some more.
11743 Readable.prototype.push = function(chunk, encoding) {
11744 var state = this._readableState;
11745
11746 if (util.isString(chunk) && !state.objectMode) {
11747 encoding = encoding || state.defaultEncoding;
11748 if (encoding !== state.encoding) {
11749 chunk = new Buffer(chunk, encoding);
11750 encoding = '';
11751 }
11752 }
11753
11754 return readableAddChunk(this, state, chunk, encoding, false);
11755 };
11756
11757 // Unshift should *always* be something directly out of read()
11758 Readable.prototype.unshift = function(chunk) {
11759 var state = this._readableState;
11760 return readableAddChunk(this, state, chunk, '', true);
11761 };
11762
11763 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11764 var er = chunkInvalid(state, chunk);
11765 if (er) {
11766 stream.emit('error', er);
11767 } else if (util.isNullOrUndefined(chunk)) {
11768 state.reading = false;
11769 if (!state.ended)
11770 onEofChunk(stream, state);
11771 } else if (state.objectMode || chunk && chunk.length > 0) {
11772 if (state.ended && !addToFront) {
11773 var e = new Error('stream.push() after EOF');
11774 stream.emit('error', e);
11775 } else if (state.endEmitted && addToFront) {
11776 var e = new Error('stream.unshift() after end event');
11777 stream.emit('error', e);
11778 } else {
11779 if (state.decoder && !addToFront && !encoding)
11780 chunk = state.decoder.write(chunk);
11781
11782 if (!addToFront)
11783 state.reading = false;
11784
11785 // if we want the data now, just emit it.
11786 if (state.flowing && state.length === 0 && !state.sync) {
11787 stream.emit('data', chunk);
11788 stream.read(0);
11789 } else {
11790 // update the buffer info.
11791 state.length += state.objectMode ? 1 : chunk.length;
11792 if (addToFront)
11793 state.buffer.unshift(chunk);
11794 else
11795 state.buffer.push(chunk);
11796
11797 if (state.needReadable)
11798 emitReadable(stream);
11799 }
11800
11801 maybeReadMore(stream, state);
11802 }
11803 } else if (!addToFront) {
11804 state.reading = false;
11805 }
11806
11807 return needMoreData(state);
11808 }
11809
11810
11811
11812 // if it's past the high water mark, we can push in some more.
11813 // Also, if we have no data yet, we can stand some
11814 // more bytes. This is to work around cases where hwm=0,
11815 // such as the repl. Also, if the push() triggered a
11816 // readable event, and the user called read(largeNumber) such that
11817 // needReadable was set, then we ought to push more, so that another
11818 // 'readable' event will be triggered.
11819 function needMoreData(state) {
11820 return !state.ended &&
11821 (state.needReadable ||
11822 state.length < state.highWaterMark ||
11823 state.length === 0);
11824 }
11825
11826 // backwards compatibility.
11827 Readable.prototype.setEncoding = function(enc) {
11828 if (!StringDecoder)
11829 StringDecoder = require('string_decoder/').StringDecoder;
11830 this._readableState.decoder = new StringDecoder(enc);
11831 this._readableState.encoding = enc;
11832 return this;
11833 };
11834
11835 // Don't raise the hwm > 128MB
11836 var MAX_HWM = 0x800000;
11837 function roundUpToNextPowerOf2(n) {
11838 if (n >= MAX_HWM) {
11839 n = MAX_HWM;
11840 } else {
11841 // Get the next highest power of 2
11842 n--;
11843 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11844 n++;
11845 }
11846 return n;
11847 }
11848
11849 function howMuchToRead(n, state) {
11850 if (state.length === 0 && state.ended)
11851 return 0;
11852
11853 if (state.objectMode)
11854 return n === 0 ? 0 : 1;
11855
11856 if (isNaN(n) || util.isNull(n)) {
11857 // only flow one buffer at a time
11858 if (state.flowing && state.buffer.length)
11859 return state.buffer[0].length;
11860 else
11861 return state.length;
11862 }
11863
11864 if (n <= 0)
11865 return 0;
11866
11867 // If we're asking for more than the target buffer level,
11868 // then raise the water mark. Bump up to the next highest
11869 // power of 2, to prevent increasing it excessively in tiny
11870 // amounts.
11871 if (n > state.highWaterMark)
11872 state.highWaterMark = roundUpToNextPowerOf2(n);
11873
11874 // don't have that much. return null, unless we've ended.
11875 if (n > state.length) {
11876 if (!state.ended) {
11877 state.needReadable = true;
11878 return 0;
11879 } else
11880 return state.length;
11881 }
11882
11883 return n;
11884 }
11885
11886 // you can override either this method, or the async _read(n) below.
11887 Readable.prototype.read = function(n) {
11888 debug('read', n);
11889 var state = this._readableState;
11890 var nOrig = n;
11891
11892 if (!util.isNumber(n) || n > 0)
11893 state.emittedReadable = false;
11894
11895 // if we're doing read(0) to trigger a readable event, but we
11896 // already have a bunch of data in the buffer, then just trigger
11897 // the 'readable' event and move on.
11898 if (n === 0 &&
11899 state.needReadable &&
11900 (state.length >= state.highWaterMark || state.ended)) {
11901 debug('read: emitReadable', state.length, state.ended);
11902 if (state.length === 0 && state.ended)
11903 endReadable(this);
11904 else
11905 emitReadable(this);
11906 return null;
11907 }
11908
11909 n = howMuchToRead(n, state);
11910
11911 // if we've ended, and we're now clear, then finish it up.
11912 if (n === 0 && state.ended) {
11913 if (state.length === 0)
11914 endReadable(this);
11915 return null;
11916 }
11917
11918 // All the actual chunk generation logic needs to be
11919 // *below* the call to _read. The reason is that in certain
11920 // synthetic stream cases, such as passthrough streams, _read
11921 // may be a completely synchronous operation which may change
11922 // the state of the read buffer, providing enough data when
11923 // before there was *not* enough.
11924 //
11925 // So, the steps are:
11926 // 1. Figure out what the state of things will be after we do
11927 // a read from the buffer.
11928 //
11929 // 2. If that resulting state will trigger a _read, then call _read.
11930 // Note that this may be asynchronous, or synchronous. Yes, it is
11931 // deeply ugly to write APIs this way, but that still doesn't mean
11932 // that the Readable class should behave improperly, as streams are
11933 // designed to be sync/async agnostic.
11934 // Take note if the _read call is sync or async (ie, if the read call
11935 // has returned yet), so that we know whether or not it's safe to emit
11936 // 'readable' etc.
11937 //
11938 // 3. Actually pull the requested chunks out of the buffer and return.
11939
11940 // if we need a readable event, then we need to do some reading.
11941 var doRead = state.needReadable;
11942 debug('need readable', doRead);
11943
11944 // if we currently have less than the highWaterMark, then also read some
11945 if (state.length === 0 || state.length - n < state.highWaterMark) {
11946 doRead = true;
11947 debug('length less than watermark', doRead);
11948 }
11949
11950 // however, if we've ended, then there's no point, and if we're already
11951 // reading, then it's unnecessary.
11952 if (state.ended || state.reading) {
11953 doRead = false;
11954 debug('reading or ended', doRead);
11955 }
11956
11957 if (doRead) {
11958 debug('do read');
11959 state.reading = true;
11960 state.sync = true;
11961 // if the length is currently zero, then we *need* a readable event.
11962 if (state.length === 0)
11963 state.needReadable = true;
11964 // call internal read method
11965 this._read(state.highWaterMark);
11966 state.sync = false;
11967 }
11968
11969 // If _read pushed data synchronously, then `reading` will be false,
11970 // and we need to re-evaluate how much data we can return to the user.
11971 if (doRead && !state.reading)
11972 n = howMuchToRead(nOrig, state);
11973
11974 var ret;
11975 if (n > 0)
11976 ret = fromList(n, state);
11977 else
11978 ret = null;
11979
11980 if (util.isNull(ret)) {
11981 state.needReadable = true;
11982 n = 0;
11983 }
11984
11985 state.length -= n;
11986
11987 // If we have nothing in the buffer, then we want to know
11988 // as soon as we *do* get something into the buffer.
11989 if (state.length === 0 && !state.ended)
11990 state.needReadable = true;
11991
11992 // If we tried to read() past the EOF, then emit end on the next tick.
11993 if (nOrig !== n && state.ended && state.length === 0)
11994 endReadable(this);
11995
11996 if (!util.isNull(ret))
11997 this.emit('data', ret);
11998
11999 return ret;
12000 };
12001
12002 function chunkInvalid(state, chunk) {
12003 var er = null;
12004 if (!util.isBuffer(chunk) &&
12005 !util.isString(chunk) &&
12006 !util.isNullOrUndefined(chunk) &&
12007 !state.objectMode) {
12008 er = new TypeError('Invalid non-string/buffer chunk');
12009 }
12010 return er;
12011 }
12012
12013
12014 function onEofChunk(stream, state) {
12015 if (state.decoder && !state.ended) {
12016 var chunk = state.decoder.end();
12017 if (chunk && chunk.length) {
12018 state.buffer.push(chunk);
12019 state.length += state.objectMode ? 1 : chunk.length;
12020 }
12021 }
12022 state.ended = true;
12023
12024 // emit 'readable' now to make sure it gets picked up.
12025 emitReadable(stream);
12026 }
12027
12028 // Don't emit readable right away in sync mode, because this can trigger
12029 // another read() call => stack overflow. This way, it might trigger
12030 // a nextTick recursion warning, but that's not so bad.
12031 function emitReadable(stream) {
12032 var state = stream._readableState;
12033 state.needReadable = false;
12034 if (!state.emittedReadable) {
12035 debug('emitReadable', state.flowing);
12036 state.emittedReadable = true;
12037 if (state.sync)
12038 process.nextTick(function() {
12039 emitReadable_(stream);
12040 });
12041 else
12042 emitReadable_(stream);
12043 }
12044 }
12045
12046 function emitReadable_(stream) {
12047 debug('emit readable');
12048 stream.emit('readable');
12049 flow(stream);
12050 }
12051
12052
12053 // at this point, the user has presumably seen the 'readable' event,
12054 // and called read() to consume some data. that may have triggered
12055 // in turn another _read(n) call, in which case reading = true if
12056 // it's in progress.
12057 // However, if we're not ended, or reading, and the length < hwm,
12058 // then go ahead and try to read some more preemptively.
12059 function maybeReadMore(stream, state) {
12060 if (!state.readingMore) {
12061 state.readingMore = true;
12062 process.nextTick(function() {
12063 maybeReadMore_(stream, state);
12064 });
12065 }
12066 }
12067
12068 function maybeReadMore_(stream, state) {
12069 var len = state.length;
12070 while (!state.reading && !state.flowing && !state.ended &&
12071 state.length < state.highWaterMark) {
12072 debug('maybeReadMore read 0');
12073 stream.read(0);
12074 if (len === state.length)
12075 // didn't get any data, stop spinning.
12076 break;
12077 else
12078 len = state.length;
12079 }
12080 state.readingMore = false;
12081 }
12082
12083 // abstract method. to be overridden in specific implementation classes.
12084 // call cb(er, data) where data is <= n in length.
12085 // for virtual (non-string, non-buffer) streams, "length" is somewhat
12086 // arbitrary, and perhaps not very meaningful.
12087 Readable.prototype._read = function(n) {
12088 this.emit('error', new Error('not implemented'));
12089 };
12090
12091 Readable.prototype.pipe = function(dest, pipeOpts) {
12092 var src = this;
12093 var state = this._readableState;
12094
12095 switch (state.pipesCount) {
12096 case 0:
12097 state.pipes = dest;
12098 break;
12099 case 1:
12100 state.pipes = [state.pipes, dest];
12101 break;
12102 default:
12103 state.pipes.push(dest);
12104 break;
12105 }
12106 state.pipesCount += 1;
12107 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12108
12109 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12110 dest !== process.stdout &&
12111 dest !== process.stderr;
12112
12113 var endFn = doEnd ? onend : cleanup;
12114 if (state.endEmitted)
12115 process.nextTick(endFn);
12116 else
12117 src.once('end', endFn);
12118
12119 dest.on('unpipe', onunpipe);
12120 function onunpipe(readable) {
12121 debug('onunpipe');
12122 if (readable === src) {
12123 cleanup();
12124 }
12125 }
12126
12127 function onend() {
12128 debug('onend');
12129 dest.end();
12130 }
12131
12132 // when the dest drains, it reduces the awaitDrain counter
12133 // on the source. This would be more elegant with a .once()
12134 // handler in flow(), but adding and removing repeatedly is
12135 // too slow.
12136 var ondrain = pipeOnDrain(src);
12137 dest.on('drain', ondrain);
12138
12139 function cleanup() {
12140 debug('cleanup');
12141 // cleanup event handlers once the pipe is broken
12142 dest.removeListener('close', onclose);
12143 dest.removeListener('finish', onfinish);
12144 dest.removeListener('drain', ondrain);
12145 dest.removeListener('error', onerror);
12146 dest.removeListener('unpipe', onunpipe);
12147 src.removeListener('end', onend);
12148 src.removeListener('end', cleanup);
12149 src.removeListener('data', ondata);
12150
12151 // if the reader is waiting for a drain event from this
12152 // specific writer, then it would cause it to never start
12153 // flowing again.
12154 // So, if this is awaiting a drain, then we just call it now.
12155 // If we don't know, then assume that we are waiting for one.
12156 if (state.awaitDrain &&
12157 (!dest._writableState || dest._writableState.needDrain))
12158 ondrain();
12159 }
12160
12161 src.on('data', ondata);
12162 function ondata(chunk) {
12163 debug('ondata');
12164 var ret = dest.write(chunk);
12165 if (false === ret) {
12166 debug('false write response, pause',
12167 src._readableState.awaitDrain);
12168 src._readableState.awaitDrain++;
12169 src.pause();
12170 }
12171 }
12172
12173 // if the dest has an error, then stop piping into it.
12174 // however, don't suppress the throwing behavior for this.
12175 function onerror(er) {
12176 debug('onerror', er);
12177 unpipe();
12178 dest.removeListener('error', onerror);
12179 if (EE.listenerCount(dest, 'error') === 0)
12180 dest.emit('error', er);
12181 }
12182 // This is a brutally ugly hack to make sure that our error handler
12183 // is attached before any userland ones. NEVER DO THIS.
12184 if (!dest._events || !dest._events.error)
12185 dest.on('error', onerror);
12186 else if (isArray(dest._events.error))
12187 dest._events.error.unshift(onerror);
12188 else
12189 dest._events.error = [onerror, dest._events.error];
12190
12191
12192
12193 // Both close and finish should trigger unpipe, but only once.
12194 function onclose() {
12195 dest.removeListener('finish', onfinish);
12196 unpipe();
12197 }
12198 dest.once('close', onclose);
12199 function onfinish() {
12200 debug('onfinish');
12201 dest.removeListener('close', onclose);
12202 unpipe();
12203 }
12204 dest.once('finish', onfinish);
12205
12206 function unpipe() {
12207 debug('unpipe');
12208 src.unpipe(dest);
12209 }
12210
12211 // tell the dest that it's being piped to
12212 dest.emit('pipe', src);
12213
12214 // start the flow if it hasn't been started already.
12215 if (!state.flowing) {
12216 debug('pipe resume');
12217 src.resume();
12218 }
12219
12220 return dest;
12221 };
12222
12223 function pipeOnDrain(src) {
12224 return function() {
12225 var state = src._readableState;
12226 debug('pipeOnDrain', state.awaitDrain);
12227 if (state.awaitDrain)
12228 state.awaitDrain--;
12229 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12230 state.flowing = true;
12231 flow(src);
12232 }
12233 };
12234 }
12235
12236
12237 Readable.prototype.unpipe = function(dest) {
12238 var state = this._readableState;
12239
12240 // if we're not piping anywhere, then do nothing.
12241 if (state.pipesCount === 0)
12242 return this;
12243
12244 // just one destination. most common case.
12245 if (state.pipesCount === 1) {
12246 // passed in one, but it's not the right one.
12247 if (dest && dest !== state.pipes)
12248 return this;
12249
12250 if (!dest)
12251 dest = state.pipes;
12252
12253 // got a match.
12254 state.pipes = null;
12255 state.pipesCount = 0;
12256 state.flowing = false;
12257 if (dest)
12258 dest.emit('unpipe', this);
12259 return this;
12260 }
12261
12262 // slow case. multiple pipe destinations.
12263
12264 if (!dest) {
12265 // remove all.
12266 var dests = state.pipes;
12267 var len = state.pipesCount;
12268 state.pipes = null;
12269 state.pipesCount = 0;
12270 state.flowing = false;
12271
12272 for (var i = 0; i < len; i++)
12273 dests[i].emit('unpipe', this);
12274 return this;
12275 }
12276
12277 // try to find the right one.
12278 var i = indexOf(state.pipes, dest);
12279 if (i === -1)
12280 return this;
12281
12282 state.pipes.splice(i, 1);
12283 state.pipesCount -= 1;
12284 if (state.pipesCount === 1)
12285 state.pipes = state.pipes[0];
12286
12287 dest.emit('unpipe', this);
12288
12289 return this;
12290 };
12291
12292 // set up data events if they are asked for
12293 // Ensure readable listeners eventually get something
12294 Readable.prototype.on = function(ev, fn) {
12295 var res = Stream.prototype.on.call(this, ev, fn);
12296
12297 // If listening to data, and it has not explicitly been paused,
12298 // then call resume to start the flow of data on the next tick.
12299 if (ev === 'data' && false !== this._readableState.flowing) {
12300 this.resume();
12301 }
12302
12303 if (ev === 'readable' && this.readable) {
12304 var state = this._readableState;
12305 if (!state.readableListening) {
12306 state.readableListening = true;
12307 state.emittedReadable = false;
12308 state.needReadable = true;
12309 if (!state.reading) {
12310 var self = this;
12311 process.nextTick(function() {
12312 debug('readable nexttick read 0');
12313 self.read(0);
12314 });
12315 } else if (state.length) {
12316 emitReadable(this, state);
12317 }
12318 }
12319 }
12320
12321 return res;
12322 };
12323 Readable.prototype.addListener = Readable.prototype.on;
12324
12325 // pause() and resume() are remnants of the legacy readable stream API
12326 // If the user uses them, then switch into old mode.
12327 Readable.prototype.resume = function() {
12328 var state = this._readableState;
12329 if (!state.flowing) {
12330 debug('resume');
12331 state.flowing = true;
12332 if (!state.reading) {
12333 debug('resume read 0');
12334 this.read(0);
12335 }
12336 resume(this, state);
12337 }
12338 return this;
12339 };
12340
12341 function resume(stream, state) {
12342 if (!state.resumeScheduled) {
12343 state.resumeScheduled = true;
12344 process.nextTick(function() {
12345 resume_(stream, state);
12346 });
12347 }
12348 }
12349
12350 function resume_(stream, state) {
12351 state.resumeScheduled = false;
12352 stream.emit('resume');
12353 flow(stream);
12354 if (state.flowing && !state.reading)
12355 stream.read(0);
12356 }
12357
12358 Readable.prototype.pause = function() {
12359 debug('call pause flowing=%j', this._readableState.flowing);
12360 if (false !== this._readableState.flowing) {
12361 debug('pause');
12362 this._readableState.flowing = false;
12363 this.emit('pause');
12364 }
12365 return this;
12366 };
12367
12368 function flow(stream) {
12369 var state = stream._readableState;
12370 debug('flow', state.flowing);
12371 if (state.flowing) {
12372 do {
12373 var chunk = stream.read();
12374 } while (null !== chunk && state.flowing);
12375 }
12376 }
12377
12378 // wrap an old-style stream as the async data source.
12379 // This is *not* part of the readable stream interface.
12380 // It is an ugly unfortunate mess of history.
12381 Readable.prototype.wrap = function(stream) {
12382 var state = this._readableState;
12383 var paused = false;
12384
12385 var self = this;
12386 stream.on('end', function() {
12387 debug('wrapped end');
12388 if (state.decoder && !state.ended) {
12389 var chunk = state.decoder.end();
12390 if (chunk && chunk.length)
12391 self.push(chunk);
12392 }
12393
12394 self.push(null);
12395 });
12396
12397 stream.on('data', function(chunk) {
12398 debug('wrapped data');
12399 if (state.decoder)
12400 chunk = state.decoder.write(chunk);
12401 if (!chunk || !state.objectMode && !chunk.length)
12402 return;
12403
12404 var ret = self.push(chunk);
12405 if (!ret) {
12406 paused = true;
12407 stream.pause();
12408 }
12409 });
12410
12411 // proxy all the other methods.
12412 // important when wrapping filters and duplexes.
12413 for (var i in stream) {
12414 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12415 this[i] = function(method) { return function() {
12416 return stream[method].apply(stream, arguments);
12417 }}(i);
12418 }
12419 }
12420
12421 // proxy certain important events.
12422 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12423 forEach(events, function(ev) {
12424 stream.on(ev, self.emit.bind(self, ev));
12425 });
12426
12427 // when we try to consume some more bytes, simply unpause the
12428 // underlying stream.
12429 self._read = function(n) {
12430 debug('wrapped _read', n);
12431 if (paused) {
12432 paused = false;
12433 stream.resume();
12434 }
12435 };
12436
12437 return self;
12438 };
12439
12440
12441
12442 // exposed for testing purposes only.
12443 Readable._fromList = fromList;
12444
12445 // Pluck off n bytes from an array of buffers.
12446 // Length is the combined lengths of all the buffers in the list.
12447 function fromList(n, state) {
12448 var list = state.buffer;
12449 var length = state.length;
12450 var stringMode = !!state.decoder;
12451 var objectMode = !!state.objectMode;
12452 var ret;
12453
12454 // nothing in the list, definitely empty.
12455 if (list.length === 0)
12456 return null;
12457
12458 if (length === 0)
12459 ret = null;
12460 else if (objectMode)
12461 ret = list.shift();
12462 else if (!n || n >= length) {
12463 // read it all, truncate the array.
12464 if (stringMode)
12465 ret = list.join('');
12466 else
12467 ret = Buffer.concat(list, length);
12468 list.length = 0;
12469 } else {
12470 // read just some of it.
12471 if (n < list[0].length) {
12472 // just take a part of the first list item.
12473 // slice is the same for buffers and strings.
12474 var buf = list[0];
12475 ret = buf.slice(0, n);
12476 list[0] = buf.slice(n);
12477 } else if (n === list[0].length) {
12478 // first list is a perfect match
12479 ret = list.shift();
12480 } else {
12481 // complex case.
12482 // we have enough to cover it, but it spans past the first buffer.
12483 if (stringMode)
12484 ret = '';
12485 else
12486 ret = new Buffer(n);
12487
12488 var c = 0;
12489 for (var i = 0, l = list.length; i < l && c < n; i++) {
12490 var buf = list[0];
12491 var cpy = Math.min(n - c, buf.length);
12492
12493 if (stringMode)
12494 ret += buf.slice(0, cpy);
12495 else
12496 buf.copy(ret, c, 0, cpy);
12497
12498 if (cpy < buf.length)
12499 list[0] = buf.slice(cpy);
12500 else
12501 list.shift();
12502
12503 c += cpy;
12504 }
12505 }
12506 }
12507
12508 return ret;
12509 }
12510
12511 function endReadable(stream) {
12512 var state = stream._readableState;
12513
12514 // If we get here before consuming all the bytes, then that is a
12515 // bug in node. Should never happen.
12516 if (state.length > 0)
12517 throw new Error('endReadable called on non-empty stream');
12518
12519 if (!state.endEmitted) {
12520 state.ended = true;
12521 process.nextTick(function() {
12522 // Check that we didn't get one last unshift.
12523 if (!state.endEmitted && state.length === 0) {
12524 state.endEmitted = true;
12525 stream.readable = false;
12526 stream.emit('end');
12527 }
12528 });
12529 }
12530 }
12531
12532 function forEach (xs, f) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 f(xs[i], i);
12535 }
12536 }
12537
12538 function indexOf (xs, x) {
12539 for (var i = 0, l = xs.length; i < l; i++) {
12540 if (xs[i] === x) return i;
12541 }
12542 return -1;
12543 }
12544
12545 }).call(this,require('_process'))
12546 },{"./_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){
12547 // Copyright Joyent, Inc. and other Node contributors.
12548 //
12549 // Permission is hereby granted, free of charge, to any person obtaining a
12550 // copy of this software and associated documentation files (the
12551 // "Software"), to deal in the Software without restriction, including
12552 // without limitation the rights to use, copy, modify, merge, publish,
12553 // distribute, sublicense, and/or sell copies of the Software, and to permit
12554 // persons to whom the Software is furnished to do so, subject to the
12555 // following conditions:
12556 //
12557 // The above copyright notice and this permission notice shall be included
12558 // in all copies or substantial portions of the Software.
12559 //
12560 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12561 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12562 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12563 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12564 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12565 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12566 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12567
12568
12569 // a transform stream is a readable/writable stream where you do
12570 // something with the data. Sometimes it's called a "filter",
12571 // but that's not a great name for it, since that implies a thing where
12572 // some bits pass through, and others are simply ignored. (That would
12573 // be a valid example of a transform, of course.)
12574 //
12575 // While the output is causally related to the input, it's not a
12576 // necessarily symmetric or synchronous transformation. For example,
12577 // a zlib stream might take multiple plain-text writes(), and then
12578 // emit a single compressed chunk some time in the future.
12579 //
12580 // Here's how this works:
12581 //
12582 // The Transform stream has all the aspects of the readable and writable
12583 // stream classes. When you write(chunk), that calls _write(chunk,cb)
12584 // internally, and returns false if there's a lot of pending writes
12585 // buffered up. When you call read(), that calls _read(n) until
12586 // there's enough pending readable data buffered up.
12587 //
12588 // In a transform stream, the written data is placed in a buffer. When
12589 // _read(n) is called, it transforms the queued up data, calling the
12590 // buffered _write cb's as it consumes chunks. If consuming a single
12591 // written chunk would result in multiple output chunks, then the first
12592 // outputted bit calls the readcb, and subsequent chunks just go into
12593 // the read buffer, and will cause it to emit 'readable' if necessary.
12594 //
12595 // This way, back-pressure is actually determined by the reading side,
12596 // since _read has to be called to start processing a new chunk. However,
12597 // a pathological inflate type of transform can cause excessive buffering
12598 // here. For example, imagine a stream where every byte of input is
12599 // interpreted as an integer from 0-255, and then results in that many
12600 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12601 // 1kb of data being output. In this case, you could write a very small
12602 // amount of input, and end up with a very large amount of output. In
12603 // such a pathological inflating mechanism, there'd be no way to tell
12604 // the system to stop doing the transform. A single 4MB write could
12605 // cause the system to run out of memory.
12606 //
12607 // However, even in such a pathological case, only a single written chunk
12608 // would be consumed, and then the rest would wait (un-transformed) until
12609 // the results of the previous transformed chunk were consumed.
12610
12611 module.exports = Transform;
12612
12613 var Duplex = require('./_stream_duplex');
12614
12615 /*<replacement>*/
12616 var util = require('core-util-is');
12617 util.inherits = require('inherits');
12618 /*</replacement>*/
12619
12620 util.inherits(Transform, Duplex);
12621
12622
12623 function TransformState(options, stream) {
12624 this.afterTransform = function(er, data) {
12625 return afterTransform(stream, er, data);
12626 };
12627
12628 this.needTransform = false;
12629 this.transforming = false;
12630 this.writecb = null;
12631 this.writechunk = null;
12632 }
12633
12634 function afterTransform(stream, er, data) {
12635 var ts = stream._transformState;
12636 ts.transforming = false;
12637
12638 var cb = ts.writecb;
12639
12640 if (!cb)
12641 return stream.emit('error', new Error('no writecb in Transform class'));
12642
12643 ts.writechunk = null;
12644 ts.writecb = null;
12645
12646 if (!util.isNullOrUndefined(data))
12647 stream.push(data);
12648
12649 if (cb)
12650 cb(er);
12651
12652 var rs = stream._readableState;
12653 rs.reading = false;
12654 if (rs.needReadable || rs.length < rs.highWaterMark) {
12655 stream._read(rs.highWaterMark);
12656 }
12657 }
12658
12659
12660 function Transform(options) {
12661 if (!(this instanceof Transform))
12662 return new Transform(options);
12663
12664 Duplex.call(this, options);
12665
12666 this._transformState = new TransformState(options, this);
12667
12668 // when the writable side finishes, then flush out anything remaining.
12669 var stream = this;
12670
12671 // start out asking for a readable event once data is transformed.
12672 this._readableState.needReadable = true;
12673
12674 // we have implemented the _read method, and done the other things
12675 // that Readable wants before the first _read call, so unset the
12676 // sync guard flag.
12677 this._readableState.sync = false;
12678
12679 this.once('prefinish', function() {
12680 if (util.isFunction(this._flush))
12681 this._flush(function(er) {
12682 done(stream, er);
12683 });
12684 else
12685 done(stream);
12686 });
12687 }
12688
12689 Transform.prototype.push = function(chunk, encoding) {
12690 this._transformState.needTransform = false;
12691 return Duplex.prototype.push.call(this, chunk, encoding);
12692 };
12693
12694 // This is the part where you do stuff!
12695 // override this function in implementation classes.
12696 // 'chunk' is an input chunk.
12697 //
12698 // Call `push(newChunk)` to pass along transformed output
12699 // to the readable side. You may call 'push' zero or more times.
12700 //
12701 // Call `cb(err)` when you are done with this chunk. If you pass
12702 // an error, then that'll put the hurt on the whole operation. If you
12703 // never call cb(), then you'll never get another chunk.
12704 Transform.prototype._transform = function(chunk, encoding, cb) {
12705 throw new Error('not implemented');
12706 };
12707
12708 Transform.prototype._write = function(chunk, encoding, cb) {
12709 var ts = this._transformState;
12710 ts.writecb = cb;
12711 ts.writechunk = chunk;
12712 ts.writeencoding = encoding;
12713 if (!ts.transforming) {
12714 var rs = this._readableState;
12715 if (ts.needTransform ||
12716 rs.needReadable ||
12717 rs.length < rs.highWaterMark)
12718 this._read(rs.highWaterMark);
12719 }
12720 };
12721
12722 // Doesn't matter what the args are here.
12723 // _transform does all the work.
12724 // That we got here means that the readable side wants more data.
12725 Transform.prototype._read = function(n) {
12726 var ts = this._transformState;
12727
12728 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12729 ts.transforming = true;
12730 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12731 } else {
12732 // mark that we need a transform, so that any data that comes in
12733 // will get processed, now that we've asked for it.
12734 ts.needTransform = true;
12735 }
12736 };
12737
12738
12739 function done(stream, er) {
12740 if (er)
12741 return stream.emit('error', er);
12742
12743 // if there's nothing in the write buffer, then that means
12744 // that nothing more will ever be provided
12745 var ws = stream._writableState;
12746 var ts = stream._transformState;
12747
12748 if (ws.length)
12749 throw new Error('calling transform done when ws.length != 0');
12750
12751 if (ts.transforming)
12752 throw new Error('calling transform done when still transforming');
12753
12754 return stream.push(null);
12755 }
12756
12757 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12758 (function (process){
12759 // Copyright Joyent, Inc. and other Node contributors.
12760 //
12761 // Permission is hereby granted, free of charge, to any person obtaining a
12762 // copy of this software and associated documentation files (the
12763 // "Software"), to deal in the Software without restriction, including
12764 // without limitation the rights to use, copy, modify, merge, publish,
12765 // distribute, sublicense, and/or sell copies of the Software, and to permit
12766 // persons to whom the Software is furnished to do so, subject to the
12767 // following conditions:
12768 //
12769 // The above copyright notice and this permission notice shall be included
12770 // in all copies or substantial portions of the Software.
12771 //
12772 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12773 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12774 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12775 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12776 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12777 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12778 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12779
12780 // A bit simpler than readable streams.
12781 // Implement an async ._write(chunk, cb), and it'll handle all
12782 // the drain event emission and buffering.
12783
12784 module.exports = Writable;
12785
12786 /*<replacement>*/
12787 var Buffer = require('buffer').Buffer;
12788 /*</replacement>*/
12789
12790 Writable.WritableState = WritableState;
12791
12792
12793 /*<replacement>*/
12794 var util = require('core-util-is');
12795 util.inherits = require('inherits');
12796 /*</replacement>*/
12797
12798 var Stream = require('stream');
12799
12800 util.inherits(Writable, Stream);
12801
12802 function WriteReq(chunk, encoding, cb) {
12803 this.chunk = chunk;
12804 this.encoding = encoding;
12805 this.callback = cb;
12806 }
12807
12808 function WritableState(options, stream) {
12809 var Duplex = require('./_stream_duplex');
12810
12811 options = options || {};
12812
12813 // the point at which write() starts returning false
12814 // Note: 0 is a valid value, means that we always return false if
12815 // the entire buffer is not flushed immediately on write()
12816 var hwm = options.highWaterMark;
12817 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12818 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12819
12820 // object stream flag to indicate whether or not this stream
12821 // contains buffers or objects.
12822 this.objectMode = !!options.objectMode;
12823
12824 if (stream instanceof Duplex)
12825 this.objectMode = this.objectMode || !!options.writableObjectMode;
12826
12827 // cast to ints.
12828 this.highWaterMark = ~~this.highWaterMark;
12829
12830 this.needDrain = false;
12831 // at the start of calling end()
12832 this.ending = false;
12833 // when end() has been called, and returned
12834 this.ended = false;
12835 // when 'finish' is emitted
12836 this.finished = false;
12837
12838 // should we decode strings into buffers before passing to _write?
12839 // this is here so that some node-core streams can optimize string
12840 // handling at a lower level.
12841 var noDecode = options.decodeStrings === false;
12842 this.decodeStrings = !noDecode;
12843
12844 // Crypto is kind of old and crusty. Historically, its default string
12845 // encoding is 'binary' so we have to make this configurable.
12846 // Everything else in the universe uses 'utf8', though.
12847 this.defaultEncoding = options.defaultEncoding || 'utf8';
12848
12849 // not an actual buffer we keep track of, but a measurement
12850 // of how much we're waiting to get pushed to some underlying
12851 // socket or file.
12852 this.length = 0;
12853
12854 // a flag to see when we're in the middle of a write.
12855 this.writing = false;
12856
12857 // when true all writes will be buffered until .uncork() call
12858 this.corked = 0;
12859
12860 // a flag to be able to tell if the onwrite cb is called immediately,
12861 // or on a later tick. We set this to true at first, because any
12862 // actions that shouldn't happen until "later" should generally also
12863 // not happen before the first write call.
12864 this.sync = true;
12865
12866 // a flag to know if we're processing previously buffered items, which
12867 // may call the _write() callback in the same tick, so that we don't
12868 // end up in an overlapped onwrite situation.
12869 this.bufferProcessing = false;
12870
12871 // the callback that's passed to _write(chunk,cb)
12872 this.onwrite = function(er) {
12873 onwrite(stream, er);
12874 };
12875
12876 // the callback that the user supplies to write(chunk,encoding,cb)
12877 this.writecb = null;
12878
12879 // the amount that is being written when _write is called.
12880 this.writelen = 0;
12881
12882 this.buffer = [];
12883
12884 // number of pending user-supplied write callbacks
12885 // this must be 0 before 'finish' can be emitted
12886 this.pendingcb = 0;
12887
12888 // emit prefinish if the only thing we're waiting for is _write cbs
12889 // This is relevant for synchronous Transform streams
12890 this.prefinished = false;
12891
12892 // True if the error was already emitted and should not be thrown again
12893 this.errorEmitted = false;
12894 }
12895
12896 function Writable(options) {
12897 var Duplex = require('./_stream_duplex');
12898
12899 // Writable ctor is applied to Duplexes, though they're not
12900 // instanceof Writable, they're instanceof Readable.
12901 if (!(this instanceof Writable) && !(this instanceof Duplex))
12902 return new Writable(options);
12903
12904 this._writableState = new WritableState(options, this);
12905
12906 // legacy.
12907 this.writable = true;
12908
12909 Stream.call(this);
12910 }
12911
12912 // Otherwise people can pipe Writable streams, which is just wrong.
12913 Writable.prototype.pipe = function() {
12914 this.emit('error', new Error('Cannot pipe. Not readable.'));
12915 };
12916
12917
12918 function writeAfterEnd(stream, state, cb) {
12919 var er = new Error('write after end');
12920 // TODO: defer error events consistently everywhere, not just the cb
12921 stream.emit('error', er);
12922 process.nextTick(function() {
12923 cb(er);
12924 });
12925 }
12926
12927 // If we get something that is not a buffer, string, null, or undefined,
12928 // and we're not in objectMode, then that's an error.
12929 // Otherwise stream chunks are all considered to be of length=1, and the
12930 // watermarks determine how many objects to keep in the buffer, rather than
12931 // how many bytes or characters.
12932 function validChunk(stream, state, chunk, cb) {
12933 var valid = true;
12934 if (!util.isBuffer(chunk) &&
12935 !util.isString(chunk) &&
12936 !util.isNullOrUndefined(chunk) &&
12937 !state.objectMode) {
12938 var er = new TypeError('Invalid non-string/buffer chunk');
12939 stream.emit('error', er);
12940 process.nextTick(function() {
12941 cb(er);
12942 });
12943 valid = false;
12944 }
12945 return valid;
12946 }
12947
12948 Writable.prototype.write = function(chunk, encoding, cb) {
12949 var state = this._writableState;
12950 var ret = false;
12951
12952 if (util.isFunction(encoding)) {
12953 cb = encoding;
12954 encoding = null;
12955 }
12956
12957 if (util.isBuffer(chunk))
12958 encoding = 'buffer';
12959 else if (!encoding)
12960 encoding = state.defaultEncoding;
12961
12962 if (!util.isFunction(cb))
12963 cb = function() {};
12964
12965 if (state.ended)
12966 writeAfterEnd(this, state, cb);
12967 else if (validChunk(this, state, chunk, cb)) {
12968 state.pendingcb++;
12969 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12970 }
12971
12972 return ret;
12973 };
12974
12975 Writable.prototype.cork = function() {
12976 var state = this._writableState;
12977
12978 state.corked++;
12979 };
12980
12981 Writable.prototype.uncork = function() {
12982 var state = this._writableState;
12983
12984 if (state.corked) {
12985 state.corked--;
12986
12987 if (!state.writing &&
12988 !state.corked &&
12989 !state.finished &&
12990 !state.bufferProcessing &&
12991 state.buffer.length)
12992 clearBuffer(this, state);
12993 }
12994 };
12995
12996 function decodeChunk(state, chunk, encoding) {
12997 if (!state.objectMode &&
12998 state.decodeStrings !== false &&
12999 util.isString(chunk)) {
13000 chunk = new Buffer(chunk, encoding);
13001 }
13002 return chunk;
13003 }
13004
13005 // if we're already writing something, then just put this
13006 // in the queue, and wait our turn. Otherwise, call _write
13007 // If we return false, then we need a drain event, so set that flag.
13008 function writeOrBuffer(stream, state, chunk, encoding, cb) {
13009 chunk = decodeChunk(state, chunk, encoding);
13010 if (util.isBuffer(chunk))
13011 encoding = 'buffer';
13012 var len = state.objectMode ? 1 : chunk.length;
13013
13014 state.length += len;
13015
13016 var ret = state.length < state.highWaterMark;
13017 // we must ensure that previous needDrain will not be reset to false.
13018 if (!ret)
13019 state.needDrain = true;
13020
13021 if (state.writing || state.corked)
13022 state.buffer.push(new WriteReq(chunk, encoding, cb));
13023 else
13024 doWrite(stream, state, false, len, chunk, encoding, cb);
13025
13026 return ret;
13027 }
13028
13029 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13030 state.writelen = len;
13031 state.writecb = cb;
13032 state.writing = true;
13033 state.sync = true;
13034 if (writev)
13035 stream._writev(chunk, state.onwrite);
13036 else
13037 stream._write(chunk, encoding, state.onwrite);
13038 state.sync = false;
13039 }
13040
13041 function onwriteError(stream, state, sync, er, cb) {
13042 if (sync)
13043 process.nextTick(function() {
13044 state.pendingcb--;
13045 cb(er);
13046 });
13047 else {
13048 state.pendingcb--;
13049 cb(er);
13050 }
13051
13052 stream._writableState.errorEmitted = true;
13053 stream.emit('error', er);
13054 }
13055
13056 function onwriteStateUpdate(state) {
13057 state.writing = false;
13058 state.writecb = null;
13059 state.length -= state.writelen;
13060 state.writelen = 0;
13061 }
13062
13063 function onwrite(stream, er) {
13064 var state = stream._writableState;
13065 var sync = state.sync;
13066 var cb = state.writecb;
13067
13068 onwriteStateUpdate(state);
13069
13070 if (er)
13071 onwriteError(stream, state, sync, er, cb);
13072 else {
13073 // Check if we're actually ready to finish, but don't emit yet
13074 var finished = needFinish(stream, state);
13075
13076 if (!finished &&
13077 !state.corked &&
13078 !state.bufferProcessing &&
13079 state.buffer.length) {
13080 clearBuffer(stream, state);
13081 }
13082
13083 if (sync) {
13084 process.nextTick(function() {
13085 afterWrite(stream, state, finished, cb);
13086 });
13087 } else {
13088 afterWrite(stream, state, finished, cb);
13089 }
13090 }
13091 }
13092
13093 function afterWrite(stream, state, finished, cb) {
13094 if (!finished)
13095 onwriteDrain(stream, state);
13096 state.pendingcb--;
13097 cb();
13098 finishMaybe(stream, state);
13099 }
13100
13101 // Must force callback to be called on nextTick, so that we don't
13102 // emit 'drain' before the write() consumer gets the 'false' return
13103 // value, and has a chance to attach a 'drain' listener.
13104 function onwriteDrain(stream, state) {
13105 if (state.length === 0 && state.needDrain) {
13106 state.needDrain = false;
13107 stream.emit('drain');
13108 }
13109 }
13110
13111
13112 // if there's something in the buffer waiting, then process it
13113 function clearBuffer(stream, state) {
13114 state.bufferProcessing = true;
13115
13116 if (stream._writev && state.buffer.length > 1) {
13117 // Fast case, write everything using _writev()
13118 var cbs = [];
13119 for (var c = 0; c < state.buffer.length; c++)
13120 cbs.push(state.buffer[c].callback);
13121
13122 // count the one we are adding, as well.
13123 // TODO(isaacs) clean this up
13124 state.pendingcb++;
13125 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13126 for (var i = 0; i < cbs.length; i++) {
13127 state.pendingcb--;
13128 cbs[i](err);
13129 }
13130 });
13131
13132 // Clear buffer
13133 state.buffer = [];
13134 } else {
13135 // Slow case, write chunks one-by-one
13136 for (var c = 0; c < state.buffer.length; c++) {
13137 var entry = state.buffer[c];
13138 var chunk = entry.chunk;
13139 var encoding = entry.encoding;
13140 var cb = entry.callback;
13141 var len = state.objectMode ? 1 : chunk.length;
13142
13143 doWrite(stream, state, false, len, chunk, encoding, cb);
13144
13145 // if we didn't call the onwrite immediately, then
13146 // it means that we need to wait until it does.
13147 // also, that means that the chunk and cb are currently
13148 // being processed, so move the buffer counter past them.
13149 if (state.writing) {
13150 c++;
13151 break;
13152 }
13153 }
13154
13155 if (c < state.buffer.length)
13156 state.buffer = state.buffer.slice(c);
13157 else
13158 state.buffer.length = 0;
13159 }
13160
13161 state.bufferProcessing = false;
13162 }
13163
13164 Writable.prototype._write = function(chunk, encoding, cb) {
13165 cb(new Error('not implemented'));
13166
13167 };
13168
13169 Writable.prototype._writev = null;
13170
13171 Writable.prototype.end = function(chunk, encoding, cb) {
13172 var state = this._writableState;
13173
13174 if (util.isFunction(chunk)) {
13175 cb = chunk;
13176 chunk = null;
13177 encoding = null;
13178 } else if (util.isFunction(encoding)) {
13179 cb = encoding;
13180 encoding = null;
13181 }
13182
13183 if (!util.isNullOrUndefined(chunk))
13184 this.write(chunk, encoding);
13185
13186 // .end() fully uncorks
13187 if (state.corked) {
13188 state.corked = 1;
13189 this.uncork();
13190 }
13191
13192 // ignore unnecessary end() calls.
13193 if (!state.ending && !state.finished)
13194 endWritable(this, state, cb);
13195 };
13196
13197
13198 function needFinish(stream, state) {
13199 return (state.ending &&
13200 state.length === 0 &&
13201 !state.finished &&
13202 !state.writing);
13203 }
13204
13205 function prefinish(stream, state) {
13206 if (!state.prefinished) {
13207 state.prefinished = true;
13208 stream.emit('prefinish');
13209 }
13210 }
13211
13212 function finishMaybe(stream, state) {
13213 var need = needFinish(stream, state);
13214 if (need) {
13215 if (state.pendingcb === 0) {
13216 prefinish(stream, state);
13217 state.finished = true;
13218 stream.emit('finish');
13219 } else
13220 prefinish(stream, state);
13221 }
13222 return need;
13223 }
13224
13225 function endWritable(stream, state, cb) {
13226 state.ending = true;
13227 finishMaybe(stream, state);
13228 if (cb) {
13229 if (state.finished)
13230 process.nextTick(cb);
13231 else
13232 stream.once('finish', cb);
13233 }
13234 state.ended = true;
13235 }
13236
13237 }).call(this,require('_process'))
13238 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13239 (function (Buffer){
13240 // Copyright Joyent, Inc. and other Node contributors.
13241 //
13242 // Permission is hereby granted, free of charge, to any person obtaining a
13243 // copy of this software and associated documentation files (the
13244 // "Software"), to deal in the Software without restriction, including
13245 // without limitation the rights to use, copy, modify, merge, publish,
13246 // distribute, sublicense, and/or sell copies of the Software, and to permit
13247 // persons to whom the Software is furnished to do so, subject to the
13248 // following conditions:
13249 //
13250 // The above copyright notice and this permission notice shall be included
13251 // in all copies or substantial portions of the Software.
13252 //
13253 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13254 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13255 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13256 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13257 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13258 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13259 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13260
13261 // NOTE: These type checking functions intentionally don't use `instanceof`
13262 // because it is fragile and can be easily faked with `Object.create()`.
13263 function isArray(ar) {
13264 return Array.isArray(ar);
13265 }
13266 exports.isArray = isArray;
13267
13268 function isBoolean(arg) {
13269 return typeof arg === 'boolean';
13270 }
13271 exports.isBoolean = isBoolean;
13272
13273 function isNull(arg) {
13274 return arg === null;
13275 }
13276 exports.isNull = isNull;
13277
13278 function isNullOrUndefined(arg) {
13279 return arg == null;
13280 }
13281 exports.isNullOrUndefined = isNullOrUndefined;
13282
13283 function isNumber(arg) {
13284 return typeof arg === 'number';
13285 }
13286 exports.isNumber = isNumber;
13287
13288 function isString(arg) {
13289 return typeof arg === 'string';
13290 }
13291 exports.isString = isString;
13292
13293 function isSymbol(arg) {
13294 return typeof arg === 'symbol';
13295 }
13296 exports.isSymbol = isSymbol;
13297
13298 function isUndefined(arg) {
13299 return arg === void 0;
13300 }
13301 exports.isUndefined = isUndefined;
13302
13303 function isRegExp(re) {
13304 return isObject(re) && objectToString(re) === '[object RegExp]';
13305 }
13306 exports.isRegExp = isRegExp;
13307
13308 function isObject(arg) {
13309 return typeof arg === 'object' && arg !== null;
13310 }
13311 exports.isObject = isObject;
13312
13313 function isDate(d) {
13314 return isObject(d) && objectToString(d) === '[object Date]';
13315 }
13316 exports.isDate = isDate;
13317
13318 function isError(e) {
13319 return isObject(e) &&
13320 (objectToString(e) === '[object Error]' || e instanceof Error);
13321 }
13322 exports.isError = isError;
13323
13324 function isFunction(arg) {
13325 return typeof arg === 'function';
13326 }
13327 exports.isFunction = isFunction;
13328
13329 function isPrimitive(arg) {
13330 return arg === null ||
13331 typeof arg === 'boolean' ||
13332 typeof arg === 'number' ||
13333 typeof arg === 'string' ||
13334 typeof arg === 'symbol' || // ES6 symbol
13335 typeof arg === 'undefined';
13336 }
13337 exports.isPrimitive = isPrimitive;
13338
13339 function isBuffer(arg) {
13340 return Buffer.isBuffer(arg);
13341 }
13342 exports.isBuffer = isBuffer;
13343
13344 function objectToString(o) {
13345 return Object.prototype.toString.call(o);
13346 }
13347 }).call(this,require("buffer").Buffer)
13348 },{"buffer":7}],22:[function(require,module,exports){
13349 module.exports = require("./lib/_stream_passthrough.js")
13350
13351 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13352 exports = module.exports = require('./lib/_stream_readable.js');
13353 exports.Stream = require('stream');
13354 exports.Readable = exports;
13355 exports.Writable = require('./lib/_stream_writable.js');
13356 exports.Duplex = require('./lib/_stream_duplex.js');
13357 exports.Transform = require('./lib/_stream_transform.js');
13358 exports.PassThrough = require('./lib/_stream_passthrough.js');
13359
13360 },{"./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){
13361 module.exports = require("./lib/_stream_transform.js")
13362
13363 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13364 module.exports = require("./lib/_stream_writable.js")
13365
13366 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13367 // Copyright Joyent, Inc. and other Node contributors.
13368 //
13369 // Permission is hereby granted, free of charge, to any person obtaining a
13370 // copy of this software and associated documentation files (the
13371 // "Software"), to deal in the Software without restriction, including
13372 // without limitation the rights to use, copy, modify, merge, publish,
13373 // distribute, sublicense, and/or sell copies of the Software, and to permit
13374 // persons to whom the Software is furnished to do so, subject to the
13375 // following conditions:
13376 //
13377 // The above copyright notice and this permission notice shall be included
13378 // in all copies or substantial portions of the Software.
13379 //
13380 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13381 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13382 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13383 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13384 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13385 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13386 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13387
13388 module.exports = Stream;
13389
13390 var EE = require('events').EventEmitter;
13391 var inherits = require('inherits');
13392
13393 inherits(Stream, EE);
13394 Stream.Readable = require('readable-stream/readable.js');
13395 Stream.Writable = require('readable-stream/writable.js');
13396 Stream.Duplex = require('readable-stream/duplex.js');
13397 Stream.Transform = require('readable-stream/transform.js');
13398 Stream.PassThrough = require('readable-stream/passthrough.js');
13399
13400 // Backwards-compat with node 0.4.x
13401 Stream.Stream = Stream;
13402
13403
13404
13405 // old-style streams. Note that the pipe method (the only relevant
13406 // part of this class) is overridden in the Readable class.
13407
13408 function Stream() {
13409 EE.call(this);
13410 }
13411
13412 Stream.prototype.pipe = function(dest, options) {
13413 var source = this;
13414
13415 function ondata(chunk) {
13416 if (dest.writable) {
13417 if (false === dest.write(chunk) && source.pause) {
13418 source.pause();
13419 }
13420 }
13421 }
13422
13423 source.on('data', ondata);
13424
13425 function ondrain() {
13426 if (source.readable && source.resume) {
13427 source.resume();
13428 }
13429 }
13430
13431 dest.on('drain', ondrain);
13432
13433 // If the 'end' option is not supplied, dest.end() will be called when
13434 // source gets the 'end' or 'close' events. Only dest.end() once.
13435 if (!dest._isStdio && (!options || options.end !== false)) {
13436 source.on('end', onend);
13437 source.on('close', onclose);
13438 }
13439
13440 var didOnEnd = false;
13441 function onend() {
13442 if (didOnEnd) return;
13443 didOnEnd = true;
13444
13445 dest.end();
13446 }
13447
13448
13449 function onclose() {
13450 if (didOnEnd) return;
13451 didOnEnd = true;
13452
13453 if (typeof dest.destroy === 'function') dest.destroy();
13454 }
13455
13456 // don't leave dangling pipes when there are errors.
13457 function onerror(er) {
13458 cleanup();
13459 if (EE.listenerCount(this, 'error') === 0) {
13460 throw er; // Unhandled stream error in pipe.
13461 }
13462 }
13463
13464 source.on('error', onerror);
13465 dest.on('error', onerror);
13466
13467 // remove all the event listeners that were added.
13468 function cleanup() {
13469 source.removeListener('data', ondata);
13470 dest.removeListener('drain', ondrain);
13471
13472 source.removeListener('end', onend);
13473 source.removeListener('close', onclose);
13474
13475 source.removeListener('error', onerror);
13476 dest.removeListener('error', onerror);
13477
13478 source.removeListener('end', cleanup);
13479 source.removeListener('close', cleanup);
13480
13481 dest.removeListener('close', cleanup);
13482 }
13483
13484 source.on('end', cleanup);
13485 source.on('close', cleanup);
13486
13487 dest.on('close', cleanup);
13488
13489 dest.emit('pipe', source);
13490
13491 // Allow for unix-like usage: A.pipe(B).pipe(C)
13492 return dest;
13493 };
13494
13495 },{"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){
13496 // Copyright Joyent, Inc. and other Node contributors.
13497 //
13498 // Permission is hereby granted, free of charge, to any person obtaining a
13499 // copy of this software and associated documentation files (the
13500 // "Software"), to deal in the Software without restriction, including
13501 // without limitation the rights to use, copy, modify, merge, publish,
13502 // distribute, sublicense, and/or sell copies of the Software, and to permit
13503 // persons to whom the Software is furnished to do so, subject to the
13504 // following conditions:
13505 //
13506 // The above copyright notice and this permission notice shall be included
13507 // in all copies or substantial portions of the Software.
13508 //
13509 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13510 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13511 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13512 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13513 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13514 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13515 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13516
13517 var Buffer = require('buffer').Buffer;
13518
13519 var isBufferEncoding = Buffer.isEncoding
13520 || function(encoding) {
13521 switch (encoding && encoding.toLowerCase()) {
13522 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;
13523 default: return false;
13524 }
13525 }
13526
13527
13528 function assertEncoding(encoding) {
13529 if (encoding && !isBufferEncoding(encoding)) {
13530 throw new Error('Unknown encoding: ' + encoding);
13531 }
13532 }
13533
13534 // StringDecoder provides an interface for efficiently splitting a series of
13535 // buffers into a series of JS strings without breaking apart multi-byte
13536 // characters. CESU-8 is handled as part of the UTF-8 encoding.
13537 //
13538 // @TODO Handling all encodings inside a single object makes it very difficult
13539 // to reason about this code, so it should be split up in the future.
13540 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13541 // points as used by CESU-8.
13542 var StringDecoder = exports.StringDecoder = function(encoding) {
13543 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13544 assertEncoding(encoding);
13545 switch (this.encoding) {
13546 case 'utf8':
13547 // CESU-8 represents each of Surrogate Pair by 3-bytes
13548 this.surrogateSize = 3;
13549 break;
13550 case 'ucs2':
13551 case 'utf16le':
13552 // UTF-16 represents each of Surrogate Pair by 2-bytes
13553 this.surrogateSize = 2;
13554 this.detectIncompleteChar = utf16DetectIncompleteChar;
13555 break;
13556 case 'base64':
13557 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13558 this.surrogateSize = 3;
13559 this.detectIncompleteChar = base64DetectIncompleteChar;
13560 break;
13561 default:
13562 this.write = passThroughWrite;
13563 return;
13564 }
13565
13566 // Enough space to store all bytes of a single character. UTF-8 needs 4
13567 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13568 this.charBuffer = new Buffer(6);
13569 // Number of bytes received for the current incomplete multi-byte character.
13570 this.charReceived = 0;
13571 // Number of bytes expected for the current incomplete multi-byte character.
13572 this.charLength = 0;
13573 };
13574
13575
13576 // write decodes the given buffer and returns it as JS string that is
13577 // guaranteed to not contain any partial multi-byte characters. Any partial
13578 // character found at the end of the buffer is buffered up, and will be
13579 // returned when calling write again with the remaining bytes.
13580 //
13581 // Note: Converting a Buffer containing an orphan surrogate to a String
13582 // currently works, but converting a String to a Buffer (via `new Buffer`, or
13583 // Buffer#write) will replace incomplete surrogates with the unicode
13584 // replacement character. See https://codereview.chromium.org/121173009/ .
13585 StringDecoder.prototype.write = function(buffer) {
13586 var charStr = '';
13587 // if our last write ended with an incomplete multibyte character
13588 while (this.charLength) {
13589 // determine how many remaining bytes this buffer has to offer for this char
13590 var available = (buffer.length >= this.charLength - this.charReceived) ?
13591 this.charLength - this.charReceived :
13592 buffer.length;
13593
13594 // add the new bytes to the char buffer
13595 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13596 this.charReceived += available;
13597
13598 if (this.charReceived < this.charLength) {
13599 // still not enough chars in this buffer? wait for more ...
13600 return '';
13601 }
13602
13603 // remove bytes belonging to the current character from the buffer
13604 buffer = buffer.slice(available, buffer.length);
13605
13606 // get the character that was split
13607 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13608
13609 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13610 var charCode = charStr.charCodeAt(charStr.length - 1);
13611 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13612 this.charLength += this.surrogateSize;
13613 charStr = '';
13614 continue;
13615 }
13616 this.charReceived = this.charLength = 0;
13617
13618 // if there are no more bytes in this buffer, just emit our char
13619 if (buffer.length === 0) {
13620 return charStr;
13621 }
13622 break;
13623 }
13624
13625 // determine and set charLength / charReceived
13626 this.detectIncompleteChar(buffer);
13627
13628 var end = buffer.length;
13629 if (this.charLength) {
13630 // buffer the incomplete character bytes we got
13631 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13632 end -= this.charReceived;
13633 }
13634
13635 charStr += buffer.toString(this.encoding, 0, end);
13636
13637 var end = charStr.length - 1;
13638 var charCode = charStr.charCodeAt(end);
13639 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13640 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13641 var size = this.surrogateSize;
13642 this.charLength += size;
13643 this.charReceived += size;
13644 this.charBuffer.copy(this.charBuffer, size, 0, size);
13645 buffer.copy(this.charBuffer, 0, 0, size);
13646 return charStr.substring(0, end);
13647 }
13648
13649 // or just emit the charStr
13650 return charStr;
13651 };
13652
13653 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
13654 // the end of the given buffer. If so, it sets this.charLength to the byte
13655 // length that character, and sets this.charReceived to the number of bytes
13656 // that are available for this character.
13657 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13658 // determine how many bytes we have to check at the end of this buffer
13659 var i = (buffer.length >= 3) ? 3 : buffer.length;
13660
13661 // Figure out if one of the last i bytes of our buffer announces an
13662 // incomplete char.
13663 for (; i > 0; i--) {
13664 var c = buffer[buffer.length - i];
13665
13666 // See http://en.wikipedia.org/wiki/UTF-8#Description
13667
13668 // 110XXXXX
13669 if (i == 1 && c >> 5 == 0x06) {
13670 this.charLength = 2;
13671 break;
13672 }
13673
13674 // 1110XXXX
13675 if (i <= 2 && c >> 4 == 0x0E) {
13676 this.charLength = 3;
13677 break;
13678 }
13679
13680 // 11110XXX
13681 if (i <= 3 && c >> 3 == 0x1E) {
13682 this.charLength = 4;
13683 break;
13684 }
13685 }
13686 this.charReceived = i;
13687 };
13688
13689 StringDecoder.prototype.end = function(buffer) {
13690 var res = '';
13691 if (buffer && buffer.length)
13692 res = this.write(buffer);
13693
13694 if (this.charReceived) {
13695 var cr = this.charReceived;
13696 var buf = this.charBuffer;
13697 var enc = this.encoding;
13698 res += buf.slice(0, cr).toString(enc);
13699 }
13700
13701 return res;
13702 };
13703
13704 function passThroughWrite(buffer) {
13705 return buffer.toString(this.encoding);
13706 }
13707
13708 function utf16DetectIncompleteChar(buffer) {
13709 this.charReceived = buffer.length % 2;
13710 this.charLength = this.charReceived ? 2 : 0;
13711 }
13712
13713 function base64DetectIncompleteChar(buffer) {
13714 this.charReceived = buffer.length % 3;
13715 this.charLength = this.charReceived ? 3 : 0;
13716 }
13717
13718 },{"buffer":7}],28:[function(require,module,exports){
13719 module.exports = function isBuffer(arg) {
13720 return arg && typeof arg === 'object'
13721 && typeof arg.copy === 'function'
13722 && typeof arg.fill === 'function'
13723 && typeof arg.readUInt8 === 'function';
13724 }
13725 },{}],29:[function(require,module,exports){
13726 (function (process,global){
13727 // Copyright Joyent, Inc. and other Node contributors.
13728 //
13729 // Permission is hereby granted, free of charge, to any person obtaining a
13730 // copy of this software and associated documentation files (the
13731 // "Software"), to deal in the Software without restriction, including
13732 // without limitation the rights to use, copy, modify, merge, publish,
13733 // distribute, sublicense, and/or sell copies of the Software, and to permit
13734 // persons to whom the Software is furnished to do so, subject to the
13735 // following conditions:
13736 //
13737 // The above copyright notice and this permission notice shall be included
13738 // in all copies or substantial portions of the Software.
13739 //
13740 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13741 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13742 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13743 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13744 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13745 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13746 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13747
13748 var formatRegExp = /%[sdj%]/g;
13749 exports.format = function(f) {
13750 if (!isString(f)) {
13751 var objects = [];
13752 for (var i = 0; i < arguments.length; i++) {
13753 objects.push(inspect(arguments[i]));
13754 }
13755 return objects.join(' ');
13756 }
13757
13758 var i = 1;
13759 var args = arguments;
13760 var len = args.length;
13761 var str = String(f).replace(formatRegExp, function(x) {
13762 if (x === '%%') return '%';
13763 if (i >= len) return x;
13764 switch (x) {
13765 case '%s': return String(args[i++]);
13766 case '%d': return Number(args[i++]);
13767 case '%j':
13768 try {
13769 return JSON.stringify(args[i++]);
13770 } catch (_) {
13771 return '[Circular]';
13772 }
13773 default:
13774 return x;
13775 }
13776 });
13777 for (var x = args[i]; i < len; x = args[++i]) {
13778 if (isNull(x) || !isObject(x)) {
13779 str += ' ' + x;
13780 } else {
13781 str += ' ' + inspect(x);
13782 }
13783 }
13784 return str;
13785 };
13786
13787
13788 // Mark that a method should not be used.
13789 // Returns a modified function which warns once by default.
13790 // If --no-deprecation is set, then it is a no-op.
13791 exports.deprecate = function(fn, msg) {
13792 // Allow for deprecating things in the process of starting up.
13793 if (isUndefined(global.process)) {
13794 return function() {
13795 return exports.deprecate(fn, msg).apply(this, arguments);
13796 };
13797 }
13798
13799 if (process.noDeprecation === true) {
13800 return fn;
13801 }
13802
13803 var warned = false;
13804 function deprecated() {
13805 if (!warned) {
13806 if (process.throwDeprecation) {
13807 throw new Error(msg);
13808 } else if (process.traceDeprecation) {
13809 console.trace(msg);
13810 } else {
13811 console.error(msg);
13812 }
13813 warned = true;
13814 }
13815 return fn.apply(this, arguments);
13816 }
13817
13818 return deprecated;
13819 };
13820
13821
13822 var debugs = {};
13823 var debugEnviron;
13824 exports.debuglog = function(set) {
13825 if (isUndefined(debugEnviron))
13826 debugEnviron = process.env.NODE_DEBUG || '';
13827 set = set.toUpperCase();
13828 if (!debugs[set]) {
13829 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13830 var pid = process.pid;
13831 debugs[set] = function() {
13832 var msg = exports.format.apply(exports, arguments);
13833 console.error('%s %d: %s', set, pid, msg);
13834 };
13835 } else {
13836 debugs[set] = function() {};
13837 }
13838 }
13839 return debugs[set];
13840 };
13841
13842
13843 /**
13844 * Echos the value of a value. Trys to print the value out
13845 * in the best way possible given the different types.
13846 *
13847 * @param {Object} obj The object to print out.
13848 * @param {Object} opts Optional options object that alters the output.
13849 */
13850 /* legacy: obj, showHidden, depth, colors*/
13851 function inspect(obj, opts) {
13852 // default options
13853 var ctx = {
13854 seen: [],
13855 stylize: stylizeNoColor
13856 };
13857 // legacy...
13858 if (arguments.length >= 3) ctx.depth = arguments[2];
13859 if (arguments.length >= 4) ctx.colors = arguments[3];
13860 if (isBoolean(opts)) {
13861 // legacy...
13862 ctx.showHidden = opts;
13863 } else if (opts) {
13864 // got an "options" object
13865 exports._extend(ctx, opts);
13866 }
13867 // set default options
13868 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13869 if (isUndefined(ctx.depth)) ctx.depth = 2;
13870 if (isUndefined(ctx.colors)) ctx.colors = false;
13871 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13872 if (ctx.colors) ctx.stylize = stylizeWithColor;
13873 return formatValue(ctx, obj, ctx.depth);
13874 }
13875 exports.inspect = inspect;
13876
13877
13878 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13879 inspect.colors = {
13880 'bold' : [1, 22],
13881 'italic' : [3, 23],
13882 'underline' : [4, 24],
13883 'inverse' : [7, 27],
13884 'white' : [37, 39],
13885 'grey' : [90, 39],
13886 'black' : [30, 39],
13887 'blue' : [34, 39],
13888 'cyan' : [36, 39],
13889 'green' : [32, 39],
13890 'magenta' : [35, 39],
13891 'red' : [31, 39],
13892 'yellow' : [33, 39]
13893 };
13894
13895 // Don't use 'blue' not visible on cmd.exe
13896 inspect.styles = {
13897 'special': 'cyan',
13898 'number': 'yellow',
13899 'boolean': 'yellow',
13900 'undefined': 'grey',
13901 'null': 'bold',
13902 'string': 'green',
13903 'date': 'magenta',
13904 // "name": intentionally not styling
13905 'regexp': 'red'
13906 };
13907
13908
13909 function stylizeWithColor(str, styleType) {
13910 var style = inspect.styles[styleType];
13911
13912 if (style) {
13913 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13914 '\u001b[' + inspect.colors[style][1] + 'm';
13915 } else {
13916 return str;
13917 }
13918 }
13919
13920
13921 function stylizeNoColor(str, styleType) {
13922 return str;
13923 }
13924
13925
13926 function arrayToHash(array) {
13927 var hash = {};
13928
13929 array.forEach(function(val, idx) {
13930 hash[val] = true;
13931 });
13932
13933 return hash;
13934 }
13935
13936
13937 function formatValue(ctx, value, recurseTimes) {
13938 // Provide a hook for user-specified inspect functions.
13939 // Check that value is an object with an inspect function on it
13940 if (ctx.customInspect &&
13941 value &&
13942 isFunction(value.inspect) &&
13943 // Filter out the util module, it's inspect function is special
13944 value.inspect !== exports.inspect &&
13945 // Also filter out any prototype objects using the circular check.
13946 !(value.constructor && value.constructor.prototype === value)) {
13947 var ret = value.inspect(recurseTimes, ctx);
13948 if (!isString(ret)) {
13949 ret = formatValue(ctx, ret, recurseTimes);
13950 }
13951 return ret;
13952 }
13953
13954 // Primitive types cannot have properties
13955 var primitive = formatPrimitive(ctx, value);
13956 if (primitive) {
13957 return primitive;
13958 }
13959
13960 // Look up the keys of the object.
13961 var keys = Object.keys(value);
13962 var visibleKeys = arrayToHash(keys);
13963
13964 if (ctx.showHidden) {
13965 keys = Object.getOwnPropertyNames(value);
13966 }
13967
13968 // IE doesn't make error fields non-enumerable
13969 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13970 if (isError(value)
13971 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13972 return formatError(value);
13973 }
13974
13975 // Some type of object without properties can be shortcutted.
13976 if (keys.length === 0) {
13977 if (isFunction(value)) {
13978 var name = value.name ? ': ' + value.name : '';
13979 return ctx.stylize('[Function' + name + ']', 'special');
13980 }
13981 if (isRegExp(value)) {
13982 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13983 }
13984 if (isDate(value)) {
13985 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13986 }
13987 if (isError(value)) {
13988 return formatError(value);
13989 }
13990 }
13991
13992 var base = '', array = false, braces = ['{', '}'];
13993
13994 // Make Array say that they are Array
13995 if (isArray(value)) {
13996 array = true;
13997 braces = ['[', ']'];
13998 }
13999
14000 // Make functions say that they are functions
14001 if (isFunction(value)) {
14002 var n = value.name ? ': ' + value.name : '';
14003 base = ' [Function' + n + ']';
14004 }
14005
14006 // Make RegExps say that they are RegExps
14007 if (isRegExp(value)) {
14008 base = ' ' + RegExp.prototype.toString.call(value);
14009 }
14010
14011 // Make dates with properties first say the date
14012 if (isDate(value)) {
14013 base = ' ' + Date.prototype.toUTCString.call(value);
14014 }
14015
14016 // Make error with message first say the error
14017 if (isError(value)) {
14018 base = ' ' + formatError(value);
14019 }
14020
14021 if (keys.length === 0 && (!array || value.length == 0)) {
14022 return braces[0] + base + braces[1];
14023 }
14024
14025 if (recurseTimes < 0) {
14026 if (isRegExp(value)) {
14027 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14028 } else {
14029 return ctx.stylize('[Object]', 'special');
14030 }
14031 }
14032
14033 ctx.seen.push(value);
14034
14035 var output;
14036 if (array) {
14037 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14038 } else {
14039 output = keys.map(function(key) {
14040 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14041 });
14042 }
14043
14044 ctx.seen.pop();
14045
14046 return reduceToSingleString(output, base, braces);
14047 }
14048
14049
14050 function formatPrimitive(ctx, value) {
14051 if (isUndefined(value))
14052 return ctx.stylize('undefined', 'undefined');
14053 if (isString(value)) {
14054 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14055 .replace(/'/g, "\\'")
14056 .replace(/\\"/g, '"') + '\'';
14057 return ctx.stylize(simple, 'string');
14058 }
14059 if (isNumber(value))
14060 return ctx.stylize('' + value, 'number');
14061 if (isBoolean(value))
14062 return ctx.stylize('' + value, 'boolean');
14063 // For some reason typeof null is "object", so special case here.
14064 if (isNull(value))
14065 return ctx.stylize('null', 'null');
14066 }
14067
14068
14069 function formatError(value) {
14070 return '[' + Error.prototype.toString.call(value) + ']';
14071 }
14072
14073
14074 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14075 var output = [];
14076 for (var i = 0, l = value.length; i < l; ++i) {
14077 if (hasOwnProperty(value, String(i))) {
14078 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14079 String(i), true));
14080 } else {
14081 output.push('');
14082 }
14083 }
14084 keys.forEach(function(key) {
14085 if (!key.match(/^\d+$/)) {
14086 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14087 key, true));
14088 }
14089 });
14090 return output;
14091 }
14092
14093
14094 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14095 var name, str, desc;
14096 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14097 if (desc.get) {
14098 if (desc.set) {
14099 str = ctx.stylize('[Getter/Setter]', 'special');
14100 } else {
14101 str = ctx.stylize('[Getter]', 'special');
14102 }
14103 } else {
14104 if (desc.set) {
14105 str = ctx.stylize('[Setter]', 'special');
14106 }
14107 }
14108 if (!hasOwnProperty(visibleKeys, key)) {
14109 name = '[' + key + ']';
14110 }
14111 if (!str) {
14112 if (ctx.seen.indexOf(desc.value) < 0) {
14113 if (isNull(recurseTimes)) {
14114 str = formatValue(ctx, desc.value, null);
14115 } else {
14116 str = formatValue(ctx, desc.value, recurseTimes - 1);
14117 }
14118 if (str.indexOf('\n') > -1) {
14119 if (array) {
14120 str = str.split('\n').map(function(line) {
14121 return ' ' + line;
14122 }).join('\n').substr(2);
14123 } else {
14124 str = '\n' + str.split('\n').map(function(line) {
14125 return ' ' + line;
14126 }).join('\n');
14127 }
14128 }
14129 } else {
14130 str = ctx.stylize('[Circular]', 'special');
14131 }
14132 }
14133 if (isUndefined(name)) {
14134 if (array && key.match(/^\d+$/)) {
14135 return str;
14136 }
14137 name = JSON.stringify('' + key);
14138 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14139 name = name.substr(1, name.length - 2);
14140 name = ctx.stylize(name, 'name');
14141 } else {
14142 name = name.replace(/'/g, "\\'")
14143 .replace(/\\"/g, '"')
14144 .replace(/(^"|"$)/g, "'");
14145 name = ctx.stylize(name, 'string');
14146 }
14147 }
14148
14149 return name + ': ' + str;
14150 }
14151
14152
14153 function reduceToSingleString(output, base, braces) {
14154 var numLinesEst = 0;
14155 var length = output.reduce(function(prev, cur) {
14156 numLinesEst++;
14157 if (cur.indexOf('\n') >= 0) numLinesEst++;
14158 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14159 }, 0);
14160
14161 if (length > 60) {
14162 return braces[0] +
14163 (base === '' ? '' : base + '\n ') +
14164 ' ' +
14165 output.join(',\n ') +
14166 ' ' +
14167 braces[1];
14168 }
14169
14170 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14171 }
14172
14173
14174 // NOTE: These type checking functions intentionally don't use `instanceof`
14175 // because it is fragile and can be easily faked with `Object.create()`.
14176 function isArray(ar) {
14177 return Array.isArray(ar);
14178 }
14179 exports.isArray = isArray;
14180
14181 function isBoolean(arg) {
14182 return typeof arg === 'boolean';
14183 }
14184 exports.isBoolean = isBoolean;
14185
14186 function isNull(arg) {
14187 return arg === null;
14188 }
14189 exports.isNull = isNull;
14190
14191 function isNullOrUndefined(arg) {
14192 return arg == null;
14193 }
14194 exports.isNullOrUndefined = isNullOrUndefined;
14195
14196 function isNumber(arg) {
14197 return typeof arg === 'number';
14198 }
14199 exports.isNumber = isNumber;
14200
14201 function isString(arg) {
14202 return typeof arg === 'string';
14203 }
14204 exports.isString = isString;
14205
14206 function isSymbol(arg) {
14207 return typeof arg === 'symbol';
14208 }
14209 exports.isSymbol = isSymbol;
14210
14211 function isUndefined(arg) {
14212 return arg === void 0;
14213 }
14214 exports.isUndefined = isUndefined;
14215
14216 function isRegExp(re) {
14217 return isObject(re) && objectToString(re) === '[object RegExp]';
14218 }
14219 exports.isRegExp = isRegExp;
14220
14221 function isObject(arg) {
14222 return typeof arg === 'object' && arg !== null;
14223 }
14224 exports.isObject = isObject;
14225
14226 function isDate(d) {
14227 return isObject(d) && objectToString(d) === '[object Date]';
14228 }
14229 exports.isDate = isDate;
14230
14231 function isError(e) {
14232 return isObject(e) &&
14233 (objectToString(e) === '[object Error]' || e instanceof Error);
14234 }
14235 exports.isError = isError;
14236
14237 function isFunction(arg) {
14238 return typeof arg === 'function';
14239 }
14240 exports.isFunction = isFunction;
14241
14242 function isPrimitive(arg) {
14243 return arg === null ||
14244 typeof arg === 'boolean' ||
14245 typeof arg === 'number' ||
14246 typeof arg === 'string' ||
14247 typeof arg === 'symbol' || // ES6 symbol
14248 typeof arg === 'undefined';
14249 }
14250 exports.isPrimitive = isPrimitive;
14251
14252 exports.isBuffer = require('./support/isBuffer');
14253
14254 function objectToString(o) {
14255 return Object.prototype.toString.call(o);
14256 }
14257
14258
14259 function pad(n) {
14260 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14261 }
14262
14263
14264 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14265 'Oct', 'Nov', 'Dec'];
14266
14267 // 26 Feb 16:19:34
14268 function timestamp() {
14269 var d = new Date();
14270 var time = [pad(d.getHours()),
14271 pad(d.getMinutes()),
14272 pad(d.getSeconds())].join(':');
14273 return [d.getDate(), months[d.getMonth()], time].join(' ');
14274 }
14275
14276
14277 // log is just a thin wrapper to console.log that prepends a timestamp
14278 exports.log = function() {
14279 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14280 };
14281
14282
14283 /**
14284 * Inherit the prototype methods from one constructor into another.
14285 *
14286 * The Function.prototype.inherits from lang.js rewritten as a standalone
14287 * function (not on Function.prototype). NOTE: If this file is to be loaded
14288 * during bootstrapping this function needs to be rewritten using some native
14289 * functions as prototype setup using normal JavaScript does not work as
14290 * expected during bootstrapping (see mirror.js in r114903).
14291 *
14292 * @param {function} ctor Constructor function which needs to inherit the
14293 * prototype.
14294 * @param {function} superCtor Constructor function to inherit prototype from.
14295 */
14296 exports.inherits = require('inherits');
14297
14298 exports._extend = function(origin, add) {
14299 // Don't do anything if add isn't an object
14300 if (!add || !isObject(add)) return origin;
14301
14302 var keys = Object.keys(add);
14303 var i = keys.length;
14304 while (i--) {
14305 origin[keys[i]] = add[keys[i]];
14306 }
14307 return origin;
14308 };
14309
14310 function hasOwnProperty(obj, prop) {
14311 return Object.prototype.hasOwnProperty.call(obj, prop);
14312 }
14313
14314 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14315 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14316 // Base58 encoding/decoding
14317 // Originally written by Mike Hearn for BitcoinJ
14318 // Copyright (c) 2011 Google Inc
14319 // Ported to JavaScript by Stefan Thomas
14320 // Merged Buffer refactorings from base58-native by Stephen Pair
14321 // Copyright (c) 2013 BitPay Inc
14322
14323 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14324 var ALPHABET_MAP = {}
14325 for(var i = 0; i < ALPHABET.length; i++) {
14326 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14327 }
14328 var BASE = 58
14329
14330 function encode(buffer) {
14331 if (buffer.length === 0) return ''
14332
14333 var i, j, digits = [0]
14334 for (i = 0; i < buffer.length; i++) {
14335 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14336
14337 digits[0] += buffer[i]
14338
14339 var carry = 0
14340 for (j = 0; j < digits.length; ++j) {
14341 digits[j] += carry
14342
14343 carry = (digits[j] / BASE) | 0
14344 digits[j] %= BASE
14345 }
14346
14347 while (carry) {
14348 digits.push(carry % BASE)
14349
14350 carry = (carry / BASE) | 0
14351 }
14352 }
14353
14354 // deal with leading zeros
14355 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14356
14357 // convert digits to a string
14358 var stringOutput = ""
14359 for (var i = digits.length - 1; i >= 0; i--) {
14360 stringOutput = stringOutput + ALPHABET[digits[i]]
14361 }
14362 return stringOutput
14363 }
14364
14365 function decode(string) {
14366 if (string.length === 0) return []
14367
14368 var i, j, bytes = [0]
14369 for (i = 0; i < string.length; i++) {
14370 var c = string[i]
14371 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14372
14373 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14374 bytes[0] += ALPHABET_MAP[c]
14375
14376 var carry = 0
14377 for (j = 0; j < bytes.length; ++j) {
14378 bytes[j] += carry
14379
14380 carry = bytes[j] >> 8
14381 bytes[j] &= 0xff
14382 }
14383
14384 while (carry) {
14385 bytes.push(carry & 0xff)
14386
14387 carry >>= 8
14388 }
14389 }
14390
14391 // deal with leading zeros
14392 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14393
14394 return bytes.reverse()
14395 }
14396
14397 module.exports = {
14398 encode: encode,
14399 decode: decode
14400 }
14401
14402 },{}],31:[function(require,module,exports){
14403 (function (Buffer){
14404 'use strict'
14405
14406 var base58 = require('bs58')
14407 var createHash = require('create-hash')
14408
14409 // SHA256(SHA256(buffer))
14410 function sha256x2 (buffer) {
14411 buffer = createHash('sha256').update(buffer).digest()
14412 return createHash('sha256').update(buffer).digest()
14413 }
14414
14415 // Encode a buffer as a base58-check encoded string
14416 function encode (payload) {
14417 var checksum = sha256x2(payload).slice(0, 4)
14418
14419 return base58.encode(Buffer.concat([
14420 payload,
14421 checksum
14422 ]))
14423 }
14424
14425 // Decode a base58-check encoded string to a buffer
14426 function decode (string) {
14427 var buffer = new Buffer(base58.decode(string))
14428
14429 var payload = buffer.slice(0, -4)
14430 var checksum = buffer.slice(-4)
14431 var newChecksum = sha256x2(payload).slice(0, 4)
14432
14433 for (var i = 0; i < newChecksum.length; ++i) {
14434 if (newChecksum[i] === checksum[i]) continue
14435
14436 throw new Error('Invalid checksum')
14437 }
14438
14439 return payload
14440 }
14441
14442 module.exports = {
14443 encode: encode,
14444 decode: decode
14445 }
14446
14447 }).call(this,require("buffer").Buffer)
14448 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14449 (function (Buffer){
14450 'use strict';
14451 var inherits = require('inherits')
14452 var md5 = require('./md5')
14453 var rmd160 = require('ripemd160')
14454 var sha = require('sha.js')
14455
14456 var Transform = require('stream').Transform
14457
14458 function HashNoConstructor(hash) {
14459 Transform.call(this)
14460
14461 this._hash = hash
14462 this.buffers = []
14463 }
14464
14465 inherits(HashNoConstructor, Transform)
14466
14467 HashNoConstructor.prototype._transform = function (data, _, next) {
14468 this.buffers.push(data)
14469
14470 next()
14471 }
14472
14473 HashNoConstructor.prototype._flush = function (next) {
14474 this.push(this.digest())
14475 next()
14476 }
14477
14478 HashNoConstructor.prototype.update = function (data, enc) {
14479 if (typeof data === 'string') {
14480 data = new Buffer(data, enc)
14481 }
14482
14483 this.buffers.push(data)
14484 return this
14485 }
14486
14487 HashNoConstructor.prototype.digest = function (enc) {
14488 var buf = Buffer.concat(this.buffers)
14489 var r = this._hash(buf)
14490 this.buffers = null
14491
14492 return enc ? r.toString(enc) : r
14493 }
14494
14495 function Hash(hash) {
14496 Transform.call(this)
14497
14498 this._hash = hash
14499 }
14500
14501 inherits(Hash, Transform)
14502
14503 Hash.prototype._transform = function (data, enc, next) {
14504 if (enc) data = new Buffer(data, enc)
14505
14506 this._hash.update(data)
14507
14508 next()
14509 }
14510
14511 Hash.prototype._flush = function (next) {
14512 this.push(this._hash.digest())
14513 this._hash = null
14514
14515 next()
14516 }
14517
14518 Hash.prototype.update = function (data, enc) {
14519 if (typeof data === 'string') {
14520 data = new Buffer(data, enc)
14521 }
14522
14523 this._hash.update(data)
14524 return this
14525 }
14526
14527 Hash.prototype.digest = function (enc) {
14528 var outData = this._hash.digest()
14529
14530 return enc ? outData.toString(enc) : outData
14531 }
14532
14533 module.exports = function createHash (alg) {
14534 if ('md5' === alg) return new HashNoConstructor(md5)
14535 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14536
14537 return new Hash(sha(alg))
14538 }
14539
14540 }).call(this,require("buffer").Buffer)
14541 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14542 (function (Buffer){
14543 'use strict';
14544 var intSize = 4;
14545 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14546 var chrsz = 8;
14547
14548 function toArray(buf, bigEndian) {
14549 if ((buf.length % intSize) !== 0) {
14550 var len = buf.length + (intSize - (buf.length % intSize));
14551 buf = Buffer.concat([buf, zeroBuffer], len);
14552 }
14553
14554 var arr = [];
14555 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14556 for (var i = 0; i < buf.length; i += intSize) {
14557 arr.push(fn.call(buf, i));
14558 }
14559 return arr;
14560 }
14561
14562 function toBuffer(arr, size, bigEndian) {
14563 var buf = new Buffer(size);
14564 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14565 for (var i = 0; i < arr.length; i++) {
14566 fn.call(buf, arr[i], i * 4, true);
14567 }
14568 return buf;
14569 }
14570
14571 function hash(buf, fn, hashSize, bigEndian) {
14572 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14573 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14574 return toBuffer(arr, hashSize, bigEndian);
14575 }
14576 exports.hash = hash;
14577 }).call(this,require("buffer").Buffer)
14578 },{"buffer":7}],34:[function(require,module,exports){
14579 'use strict';
14580 /*
14581 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14582 * Digest Algorithm, as defined in RFC 1321.
14583 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14584 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14585 * Distributed under the BSD License
14586 * See http://pajhome.org.uk/crypt/md5 for more info.
14587 */
14588
14589 var helpers = require('./helpers');
14590
14591 /*
14592 * Calculate the MD5 of an array of little-endian words, and a bit length
14593 */
14594 function core_md5(x, len)
14595 {
14596 /* append padding */
14597 x[len >> 5] |= 0x80 << ((len) % 32);
14598 x[(((len + 64) >>> 9) << 4) + 14] = len;
14599
14600 var a = 1732584193;
14601 var b = -271733879;
14602 var c = -1732584194;
14603 var d = 271733878;
14604
14605 for(var i = 0; i < x.length; i += 16)
14606 {
14607 var olda = a;
14608 var oldb = b;
14609 var oldc = c;
14610 var oldd = d;
14611
14612 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14613 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14614 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14615 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14616 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14617 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14618 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14619 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14620 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14621 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14622 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14623 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14624 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14625 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14626 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14627 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14628
14629 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14630 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14631 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14632 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14633 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14634 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14635 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14636 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14637 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14638 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14639 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14640 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14641 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14642 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14643 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14644 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14645
14646 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14647 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14648 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14649 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14650 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14651 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14652 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14653 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14654 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14655 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14656 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14657 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14658 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14659 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14660 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14661 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14662
14663 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14664 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14665 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14666 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14667 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14668 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14669 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14670 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14671 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14672 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14673 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14674 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14675 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14676 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14677 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14678 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14679
14680 a = safe_add(a, olda);
14681 b = safe_add(b, oldb);
14682 c = safe_add(c, oldc);
14683 d = safe_add(d, oldd);
14684 }
14685 return Array(a, b, c, d);
14686
14687 }
14688
14689 /*
14690 * These functions implement the four basic operations the algorithm uses.
14691 */
14692 function md5_cmn(q, a, b, x, s, t)
14693 {
14694 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14695 }
14696 function md5_ff(a, b, c, d, x, s, t)
14697 {
14698 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14699 }
14700 function md5_gg(a, b, c, d, x, s, t)
14701 {
14702 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14703 }
14704 function md5_hh(a, b, c, d, x, s, t)
14705 {
14706 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14707 }
14708 function md5_ii(a, b, c, d, x, s, t)
14709 {
14710 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14711 }
14712
14713 /*
14714 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14715 * to work around bugs in some JS interpreters.
14716 */
14717 function safe_add(x, y)
14718 {
14719 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14720 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14721 return (msw << 16) | (lsw & 0xFFFF);
14722 }
14723
14724 /*
14725 * Bitwise rotate a 32-bit number to the left.
14726 */
14727 function bit_rol(num, cnt)
14728 {
14729 return (num << cnt) | (num >>> (32 - cnt));
14730 }
14731
14732 module.exports = function md5(buf) {
14733 return helpers.hash(buf, core_md5, 16);
14734 };
14735 },{"./helpers":33}],35:[function(require,module,exports){
14736 arguments[4][12][0].apply(exports,arguments)
14737 },{"dup":12}],36:[function(require,module,exports){
14738 (function (Buffer){
14739 /*
14740 CryptoJS v3.1.2
14741 code.google.com/p/crypto-js
14742 (c) 2009-2013 by Jeff Mott. All rights reserved.
14743 code.google.com/p/crypto-js/wiki/License
14744 */
14745 /** @preserve
14746 (c) 2012 by Cédric Mesnil. All rights reserved.
14747
14748 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14749
14750 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14751 - 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.
14752
14753 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.
14754 */
14755
14756 // constants table
14757 var zl = [
14758 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14759 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14760 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14761 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14762 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14763 ]
14764
14765 var zr = [
14766 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14767 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14768 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14769 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14770 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14771 ]
14772
14773 var sl = [
14774 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14775 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14776 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14777 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14778 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14779 ]
14780
14781 var sr = [
14782 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14783 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14784 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14785 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14786 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14787 ]
14788
14789 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14790 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14791
14792 function bytesToWords (bytes) {
14793 var words = []
14794 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14795 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14796 }
14797 return words
14798 }
14799
14800 function wordsToBytes (words) {
14801 var bytes = []
14802 for (var b = 0; b < words.length * 32; b += 8) {
14803 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14804 }
14805 return bytes
14806 }
14807
14808 function processBlock (H, M, offset) {
14809 // swap endian
14810 for (var i = 0; i < 16; i++) {
14811 var offset_i = offset + i
14812 var M_offset_i = M[offset_i]
14813
14814 // Swap
14815 M[offset_i] = (
14816 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14817 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14818 )
14819 }
14820
14821 // Working variables
14822 var al, bl, cl, dl, el
14823 var ar, br, cr, dr, er
14824
14825 ar = al = H[0]
14826 br = bl = H[1]
14827 cr = cl = H[2]
14828 dr = dl = H[3]
14829 er = el = H[4]
14830
14831 // computation
14832 var t
14833 for (i = 0; i < 80; i += 1) {
14834 t = (al + M[offset + zl[i]]) | 0
14835 if (i < 16) {
14836 t += f1(bl, cl, dl) + hl[0]
14837 } else if (i < 32) {
14838 t += f2(bl, cl, dl) + hl[1]
14839 } else if (i < 48) {
14840 t += f3(bl, cl, dl) + hl[2]
14841 } else if (i < 64) {
14842 t += f4(bl, cl, dl) + hl[3]
14843 } else {// if (i<80) {
14844 t += f5(bl, cl, dl) + hl[4]
14845 }
14846 t = t | 0
14847 t = rotl(t, sl[i])
14848 t = (t + el) | 0
14849 al = el
14850 el = dl
14851 dl = rotl(cl, 10)
14852 cl = bl
14853 bl = t
14854
14855 t = (ar + M[offset + zr[i]]) | 0
14856 if (i < 16) {
14857 t += f5(br, cr, dr) + hr[0]
14858 } else if (i < 32) {
14859 t += f4(br, cr, dr) + hr[1]
14860 } else if (i < 48) {
14861 t += f3(br, cr, dr) + hr[2]
14862 } else if (i < 64) {
14863 t += f2(br, cr, dr) + hr[3]
14864 } else {// if (i<80) {
14865 t += f1(br, cr, dr) + hr[4]
14866 }
14867
14868 t = t | 0
14869 t = rotl(t, sr[i])
14870 t = (t + er) | 0
14871 ar = er
14872 er = dr
14873 dr = rotl(cr, 10)
14874 cr = br
14875 br = t
14876 }
14877
14878 // intermediate hash value
14879 t = (H[1] + cl + dr) | 0
14880 H[1] = (H[2] + dl + er) | 0
14881 H[2] = (H[3] + el + ar) | 0
14882 H[3] = (H[4] + al + br) | 0
14883 H[4] = (H[0] + bl + cr) | 0
14884 H[0] = t
14885 }
14886
14887 function f1 (x, y, z) {
14888 return ((x) ^ (y) ^ (z))
14889 }
14890
14891 function f2 (x, y, z) {
14892 return (((x) & (y)) | ((~x) & (z)))
14893 }
14894
14895 function f3 (x, y, z) {
14896 return (((x) | (~(y))) ^ (z))
14897 }
14898
14899 function f4 (x, y, z) {
14900 return (((x) & (z)) | ((y) & (~(z))))
14901 }
14902
14903 function f5 (x, y, z) {
14904 return ((x) ^ ((y) | (~(z))))
14905 }
14906
14907 function rotl (x, n) {
14908 return (x << n) | (x >>> (32 - n))
14909 }
14910
14911 function ripemd160 (message) {
14912 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14913
14914 if (typeof message === 'string') {
14915 message = new Buffer(message, 'utf8')
14916 }
14917
14918 var m = bytesToWords(message)
14919
14920 var nBitsLeft = message.length * 8
14921 var nBitsTotal = message.length * 8
14922
14923 // Add padding
14924 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14925 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14926 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14927 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14928 )
14929
14930 for (var i = 0; i < m.length; i += 16) {
14931 processBlock(H, m, i)
14932 }
14933
14934 // swap endian
14935 for (i = 0; i < 5; i++) {
14936 // shortcut
14937 var H_i = H[i]
14938
14939 // Swap
14940 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14941 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14942 }
14943
14944 var digestbytes = wordsToBytes(H)
14945 return new Buffer(digestbytes)
14946 }
14947
14948 module.exports = ripemd160
14949
14950 }).call(this,require("buffer").Buffer)
14951 },{"buffer":7}],37:[function(require,module,exports){
14952 (function (Buffer){
14953 // prototype class for hash functions
14954 function Hash (blockSize, finalSize) {
14955 this._block = new Buffer(blockSize)
14956 this._finalSize = finalSize
14957 this._blockSize = blockSize
14958 this._len = 0
14959 this._s = 0
14960 }
14961
14962 Hash.prototype.update = function (data, enc) {
14963 if (typeof data === 'string') {
14964 enc = enc || 'utf8'
14965 data = new Buffer(data, enc)
14966 }
14967
14968 var l = this._len += data.length
14969 var s = this._s || 0
14970 var f = 0
14971 var buffer = this._block
14972
14973 while (s < l) {
14974 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14975 var ch = (t - f)
14976
14977 for (var i = 0; i < ch; i++) {
14978 buffer[(s % this._blockSize) + i] = data[i + f]
14979 }
14980
14981 s += ch
14982 f += ch
14983
14984 if ((s % this._blockSize) === 0) {
14985 this._update(buffer)
14986 }
14987 }
14988 this._s = s
14989
14990 return this
14991 }
14992
14993 Hash.prototype.digest = function (enc) {
14994 // Suppose the length of the message M, in bits, is l
14995 var l = this._len * 8
14996
14997 // Append the bit 1 to the end of the message
14998 this._block[this._len % this._blockSize] = 0x80
14999
15000 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
15001 this._block.fill(0, this._len % this._blockSize + 1)
15002
15003 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
15004 this._update(this._block)
15005 this._block.fill(0)
15006 }
15007
15008 // to this append the block which is equal to the number l written in binary
15009 // TODO: handle case where l is > Math.pow(2, 29)
15010 this._block.writeInt32BE(l, this._blockSize - 4)
15011
15012 var hash = this._update(this._block) || this._hash()
15013
15014 return enc ? hash.toString(enc) : hash
15015 }
15016
15017 Hash.prototype._update = function () {
15018 throw new Error('_update must be implemented by subclass')
15019 }
15020
15021 module.exports = Hash
15022
15023 }).call(this,require("buffer").Buffer)
15024 },{"buffer":7}],38:[function(require,module,exports){
15025 var exports = module.exports = function SHA (algorithm) {
15026 algorithm = algorithm.toLowerCase()
15027
15028 var Algorithm = exports[algorithm]
15029 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15030
15031 return new Algorithm()
15032 }
15033
15034 exports.sha = require('./sha')
15035 exports.sha1 = require('./sha1')
15036 exports.sha224 = require('./sha224')
15037 exports.sha256 = require('./sha256')
15038 exports.sha384 = require('./sha384')
15039 exports.sha512 = require('./sha512')
15040
15041 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15042 (function (Buffer){
15043 /*
15044 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15045 * in FIPS PUB 180-1
15046 * This source code is derived from sha1.js of the same repository.
15047 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15048 * operation was added.
15049 */
15050
15051 var inherits = require('inherits')
15052 var Hash = require('./hash')
15053
15054 var W = new Array(80)
15055
15056 function Sha () {
15057 this.init()
15058 this._w = W
15059
15060 Hash.call(this, 64, 56)
15061 }
15062
15063 inherits(Sha, Hash)
15064
15065 Sha.prototype.init = function () {
15066 this._a = 0x67452301 | 0
15067 this._b = 0xefcdab89 | 0
15068 this._c = 0x98badcfe | 0
15069 this._d = 0x10325476 | 0
15070 this._e = 0xc3d2e1f0 | 0
15071
15072 return this
15073 }
15074
15075 /*
15076 * Bitwise rotate a 32-bit number to the left.
15077 */
15078 function rol (num, cnt) {
15079 return (num << cnt) | (num >>> (32 - cnt))
15080 }
15081
15082 Sha.prototype._update = function (M) {
15083 var W = this._w
15084
15085 var a = this._a
15086 var b = this._b
15087 var c = this._c
15088 var d = this._d
15089 var e = this._e
15090
15091 var j = 0, k
15092
15093 /*
15094 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15095 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15096 */
15097 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15098 function loop (w, f) {
15099 W[j] = w
15100
15101 var t = rol(a, 5) + f + e + w + k
15102
15103 e = d
15104 d = c
15105 c = rol(b, 30)
15106 b = a
15107 a = t
15108 j++
15109 }
15110
15111 k = 1518500249
15112 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15113 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15114 k = 1859775393
15115 while (j < 40) loop(calcW(), b ^ c ^ d)
15116 k = -1894007588
15117 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15118 k = -899497514
15119 while (j < 80) loop(calcW(), b ^ c ^ d)
15120
15121 this._a = (a + this._a) | 0
15122 this._b = (b + this._b) | 0
15123 this._c = (c + this._c) | 0
15124 this._d = (d + this._d) | 0
15125 this._e = (e + this._e) | 0
15126 }
15127
15128 Sha.prototype._hash = function () {
15129 var H = new Buffer(20)
15130
15131 H.writeInt32BE(this._a | 0, 0)
15132 H.writeInt32BE(this._b | 0, 4)
15133 H.writeInt32BE(this._c | 0, 8)
15134 H.writeInt32BE(this._d | 0, 12)
15135 H.writeInt32BE(this._e | 0, 16)
15136
15137 return H
15138 }
15139
15140 module.exports = Sha
15141
15142
15143 }).call(this,require("buffer").Buffer)
15144 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15145 (function (Buffer){
15146 /*
15147 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15148 * in FIPS PUB 180-1
15149 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15150 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15151 * Distributed under the BSD License
15152 * See http://pajhome.org.uk/crypt/md5 for details.
15153 */
15154
15155 var inherits = require('inherits')
15156 var Hash = require('./hash')
15157
15158 var W = new Array(80)
15159
15160 function Sha1 () {
15161 this.init()
15162 this._w = W
15163
15164 Hash.call(this, 64, 56)
15165 }
15166
15167 inherits(Sha1, Hash)
15168
15169 Sha1.prototype.init = function () {
15170 this._a = 0x67452301 | 0
15171 this._b = 0xefcdab89 | 0
15172 this._c = 0x98badcfe | 0
15173 this._d = 0x10325476 | 0
15174 this._e = 0xc3d2e1f0 | 0
15175
15176 return this
15177 }
15178
15179 /*
15180 * Bitwise rotate a 32-bit number to the left.
15181 */
15182 function rol (num, cnt) {
15183 return (num << cnt) | (num >>> (32 - cnt))
15184 }
15185
15186 Sha1.prototype._update = function (M) {
15187 var W = this._w
15188
15189 var a = this._a
15190 var b = this._b
15191 var c = this._c
15192 var d = this._d
15193 var e = this._e
15194
15195 var j = 0, k
15196
15197 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15198 function loop (w, f) {
15199 W[j] = w
15200
15201 var t = rol(a, 5) + f + e + w + k
15202
15203 e = d
15204 d = c
15205 c = rol(b, 30)
15206 b = a
15207 a = t
15208 j++
15209 }
15210
15211 k = 1518500249
15212 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15213 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15214 k = 1859775393
15215 while (j < 40) loop(calcW(), b ^ c ^ d)
15216 k = -1894007588
15217 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15218 k = -899497514
15219 while (j < 80) loop(calcW(), b ^ c ^ d)
15220
15221 this._a = (a + this._a) | 0
15222 this._b = (b + this._b) | 0
15223 this._c = (c + this._c) | 0
15224 this._d = (d + this._d) | 0
15225 this._e = (e + this._e) | 0
15226 }
15227
15228 Sha1.prototype._hash = function () {
15229 var H = new Buffer(20)
15230
15231 H.writeInt32BE(this._a | 0, 0)
15232 H.writeInt32BE(this._b | 0, 4)
15233 H.writeInt32BE(this._c | 0, 8)
15234 H.writeInt32BE(this._d | 0, 12)
15235 H.writeInt32BE(this._e | 0, 16)
15236
15237 return H
15238 }
15239
15240 module.exports = Sha1
15241
15242 }).call(this,require("buffer").Buffer)
15243 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15244 (function (Buffer){
15245 /**
15246 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15247 * in FIPS 180-2
15248 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15249 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15250 *
15251 */
15252
15253 var inherits = require('inherits')
15254 var Sha256 = require('./sha256')
15255 var Hash = require('./hash')
15256
15257 var W = new Array(64)
15258
15259 function Sha224 () {
15260 this.init()
15261
15262 this._w = W // new Array(64)
15263
15264 Hash.call(this, 64, 56)
15265 }
15266
15267 inherits(Sha224, Sha256)
15268
15269 Sha224.prototype.init = function () {
15270 this._a = 0xc1059ed8 | 0
15271 this._b = 0x367cd507 | 0
15272 this._c = 0x3070dd17 | 0
15273 this._d = 0xf70e5939 | 0
15274 this._e = 0xffc00b31 | 0
15275 this._f = 0x68581511 | 0
15276 this._g = 0x64f98fa7 | 0
15277 this._h = 0xbefa4fa4 | 0
15278
15279 return this
15280 }
15281
15282 Sha224.prototype._hash = function () {
15283 var H = new Buffer(28)
15284
15285 H.writeInt32BE(this._a, 0)
15286 H.writeInt32BE(this._b, 4)
15287 H.writeInt32BE(this._c, 8)
15288 H.writeInt32BE(this._d, 12)
15289 H.writeInt32BE(this._e, 16)
15290 H.writeInt32BE(this._f, 20)
15291 H.writeInt32BE(this._g, 24)
15292
15293 return H
15294 }
15295
15296 module.exports = Sha224
15297
15298 }).call(this,require("buffer").Buffer)
15299 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15300 (function (Buffer){
15301 /**
15302 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15303 * in FIPS 180-2
15304 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15305 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15306 *
15307 */
15308
15309 var inherits = require('inherits')
15310 var Hash = require('./hash')
15311
15312 var K = [
15313 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15314 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15315 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15316 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15317 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15318 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15319 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15320 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15321 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15322 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15323 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15324 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15325 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15326 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15327 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15328 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15329 ]
15330
15331 var W = new Array(64)
15332
15333 function Sha256 () {
15334 this.init()
15335
15336 this._w = W // new Array(64)
15337
15338 Hash.call(this, 64, 56)
15339 }
15340
15341 inherits(Sha256, Hash)
15342
15343 Sha256.prototype.init = function () {
15344 this._a = 0x6a09e667 | 0
15345 this._b = 0xbb67ae85 | 0
15346 this._c = 0x3c6ef372 | 0
15347 this._d = 0xa54ff53a | 0
15348 this._e = 0x510e527f | 0
15349 this._f = 0x9b05688c | 0
15350 this._g = 0x1f83d9ab | 0
15351 this._h = 0x5be0cd19 | 0
15352
15353 return this
15354 }
15355
15356 function S (X, n) {
15357 return (X >>> n) | (X << (32 - n))
15358 }
15359
15360 function R (X, n) {
15361 return (X >>> n)
15362 }
15363
15364 function Ch (x, y, z) {
15365 return ((x & y) ^ ((~x) & z))
15366 }
15367
15368 function Maj (x, y, z) {
15369 return ((x & y) ^ (x & z) ^ (y & z))
15370 }
15371
15372 function Sigma0256 (x) {
15373 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15374 }
15375
15376 function Sigma1256 (x) {
15377 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15378 }
15379
15380 function Gamma0256 (x) {
15381 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15382 }
15383
15384 function Gamma1256 (x) {
15385 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15386 }
15387
15388 Sha256.prototype._update = function (M) {
15389 var W = this._w
15390
15391 var a = this._a | 0
15392 var b = this._b | 0
15393 var c = this._c | 0
15394 var d = this._d | 0
15395 var e = this._e | 0
15396 var f = this._f | 0
15397 var g = this._g | 0
15398 var h = this._h | 0
15399
15400 var j = 0
15401
15402 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15403 function loop (w) {
15404 W[j] = w
15405
15406 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15407 var T2 = Sigma0256(a) + Maj(a, b, c)
15408
15409 h = g
15410 g = f
15411 f = e
15412 e = d + T1
15413 d = c
15414 c = b
15415 b = a
15416 a = T1 + T2
15417
15418 j++
15419 }
15420
15421 while (j < 16) loop(M.readInt32BE(j * 4))
15422 while (j < 64) loop(calcW())
15423
15424 this._a = (a + this._a) | 0
15425 this._b = (b + this._b) | 0
15426 this._c = (c + this._c) | 0
15427 this._d = (d + this._d) | 0
15428 this._e = (e + this._e) | 0
15429 this._f = (f + this._f) | 0
15430 this._g = (g + this._g) | 0
15431 this._h = (h + this._h) | 0
15432 }
15433
15434 Sha256.prototype._hash = function () {
15435 var H = new Buffer(32)
15436
15437 H.writeInt32BE(this._a, 0)
15438 H.writeInt32BE(this._b, 4)
15439 H.writeInt32BE(this._c, 8)
15440 H.writeInt32BE(this._d, 12)
15441 H.writeInt32BE(this._e, 16)
15442 H.writeInt32BE(this._f, 20)
15443 H.writeInt32BE(this._g, 24)
15444 H.writeInt32BE(this._h, 28)
15445
15446 return H
15447 }
15448
15449 module.exports = Sha256
15450
15451 }).call(this,require("buffer").Buffer)
15452 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15453 (function (Buffer){
15454 var inherits = require('inherits')
15455 var SHA512 = require('./sha512')
15456 var Hash = require('./hash')
15457
15458 var W = new Array(160)
15459
15460 function Sha384 () {
15461 this.init()
15462 this._w = W
15463
15464 Hash.call(this, 128, 112)
15465 }
15466
15467 inherits(Sha384, SHA512)
15468
15469 Sha384.prototype.init = function () {
15470 this._a = 0xcbbb9d5d | 0
15471 this._b = 0x629a292a | 0
15472 this._c = 0x9159015a | 0
15473 this._d = 0x152fecd8 | 0
15474 this._e = 0x67332667 | 0
15475 this._f = 0x8eb44a87 | 0
15476 this._g = 0xdb0c2e0d | 0
15477 this._h = 0x47b5481d | 0
15478
15479 this._al = 0xc1059ed8 | 0
15480 this._bl = 0x367cd507 | 0
15481 this._cl = 0x3070dd17 | 0
15482 this._dl = 0xf70e5939 | 0
15483 this._el = 0xffc00b31 | 0
15484 this._fl = 0x68581511 | 0
15485 this._gl = 0x64f98fa7 | 0
15486 this._hl = 0xbefa4fa4 | 0
15487
15488 return this
15489 }
15490
15491 Sha384.prototype._hash = function () {
15492 var H = new Buffer(48)
15493
15494 function writeInt64BE (h, l, offset) {
15495 H.writeInt32BE(h, offset)
15496 H.writeInt32BE(l, offset + 4)
15497 }
15498
15499 writeInt64BE(this._a, this._al, 0)
15500 writeInt64BE(this._b, this._bl, 8)
15501 writeInt64BE(this._c, this._cl, 16)
15502 writeInt64BE(this._d, this._dl, 24)
15503 writeInt64BE(this._e, this._el, 32)
15504 writeInt64BE(this._f, this._fl, 40)
15505
15506 return H
15507 }
15508
15509 module.exports = Sha384
15510
15511 }).call(this,require("buffer").Buffer)
15512 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15513 (function (Buffer){
15514 var inherits = require('inherits')
15515 var Hash = require('./hash')
15516
15517 var K = [
15518 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15519 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15520 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15521 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15522 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15523 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15524 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15525 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15526 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15527 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15528 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15529 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15530 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15531 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15532 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15533 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15534 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15535 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15536 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15537 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15538 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15539 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15540 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15541 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15542 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15543 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15544 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15545 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15546 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15547 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15548 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15549 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15550 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15551 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15552 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15553 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15554 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15555 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15556 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15557 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15558 ]
15559
15560 var W = new Array(160)
15561
15562 function Sha512 () {
15563 this.init()
15564 this._w = W
15565
15566 Hash.call(this, 128, 112)
15567 }
15568
15569 inherits(Sha512, Hash)
15570
15571 Sha512.prototype.init = function () {
15572 this._a = 0x6a09e667 | 0
15573 this._b = 0xbb67ae85 | 0
15574 this._c = 0x3c6ef372 | 0
15575 this._d = 0xa54ff53a | 0
15576 this._e = 0x510e527f | 0
15577 this._f = 0x9b05688c | 0
15578 this._g = 0x1f83d9ab | 0
15579 this._h = 0x5be0cd19 | 0
15580
15581 this._al = 0xf3bcc908 | 0
15582 this._bl = 0x84caa73b | 0
15583 this._cl = 0xfe94f82b | 0
15584 this._dl = 0x5f1d36f1 | 0
15585 this._el = 0xade682d1 | 0
15586 this._fl = 0x2b3e6c1f | 0
15587 this._gl = 0xfb41bd6b | 0
15588 this._hl = 0x137e2179 | 0
15589
15590 return this
15591 }
15592
15593 function S (X, Xl, n) {
15594 return (X >>> n) | (Xl << (32 - n))
15595 }
15596
15597 function Ch (x, y, z) {
15598 return ((x & y) ^ ((~x) & z))
15599 }
15600
15601 function Maj (x, y, z) {
15602 return ((x & y) ^ (x & z) ^ (y & z))
15603 }
15604
15605 Sha512.prototype._update = function (M) {
15606 var W = this._w
15607
15608 var a = this._a | 0
15609 var b = this._b | 0
15610 var c = this._c | 0
15611 var d = this._d | 0
15612 var e = this._e | 0
15613 var f = this._f | 0
15614 var g = this._g | 0
15615 var h = this._h | 0
15616
15617 var al = this._al | 0
15618 var bl = this._bl | 0
15619 var cl = this._cl | 0
15620 var dl = this._dl | 0
15621 var el = this._el | 0
15622 var fl = this._fl | 0
15623 var gl = this._gl | 0
15624 var hl = this._hl | 0
15625
15626 var i = 0, j = 0
15627 var Wi, Wil
15628 function calcW () {
15629 var x = W[j - 15 * 2]
15630 var xl = W[j - 15 * 2 + 1]
15631 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15632 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15633
15634 x = W[j - 2 * 2]
15635 xl = W[j - 2 * 2 + 1]
15636 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15637 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15638
15639 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15640 var Wi7 = W[j - 7 * 2]
15641 var Wi7l = W[j - 7 * 2 + 1]
15642
15643 var Wi16 = W[j - 16 * 2]
15644 var Wi16l = W[j - 16 * 2 + 1]
15645
15646 Wil = gamma0l + Wi7l
15647 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15648 Wil = Wil + gamma1l
15649 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15650 Wil = Wil + Wi16l
15651 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15652 }
15653
15654 function loop () {
15655 W[j] = Wi
15656 W[j + 1] = Wil
15657
15658 var maj = Maj(a, b, c)
15659 var majl = Maj(al, bl, cl)
15660
15661 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15662 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15663 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15664 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15665
15666 // t1 = h + sigma1 + ch + K[i] + W[i]
15667 var Ki = K[j]
15668 var Kil = K[j + 1]
15669
15670 var ch = Ch(e, f, g)
15671 var chl = Ch(el, fl, gl)
15672
15673 var t1l = hl + sigma1l
15674 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15675 t1l = t1l + chl
15676 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15677 t1l = t1l + Kil
15678 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15679 t1l = t1l + Wil
15680 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15681
15682 // t2 = sigma0 + maj
15683 var t2l = sigma0l + majl
15684 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15685
15686 h = g
15687 hl = gl
15688 g = f
15689 gl = fl
15690 f = e
15691 fl = el
15692 el = (dl + t1l) | 0
15693 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15694 d = c
15695 dl = cl
15696 c = b
15697 cl = bl
15698 b = a
15699 bl = al
15700 al = (t1l + t2l) | 0
15701 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15702
15703 i++
15704 j += 2
15705 }
15706
15707 while (i < 16) {
15708 Wi = M.readInt32BE(j * 4)
15709 Wil = M.readInt32BE(j * 4 + 4)
15710
15711 loop()
15712 }
15713
15714 while (i < 80) {
15715 calcW()
15716 loop()
15717 }
15718
15719 this._al = (this._al + al) | 0
15720 this._bl = (this._bl + bl) | 0
15721 this._cl = (this._cl + cl) | 0
15722 this._dl = (this._dl + dl) | 0
15723 this._el = (this._el + el) | 0
15724 this._fl = (this._fl + fl) | 0
15725 this._gl = (this._gl + gl) | 0
15726 this._hl = (this._hl + hl) | 0
15727
15728 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15729 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15730 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15731 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15732 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15733 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15734 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15735 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15736 }
15737
15738 Sha512.prototype._hash = function () {
15739 var H = new Buffer(64)
15740
15741 function writeInt64BE (h, l, offset) {
15742 H.writeInt32BE(h, offset)
15743 H.writeInt32BE(l, offset + 4)
15744 }
15745
15746 writeInt64BE(this._a, this._al, 0)
15747 writeInt64BE(this._b, this._bl, 8)
15748 writeInt64BE(this._c, this._cl, 16)
15749 writeInt64BE(this._d, this._dl, 24)
15750 writeInt64BE(this._e, this._el, 32)
15751 writeInt64BE(this._f, this._fl, 40)
15752 writeInt64BE(this._g, this._gl, 48)
15753 writeInt64BE(this._h, this._hl, 56)
15754
15755 return H
15756 }
15757
15758 module.exports = Sha512
15759
15760 }).call(this,require("buffer").Buffer)
15761 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15762 (function (Buffer){
15763 'use strict';
15764 var createHash = require('create-hash/browser');
15765 var inherits = require('inherits')
15766
15767 var Transform = require('stream').Transform
15768
15769 var ZEROS = new Buffer(128)
15770 ZEROS.fill(0)
15771
15772 function Hmac(alg, key) {
15773 Transform.call(this)
15774
15775 if (typeof key === 'string') {
15776 key = new Buffer(key)
15777 }
15778
15779 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15780
15781 this._alg = alg
15782 this._key = key
15783
15784 if (key.length > blocksize) {
15785 key = createHash(alg).update(key).digest()
15786
15787 } else if (key.length < blocksize) {
15788 key = Buffer.concat([key, ZEROS], blocksize)
15789 }
15790
15791 var ipad = this._ipad = new Buffer(blocksize)
15792 var opad = this._opad = new Buffer(blocksize)
15793
15794 for (var i = 0; i < blocksize; i++) {
15795 ipad[i] = key[i] ^ 0x36
15796 opad[i] = key[i] ^ 0x5C
15797 }
15798
15799 this._hash = createHash(alg).update(ipad)
15800 }
15801
15802 inherits(Hmac, Transform)
15803
15804 Hmac.prototype.update = function (data, enc) {
15805 this._hash.update(data, enc)
15806
15807 return this
15808 }
15809
15810 Hmac.prototype._transform = function (data, _, next) {
15811 this._hash.update(data)
15812
15813 next()
15814 }
15815
15816 Hmac.prototype._flush = function (next) {
15817 this.push(this.digest())
15818
15819 next()
15820 }
15821
15822 Hmac.prototype.digest = function (enc) {
15823 var h = this._hash.digest()
15824
15825 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15826 }
15827
15828 module.exports = function createHmac(alg, key) {
15829 return new Hmac(alg, key)
15830 }
15831
15832 }).call(this,require("buffer").Buffer)
15833 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15834 arguments[4][12][0].apply(exports,arguments)
15835 },{"dup":12}],47:[function(require,module,exports){
15836 var assert = require('assert')
15837 var BigInteger = require('bigi')
15838
15839 var Point = require('./point')
15840
15841 function Curve(p, a, b, Gx, Gy, n, h) {
15842 this.p = p
15843 this.a = a
15844 this.b = b
15845 this.G = Point.fromAffine(this, Gx, Gy)
15846 this.n = n
15847 this.h = h
15848
15849 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15850
15851 // result caching
15852 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15853 }
15854
15855 Curve.prototype.pointFromX = function(isOdd, x) {
15856 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15857 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15858
15859 var y = beta
15860 if (beta.isEven() ^ !isOdd) {
15861 y = this.p.subtract(y) // -y % p
15862 }
15863
15864 return Point.fromAffine(this, x, y)
15865 }
15866
15867 Curve.prototype.isInfinity = function(Q) {
15868 if (Q === this.infinity) return true
15869
15870 return Q.z.signum() === 0 && Q.y.signum() !== 0
15871 }
15872
15873 Curve.prototype.isOnCurve = function(Q) {
15874 if (this.isInfinity(Q)) return true
15875
15876 var x = Q.affineX
15877 var y = Q.affineY
15878 var a = this.a
15879 var b = this.b
15880 var p = this.p
15881
15882 // Check that xQ and yQ are integers in the interval [0, p - 1]
15883 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15884 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15885
15886 // and check that y^2 = x^3 + ax + b (mod p)
15887 var lhs = y.square().mod(p)
15888 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15889 return lhs.equals(rhs)
15890 }
15891
15892 /**
15893 * Validate an elliptic curve point.
15894 *
15895 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15896 */
15897 Curve.prototype.validate = function(Q) {
15898 // Check Q != O
15899 assert(!this.isInfinity(Q), 'Point is at infinity')
15900 assert(this.isOnCurve(Q), 'Point is not on the curve')
15901
15902 // Check nQ = O (where Q is a scalar multiple of G)
15903 var nQ = Q.multiply(this.n)
15904 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15905
15906 return true
15907 }
15908
15909 module.exports = Curve
15910
15911 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15912 module.exports={
15913 "secp128r1": {
15914 "p": "fffffffdffffffffffffffffffffffff",
15915 "a": "fffffffdfffffffffffffffffffffffc",
15916 "b": "e87579c11079f43dd824993c2cee5ed3",
15917 "n": "fffffffe0000000075a30d1b9038a115",
15918 "h": "01",
15919 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15920 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15921 },
15922 "secp160k1": {
15923 "p": "fffffffffffffffffffffffffffffffeffffac73",
15924 "a": "00",
15925 "b": "07",
15926 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15927 "h": "01",
15928 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15929 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15930 },
15931 "secp160r1": {
15932 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15933 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15934 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15935 "n": "0100000000000000000001f4c8f927aed3ca752257",
15936 "h": "01",
15937 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15938 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15939 },
15940 "secp192k1": {
15941 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15942 "a": "00",
15943 "b": "03",
15944 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15945 "h": "01",
15946 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15947 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15948 },
15949 "secp192r1": {
15950 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15951 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15952 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15953 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15954 "h": "01",
15955 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15956 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15957 },
15958 "secp256k1": {
15959 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15960 "a": "00",
15961 "b": "07",
15962 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15963 "h": "01",
15964 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15965 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15966 },
15967 "secp256r1": {
15968 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15969 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15970 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15971 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15972 "h": "01",
15973 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15974 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15975 }
15976 }
15977
15978 },{}],49:[function(require,module,exports){
15979 var Point = require('./point')
15980 var Curve = require('./curve')
15981
15982 var getCurveByName = require('./names')
15983
15984 module.exports = {
15985 Curve: Curve,
15986 Point: Point,
15987 getCurveByName: getCurveByName
15988 }
15989
15990 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15991 var BigInteger = require('bigi')
15992
15993 var curves = require('./curves')
15994 var Curve = require('./curve')
15995
15996 function getCurveByName(name) {
15997 var curve = curves[name]
15998 if (!curve) return null
15999
16000 var p = new BigInteger(curve.p, 16)
16001 var a = new BigInteger(curve.a, 16)
16002 var b = new BigInteger(curve.b, 16)
16003 var n = new BigInteger(curve.n, 16)
16004 var h = new BigInteger(curve.h, 16)
16005 var Gx = new BigInteger(curve.Gx, 16)
16006 var Gy = new BigInteger(curve.Gy, 16)
16007
16008 return new Curve(p, a, b, Gx, Gy, n, h)
16009 }
16010
16011 module.exports = getCurveByName
16012
16013 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16014 (function (Buffer){
16015 var assert = require('assert')
16016 var BigInteger = require('bigi')
16017
16018 var THREE = BigInteger.valueOf(3)
16019
16020 function Point(curve, x, y, z) {
16021 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16022
16023 this.curve = curve
16024 this.x = x
16025 this.y = y
16026 this.z = z
16027 this._zInv = null
16028
16029 this.compressed = true
16030 }
16031
16032 Object.defineProperty(Point.prototype, 'zInv', {
16033 get: function() {
16034 if (this._zInv === null) {
16035 this._zInv = this.z.modInverse(this.curve.p)
16036 }
16037
16038 return this._zInv
16039 }
16040 })
16041
16042 Object.defineProperty(Point.prototype, 'affineX', {
16043 get: function() {
16044 return this.x.multiply(this.zInv).mod(this.curve.p)
16045 }
16046 })
16047
16048 Object.defineProperty(Point.prototype, 'affineY', {
16049 get: function() {
16050 return this.y.multiply(this.zInv).mod(this.curve.p)
16051 }
16052 })
16053
16054 Point.fromAffine = function(curve, x, y) {
16055 return new Point(curve, x, y, BigInteger.ONE)
16056 }
16057
16058 Point.prototype.equals = function(other) {
16059 if (other === this) return true
16060 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16061 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16062
16063 // u = Y2 * Z1 - Y1 * Z2
16064 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16065
16066 if (u.signum() !== 0) return false
16067
16068 // v = X2 * Z1 - X1 * Z2
16069 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16070
16071 return v.signum() === 0
16072 }
16073
16074 Point.prototype.negate = function() {
16075 var y = this.curve.p.subtract(this.y)
16076
16077 return new Point(this.curve, this.x, y, this.z)
16078 }
16079
16080 Point.prototype.add = function(b) {
16081 if (this.curve.isInfinity(this)) return b
16082 if (this.curve.isInfinity(b)) return this
16083
16084 var x1 = this.x
16085 var y1 = this.y
16086 var x2 = b.x
16087 var y2 = b.y
16088
16089 // u = Y2 * Z1 - Y1 * Z2
16090 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16091 // v = X2 * Z1 - X1 * Z2
16092 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16093
16094 if (v.signum() === 0) {
16095 if (u.signum() === 0) {
16096 return this.twice() // this == b, so double
16097 }
16098
16099 return this.curve.infinity // this = -b, so infinity
16100 }
16101
16102 var v2 = v.square()
16103 var v3 = v2.multiply(v)
16104 var x1v2 = x1.multiply(v2)
16105 var zu2 = u.square().multiply(this.z)
16106
16107 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16108 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16109 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16110 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)
16111 // z3 = v^3 * z1 * z2
16112 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16113
16114 return new Point(this.curve, x3, y3, z3)
16115 }
16116
16117 Point.prototype.twice = function() {
16118 if (this.curve.isInfinity(this)) return this
16119 if (this.y.signum() === 0) return this.curve.infinity
16120
16121 var x1 = this.x
16122 var y1 = this.y
16123
16124 var y1z1 = y1.multiply(this.z)
16125 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16126 var a = this.curve.a
16127
16128 // w = 3 * x1^2 + a * z1^2
16129 var w = x1.square().multiply(THREE)
16130
16131 if (a.signum() !== 0) {
16132 w = w.add(this.z.square().multiply(a))
16133 }
16134
16135 w = w.mod(this.curve.p)
16136 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16137 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16138 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16139 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16140 // z3 = 8 * (y1 * z1)^3
16141 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16142
16143 return new Point(this.curve, x3, y3, z3)
16144 }
16145
16146 // Simple NAF (Non-Adjacent Form) multiplication algorithm
16147 // TODO: modularize the multiplication algorithm
16148 Point.prototype.multiply = function(k) {
16149 if (this.curve.isInfinity(this)) return this
16150 if (k.signum() === 0) return this.curve.infinity
16151
16152 var e = k
16153 var h = e.multiply(THREE)
16154
16155 var neg = this.negate()
16156 var R = this
16157
16158 for (var i = h.bitLength() - 2; i > 0; --i) {
16159 R = R.twice()
16160
16161 var hBit = h.testBit(i)
16162 var eBit = e.testBit(i)
16163
16164 if (hBit != eBit) {
16165 R = R.add(hBit ? this : neg)
16166 }
16167 }
16168
16169 return R
16170 }
16171
16172 // Compute this*j + x*k (simultaneous multiplication)
16173 Point.prototype.multiplyTwo = function(j, x, k) {
16174 var i
16175
16176 if (j.bitLength() > k.bitLength())
16177 i = j.bitLength() - 1
16178 else
16179 i = k.bitLength() - 1
16180
16181 var R = this.curve.infinity
16182 var both = this.add(x)
16183
16184 while (i >= 0) {
16185 R = R.twice()
16186
16187 var jBit = j.testBit(i)
16188 var kBit = k.testBit(i)
16189
16190 if (jBit) {
16191 if (kBit) {
16192 R = R.add(both)
16193
16194 } else {
16195 R = R.add(this)
16196 }
16197
16198 } else {
16199 if (kBit) {
16200 R = R.add(x)
16201 }
16202 }
16203 --i
16204 }
16205
16206 return R
16207 }
16208
16209 Point.prototype.getEncoded = function(compressed) {
16210 if (compressed == undefined) compressed = this.compressed
16211 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16212
16213 var x = this.affineX
16214 var y = this.affineY
16215
16216 var buffer
16217
16218 // Determine size of q in bytes
16219 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16220
16221 // 0x02/0x03 | X
16222 if (compressed) {
16223 buffer = new Buffer(1 + byteLength)
16224 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16225
16226 // 0x04 | X | Y
16227 } else {
16228 buffer = new Buffer(1 + byteLength + byteLength)
16229 buffer.writeUInt8(0x04, 0)
16230
16231 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16232 }
16233
16234 x.toBuffer(byteLength).copy(buffer, 1)
16235
16236 return buffer
16237 }
16238
16239 Point.decodeFrom = function(curve, buffer) {
16240 var type = buffer.readUInt8(0)
16241 var compressed = (type !== 4)
16242
16243 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16244 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16245
16246 var Q
16247 if (compressed) {
16248 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16249 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16250
16251 var isOdd = (type === 0x03)
16252 Q = curve.pointFromX(isOdd, x)
16253
16254 } else {
16255 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16256
16257 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16258 Q = Point.fromAffine(curve, x, y)
16259 }
16260
16261 Q.compressed = compressed
16262 return Q
16263 }
16264
16265 Point.prototype.toString = function () {
16266 if (this.curve.isInfinity(this)) return '(INFINITY)'
16267
16268 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16269 }
16270
16271 module.exports = Point
16272
16273 }).call(this,require("buffer").Buffer)
16274 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16275 (function (process,global,Buffer){
16276 'use strict';
16277
16278 var crypto = global.crypto || global.msCrypto
16279 if(crypto && crypto.getRandomValues) {
16280 module.exports = randomBytes;
16281 } else {
16282 module.exports = oldBrowser;
16283 }
16284 function randomBytes(size, cb) {
16285 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16286 /* This will not work in older browsers.
16287 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16288 */
16289
16290 crypto.getRandomValues(bytes);
16291 if (typeof cb === 'function') {
16292 return process.nextTick(function () {
16293 cb(null, bytes);
16294 });
16295 }
16296 return bytes;
16297 }
16298 function oldBrowser() {
16299 throw new Error(
16300 'secure random number generation not supported by this browser\n'+
16301 'use chrome, FireFox or Internet Explorer 11'
16302 )
16303 }
16304
16305 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16306 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
16307 (function (Buffer){
16308 'use strict';
16309
16310 function getFunctionName(fn) {
16311 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16312 }
16313
16314 function getTypeTypeName(type) {
16315 if (nativeTypes.Function(type)) {
16316 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16317 }
16318 if (nativeTypes.Object(type)) return JSON.stringify(type);
16319
16320 return type;
16321 }
16322
16323 function getValueTypeName(value) {
16324 if (nativeTypes.Null(value)) return '';
16325
16326 return getFunctionName(value.constructor);
16327 }
16328
16329 function tfErrorString(type, value) {
16330 var typeTypeName = getTypeTypeName(type);
16331 var valueTypeName = getValueTypeName(value);
16332
16333 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16334 }
16335
16336 function tfPropertyErrorString(type, name, value) {
16337 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16338 }
16339
16340 var nativeTypes = {
16341 Array: (function (_Array) {
16342 function Array(_x) {
16343 return _Array.apply(this, arguments);
16344 }
16345
16346 Array.toString = function () {
16347 return _Array.toString();
16348 };
16349
16350 return Array;
16351 })(function (value) {
16352 return value !== null && value !== undefined && value.constructor === Array;
16353 }),
16354 Boolean: function Boolean(value) {
16355 return typeof value === 'boolean';
16356 },
16357 Buffer: (function (_Buffer) {
16358 function Buffer(_x2) {
16359 return _Buffer.apply(this, arguments);
16360 }
16361
16362 Buffer.toString = function () {
16363 return _Buffer.toString();
16364 };
16365
16366 return Buffer;
16367 })(function (value) {
16368 return Buffer.isBuffer(value);
16369 }),
16370 Function: function Function(value) {
16371 return typeof value === 'function';
16372 },
16373 Null: function Null(value) {
16374 return value === undefined || value === null;
16375 },
16376 Number: function Number(value) {
16377 return typeof value === 'number';
16378 },
16379 Object: function Object(value) {
16380 return typeof value === 'object';
16381 },
16382 String: function String(value) {
16383 return typeof value === 'string';
16384 },
16385 '': function _() {
16386 return true;
16387 }
16388 };
16389
16390 function tJSON(type) {
16391 return type && type.toJSON ? type.toJSON() : type;
16392 }
16393
16394 function sJSON(type) {
16395 var json = tJSON(type);
16396 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16397 }
16398
16399 var otherTypes = {
16400 arrayOf: function arrayOf(type) {
16401 function arrayOf(value, strict) {
16402 try {
16403 return nativeTypes.Array(value) && value.every(function (x) {
16404 return typeforce(type, x, strict);
16405 });
16406 } catch (e) {
16407 return false;
16408 }
16409 }
16410 arrayOf.toJSON = function () {
16411 return [tJSON(type)];
16412 };
16413
16414 return arrayOf;
16415 },
16416
16417 maybe: function maybe(type) {
16418 function maybe(value, strict) {
16419 return nativeTypes.Null(value) || typeforce(type, value, strict);
16420 }
16421 maybe.toJSON = function () {
16422 return '?' + sJSON(type);
16423 };
16424
16425 return maybe;
16426 },
16427
16428 object: function object(type) {
16429 function object(value, strict) {
16430 typeforce(nativeTypes.Object, value, strict);
16431
16432 var propertyName, propertyType, propertyValue;
16433
16434 try {
16435 for (propertyName in type) {
16436 propertyType = type[propertyName];
16437 propertyValue = value[propertyName];
16438
16439 typeforce(propertyType, propertyValue, strict);
16440 }
16441 } catch (e) {
16442 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16443 }
16444
16445 if (strict) {
16446 for (propertyName in value) {
16447 if (type[propertyName]) continue;
16448
16449 throw new TypeError('Unexpected property "' + propertyName + '"');
16450 }
16451 }
16452
16453 return true;
16454 }
16455 object.toJSON = function () {
16456 return type;
16457 };
16458
16459 return object;
16460 },
16461
16462 oneOf: function oneOf() {
16463 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16464 types[_key] = arguments[_key];
16465 }
16466
16467 function oneOf(value, strict) {
16468 return types.some(function (type) {
16469 try {
16470 return typeforce(type, value, strict);
16471 } catch (e) {
16472 return false;
16473 }
16474 });
16475 }
16476 oneOf.toJSON = function () {
16477 return types.map(sJSON).join('|');
16478 };
16479
16480 return oneOf;
16481 },
16482
16483 quacksLike: function quacksLike(type) {
16484 function quacksLike(value, strict) {
16485 return type === getValueTypeName(value);
16486 }
16487 quacksLike.toJSON = function () {
16488 return type;
16489 };
16490
16491 return quacksLike;
16492 },
16493
16494 tuple: function tuple() {
16495 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16496 types[_key2] = arguments[_key2];
16497 }
16498
16499 function tuple(value, strict) {
16500 return types.every(function (type, i) {
16501 return typeforce(type, value[i], strict);
16502 });
16503 }
16504 tuple.toJSON = function () {
16505 return '(' + types.map(sJSON).join(', ') + ')';
16506 };
16507
16508 return tuple;
16509 },
16510
16511 value: function value(expected) {
16512 function value(actual) {
16513 return actual === expected;
16514 }
16515 value.toJSON = function () {
16516 return expected;
16517 };
16518
16519 return value;
16520 }
16521 };
16522
16523 function compile(type) {
16524 if (nativeTypes.String(type)) {
16525 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16526
16527 return nativeTypes[type] || otherTypes.quacksLike(type);
16528 } else if (type && nativeTypes.Object(type)) {
16529 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16530
16531 var compiled = {};
16532
16533 for (var propertyName in type) {
16534 compiled[propertyName] = compile(type[propertyName]);
16535 }
16536
16537 return otherTypes.object(compiled);
16538 } else if (nativeTypes.Function(type)) {
16539 return type;
16540 }
16541
16542 return otherTypes.value(type);
16543 }
16544
16545 function typeforce(_x3, _x4, _x5) {
16546 var _again = true;
16547
16548 _function: while (_again) {
16549 var type = _x3,
16550 value = _x4,
16551 strict = _x5;
16552 _again = false;
16553
16554 if (nativeTypes.Function(type)) {
16555 if (type(value, strict)) return true;
16556
16557 throw new TypeError(tfErrorString(type, value));
16558 }
16559
16560 // JIT
16561 _x3 = compile(type);
16562 _x4 = value;
16563 _x5 = strict;
16564 _again = true;
16565 continue _function;
16566 }
16567 }
16568
16569 // assign all types to typeforce function
16570 var typeName;
16571 Object.keys(nativeTypes).forEach(function (typeName) {
16572 var nativeType = nativeTypes[typeName];
16573 nativeType.toJSON = function () {
16574 return typeName;
16575 };
16576
16577 typeforce[typeName] = nativeType;
16578 });
16579
16580 for (typeName in otherTypes) {
16581 typeforce[typeName] = otherTypes[typeName];
16582 }
16583
16584 module.exports = typeforce;
16585 module.exports.compile = compile;
16586 }).call(this,require("buffer").Buffer)
16587 },{"buffer":7}],54:[function(require,module,exports){
16588 (function (Buffer){
16589 var assert = require('assert')
16590 var base58check = require('bs58check')
16591 var typeForce = require('typeforce')
16592 var networks = require('./networks')
16593 var scripts = require('./scripts')
16594
16595 function findScriptTypeByVersion (version) {
16596 for (var networkName in networks) {
16597 var network = networks[networkName]
16598
16599 if (version === network.pubKeyHash) return 'pubkeyhash'
16600 if (version === network.scriptHash) return 'scripthash'
16601 }
16602 }
16603
16604 function Address (hash, version) {
16605 typeForce('Buffer', hash)
16606
16607 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16608 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16609
16610 this.hash = hash
16611 this.version = version
16612 }
16613
16614 Address.fromBase58Check = function (string) {
16615 var payload = base58check.decode(string)
16616 var version = payload.readUInt8(0)
16617 var hash = payload.slice(1)
16618
16619 return new Address(hash, version)
16620 }
16621
16622 Address.fromOutputScript = function (script, network) {
16623 network = network || networks.bitcoin
16624
16625 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16626 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16627
16628 assert(false, script.toASM() + ' has no matching Address')
16629 }
16630
16631 Address.prototype.toBase58Check = function () {
16632 var payload = new Buffer(21)
16633 payload.writeUInt8(this.version, 0)
16634 this.hash.copy(payload, 1)
16635
16636 return base58check.encode(payload)
16637 }
16638
16639 Address.prototype.toOutputScript = function () {
16640 var scriptType = findScriptTypeByVersion(this.version)
16641
16642 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16643 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16644
16645 assert(false, this.toString() + ' has no matching Script')
16646 }
16647
16648 Address.prototype.toString = Address.prototype.toBase58Check
16649
16650 module.exports = Address
16651
16652 }).call(this,require("buffer").Buffer)
16653 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16654 var bs58check = require('bs58check')
16655
16656 function decode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.decode.apply(undefined, arguments)
16660 }
16661
16662 function encode () {
16663 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16664
16665 return bs58check.encode.apply(undefined, arguments)
16666 }
16667
16668 module.exports = {
16669 decode: decode,
16670 encode: encode
16671 }
16672
16673 },{"bs58check":31}],56:[function(require,module,exports){
16674 (function (Buffer){
16675 var assert = require('assert')
16676 var bufferutils = require('./bufferutils')
16677 var crypto = require('./crypto')
16678
16679 var Transaction = require('./transaction')
16680
16681 function Block () {
16682 this.version = 1
16683 this.prevHash = null
16684 this.merkleRoot = null
16685 this.timestamp = 0
16686 this.bits = 0
16687 this.nonce = 0
16688 }
16689
16690 Block.fromBuffer = function (buffer) {
16691 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16692
16693 var offset = 0
16694 function readSlice (n) {
16695 offset += n
16696 return buffer.slice(offset - n, offset)
16697 }
16698
16699 function readUInt32 () {
16700 var i = buffer.readUInt32LE(offset)
16701 offset += 4
16702 return i
16703 }
16704
16705 var block = new Block()
16706 block.version = readUInt32()
16707 block.prevHash = readSlice(32)
16708 block.merkleRoot = readSlice(32)
16709 block.timestamp = readUInt32()
16710 block.bits = readUInt32()
16711 block.nonce = readUInt32()
16712
16713 if (buffer.length === 80) return block
16714
16715 function readVarInt () {
16716 var vi = bufferutils.readVarInt(buffer, offset)
16717 offset += vi.size
16718 return vi.number
16719 }
16720
16721 // FIXME: poor performance
16722 function readTransaction () {
16723 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16724
16725 offset += tx.toBuffer().length
16726 return tx
16727 }
16728
16729 var nTransactions = readVarInt()
16730 block.transactions = []
16731
16732 for (var i = 0; i < nTransactions; ++i) {
16733 var tx = readTransaction()
16734 block.transactions.push(tx)
16735 }
16736
16737 return block
16738 }
16739
16740 Block.fromHex = function (hex) {
16741 return Block.fromBuffer(new Buffer(hex, 'hex'))
16742 }
16743
16744 Block.prototype.getHash = function () {
16745 return crypto.hash256(this.toBuffer(true))
16746 }
16747
16748 Block.prototype.getId = function () {
16749 return bufferutils.reverse(this.getHash()).toString('hex')
16750 }
16751
16752 Block.prototype.getUTCDate = function () {
16753 var date = new Date(0) // epoch
16754 date.setUTCSeconds(this.timestamp)
16755
16756 return date
16757 }
16758
16759 Block.prototype.toBuffer = function (headersOnly) {
16760 var buffer = new Buffer(80)
16761
16762 var offset = 0
16763 function writeSlice (slice) {
16764 slice.copy(buffer, offset)
16765 offset += slice.length
16766 }
16767
16768 function writeUInt32 (i) {
16769 buffer.writeUInt32LE(i, offset)
16770 offset += 4
16771 }
16772
16773 writeUInt32(this.version)
16774 writeSlice(this.prevHash)
16775 writeSlice(this.merkleRoot)
16776 writeUInt32(this.timestamp)
16777 writeUInt32(this.bits)
16778 writeUInt32(this.nonce)
16779
16780 if (headersOnly || !this.transactions) return buffer
16781
16782 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16783 var txBuffers = this.transactions.map(function (tx) {
16784 return tx.toBuffer()
16785 })
16786
16787 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16788 }
16789
16790 Block.prototype.toHex = function (headersOnly) {
16791 return this.toBuffer(headersOnly).toString('hex')
16792 }
16793
16794 module.exports = Block
16795
16796 }).call(this,require("buffer").Buffer)
16797 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16798 (function (Buffer){
16799 var assert = require('assert')
16800 var opcodes = require('./opcodes')
16801
16802 // https://github.com/feross/buffer/blob/master/index.js#L1127
16803 function verifuint (value, max) {
16804 assert(typeof value === 'number', 'cannot write a non-number as a number')
16805 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16806 assert(value <= max, 'value is larger than maximum value for type')
16807 assert(Math.floor(value) === value, 'value has a fractional component')
16808 }
16809
16810 function pushDataSize (i) {
16811 return i < opcodes.OP_PUSHDATA1 ? 1
16812 : i < 0xff ? 2
16813 : i < 0xffff ? 3
16814 : 5
16815 }
16816
16817 function readPushDataInt (buffer, offset) {
16818 var opcode = buffer.readUInt8(offset)
16819 var number, size
16820
16821 // ~6 bit
16822 if (opcode < opcodes.OP_PUSHDATA1) {
16823 number = opcode
16824 size = 1
16825
16826 // 8 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA1) {
16828 if (offset + 2 > buffer.length) return null
16829 number = buffer.readUInt8(offset + 1)
16830 size = 2
16831
16832 // 16 bit
16833 } else if (opcode === opcodes.OP_PUSHDATA2) {
16834 if (offset + 3 > buffer.length) return null
16835 number = buffer.readUInt16LE(offset + 1)
16836 size = 3
16837
16838 // 32 bit
16839 } else {
16840 if (offset + 5 > buffer.length) return null
16841 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16842
16843 number = buffer.readUInt32LE(offset + 1)
16844 size = 5
16845 }
16846
16847 return {
16848 opcode: opcode,
16849 number: number,
16850 size: size
16851 }
16852 }
16853
16854 function readUInt64LE (buffer, offset) {
16855 var a = buffer.readUInt32LE(offset)
16856 var b = buffer.readUInt32LE(offset + 4)
16857 b *= 0x100000000
16858
16859 verifuint(b + a, 0x001fffffffffffff)
16860
16861 return b + a
16862 }
16863
16864 function readVarInt (buffer, offset) {
16865 var t = buffer.readUInt8(offset)
16866 var number, size
16867
16868 // 8 bit
16869 if (t < 253) {
16870 number = t
16871 size = 1
16872
16873 // 16 bit
16874 } else if (t < 254) {
16875 number = buffer.readUInt16LE(offset + 1)
16876 size = 3
16877
16878 // 32 bit
16879 } else if (t < 255) {
16880 number = buffer.readUInt32LE(offset + 1)
16881 size = 5
16882
16883 // 64 bit
16884 } else {
16885 number = readUInt64LE(buffer, offset + 1)
16886 size = 9
16887 }
16888
16889 return {
16890 number: number,
16891 size: size
16892 }
16893 }
16894
16895 function writePushDataInt (buffer, number, offset) {
16896 var size = pushDataSize(number)
16897
16898 // ~6 bit
16899 if (size === 1) {
16900 buffer.writeUInt8(number, offset)
16901
16902 // 8 bit
16903 } else if (size === 2) {
16904 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16905 buffer.writeUInt8(number, offset + 1)
16906
16907 // 16 bit
16908 } else if (size === 3) {
16909 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16910 buffer.writeUInt16LE(number, offset + 1)
16911
16912 // 32 bit
16913 } else {
16914 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16915 buffer.writeUInt32LE(number, offset + 1)
16916 }
16917
16918 return size
16919 }
16920
16921 function writeUInt64LE (buffer, value, offset) {
16922 verifuint(value, 0x001fffffffffffff)
16923
16924 buffer.writeInt32LE(value & -1, offset)
16925 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16926 }
16927
16928 function varIntSize (i) {
16929 return i < 253 ? 1
16930 : i < 0x10000 ? 3
16931 : i < 0x100000000 ? 5
16932 : 9
16933 }
16934
16935 function writeVarInt (buffer, number, offset) {
16936 var size = varIntSize(number)
16937
16938 // 8 bit
16939 if (size === 1) {
16940 buffer.writeUInt8(number, offset)
16941
16942 // 16 bit
16943 } else if (size === 3) {
16944 buffer.writeUInt8(253, offset)
16945 buffer.writeUInt16LE(number, offset + 1)
16946
16947 // 32 bit
16948 } else if (size === 5) {
16949 buffer.writeUInt8(254, offset)
16950 buffer.writeUInt32LE(number, offset + 1)
16951
16952 // 64 bit
16953 } else {
16954 buffer.writeUInt8(255, offset)
16955 writeUInt64LE(buffer, number, offset + 1)
16956 }
16957
16958 return size
16959 }
16960
16961 function varIntBuffer (i) {
16962 var size = varIntSize(i)
16963 var buffer = new Buffer(size)
16964 writeVarInt(buffer, i, 0)
16965
16966 return buffer
16967 }
16968
16969 function reverse (buffer) {
16970 var buffer2 = new Buffer(buffer)
16971 Array.prototype.reverse.call(buffer2)
16972 return buffer2
16973 }
16974
16975 module.exports = {
16976 pushDataSize: pushDataSize,
16977 readPushDataInt: readPushDataInt,
16978 readUInt64LE: readUInt64LE,
16979 readVarInt: readVarInt,
16980 reverse: reverse,
16981 varIntBuffer: varIntBuffer,
16982 varIntSize: varIntSize,
16983 writePushDataInt: writePushDataInt,
16984 writeUInt64LE: writeUInt64LE,
16985 writeVarInt: writeVarInt
16986 }
16987
16988 }).call(this,require("buffer").Buffer)
16989 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16990 var createHash = require('create-hash')
16991
16992 function hash160 (buffer) {
16993 return ripemd160(sha256(buffer))
16994 }
16995
16996 function hash256 (buffer) {
16997 return sha256(sha256(buffer))
16998 }
16999
17000 function ripemd160 (buffer) {
17001 return createHash('rmd160').update(buffer).digest()
17002 }
17003
17004 function sha1 (buffer) {
17005 return createHash('sha1').update(buffer).digest()
17006 }
17007
17008 function sha256 (buffer) {
17009 return createHash('sha256').update(buffer).digest()
17010 }
17011
17012 // FIXME: Name not consistent with others
17013 var createHmac = require('create-hmac')
17014
17015 function HmacSHA256 (buffer, secret) {
17016 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17017 return createHmac('sha256', secret).update(buffer).digest()
17018 }
17019
17020 function HmacSHA512 (buffer, secret) {
17021 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17022 return createHmac('sha512', secret).update(buffer).digest()
17023 }
17024
17025 module.exports = {
17026 ripemd160: ripemd160,
17027 sha1: sha1,
17028 sha256: sha256,
17029 hash160: hash160,
17030 hash256: hash256,
17031 HmacSHA256: HmacSHA256,
17032 HmacSHA512: HmacSHA512
17033 }
17034
17035 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17036 (function (Buffer){
17037 var assert = require('assert')
17038 var createHmac = require('create-hmac')
17039 var typeForce = require('typeforce')
17040
17041 var BigInteger = require('bigi')
17042 var ECSignature = require('./ecsignature')
17043
17044 var ZERO = new Buffer([0])
17045 var ONE = new Buffer([1])
17046
17047 // https://tools.ietf.org/html/rfc6979#section-3.2
17048 function deterministicGenerateK (curve, hash, d, checkSig) {
17049 typeForce('Buffer', hash)
17050 typeForce('BigInteger', d)
17051
17052 // FIXME: remove/uncomment for 2.0.0
17053 // typeForce('Function', checkSig)
17054
17055 if (typeof checkSig !== 'function') {
17056 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17057
17058 checkSig = function (k) {
17059 var G = curve.G
17060 var n = curve.n
17061 var e = BigInteger.fromBuffer(hash)
17062
17063 var Q = G.multiply(k)
17064
17065 if (curve.isInfinity(Q))
17066 return false
17067
17068 var r = Q.affineX.mod(n)
17069 if (r.signum() === 0)
17070 return false
17071
17072 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17073 if (s.signum() === 0)
17074 return false
17075
17076 return true
17077 }
17078 }
17079
17080 // sanity check
17081 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17082
17083 var x = d.toBuffer(32)
17084 var k = new Buffer(32)
17085 var v = new Buffer(32)
17086
17087 // Step A, ignored as hash already provided
17088 // Step B
17089 v.fill(1)
17090
17091 // Step C
17092 k.fill(0)
17093
17094 // Step D
17095 k = createHmac('sha256', k)
17096 .update(v)
17097 .update(ZERO)
17098 .update(x)
17099 .update(hash)
17100 .digest()
17101
17102 // Step E
17103 v = createHmac('sha256', k).update(v).digest()
17104
17105 // Step F
17106 k = createHmac('sha256', k)
17107 .update(v)
17108 .update(ONE)
17109 .update(x)
17110 .update(hash)
17111 .digest()
17112
17113 // Step G
17114 v = createHmac('sha256', k).update(v).digest()
17115
17116 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17117 // Step H2b
17118 v = createHmac('sha256', k).update(v).digest()
17119
17120 var T = BigInteger.fromBuffer(v)
17121
17122 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17123 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17124 k = createHmac('sha256', k)
17125 .update(v)
17126 .update(ZERO)
17127 .digest()
17128
17129 v = createHmac('sha256', k).update(v).digest()
17130
17131 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17132 // Step H2b again
17133 v = createHmac('sha256', k).update(v).digest()
17134 T = BigInteger.fromBuffer(v)
17135 }
17136
17137 return T
17138 }
17139
17140 function sign (curve, hash, d) {
17141 var r, s
17142
17143 var e = BigInteger.fromBuffer(hash)
17144 var n = curve.n
17145 var G = curve.G
17146
17147 deterministicGenerateK(curve, hash, d, function (k) {
17148 var Q = G.multiply(k)
17149
17150 if (curve.isInfinity(Q))
17151 return false
17152
17153 r = Q.affineX.mod(n)
17154 if (r.signum() === 0)
17155 return false
17156
17157 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17158 if (s.signum() === 0)
17159 return false
17160
17161 return true
17162 })
17163
17164 var N_OVER_TWO = n.shiftRight(1)
17165
17166 // enforce low S values, see bip62: 'low s values in signatures'
17167 if (s.compareTo(N_OVER_TWO) > 0) {
17168 s = n.subtract(s)
17169 }
17170
17171 return new ECSignature(r, s)
17172 }
17173
17174 function verifyRaw (curve, e, signature, Q) {
17175 var n = curve.n
17176 var G = curve.G
17177
17178 var r = signature.r
17179 var s = signature.s
17180
17181 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17182 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17183 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17184
17185 // c = s^-1 mod n
17186 var c = s.modInverse(n)
17187
17188 // 1.4.4 Compute u1 = es^−1 mod n
17189 // u2 = rs^−1 mod n
17190 var u1 = e.multiply(c).mod(n)
17191 var u2 = r.multiply(c).mod(n)
17192
17193 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17194 var R = G.multiplyTwo(u1, Q, u2)
17195 var v = R.affineX.mod(n)
17196
17197 // 1.4.5 (cont.) Enforce R is not at infinity
17198 if (curve.isInfinity(R)) return false
17199
17200 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17201 return v.equals(r)
17202 }
17203
17204 function verify (curve, hash, signature, Q) {
17205 // 1.4.2 H = Hash(M), already done by the user
17206 // 1.4.3 e = H
17207 var e = BigInteger.fromBuffer(hash)
17208
17209 return verifyRaw(curve, e, signature, Q)
17210 }
17211
17212 /**
17213 * Recover a public key from a signature.
17214 *
17215 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17216 * Key Recovery Operation".
17217 *
17218 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17219 */
17220 function recoverPubKey (curve, e, signature, i) {
17221 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17222
17223 var n = curve.n
17224 var G = curve.G
17225
17226 var r = signature.r
17227 var s = signature.s
17228
17229 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17230 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17231
17232 // A set LSB signifies that the y-coordinate is odd
17233 var isYOdd = i & 1
17234
17235 // The more significant bit specifies whether we should use the
17236 // first or second candidate key.
17237 var isSecondKey = i >> 1
17238
17239 // 1.1 Let x = r + jn
17240 var x = isSecondKey ? r.add(n) : r
17241 var R = curve.pointFromX(isYOdd, x)
17242
17243 // 1.4 Check that nR is at infinity
17244 var nR = R.multiply(n)
17245 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17246
17247 // Compute -e from e
17248 var eNeg = e.negate().mod(n)
17249
17250 // 1.6.1 Compute Q = r^-1 (sR - eG)
17251 // Q = r^-1 (sR + -eG)
17252 var rInv = r.modInverse(n)
17253
17254 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17255 curve.validate(Q)
17256
17257 return Q
17258 }
17259
17260 /**
17261 * Calculate pubkey extraction parameter.
17262 *
17263 * When extracting a pubkey from a signature, we have to
17264 * distinguish four different cases. Rather than putting this
17265 * burden on the verifier, Bitcoin includes a 2-bit value with the
17266 * signature.
17267 *
17268 * This function simply tries all four cases and returns the value
17269 * that resulted in a successful pubkey recovery.
17270 */
17271 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17272 for (var i = 0; i < 4; i++) {
17273 var Qprime = recoverPubKey(curve, e, signature, i)
17274
17275 // 1.6.2 Verify Q
17276 if (Qprime.equals(Q)) {
17277 return i
17278 }
17279 }
17280
17281 throw new Error('Unable to find valid recovery factor')
17282 }
17283
17284 module.exports = {
17285 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17286 deterministicGenerateK: deterministicGenerateK,
17287 recoverPubKey: recoverPubKey,
17288 sign: sign,
17289 verify: verify,
17290 verifyRaw: verifyRaw
17291 }
17292
17293 }).call(this,require("buffer").Buffer)
17294 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17295 (function (Buffer){
17296 var assert = require('assert')
17297 var base58check = require('bs58check')
17298 var ecdsa = require('./ecdsa')
17299 var networks = require('./networks')
17300 var randomBytes = require('randombytes')
17301 var typeForce = require('typeforce')
17302
17303 var BigInteger = require('bigi')
17304 var ECPubKey = require('./ecpubkey')
17305
17306 var ecurve = require('ecurve')
17307 var secp256k1 = ecurve.getCurveByName('secp256k1')
17308
17309 function ECKey (d, compressed) {
17310 assert(d.signum() > 0, 'Private key must be greater than 0')
17311 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17312
17313 var Q = ECKey.curve.G.multiply(d)
17314
17315 this.d = d
17316 this.pub = new ECPubKey(Q, compressed)
17317 }
17318
17319 // Constants
17320 ECKey.curve = secp256k1
17321
17322 // Static constructors
17323 ECKey.fromWIF = function (string) {
17324 var payload = base58check.decode(string)
17325 var compressed = false
17326
17327 // Ignore the version byte
17328 payload = payload.slice(1)
17329
17330 if (payload.length === 33) {
17331 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17332
17333 // Truncate the compression flag
17334 payload = payload.slice(0, -1)
17335 compressed = true
17336 }
17337
17338 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17339
17340 var d = BigInteger.fromBuffer(payload)
17341 return new ECKey(d, compressed)
17342 }
17343
17344 ECKey.makeRandom = function (compressed, rng) {
17345 rng = rng || randomBytes
17346
17347 var buffer = rng(32)
17348 typeForce('Buffer', buffer)
17349 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17350
17351 var d = BigInteger.fromBuffer(buffer)
17352 d = d.mod(ECKey.curve.n)
17353
17354 return new ECKey(d, compressed)
17355 }
17356
17357 // Export functions
17358 ECKey.prototype.toWIF = function (network) {
17359 network = network || networks.bitcoin
17360
17361 var bufferLen = this.pub.compressed ? 34 : 33
17362 var buffer = new Buffer(bufferLen)
17363
17364 buffer.writeUInt8(network.wif, 0)
17365 this.d.toBuffer(32).copy(buffer, 1)
17366
17367 if (this.pub.compressed) {
17368 buffer.writeUInt8(0x01, 33)
17369 }
17370
17371 return base58check.encode(buffer)
17372 }
17373
17374 // Operations
17375 ECKey.prototype.sign = function (hash) {
17376 return ecdsa.sign(ECKey.curve, hash, this.d)
17377 }
17378
17379 module.exports = ECKey
17380
17381 }).call(this,require("buffer").Buffer)
17382 },{"./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){
17383 (function (Buffer){
17384 var crypto = require('./crypto')
17385 var ecdsa = require('./ecdsa')
17386 var typeForce = require('typeforce')
17387 var networks = require('./networks')
17388
17389 var Address = require('./address')
17390
17391 var ecurve = require('ecurve')
17392 var secp256k1 = ecurve.getCurveByName('secp256k1')
17393
17394 function ECPubKey (Q, compressed) {
17395 if (compressed === undefined) {
17396 compressed = true
17397 }
17398
17399 typeForce('Point', Q)
17400 typeForce('Boolean', compressed)
17401
17402 this.compressed = compressed
17403 this.Q = Q
17404 }
17405
17406 // Constants
17407 ECPubKey.curve = secp256k1
17408
17409 // Static constructors
17410 ECPubKey.fromBuffer = function (buffer) {
17411 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17412 return new ECPubKey(Q, Q.compressed)
17413 }
17414
17415 ECPubKey.fromHex = function (hex) {
17416 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17417 }
17418
17419 // Operations
17420 ECPubKey.prototype.getAddress = function (network) {
17421 network = network || networks.bitcoin
17422
17423 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17424 }
17425
17426 ECPubKey.prototype.verify = function (hash, signature) {
17427 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17428 }
17429
17430 // Export functions
17431 ECPubKey.prototype.toBuffer = function () {
17432 return this.Q.getEncoded(this.compressed)
17433 }
17434
17435 ECPubKey.prototype.toHex = function () {
17436 return this.toBuffer().toString('hex')
17437 }
17438
17439 module.exports = ECPubKey
17440
17441 }).call(this,require("buffer").Buffer)
17442 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17443 (function (Buffer){
17444 var assert = require('assert')
17445 var typeForce = require('typeforce')
17446
17447 var BigInteger = require('bigi')
17448
17449 function ECSignature (r, s) {
17450 typeForce('BigInteger', r)
17451 typeForce('BigInteger', s)
17452
17453 this.r = r
17454 this.s = s
17455 }
17456
17457 ECSignature.parseCompact = function (buffer) {
17458 assert.equal(buffer.length, 65, 'Invalid signature length')
17459 var i = buffer.readUInt8(0) - 27
17460
17461 // At most 3 bits
17462 assert.equal(i, i & 7, 'Invalid signature parameter')
17463 var compressed = !!(i & 4)
17464
17465 // Recovery param only
17466 i = i & 3
17467
17468 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17469 var s = BigInteger.fromBuffer(buffer.slice(33))
17470
17471 return {
17472 compressed: compressed,
17473 i: i,
17474 signature: new ECSignature(r, s)
17475 }
17476 }
17477
17478 ECSignature.fromDER = function (buffer) {
17479 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17480 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17481 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17482
17483 var rLen = buffer.readUInt8(3)
17484 assert(rLen > 0, 'R length is zero')
17485
17486 var offset = 4 + rLen
17487 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17488
17489 var sLen = buffer.readUInt8(offset + 1)
17490 assert(sLen > 0, 'S length is zero')
17491
17492 var rB = buffer.slice(4, offset)
17493 var sB = buffer.slice(offset + 2)
17494 offset += 2 + sLen
17495
17496 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17497 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17498 }
17499
17500 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17501 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17502 }
17503
17504 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17505 var r = BigInteger.fromDERInteger(rB)
17506 var s = BigInteger.fromDERInteger(sB)
17507
17508 assert(r.signum() >= 0, 'R value is negative')
17509 assert(s.signum() >= 0, 'S value is negative')
17510
17511 return new ECSignature(r, s)
17512 }
17513
17514 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17515 ECSignature.parseScriptSignature = function (buffer) {
17516 var hashType = buffer.readUInt8(buffer.length - 1)
17517 var hashTypeMod = hashType & ~0x80
17518
17519 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17520
17521 return {
17522 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17523 hashType: hashType
17524 }
17525 }
17526
17527 ECSignature.prototype.toCompact = function (i, compressed) {
17528 if (compressed) {
17529 i += 4
17530 }
17531
17532 i += 27
17533
17534 var buffer = new Buffer(65)
17535 buffer.writeUInt8(i, 0)
17536
17537 this.r.toBuffer(32).copy(buffer, 1)
17538 this.s.toBuffer(32).copy(buffer, 33)
17539
17540 return buffer
17541 }
17542
17543 ECSignature.prototype.toDER = function () {
17544 var rBa = this.r.toDERInteger()
17545 var sBa = this.s.toDERInteger()
17546
17547 var sequence = []
17548
17549 // INTEGER
17550 sequence.push(0x02, rBa.length)
17551 sequence = sequence.concat(rBa)
17552
17553 // INTEGER
17554 sequence.push(0x02, sBa.length)
17555 sequence = sequence.concat(sBa)
17556
17557 // SEQUENCE
17558 sequence.unshift(0x30, sequence.length)
17559
17560 return new Buffer(sequence)
17561 }
17562
17563 ECSignature.prototype.toScriptSignature = function (hashType) {
17564 var hashTypeMod = hashType & ~0x80
17565 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17566
17567 var hashTypeBuffer = new Buffer(1)
17568 hashTypeBuffer.writeUInt8(hashType, 0)
17569
17570 return Buffer.concat([this.toDER(), hashTypeBuffer])
17571 }
17572
17573 module.exports = ECSignature
17574
17575 }).call(this,require("buffer").Buffer)
17576 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17577 (function (Buffer){
17578 var assert = require('assert')
17579 var base58check = require('bs58check')
17580 var bcrypto = require('./crypto')
17581 var createHmac = require('create-hmac')
17582 var typeForce = require('typeforce')
17583 var networks = require('./networks')
17584
17585 var BigInteger = require('bigi')
17586 var ECKey = require('./eckey')
17587 var ECPubKey = require('./ecpubkey')
17588
17589 var ecurve = require('ecurve')
17590 var curve = ecurve.getCurveByName('secp256k1')
17591
17592 function findBIP32NetworkByVersion (version) {
17593 for (var name in networks) {
17594 var network = networks[name]
17595
17596 if (version === network.bip32.private || version === network.bip32.public) {
17597 return network
17598 }
17599 }
17600
17601 assert(false, 'Could not find network for ' + version.toString(16))
17602 }
17603
17604 function HDNode (K, chainCode, network) {
17605 network = network || networks.bitcoin
17606
17607 typeForce('Buffer', chainCode)
17608
17609 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17610 assert(network.bip32, 'Unknown BIP32 constants for network')
17611
17612 this.chainCode = chainCode
17613 this.depth = 0
17614 this.index = 0
17615 this.parentFingerprint = 0x00000000
17616 this.network = network
17617
17618 if (K instanceof BigInteger) {
17619 this.privKey = new ECKey(K, true)
17620 this.pubKey = this.privKey.pub
17621 } else if (K instanceof ECKey) {
17622 assert(K.pub.compressed, 'ECKey must be compressed')
17623 this.privKey = K
17624 this.pubKey = K.pub
17625 } else if (K instanceof ECPubKey) {
17626 assert(K.compressed, 'ECPubKey must be compressed')
17627 this.pubKey = K
17628 } else {
17629 this.pubKey = new ECPubKey(K, true)
17630 }
17631 }
17632
17633 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17634 HDNode.HIGHEST_BIT = 0x80000000
17635 HDNode.LENGTH = 78
17636
17637 HDNode.fromSeedBuffer = function (seed, network) {
17638 typeForce('Buffer', seed)
17639
17640 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17641 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17642
17643 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17644 var IL = I.slice(0, 32)
17645 var IR = I.slice(32)
17646
17647 // In case IL is 0 or >= n, the master key is invalid
17648 // This is handled by `new ECKey` in the HDNode constructor
17649 var pIL = BigInteger.fromBuffer(IL)
17650
17651 return new HDNode(pIL, IR, network)
17652 }
17653
17654 HDNode.fromSeedHex = function (hex, network) {
17655 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17656 }
17657
17658 HDNode.fromBase58 = function (string, network) {
17659 return HDNode.fromBuffer(base58check.decode(string), network, true)
17660 }
17661
17662 // FIXME: remove in 2.x.y
17663 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17664 if (!__ignoreDeprecation) {
17665 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17666 }
17667
17668 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17669
17670 // 4 byte: version bytes
17671 var version = buffer.readUInt32BE(0)
17672
17673 if (network) {
17674 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17675
17676 // auto-detect
17677 } else {
17678 network = findBIP32NetworkByVersion(version)
17679 }
17680
17681 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17682 var depth = buffer.readUInt8(4)
17683
17684 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17685 var parentFingerprint = buffer.readUInt32BE(5)
17686 if (depth === 0) {
17687 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17688 }
17689
17690 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17691 // This is encoded in MSB order. (0x00000000 if master key)
17692 var index = buffer.readUInt32BE(9)
17693 assert(depth > 0 || index === 0, 'Invalid index')
17694
17695 // 32 bytes: the chain code
17696 var chainCode = buffer.slice(13, 45)
17697 var data, hd
17698
17699 // 33 bytes: private key data (0x00 + k)
17700 if (version === network.bip32.private) {
17701 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17702 data = buffer.slice(46, 78)
17703 var d = BigInteger.fromBuffer(data)
17704 hd = new HDNode(d, chainCode, network)
17705
17706 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17707 } else {
17708 data = buffer.slice(45, 78)
17709 var Q = ecurve.Point.decodeFrom(curve, data)
17710 assert.equal(Q.compressed, true, 'Invalid public key')
17711
17712 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17713 // If not, the extended public key is invalid.
17714 curve.validate(Q)
17715
17716 hd = new HDNode(Q, chainCode, network)
17717 }
17718
17719 hd.depth = depth
17720 hd.index = index
17721 hd.parentFingerprint = parentFingerprint
17722
17723 return hd
17724 }
17725
17726 // FIXME: remove in 2.x.y
17727 HDNode.fromHex = function (hex, network) {
17728 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17729 }
17730
17731 HDNode.prototype.getIdentifier = function () {
17732 return bcrypto.hash160(this.pubKey.toBuffer())
17733 }
17734
17735 HDNode.prototype.getFingerprint = function () {
17736 return this.getIdentifier().slice(0, 4)
17737 }
17738
17739 HDNode.prototype.getAddress = function () {
17740 return this.pubKey.getAddress(this.network)
17741 }
17742
17743 HDNode.prototype.neutered = function () {
17744 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17745 neutered.depth = this.depth
17746 neutered.index = this.index
17747 neutered.parentFingerprint = this.parentFingerprint
17748
17749 return neutered
17750 }
17751
17752 HDNode.prototype.toBase58 = function (isPrivate) {
17753 return base58check.encode(this.toBuffer(isPrivate, true))
17754 }
17755
17756 // FIXME: remove in 2.x.y
17757 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17758 if (isPrivate === undefined) {
17759 isPrivate = !!this.privKey
17760
17761 // FIXME: remove in 2.x.y
17762 } else {
17763 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17764 }
17765
17766 if (!__ignoreDeprecation) {
17767 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17768 }
17769
17770 // Version
17771 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17772 var buffer = new Buffer(HDNode.LENGTH)
17773
17774 // 4 bytes: version bytes
17775 buffer.writeUInt32BE(version, 0)
17776
17777 // Depth
17778 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17779 buffer.writeUInt8(this.depth, 4)
17780
17781 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17782 buffer.writeUInt32BE(this.parentFingerprint, 5)
17783
17784 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17785 // This is encoded in Big endian. (0x00000000 if master key)
17786 buffer.writeUInt32BE(this.index, 9)
17787
17788 // 32 bytes: the chain code
17789 this.chainCode.copy(buffer, 13)
17790
17791 // 33 bytes: the public key or private key data
17792 if (isPrivate) {
17793 // FIXME: remove in 2.x.y
17794 assert(this.privKey, 'Missing private key')
17795
17796 // 0x00 + k for private keys
17797 buffer.writeUInt8(0, 45)
17798 this.privKey.d.toBuffer(32).copy(buffer, 46)
17799 } else {
17800 // X9.62 encoding for public keys
17801 this.pubKey.toBuffer().copy(buffer, 45)
17802 }
17803
17804 return buffer
17805 }
17806
17807 // FIXME: remove in 2.x.y
17808 HDNode.prototype.toHex = function (isPrivate) {
17809 return this.toBuffer(isPrivate).toString('hex')
17810 }
17811
17812 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17813 HDNode.prototype.derive = function (index) {
17814 var isHardened = index >= HDNode.HIGHEST_BIT
17815 var indexBuffer = new Buffer(4)
17816 indexBuffer.writeUInt32BE(index, 0)
17817
17818 var data
17819
17820 // Hardened child
17821 if (isHardened) {
17822 assert(this.privKey, 'Could not derive hardened child key')
17823
17824 // data = 0x00 || ser256(kpar) || ser32(index)
17825 data = Buffer.concat([
17826 this.privKey.d.toBuffer(33),
17827 indexBuffer
17828 ])
17829
17830 // Normal child
17831 } else {
17832 // data = serP(point(kpar)) || ser32(index)
17833 // = serP(Kpar) || ser32(index)
17834 data = Buffer.concat([
17835 this.pubKey.toBuffer(),
17836 indexBuffer
17837 ])
17838 }
17839
17840 var I = createHmac('sha512', this.chainCode).update(data).digest()
17841 var IL = I.slice(0, 32)
17842 var IR = I.slice(32)
17843
17844 var pIL = BigInteger.fromBuffer(IL)
17845
17846 // In case parse256(IL) >= n, proceed with the next value for i
17847 if (pIL.compareTo(curve.n) >= 0) {
17848 return this.derive(index + 1)
17849 }
17850
17851 // Private parent key -> private child key
17852 var hd
17853 if (this.privKey) {
17854 // ki = parse256(IL) + kpar (mod n)
17855 var ki = pIL.add(this.privKey.d).mod(curve.n)
17856
17857 // In case ki == 0, proceed with the next value for i
17858 if (ki.signum() === 0) {
17859 return this.derive(index + 1)
17860 }
17861
17862 hd = new HDNode(ki, IR, this.network)
17863
17864 // Public parent key -> public child key
17865 } else {
17866 // Ki = point(parse256(IL)) + Kpar
17867 // = G*IL + Kpar
17868 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17869
17870 // In case Ki is the point at infinity, proceed with the next value for i
17871 if (curve.isInfinity(Ki)) {
17872 return this.derive(index + 1)
17873 }
17874
17875 hd = new HDNode(Ki, IR, this.network)
17876 }
17877
17878 hd.depth = this.depth + 1
17879 hd.index = index
17880 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17881
17882 return hd
17883 }
17884
17885 HDNode.prototype.deriveHardened = function (index) {
17886 // Only derives hardened private keys by default
17887 return this.derive(index + HDNode.HIGHEST_BIT)
17888 }
17889
17890 HDNode.prototype.toString = HDNode.prototype.toBase58
17891
17892 module.exports = HDNode
17893
17894 }).call(this,require("buffer").Buffer)
17895 },{"./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){
17896 module.exports = {
17897 Address: require('./address'),
17898 base58check: require('./base58check'),
17899 Block: require('./block'),
17900 bufferutils: require('./bufferutils'),
17901 crypto: require('./crypto'),
17902 ecdsa: require('./ecdsa'),
17903 ECKey: require('./eckey'),
17904 ECPubKey: require('./ecpubkey'),
17905 ECSignature: require('./ecsignature'),
17906 Message: require('./message'),
17907 opcodes: require('./opcodes'),
17908 HDNode: require('./hdnode'),
17909 Script: require('./script'),
17910 scripts: require('./scripts'),
17911 Transaction: require('./transaction'),
17912 TransactionBuilder: require('./transaction_builder'),
17913 networks: require('./networks'),
17914 Wallet: require('./wallet')
17915 }
17916
17917 },{"./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){
17918 (function (Buffer){
17919 var bufferutils = require('./bufferutils')
17920 var crypto = require('./crypto')
17921 var ecdsa = require('./ecdsa')
17922 var networks = require('./networks')
17923
17924 var BigInteger = require('bigi')
17925 var ECPubKey = require('./ecpubkey')
17926 var ECSignature = require('./ecsignature')
17927
17928 var ecurve = require('ecurve')
17929 var ecparams = ecurve.getCurveByName('secp256k1')
17930
17931 function magicHash (message, network) {
17932 var magicPrefix = new Buffer(network.magicPrefix)
17933 var messageBuffer = new Buffer(message)
17934 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17935
17936 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17937 return crypto.hash256(buffer)
17938 }
17939
17940 function sign (privKey, message, network) {
17941 network = network || networks.bitcoin
17942
17943 var hash = magicHash(message, network)
17944 var signature = privKey.sign(hash)
17945 var e = BigInteger.fromBuffer(hash)
17946 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17947
17948 return signature.toCompact(i, privKey.pub.compressed)
17949 }
17950
17951 // TODO: network could be implied from address
17952 function verify (address, signature, message, network) {
17953 if (!Buffer.isBuffer(signature)) {
17954 signature = new Buffer(signature, 'base64')
17955 }
17956
17957 network = network || networks.bitcoin
17958
17959 var hash = magicHash(message, network)
17960 var parsed = ECSignature.parseCompact(signature)
17961 var e = BigInteger.fromBuffer(hash)
17962 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17963
17964 var pubKey = new ECPubKey(Q, parsed.compressed)
17965 return pubKey.getAddress(network).toString() === address.toString()
17966 }
17967
17968 module.exports = {
17969 magicHash: magicHash,
17970 sign: sign,
17971 verify: verify
17972 }
17973
17974 }).call(this,require("buffer").Buffer)
17975 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17976 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17977 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17978
17979 var networks = {
17980 bitcoin: {
17981 magicPrefix: '\x18Bitcoin Signed Message:\n',
17982 bip32: {
17983 public: 0x0488b21e,
17984 private: 0x0488ade4
17985 },
17986 pubKeyHash: 0x00,
17987 scriptHash: 0x05,
17988 wif: 0x80,
17989 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17990 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17991 estimateFee: estimateFee('bitcoin')
17992 },
17993 testnet: {
17994 magicPrefix: '\x18Bitcoin Signed Message:\n',
17995 bip32: {
17996 public: 0x043587cf,
17997 private: 0x04358394
17998 },
17999 pubKeyHash: 0x6f,
18000 scriptHash: 0xc4,
18001 wif: 0xef,
18002 dustThreshold: 546,
18003 feePerKb: 10000,
18004 estimateFee: estimateFee('testnet')
18005 },
18006 litecoin: {
18007 magicPrefix: '\x19Litecoin Signed Message:\n',
18008 bip32: {
18009 public: 0x019da462,
18010 private: 0x019d9cfe
18011 },
18012 pubKeyHash: 0x30,
18013 scriptHash: 0x05,
18014 wif: 0xb0,
18015 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18016 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18017 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18018 estimateFee: estimateFee('litecoin')
18019 },
18020 dogecoin: {
18021 magicPrefix: '\x19Dogecoin Signed Message:\n',
18022 bip32: {
18023 public: 0x02facafd,
18024 private: 0x02fac398
18025 },
18026 pubKeyHash: 0x1e,
18027 scriptHash: 0x16,
18028 wif: 0x9e,
18029 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18030 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18031 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18032 estimateFee: estimateFee('dogecoin')
18033 },
18034 viacoin: {
18035 magicPrefix: '\x18Viacoin Signed Message:\n',
18036 bip32: {
18037 public: 0x0488b21e,
18038 private: 0x0488ade4
18039 },
18040 pubKeyHash: 0x47,
18041 scriptHash: 0x21,
18042 wif: 0xc7,
18043 dustThreshold: 560,
18044 dustSoftThreshold: 100000,
18045 feePerKb: 100000, //
18046 estimateFee: estimateFee('viacoin')
18047 },
18048 viacointestnet: {
18049 magicPrefix: '\x18Viacoin Signed Message:\n',
18050 bip32: {
18051 public: 0x043587cf,
18052 private: 0x04358394
18053 },
18054 pubKeyHash: 0x7f,
18055 scriptHash: 0xc4,
18056 wif: 0xff,
18057 dustThreshold: 560,
18058 dustSoftThreshold: 100000,
18059 feePerKb: 100000,
18060 estimateFee: estimateFee('viacointestnet')
18061 },
18062 gamerscoin: {
18063 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18064 bip32: {
18065 public: 0x019da462,
18066 private: 0x019d9cfe
18067 },
18068 pubKeyHash: 0x26,
18069 scriptHash: 0x05,
18070 wif: 0xA6,
18071 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18072 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18073 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18074 estimateFee: estimateFee('gamerscoin')
18075 },
18076 jumbucks: {
18077 magicPrefix: '\x19Jumbucks Signed Message:\n',
18078 bip32: {
18079 public: 0x037a689a,
18080 private: 0x037a6460
18081 },
18082 pubKeyHash: 0x2b,
18083 scriptHash: 0x05,
18084 wif: 0xab,
18085 dustThreshold: 0,
18086 dustSoftThreshold: 10000,
18087 feePerKb: 10000,
18088 estimateFee: estimateFee('jumbucks')
18089 },
18090 zetacoin: {
18091 magicPrefix: '\x18Zetacoin Signed Message:\n',
18092 bip32: {
18093 public: 0x0488b21e,
18094 private: 0x0488ade4
18095 },
18096 pubKeyHash: 0x50,
18097 scriptHash: 0x09,
18098 wif: 0xe0,
18099 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18100 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18101 estimateFee: estimateFee('zetacoin')
18102 }
18103 }
18104
18105 function estimateFee (type) {
18106 return function (tx) {
18107 var network = networks[type]
18108 var baseFee = network.feePerKb
18109 var byteSize = tx.toBuffer().length
18110
18111 var fee = baseFee * Math.ceil(byteSize / 1000)
18112 if (network.dustSoftThreshold === undefined) return fee
18113
18114 tx.outs.forEach(function (e) {
18115 if (e.value < network.dustSoftThreshold) {
18116 fee += baseFee
18117 }
18118 })
18119
18120 return fee
18121 }
18122 }
18123
18124 module.exports = networks
18125
18126 },{}],67:[function(require,module,exports){
18127 module.exports = {
18128 // push value
18129 OP_FALSE: 0,
18130 OP_0: 0,
18131 OP_PUSHDATA1: 76,
18132 OP_PUSHDATA2: 77,
18133 OP_PUSHDATA4: 78,
18134 OP_1NEGATE: 79,
18135 OP_RESERVED: 80,
18136 OP_1: 81,
18137 OP_TRUE: 81,
18138 OP_2: 82,
18139 OP_3: 83,
18140 OP_4: 84,
18141 OP_5: 85,
18142 OP_6: 86,
18143 OP_7: 87,
18144 OP_8: 88,
18145 OP_9: 89,
18146 OP_10: 90,
18147 OP_11: 91,
18148 OP_12: 92,
18149 OP_13: 93,
18150 OP_14: 94,
18151 OP_15: 95,
18152 OP_16: 96,
18153
18154 // control
18155 OP_NOP: 97,
18156 OP_VER: 98,
18157 OP_IF: 99,
18158 OP_NOTIF: 100,
18159 OP_VERIF: 101,
18160 OP_VERNOTIF: 102,
18161 OP_ELSE: 103,
18162 OP_ENDIF: 104,
18163 OP_VERIFY: 105,
18164 OP_RETURN: 106,
18165
18166 // stack ops
18167 OP_TOALTSTACK: 107,
18168 OP_FROMALTSTACK: 108,
18169 OP_2DROP: 109,
18170 OP_2DUP: 110,
18171 OP_3DUP: 111,
18172 OP_2OVER: 112,
18173 OP_2ROT: 113,
18174 OP_2SWAP: 114,
18175 OP_IFDUP: 115,
18176 OP_DEPTH: 116,
18177 OP_DROP: 117,
18178 OP_DUP: 118,
18179 OP_NIP: 119,
18180 OP_OVER: 120,
18181 OP_PICK: 121,
18182 OP_ROLL: 122,
18183 OP_ROT: 123,
18184 OP_SWAP: 124,
18185 OP_TUCK: 125,
18186
18187 // splice ops
18188 OP_CAT: 126,
18189 OP_SUBSTR: 127,
18190 OP_LEFT: 128,
18191 OP_RIGHT: 129,
18192 OP_SIZE: 130,
18193
18194 // bit logic
18195 OP_INVERT: 131,
18196 OP_AND: 132,
18197 OP_OR: 133,
18198 OP_XOR: 134,
18199 OP_EQUAL: 135,
18200 OP_EQUALVERIFY: 136,
18201 OP_RESERVED1: 137,
18202 OP_RESERVED2: 138,
18203
18204 // numeric
18205 OP_1ADD: 139,
18206 OP_1SUB: 140,
18207 OP_2MUL: 141,
18208 OP_2DIV: 142,
18209 OP_NEGATE: 143,
18210 OP_ABS: 144,
18211 OP_NOT: 145,
18212 OP_0NOTEQUAL: 146,
18213
18214 OP_ADD: 147,
18215 OP_SUB: 148,
18216 OP_MUL: 149,
18217 OP_DIV: 150,
18218 OP_MOD: 151,
18219 OP_LSHIFT: 152,
18220 OP_RSHIFT: 153,
18221
18222 OP_BOOLAND: 154,
18223 OP_BOOLOR: 155,
18224 OP_NUMEQUAL: 156,
18225 OP_NUMEQUALVERIFY: 157,
18226 OP_NUMNOTEQUAL: 158,
18227 OP_LESSTHAN: 159,
18228 OP_GREATERTHAN: 160,
18229 OP_LESSTHANOREQUAL: 161,
18230 OP_GREATERTHANOREQUAL: 162,
18231 OP_MIN: 163,
18232 OP_MAX: 164,
18233
18234 OP_WITHIN: 165,
18235
18236 // crypto
18237 OP_RIPEMD160: 166,
18238 OP_SHA1: 167,
18239 OP_SHA256: 168,
18240 OP_HASH160: 169,
18241 OP_HASH256: 170,
18242 OP_CODESEPARATOR: 171,
18243 OP_CHECKSIG: 172,
18244 OP_CHECKSIGVERIFY: 173,
18245 OP_CHECKMULTISIG: 174,
18246 OP_CHECKMULTISIGVERIFY: 175,
18247
18248 // expansion
18249 OP_NOP1: 176,
18250 OP_NOP2: 177,
18251 OP_NOP3: 178,
18252 OP_NOP4: 179,
18253 OP_NOP5: 180,
18254 OP_NOP6: 181,
18255 OP_NOP7: 182,
18256 OP_NOP8: 183,
18257 OP_NOP9: 184,
18258 OP_NOP10: 185,
18259
18260 // template matching params
18261 OP_PUBKEYHASH: 253,
18262 OP_PUBKEY: 254,
18263 OP_INVALIDOPCODE: 255
18264 }
18265
18266 },{}],68:[function(require,module,exports){
18267 (function (Buffer){
18268 var assert = require('assert')
18269 var bufferutils = require('./bufferutils')
18270 var crypto = require('./crypto')
18271 var typeForce = require('typeforce')
18272 var opcodes = require('./opcodes')
18273
18274 function Script (buffer, chunks) {
18275 typeForce('Buffer', buffer)
18276 typeForce('Array', chunks)
18277
18278 this.buffer = buffer
18279 this.chunks = chunks
18280 }
18281
18282 Script.fromASM = function (asm) {
18283 var strChunks = asm.split(' ')
18284 var chunks = strChunks.map(function (strChunk) {
18285 // opcode
18286 if (strChunk in opcodes) {
18287 return opcodes[strChunk]
18288
18289 // data chunk
18290 } else {
18291 return new Buffer(strChunk, 'hex')
18292 }
18293 })
18294
18295 return Script.fromChunks(chunks)
18296 }
18297
18298 Script.fromBuffer = function (buffer) {
18299 var chunks = []
18300 var i = 0
18301
18302 while (i < buffer.length) {
18303 var opcode = buffer.readUInt8(i)
18304
18305 // data chunk
18306 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18307 var d = bufferutils.readPushDataInt(buffer, i)
18308
18309 // did reading a pushDataInt fail? return non-chunked script
18310 if (d === null) return new Script(buffer, [])
18311 i += d.size
18312
18313 // attempt to read too much data?
18314 if (i + d.number > buffer.length) return new Script(buffer, [])
18315
18316 var data = buffer.slice(i, i + d.number)
18317 i += d.number
18318
18319 chunks.push(data)
18320
18321 // opcode
18322 } else {
18323 chunks.push(opcode)
18324
18325 i += 1
18326 }
18327 }
18328
18329 return new Script(buffer, chunks)
18330 }
18331
18332 Script.fromChunks = function (chunks) {
18333 typeForce('Array', chunks)
18334
18335 var bufferSize = chunks.reduce(function (accum, chunk) {
18336 // data chunk
18337 if (Buffer.isBuffer(chunk)) {
18338 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18339 }
18340
18341 // opcode
18342 return accum + 1
18343 }, 0.0)
18344
18345 var buffer = new Buffer(bufferSize)
18346 var offset = 0
18347
18348 chunks.forEach(function (chunk) {
18349 // data chunk
18350 if (Buffer.isBuffer(chunk)) {
18351 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18352
18353 chunk.copy(buffer, offset)
18354 offset += chunk.length
18355
18356 // opcode
18357 } else {
18358 buffer.writeUInt8(chunk, offset)
18359 offset += 1
18360 }
18361 })
18362
18363 assert.equal(offset, buffer.length, 'Could not decode chunks')
18364 return new Script(buffer, chunks)
18365 }
18366
18367 Script.fromHex = function (hex) {
18368 return Script.fromBuffer(new Buffer(hex, 'hex'))
18369 }
18370
18371 Script.EMPTY = Script.fromChunks([])
18372
18373 Script.prototype.getHash = function () {
18374 return crypto.hash160(this.buffer)
18375 }
18376
18377 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18378 Script.prototype.without = function (needle) {
18379 return Script.fromChunks(this.chunks.filter(function (op) {
18380 return op !== needle
18381 }))
18382 }
18383
18384 var reverseOps = []
18385 for (var op in opcodes) {
18386 var code = opcodes[op]
18387 reverseOps[code] = op
18388 }
18389
18390 Script.prototype.toASM = function () {
18391 return this.chunks.map(function (chunk) {
18392 // data chunk
18393 if (Buffer.isBuffer(chunk)) {
18394 return chunk.toString('hex')
18395
18396 // opcode
18397 } else {
18398 return reverseOps[chunk]
18399 }
18400 }).join(' ')
18401 }
18402
18403 Script.prototype.toBuffer = function () {
18404 return this.buffer
18405 }
18406
18407 Script.prototype.toHex = function () {
18408 return this.toBuffer().toString('hex')
18409 }
18410
18411 module.exports = Script
18412
18413 }).call(this,require("buffer").Buffer)
18414 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18415 (function (Buffer){
18416 var assert = require('assert')
18417 var ops = require('./opcodes')
18418 var typeForce = require('typeforce')
18419
18420 var ecurve = require('ecurve')
18421 var curve = ecurve.getCurveByName('secp256k1')
18422
18423 var ECSignature = require('./ecsignature')
18424 var Script = require('./script')
18425
18426 function isCanonicalPubKey (buffer) {
18427 if (!Buffer.isBuffer(buffer)) return false
18428
18429 try {
18430 ecurve.Point.decodeFrom(curve, buffer)
18431 } catch (e) {
18432 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18433 throw e
18434
18435 return false
18436 }
18437
18438 return true
18439 }
18440
18441 function isCanonicalSignature (buffer) {
18442 if (!Buffer.isBuffer(buffer)) return false
18443
18444 try {
18445 ECSignature.parseScriptSignature(buffer)
18446 } catch (e) {
18447 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/))) {
18448 throw e
18449 }
18450
18451 return false
18452 }
18453
18454 return true
18455 }
18456
18457 function isPubKeyHashInput (script) {
18458 return script.chunks.length === 2 &&
18459 isCanonicalSignature(script.chunks[0]) &&
18460 isCanonicalPubKey(script.chunks[1])
18461 }
18462
18463 function isPubKeyHashOutput (script) {
18464 return script.chunks.length === 5 &&
18465 script.chunks[0] === ops.OP_DUP &&
18466 script.chunks[1] === ops.OP_HASH160 &&
18467 Buffer.isBuffer(script.chunks[2]) &&
18468 script.chunks[2].length === 20 &&
18469 script.chunks[3] === ops.OP_EQUALVERIFY &&
18470 script.chunks[4] === ops.OP_CHECKSIG
18471 }
18472
18473 function isPubKeyInput (script) {
18474 return script.chunks.length === 1 &&
18475 isCanonicalSignature(script.chunks[0])
18476 }
18477
18478 function isPubKeyOutput (script) {
18479 return script.chunks.length === 2 &&
18480 isCanonicalPubKey(script.chunks[0]) &&
18481 script.chunks[1] === ops.OP_CHECKSIG
18482 }
18483
18484 function isScriptHashInput (script, allowIncomplete) {
18485 if (script.chunks.length < 2) return false
18486
18487 var lastChunk = script.chunks[script.chunks.length - 1]
18488 if (!Buffer.isBuffer(lastChunk)) return false
18489
18490 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18491 var redeemScript = Script.fromBuffer(lastChunk)
18492
18493 // is redeemScript a valid script?
18494 if (redeemScript.chunks.length === 0) return false
18495
18496 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18497 }
18498
18499 function isScriptHashOutput (script) {
18500 return script.chunks.length === 3 &&
18501 script.chunks[0] === ops.OP_HASH160 &&
18502 Buffer.isBuffer(script.chunks[1]) &&
18503 script.chunks[1].length === 20 &&
18504 script.chunks[2] === ops.OP_EQUAL
18505 }
18506
18507 // allowIncomplete is to account for combining signatures
18508 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18509 function isMultisigInput (script, allowIncomplete) {
18510 if (script.chunks.length < 2) return false
18511 if (script.chunks[0] !== ops.OP_0) return false
18512
18513 if (allowIncomplete) {
18514 return script.chunks.slice(1).every(function (chunk) {
18515 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18516 })
18517 }
18518
18519 return script.chunks.slice(1).every(isCanonicalSignature)
18520 }
18521
18522 function isMultisigOutput (script) {
18523 if (script.chunks.length < 4) return false
18524 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18525
18526 var mOp = script.chunks[0]
18527 if (mOp === ops.OP_0) return false
18528 if (mOp < ops.OP_1) return false
18529 if (mOp > ops.OP_16) return false
18530
18531 var nOp = script.chunks[script.chunks.length - 2]
18532 if (nOp === ops.OP_0) return false
18533 if (nOp < ops.OP_1) return false
18534 if (nOp > ops.OP_16) return false
18535
18536 var m = mOp - (ops.OP_1 - 1)
18537 var n = nOp - (ops.OP_1 - 1)
18538 if (n < m) return false
18539
18540 var pubKeys = script.chunks.slice(1, -2)
18541 if (n < pubKeys.length) return false
18542
18543 return pubKeys.every(isCanonicalPubKey)
18544 }
18545
18546 function isNullDataOutput (script) {
18547 return script.chunks[0] === ops.OP_RETURN
18548 }
18549
18550 function classifyOutput (script) {
18551 typeForce('Script', script)
18552
18553 if (isPubKeyHashOutput(script)) {
18554 return 'pubkeyhash'
18555 } else if (isScriptHashOutput(script)) {
18556 return 'scripthash'
18557 } else if (isMultisigOutput(script)) {
18558 return 'multisig'
18559 } else if (isPubKeyOutput(script)) {
18560 return 'pubkey'
18561 } else if (isNullDataOutput(script)) {
18562 return 'nulldata'
18563 }
18564
18565 return 'nonstandard'
18566 }
18567
18568 function classifyInput (script, allowIncomplete) {
18569 typeForce('Script', script)
18570
18571 if (isPubKeyHashInput(script)) {
18572 return 'pubkeyhash'
18573 } else if (isMultisigInput(script, allowIncomplete)) {
18574 return 'multisig'
18575 } else if (isScriptHashInput(script, allowIncomplete)) {
18576 return 'scripthash'
18577 } else if (isPubKeyInput(script)) {
18578 return 'pubkey'
18579 }
18580
18581 return 'nonstandard'
18582 }
18583
18584 // Standard Script Templates
18585 // {pubKey} OP_CHECKSIG
18586 function pubKeyOutput (pubKey) {
18587 return Script.fromChunks([
18588 pubKey.toBuffer(),
18589 ops.OP_CHECKSIG
18590 ])
18591 }
18592
18593 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18594 function pubKeyHashOutput (hash) {
18595 typeForce('Buffer', hash)
18596
18597 return Script.fromChunks([
18598 ops.OP_DUP,
18599 ops.OP_HASH160,
18600 hash,
18601 ops.OP_EQUALVERIFY,
18602 ops.OP_CHECKSIG
18603 ])
18604 }
18605
18606 // OP_HASH160 {scriptHash} OP_EQUAL
18607 function scriptHashOutput (hash) {
18608 typeForce('Buffer', hash)
18609
18610 return Script.fromChunks([
18611 ops.OP_HASH160,
18612 hash,
18613 ops.OP_EQUAL
18614 ])
18615 }
18616
18617 // m [pubKeys ...] n OP_CHECKMULTISIG
18618 function multisigOutput (m, pubKeys) {
18619 typeForce(['ECPubKey'], pubKeys)
18620
18621 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18622
18623 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18624 return pubKey.toBuffer()
18625 })
18626 var n = pubKeys.length
18627
18628 return Script.fromChunks([].concat(
18629 (ops.OP_1 - 1) + m,
18630 pubKeyBuffers,
18631 (ops.OP_1 - 1) + n,
18632 ops.OP_CHECKMULTISIG
18633 ))
18634 }
18635
18636 // {signature}
18637 function pubKeyInput (signature) {
18638 typeForce('Buffer', signature)
18639
18640 return Script.fromChunks([signature])
18641 }
18642
18643 // {signature} {pubKey}
18644 function pubKeyHashInput (signature, pubKey) {
18645 typeForce('Buffer', signature)
18646
18647 return Script.fromChunks([signature, pubKey.toBuffer()])
18648 }
18649
18650 // <scriptSig> {serialized scriptPubKey script}
18651 function scriptHashInput (scriptSig, scriptPubKey) {
18652 return Script.fromChunks([].concat(
18653 scriptSig.chunks,
18654 scriptPubKey.toBuffer()
18655 ))
18656 }
18657
18658 // OP_0 [signatures ...]
18659 function multisigInput (signatures, scriptPubKey) {
18660 if (scriptPubKey) {
18661 assert(isMultisigOutput(scriptPubKey))
18662
18663 var mOp = scriptPubKey.chunks[0]
18664 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18665 var m = mOp - (ops.OP_1 - 1)
18666 var n = nOp - (ops.OP_1 - 1)
18667
18668 assert(signatures.length >= m, 'Not enough signatures provided')
18669 assert(signatures.length <= n, 'Too many signatures provided')
18670 }
18671
18672 return Script.fromChunks([].concat(ops.OP_0, signatures))
18673 }
18674
18675 function nullDataOutput (data) {
18676 return Script.fromChunks([ops.OP_RETURN, data])
18677 }
18678
18679 module.exports = {
18680 isCanonicalPubKey: isCanonicalPubKey,
18681 isCanonicalSignature: isCanonicalSignature,
18682 isPubKeyHashInput: isPubKeyHashInput,
18683 isPubKeyHashOutput: isPubKeyHashOutput,
18684 isPubKeyInput: isPubKeyInput,
18685 isPubKeyOutput: isPubKeyOutput,
18686 isScriptHashInput: isScriptHashInput,
18687 isScriptHashOutput: isScriptHashOutput,
18688 isMultisigInput: isMultisigInput,
18689 isMultisigOutput: isMultisigOutput,
18690 isNullDataOutput: isNullDataOutput,
18691 classifyOutput: classifyOutput,
18692 classifyInput: classifyInput,
18693 pubKeyOutput: pubKeyOutput,
18694 pubKeyHashOutput: pubKeyHashOutput,
18695 scriptHashOutput: scriptHashOutput,
18696 multisigOutput: multisigOutput,
18697 pubKeyInput: pubKeyInput,
18698 pubKeyHashInput: pubKeyHashInput,
18699 scriptHashInput: scriptHashInput,
18700 multisigInput: multisigInput,
18701 dataOutput: function (data) {
18702 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18703 return nullDataOutput(data)
18704 },
18705 nullDataOutput: nullDataOutput
18706 }
18707
18708 }).call(this,require("buffer").Buffer)
18709 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18710 (function (Buffer){
18711 var assert = require('assert')
18712 var bufferutils = require('./bufferutils')
18713 var crypto = require('./crypto')
18714 var typeForce = require('typeforce')
18715 var opcodes = require('./opcodes')
18716 var scripts = require('./scripts')
18717
18718 var Address = require('./address')
18719 var ECSignature = require('./ecsignature')
18720 var Script = require('./script')
18721
18722 function Transaction () {
18723 this.version = 1
18724 this.locktime = 0
18725 this.ins = []
18726 this.outs = []
18727 }
18728
18729 Transaction.DEFAULT_SEQUENCE = 0xffffffff
18730 Transaction.SIGHASH_ALL = 0x01
18731 Transaction.SIGHASH_NONE = 0x02
18732 Transaction.SIGHASH_SINGLE = 0x03
18733 Transaction.SIGHASH_ANYONECANPAY = 0x80
18734
18735 Transaction.fromBuffer = function (buffer, __disableAssert) {
18736 var offset = 0
18737 function readSlice (n) {
18738 offset += n
18739 return buffer.slice(offset - n, offset)
18740 }
18741
18742 function readUInt32 () {
18743 var i = buffer.readUInt32LE(offset)
18744 offset += 4
18745 return i
18746 }
18747
18748 function readUInt64 () {
18749 var i = bufferutils.readUInt64LE(buffer, offset)
18750 offset += 8
18751 return i
18752 }
18753
18754 function readVarInt () {
18755 var vi = bufferutils.readVarInt(buffer, offset)
18756 offset += vi.size
18757 return vi.number
18758 }
18759
18760 function readScript () {
18761 return Script.fromBuffer(readSlice(readVarInt()))
18762 }
18763
18764 function readGenerationScript () {
18765 return new Script(readSlice(readVarInt()), [])
18766 }
18767
18768 var tx = new Transaction()
18769 tx.version = readUInt32()
18770
18771 var vinLen = readVarInt()
18772 for (var i = 0; i < vinLen; ++i) {
18773 var hash = readSlice(32)
18774
18775 if (Transaction.isCoinbaseHash(hash)) {
18776 tx.ins.push({
18777 hash: hash,
18778 index: readUInt32(),
18779 script: readGenerationScript(),
18780 sequence: readUInt32()
18781 })
18782 } else {
18783 tx.ins.push({
18784 hash: hash,
18785 index: readUInt32(),
18786 script: readScript(),
18787 sequence: readUInt32()
18788 })
18789 }
18790 }
18791
18792 var voutLen = readVarInt()
18793 for (i = 0; i < voutLen; ++i) {
18794 tx.outs.push({
18795 value: readUInt64(),
18796 script: readScript()
18797 })
18798 }
18799
18800 tx.locktime = readUInt32()
18801
18802 if (!__disableAssert) {
18803 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18804 }
18805
18806 return tx
18807 }
18808
18809 Transaction.fromHex = function (hex) {
18810 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18811 }
18812
18813 Transaction.isCoinbaseHash = function (buffer) {
18814 return Array.prototype.every.call(buffer, function (x) {
18815 return x === 0
18816 })
18817 }
18818
18819 /**
18820 * Create a new txIn.
18821 *
18822 * Can be called with any of:
18823 *
18824 * - A transaction and an index
18825 * - A transaction hash and an index
18826 *
18827 * Note that this method does not sign the created input.
18828 */
18829 Transaction.prototype.addInput = function (hash, index, sequence, script) {
18830 if (sequence === undefined || sequence === null) {
18831 sequence = Transaction.DEFAULT_SEQUENCE
18832 }
18833
18834 script = script || Script.EMPTY
18835
18836 if (typeof hash === 'string') {
18837 // TxId hex is big-endian, we need little-endian
18838 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18839 } else if (hash instanceof Transaction) {
18840 hash = hash.getHash()
18841 }
18842
18843 typeForce('Buffer', hash)
18844 typeForce('Number', index)
18845 typeForce('Number', sequence)
18846 typeForce('Script', script)
18847
18848 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18849
18850 // Add the input and return the input's index
18851 return (this.ins.push({
18852 hash: hash,
18853 index: index,
18854 script: script,
18855 sequence: sequence
18856 }) - 1)
18857 }
18858
18859 /**
18860 * Create a new txOut.
18861 *
18862 * Can be called with:
18863 *
18864 * - A base58 address string and a value
18865 * - An Address object and a value
18866 * - A scriptPubKey Script and a value
18867 */
18868 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18869 // Attempt to get a valid address if it's a base58 address string
18870 if (typeof scriptPubKey === 'string') {
18871 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18872 }
18873
18874 // Attempt to get a valid script if it's an Address object
18875 if (scriptPubKey instanceof Address) {
18876 scriptPubKey = scriptPubKey.toOutputScript()
18877 }
18878
18879 typeForce('Script', scriptPubKey)
18880 typeForce('Number', value)
18881
18882 // Add the output and return the output's index
18883 return (this.outs.push({
18884 script: scriptPubKey,
18885 value: value
18886 }) - 1)
18887 }
18888
18889 Transaction.prototype.clone = function () {
18890 var newTx = new Transaction()
18891 newTx.version = this.version
18892 newTx.locktime = this.locktime
18893
18894 newTx.ins = this.ins.map(function (txIn) {
18895 return {
18896 hash: txIn.hash,
18897 index: txIn.index,
18898 script: txIn.script,
18899 sequence: txIn.sequence
18900 }
18901 })
18902
18903 newTx.outs = this.outs.map(function (txOut) {
18904 return {
18905 script: txOut.script,
18906 value: txOut.value
18907 }
18908 })
18909
18910 return newTx
18911 }
18912
18913 /**
18914 * Hash transaction for signing a specific input.
18915 *
18916 * Bitcoin uses a different hash for each signed transaction input. This
18917 * method copies the transaction, makes the necessary changes based on the
18918 * hashType, serializes and finally hashes the result. This hash can then be
18919 * used to sign the transaction input in question.
18920 */
18921 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18922 // FIXME: remove in 2.x.y
18923 if (arguments[0] instanceof Script) {
18924 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18925
18926 // swap the arguments (must be stored in tmp, arguments is special)
18927 var tmp = arguments[0]
18928 inIndex = arguments[1]
18929 prevOutScript = tmp
18930 }
18931
18932 typeForce('Number', inIndex)
18933 typeForce('Script', prevOutScript)
18934 typeForce('Number', hashType)
18935
18936 assert(inIndex >= 0, 'Invalid vin index')
18937 assert(inIndex < this.ins.length, 'Invalid vin index')
18938
18939 var txTmp = this.clone()
18940 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18941
18942 // Blank out other inputs' signatures
18943 txTmp.ins.forEach(function (txIn) {
18944 txIn.script = Script.EMPTY
18945 })
18946 txTmp.ins[inIndex].script = hashScript
18947
18948 var hashTypeModifier = hashType & 0x1f
18949
18950 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18951 assert(false, 'SIGHASH_NONE not yet supported')
18952 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18953 assert(false, 'SIGHASH_SINGLE not yet supported')
18954 }
18955
18956 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18957 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18958 }
18959
18960 var hashTypeBuffer = new Buffer(4)
18961 hashTypeBuffer.writeInt32LE(hashType, 0)
18962
18963 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18964 return crypto.hash256(buffer)
18965 }
18966
18967 Transaction.prototype.getHash = function () {
18968 return crypto.hash256(this.toBuffer())
18969 }
18970
18971 Transaction.prototype.getId = function () {
18972 // TxHash is little-endian, we need big-endian
18973 return bufferutils.reverse(this.getHash()).toString('hex')
18974 }
18975
18976 Transaction.prototype.toBuffer = function () {
18977 function scriptSize (script) {
18978 var length = script.buffer.length
18979
18980 return bufferutils.varIntSize(length) + length
18981 }
18982
18983 var buffer = new Buffer(
18984 8 +
18985 bufferutils.varIntSize(this.ins.length) +
18986 bufferutils.varIntSize(this.outs.length) +
18987 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18988 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18989 )
18990
18991 var offset = 0
18992 function writeSlice (slice) {
18993 slice.copy(buffer, offset)
18994 offset += slice.length
18995 }
18996
18997 function writeUInt32 (i) {
18998 buffer.writeUInt32LE(i, offset)
18999 offset += 4
19000 }
19001
19002 function writeUInt64 (i) {
19003 bufferutils.writeUInt64LE(buffer, i, offset)
19004 offset += 8
19005 }
19006
19007 function writeVarInt (i) {
19008 var n = bufferutils.writeVarInt(buffer, i, offset)
19009 offset += n
19010 }
19011
19012 writeUInt32(this.version)
19013 writeVarInt(this.ins.length)
19014
19015 this.ins.forEach(function (txIn) {
19016 writeSlice(txIn.hash)
19017 writeUInt32(txIn.index)
19018 writeVarInt(txIn.script.buffer.length)
19019 writeSlice(txIn.script.buffer)
19020 writeUInt32(txIn.sequence)
19021 })
19022
19023 writeVarInt(this.outs.length)
19024 this.outs.forEach(function (txOut) {
19025 writeUInt64(txOut.value)
19026 writeVarInt(txOut.script.buffer.length)
19027 writeSlice(txOut.script.buffer)
19028 })
19029
19030 writeUInt32(this.locktime)
19031
19032 return buffer
19033 }
19034
19035 Transaction.prototype.toHex = function () {
19036 return this.toBuffer().toString('hex')
19037 }
19038
19039 Transaction.prototype.setInputScript = function (index, script) {
19040 typeForce('Number', index)
19041 typeForce('Script', script)
19042
19043 this.ins[index].script = script
19044 }
19045
19046 // FIXME: remove in 2.x.y
19047 Transaction.prototype.sign = function (index, privKey, hashType) {
19048 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19049
19050 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19051 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19052
19053 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19054 this.setInputScript(index, scriptSig)
19055 }
19056
19057 // FIXME: remove in 2.x.y
19058 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19059 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19060
19061 hashType = hashType || Transaction.SIGHASH_ALL
19062
19063 var hash = this.hashForSignature(index, prevOutScript, hashType)
19064 var signature = privKey.sign(hash)
19065
19066 return signature.toScriptSignature(hashType)
19067 }
19068
19069 // FIXME: remove in 2.x.y
19070 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19071 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19072
19073 var parsed = ECSignature.parseScriptSignature(buffer)
19074 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19075
19076 return pubKey.verify(hash, parsed.signature)
19077 }
19078
19079 module.exports = Transaction
19080
19081 }).call(this,require("buffer").Buffer)
19082 },{"./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){
19083 (function (Buffer){
19084 var assert = require('assert')
19085 var ops = require('./opcodes')
19086 var scripts = require('./scripts')
19087
19088 var ECPubKey = require('./ecpubkey')
19089 var ECSignature = require('./ecsignature')
19090 var Script = require('./script')
19091 var Transaction = require('./transaction')
19092
19093 function extractInput (txIn) {
19094 var redeemScript
19095 var scriptSig = txIn.script
19096 var prevOutScript
19097 var prevOutType = scripts.classifyInput(scriptSig, true)
19098 var scriptType
19099
19100 // Re-classify if scriptHash
19101 if (prevOutType === 'scripthash') {
19102 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19103 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19104
19105 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19106 scriptType = scripts.classifyInput(scriptSig, true)
19107 } else {
19108 scriptType = prevOutType
19109 }
19110
19111 // Extract hashType, pubKeys and signatures
19112 var hashType, parsed, pubKeys, signatures
19113
19114 switch (scriptType) {
19115 case 'pubkeyhash': {
19116 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19117 hashType = parsed.hashType
19118 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19119 signatures = [parsed.signature]
19120 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19121
19122 break
19123 }
19124
19125 case 'pubkey': {
19126 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19127 hashType = parsed.hashType
19128 signatures = [parsed.signature]
19129
19130 if (redeemScript) {
19131 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19132 }
19133
19134 break
19135 }
19136
19137 case 'multisig': {
19138 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19139 if (chunk === ops.OP_0) return chunk
19140
19141 var parsed = ECSignature.parseScriptSignature(chunk)
19142 hashType = parsed.hashType
19143
19144 return parsed.signature
19145 })
19146
19147 if (redeemScript) {
19148 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19149 }
19150
19151 break
19152 }
19153 }
19154
19155 return {
19156 hashType: hashType,
19157 prevOutScript: prevOutScript,
19158 prevOutType: prevOutType,
19159 pubKeys: pubKeys,
19160 redeemScript: redeemScript,
19161 scriptType: scriptType,
19162 signatures: signatures
19163 }
19164 }
19165
19166 function TransactionBuilder () {
19167 this.prevTxMap = {}
19168 this.prevOutScripts = {}
19169 this.prevOutTypes = {}
19170
19171 this.inputs = []
19172 this.tx = new Transaction()
19173 }
19174
19175 TransactionBuilder.fromTransaction = function (transaction) {
19176 var txb = new TransactionBuilder()
19177
19178 // Copy other transaction fields
19179 txb.tx.version = transaction.version
19180 txb.tx.locktime = transaction.locktime
19181
19182 // Extract/add inputs
19183 transaction.ins.forEach(function (txIn) {
19184 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19185 })
19186
19187 // Extract/add outputs
19188 transaction.outs.forEach(function (txOut) {
19189 txb.addOutput(txOut.script, txOut.value)
19190 })
19191
19192 // Extract/add signatures
19193 txb.inputs = transaction.ins.map(function (txIn) {
19194 // TODO: remove me after testcase added
19195 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19196
19197 // Ignore empty scripts
19198 if (txIn.script.buffer.length === 0) return {}
19199
19200 return extractInput(txIn)
19201 })
19202
19203 return txb
19204 }
19205
19206 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19207 var prevOutHash
19208
19209 // txId
19210 if (typeof prevTx === 'string') {
19211 prevOutHash = new Buffer(prevTx, 'hex')
19212
19213 // TxId hex is big-endian, we want little-endian hash
19214 Array.prototype.reverse.call(prevOutHash)
19215
19216 // Transaction
19217 } else if (prevTx instanceof Transaction) {
19218 prevOutHash = prevTx.getHash()
19219 prevOutScript = prevTx.outs[index].script
19220
19221 // txHash
19222 } else {
19223 prevOutHash = prevTx
19224 }
19225
19226 var input = {}
19227 if (prevOutScript) {
19228 var prevOutType = scripts.classifyOutput(prevOutScript)
19229
19230 // if we can, extract pubKey information
19231 switch (prevOutType) {
19232 case 'multisig': {
19233 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19234 break
19235 }
19236
19237 case 'pubkey': {
19238 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19239 break
19240 }
19241 }
19242
19243 if (prevOutType !== 'scripthash') {
19244 input.scriptType = prevOutType
19245 }
19246
19247 input.prevOutScript = prevOutScript
19248 input.prevOutType = prevOutType
19249 }
19250
19251 assert(this.inputs.every(function (input2) {
19252 if (input2.hashType === undefined) return true
19253
19254 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19255 }), 'No, this would invalidate signatures')
19256
19257 var prevOut = prevOutHash.toString('hex') + ':' + index
19258 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19259
19260 var vin = this.tx.addInput(prevOutHash, index, sequence)
19261 this.inputs[vin] = input
19262 this.prevTxMap[prevOut] = vin
19263
19264 return vin
19265 }
19266
19267 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19268 assert(this.inputs.every(function (input) {
19269 if (input.hashType === undefined) return true
19270
19271 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19272 }), 'No, this would invalidate signatures')
19273
19274 return this.tx.addOutput(scriptPubKey, value)
19275 }
19276
19277 TransactionBuilder.prototype.build = function () {
19278 return this.__build(false)
19279 }
19280 TransactionBuilder.prototype.buildIncomplete = function () {
19281 return this.__build(true)
19282 }
19283
19284 var canSignTypes = {
19285 'pubkeyhash': true,
19286 'multisig': true,
19287 'pubkey': true
19288 }
19289
19290 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19291 if (!allowIncomplete) {
19292 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19293 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19294 }
19295
19296 var tx = this.tx.clone()
19297
19298 // Create script signatures from signature meta-data
19299 this.inputs.forEach(function (input, index) {
19300 var scriptType = input.scriptType
19301 var scriptSig
19302
19303 if (!allowIncomplete) {
19304 assert(!!scriptType, 'Transaction is not complete')
19305 assert(scriptType in canSignTypes, scriptType + ' not supported')
19306 assert(input.signatures, 'Transaction is missing signatures')
19307 }
19308
19309 if (input.signatures) {
19310 switch (scriptType) {
19311 case 'pubkeyhash': {
19312 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19313 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19314 break
19315 }
19316
19317 case 'multisig': {
19318 // Array.prototype.map is sparse-compatible
19319 var msSignatures = input.signatures.map(function (signature) {
19320 return signature && signature.toScriptSignature(input.hashType)
19321 })
19322
19323 // fill in blanks with OP_0
19324 if (allowIncomplete) {
19325 for (var i = 0; i < msSignatures.length; ++i) {
19326 if (msSignatures[i]) continue
19327
19328 msSignatures[i] = ops.OP_0
19329 }
19330 } else {
19331 // Array.prototype.filter returns non-sparse array
19332 msSignatures = msSignatures.filter(function (x) { return x })
19333 }
19334
19335 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19336 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19337 break
19338 }
19339
19340 case 'pubkey': {
19341 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19342 scriptSig = scripts.pubKeyInput(pkSignature)
19343 break
19344 }
19345 }
19346 }
19347
19348 // did we build a scriptSig?
19349 if (scriptSig) {
19350 // wrap as scriptHash if necessary
19351 if (input.prevOutType === 'scripthash') {
19352 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19353 }
19354
19355 tx.setInputScript(index, scriptSig)
19356 }
19357 })
19358
19359 return tx
19360 }
19361
19362 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19363 assert(index in this.inputs, 'No input at index: ' + index)
19364 hashType = hashType || Transaction.SIGHASH_ALL
19365
19366 var input = this.inputs[index]
19367 var canSign = input.hashType &&
19368 input.prevOutScript &&
19369 input.prevOutType &&
19370 input.pubKeys &&
19371 input.scriptType &&
19372 input.signatures
19373
19374 // are we almost ready to sign?
19375 if (canSign) {
19376 // if redeemScript was provided, enforce consistency
19377 if (redeemScript) {
19378 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19379 }
19380
19381 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19382
19383 // no? prepare
19384 } else {
19385 // must be pay-to-scriptHash?
19386 if (redeemScript) {
19387 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19388 if (input.prevOutScript) {
19389 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19390
19391 var scriptHash = input.prevOutScript.chunks[1]
19392 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19393 }
19394
19395 var scriptType = scripts.classifyOutput(redeemScript)
19396 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19397
19398 var pubKeys = []
19399 switch (scriptType) {
19400 case 'multisig': {
19401 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19402 break
19403 }
19404
19405 case 'pubkeyhash': {
19406 var pkh1 = redeemScript.chunks[2]
19407 var pkh2 = privKey.pub.getAddress().hash
19408
19409 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19410 pubKeys = [privKey.pub]
19411 break
19412 }
19413
19414 case 'pubkey': {
19415 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19416 break
19417 }
19418 }
19419
19420 if (!input.prevOutScript) {
19421 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19422 input.prevOutType = 'scripthash'
19423 }
19424
19425 input.pubKeys = pubKeys
19426 input.redeemScript = redeemScript
19427 input.scriptType = scriptType
19428
19429 // cannot be pay-to-scriptHash
19430 } else {
19431 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19432
19433 // can we otherwise sign this?
19434 if (input.scriptType) {
19435 assert(input.pubKeys, input.scriptType + ' not supported')
19436
19437 // we know nothin' Jon Snow, assume pubKeyHash
19438 } else {
19439 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19440 input.prevOutType = 'pubkeyhash'
19441 input.pubKeys = [privKey.pub]
19442 input.scriptType = input.prevOutType
19443 }
19444 }
19445
19446 input.hashType = hashType
19447 input.signatures = input.signatures || []
19448 }
19449
19450 var signatureScript = input.redeemScript || input.prevOutScript
19451 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19452
19453 // enforce signature order matches public keys
19454 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19455 // maintain a local copy of unmatched signatures
19456 var unmatched = input.signatures.slice()
19457
19458 input.signatures = input.pubKeys.map(function (pubKey) {
19459 var match
19460
19461 // check for any matching signatures
19462 unmatched.some(function (signature, i) {
19463 if (!pubKey.verify(signatureHash, signature)) return false
19464 match = signature
19465
19466 // remove matched signature from unmatched
19467 unmatched.splice(i, 1)
19468
19469 return true
19470 })
19471
19472 return match || undefined
19473 })
19474 }
19475
19476 // enforce in order signing of public keys
19477 assert(input.pubKeys.some(function (pubKey, i) {
19478 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19479
19480 assert(!input.signatures[i], 'Signature already exists')
19481 var signature = privKey.sign(signatureHash)
19482 input.signatures[i] = signature
19483
19484 return true
19485 }, this), 'privateKey cannot sign for this input')
19486 }
19487
19488 module.exports = TransactionBuilder
19489
19490 }).call(this,require("buffer").Buffer)
19491 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19492 (function (Buffer){
19493 var assert = require('assert')
19494 var bufferutils = require('./bufferutils')
19495 var typeForce = require('typeforce')
19496 var networks = require('./networks')
19497 var randomBytes = require('randombytes')
19498
19499 var Address = require('./address')
19500 var HDNode = require('./hdnode')
19501 var TransactionBuilder = require('./transaction_builder')
19502 var Script = require('./script')
19503
19504 function Wallet (seed, network) {
19505 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19506
19507 seed = seed || randomBytes(32)
19508 network = network || networks.bitcoin
19509
19510 // Stored in a closure to make accidental serialization less likely
19511 var masterKey = HDNode.fromSeedBuffer(seed, network)
19512
19513 // HD first-level child derivation method should be hardened
19514 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19515 var accountZero = masterKey.deriveHardened(0)
19516 var externalAccount = accountZero.derive(0)
19517 var internalAccount = accountZero.derive(1)
19518
19519 this.addresses = []
19520 this.changeAddresses = []
19521 this.network = network
19522 this.unspents = []
19523
19524 // FIXME: remove in 2.0.0
19525 this.unspentMap = {}
19526
19527 // FIXME: remove in 2.0.0
19528 var me = this
19529 this.newMasterKey = function (seed) {
19530 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19531
19532 seed = seed || randomBytes(32)
19533 masterKey = HDNode.fromSeedBuffer(seed, network)
19534
19535 accountZero = masterKey.deriveHardened(0)
19536 externalAccount = accountZero.derive(0)
19537 internalAccount = accountZero.derive(1)
19538
19539 me.addresses = []
19540 me.changeAddresses = []
19541
19542 me.unspents = []
19543 me.unspentMap = {}
19544 }
19545
19546 this.getMasterKey = function () {
19547 return masterKey
19548 }
19549 this.getAccountZero = function () {
19550 return accountZero
19551 }
19552 this.getExternalAccount = function () {
19553 return externalAccount
19554 }
19555 this.getInternalAccount = function () {
19556 return internalAccount
19557 }
19558 }
19559
19560 Wallet.prototype.createTransaction = function (to, value, options) {
19561 // FIXME: remove in 2.0.0
19562 if (typeof options !== 'object') {
19563 if (options !== undefined) {
19564 console.warn('Non options object parameters are deprecated, use options object instead')
19565
19566 options = {
19567 fixedFee: arguments[2],
19568 changeAddress: arguments[3]
19569 }
19570 }
19571 }
19572
19573 options = options || {}
19574
19575 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19576
19577 var changeAddress = options.changeAddress
19578 var fixedFee = options.fixedFee
19579 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19580
19581 // filter by minConf, then pending and sort by descending value
19582 var unspents = this.unspents.filter(function (unspent) {
19583 return unspent.confirmations >= minConf
19584 }).filter(function (unspent) {
19585 return !unspent.pending
19586 }).sort(function (o1, o2) {
19587 return o2.value - o1.value
19588 })
19589
19590 var accum = 0
19591 var addresses = []
19592 var subTotal = value
19593
19594 var txb = new TransactionBuilder()
19595 txb.addOutput(to, value)
19596
19597 for (var i = 0; i < unspents.length; ++i) {
19598 var unspent = unspents[i]
19599 addresses.push(unspent.address)
19600
19601 txb.addInput(unspent.txHash, unspent.index)
19602
19603 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19604
19605 accum += unspent.value
19606 subTotal = value + fee
19607
19608 if (accum >= subTotal) {
19609 var change = accum - subTotal
19610
19611 if (change > this.network.dustThreshold) {
19612 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19613 }
19614
19615 break
19616 }
19617 }
19618
19619 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19620
19621 return this.signWith(txb, addresses).build()
19622 }
19623
19624 // FIXME: remove in 2.0.0
19625 Wallet.prototype.processPendingTx = function (tx) {
19626 this.__processTx(tx, true)
19627 }
19628
19629 // FIXME: remove in 2.0.0
19630 Wallet.prototype.processConfirmedTx = function (tx) {
19631 this.__processTx(tx, false)
19632 }
19633
19634 // FIXME: remove in 2.0.0
19635 Wallet.prototype.__processTx = function (tx, isPending) {
19636 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19637
19638 var txId = tx.getId()
19639 var txHash = tx.getHash()
19640
19641 tx.outs.forEach(function (txOut, i) {
19642 var address
19643
19644 try {
19645 address = Address.fromOutputScript(txOut.script, this.network).toString()
19646 } catch (e) {
19647 if (!(e.message.match(/has no matching Address/)))
19648 throw e
19649 }
19650
19651 var myAddresses = this.addresses.concat(this.changeAddresses)
19652 if (myAddresses.indexOf(address) > -1) {
19653 var lookup = txId + ':' + i
19654 if (lookup in this.unspentMap) return
19655
19656 // its unique, add it
19657 var unspent = {
19658 address: address,
19659 confirmations: 0, // no way to determine this without more information
19660 index: i,
19661 txHash: txHash,
19662 txId: txId,
19663 value: txOut.value,
19664 pending: isPending
19665 }
19666
19667 this.unspentMap[lookup] = unspent
19668 this.unspents.push(unspent)
19669 }
19670 }, this)
19671
19672 tx.ins.forEach(function (txIn) {
19673 // copy and convert to big-endian hex
19674 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19675
19676 var lookup = txInId + ':' + txIn.index
19677 if (!(lookup in this.unspentMap)) return
19678
19679 var unspent = this.unspentMap[lookup]
19680
19681 if (isPending) {
19682 unspent.pending = true
19683 unspent.spent = true
19684 } else {
19685 delete this.unspentMap[lookup]
19686
19687 this.unspents = this.unspents.filter(function (unspent2) {
19688 return unspent !== unspent2
19689 })
19690 }
19691 }, this)
19692 }
19693
19694 Wallet.prototype.generateAddress = function () {
19695 var k = this.addresses.length
19696 var address = this.getExternalAccount().derive(k).getAddress()
19697
19698 this.addresses.push(address.toString())
19699
19700 return this.getReceiveAddress()
19701 }
19702
19703 Wallet.prototype.generateChangeAddress = function () {
19704 var k = this.changeAddresses.length
19705 var address = this.getInternalAccount().derive(k).getAddress()
19706
19707 this.changeAddresses.push(address.toString())
19708
19709 return this.getChangeAddress()
19710 }
19711
19712 Wallet.prototype.getAddress = function () {
19713 if (this.addresses.length === 0) {
19714 this.generateAddress()
19715 }
19716
19717 return this.addresses[this.addresses.length - 1]
19718 }
19719
19720 Wallet.prototype.getBalance = function (minConf) {
19721 minConf = minConf || 0
19722
19723 return this.unspents.filter(function (unspent) {
19724 return unspent.confirmations >= minConf
19725
19726 // FIXME: remove spent filter in 2.0.0
19727 }).filter(function (unspent) {
19728 return !unspent.spent
19729 }).reduce(function (accum, unspent) {
19730 return accum + unspent.value
19731 }, 0)
19732 }
19733
19734 Wallet.prototype.getChangeAddress = function () {
19735 if (this.changeAddresses.length === 0) {
19736 this.generateChangeAddress()
19737 }
19738
19739 return this.changeAddresses[this.changeAddresses.length - 1]
19740 }
19741
19742 Wallet.prototype.getInternalPrivateKey = function (index) {
19743 return this.getInternalAccount().derive(index).privKey
19744 }
19745
19746 Wallet.prototype.getPrivateKey = function (index) {
19747 return this.getExternalAccount().derive(index).privKey
19748 }
19749
19750 Wallet.prototype.getPrivateKeyForAddress = function (address) {
19751 var index
19752
19753 if ((index = this.addresses.indexOf(address)) > -1) {
19754 return this.getPrivateKey(index)
19755 }
19756
19757 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19758 return this.getInternalPrivateKey(index)
19759 }
19760
19761 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
19762 }
19763
19764 Wallet.prototype.getUnspentOutputs = function (minConf) {
19765 minConf = minConf || 0
19766
19767 return this.unspents.filter(function (unspent) {
19768 return unspent.confirmations >= minConf
19769
19770 // FIXME: remove spent filter in 2.0.0
19771 }).filter(function (unspent) {
19772 return !unspent.spent
19773 }).map(function (unspent) {
19774 return {
19775 address: unspent.address,
19776 confirmations: unspent.confirmations,
19777 index: unspent.index,
19778 txId: unspent.txId,
19779 value: unspent.value,
19780
19781 // FIXME: remove in 2.0.0
19782 hash: unspent.txId,
19783 pending: unspent.pending
19784 }
19785 })
19786 }
19787
19788 Wallet.prototype.setUnspentOutputs = function (unspents) {
19789 this.unspentMap = {}
19790 this.unspents = unspents.map(function (unspent) {
19791 // FIXME: remove unspent.hash in 2.0.0
19792 var txId = unspent.txId || unspent.hash
19793 var index = unspent.index
19794
19795 // FIXME: remove in 2.0.0
19796 if (unspent.hash !== undefined) {
19797 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19798 }
19799
19800 // FIXME: remove in 2.0.0
19801 if (index === undefined) {
19802 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19803 index = unspent.outputIndex
19804 }
19805
19806 typeForce('String', txId)
19807 typeForce('Number', index)
19808 typeForce('Number', unspent.value)
19809
19810 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19811 assert.doesNotThrow(function () {
19812 Address.fromBase58Check(unspent.address)
19813 }, 'Expected Base58 Address, got ' + unspent.address)
19814 assert(isFinite(index), 'Expected finite index, got ' + index)
19815
19816 // FIXME: remove branch in 2.0.0
19817 if (unspent.confirmations !== undefined) {
19818 typeForce('Number', unspent.confirmations)
19819 }
19820
19821 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19822
19823 unspent = {
19824 address: unspent.address,
19825 confirmations: unspent.confirmations || 0,
19826 index: index,
19827 txHash: txHash,
19828 txId: txId,
19829 value: unspent.value,
19830
19831 // FIXME: remove in 2.0.0
19832 pending: unspent.pending || false
19833 }
19834
19835 // FIXME: remove in 2.0.0
19836 this.unspentMap[txId + ':' + index] = unspent
19837
19838 return unspent
19839 }, this)
19840 }
19841
19842 Wallet.prototype.signWith = function (tx, addresses) {
19843 addresses.forEach(function (address, i) {
19844 var privKey = this.getPrivateKeyForAddress(address)
19845
19846 tx.sign(i, privKey)
19847 }, this)
19848
19849 return tx
19850 }
19851
19852 function estimatePaddedFee (tx, network) {
19853 var tmpTx = tx.clone()
19854 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19855
19856 return network.estimateFee(tmpTx)
19857 }
19858
19859 // FIXME: 1.0.0 shims, remove in 2.0.0
19860 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19861 Wallet.prototype.createTx = Wallet.prototype.createTransaction
19862
19863 module.exports = Wallet
19864
19865 }).call(this,require("buffer").Buffer)
19866 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19867 });</script>
19868 <script>bitcoin.networks.shadow = {
19869 magicPrefix: '\x19ShadowCash Signed Message:\n',
19870 bip32: {
19871 public: 0xEE80286A,
19872 private: 0xEE8031E8
19873 },
19874 pubKeyHash: 0x3f,
19875 scriptHash: 0x7d,
19876 wif: 0xbf,
19877 dustThreshold: 0,
19878 feePerKb: 1000,
19879 estimateFee: function() { return "unused in this app" },
19880 };
19881
19882 bitcoin.networks.shadowtn = {
19883 magicPrefix: '\x19ShadowCash Signed Message:\n',
19884 bip32: {
19885 public: 0x76C0FDFB,
19886 private: 0x76C1077A
19887 },
19888 pubKeyHash: 0x7f,
19889 scriptHash: 0xc4,
19890 wif: 0xff,
19891 dustThreshold: 0,
19892 feePerKb: 1000,
19893 estimateFee: function() { return "unused in this app" },
19894 };
19895
19896 bitcoin.networks.clam = {
19897 bip32: {
19898 public: 0xa8c26d64,
19899 private: 0xa8c17826
19900 },
19901 pubKeyHash: 0x89,
19902 wif: 0x85,
19903 };
19904
19905 bitcoin.networks.crown = {
19906 bip32: {
19907 public: 0x0488b21e,
19908 private: 0x0488ade4
19909 },
19910 pubKeyHash: 0x00,
19911 scriptHash: 0x05,
19912 wif: 0x80,
19913 };
19914
19915 bitcoin.networks.dash = {
19916 bip32: {
19917 public: 0x0488b21e,
19918 private: 0x0488ade4
19919 },
19920 pubKeyHash: 0x4c,
19921 scriptHash: 0x10,
19922 wif: 0xcc,
19923 };
19924
19925 bitcoin.networks.dashtn = {
19926 bip32: {
19927 public: 0x043587cf,
19928 private: 0x04358394
19929 },
19930 pubKeyHash: 0x8c,
19931 scriptHash: 0x13,
19932 wif: 0xef,
19933 };
19934
19935 bitcoin.networks.game = {
19936 bip32: {
19937 public: 0x0488b21e,
19938 private: 0x0488ade4
19939 },
19940 pubKeyHash: 0x26,
19941 scriptHash: 0x05,
19942 wif: 0xa6,
19943 };
19944
19945 bitcoin.networks.namecoin = {
19946 bip32: {
19947 public: 0x0488b21e,
19948 private: 0x0488ade4
19949 },
19950 pubKeyHash: 0x34,
19951 //scriptHash: 0x10,
19952 wif: 0x80,
19953 };
19954
19955 bitcoin.networks.peercoin = {
19956 bip32: {
19957 public: 0x0488b21e,
19958 private: 0x0488ade4
19959 },
19960 pubKeyHash: 0x37,
19961 //scriptHash: 0x10,
19962 wif: 0xb7,
19963 };
19964
19965 bitcoin.networks.slimcoin = {
19966 bip32: {
19967 public: 0xef6adf10,
19968 private: 0xef69ea80
19969 },
19970 pubKeyHash: 0x3f,
19971 scriptHash: 0x7d,
19972 wif: 0x46,
19973 };
19974
19975 bitcoin.networks.slimcointn = {
19976 bip32: {
19977 public: 0x043587CF,
19978 private: 0x04358394
19979 },
19980 pubKeyHash: 0x6f,
19981 scriptHash: 0xc4,
19982 wif: 0x57,
19983 };
19984
19985 </script>
19986 <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){
19987 (function (global){
19988 'use strict';
19989
19990 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19991 // original notice:
19992
19993 /*!
19994 * The buffer module from node.js, for the browser.
19995 *
19996 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19997 * @license MIT
19998 */
19999 function compare(a, b) {
20000 if (a === b) {
20001 return 0;
20002 }
20003
20004 var x = a.length;
20005 var y = b.length;
20006
20007 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
20008 if (a[i] !== b[i]) {
20009 x = a[i];
20010 y = b[i];
20011 break;
20012 }
20013 }
20014
20015 if (x < y) {
20016 return -1;
20017 }
20018 if (y < x) {
20019 return 1;
20020 }
20021 return 0;
20022 }
20023 function isBuffer(b) {
20024 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
20025 return global.Buffer.isBuffer(b);
20026 }
20027 return !!(b != null && b._isBuffer);
20028 }
20029
20030 // based on node assert, original notice:
20031
20032 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
20033 //
20034 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
20035 //
20036 // Originally from narwhal.js (http://narwhaljs.org)
20037 // Copyright (c) 2009 Thomas Robinson <280north.com>
20038 //
20039 // Permission is hereby granted, free of charge, to any person obtaining a copy
20040 // of this software and associated documentation files (the 'Software'), to
20041 // deal in the Software without restriction, including without limitation the
20042 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
20043 // sell copies of the Software, and to permit persons to whom the Software is
20044 // furnished to do so, subject to the following conditions:
20045 //
20046 // The above copyright notice and this permission notice shall be included in
20047 // all copies or substantial portions of the Software.
20048 //
20049 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20050 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20051 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20052 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20053 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20054 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20055
20056 var util = require('util/');
20057 var hasOwn = Object.prototype.hasOwnProperty;
20058 var pSlice = Array.prototype.slice;
20059 var functionsHaveNames = (function () {
20060 return function foo() {}.name === 'foo';
20061 }());
20062 function pToString (obj) {
20063 return Object.prototype.toString.call(obj);
20064 }
20065 function isView(arrbuf) {
20066 if (isBuffer(arrbuf)) {
20067 return false;
20068 }
20069 if (typeof global.ArrayBuffer !== 'function') {
20070 return false;
20071 }
20072 if (typeof ArrayBuffer.isView === 'function') {
20073 return ArrayBuffer.isView(arrbuf);
20074 }
20075 if (!arrbuf) {
20076 return false;
20077 }
20078 if (arrbuf instanceof DataView) {
20079 return true;
20080 }
20081 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20082 return true;
20083 }
20084 return false;
20085 }
20086 // 1. The assert module provides functions that throw
20087 // AssertionError's when particular conditions are not met. The
20088 // assert module must conform to the following interface.
20089
20090 var assert = module.exports = ok;
20091
20092 // 2. The AssertionError is defined in assert.
20093 // new assert.AssertionError({ message: message,
20094 // actual: actual,
20095 // expected: expected })
20096
20097 var regex = /\s*function\s+([^\(\s]*)\s*/;
20098 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20099 function getName(func) {
20100 if (!util.isFunction(func)) {
20101 return;
20102 }
20103 if (functionsHaveNames) {
20104 return func.name;
20105 }
20106 var str = func.toString();
20107 var match = str.match(regex);
20108 return match && match[1];
20109 }
20110 assert.AssertionError = function AssertionError(options) {
20111 this.name = 'AssertionError';
20112 this.actual = options.actual;
20113 this.expected = options.expected;
20114 this.operator = options.operator;
20115 if (options.message) {
20116 this.message = options.message;
20117 this.generatedMessage = false;
20118 } else {
20119 this.message = getMessage(this);
20120 this.generatedMessage = true;
20121 }
20122 var stackStartFunction = options.stackStartFunction || fail;
20123 if (Error.captureStackTrace) {
20124 Error.captureStackTrace(this, stackStartFunction);
20125 } else {
20126 // non v8 browsers so we can have a stacktrace
20127 var err = new Error();
20128 if (err.stack) {
20129 var out = err.stack;
20130
20131 // try to strip useless frames
20132 var fn_name = getName(stackStartFunction);
20133 var idx = out.indexOf('\n' + fn_name);
20134 if (idx >= 0) {
20135 // once we have located the function frame
20136 // we need to strip out everything before it (and its line)
20137 var next_line = out.indexOf('\n', idx + 1);
20138 out = out.substring(next_line + 1);
20139 }
20140
20141 this.stack = out;
20142 }
20143 }
20144 };
20145
20146 // assert.AssertionError instanceof Error
20147 util.inherits(assert.AssertionError, Error);
20148
20149 function truncate(s, n) {
20150 if (typeof s === 'string') {
20151 return s.length < n ? s : s.slice(0, n);
20152 } else {
20153 return s;
20154 }
20155 }
20156 function inspect(something) {
20157 if (functionsHaveNames || !util.isFunction(something)) {
20158 return util.inspect(something);
20159 }
20160 var rawname = getName(something);
20161 var name = rawname ? ': ' + rawname : '';
20162 return '[Function' + name + ']';
20163 }
20164 function getMessage(self) {
20165 return truncate(inspect(self.actual), 128) + ' ' +
20166 self.operator + ' ' +
20167 truncate(inspect(self.expected), 128);
20168 }
20169
20170 // At present only the three keys mentioned above are used and
20171 // understood by the spec. Implementations or sub modules can pass
20172 // other keys to the AssertionError's constructor - they will be
20173 // ignored.
20174
20175 // 3. All of the following functions must throw an AssertionError
20176 // when a corresponding condition is not met, with a message that
20177 // may be undefined if not provided. All assertion methods provide
20178 // both the actual and expected values to the assertion error for
20179 // display purposes.
20180
20181 function fail(actual, expected, message, operator, stackStartFunction) {
20182 throw new assert.AssertionError({
20183 message: message,
20184 actual: actual,
20185 expected: expected,
20186 operator: operator,
20187 stackStartFunction: stackStartFunction
20188 });
20189 }
20190
20191 // EXTENSION! allows for well behaved errors defined elsewhere.
20192 assert.fail = fail;
20193
20194 // 4. Pure assertion tests whether a value is truthy, as determined
20195 // by !!guard.
20196 // assert.ok(guard, message_opt);
20197 // This statement is equivalent to assert.equal(true, !!guard,
20198 // message_opt);. To test strictly for the value true, use
20199 // assert.strictEqual(true, guard, message_opt);.
20200
20201 function ok(value, message) {
20202 if (!value) fail(value, true, message, '==', assert.ok);
20203 }
20204 assert.ok = ok;
20205
20206 // 5. The equality assertion tests shallow, coercive equality with
20207 // ==.
20208 // assert.equal(actual, expected, message_opt);
20209
20210 assert.equal = function equal(actual, expected, message) {
20211 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20212 };
20213
20214 // 6. The non-equality assertion tests for whether two objects are not equal
20215 // with != assert.notEqual(actual, expected, message_opt);
20216
20217 assert.notEqual = function notEqual(actual, expected, message) {
20218 if (actual == expected) {
20219 fail(actual, expected, message, '!=', assert.notEqual);
20220 }
20221 };
20222
20223 // 7. The equivalence assertion tests a deep equality relation.
20224 // assert.deepEqual(actual, expected, message_opt);
20225
20226 assert.deepEqual = function deepEqual(actual, expected, message) {
20227 if (!_deepEqual(actual, expected, false)) {
20228 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
20229 }
20230 };
20231
20232 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20233 if (!_deepEqual(actual, expected, true)) {
20234 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
20235 }
20236 };
20237
20238 function _deepEqual(actual, expected, strict, memos) {
20239 // 7.1. All identical values are equivalent, as determined by ===.
20240 if (actual === expected) {
20241 return true;
20242 } else if (isBuffer(actual) && isBuffer(expected)) {
20243 return compare(actual, expected) === 0;
20244
20245 // 7.2. If the expected value is a Date object, the actual value is
20246 // equivalent if it is also a Date object that refers to the same time.
20247 } else if (util.isDate(actual) && util.isDate(expected)) {
20248 return actual.getTime() === expected.getTime();
20249
20250 // 7.3 If the expected value is a RegExp object, the actual value is
20251 // equivalent if it is also a RegExp object with the same source and
20252 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20253 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20254 return actual.source === expected.source &&
20255 actual.global === expected.global &&
20256 actual.multiline === expected.multiline &&
20257 actual.lastIndex === expected.lastIndex &&
20258 actual.ignoreCase === expected.ignoreCase;
20259
20260 // 7.4. Other pairs that do not both pass typeof value == 'object',
20261 // equivalence is determined by ==.
20262 } else if ((actual === null || typeof actual !== 'object') &&
20263 (expected === null || typeof expected !== 'object')) {
20264 return strict ? actual === expected : actual == expected;
20265
20266 // If both values are instances of typed arrays, wrap their underlying
20267 // ArrayBuffers in a Buffer each to increase performance
20268 // This optimization requires the arrays to have the same type as checked by
20269 // Object.prototype.toString (aka pToString). Never perform binary
20270 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20271 // bit patterns are not identical.
20272 } else if (isView(actual) && isView(expected) &&
20273 pToString(actual) === pToString(expected) &&
20274 !(actual instanceof Float32Array ||
20275 actual instanceof Float64Array)) {
20276 return compare(new Uint8Array(actual.buffer),
20277 new Uint8Array(expected.buffer)) === 0;
20278
20279 // 7.5 For all other Object pairs, including Array objects, equivalence is
20280 // determined by having the same number of owned properties (as verified
20281 // with Object.prototype.hasOwnProperty.call), the same set of keys
20282 // (although not necessarily the same order), equivalent values for every
20283 // corresponding key, and an identical 'prototype' property. Note: this
20284 // accounts for both named and indexed properties on Arrays.
20285 } else if (isBuffer(actual) !== isBuffer(expected)) {
20286 return false;
20287 } else {
20288 memos = memos || {actual: [], expected: []};
20289
20290 var actualIndex = memos.actual.indexOf(actual);
20291 if (actualIndex !== -1) {
20292 if (actualIndex === memos.expected.indexOf(expected)) {
20293 return true;
20294 }
20295 }
20296
20297 memos.actual.push(actual);
20298 memos.expected.push(expected);
20299
20300 return objEquiv(actual, expected, strict, memos);
20301 }
20302 }
20303
20304 function isArguments(object) {
20305 return Object.prototype.toString.call(object) == '[object Arguments]';
20306 }
20307
20308 function objEquiv(a, b, strict, actualVisitedObjects) {
20309 if (a === null || a === undefined || b === null || b === undefined)
20310 return false;
20311 // if one is a primitive, the other must be same
20312 if (util.isPrimitive(a) || util.isPrimitive(b))
20313 return a === b;
20314 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20315 return false;
20316 var aIsArgs = isArguments(a);
20317 var bIsArgs = isArguments(b);
20318 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20319 return false;
20320 if (aIsArgs) {
20321 a = pSlice.call(a);
20322 b = pSlice.call(b);
20323 return _deepEqual(a, b, strict);
20324 }
20325 var ka = objectKeys(a);
20326 var kb = objectKeys(b);
20327 var key, i;
20328 // having the same number of owned properties (keys incorporates
20329 // hasOwnProperty)
20330 if (ka.length !== kb.length)
20331 return false;
20332 //the same set of keys (although not necessarily the same order),
20333 ka.sort();
20334 kb.sort();
20335 //~~~cheap key test
20336 for (i = ka.length - 1; i >= 0; i--) {
20337 if (ka[i] !== kb[i])
20338 return false;
20339 }
20340 //equivalent values for every corresponding key, and
20341 //~~~possibly expensive deep test
20342 for (i = ka.length - 1; i >= 0; i--) {
20343 key = ka[i];
20344 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20345 return false;
20346 }
20347 return true;
20348 }
20349
20350 // 8. The non-equivalence assertion tests for any deep inequality.
20351 // assert.notDeepEqual(actual, expected, message_opt);
20352
20353 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20354 if (_deepEqual(actual, expected, false)) {
20355 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
20356 }
20357 };
20358
20359 assert.notDeepStrictEqual = notDeepStrictEqual;
20360 function notDeepStrictEqual(actual, expected, message) {
20361 if (_deepEqual(actual, expected, true)) {
20362 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20363 }
20364 }
20365
20366
20367 // 9. The strict equality assertion tests strict equality, as determined by ===.
20368 // assert.strictEqual(actual, expected, message_opt);
20369
20370 assert.strictEqual = function strictEqual(actual, expected, message) {
20371 if (actual !== expected) {
20372 fail(actual, expected, message, '===', assert.strictEqual);
20373 }
20374 };
20375
20376 // 10. The strict non-equality assertion tests for strict inequality, as
20377 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
20378
20379 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20380 if (actual === expected) {
20381 fail(actual, expected, message, '!==', assert.notStrictEqual);
20382 }
20383 };
20384
20385 function expectedException(actual, expected) {
20386 if (!actual || !expected) {
20387 return false;
20388 }
20389
20390 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20391 return expected.test(actual);
20392 }
20393
20394 try {
20395 if (actual instanceof expected) {
20396 return true;
20397 }
20398 } catch (e) {
20399 // Ignore. The instanceof check doesn't work for arrow functions.
20400 }
20401
20402 if (Error.isPrototypeOf(expected)) {
20403 return false;
20404 }
20405
20406 return expected.call({}, actual) === true;
20407 }
20408
20409 function _tryBlock(block) {
20410 var error;
20411 try {
20412 block();
20413 } catch (e) {
20414 error = e;
20415 }
20416 return error;
20417 }
20418
20419 function _throws(shouldThrow, block, expected, message) {
20420 var actual;
20421
20422 if (typeof block !== 'function') {
20423 throw new TypeError('"block" argument must be a function');
20424 }
20425
20426 if (typeof expected === 'string') {
20427 message = expected;
20428 expected = null;
20429 }
20430
20431 actual = _tryBlock(block);
20432
20433 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20434 (message ? ' ' + message : '.');
20435
20436 if (shouldThrow && !actual) {
20437 fail(actual, expected, 'Missing expected exception' + message);
20438 }
20439
20440 var userProvidedMessage = typeof message === 'string';
20441 var isUnwantedException = !shouldThrow && util.isError(actual);
20442 var isUnexpectedException = !shouldThrow && actual && !expected;
20443
20444 if ((isUnwantedException &&
20445 userProvidedMessage &&
20446 expectedException(actual, expected)) ||
20447 isUnexpectedException) {
20448 fail(actual, expected, 'Got unwanted exception' + message);
20449 }
20450
20451 if ((shouldThrow && actual && expected &&
20452 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20453 throw actual;
20454 }
20455 }
20456
20457 // 11. Expected to throw an error:
20458 // assert.throws(block, Error_opt, message_opt);
20459
20460 assert.throws = function(block, /*optional*/error, /*optional*/message) {
20461 _throws(true, block, error, message);
20462 };
20463
20464 // EXTENSION! This is annoying to write outside this module.
20465 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20466 _throws(false, block, error, message);
20467 };
20468
20469 assert.ifError = function(err) { if (err) throw err; };
20470
20471 var objectKeys = Object.keys || function (obj) {
20472 var keys = [];
20473 for (var key in obj) {
20474 if (hasOwn.call(obj, key)) keys.push(key);
20475 }
20476 return keys;
20477 };
20478
20479 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20480 },{"util/":30}],2:[function(require,module,exports){
20481 'use strict'
20482
20483 exports.byteLength = byteLength
20484 exports.toByteArray = toByteArray
20485 exports.fromByteArray = fromByteArray
20486
20487 var lookup = []
20488 var revLookup = []
20489 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20490
20491 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20492 for (var i = 0, len = code.length; i < len; ++i) {
20493 lookup[i] = code[i]
20494 revLookup[code.charCodeAt(i)] = i
20495 }
20496
20497 revLookup['-'.charCodeAt(0)] = 62
20498 revLookup['_'.charCodeAt(0)] = 63
20499
20500 function placeHoldersCount (b64) {
20501 var len = b64.length
20502 if (len % 4 > 0) {
20503 throw new Error('Invalid string. Length must be a multiple of 4')
20504 }
20505
20506 // the number of equal signs (place holders)
20507 // if there are two placeholders, than the two characters before it
20508 // represent one byte
20509 // if there is only one, then the three characters before it represent 2 bytes
20510 // this is just a cheap hack to not do indexOf twice
20511 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
20512 }
20513
20514 function byteLength (b64) {
20515 // base64 is 4/3 + up to two characters of the original data
20516 return b64.length * 3 / 4 - placeHoldersCount(b64)
20517 }
20518
20519 function toByteArray (b64) {
20520 var i, j, l, tmp, placeHolders, arr
20521 var len = b64.length
20522 placeHolders = placeHoldersCount(b64)
20523
20524 arr = new Arr(len * 3 / 4 - placeHolders)
20525
20526 // if there are placeholders, only get up to the last complete 4 chars
20527 l = placeHolders > 0 ? len - 4 : len
20528
20529 var L = 0
20530
20531 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20532 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20533 arr[L++] = (tmp >> 16) & 0xFF
20534 arr[L++] = (tmp >> 8) & 0xFF
20535 arr[L++] = tmp & 0xFF
20536 }
20537
20538 if (placeHolders === 2) {
20539 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20540 arr[L++] = tmp & 0xFF
20541 } else if (placeHolders === 1) {
20542 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20543 arr[L++] = (tmp >> 8) & 0xFF
20544 arr[L++] = tmp & 0xFF
20545 }
20546
20547 return arr
20548 }
20549
20550 function tripletToBase64 (num) {
20551 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
20552 }
20553
20554 function encodeChunk (uint8, start, end) {
20555 var tmp
20556 var output = []
20557 for (var i = start; i < end; i += 3) {
20558 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20559 output.push(tripletToBase64(tmp))
20560 }
20561 return output.join('')
20562 }
20563
20564 function fromByteArray (uint8) {
20565 var tmp
20566 var len = uint8.length
20567 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20568 var output = ''
20569 var parts = []
20570 var maxChunkLength = 16383 // must be multiple of 3
20571
20572 // go through the array every three bytes, we'll deal with trailing stuff later
20573 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20574 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20575 }
20576
20577 // pad the end with zeros, but make sure to not forget the extra bytes
20578 if (extraBytes === 1) {
20579 tmp = uint8[len - 1]
20580 output += lookup[tmp >> 2]
20581 output += lookup[(tmp << 4) & 0x3F]
20582 output += '=='
20583 } else if (extraBytes === 2) {
20584 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20585 output += lookup[tmp >> 10]
20586 output += lookup[(tmp >> 4) & 0x3F]
20587 output += lookup[(tmp << 2) & 0x3F]
20588 output += '='
20589 }
20590
20591 parts.push(output)
20592
20593 return parts.join('')
20594 }
20595
20596 },{}],3:[function(require,module,exports){
20597
20598 },{}],4:[function(require,module,exports){
20599 (function (global){
20600 'use strict';
20601
20602 var buffer = require('buffer');
20603 var Buffer = buffer.Buffer;
20604 var SlowBuffer = buffer.SlowBuffer;
20605 var MAX_LEN = buffer.kMaxLength || 2147483647;
20606 exports.alloc = function alloc(size, fill, encoding) {
20607 if (typeof Buffer.alloc === 'function') {
20608 return Buffer.alloc(size, fill, encoding);
20609 }
20610 if (typeof encoding === 'number') {
20611 throw new TypeError('encoding must not be number');
20612 }
20613 if (typeof size !== 'number') {
20614 throw new TypeError('size must be a number');
20615 }
20616 if (size > MAX_LEN) {
20617 throw new RangeError('size is too large');
20618 }
20619 var enc = encoding;
20620 var _fill = fill;
20621 if (_fill === undefined) {
20622 enc = undefined;
20623 _fill = 0;
20624 }
20625 var buf = new Buffer(size);
20626 if (typeof _fill === 'string') {
20627 var fillBuf = new Buffer(_fill, enc);
20628 var flen = fillBuf.length;
20629 var i = -1;
20630 while (++i < size) {
20631 buf[i] = fillBuf[i % flen];
20632 }
20633 } else {
20634 buf.fill(_fill);
20635 }
20636 return buf;
20637 }
20638 exports.allocUnsafe = function allocUnsafe(size) {
20639 if (typeof Buffer.allocUnsafe === 'function') {
20640 return Buffer.allocUnsafe(size);
20641 }
20642 if (typeof size !== 'number') {
20643 throw new TypeError('size must be a number');
20644 }
20645 if (size > MAX_LEN) {
20646 throw new RangeError('size is too large');
20647 }
20648 return new Buffer(size);
20649 }
20650 exports.from = function from(value, encodingOrOffset, length) {
20651 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20652 return Buffer.from(value, encodingOrOffset, length);
20653 }
20654 if (typeof value === 'number') {
20655 throw new TypeError('"value" argument must not be a number');
20656 }
20657 if (typeof value === 'string') {
20658 return new Buffer(value, encodingOrOffset);
20659 }
20660 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20661 var offset = encodingOrOffset;
20662 if (arguments.length === 1) {
20663 return new Buffer(value);
20664 }
20665 if (typeof offset === 'undefined') {
20666 offset = 0;
20667 }
20668 var len = length;
20669 if (typeof len === 'undefined') {
20670 len = value.byteLength - offset;
20671 }
20672 if (offset >= value.byteLength) {
20673 throw new RangeError('\'offset\' is out of bounds');
20674 }
20675 if (len > value.byteLength - offset) {
20676 throw new RangeError('\'length\' is out of bounds');
20677 }
20678 return new Buffer(value.slice(offset, offset + len));
20679 }
20680 if (Buffer.isBuffer(value)) {
20681 var out = new Buffer(value.length);
20682 value.copy(out, 0, 0, value.length);
20683 return out;
20684 }
20685 if (value) {
20686 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20687 return new Buffer(value);
20688 }
20689 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20690 return new Buffer(value.data);
20691 }
20692 }
20693
20694 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
20695 }
20696 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20697 if (typeof Buffer.allocUnsafeSlow === 'function') {
20698 return Buffer.allocUnsafeSlow(size);
20699 }
20700 if (typeof size !== 'number') {
20701 throw new TypeError('size must be a number');
20702 }
20703 if (size >= MAX_LEN) {
20704 throw new RangeError('size is too large');
20705 }
20706 return new SlowBuffer(size);
20707 }
20708
20709 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20710 },{"buffer":5}],5:[function(require,module,exports){
20711 /*!
20712 * The buffer module from node.js, for the browser.
20713 *
20714 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20715 * @license MIT
20716 */
20717 /* eslint-disable no-proto */
20718
20719 'use strict'
20720
20721 var base64 = require('base64-js')
20722 var ieee754 = require('ieee754')
20723
20724 exports.Buffer = Buffer
20725 exports.SlowBuffer = SlowBuffer
20726 exports.INSPECT_MAX_BYTES = 50
20727
20728 var K_MAX_LENGTH = 0x7fffffff
20729 exports.kMaxLength = K_MAX_LENGTH
20730
20731 /**
20732 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20733 * === true Use Uint8Array implementation (fastest)
20734 * === false Print warning and recommend using `buffer` v4.x which has an Object
20735 * implementation (most compatible, even IE6)
20736 *
20737 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20738 * Opera 11.6+, iOS 4.2+.
20739 *
20740 * We report that the browser does not support typed arrays if the are not subclassable
20741 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20742 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20743 * for __proto__ and has a buggy typed array implementation.
20744 */
20745 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20746
20747 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20748 typeof console.error === 'function') {
20749 console.error(
20750 'This browser lacks typed array (Uint8Array) support which is required by ' +
20751 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20752 )
20753 }
20754
20755 function typedArraySupport () {
20756 // Can typed array instances can be augmented?
20757 try {
20758 var arr = new Uint8Array(1)
20759 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20760 return arr.foo() === 42
20761 } catch (e) {
20762 return false
20763 }
20764 }
20765
20766 function createBuffer (length) {
20767 if (length > K_MAX_LENGTH) {
20768 throw new RangeError('Invalid typed array length')
20769 }
20770 // Return an augmented `Uint8Array` instance
20771 var buf = new Uint8Array(length)
20772 buf.__proto__ = Buffer.prototype
20773 return buf
20774 }
20775
20776 /**
20777 * The Buffer constructor returns instances of `Uint8Array` that have their
20778 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20779 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20780 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20781 * returns a single octet.
20782 *
20783 * The `Uint8Array` prototype remains unmodified.
20784 */
20785
20786 function Buffer (arg, encodingOrOffset, length) {
20787 // Common case.
20788 if (typeof arg === 'number') {
20789 if (typeof encodingOrOffset === 'string') {
20790 throw new Error(
20791 'If encoding is specified then the first argument must be a string'
20792 )
20793 }
20794 return allocUnsafe(arg)
20795 }
20796 return from(arg, encodingOrOffset, length)
20797 }
20798
20799 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20800 if (typeof Symbol !== 'undefined' && Symbol.species &&
20801 Buffer[Symbol.species] === Buffer) {
20802 Object.defineProperty(Buffer, Symbol.species, {
20803 value: null,
20804 configurable: true,
20805 enumerable: false,
20806 writable: false
20807 })
20808 }
20809
20810 Buffer.poolSize = 8192 // not used by this implementation
20811
20812 function from (value, encodingOrOffset, length) {
20813 if (typeof value === 'number') {
20814 throw new TypeError('"value" argument must not be a number')
20815 }
20816
20817 if (value instanceof ArrayBuffer) {
20818 return fromArrayBuffer(value, encodingOrOffset, length)
20819 }
20820
20821 if (typeof value === 'string') {
20822 return fromString(value, encodingOrOffset)
20823 }
20824
20825 return fromObject(value)
20826 }
20827
20828 /**
20829 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20830 * if value is a number.
20831 * Buffer.from(str[, encoding])
20832 * Buffer.from(array)
20833 * Buffer.from(buffer)
20834 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20835 **/
20836 Buffer.from = function (value, encodingOrOffset, length) {
20837 return from(value, encodingOrOffset, length)
20838 }
20839
20840 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20841 // https://github.com/feross/buffer/pull/148
20842 Buffer.prototype.__proto__ = Uint8Array.prototype
20843 Buffer.__proto__ = Uint8Array
20844
20845 function assertSize (size) {
20846 if (typeof size !== 'number') {
20847 throw new TypeError('"size" argument must be a number')
20848 } else if (size < 0) {
20849 throw new RangeError('"size" argument must not be negative')
20850 }
20851 }
20852
20853 function alloc (size, fill, encoding) {
20854 assertSize(size)
20855 if (size <= 0) {
20856 return createBuffer(size)
20857 }
20858 if (fill !== undefined) {
20859 // Only pay attention to encoding if it's a string. This
20860 // prevents accidentally sending in a number that would
20861 // be interpretted as a start offset.
20862 return typeof encoding === 'string'
20863 ? createBuffer(size).fill(fill, encoding)
20864 : createBuffer(size).fill(fill)
20865 }
20866 return createBuffer(size)
20867 }
20868
20869 /**
20870 * Creates a new filled Buffer instance.
20871 * alloc(size[, fill[, encoding]])
20872 **/
20873 Buffer.alloc = function (size, fill, encoding) {
20874 return alloc(size, fill, encoding)
20875 }
20876
20877 function allocUnsafe (size) {
20878 assertSize(size)
20879 return createBuffer(size < 0 ? 0 : checked(size) | 0)
20880 }
20881
20882 /**
20883 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20884 * */
20885 Buffer.allocUnsafe = function (size) {
20886 return allocUnsafe(size)
20887 }
20888 /**
20889 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20890 */
20891 Buffer.allocUnsafeSlow = function (size) {
20892 return allocUnsafe(size)
20893 }
20894
20895 function fromString (string, encoding) {
20896 if (typeof encoding !== 'string' || encoding === '') {
20897 encoding = 'utf8'
20898 }
20899
20900 if (!Buffer.isEncoding(encoding)) {
20901 throw new TypeError('"encoding" must be a valid string encoding')
20902 }
20903
20904 var length = byteLength(string, encoding) | 0
20905 var buf = createBuffer(length)
20906
20907 var actual = buf.write(string, encoding)
20908
20909 if (actual !== length) {
20910 // Writing a hex string, for example, that contains invalid characters will
20911 // cause everything after the first invalid character to be ignored. (e.g.
20912 // 'abxxcd' will be treated as 'ab')
20913 buf = buf.slice(0, actual)
20914 }
20915
20916 return buf
20917 }
20918
20919 function fromArrayLike (array) {
20920 var length = array.length < 0 ? 0 : checked(array.length) | 0
20921 var buf = createBuffer(length)
20922 for (var i = 0; i < length; i += 1) {
20923 buf[i] = array[i] & 255
20924 }
20925 return buf
20926 }
20927
20928 function fromArrayBuffer (array, byteOffset, length) {
20929 if (byteOffset < 0 || array.byteLength < byteOffset) {
20930 throw new RangeError('\'offset\' is out of bounds')
20931 }
20932
20933 if (array.byteLength < byteOffset + (length || 0)) {
20934 throw new RangeError('\'length\' is out of bounds')
20935 }
20936
20937 var buf
20938 if (byteOffset === undefined && length === undefined) {
20939 buf = new Uint8Array(array)
20940 } else if (length === undefined) {
20941 buf = new Uint8Array(array, byteOffset)
20942 } else {
20943 buf = new Uint8Array(array, byteOffset, length)
20944 }
20945
20946 // Return an augmented `Uint8Array` instance
20947 buf.__proto__ = Buffer.prototype
20948 return buf
20949 }
20950
20951 function fromObject (obj) {
20952 if (Buffer.isBuffer(obj)) {
20953 var len = checked(obj.length) | 0
20954 var buf = createBuffer(len)
20955
20956 if (buf.length === 0) {
20957 return buf
20958 }
20959
20960 obj.copy(buf, 0, 0, len)
20961 return buf
20962 }
20963
20964 if (obj) {
20965 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20966 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20967 return createBuffer(0)
20968 }
20969 return fromArrayLike(obj)
20970 }
20971
20972 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20973 return fromArrayLike(obj.data)
20974 }
20975 }
20976
20977 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
20978 }
20979
20980 function checked (length) {
20981 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20982 // length is NaN (which is otherwise coerced to zero.)
20983 if (length >= K_MAX_LENGTH) {
20984 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20985 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
20986 }
20987 return length | 0
20988 }
20989
20990 function SlowBuffer (length) {
20991 if (+length != length) { // eslint-disable-line eqeqeq
20992 length = 0
20993 }
20994 return Buffer.alloc(+length)
20995 }
20996
20997 Buffer.isBuffer = function isBuffer (b) {
20998 return b != null && b._isBuffer === true
20999 }
21000
21001 Buffer.compare = function compare (a, b) {
21002 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
21003 throw new TypeError('Arguments must be Buffers')
21004 }
21005
21006 if (a === b) return 0
21007
21008 var x = a.length
21009 var y = b.length
21010
21011 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
21012 if (a[i] !== b[i]) {
21013 x = a[i]
21014 y = b[i]
21015 break
21016 }
21017 }
21018
21019 if (x < y) return -1
21020 if (y < x) return 1
21021 return 0
21022 }
21023
21024 Buffer.isEncoding = function isEncoding (encoding) {
21025 switch (String(encoding).toLowerCase()) {
21026 case 'hex':
21027 case 'utf8':
21028 case 'utf-8':
21029 case 'ascii':
21030 case 'latin1':
21031 case 'binary':
21032 case 'base64':
21033 case 'ucs2':
21034 case 'ucs-2':
21035 case 'utf16le':
21036 case 'utf-16le':
21037 return true
21038 default:
21039 return false
21040 }
21041 }
21042
21043 Buffer.concat = function concat (list, length) {
21044 if (!Array.isArray(list)) {
21045 throw new TypeError('"list" argument must be an Array of Buffers')
21046 }
21047
21048 if (list.length === 0) {
21049 return Buffer.alloc(0)
21050 }
21051
21052 var i
21053 if (length === undefined) {
21054 length = 0
21055 for (i = 0; i < list.length; ++i) {
21056 length += list[i].length
21057 }
21058 }
21059
21060 var buffer = Buffer.allocUnsafe(length)
21061 var pos = 0
21062 for (i = 0; i < list.length; ++i) {
21063 var buf = list[i]
21064 if (!Buffer.isBuffer(buf)) {
21065 throw new TypeError('"list" argument must be an Array of Buffers')
21066 }
21067 buf.copy(buffer, pos)
21068 pos += buf.length
21069 }
21070 return buffer
21071 }
21072
21073 function byteLength (string, encoding) {
21074 if (Buffer.isBuffer(string)) {
21075 return string.length
21076 }
21077 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21078 return string.byteLength
21079 }
21080 if (typeof string !== 'string') {
21081 string = '' + string
21082 }
21083
21084 var len = string.length
21085 if (len === 0) return 0
21086
21087 // Use a for loop to avoid recursion
21088 var loweredCase = false
21089 for (;;) {
21090 switch (encoding) {
21091 case 'ascii':
21092 case 'latin1':
21093 case 'binary':
21094 return len
21095 case 'utf8':
21096 case 'utf-8':
21097 case undefined:
21098 return utf8ToBytes(string).length
21099 case 'ucs2':
21100 case 'ucs-2':
21101 case 'utf16le':
21102 case 'utf-16le':
21103 return len * 2
21104 case 'hex':
21105 return len >>> 1
21106 case 'base64':
21107 return base64ToBytes(string).length
21108 default:
21109 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21110 encoding = ('' + encoding).toLowerCase()
21111 loweredCase = true
21112 }
21113 }
21114 }
21115 Buffer.byteLength = byteLength
21116
21117 function slowToString (encoding, start, end) {
21118 var loweredCase = false
21119
21120 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21121 // property of a typed array.
21122
21123 // This behaves neither like String nor Uint8Array in that we set start/end
21124 // to their upper/lower bounds if the value passed is out of range.
21125 // undefined is handled specially as per ECMA-262 6th Edition,
21126 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21127 if (start === undefined || start < 0) {
21128 start = 0
21129 }
21130 // Return early if start > this.length. Done here to prevent potential uint32
21131 // coercion fail below.
21132 if (start > this.length) {
21133 return ''
21134 }
21135
21136 if (end === undefined || end > this.length) {
21137 end = this.length
21138 }
21139
21140 if (end <= 0) {
21141 return ''
21142 }
21143
21144 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21145 end >>>= 0
21146 start >>>= 0
21147
21148 if (end <= start) {
21149 return ''
21150 }
21151
21152 if (!encoding) encoding = 'utf8'
21153
21154 while (true) {
21155 switch (encoding) {
21156 case 'hex':
21157 return hexSlice(this, start, end)
21158
21159 case 'utf8':
21160 case 'utf-8':
21161 return utf8Slice(this, start, end)
21162
21163 case 'ascii':
21164 return asciiSlice(this, start, end)
21165
21166 case 'latin1':
21167 case 'binary':
21168 return latin1Slice(this, start, end)
21169
21170 case 'base64':
21171 return base64Slice(this, start, end)
21172
21173 case 'ucs2':
21174 case 'ucs-2':
21175 case 'utf16le':
21176 case 'utf-16le':
21177 return utf16leSlice(this, start, end)
21178
21179 default:
21180 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21181 encoding = (encoding + '').toLowerCase()
21182 loweredCase = true
21183 }
21184 }
21185 }
21186
21187 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21188 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21189 // reliably in a browserify context because there could be multiple different
21190 // copies of the 'buffer' package in use. This method works even for Buffer
21191 // instances that were created from another copy of the `buffer` package.
21192 // See: https://github.com/feross/buffer/issues/154
21193 Buffer.prototype._isBuffer = true
21194
21195 function swap (b, n, m) {
21196 var i = b[n]
21197 b[n] = b[m]
21198 b[m] = i
21199 }
21200
21201 Buffer.prototype.swap16 = function swap16 () {
21202 var len = this.length
21203 if (len % 2 !== 0) {
21204 throw new RangeError('Buffer size must be a multiple of 16-bits')
21205 }
21206 for (var i = 0; i < len; i += 2) {
21207 swap(this, i, i + 1)
21208 }
21209 return this
21210 }
21211
21212 Buffer.prototype.swap32 = function swap32 () {
21213 var len = this.length
21214 if (len % 4 !== 0) {
21215 throw new RangeError('Buffer size must be a multiple of 32-bits')
21216 }
21217 for (var i = 0; i < len; i += 4) {
21218 swap(this, i, i + 3)
21219 swap(this, i + 1, i + 2)
21220 }
21221 return this
21222 }
21223
21224 Buffer.prototype.swap64 = function swap64 () {
21225 var len = this.length
21226 if (len % 8 !== 0) {
21227 throw new RangeError('Buffer size must be a multiple of 64-bits')
21228 }
21229 for (var i = 0; i < len; i += 8) {
21230 swap(this, i, i + 7)
21231 swap(this, i + 1, i + 6)
21232 swap(this, i + 2, i + 5)
21233 swap(this, i + 3, i + 4)
21234 }
21235 return this
21236 }
21237
21238 Buffer.prototype.toString = function toString () {
21239 var length = this.length
21240 if (length === 0) return ''
21241 if (arguments.length === 0) return utf8Slice(this, 0, length)
21242 return slowToString.apply(this, arguments)
21243 }
21244
21245 Buffer.prototype.equals = function equals (b) {
21246 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21247 if (this === b) return true
21248 return Buffer.compare(this, b) === 0
21249 }
21250
21251 Buffer.prototype.inspect = function inspect () {
21252 var str = ''
21253 var max = exports.INSPECT_MAX_BYTES
21254 if (this.length > 0) {
21255 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21256 if (this.length > max) str += ' ... '
21257 }
21258 return '<Buffer ' + str + '>'
21259 }
21260
21261 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21262 if (!Buffer.isBuffer(target)) {
21263 throw new TypeError('Argument must be a Buffer')
21264 }
21265
21266 if (start === undefined) {
21267 start = 0
21268 }
21269 if (end === undefined) {
21270 end = target ? target.length : 0
21271 }
21272 if (thisStart === undefined) {
21273 thisStart = 0
21274 }
21275 if (thisEnd === undefined) {
21276 thisEnd = this.length
21277 }
21278
21279 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21280 throw new RangeError('out of range index')
21281 }
21282
21283 if (thisStart >= thisEnd && start >= end) {
21284 return 0
21285 }
21286 if (thisStart >= thisEnd) {
21287 return -1
21288 }
21289 if (start >= end) {
21290 return 1
21291 }
21292
21293 start >>>= 0
21294 end >>>= 0
21295 thisStart >>>= 0
21296 thisEnd >>>= 0
21297
21298 if (this === target) return 0
21299
21300 var x = thisEnd - thisStart
21301 var y = end - start
21302 var len = Math.min(x, y)
21303
21304 var thisCopy = this.slice(thisStart, thisEnd)
21305 var targetCopy = target.slice(start, end)
21306
21307 for (var i = 0; i < len; ++i) {
21308 if (thisCopy[i] !== targetCopy[i]) {
21309 x = thisCopy[i]
21310 y = targetCopy[i]
21311 break
21312 }
21313 }
21314
21315 if (x < y) return -1
21316 if (y < x) return 1
21317 return 0
21318 }
21319
21320 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21321 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
21322 //
21323 // Arguments:
21324 // - buffer - a Buffer to search
21325 // - val - a string, Buffer, or number
21326 // - byteOffset - an index into `buffer`; will be clamped to an int32
21327 // - encoding - an optional encoding, relevant is val is a string
21328 // - dir - true for indexOf, false for lastIndexOf
21329 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21330 // Empty buffer means no match
21331 if (buffer.length === 0) return -1
21332
21333 // Normalize byteOffset
21334 if (typeof byteOffset === 'string') {
21335 encoding = byteOffset
21336 byteOffset = 0
21337 } else if (byteOffset > 0x7fffffff) {
21338 byteOffset = 0x7fffffff
21339 } else if (byteOffset < -0x80000000) {
21340 byteOffset = -0x80000000
21341 }
21342 byteOffset = +byteOffset // Coerce to Number.
21343 if (isNaN(byteOffset)) {
21344 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21345 byteOffset = dir ? 0 : (buffer.length - 1)
21346 }
21347
21348 // Normalize byteOffset: negative offsets start from the end of the buffer
21349 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21350 if (byteOffset >= buffer.length) {
21351 if (dir) return -1
21352 else byteOffset = buffer.length - 1
21353 } else if (byteOffset < 0) {
21354 if (dir) byteOffset = 0
21355 else return -1
21356 }
21357
21358 // Normalize val
21359 if (typeof val === 'string') {
21360 val = Buffer.from(val, encoding)
21361 }
21362
21363 // Finally, search either indexOf (if dir is true) or lastIndexOf
21364 if (Buffer.isBuffer(val)) {
21365 // Special case: looking for empty string/buffer always fails
21366 if (val.length === 0) {
21367 return -1
21368 }
21369 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21370 } else if (typeof val === 'number') {
21371 val = val & 0xFF // Search for a byte value [0-255]
21372 if (typeof Uint8Array.prototype.indexOf === 'function') {
21373 if (dir) {
21374 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21375 } else {
21376 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21377 }
21378 }
21379 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21380 }
21381
21382 throw new TypeError('val must be string, number or Buffer')
21383 }
21384
21385 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21386 var indexSize = 1
21387 var arrLength = arr.length
21388 var valLength = val.length
21389
21390 if (encoding !== undefined) {
21391 encoding = String(encoding).toLowerCase()
21392 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21393 encoding === 'utf16le' || encoding === 'utf-16le') {
21394 if (arr.length < 2 || val.length < 2) {
21395 return -1
21396 }
21397 indexSize = 2
21398 arrLength /= 2
21399 valLength /= 2
21400 byteOffset /= 2
21401 }
21402 }
21403
21404 function read (buf, i) {
21405 if (indexSize === 1) {
21406 return buf[i]
21407 } else {
21408 return buf.readUInt16BE(i * indexSize)
21409 }
21410 }
21411
21412 var i
21413 if (dir) {
21414 var foundIndex = -1
21415 for (i = byteOffset; i < arrLength; i++) {
21416 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21417 if (foundIndex === -1) foundIndex = i
21418 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21419 } else {
21420 if (foundIndex !== -1) i -= i - foundIndex
21421 foundIndex = -1
21422 }
21423 }
21424 } else {
21425 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21426 for (i = byteOffset; i >= 0; i--) {
21427 var found = true
21428 for (var j = 0; j < valLength; j++) {
21429 if (read(arr, i + j) !== read(val, j)) {
21430 found = false
21431 break
21432 }
21433 }
21434 if (found) return i
21435 }
21436 }
21437
21438 return -1
21439 }
21440
21441 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21442 return this.indexOf(val, byteOffset, encoding) !== -1
21443 }
21444
21445 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21446 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21447 }
21448
21449 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21450 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21451 }
21452
21453 function hexWrite (buf, string, offset, length) {
21454 offset = Number(offset) || 0
21455 var remaining = buf.length - offset
21456 if (!length) {
21457 length = remaining
21458 } else {
21459 length = Number(length)
21460 if (length > remaining) {
21461 length = remaining
21462 }
21463 }
21464
21465 // must be an even number of digits
21466 var strLen = string.length
21467 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
21468
21469 if (length > strLen / 2) {
21470 length = strLen / 2
21471 }
21472 for (var i = 0; i < length; ++i) {
21473 var parsed = parseInt(string.substr(i * 2, 2), 16)
21474 if (isNaN(parsed)) return i
21475 buf[offset + i] = parsed
21476 }
21477 return i
21478 }
21479
21480 function utf8Write (buf, string, offset, length) {
21481 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
21482 }
21483
21484 function asciiWrite (buf, string, offset, length) {
21485 return blitBuffer(asciiToBytes(string), buf, offset, length)
21486 }
21487
21488 function latin1Write (buf, string, offset, length) {
21489 return asciiWrite(buf, string, offset, length)
21490 }
21491
21492 function base64Write (buf, string, offset, length) {
21493 return blitBuffer(base64ToBytes(string), buf, offset, length)
21494 }
21495
21496 function ucs2Write (buf, string, offset, length) {
21497 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21498 }
21499
21500 Buffer.prototype.write = function write (string, offset, length, encoding) {
21501 // Buffer#write(string)
21502 if (offset === undefined) {
21503 encoding = 'utf8'
21504 length = this.length
21505 offset = 0
21506 // Buffer#write(string, encoding)
21507 } else if (length === undefined && typeof offset === 'string') {
21508 encoding = offset
21509 length = this.length
21510 offset = 0
21511 // Buffer#write(string, offset[, length][, encoding])
21512 } else if (isFinite(offset)) {
21513 offset = offset >>> 0
21514 if (isFinite(length)) {
21515 length = length >>> 0
21516 if (encoding === undefined) encoding = 'utf8'
21517 } else {
21518 encoding = length
21519 length = undefined
21520 }
21521 } else {
21522 throw new Error(
21523 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21524 )
21525 }
21526
21527 var remaining = this.length - offset
21528 if (length === undefined || length > remaining) length = remaining
21529
21530 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21531 throw new RangeError('Attempt to write outside buffer bounds')
21532 }
21533
21534 if (!encoding) encoding = 'utf8'
21535
21536 var loweredCase = false
21537 for (;;) {
21538 switch (encoding) {
21539 case 'hex':
21540 return hexWrite(this, string, offset, length)
21541
21542 case 'utf8':
21543 case 'utf-8':
21544 return utf8Write(this, string, offset, length)
21545
21546 case 'ascii':
21547 return asciiWrite(this, string, offset, length)
21548
21549 case 'latin1':
21550 case 'binary':
21551 return latin1Write(this, string, offset, length)
21552
21553 case 'base64':
21554 // Warning: maxLength not taken into account in base64Write
21555 return base64Write(this, string, offset, length)
21556
21557 case 'ucs2':
21558 case 'ucs-2':
21559 case 'utf16le':
21560 case 'utf-16le':
21561 return ucs2Write(this, string, offset, length)
21562
21563 default:
21564 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21565 encoding = ('' + encoding).toLowerCase()
21566 loweredCase = true
21567 }
21568 }
21569 }
21570
21571 Buffer.prototype.toJSON = function toJSON () {
21572 return {
21573 type: 'Buffer',
21574 data: Array.prototype.slice.call(this._arr || this, 0)
21575 }
21576 }
21577
21578 function base64Slice (buf, start, end) {
21579 if (start === 0 && end === buf.length) {
21580 return base64.fromByteArray(buf)
21581 } else {
21582 return base64.fromByteArray(buf.slice(start, end))
21583 }
21584 }
21585
21586 function utf8Slice (buf, start, end) {
21587 end = Math.min(buf.length, end)
21588 var res = []
21589
21590 var i = start
21591 while (i < end) {
21592 var firstByte = buf[i]
21593 var codePoint = null
21594 var bytesPerSequence = (firstByte > 0xEF) ? 4
21595 : (firstByte > 0xDF) ? 3
21596 : (firstByte > 0xBF) ? 2
21597 : 1
21598
21599 if (i + bytesPerSequence <= end) {
21600 var secondByte, thirdByte, fourthByte, tempCodePoint
21601
21602 switch (bytesPerSequence) {
21603 case 1:
21604 if (firstByte < 0x80) {
21605 codePoint = firstByte
21606 }
21607 break
21608 case 2:
21609 secondByte = buf[i + 1]
21610 if ((secondByte & 0xC0) === 0x80) {
21611 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21612 if (tempCodePoint > 0x7F) {
21613 codePoint = tempCodePoint
21614 }
21615 }
21616 break
21617 case 3:
21618 secondByte = buf[i + 1]
21619 thirdByte = buf[i + 2]
21620 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21621 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21622 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21623 codePoint = tempCodePoint
21624 }
21625 }
21626 break
21627 case 4:
21628 secondByte = buf[i + 1]
21629 thirdByte = buf[i + 2]
21630 fourthByte = buf[i + 3]
21631 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21632 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21633 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21634 codePoint = tempCodePoint
21635 }
21636 }
21637 }
21638 }
21639
21640 if (codePoint === null) {
21641 // we did not generate a valid codePoint so insert a
21642 // replacement char (U+FFFD) and advance only 1 byte
21643 codePoint = 0xFFFD
21644 bytesPerSequence = 1
21645 } else if (codePoint > 0xFFFF) {
21646 // encode to utf16 (surrogate pair dance)
21647 codePoint -= 0x10000
21648 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21649 codePoint = 0xDC00 | codePoint & 0x3FF
21650 }
21651
21652 res.push(codePoint)
21653 i += bytesPerSequence
21654 }
21655
21656 return decodeCodePointsArray(res)
21657 }
21658
21659 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
21660 // the lowest limit is Chrome, with 0x10000 args.
21661 // We go 1 magnitude less, for safety
21662 var MAX_ARGUMENTS_LENGTH = 0x1000
21663
21664 function decodeCodePointsArray (codePoints) {
21665 var len = codePoints.length
21666 if (len <= MAX_ARGUMENTS_LENGTH) {
21667 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
21668 }
21669
21670 // Decode in chunks to avoid "call stack size exceeded".
21671 var res = ''
21672 var i = 0
21673 while (i < len) {
21674 res += String.fromCharCode.apply(
21675 String,
21676 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21677 )
21678 }
21679 return res
21680 }
21681
21682 function asciiSlice (buf, start, end) {
21683 var ret = ''
21684 end = Math.min(buf.length, end)
21685
21686 for (var i = start; i < end; ++i) {
21687 ret += String.fromCharCode(buf[i] & 0x7F)
21688 }
21689 return ret
21690 }
21691
21692 function latin1Slice (buf, start, end) {
21693 var ret = ''
21694 end = Math.min(buf.length, end)
21695
21696 for (var i = start; i < end; ++i) {
21697 ret += String.fromCharCode(buf[i])
21698 }
21699 return ret
21700 }
21701
21702 function hexSlice (buf, start, end) {
21703 var len = buf.length
21704
21705 if (!start || start < 0) start = 0
21706 if (!end || end < 0 || end > len) end = len
21707
21708 var out = ''
21709 for (var i = start; i < end; ++i) {
21710 out += toHex(buf[i])
21711 }
21712 return out
21713 }
21714
21715 function utf16leSlice (buf, start, end) {
21716 var bytes = buf.slice(start, end)
21717 var res = ''
21718 for (var i = 0; i < bytes.length; i += 2) {
21719 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21720 }
21721 return res
21722 }
21723
21724 Buffer.prototype.slice = function slice (start, end) {
21725 var len = this.length
21726 start = ~~start
21727 end = end === undefined ? len : ~~end
21728
21729 if (start < 0) {
21730 start += len
21731 if (start < 0) start = 0
21732 } else if (start > len) {
21733 start = len
21734 }
21735
21736 if (end < 0) {
21737 end += len
21738 if (end < 0) end = 0
21739 } else if (end > len) {
21740 end = len
21741 }
21742
21743 if (end < start) end = start
21744
21745 var newBuf = this.subarray(start, end)
21746 // Return an augmented `Uint8Array` instance
21747 newBuf.__proto__ = Buffer.prototype
21748 return newBuf
21749 }
21750
21751 /*
21752 * Need to make sure that buffer isn't trying to write out of bounds.
21753 */
21754 function checkOffset (offset, ext, length) {
21755 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21756 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
21757 }
21758
21759 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21760 offset = offset >>> 0
21761 byteLength = byteLength >>> 0
21762 if (!noAssert) checkOffset(offset, byteLength, this.length)
21763
21764 var val = this[offset]
21765 var mul = 1
21766 var i = 0
21767 while (++i < byteLength && (mul *= 0x100)) {
21768 val += this[offset + i] * mul
21769 }
21770
21771 return val
21772 }
21773
21774 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21775 offset = offset >>> 0
21776 byteLength = byteLength >>> 0
21777 if (!noAssert) {
21778 checkOffset(offset, byteLength, this.length)
21779 }
21780
21781 var val = this[offset + --byteLength]
21782 var mul = 1
21783 while (byteLength > 0 && (mul *= 0x100)) {
21784 val += this[offset + --byteLength] * mul
21785 }
21786
21787 return val
21788 }
21789
21790 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21791 offset = offset >>> 0
21792 if (!noAssert) checkOffset(offset, 1, this.length)
21793 return this[offset]
21794 }
21795
21796 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21797 offset = offset >>> 0
21798 if (!noAssert) checkOffset(offset, 2, this.length)
21799 return this[offset] | (this[offset + 1] << 8)
21800 }
21801
21802 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21803 offset = offset >>> 0
21804 if (!noAssert) checkOffset(offset, 2, this.length)
21805 return (this[offset] << 8) | this[offset + 1]
21806 }
21807
21808 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21809 offset = offset >>> 0
21810 if (!noAssert) checkOffset(offset, 4, this.length)
21811
21812 return ((this[offset]) |
21813 (this[offset + 1] << 8) |
21814 (this[offset + 2] << 16)) +
21815 (this[offset + 3] * 0x1000000)
21816 }
21817
21818 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21819 offset = offset >>> 0
21820 if (!noAssert) checkOffset(offset, 4, this.length)
21821
21822 return (this[offset] * 0x1000000) +
21823 ((this[offset + 1] << 16) |
21824 (this[offset + 2] << 8) |
21825 this[offset + 3])
21826 }
21827
21828 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21829 offset = offset >>> 0
21830 byteLength = byteLength >>> 0
21831 if (!noAssert) checkOffset(offset, byteLength, this.length)
21832
21833 var val = this[offset]
21834 var mul = 1
21835 var i = 0
21836 while (++i < byteLength && (mul *= 0x100)) {
21837 val += this[offset + i] * mul
21838 }
21839 mul *= 0x80
21840
21841 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21842
21843 return val
21844 }
21845
21846 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21847 offset = offset >>> 0
21848 byteLength = byteLength >>> 0
21849 if (!noAssert) checkOffset(offset, byteLength, this.length)
21850
21851 var i = byteLength
21852 var mul = 1
21853 var val = this[offset + --i]
21854 while (i > 0 && (mul *= 0x100)) {
21855 val += this[offset + --i] * mul
21856 }
21857 mul *= 0x80
21858
21859 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21860
21861 return val
21862 }
21863
21864 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21865 offset = offset >>> 0
21866 if (!noAssert) checkOffset(offset, 1, this.length)
21867 if (!(this[offset] & 0x80)) return (this[offset])
21868 return ((0xff - this[offset] + 1) * -1)
21869 }
21870
21871 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21872 offset = offset >>> 0
21873 if (!noAssert) checkOffset(offset, 2, this.length)
21874 var val = this[offset] | (this[offset + 1] << 8)
21875 return (val & 0x8000) ? val | 0xFFFF0000 : val
21876 }
21877
21878 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21879 offset = offset >>> 0
21880 if (!noAssert) checkOffset(offset, 2, this.length)
21881 var val = this[offset + 1] | (this[offset] << 8)
21882 return (val & 0x8000) ? val | 0xFFFF0000 : val
21883 }
21884
21885 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21886 offset = offset >>> 0
21887 if (!noAssert) checkOffset(offset, 4, this.length)
21888
21889 return (this[offset]) |
21890 (this[offset + 1] << 8) |
21891 (this[offset + 2] << 16) |
21892 (this[offset + 3] << 24)
21893 }
21894
21895 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21896 offset = offset >>> 0
21897 if (!noAssert) checkOffset(offset, 4, this.length)
21898
21899 return (this[offset] << 24) |
21900 (this[offset + 1] << 16) |
21901 (this[offset + 2] << 8) |
21902 (this[offset + 3])
21903 }
21904
21905 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21906 offset = offset >>> 0
21907 if (!noAssert) checkOffset(offset, 4, this.length)
21908 return ieee754.read(this, offset, true, 23, 4)
21909 }
21910
21911 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21912 offset = offset >>> 0
21913 if (!noAssert) checkOffset(offset, 4, this.length)
21914 return ieee754.read(this, offset, false, 23, 4)
21915 }
21916
21917 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21918 offset = offset >>> 0
21919 if (!noAssert) checkOffset(offset, 8, this.length)
21920 return ieee754.read(this, offset, true, 52, 8)
21921 }
21922
21923 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21924 offset = offset >>> 0
21925 if (!noAssert) checkOffset(offset, 8, this.length)
21926 return ieee754.read(this, offset, false, 52, 8)
21927 }
21928
21929 function checkInt (buf, value, offset, ext, max, min) {
21930 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21931 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21932 if (offset + ext > buf.length) throw new RangeError('Index out of range')
21933 }
21934
21935 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21936 value = +value
21937 offset = offset >>> 0
21938 byteLength = byteLength >>> 0
21939 if (!noAssert) {
21940 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21941 checkInt(this, value, offset, byteLength, maxBytes, 0)
21942 }
21943
21944 var mul = 1
21945 var i = 0
21946 this[offset] = value & 0xFF
21947 while (++i < byteLength && (mul *= 0x100)) {
21948 this[offset + i] = (value / mul) & 0xFF
21949 }
21950
21951 return offset + byteLength
21952 }
21953
21954 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21955 value = +value
21956 offset = offset >>> 0
21957 byteLength = byteLength >>> 0
21958 if (!noAssert) {
21959 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21960 checkInt(this, value, offset, byteLength, maxBytes, 0)
21961 }
21962
21963 var i = byteLength - 1
21964 var mul = 1
21965 this[offset + i] = value & 0xFF
21966 while (--i >= 0 && (mul *= 0x100)) {
21967 this[offset + i] = (value / mul) & 0xFF
21968 }
21969
21970 return offset + byteLength
21971 }
21972
21973 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21974 value = +value
21975 offset = offset >>> 0
21976 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21977 this[offset] = (value & 0xff)
21978 return offset + 1
21979 }
21980
21981 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21982 value = +value
21983 offset = offset >>> 0
21984 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21985 this[offset] = (value & 0xff)
21986 this[offset + 1] = (value >>> 8)
21987 return offset + 2
21988 }
21989
21990 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21991 value = +value
21992 offset = offset >>> 0
21993 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21994 this[offset] = (value >>> 8)
21995 this[offset + 1] = (value & 0xff)
21996 return offset + 2
21997 }
21998
21999 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
22000 value = +value
22001 offset = offset >>> 0
22002 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
22003 this[offset + 3] = (value >>> 24)
22004 this[offset + 2] = (value >>> 16)
22005 this[offset + 1] = (value >>> 8)
22006 this[offset] = (value & 0xff)
22007 return offset + 4
22008 }
22009
22010 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
22011 value = +value
22012 offset = offset >>> 0
22013 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
22014 this[offset] = (value >>> 24)
22015 this[offset + 1] = (value >>> 16)
22016 this[offset + 2] = (value >>> 8)
22017 this[offset + 3] = (value & 0xff)
22018 return offset + 4
22019 }
22020
22021 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
22022 value = +value
22023 offset = offset >>> 0
22024 if (!noAssert) {
22025 var limit = Math.pow(2, (8 * byteLength) - 1)
22026
22027 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22028 }
22029
22030 var i = 0
22031 var mul = 1
22032 var sub = 0
22033 this[offset] = value & 0xFF
22034 while (++i < byteLength && (mul *= 0x100)) {
22035 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
22036 sub = 1
22037 }
22038 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22039 }
22040
22041 return offset + byteLength
22042 }
22043
22044 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
22045 value = +value
22046 offset = offset >>> 0
22047 if (!noAssert) {
22048 var limit = Math.pow(2, (8 * byteLength) - 1)
22049
22050 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22051 }
22052
22053 var i = byteLength - 1
22054 var mul = 1
22055 var sub = 0
22056 this[offset + i] = value & 0xFF
22057 while (--i >= 0 && (mul *= 0x100)) {
22058 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22059 sub = 1
22060 }
22061 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22062 }
22063
22064 return offset + byteLength
22065 }
22066
22067 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22068 value = +value
22069 offset = offset >>> 0
22070 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22071 if (value < 0) value = 0xff + value + 1
22072 this[offset] = (value & 0xff)
22073 return offset + 1
22074 }
22075
22076 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22077 value = +value
22078 offset = offset >>> 0
22079 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22080 this[offset] = (value & 0xff)
22081 this[offset + 1] = (value >>> 8)
22082 return offset + 2
22083 }
22084
22085 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22086 value = +value
22087 offset = offset >>> 0
22088 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22089 this[offset] = (value >>> 8)
22090 this[offset + 1] = (value & 0xff)
22091 return offset + 2
22092 }
22093
22094 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22095 value = +value
22096 offset = offset >>> 0
22097 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22098 this[offset] = (value & 0xff)
22099 this[offset + 1] = (value >>> 8)
22100 this[offset + 2] = (value >>> 16)
22101 this[offset + 3] = (value >>> 24)
22102 return offset + 4
22103 }
22104
22105 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22106 value = +value
22107 offset = offset >>> 0
22108 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22109 if (value < 0) value = 0xffffffff + value + 1
22110 this[offset] = (value >>> 24)
22111 this[offset + 1] = (value >>> 16)
22112 this[offset + 2] = (value >>> 8)
22113 this[offset + 3] = (value & 0xff)
22114 return offset + 4
22115 }
22116
22117 function checkIEEE754 (buf, value, offset, ext, max, min) {
22118 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22119 if (offset < 0) throw new RangeError('Index out of range')
22120 }
22121
22122 function writeFloat (buf, value, offset, littleEndian, noAssert) {
22123 value = +value
22124 offset = offset >>> 0
22125 if (!noAssert) {
22126 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
22127 }
22128 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22129 return offset + 4
22130 }
22131
22132 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22133 return writeFloat(this, value, offset, true, noAssert)
22134 }
22135
22136 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22137 return writeFloat(this, value, offset, false, noAssert)
22138 }
22139
22140 function writeDouble (buf, value, offset, littleEndian, noAssert) {
22141 value = +value
22142 offset = offset >>> 0
22143 if (!noAssert) {
22144 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
22145 }
22146 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22147 return offset + 8
22148 }
22149
22150 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22151 return writeDouble(this, value, offset, true, noAssert)
22152 }
22153
22154 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22155 return writeDouble(this, value, offset, false, noAssert)
22156 }
22157
22158 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22159 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22160 if (!start) start = 0
22161 if (!end && end !== 0) end = this.length
22162 if (targetStart >= target.length) targetStart = target.length
22163 if (!targetStart) targetStart = 0
22164 if (end > 0 && end < start) end = start
22165
22166 // Copy 0 bytes; we're done
22167 if (end === start) return 0
22168 if (target.length === 0 || this.length === 0) return 0
22169
22170 // Fatal error conditions
22171 if (targetStart < 0) {
22172 throw new RangeError('targetStart out of bounds')
22173 }
22174 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22175 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22176
22177 // Are we oob?
22178 if (end > this.length) end = this.length
22179 if (target.length - targetStart < end - start) {
22180 end = target.length - targetStart + start
22181 }
22182
22183 var len = end - start
22184 var i
22185
22186 if (this === target && start < targetStart && targetStart < end) {
22187 // descending copy from end
22188 for (i = len - 1; i >= 0; --i) {
22189 target[i + targetStart] = this[i + start]
22190 }
22191 } else if (len < 1000) {
22192 // ascending copy from start
22193 for (i = 0; i < len; ++i) {
22194 target[i + targetStart] = this[i + start]
22195 }
22196 } else {
22197 Uint8Array.prototype.set.call(
22198 target,
22199 this.subarray(start, start + len),
22200 targetStart
22201 )
22202 }
22203
22204 return len
22205 }
22206
22207 // Usage:
22208 // buffer.fill(number[, offset[, end]])
22209 // buffer.fill(buffer[, offset[, end]])
22210 // buffer.fill(string[, offset[, end]][, encoding])
22211 Buffer.prototype.fill = function fill (val, start, end, encoding) {
22212 // Handle string cases:
22213 if (typeof val === 'string') {
22214 if (typeof start === 'string') {
22215 encoding = start
22216 start = 0
22217 end = this.length
22218 } else if (typeof end === 'string') {
22219 encoding = end
22220 end = this.length
22221 }
22222 if (val.length === 1) {
22223 var code = val.charCodeAt(0)
22224 if (code < 256) {
22225 val = code
22226 }
22227 }
22228 if (encoding !== undefined && typeof encoding !== 'string') {
22229 throw new TypeError('encoding must be a string')
22230 }
22231 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22232 throw new TypeError('Unknown encoding: ' + encoding)
22233 }
22234 } else if (typeof val === 'number') {
22235 val = val & 255
22236 }
22237
22238 // Invalid ranges are not set to a default, so can range check early.
22239 if (start < 0 || this.length < start || this.length < end) {
22240 throw new RangeError('Out of range index')
22241 }
22242
22243 if (end <= start) {
22244 return this
22245 }
22246
22247 start = start >>> 0
22248 end = end === undefined ? this.length : end >>> 0
22249
22250 if (!val) val = 0
22251
22252 var i
22253 if (typeof val === 'number') {
22254 for (i = start; i < end; ++i) {
22255 this[i] = val
22256 }
22257 } else {
22258 var bytes = Buffer.isBuffer(val)
22259 ? val
22260 : new Buffer(val, encoding)
22261 var len = bytes.length
22262 for (i = 0; i < end - start; ++i) {
22263 this[i + start] = bytes[i % len]
22264 }
22265 }
22266
22267 return this
22268 }
22269
22270 // HELPER FUNCTIONS
22271 // ================
22272
22273 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22274
22275 function base64clean (str) {
22276 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22277 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22278 // Node converts strings with length < 2 to ''
22279 if (str.length < 2) return ''
22280 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22281 while (str.length % 4 !== 0) {
22282 str = str + '='
22283 }
22284 return str
22285 }
22286
22287 function stringtrim (str) {
22288 if (str.trim) return str.trim()
22289 return str.replace(/^\s+|\s+$/g, '')
22290 }
22291
22292 function toHex (n) {
22293 if (n < 16) return '0' + n.toString(16)
22294 return n.toString(16)
22295 }
22296
22297 function utf8ToBytes (string, units) {
22298 units = units || Infinity
22299 var codePoint
22300 var length = string.length
22301 var leadSurrogate = null
22302 var bytes = []
22303
22304 for (var i = 0; i < length; ++i) {
22305 codePoint = string.charCodeAt(i)
22306
22307 // is surrogate component
22308 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22309 // last char was a lead
22310 if (!leadSurrogate) {
22311 // no lead yet
22312 if (codePoint > 0xDBFF) {
22313 // unexpected trail
22314 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22315 continue
22316 } else if (i + 1 === length) {
22317 // unpaired lead
22318 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22319 continue
22320 }
22321
22322 // valid lead
22323 leadSurrogate = codePoint
22324
22325 continue
22326 }
22327
22328 // 2 leads in a row
22329 if (codePoint < 0xDC00) {
22330 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22331 leadSurrogate = codePoint
22332 continue
22333 }
22334
22335 // valid surrogate pair
22336 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22337 } else if (leadSurrogate) {
22338 // valid bmp char, but last char was a lead
22339 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22340 }
22341
22342 leadSurrogate = null
22343
22344 // encode utf8
22345 if (codePoint < 0x80) {
22346 if ((units -= 1) < 0) break
22347 bytes.push(codePoint)
22348 } else if (codePoint < 0x800) {
22349 if ((units -= 2) < 0) break
22350 bytes.push(
22351 codePoint >> 0x6 | 0xC0,
22352 codePoint & 0x3F | 0x80
22353 )
22354 } else if (codePoint < 0x10000) {
22355 if ((units -= 3) < 0) break
22356 bytes.push(
22357 codePoint >> 0xC | 0xE0,
22358 codePoint >> 0x6 & 0x3F | 0x80,
22359 codePoint & 0x3F | 0x80
22360 )
22361 } else if (codePoint < 0x110000) {
22362 if ((units -= 4) < 0) break
22363 bytes.push(
22364 codePoint >> 0x12 | 0xF0,
22365 codePoint >> 0xC & 0x3F | 0x80,
22366 codePoint >> 0x6 & 0x3F | 0x80,
22367 codePoint & 0x3F | 0x80
22368 )
22369 } else {
22370 throw new Error('Invalid code point')
22371 }
22372 }
22373
22374 return bytes
22375 }
22376
22377 function asciiToBytes (str) {
22378 var byteArray = []
22379 for (var i = 0; i < str.length; ++i) {
22380 // Node's code seems to be doing this and not & 0x7F..
22381 byteArray.push(str.charCodeAt(i) & 0xFF)
22382 }
22383 return byteArray
22384 }
22385
22386 function utf16leToBytes (str, units) {
22387 var c, hi, lo
22388 var byteArray = []
22389 for (var i = 0; i < str.length; ++i) {
22390 if ((units -= 2) < 0) break
22391
22392 c = str.charCodeAt(i)
22393 hi = c >> 8
22394 lo = c % 256
22395 byteArray.push(lo)
22396 byteArray.push(hi)
22397 }
22398
22399 return byteArray
22400 }
22401
22402 function base64ToBytes (str) {
22403 return base64.toByteArray(base64clean(str))
22404 }
22405
22406 function blitBuffer (src, dst, offset, length) {
22407 for (var i = 0; i < length; ++i) {
22408 if ((i + offset >= dst.length) || (i >= src.length)) break
22409 dst[i + offset] = src[i]
22410 }
22411 return i
22412 }
22413
22414 function isnan (val) {
22415 return val !== val // eslint-disable-line no-self-compare
22416 }
22417
22418 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22419 (function (Buffer){
22420 // Copyright Joyent, Inc. and other Node contributors.
22421 //
22422 // Permission is hereby granted, free of charge, to any person obtaining a
22423 // copy of this software and associated documentation files (the
22424 // "Software"), to deal in the Software without restriction, including
22425 // without limitation the rights to use, copy, modify, merge, publish,
22426 // distribute, sublicense, and/or sell copies of the Software, and to permit
22427 // persons to whom the Software is furnished to do so, subject to the
22428 // following conditions:
22429 //
22430 // The above copyright notice and this permission notice shall be included
22431 // in all copies or substantial portions of the Software.
22432 //
22433 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22434 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22435 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22436 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22437 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22438 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22439 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22440
22441 // NOTE: These type checking functions intentionally don't use `instanceof`
22442 // because it is fragile and can be easily faked with `Object.create()`.
22443
22444 function isArray(arg) {
22445 if (Array.isArray) {
22446 return Array.isArray(arg);
22447 }
22448 return objectToString(arg) === '[object Array]';
22449 }
22450 exports.isArray = isArray;
22451
22452 function isBoolean(arg) {
22453 return typeof arg === 'boolean';
22454 }
22455 exports.isBoolean = isBoolean;
22456
22457 function isNull(arg) {
22458 return arg === null;
22459 }
22460 exports.isNull = isNull;
22461
22462 function isNullOrUndefined(arg) {
22463 return arg == null;
22464 }
22465 exports.isNullOrUndefined = isNullOrUndefined;
22466
22467 function isNumber(arg) {
22468 return typeof arg === 'number';
22469 }
22470 exports.isNumber = isNumber;
22471
22472 function isString(arg) {
22473 return typeof arg === 'string';
22474 }
22475 exports.isString = isString;
22476
22477 function isSymbol(arg) {
22478 return typeof arg === 'symbol';
22479 }
22480 exports.isSymbol = isSymbol;
22481
22482 function isUndefined(arg) {
22483 return arg === void 0;
22484 }
22485 exports.isUndefined = isUndefined;
22486
22487 function isRegExp(re) {
22488 return objectToString(re) === '[object RegExp]';
22489 }
22490 exports.isRegExp = isRegExp;
22491
22492 function isObject(arg) {
22493 return typeof arg === 'object' && arg !== null;
22494 }
22495 exports.isObject = isObject;
22496
22497 function isDate(d) {
22498 return objectToString(d) === '[object Date]';
22499 }
22500 exports.isDate = isDate;
22501
22502 function isError(e) {
22503 return (objectToString(e) === '[object Error]' || e instanceof Error);
22504 }
22505 exports.isError = isError;
22506
22507 function isFunction(arg) {
22508 return typeof arg === 'function';
22509 }
22510 exports.isFunction = isFunction;
22511
22512 function isPrimitive(arg) {
22513 return arg === null ||
22514 typeof arg === 'boolean' ||
22515 typeof arg === 'number' ||
22516 typeof arg === 'string' ||
22517 typeof arg === 'symbol' || // ES6 symbol
22518 typeof arg === 'undefined';
22519 }
22520 exports.isPrimitive = isPrimitive;
22521
22522 exports.isBuffer = Buffer.isBuffer;
22523
22524 function objectToString(o) {
22525 return Object.prototype.toString.call(o);
22526 }
22527
22528 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22529 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22530 // Copyright Joyent, Inc. and other Node contributors.
22531 //
22532 // Permission is hereby granted, free of charge, to any person obtaining a
22533 // copy of this software and associated documentation files (the
22534 // "Software"), to deal in the Software without restriction, including
22535 // without limitation the rights to use, copy, modify, merge, publish,
22536 // distribute, sublicense, and/or sell copies of the Software, and to permit
22537 // persons to whom the Software is furnished to do so, subject to the
22538 // following conditions:
22539 //
22540 // The above copyright notice and this permission notice shall be included
22541 // in all copies or substantial portions of the Software.
22542 //
22543 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22544 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22545 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22546 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22547 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22548 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22549 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22550
22551 function EventEmitter() {
22552 this._events = this._events || {};
22553 this._maxListeners = this._maxListeners || undefined;
22554 }
22555 module.exports = EventEmitter;
22556
22557 // Backwards-compat with node 0.10.x
22558 EventEmitter.EventEmitter = EventEmitter;
22559
22560 EventEmitter.prototype._events = undefined;
22561 EventEmitter.prototype._maxListeners = undefined;
22562
22563 // By default EventEmitters will print a warning if more than 10 listeners are
22564 // added to it. This is a useful default which helps finding memory leaks.
22565 EventEmitter.defaultMaxListeners = 10;
22566
22567 // Obviously not all Emitters should be limited to 10. This function allows
22568 // that to be increased. Set to zero for unlimited.
22569 EventEmitter.prototype.setMaxListeners = function(n) {
22570 if (!isNumber(n) || n < 0 || isNaN(n))
22571 throw TypeError('n must be a positive number');
22572 this._maxListeners = n;
22573 return this;
22574 };
22575
22576 EventEmitter.prototype.emit = function(type) {
22577 var er, handler, len, args, i, listeners;
22578
22579 if (!this._events)
22580 this._events = {};
22581
22582 // If there is no 'error' event listener then throw.
22583 if (type === 'error') {
22584 if (!this._events.error ||
22585 (isObject(this._events.error) && !this._events.error.length)) {
22586 er = arguments[1];
22587 if (er instanceof Error) {
22588 throw er; // Unhandled 'error' event
22589 } else {
22590 // At least give some kind of context to the user
22591 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22592 err.context = er;
22593 throw err;
22594 }
22595 }
22596 }
22597
22598 handler = this._events[type];
22599
22600 if (isUndefined(handler))
22601 return false;
22602
22603 if (isFunction(handler)) {
22604 switch (arguments.length) {
22605 // fast cases
22606 case 1:
22607 handler.call(this);
22608 break;
22609 case 2:
22610 handler.call(this, arguments[1]);
22611 break;
22612 case 3:
22613 handler.call(this, arguments[1], arguments[2]);
22614 break;
22615 // slower
22616 default:
22617 args = Array.prototype.slice.call(arguments, 1);
22618 handler.apply(this, args);
22619 }
22620 } else if (isObject(handler)) {
22621 args = Array.prototype.slice.call(arguments, 1);
22622 listeners = handler.slice();
22623 len = listeners.length;
22624 for (i = 0; i < len; i++)
22625 listeners[i].apply(this, args);
22626 }
22627
22628 return true;
22629 };
22630
22631 EventEmitter.prototype.addListener = function(type, listener) {
22632 var m;
22633
22634 if (!isFunction(listener))
22635 throw TypeError('listener must be a function');
22636
22637 if (!this._events)
22638 this._events = {};
22639
22640 // To avoid recursion in the case that type === "newListener"! Before
22641 // adding it to the listeners, first emit "newListener".
22642 if (this._events.newListener)
22643 this.emit('newListener', type,
22644 isFunction(listener.listener) ?
22645 listener.listener : listener);
22646
22647 if (!this._events[type])
22648 // Optimize the case of one listener. Don't need the extra array object.
22649 this._events[type] = listener;
22650 else if (isObject(this._events[type]))
22651 // If we've already got an array, just append.
22652 this._events[type].push(listener);
22653 else
22654 // Adding the second element, need to change to array.
22655 this._events[type] = [this._events[type], listener];
22656
22657 // Check for listener leak
22658 if (isObject(this._events[type]) && !this._events[type].warned) {
22659 if (!isUndefined(this._maxListeners)) {
22660 m = this._maxListeners;
22661 } else {
22662 m = EventEmitter.defaultMaxListeners;
22663 }
22664
22665 if (m && m > 0 && this._events[type].length > m) {
22666 this._events[type].warned = true;
22667 console.error('(node) warning: possible EventEmitter memory ' +
22668 'leak detected. %d listeners added. ' +
22669 'Use emitter.setMaxListeners() to increase limit.',
22670 this._events[type].length);
22671 if (typeof console.trace === 'function') {
22672 // not supported in IE 10
22673 console.trace();
22674 }
22675 }
22676 }
22677
22678 return this;
22679 };
22680
22681 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
22682
22683 EventEmitter.prototype.once = function(type, listener) {
22684 if (!isFunction(listener))
22685 throw TypeError('listener must be a function');
22686
22687 var fired = false;
22688
22689 function g() {
22690 this.removeListener(type, g);
22691
22692 if (!fired) {
22693 fired = true;
22694 listener.apply(this, arguments);
22695 }
22696 }
22697
22698 g.listener = listener;
22699 this.on(type, g);
22700
22701 return this;
22702 };
22703
22704 // emits a 'removeListener' event iff the listener was removed
22705 EventEmitter.prototype.removeListener = function(type, listener) {
22706 var list, position, length, i;
22707
22708 if (!isFunction(listener))
22709 throw TypeError('listener must be a function');
22710
22711 if (!this._events || !this._events[type])
22712 return this;
22713
22714 list = this._events[type];
22715 length = list.length;
22716 position = -1;
22717
22718 if (list === listener ||
22719 (isFunction(list.listener) && list.listener === listener)) {
22720 delete this._events[type];
22721 if (this._events.removeListener)
22722 this.emit('removeListener', type, listener);
22723
22724 } else if (isObject(list)) {
22725 for (i = length; i-- > 0;) {
22726 if (list[i] === listener ||
22727 (list[i].listener && list[i].listener === listener)) {
22728 position = i;
22729 break;
22730 }
22731 }
22732
22733 if (position < 0)
22734 return this;
22735
22736 if (list.length === 1) {
22737 list.length = 0;
22738 delete this._events[type];
22739 } else {
22740 list.splice(position, 1);
22741 }
22742
22743 if (this._events.removeListener)
22744 this.emit('removeListener', type, listener);
22745 }
22746
22747 return this;
22748 };
22749
22750 EventEmitter.prototype.removeAllListeners = function(type) {
22751 var key, listeners;
22752
22753 if (!this._events)
22754 return this;
22755
22756 // not listening for removeListener, no need to emit
22757 if (!this._events.removeListener) {
22758 if (arguments.length === 0)
22759 this._events = {};
22760 else if (this._events[type])
22761 delete this._events[type];
22762 return this;
22763 }
22764
22765 // emit removeListener for all listeners on all events
22766 if (arguments.length === 0) {
22767 for (key in this._events) {
22768 if (key === 'removeListener') continue;
22769 this.removeAllListeners(key);
22770 }
22771 this.removeAllListeners('removeListener');
22772 this._events = {};
22773 return this;
22774 }
22775
22776 listeners = this._events[type];
22777
22778 if (isFunction(listeners)) {
22779 this.removeListener(type, listeners);
22780 } else if (listeners) {
22781 // LIFO order
22782 while (listeners.length)
22783 this.removeListener(type, listeners[listeners.length - 1]);
22784 }
22785 delete this._events[type];
22786
22787 return this;
22788 };
22789
22790 EventEmitter.prototype.listeners = function(type) {
22791 var ret;
22792 if (!this._events || !this._events[type])
22793 ret = [];
22794 else if (isFunction(this._events[type]))
22795 ret = [this._events[type]];
22796 else
22797 ret = this._events[type].slice();
22798 return ret;
22799 };
22800
22801 EventEmitter.prototype.listenerCount = function(type) {
22802 if (this._events) {
22803 var evlistener = this._events[type];
22804
22805 if (isFunction(evlistener))
22806 return 1;
22807 else if (evlistener)
22808 return evlistener.length;
22809 }
22810 return 0;
22811 };
22812
22813 EventEmitter.listenerCount = function(emitter, type) {
22814 return emitter.listenerCount(type);
22815 };
22816
22817 function isFunction(arg) {
22818 return typeof arg === 'function';
22819 }
22820
22821 function isNumber(arg) {
22822 return typeof arg === 'number';
22823 }
22824
22825 function isObject(arg) {
22826 return typeof arg === 'object' && arg !== null;
22827 }
22828
22829 function isUndefined(arg) {
22830 return arg === void 0;
22831 }
22832
22833 },{}],8:[function(require,module,exports){
22834 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22835 var e, m
22836 var eLen = nBytes * 8 - mLen - 1
22837 var eMax = (1 << eLen) - 1
22838 var eBias = eMax >> 1
22839 var nBits = -7
22840 var i = isLE ? (nBytes - 1) : 0
22841 var d = isLE ? -1 : 1
22842 var s = buffer[offset + i]
22843
22844 i += d
22845
22846 e = s & ((1 << (-nBits)) - 1)
22847 s >>= (-nBits)
22848 nBits += eLen
22849 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22850
22851 m = e & ((1 << (-nBits)) - 1)
22852 e >>= (-nBits)
22853 nBits += mLen
22854 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22855
22856 if (e === 0) {
22857 e = 1 - eBias
22858 } else if (e === eMax) {
22859 return m ? NaN : ((s ? -1 : 1) * Infinity)
22860 } else {
22861 m = m + Math.pow(2, mLen)
22862 e = e - eBias
22863 }
22864 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
22865 }
22866
22867 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22868 var e, m, c
22869 var eLen = nBytes * 8 - mLen - 1
22870 var eMax = (1 << eLen) - 1
22871 var eBias = eMax >> 1
22872 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22873 var i = isLE ? 0 : (nBytes - 1)
22874 var d = isLE ? 1 : -1
22875 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
22876
22877 value = Math.abs(value)
22878
22879 if (isNaN(value) || value === Infinity) {
22880 m = isNaN(value) ? 1 : 0
22881 e = eMax
22882 } else {
22883 e = Math.floor(Math.log(value) / Math.LN2)
22884 if (value * (c = Math.pow(2, -e)) < 1) {
22885 e--
22886 c *= 2
22887 }
22888 if (e + eBias >= 1) {
22889 value += rt / c
22890 } else {
22891 value += rt * Math.pow(2, 1 - eBias)
22892 }
22893 if (value * c >= 2) {
22894 e++
22895 c /= 2
22896 }
22897
22898 if (e + eBias >= eMax) {
22899 m = 0
22900 e = eMax
22901 } else if (e + eBias >= 1) {
22902 m = (value * c - 1) * Math.pow(2, mLen)
22903 e = e + eBias
22904 } else {
22905 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22906 e = 0
22907 }
22908 }
22909
22910 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
22911
22912 e = (e << mLen) | m
22913 eLen += mLen
22914 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
22915
22916 buffer[offset + i - d] |= s * 128
22917 }
22918
22919 },{}],9:[function(require,module,exports){
22920 if (typeof Object.create === 'function') {
22921 // implementation from standard node.js 'util' module
22922 module.exports = function inherits(ctor, superCtor) {
22923 ctor.super_ = superCtor
22924 ctor.prototype = Object.create(superCtor.prototype, {
22925 constructor: {
22926 value: ctor,
22927 enumerable: false,
22928 writable: true,
22929 configurable: true
22930 }
22931 });
22932 };
22933 } else {
22934 // old school shim for old browsers
22935 module.exports = function inherits(ctor, superCtor) {
22936 ctor.super_ = superCtor
22937 var TempCtor = function () {}
22938 TempCtor.prototype = superCtor.prototype
22939 ctor.prototype = new TempCtor()
22940 ctor.prototype.constructor = ctor
22941 }
22942 }
22943
22944 },{}],10:[function(require,module,exports){
22945 /*!
22946 * Determine if an object is a Buffer
22947 *
22948 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22949 * @license MIT
22950 */
22951
22952 // The _isBuffer check is for Safari 5-7 support, because it's missing
22953 // Object.prototype.constructor. Remove this eventually
22954 module.exports = function (obj) {
22955 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
22956 }
22957
22958 function isBuffer (obj) {
22959 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22960 }
22961
22962 // For Node v0.10 support. Remove this eventually.
22963 function isSlowBuffer (obj) {
22964 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22965 }
22966
22967 },{}],11:[function(require,module,exports){
22968 var toString = {}.toString;
22969
22970 module.exports = Array.isArray || function (arr) {
22971 return toString.call(arr) == '[object Array]';
22972 };
22973
22974 },{}],12:[function(require,module,exports){
22975 (function (process){
22976 'use strict';
22977
22978 if (!process.version ||
22979 process.version.indexOf('v0.') === 0 ||
22980 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22981 module.exports = nextTick;
22982 } else {
22983 module.exports = process.nextTick;
22984 }
22985
22986 function nextTick(fn, arg1, arg2, arg3) {
22987 if (typeof fn !== 'function') {
22988 throw new TypeError('"callback" argument must be a function');
22989 }
22990 var len = arguments.length;
22991 var args, i;
22992 switch (len) {
22993 case 0:
22994 case 1:
22995 return process.nextTick(fn);
22996 case 2:
22997 return process.nextTick(function afterTickOne() {
22998 fn.call(null, arg1);
22999 });
23000 case 3:
23001 return process.nextTick(function afterTickTwo() {
23002 fn.call(null, arg1, arg2);
23003 });
23004 case 4:
23005 return process.nextTick(function afterTickThree() {
23006 fn.call(null, arg1, arg2, arg3);
23007 });
23008 default:
23009 args = new Array(len - 1);
23010 i = 0;
23011 while (i < args.length) {
23012 args[i++] = arguments[i];
23013 }
23014 return process.nextTick(function afterTick() {
23015 fn.apply(null, args);
23016 });
23017 }
23018 }
23019
23020 }).call(this,require('_process'))
23021 },{"_process":13}],13:[function(require,module,exports){
23022 // shim for using process in browser
23023 var process = module.exports = {};
23024
23025 // cached from whatever global is present so that test runners that stub it
23026 // don't break things. But we need to wrap it in a try catch in case it is
23027 // wrapped in strict mode code which doesn't define any globals. It's inside a
23028 // function because try/catches deoptimize in certain engines.
23029
23030 var cachedSetTimeout;
23031 var cachedClearTimeout;
23032
23033 function defaultSetTimout() {
23034 throw new Error('setTimeout has not been defined');
23035 }
23036 function defaultClearTimeout () {
23037 throw new Error('clearTimeout has not been defined');
23038 }
23039 (function () {
23040 try {
23041 if (typeof setTimeout === 'function') {
23042 cachedSetTimeout = setTimeout;
23043 } else {
23044 cachedSetTimeout = defaultSetTimout;
23045 }
23046 } catch (e) {
23047 cachedSetTimeout = defaultSetTimout;
23048 }
23049 try {
23050 if (typeof clearTimeout === 'function') {
23051 cachedClearTimeout = clearTimeout;
23052 } else {
23053 cachedClearTimeout = defaultClearTimeout;
23054 }
23055 } catch (e) {
23056 cachedClearTimeout = defaultClearTimeout;
23057 }
23058 } ())
23059 function runTimeout(fun) {
23060 if (cachedSetTimeout === setTimeout) {
23061 //normal enviroments in sane situations
23062 return setTimeout(fun, 0);
23063 }
23064 // if setTimeout wasn't available but was latter defined
23065 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23066 cachedSetTimeout = setTimeout;
23067 return setTimeout(fun, 0);
23068 }
23069 try {
23070 // when when somebody has screwed with setTimeout but no I.E. maddness
23071 return cachedSetTimeout(fun, 0);
23072 } catch(e){
23073 try {
23074 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23075 return cachedSetTimeout.call(null, fun, 0);
23076 } catch(e){
23077 // 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
23078 return cachedSetTimeout.call(this, fun, 0);
23079 }
23080 }
23081
23082
23083 }
23084 function runClearTimeout(marker) {
23085 if (cachedClearTimeout === clearTimeout) {
23086 //normal enviroments in sane situations
23087 return clearTimeout(marker);
23088 }
23089 // if clearTimeout wasn't available but was latter defined
23090 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23091 cachedClearTimeout = clearTimeout;
23092 return clearTimeout(marker);
23093 }
23094 try {
23095 // when when somebody has screwed with setTimeout but no I.E. maddness
23096 return cachedClearTimeout(marker);
23097 } catch (e){
23098 try {
23099 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23100 return cachedClearTimeout.call(null, marker);
23101 } catch (e){
23102 // 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.
23103 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23104 return cachedClearTimeout.call(this, marker);
23105 }
23106 }
23107
23108
23109
23110 }
23111 var queue = [];
23112 var draining = false;
23113 var currentQueue;
23114 var queueIndex = -1;
23115
23116 function cleanUpNextTick() {
23117 if (!draining || !currentQueue) {
23118 return;
23119 }
23120 draining = false;
23121 if (currentQueue.length) {
23122 queue = currentQueue.concat(queue);
23123 } else {
23124 queueIndex = -1;
23125 }
23126 if (queue.length) {
23127 drainQueue();
23128 }
23129 }
23130
23131 function drainQueue() {
23132 if (draining) {
23133 return;
23134 }
23135 var timeout = runTimeout(cleanUpNextTick);
23136 draining = true;
23137
23138 var len = queue.length;
23139 while(len) {
23140 currentQueue = queue;
23141 queue = [];
23142 while (++queueIndex < len) {
23143 if (currentQueue) {
23144 currentQueue[queueIndex].run();
23145 }
23146 }
23147 queueIndex = -1;
23148 len = queue.length;
23149 }
23150 currentQueue = null;
23151 draining = false;
23152 runClearTimeout(timeout);
23153 }
23154
23155 process.nextTick = function (fun) {
23156 var args = new Array(arguments.length - 1);
23157 if (arguments.length > 1) {
23158 for (var i = 1; i < arguments.length; i++) {
23159 args[i - 1] = arguments[i];
23160 }
23161 }
23162 queue.push(new Item(fun, args));
23163 if (queue.length === 1 && !draining) {
23164 runTimeout(drainQueue);
23165 }
23166 };
23167
23168 // v8 likes predictible objects
23169 function Item(fun, array) {
23170 this.fun = fun;
23171 this.array = array;
23172 }
23173 Item.prototype.run = function () {
23174 this.fun.apply(null, this.array);
23175 };
23176 process.title = 'browser';
23177 process.browser = true;
23178 process.env = {};
23179 process.argv = [];
23180 process.version = ''; // empty string to avoid regexp issues
23181 process.versions = {};
23182
23183 function noop() {}
23184
23185 process.on = noop;
23186 process.addListener = noop;
23187 process.once = noop;
23188 process.off = noop;
23189 process.removeListener = noop;
23190 process.removeAllListeners = noop;
23191 process.emit = noop;
23192
23193 process.binding = function (name) {
23194 throw new Error('process.binding is not supported');
23195 };
23196
23197 process.cwd = function () { return '/' };
23198 process.chdir = function (dir) {
23199 throw new Error('process.chdir is not supported');
23200 };
23201 process.umask = function() { return 0; };
23202
23203 },{}],14:[function(require,module,exports){
23204 module.exports = require("./lib/_stream_duplex.js")
23205
23206 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23207 // a duplex stream is just a stream that is both readable and writable.
23208 // Since JS doesn't have multiple prototypal inheritance, this class
23209 // prototypally inherits from Readable, and then parasitically from
23210 // Writable.
23211
23212 'use strict';
23213
23214 /*<replacement>*/
23215
23216 var objectKeys = Object.keys || function (obj) {
23217 var keys = [];
23218 for (var key in obj) {
23219 keys.push(key);
23220 }return keys;
23221 };
23222 /*</replacement>*/
23223
23224 module.exports = Duplex;
23225
23226 /*<replacement>*/
23227 var processNextTick = require('process-nextick-args');
23228 /*</replacement>*/
23229
23230 /*<replacement>*/
23231 var util = require('core-util-is');
23232 util.inherits = require('inherits');
23233 /*</replacement>*/
23234
23235 var Readable = require('./_stream_readable');
23236 var Writable = require('./_stream_writable');
23237
23238 util.inherits(Duplex, Readable);
23239
23240 var keys = objectKeys(Writable.prototype);
23241 for (var v = 0; v < keys.length; v++) {
23242 var method = keys[v];
23243 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
23244 }
23245
23246 function Duplex(options) {
23247 if (!(this instanceof Duplex)) return new Duplex(options);
23248
23249 Readable.call(this, options);
23250 Writable.call(this, options);
23251
23252 if (options && options.readable === false) this.readable = false;
23253
23254 if (options && options.writable === false) this.writable = false;
23255
23256 this.allowHalfOpen = true;
23257 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
23258
23259 this.once('end', onend);
23260 }
23261
23262 // the no-half-open enforcer
23263 function onend() {
23264 // if we allow half-open state, or if the writable side ended,
23265 // then we're ok.
23266 if (this.allowHalfOpen || this._writableState.ended) return;
23267
23268 // no more data can be written.
23269 // But allow more writes to happen in this tick.
23270 processNextTick(onEndNT, this);
23271 }
23272
23273 function onEndNT(self) {
23274 self.end();
23275 }
23276
23277 function forEach(xs, f) {
23278 for (var i = 0, l = xs.length; i < l; i++) {
23279 f(xs[i], i);
23280 }
23281 }
23282 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23283 // a passthrough stream.
23284 // basically just the most minimal sort of Transform stream.
23285 // Every written chunk gets output as-is.
23286
23287 'use strict';
23288
23289 module.exports = PassThrough;
23290
23291 var Transform = require('./_stream_transform');
23292
23293 /*<replacement>*/
23294 var util = require('core-util-is');
23295 util.inherits = require('inherits');
23296 /*</replacement>*/
23297
23298 util.inherits(PassThrough, Transform);
23299
23300 function PassThrough(options) {
23301 if (!(this instanceof PassThrough)) return new PassThrough(options);
23302
23303 Transform.call(this, options);
23304 }
23305
23306 PassThrough.prototype._transform = function (chunk, encoding, cb) {
23307 cb(null, chunk);
23308 };
23309 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23310 (function (process){
23311 'use strict';
23312
23313 module.exports = Readable;
23314
23315 /*<replacement>*/
23316 var processNextTick = require('process-nextick-args');
23317 /*</replacement>*/
23318
23319 /*<replacement>*/
23320 var isArray = require('isarray');
23321 /*</replacement>*/
23322
23323 /*<replacement>*/
23324 var Duplex;
23325 /*</replacement>*/
23326
23327 Readable.ReadableState = ReadableState;
23328
23329 /*<replacement>*/
23330 var EE = require('events').EventEmitter;
23331
23332 var EElistenerCount = function (emitter, type) {
23333 return emitter.listeners(type).length;
23334 };
23335 /*</replacement>*/
23336
23337 /*<replacement>*/
23338 var Stream;
23339 (function () {
23340 try {
23341 Stream = require('st' + 'ream');
23342 } catch (_) {} finally {
23343 if (!Stream) Stream = require('events').EventEmitter;
23344 }
23345 })();
23346 /*</replacement>*/
23347
23348 var Buffer = require('buffer').Buffer;
23349 /*<replacement>*/
23350 var bufferShim = require('buffer-shims');
23351 /*</replacement>*/
23352
23353 /*<replacement>*/
23354 var util = require('core-util-is');
23355 util.inherits = require('inherits');
23356 /*</replacement>*/
23357
23358 /*<replacement>*/
23359 var debugUtil = require('util');
23360 var debug = void 0;
23361 if (debugUtil && debugUtil.debuglog) {
23362 debug = debugUtil.debuglog('stream');
23363 } else {
23364 debug = function () {};
23365 }
23366 /*</replacement>*/
23367
23368 var BufferList = require('./internal/streams/BufferList');
23369 var StringDecoder;
23370
23371 util.inherits(Readable, Stream);
23372
23373 function prependListener(emitter, event, fn) {
23374 // Sadly this is not cacheable as some libraries bundle their own
23375 // event emitter implementation with them.
23376 if (typeof emitter.prependListener === 'function') {
23377 return emitter.prependListener(event, fn);
23378 } else {
23379 // This is a hack to make sure that our error handler is attached before any
23380 // userland ones. NEVER DO THIS. This is here only because this code needs
23381 // to continue to work with older versions of Node.js that do not include
23382 // the prependListener() method. The goal is to eventually remove this hack.
23383 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]];
23384 }
23385 }
23386
23387 function ReadableState(options, stream) {
23388 Duplex = Duplex || require('./_stream_duplex');
23389
23390 options = options || {};
23391
23392 // object stream flag. Used to make read(n) ignore n and to
23393 // make all the buffer merging and length checks go away
23394 this.objectMode = !!options.objectMode;
23395
23396 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
23397
23398 // the point at which it stops calling _read() to fill the buffer
23399 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23400 var hwm = options.highWaterMark;
23401 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23402 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
23403
23404 // cast to ints.
23405 this.highWaterMark = ~ ~this.highWaterMark;
23406
23407 // A linked list is used to store data chunks instead of an array because the
23408 // linked list can remove elements from the beginning faster than
23409 // array.shift()
23410 this.buffer = new BufferList();
23411 this.length = 0;
23412 this.pipes = null;
23413 this.pipesCount = 0;
23414 this.flowing = null;
23415 this.ended = false;
23416 this.endEmitted = false;
23417 this.reading = false;
23418
23419 // a flag to be able to tell if the onwrite cb is called immediately,
23420 // or on a later tick. We set this to true at first, because any
23421 // actions that shouldn't happen until "later" should generally also
23422 // not happen before the first write call.
23423 this.sync = true;
23424
23425 // whenever we return null, then we set a flag to say
23426 // that we're awaiting a 'readable' event emission.
23427 this.needReadable = false;
23428 this.emittedReadable = false;
23429 this.readableListening = false;
23430 this.resumeScheduled = false;
23431
23432 // Crypto is kind of old and crusty. Historically, its default string
23433 // encoding is 'binary' so we have to make this configurable.
23434 // Everything else in the universe uses 'utf8', though.
23435 this.defaultEncoding = options.defaultEncoding || 'utf8';
23436
23437 // when piping, we only care about 'readable' events that happen
23438 // after read()ing all the bytes and not getting any pushback.
23439 this.ranOut = false;
23440
23441 // the number of writers that are awaiting a drain event in .pipe()s
23442 this.awaitDrain = 0;
23443
23444 // if true, a maybeReadMore has been scheduled
23445 this.readingMore = false;
23446
23447 this.decoder = null;
23448 this.encoding = null;
23449 if (options.encoding) {
23450 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23451 this.decoder = new StringDecoder(options.encoding);
23452 this.encoding = options.encoding;
23453 }
23454 }
23455
23456 function Readable(options) {
23457 Duplex = Duplex || require('./_stream_duplex');
23458
23459 if (!(this instanceof Readable)) return new Readable(options);
23460
23461 this._readableState = new ReadableState(options, this);
23462
23463 // legacy
23464 this.readable = true;
23465
23466 if (options && typeof options.read === 'function') this._read = options.read;
23467
23468 Stream.call(this);
23469 }
23470
23471 // Manually shove something into the read() buffer.
23472 // This returns true if the highWaterMark has not been hit yet,
23473 // similar to how Writable.write() returns true if you should
23474 // write() some more.
23475 Readable.prototype.push = function (chunk, encoding) {
23476 var state = this._readableState;
23477
23478 if (!state.objectMode && typeof chunk === 'string') {
23479 encoding = encoding || state.defaultEncoding;
23480 if (encoding !== state.encoding) {
23481 chunk = bufferShim.from(chunk, encoding);
23482 encoding = '';
23483 }
23484 }
23485
23486 return readableAddChunk(this, state, chunk, encoding, false);
23487 };
23488
23489 // Unshift should *always* be something directly out of read()
23490 Readable.prototype.unshift = function (chunk) {
23491 var state = this._readableState;
23492 return readableAddChunk(this, state, chunk, '', true);
23493 };
23494
23495 Readable.prototype.isPaused = function () {
23496 return this._readableState.flowing === false;
23497 };
23498
23499 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23500 var er = chunkInvalid(state, chunk);
23501 if (er) {
23502 stream.emit('error', er);
23503 } else if (chunk === null) {
23504 state.reading = false;
23505 onEofChunk(stream, state);
23506 } else if (state.objectMode || chunk && chunk.length > 0) {
23507 if (state.ended && !addToFront) {
23508 var e = new Error('stream.push() after EOF');
23509 stream.emit('error', e);
23510 } else if (state.endEmitted && addToFront) {
23511 var _e = new Error('stream.unshift() after end event');
23512 stream.emit('error', _e);
23513 } else {
23514 var skipAdd;
23515 if (state.decoder && !addToFront && !encoding) {
23516 chunk = state.decoder.write(chunk);
23517 skipAdd = !state.objectMode && chunk.length === 0;
23518 }
23519
23520 if (!addToFront) state.reading = false;
23521
23522 // Don't add to the buffer if we've decoded to an empty string chunk and
23523 // we're not in object mode
23524 if (!skipAdd) {
23525 // if we want the data now, just emit it.
23526 if (state.flowing && state.length === 0 && !state.sync) {
23527 stream.emit('data', chunk);
23528 stream.read(0);
23529 } else {
23530 // update the buffer info.
23531 state.length += state.objectMode ? 1 : chunk.length;
23532 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
23533
23534 if (state.needReadable) emitReadable(stream);
23535 }
23536 }
23537
23538 maybeReadMore(stream, state);
23539 }
23540 } else if (!addToFront) {
23541 state.reading = false;
23542 }
23543
23544 return needMoreData(state);
23545 }
23546
23547 // if it's past the high water mark, we can push in some more.
23548 // Also, if we have no data yet, we can stand some
23549 // more bytes. This is to work around cases where hwm=0,
23550 // such as the repl. Also, if the push() triggered a
23551 // readable event, and the user called read(largeNumber) such that
23552 // needReadable was set, then we ought to push more, so that another
23553 // 'readable' event will be triggered.
23554 function needMoreData(state) {
23555 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23556 }
23557
23558 // backwards compatibility.
23559 Readable.prototype.setEncoding = function (enc) {
23560 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23561 this._readableState.decoder = new StringDecoder(enc);
23562 this._readableState.encoding = enc;
23563 return this;
23564 };
23565
23566 // Don't raise the hwm > 8MB
23567 var MAX_HWM = 0x800000;
23568 function computeNewHighWaterMark(n) {
23569 if (n >= MAX_HWM) {
23570 n = MAX_HWM;
23571 } else {
23572 // Get the next highest power of 2 to prevent increasing hwm excessively in
23573 // tiny amounts
23574 n--;
23575 n |= n >>> 1;
23576 n |= n >>> 2;
23577 n |= n >>> 4;
23578 n |= n >>> 8;
23579 n |= n >>> 16;
23580 n++;
23581 }
23582 return n;
23583 }
23584
23585 // This function is designed to be inlinable, so please take care when making
23586 // changes to the function body.
23587 function howMuchToRead(n, state) {
23588 if (n <= 0 || state.length === 0 && state.ended) return 0;
23589 if (state.objectMode) return 1;
23590 if (n !== n) {
23591 // Only flow one buffer at a time
23592 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23593 }
23594 // If we're asking for more than the current hwm, then raise the hwm.
23595 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23596 if (n <= state.length) return n;
23597 // Don't have enough
23598 if (!state.ended) {
23599 state.needReadable = true;
23600 return 0;
23601 }
23602 return state.length;
23603 }
23604
23605 // you can override either this method, or the async _read(n) below.
23606 Readable.prototype.read = function (n) {
23607 debug('read', n);
23608 n = parseInt(n, 10);
23609 var state = this._readableState;
23610 var nOrig = n;
23611
23612 if (n !== 0) state.emittedReadable = false;
23613
23614 // if we're doing read(0) to trigger a readable event, but we
23615 // already have a bunch of data in the buffer, then just trigger
23616 // the 'readable' event and move on.
23617 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23618 debug('read: emitReadable', state.length, state.ended);
23619 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23620 return null;
23621 }
23622
23623 n = howMuchToRead(n, state);
23624
23625 // if we've ended, and we're now clear, then finish it up.
23626 if (n === 0 && state.ended) {
23627 if (state.length === 0) endReadable(this);
23628 return null;
23629 }
23630
23631 // All the actual chunk generation logic needs to be
23632 // *below* the call to _read. The reason is that in certain
23633 // synthetic stream cases, such as passthrough streams, _read
23634 // may be a completely synchronous operation which may change
23635 // the state of the read buffer, providing enough data when
23636 // before there was *not* enough.
23637 //
23638 // So, the steps are:
23639 // 1. Figure out what the state of things will be after we do
23640 // a read from the buffer.
23641 //
23642 // 2. If that resulting state will trigger a _read, then call _read.
23643 // Note that this may be asynchronous, or synchronous. Yes, it is
23644 // deeply ugly to write APIs this way, but that still doesn't mean
23645 // that the Readable class should behave improperly, as streams are
23646 // designed to be sync/async agnostic.
23647 // Take note if the _read call is sync or async (ie, if the read call
23648 // has returned yet), so that we know whether or not it's safe to emit
23649 // 'readable' etc.
23650 //
23651 // 3. Actually pull the requested chunks out of the buffer and return.
23652
23653 // if we need a readable event, then we need to do some reading.
23654 var doRead = state.needReadable;
23655 debug('need readable', doRead);
23656
23657 // if we currently have less than the highWaterMark, then also read some
23658 if (state.length === 0 || state.length - n < state.highWaterMark) {
23659 doRead = true;
23660 debug('length less than watermark', doRead);
23661 }
23662
23663 // however, if we've ended, then there's no point, and if we're already
23664 // reading, then it's unnecessary.
23665 if (state.ended || state.reading) {
23666 doRead = false;
23667 debug('reading or ended', doRead);
23668 } else if (doRead) {
23669 debug('do read');
23670 state.reading = true;
23671 state.sync = true;
23672 // if the length is currently zero, then we *need* a readable event.
23673 if (state.length === 0) state.needReadable = true;
23674 // call internal read method
23675 this._read(state.highWaterMark);
23676 state.sync = false;
23677 // If _read pushed data synchronously, then `reading` will be false,
23678 // and we need to re-evaluate how much data we can return to the user.
23679 if (!state.reading) n = howMuchToRead(nOrig, state);
23680 }
23681
23682 var ret;
23683 if (n > 0) ret = fromList(n, state);else ret = null;
23684
23685 if (ret === null) {
23686 state.needReadable = true;
23687 n = 0;
23688 } else {
23689 state.length -= n;
23690 }
23691
23692 if (state.length === 0) {
23693 // If we have nothing in the buffer, then we want to know
23694 // as soon as we *do* get something into the buffer.
23695 if (!state.ended) state.needReadable = true;
23696
23697 // If we tried to read() past the EOF, then emit end on the next tick.
23698 if (nOrig !== n && state.ended) endReadable(this);
23699 }
23700
23701 if (ret !== null) this.emit('data', ret);
23702
23703 return ret;
23704 };
23705
23706 function chunkInvalid(state, chunk) {
23707 var er = null;
23708 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23709 er = new TypeError('Invalid non-string/buffer chunk');
23710 }
23711 return er;
23712 }
23713
23714 function onEofChunk(stream, state) {
23715 if (state.ended) return;
23716 if (state.decoder) {
23717 var chunk = state.decoder.end();
23718 if (chunk && chunk.length) {
23719 state.buffer.push(chunk);
23720 state.length += state.objectMode ? 1 : chunk.length;
23721 }
23722 }
23723 state.ended = true;
23724
23725 // emit 'readable' now to make sure it gets picked up.
23726 emitReadable(stream);
23727 }
23728
23729 // Don't emit readable right away in sync mode, because this can trigger
23730 // another read() call => stack overflow. This way, it might trigger
23731 // a nextTick recursion warning, but that's not so bad.
23732 function emitReadable(stream) {
23733 var state = stream._readableState;
23734 state.needReadable = false;
23735 if (!state.emittedReadable) {
23736 debug('emitReadable', state.flowing);
23737 state.emittedReadable = true;
23738 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23739 }
23740 }
23741
23742 function emitReadable_(stream) {
23743 debug('emit readable');
23744 stream.emit('readable');
23745 flow(stream);
23746 }
23747
23748 // at this point, the user has presumably seen the 'readable' event,
23749 // and called read() to consume some data. that may have triggered
23750 // in turn another _read(n) call, in which case reading = true if
23751 // it's in progress.
23752 // However, if we're not ended, or reading, and the length < hwm,
23753 // then go ahead and try to read some more preemptively.
23754 function maybeReadMore(stream, state) {
23755 if (!state.readingMore) {
23756 state.readingMore = true;
23757 processNextTick(maybeReadMore_, stream, state);
23758 }
23759 }
23760
23761 function maybeReadMore_(stream, state) {
23762 var len = state.length;
23763 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23764 debug('maybeReadMore read 0');
23765 stream.read(0);
23766 if (len === state.length)
23767 // didn't get any data, stop spinning.
23768 break;else len = state.length;
23769 }
23770 state.readingMore = false;
23771 }
23772
23773 // abstract method. to be overridden in specific implementation classes.
23774 // call cb(er, data) where data is <= n in length.
23775 // for virtual (non-string, non-buffer) streams, "length" is somewhat
23776 // arbitrary, and perhaps not very meaningful.
23777 Readable.prototype._read = function (n) {
23778 this.emit('error', new Error('_read() is not implemented'));
23779 };
23780
23781 Readable.prototype.pipe = function (dest, pipeOpts) {
23782 var src = this;
23783 var state = this._readableState;
23784
23785 switch (state.pipesCount) {
23786 case 0:
23787 state.pipes = dest;
23788 break;
23789 case 1:
23790 state.pipes = [state.pipes, dest];
23791 break;
23792 default:
23793 state.pipes.push(dest);
23794 break;
23795 }
23796 state.pipesCount += 1;
23797 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
23798
23799 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
23800
23801 var endFn = doEnd ? onend : cleanup;
23802 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
23803
23804 dest.on('unpipe', onunpipe);
23805 function onunpipe(readable) {
23806 debug('onunpipe');
23807 if (readable === src) {
23808 cleanup();
23809 }
23810 }
23811
23812 function onend() {
23813 debug('onend');
23814 dest.end();
23815 }
23816
23817 // when the dest drains, it reduces the awaitDrain counter
23818 // on the source. This would be more elegant with a .once()
23819 // handler in flow(), but adding and removing repeatedly is
23820 // too slow.
23821 var ondrain = pipeOnDrain(src);
23822 dest.on('drain', ondrain);
23823
23824 var cleanedUp = false;
23825 function cleanup() {
23826 debug('cleanup');
23827 // cleanup event handlers once the pipe is broken
23828 dest.removeListener('close', onclose);
23829 dest.removeListener('finish', onfinish);
23830 dest.removeListener('drain', ondrain);
23831 dest.removeListener('error', onerror);
23832 dest.removeListener('unpipe', onunpipe);
23833 src.removeListener('end', onend);
23834 src.removeListener('end', cleanup);
23835 src.removeListener('data', ondata);
23836
23837 cleanedUp = true;
23838
23839 // if the reader is waiting for a drain event from this
23840 // specific writer, then it would cause it to never start
23841 // flowing again.
23842 // So, if this is awaiting a drain, then we just call it now.
23843 // If we don't know, then assume that we are waiting for one.
23844 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23845 }
23846
23847 // If the user pushes more data while we're writing to dest then we'll end up
23848 // in ondata again. However, we only want to increase awaitDrain once because
23849 // dest will only emit one 'drain' event for the multiple writes.
23850 // => Introduce a guard on increasing awaitDrain.
23851 var increasedAwaitDrain = false;
23852 src.on('data', ondata);
23853 function ondata(chunk) {
23854 debug('ondata');
23855 increasedAwaitDrain = false;
23856 var ret = dest.write(chunk);
23857 if (false === ret && !increasedAwaitDrain) {
23858 // If the user unpiped during `dest.write()`, it is possible
23859 // to get stuck in a permanently paused state if that write
23860 // also returned false.
23861 // => Check whether `dest` is still a piping destination.
23862 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23863 debug('false write response, pause', src._readableState.awaitDrain);
23864 src._readableState.awaitDrain++;
23865 increasedAwaitDrain = true;
23866 }
23867 src.pause();
23868 }
23869 }
23870
23871 // if the dest has an error, then stop piping into it.
23872 // however, don't suppress the throwing behavior for this.
23873 function onerror(er) {
23874 debug('onerror', er);
23875 unpipe();
23876 dest.removeListener('error', onerror);
23877 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23878 }
23879
23880 // Make sure our error handler is attached before userland ones.
23881 prependListener(dest, 'error', onerror);
23882
23883 // Both close and finish should trigger unpipe, but only once.
23884 function onclose() {
23885 dest.removeListener('finish', onfinish);
23886 unpipe();
23887 }
23888 dest.once('close', onclose);
23889 function onfinish() {
23890 debug('onfinish');
23891 dest.removeListener('close', onclose);
23892 unpipe();
23893 }
23894 dest.once('finish', onfinish);
23895
23896 function unpipe() {
23897 debug('unpipe');
23898 src.unpipe(dest);
23899 }
23900
23901 // tell the dest that it's being piped to
23902 dest.emit('pipe', src);
23903
23904 // start the flow if it hasn't been started already.
23905 if (!state.flowing) {
23906 debug('pipe resume');
23907 src.resume();
23908 }
23909
23910 return dest;
23911 };
23912
23913 function pipeOnDrain(src) {
23914 return function () {
23915 var state = src._readableState;
23916 debug('pipeOnDrain', state.awaitDrain);
23917 if (state.awaitDrain) state.awaitDrain--;
23918 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23919 state.flowing = true;
23920 flow(src);
23921 }
23922 };
23923 }
23924
23925 Readable.prototype.unpipe = function (dest) {
23926 var state = this._readableState;
23927
23928 // if we're not piping anywhere, then do nothing.
23929 if (state.pipesCount === 0) return this;
23930
23931 // just one destination. most common case.
23932 if (state.pipesCount === 1) {
23933 // passed in one, but it's not the right one.
23934 if (dest && dest !== state.pipes) return this;
23935
23936 if (!dest) dest = state.pipes;
23937
23938 // got a match.
23939 state.pipes = null;
23940 state.pipesCount = 0;
23941 state.flowing = false;
23942 if (dest) dest.emit('unpipe', this);
23943 return this;
23944 }
23945
23946 // slow case. multiple pipe destinations.
23947
23948 if (!dest) {
23949 // remove all.
23950 var dests = state.pipes;
23951 var len = state.pipesCount;
23952 state.pipes = null;
23953 state.pipesCount = 0;
23954 state.flowing = false;
23955
23956 for (var i = 0; i < len; i++) {
23957 dests[i].emit('unpipe', this);
23958 }return this;
23959 }
23960
23961 // try to find the right one.
23962 var index = indexOf(state.pipes, dest);
23963 if (index === -1) return this;
23964
23965 state.pipes.splice(index, 1);
23966 state.pipesCount -= 1;
23967 if (state.pipesCount === 1) state.pipes = state.pipes[0];
23968
23969 dest.emit('unpipe', this);
23970
23971 return this;
23972 };
23973
23974 // set up data events if they are asked for
23975 // Ensure readable listeners eventually get something
23976 Readable.prototype.on = function (ev, fn) {
23977 var res = Stream.prototype.on.call(this, ev, fn);
23978
23979 if (ev === 'data') {
23980 // Start flowing on next tick if stream isn't explicitly paused
23981 if (this._readableState.flowing !== false) this.resume();
23982 } else if (ev === 'readable') {
23983 var state = this._readableState;
23984 if (!state.endEmitted && !state.readableListening) {
23985 state.readableListening = state.needReadable = true;
23986 state.emittedReadable = false;
23987 if (!state.reading) {
23988 processNextTick(nReadingNextTick, this);
23989 } else if (state.length) {
23990 emitReadable(this, state);
23991 }
23992 }
23993 }
23994
23995 return res;
23996 };
23997 Readable.prototype.addListener = Readable.prototype.on;
23998
23999 function nReadingNextTick(self) {
24000 debug('readable nexttick read 0');
24001 self.read(0);
24002 }
24003
24004 // pause() and resume() are remnants of the legacy readable stream API
24005 // If the user uses them, then switch into old mode.
24006 Readable.prototype.resume = function () {
24007 var state = this._readableState;
24008 if (!state.flowing) {
24009 debug('resume');
24010 state.flowing = true;
24011 resume(this, state);
24012 }
24013 return this;
24014 };
24015
24016 function resume(stream, state) {
24017 if (!state.resumeScheduled) {
24018 state.resumeScheduled = true;
24019 processNextTick(resume_, stream, state);
24020 }
24021 }
24022
24023 function resume_(stream, state) {
24024 if (!state.reading) {
24025 debug('resume read 0');
24026 stream.read(0);
24027 }
24028
24029 state.resumeScheduled = false;
24030 state.awaitDrain = 0;
24031 stream.emit('resume');
24032 flow(stream);
24033 if (state.flowing && !state.reading) stream.read(0);
24034 }
24035
24036 Readable.prototype.pause = function () {
24037 debug('call pause flowing=%j', this._readableState.flowing);
24038 if (false !== this._readableState.flowing) {
24039 debug('pause');
24040 this._readableState.flowing = false;
24041 this.emit('pause');
24042 }
24043 return this;
24044 };
24045
24046 function flow(stream) {
24047 var state = stream._readableState;
24048 debug('flow', state.flowing);
24049 while (state.flowing && stream.read() !== null) {}
24050 }
24051
24052 // wrap an old-style stream as the async data source.
24053 // This is *not* part of the readable stream interface.
24054 // It is an ugly unfortunate mess of history.
24055 Readable.prototype.wrap = function (stream) {
24056 var state = this._readableState;
24057 var paused = false;
24058
24059 var self = this;
24060 stream.on('end', function () {
24061 debug('wrapped end');
24062 if (state.decoder && !state.ended) {
24063 var chunk = state.decoder.end();
24064 if (chunk && chunk.length) self.push(chunk);
24065 }
24066
24067 self.push(null);
24068 });
24069
24070 stream.on('data', function (chunk) {
24071 debug('wrapped data');
24072 if (state.decoder) chunk = state.decoder.write(chunk);
24073
24074 // don't skip over falsy values in objectMode
24075 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
24076
24077 var ret = self.push(chunk);
24078 if (!ret) {
24079 paused = true;
24080 stream.pause();
24081 }
24082 });
24083
24084 // proxy all the other methods.
24085 // important when wrapping filters and duplexes.
24086 for (var i in stream) {
24087 if (this[i] === undefined && typeof stream[i] === 'function') {
24088 this[i] = function (method) {
24089 return function () {
24090 return stream[method].apply(stream, arguments);
24091 };
24092 }(i);
24093 }
24094 }
24095
24096 // proxy certain important events.
24097 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24098 forEach(events, function (ev) {
24099 stream.on(ev, self.emit.bind(self, ev));
24100 });
24101
24102 // when we try to consume some more bytes, simply unpause the
24103 // underlying stream.
24104 self._read = function (n) {
24105 debug('wrapped _read', n);
24106 if (paused) {
24107 paused = false;
24108 stream.resume();
24109 }
24110 };
24111
24112 return self;
24113 };
24114
24115 // exposed for testing purposes only.
24116 Readable._fromList = fromList;
24117
24118 // Pluck off n bytes from an array of buffers.
24119 // Length is the combined lengths of all the buffers in the list.
24120 // This function is designed to be inlinable, so please take care when making
24121 // changes to the function body.
24122 function fromList(n, state) {
24123 // nothing buffered
24124 if (state.length === 0) return null;
24125
24126 var ret;
24127 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24128 // read it all, truncate the list
24129 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);
24130 state.buffer.clear();
24131 } else {
24132 // read part of list
24133 ret = fromListPartial(n, state.buffer, state.decoder);
24134 }
24135
24136 return ret;
24137 }
24138
24139 // Extracts only enough buffered data to satisfy the amount requested.
24140 // This function is designed to be inlinable, so please take care when making
24141 // changes to the function body.
24142 function fromListPartial(n, list, hasStrings) {
24143 var ret;
24144 if (n < list.head.data.length) {
24145 // slice is the same for buffers and strings
24146 ret = list.head.data.slice(0, n);
24147 list.head.data = list.head.data.slice(n);
24148 } else if (n === list.head.data.length) {
24149 // first chunk is a perfect match
24150 ret = list.shift();
24151 } else {
24152 // result spans more than one buffer
24153 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24154 }
24155 return ret;
24156 }
24157
24158 // Copies a specified amount of characters from the list of buffered data
24159 // chunks.
24160 // This function is designed to be inlinable, so please take care when making
24161 // changes to the function body.
24162 function copyFromBufferString(n, list) {
24163 var p = list.head;
24164 var c = 1;
24165 var ret = p.data;
24166 n -= ret.length;
24167 while (p = p.next) {
24168 var str = p.data;
24169 var nb = n > str.length ? str.length : n;
24170 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24171 n -= nb;
24172 if (n === 0) {
24173 if (nb === str.length) {
24174 ++c;
24175 if (p.next) list.head = p.next;else list.head = list.tail = null;
24176 } else {
24177 list.head = p;
24178 p.data = str.slice(nb);
24179 }
24180 break;
24181 }
24182 ++c;
24183 }
24184 list.length -= c;
24185 return ret;
24186 }
24187
24188 // Copies a specified amount of bytes from the list of buffered data chunks.
24189 // This function is designed to be inlinable, so please take care when making
24190 // changes to the function body.
24191 function copyFromBuffer(n, list) {
24192 var ret = bufferShim.allocUnsafe(n);
24193 var p = list.head;
24194 var c = 1;
24195 p.data.copy(ret);
24196 n -= p.data.length;
24197 while (p = p.next) {
24198 var buf = p.data;
24199 var nb = n > buf.length ? buf.length : n;
24200 buf.copy(ret, ret.length - n, 0, nb);
24201 n -= nb;
24202 if (n === 0) {
24203 if (nb === buf.length) {
24204 ++c;
24205 if (p.next) list.head = p.next;else list.head = list.tail = null;
24206 } else {
24207 list.head = p;
24208 p.data = buf.slice(nb);
24209 }
24210 break;
24211 }
24212 ++c;
24213 }
24214 list.length -= c;
24215 return ret;
24216 }
24217
24218 function endReadable(stream) {
24219 var state = stream._readableState;
24220
24221 // If we get here before consuming all the bytes, then that is a
24222 // bug in node. Should never happen.
24223 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
24224
24225 if (!state.endEmitted) {
24226 state.ended = true;
24227 processNextTick(endReadableNT, state, stream);
24228 }
24229 }
24230
24231 function endReadableNT(state, stream) {
24232 // Check that we didn't get one last unshift.
24233 if (!state.endEmitted && state.length === 0) {
24234 state.endEmitted = true;
24235 stream.readable = false;
24236 stream.emit('end');
24237 }
24238 }
24239
24240 function forEach(xs, f) {
24241 for (var i = 0, l = xs.length; i < l; i++) {
24242 f(xs[i], i);
24243 }
24244 }
24245
24246 function indexOf(xs, x) {
24247 for (var i = 0, l = xs.length; i < l; i++) {
24248 if (xs[i] === x) return i;
24249 }
24250 return -1;
24251 }
24252 }).call(this,require('_process'))
24253 },{"./_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){
24254 // a transform stream is a readable/writable stream where you do
24255 // something with the data. Sometimes it's called a "filter",
24256 // but that's not a great name for it, since that implies a thing where
24257 // some bits pass through, and others are simply ignored. (That would
24258 // be a valid example of a transform, of course.)
24259 //
24260 // While the output is causally related to the input, it's not a
24261 // necessarily symmetric or synchronous transformation. For example,
24262 // a zlib stream might take multiple plain-text writes(), and then
24263 // emit a single compressed chunk some time in the future.
24264 //
24265 // Here's how this works:
24266 //
24267 // The Transform stream has all the aspects of the readable and writable
24268 // stream classes. When you write(chunk), that calls _write(chunk,cb)
24269 // internally, and returns false if there's a lot of pending writes
24270 // buffered up. When you call read(), that calls _read(n) until
24271 // there's enough pending readable data buffered up.
24272 //
24273 // In a transform stream, the written data is placed in a buffer. When
24274 // _read(n) is called, it transforms the queued up data, calling the
24275 // buffered _write cb's as it consumes chunks. If consuming a single
24276 // written chunk would result in multiple output chunks, then the first
24277 // outputted bit calls the readcb, and subsequent chunks just go into
24278 // the read buffer, and will cause it to emit 'readable' if necessary.
24279 //
24280 // This way, back-pressure is actually determined by the reading side,
24281 // since _read has to be called to start processing a new chunk. However,
24282 // a pathological inflate type of transform can cause excessive buffering
24283 // here. For example, imagine a stream where every byte of input is
24284 // interpreted as an integer from 0-255, and then results in that many
24285 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24286 // 1kb of data being output. In this case, you could write a very small
24287 // amount of input, and end up with a very large amount of output. In
24288 // such a pathological inflating mechanism, there'd be no way to tell
24289 // the system to stop doing the transform. A single 4MB write could
24290 // cause the system to run out of memory.
24291 //
24292 // However, even in such a pathological case, only a single written chunk
24293 // would be consumed, and then the rest would wait (un-transformed) until
24294 // the results of the previous transformed chunk were consumed.
24295
24296 'use strict';
24297
24298 module.exports = Transform;
24299
24300 var Duplex = require('./_stream_duplex');
24301
24302 /*<replacement>*/
24303 var util = require('core-util-is');
24304 util.inherits = require('inherits');
24305 /*</replacement>*/
24306
24307 util.inherits(Transform, Duplex);
24308
24309 function TransformState(stream) {
24310 this.afterTransform = function (er, data) {
24311 return afterTransform(stream, er, data);
24312 };
24313
24314 this.needTransform = false;
24315 this.transforming = false;
24316 this.writecb = null;
24317 this.writechunk = null;
24318 this.writeencoding = null;
24319 }
24320
24321 function afterTransform(stream, er, data) {
24322 var ts = stream._transformState;
24323 ts.transforming = false;
24324
24325 var cb = ts.writecb;
24326
24327 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
24328
24329 ts.writechunk = null;
24330 ts.writecb = null;
24331
24332 if (data !== null && data !== undefined) stream.push(data);
24333
24334 cb(er);
24335
24336 var rs = stream._readableState;
24337 rs.reading = false;
24338 if (rs.needReadable || rs.length < rs.highWaterMark) {
24339 stream._read(rs.highWaterMark);
24340 }
24341 }
24342
24343 function Transform(options) {
24344 if (!(this instanceof Transform)) return new Transform(options);
24345
24346 Duplex.call(this, options);
24347
24348 this._transformState = new TransformState(this);
24349
24350 var stream = this;
24351
24352 // start out asking for a readable event once data is transformed.
24353 this._readableState.needReadable = true;
24354
24355 // we have implemented the _read method, and done the other things
24356 // that Readable wants before the first _read call, so unset the
24357 // sync guard flag.
24358 this._readableState.sync = false;
24359
24360 if (options) {
24361 if (typeof options.transform === 'function') this._transform = options.transform;
24362
24363 if (typeof options.flush === 'function') this._flush = options.flush;
24364 }
24365
24366 // When the writable side finishes, then flush out anything remaining.
24367 this.once('prefinish', function () {
24368 if (typeof this._flush === 'function') this._flush(function (er, data) {
24369 done(stream, er, data);
24370 });else done(stream);
24371 });
24372 }
24373
24374 Transform.prototype.push = function (chunk, encoding) {
24375 this._transformState.needTransform = false;
24376 return Duplex.prototype.push.call(this, chunk, encoding);
24377 };
24378
24379 // This is the part where you do stuff!
24380 // override this function in implementation classes.
24381 // 'chunk' is an input chunk.
24382 //
24383 // Call `push(newChunk)` to pass along transformed output
24384 // to the readable side. You may call 'push' zero or more times.
24385 //
24386 // Call `cb(err)` when you are done with this chunk. If you pass
24387 // an error, then that'll put the hurt on the whole operation. If you
24388 // never call cb(), then you'll never get another chunk.
24389 Transform.prototype._transform = function (chunk, encoding, cb) {
24390 throw new Error('_transform() is not implemented');
24391 };
24392
24393 Transform.prototype._write = function (chunk, encoding, cb) {
24394 var ts = this._transformState;
24395 ts.writecb = cb;
24396 ts.writechunk = chunk;
24397 ts.writeencoding = encoding;
24398 if (!ts.transforming) {
24399 var rs = this._readableState;
24400 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24401 }
24402 };
24403
24404 // Doesn't matter what the args are here.
24405 // _transform does all the work.
24406 // That we got here means that the readable side wants more data.
24407 Transform.prototype._read = function (n) {
24408 var ts = this._transformState;
24409
24410 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24411 ts.transforming = true;
24412 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24413 } else {
24414 // mark that we need a transform, so that any data that comes in
24415 // will get processed, now that we've asked for it.
24416 ts.needTransform = true;
24417 }
24418 };
24419
24420 function done(stream, er, data) {
24421 if (er) return stream.emit('error', er);
24422
24423 if (data !== null && data !== undefined) stream.push(data);
24424
24425 // if there's nothing in the write buffer, then that means
24426 // that nothing more will ever be provided
24427 var ws = stream._writableState;
24428 var ts = stream._transformState;
24429
24430 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
24431
24432 if (ts.transforming) throw new Error('Calling transform done when still transforming');
24433
24434 return stream.push(null);
24435 }
24436 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
24437 (function (process){
24438 // A bit simpler than readable streams.
24439 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
24440 // the drain event emission and buffering.
24441
24442 'use strict';
24443
24444 module.exports = Writable;
24445
24446 /*<replacement>*/
24447 var processNextTick = require('process-nextick-args');
24448 /*</replacement>*/
24449
24450 /*<replacement>*/
24451 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
24452 /*</replacement>*/
24453
24454 /*<replacement>*/
24455 var Duplex;
24456 /*</replacement>*/
24457
24458 Writable.WritableState = WritableState;
24459
24460 /*<replacement>*/
24461 var util = require('core-util-is');
24462 util.inherits = require('inherits');
24463 /*</replacement>*/
24464
24465 /*<replacement>*/
24466 var internalUtil = {
24467 deprecate: require('util-deprecate')
24468 };
24469 /*</replacement>*/
24470
24471 /*<replacement>*/
24472 var Stream;
24473 (function () {
24474 try {
24475 Stream = require('st' + 'ream');
24476 } catch (_) {} finally {
24477 if (!Stream) Stream = require('events').EventEmitter;
24478 }
24479 })();
24480 /*</replacement>*/
24481
24482 var Buffer = require('buffer').Buffer;
24483 /*<replacement>*/
24484 var bufferShim = require('buffer-shims');
24485 /*</replacement>*/
24486
24487 util.inherits(Writable, Stream);
24488
24489 function nop() {}
24490
24491 function WriteReq(chunk, encoding, cb) {
24492 this.chunk = chunk;
24493 this.encoding = encoding;
24494 this.callback = cb;
24495 this.next = null;
24496 }
24497
24498 function WritableState(options, stream) {
24499 Duplex = Duplex || require('./_stream_duplex');
24500
24501 options = options || {};
24502
24503 // object stream flag to indicate whether or not this stream
24504 // contains buffers or objects.
24505 this.objectMode = !!options.objectMode;
24506
24507 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24508
24509 // the point at which write() starts returning false
24510 // Note: 0 is a valid value, means that we always return false if
24511 // the entire buffer is not flushed immediately on write()
24512 var hwm = options.highWaterMark;
24513 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24514 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
24515
24516 // cast to ints.
24517 this.highWaterMark = ~ ~this.highWaterMark;
24518
24519 // drain event flag.
24520 this.needDrain = false;
24521 // at the start of calling end()
24522 this.ending = false;
24523 // when end() has been called, and returned
24524 this.ended = false;
24525 // when 'finish' is emitted
24526 this.finished = false;
24527
24528 // should we decode strings into buffers before passing to _write?
24529 // this is here so that some node-core streams can optimize string
24530 // handling at a lower level.
24531 var noDecode = options.decodeStrings === false;
24532 this.decodeStrings = !noDecode;
24533
24534 // Crypto is kind of old and crusty. Historically, its default string
24535 // encoding is 'binary' so we have to make this configurable.
24536 // Everything else in the universe uses 'utf8', though.
24537 this.defaultEncoding = options.defaultEncoding || 'utf8';
24538
24539 // not an actual buffer we keep track of, but a measurement
24540 // of how much we're waiting to get pushed to some underlying
24541 // socket or file.
24542 this.length = 0;
24543
24544 // a flag to see when we're in the middle of a write.
24545 this.writing = false;
24546
24547 // when true all writes will be buffered until .uncork() call
24548 this.corked = 0;
24549
24550 // a flag to be able to tell if the onwrite cb is called immediately,
24551 // or on a later tick. We set this to true at first, because any
24552 // actions that shouldn't happen until "later" should generally also
24553 // not happen before the first write call.
24554 this.sync = true;
24555
24556 // a flag to know if we're processing previously buffered items, which
24557 // may call the _write() callback in the same tick, so that we don't
24558 // end up in an overlapped onwrite situation.
24559 this.bufferProcessing = false;
24560
24561 // the callback that's passed to _write(chunk,cb)
24562 this.onwrite = function (er) {
24563 onwrite(stream, er);
24564 };
24565
24566 // the callback that the user supplies to write(chunk,encoding,cb)
24567 this.writecb = null;
24568
24569 // the amount that is being written when _write is called.
24570 this.writelen = 0;
24571
24572 this.bufferedRequest = null;
24573 this.lastBufferedRequest = null;
24574
24575 // number of pending user-supplied write callbacks
24576 // this must be 0 before 'finish' can be emitted
24577 this.pendingcb = 0;
24578
24579 // emit prefinish if the only thing we're waiting for is _write cbs
24580 // This is relevant for synchronous Transform streams
24581 this.prefinished = false;
24582
24583 // True if the error was already emitted and should not be thrown again
24584 this.errorEmitted = false;
24585
24586 // count buffered requests
24587 this.bufferedRequestCount = 0;
24588
24589 // allocate the first CorkedRequest, there is always
24590 // one allocated and free to use, and we maintain at most two
24591 this.corkedRequestsFree = new CorkedRequest(this);
24592 }
24593
24594 WritableState.prototype.getBuffer = function getBuffer() {
24595 var current = this.bufferedRequest;
24596 var out = [];
24597 while (current) {
24598 out.push(current);
24599 current = current.next;
24600 }
24601 return out;
24602 };
24603
24604 (function () {
24605 try {
24606 Object.defineProperty(WritableState.prototype, 'buffer', {
24607 get: internalUtil.deprecate(function () {
24608 return this.getBuffer();
24609 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24610 });
24611 } catch (_) {}
24612 })();
24613
24614 // Test _writableState for inheritance to account for Duplex streams,
24615 // whose prototype chain only points to Readable.
24616 var realHasInstance;
24617 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24618 realHasInstance = Function.prototype[Symbol.hasInstance];
24619 Object.defineProperty(Writable, Symbol.hasInstance, {
24620 value: function (object) {
24621 if (realHasInstance.call(this, object)) return true;
24622
24623 return object && object._writableState instanceof WritableState;
24624 }
24625 });
24626 } else {
24627 realHasInstance = function (object) {
24628 return object instanceof this;
24629 };
24630 }
24631
24632 function Writable(options) {
24633 Duplex = Duplex || require('./_stream_duplex');
24634
24635 // Writable ctor is applied to Duplexes, too.
24636 // `realHasInstance` is necessary because using plain `instanceof`
24637 // would return false, as no `_writableState` property is attached.
24638
24639 // Trying to use the custom `instanceof` for Writable here will also break the
24640 // Node.js LazyTransform implementation, which has a non-trivial getter for
24641 // `_writableState` that would lead to infinite recursion.
24642 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24643 return new Writable(options);
24644 }
24645
24646 this._writableState = new WritableState(options, this);
24647
24648 // legacy.
24649 this.writable = true;
24650
24651 if (options) {
24652 if (typeof options.write === 'function') this._write = options.write;
24653
24654 if (typeof options.writev === 'function') this._writev = options.writev;
24655 }
24656
24657 Stream.call(this);
24658 }
24659
24660 // Otherwise people can pipe Writable streams, which is just wrong.
24661 Writable.prototype.pipe = function () {
24662 this.emit('error', new Error('Cannot pipe, not readable'));
24663 };
24664
24665 function writeAfterEnd(stream, cb) {
24666 var er = new Error('write after end');
24667 // TODO: defer error events consistently everywhere, not just the cb
24668 stream.emit('error', er);
24669 processNextTick(cb, er);
24670 }
24671
24672 // If we get something that is not a buffer, string, null, or undefined,
24673 // and we're not in objectMode, then that's an error.
24674 // Otherwise stream chunks are all considered to be of length=1, and the
24675 // watermarks determine how many objects to keep in the buffer, rather than
24676 // how many bytes or characters.
24677 function validChunk(stream, state, chunk, cb) {
24678 var valid = true;
24679 var er = false;
24680 // Always throw error if a null is written
24681 // if we are not in object mode then throw
24682 // if it is not a buffer, string, or undefined.
24683 if (chunk === null) {
24684 er = new TypeError('May not write null values to stream');
24685 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24686 er = new TypeError('Invalid non-string/buffer chunk');
24687 }
24688 if (er) {
24689 stream.emit('error', er);
24690 processNextTick(cb, er);
24691 valid = false;
24692 }
24693 return valid;
24694 }
24695
24696 Writable.prototype.write = function (chunk, encoding, cb) {
24697 var state = this._writableState;
24698 var ret = false;
24699
24700 if (typeof encoding === 'function') {
24701 cb = encoding;
24702 encoding = null;
24703 }
24704
24705 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
24706
24707 if (typeof cb !== 'function') cb = nop;
24708
24709 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24710 state.pendingcb++;
24711 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24712 }
24713
24714 return ret;
24715 };
24716
24717 Writable.prototype.cork = function () {
24718 var state = this._writableState;
24719
24720 state.corked++;
24721 };
24722
24723 Writable.prototype.uncork = function () {
24724 var state = this._writableState;
24725
24726 if (state.corked) {
24727 state.corked--;
24728
24729 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24730 }
24731 };
24732
24733 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24734 // node::ParseEncoding() requires lower case.
24735 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24736 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);
24737 this._writableState.defaultEncoding = encoding;
24738 return this;
24739 };
24740
24741 function decodeChunk(state, chunk, encoding) {
24742 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24743 chunk = bufferShim.from(chunk, encoding);
24744 }
24745 return chunk;
24746 }
24747
24748 // if we're already writing something, then just put this
24749 // in the queue, and wait our turn. Otherwise, call _write
24750 // If we return false, then we need a drain event, so set that flag.
24751 function writeOrBuffer(stream, state, chunk, encoding, cb) {
24752 chunk = decodeChunk(state, chunk, encoding);
24753
24754 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24755 var len = state.objectMode ? 1 : chunk.length;
24756
24757 state.length += len;
24758
24759 var ret = state.length < state.highWaterMark;
24760 // we must ensure that previous needDrain will not be reset to false.
24761 if (!ret) state.needDrain = true;
24762
24763 if (state.writing || state.corked) {
24764 var last = state.lastBufferedRequest;
24765 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24766 if (last) {
24767 last.next = state.lastBufferedRequest;
24768 } else {
24769 state.bufferedRequest = state.lastBufferedRequest;
24770 }
24771 state.bufferedRequestCount += 1;
24772 } else {
24773 doWrite(stream, state, false, len, chunk, encoding, cb);
24774 }
24775
24776 return ret;
24777 }
24778
24779 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24780 state.writelen = len;
24781 state.writecb = cb;
24782 state.writing = true;
24783 state.sync = true;
24784 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24785 state.sync = false;
24786 }
24787
24788 function onwriteError(stream, state, sync, er, cb) {
24789 --state.pendingcb;
24790 if (sync) processNextTick(cb, er);else cb(er);
24791
24792 stream._writableState.errorEmitted = true;
24793 stream.emit('error', er);
24794 }
24795
24796 function onwriteStateUpdate(state) {
24797 state.writing = false;
24798 state.writecb = null;
24799 state.length -= state.writelen;
24800 state.writelen = 0;
24801 }
24802
24803 function onwrite(stream, er) {
24804 var state = stream._writableState;
24805 var sync = state.sync;
24806 var cb = state.writecb;
24807
24808 onwriteStateUpdate(state);
24809
24810 if (er) onwriteError(stream, state, sync, er, cb);else {
24811 // Check if we're actually ready to finish, but don't emit yet
24812 var finished = needFinish(state);
24813
24814 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24815 clearBuffer(stream, state);
24816 }
24817
24818 if (sync) {
24819 /*<replacement>*/
24820 asyncWrite(afterWrite, stream, state, finished, cb);
24821 /*</replacement>*/
24822 } else {
24823 afterWrite(stream, state, finished, cb);
24824 }
24825 }
24826 }
24827
24828 function afterWrite(stream, state, finished, cb) {
24829 if (!finished) onwriteDrain(stream, state);
24830 state.pendingcb--;
24831 cb();
24832 finishMaybe(stream, state);
24833 }
24834
24835 // Must force callback to be called on nextTick, so that we don't
24836 // emit 'drain' before the write() consumer gets the 'false' return
24837 // value, and has a chance to attach a 'drain' listener.
24838 function onwriteDrain(stream, state) {
24839 if (state.length === 0 && state.needDrain) {
24840 state.needDrain = false;
24841 stream.emit('drain');
24842 }
24843 }
24844
24845 // if there's something in the buffer waiting, then process it
24846 function clearBuffer(stream, state) {
24847 state.bufferProcessing = true;
24848 var entry = state.bufferedRequest;
24849
24850 if (stream._writev && entry && entry.next) {
24851 // Fast case, write everything using _writev()
24852 var l = state.bufferedRequestCount;
24853 var buffer = new Array(l);
24854 var holder = state.corkedRequestsFree;
24855 holder.entry = entry;
24856
24857 var count = 0;
24858 while (entry) {
24859 buffer[count] = entry;
24860 entry = entry.next;
24861 count += 1;
24862 }
24863
24864 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
24865
24866 // doWrite is almost always async, defer these to save a bit of time
24867 // as the hot path ends with doWrite
24868 state.pendingcb++;
24869 state.lastBufferedRequest = null;
24870 if (holder.next) {
24871 state.corkedRequestsFree = holder.next;
24872 holder.next = null;
24873 } else {
24874 state.corkedRequestsFree = new CorkedRequest(state);
24875 }
24876 } else {
24877 // Slow case, write chunks one-by-one
24878 while (entry) {
24879 var chunk = entry.chunk;
24880 var encoding = entry.encoding;
24881 var cb = entry.callback;
24882 var len = state.objectMode ? 1 : chunk.length;
24883
24884 doWrite(stream, state, false, len, chunk, encoding, cb);
24885 entry = entry.next;
24886 // if we didn't call the onwrite immediately, then
24887 // it means that we need to wait until it does.
24888 // also, that means that the chunk and cb are currently
24889 // being processed, so move the buffer counter past them.
24890 if (state.writing) {
24891 break;
24892 }
24893 }
24894
24895 if (entry === null) state.lastBufferedRequest = null;
24896 }
24897
24898 state.bufferedRequestCount = 0;
24899 state.bufferedRequest = entry;
24900 state.bufferProcessing = false;
24901 }
24902
24903 Writable.prototype._write = function (chunk, encoding, cb) {
24904 cb(new Error('_write() is not implemented'));
24905 };
24906
24907 Writable.prototype._writev = null;
24908
24909 Writable.prototype.end = function (chunk, encoding, cb) {
24910 var state = this._writableState;
24911
24912 if (typeof chunk === 'function') {
24913 cb = chunk;
24914 chunk = null;
24915 encoding = null;
24916 } else if (typeof encoding === 'function') {
24917 cb = encoding;
24918 encoding = null;
24919 }
24920
24921 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
24922
24923 // .end() fully uncorks
24924 if (state.corked) {
24925 state.corked = 1;
24926 this.uncork();
24927 }
24928
24929 // ignore unnecessary end() calls.
24930 if (!state.ending && !state.finished) endWritable(this, state, cb);
24931 };
24932
24933 function needFinish(state) {
24934 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24935 }
24936
24937 function prefinish(stream, state) {
24938 if (!state.prefinished) {
24939 state.prefinished = true;
24940 stream.emit('prefinish');
24941 }
24942 }
24943
24944 function finishMaybe(stream, state) {
24945 var need = needFinish(state);
24946 if (need) {
24947 if (state.pendingcb === 0) {
24948 prefinish(stream, state);
24949 state.finished = true;
24950 stream.emit('finish');
24951 } else {
24952 prefinish(stream, state);
24953 }
24954 }
24955 return need;
24956 }
24957
24958 function endWritable(stream, state, cb) {
24959 state.ending = true;
24960 finishMaybe(stream, state);
24961 if (cb) {
24962 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
24963 }
24964 state.ended = true;
24965 stream.writable = false;
24966 }
24967
24968 // It seems a linked list but it is not
24969 // there will be only 2 of these for each stream
24970 function CorkedRequest(state) {
24971 var _this = this;
24972
24973 this.next = null;
24974 this.entry = null;
24975
24976 this.finish = function (err) {
24977 var entry = _this.entry;
24978 _this.entry = null;
24979 while (entry) {
24980 var cb = entry.callback;
24981 state.pendingcb--;
24982 cb(err);
24983 entry = entry.next;
24984 }
24985 if (state.corkedRequestsFree) {
24986 state.corkedRequestsFree.next = _this;
24987 } else {
24988 state.corkedRequestsFree = _this;
24989 }
24990 };
24991 }
24992 }).call(this,require('_process'))
24993 },{"./_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){
24994 'use strict';
24995
24996 var Buffer = require('buffer').Buffer;
24997 /*<replacement>*/
24998 var bufferShim = require('buffer-shims');
24999 /*</replacement>*/
25000
25001 module.exports = BufferList;
25002
25003 function BufferList() {
25004 this.head = null;
25005 this.tail = null;
25006 this.length = 0;
25007 }
25008
25009 BufferList.prototype.push = function (v) {
25010 var entry = { data: v, next: null };
25011 if (this.length > 0) this.tail.next = entry;else this.head = entry;
25012 this.tail = entry;
25013 ++this.length;
25014 };
25015
25016 BufferList.prototype.unshift = function (v) {
25017 var entry = { data: v, next: this.head };
25018 if (this.length === 0) this.tail = entry;
25019 this.head = entry;
25020 ++this.length;
25021 };
25022
25023 BufferList.prototype.shift = function () {
25024 if (this.length === 0) return;
25025 var ret = this.head.data;
25026 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
25027 --this.length;
25028 return ret;
25029 };
25030
25031 BufferList.prototype.clear = function () {
25032 this.head = this.tail = null;
25033 this.length = 0;
25034 };
25035
25036 BufferList.prototype.join = function (s) {
25037 if (this.length === 0) return '';
25038 var p = this.head;
25039 var ret = '' + p.data;
25040 while (p = p.next) {
25041 ret += s + p.data;
25042 }return ret;
25043 };
25044
25045 BufferList.prototype.concat = function (n) {
25046 if (this.length === 0) return bufferShim.alloc(0);
25047 if (this.length === 1) return this.head.data;
25048 var ret = bufferShim.allocUnsafe(n >>> 0);
25049 var p = this.head;
25050 var i = 0;
25051 while (p) {
25052 p.data.copy(ret, i);
25053 i += p.data.length;
25054 p = p.next;
25055 }
25056 return ret;
25057 };
25058 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25059 module.exports = require("./lib/_stream_passthrough.js")
25060
25061 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25062 (function (process){
25063 var Stream = (function (){
25064 try {
25065 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25066 } catch(_){}
25067 }());
25068 exports = module.exports = require('./lib/_stream_readable.js');
25069 exports.Stream = Stream || exports;
25070 exports.Readable = exports;
25071 exports.Writable = require('./lib/_stream_writable.js');
25072 exports.Duplex = require('./lib/_stream_duplex.js');
25073 exports.Transform = require('./lib/_stream_transform.js');
25074 exports.PassThrough = require('./lib/_stream_passthrough.js');
25075
25076 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25077 module.exports = Stream;
25078 }
25079
25080 }).call(this,require('_process'))
25081 },{"./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){
25082 module.exports = require("./lib/_stream_transform.js")
25083
25084 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25085 module.exports = require("./lib/_stream_writable.js")
25086
25087 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25088 // Copyright Joyent, Inc. and other Node contributors.
25089 //
25090 // Permission is hereby granted, free of charge, to any person obtaining a
25091 // copy of this software and associated documentation files (the
25092 // "Software"), to deal in the Software without restriction, including
25093 // without limitation the rights to use, copy, modify, merge, publish,
25094 // distribute, sublicense, and/or sell copies of the Software, and to permit
25095 // persons to whom the Software is furnished to do so, subject to the
25096 // following conditions:
25097 //
25098 // The above copyright notice and this permission notice shall be included
25099 // in all copies or substantial portions of the Software.
25100 //
25101 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25102 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25103 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25104 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25105 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25106 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25107 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25108
25109 module.exports = Stream;
25110
25111 var EE = require('events').EventEmitter;
25112 var inherits = require('inherits');
25113
25114 inherits(Stream, EE);
25115 Stream.Readable = require('readable-stream/readable.js');
25116 Stream.Writable = require('readable-stream/writable.js');
25117 Stream.Duplex = require('readable-stream/duplex.js');
25118 Stream.Transform = require('readable-stream/transform.js');
25119 Stream.PassThrough = require('readable-stream/passthrough.js');
25120
25121 // Backwards-compat with node 0.4.x
25122 Stream.Stream = Stream;
25123
25124
25125
25126 // old-style streams. Note that the pipe method (the only relevant
25127 // part of this class) is overridden in the Readable class.
25128
25129 function Stream() {
25130 EE.call(this);
25131 }
25132
25133 Stream.prototype.pipe = function(dest, options) {
25134 var source = this;
25135
25136 function ondata(chunk) {
25137 if (dest.writable) {
25138 if (false === dest.write(chunk) && source.pause) {
25139 source.pause();
25140 }
25141 }
25142 }
25143
25144 source.on('data', ondata);
25145
25146 function ondrain() {
25147 if (source.readable && source.resume) {
25148 source.resume();
25149 }
25150 }
25151
25152 dest.on('drain', ondrain);
25153
25154 // If the 'end' option is not supplied, dest.end() will be called when
25155 // source gets the 'end' or 'close' events. Only dest.end() once.
25156 if (!dest._isStdio && (!options || options.end !== false)) {
25157 source.on('end', onend);
25158 source.on('close', onclose);
25159 }
25160
25161 var didOnEnd = false;
25162 function onend() {
25163 if (didOnEnd) return;
25164 didOnEnd = true;
25165
25166 dest.end();
25167 }
25168
25169
25170 function onclose() {
25171 if (didOnEnd) return;
25172 didOnEnd = true;
25173
25174 if (typeof dest.destroy === 'function') dest.destroy();
25175 }
25176
25177 // don't leave dangling pipes when there are errors.
25178 function onerror(er) {
25179 cleanup();
25180 if (EE.listenerCount(this, 'error') === 0) {
25181 throw er; // Unhandled stream error in pipe.
25182 }
25183 }
25184
25185 source.on('error', onerror);
25186 dest.on('error', onerror);
25187
25188 // remove all the event listeners that were added.
25189 function cleanup() {
25190 source.removeListener('data', ondata);
25191 dest.removeListener('drain', ondrain);
25192
25193 source.removeListener('end', onend);
25194 source.removeListener('close', onclose);
25195
25196 source.removeListener('error', onerror);
25197 dest.removeListener('error', onerror);
25198
25199 source.removeListener('end', cleanup);
25200 source.removeListener('close', cleanup);
25201
25202 dest.removeListener('close', cleanup);
25203 }
25204
25205 source.on('end', cleanup);
25206 source.on('close', cleanup);
25207
25208 dest.on('close', cleanup);
25209
25210 dest.emit('pipe', source);
25211
25212 // Allow for unix-like usage: A.pipe(B).pipe(C)
25213 return dest;
25214 };
25215
25216 },{"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){
25217 // Copyright Joyent, Inc. and other Node contributors.
25218 //
25219 // Permission is hereby granted, free of charge, to any person obtaining a
25220 // copy of this software and associated documentation files (the
25221 // "Software"), to deal in the Software without restriction, including
25222 // without limitation the rights to use, copy, modify, merge, publish,
25223 // distribute, sublicense, and/or sell copies of the Software, and to permit
25224 // persons to whom the Software is furnished to do so, subject to the
25225 // following conditions:
25226 //
25227 // The above copyright notice and this permission notice shall be included
25228 // in all copies or substantial portions of the Software.
25229 //
25230 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25231 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25232 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25233 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25234 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25235 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25236 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25237
25238 var Buffer = require('buffer').Buffer;
25239
25240 var isBufferEncoding = Buffer.isEncoding
25241 || function(encoding) {
25242 switch (encoding && encoding.toLowerCase()) {
25243 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;
25244 default: return false;
25245 }
25246 }
25247
25248
25249 function assertEncoding(encoding) {
25250 if (encoding && !isBufferEncoding(encoding)) {
25251 throw new Error('Unknown encoding: ' + encoding);
25252 }
25253 }
25254
25255 // StringDecoder provides an interface for efficiently splitting a series of
25256 // buffers into a series of JS strings without breaking apart multi-byte
25257 // characters. CESU-8 is handled as part of the UTF-8 encoding.
25258 //
25259 // @TODO Handling all encodings inside a single object makes it very difficult
25260 // to reason about this code, so it should be split up in the future.
25261 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25262 // points as used by CESU-8.
25263 var StringDecoder = exports.StringDecoder = function(encoding) {
25264 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25265 assertEncoding(encoding);
25266 switch (this.encoding) {
25267 case 'utf8':
25268 // CESU-8 represents each of Surrogate Pair by 3-bytes
25269 this.surrogateSize = 3;
25270 break;
25271 case 'ucs2':
25272 case 'utf16le':
25273 // UTF-16 represents each of Surrogate Pair by 2-bytes
25274 this.surrogateSize = 2;
25275 this.detectIncompleteChar = utf16DetectIncompleteChar;
25276 break;
25277 case 'base64':
25278 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25279 this.surrogateSize = 3;
25280 this.detectIncompleteChar = base64DetectIncompleteChar;
25281 break;
25282 default:
25283 this.write = passThroughWrite;
25284 return;
25285 }
25286
25287 // Enough space to store all bytes of a single character. UTF-8 needs 4
25288 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25289 this.charBuffer = new Buffer(6);
25290 // Number of bytes received for the current incomplete multi-byte character.
25291 this.charReceived = 0;
25292 // Number of bytes expected for the current incomplete multi-byte character.
25293 this.charLength = 0;
25294 };
25295
25296
25297 // write decodes the given buffer and returns it as JS string that is
25298 // guaranteed to not contain any partial multi-byte characters. Any partial
25299 // character found at the end of the buffer is buffered up, and will be
25300 // returned when calling write again with the remaining bytes.
25301 //
25302 // Note: Converting a Buffer containing an orphan surrogate to a String
25303 // currently works, but converting a String to a Buffer (via `new Buffer`, or
25304 // Buffer#write) will replace incomplete surrogates with the unicode
25305 // replacement character. See https://codereview.chromium.org/121173009/ .
25306 StringDecoder.prototype.write = function(buffer) {
25307 var charStr = '';
25308 // if our last write ended with an incomplete multibyte character
25309 while (this.charLength) {
25310 // determine how many remaining bytes this buffer has to offer for this char
25311 var available = (buffer.length >= this.charLength - this.charReceived) ?
25312 this.charLength - this.charReceived :
25313 buffer.length;
25314
25315 // add the new bytes to the char buffer
25316 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25317 this.charReceived += available;
25318
25319 if (this.charReceived < this.charLength) {
25320 // still not enough chars in this buffer? wait for more ...
25321 return '';
25322 }
25323
25324 // remove bytes belonging to the current character from the buffer
25325 buffer = buffer.slice(available, buffer.length);
25326
25327 // get the character that was split
25328 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25329
25330 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25331 var charCode = charStr.charCodeAt(charStr.length - 1);
25332 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25333 this.charLength += this.surrogateSize;
25334 charStr = '';
25335 continue;
25336 }
25337 this.charReceived = this.charLength = 0;
25338
25339 // if there are no more bytes in this buffer, just emit our char
25340 if (buffer.length === 0) {
25341 return charStr;
25342 }
25343 break;
25344 }
25345
25346 // determine and set charLength / charReceived
25347 this.detectIncompleteChar(buffer);
25348
25349 var end = buffer.length;
25350 if (this.charLength) {
25351 // buffer the incomplete character bytes we got
25352 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25353 end -= this.charReceived;
25354 }
25355
25356 charStr += buffer.toString(this.encoding, 0, end);
25357
25358 var end = charStr.length - 1;
25359 var charCode = charStr.charCodeAt(end);
25360 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25361 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25362 var size = this.surrogateSize;
25363 this.charLength += size;
25364 this.charReceived += size;
25365 this.charBuffer.copy(this.charBuffer, size, 0, size);
25366 buffer.copy(this.charBuffer, 0, 0, size);
25367 return charStr.substring(0, end);
25368 }
25369
25370 // or just emit the charStr
25371 return charStr;
25372 };
25373
25374 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
25375 // the end of the given buffer. If so, it sets this.charLength to the byte
25376 // length that character, and sets this.charReceived to the number of bytes
25377 // that are available for this character.
25378 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25379 // determine how many bytes we have to check at the end of this buffer
25380 var i = (buffer.length >= 3) ? 3 : buffer.length;
25381
25382 // Figure out if one of the last i bytes of our buffer announces an
25383 // incomplete char.
25384 for (; i > 0; i--) {
25385 var c = buffer[buffer.length - i];
25386
25387 // See http://en.wikipedia.org/wiki/UTF-8#Description
25388
25389 // 110XXXXX
25390 if (i == 1 && c >> 5 == 0x06) {
25391 this.charLength = 2;
25392 break;
25393 }
25394
25395 // 1110XXXX
25396 if (i <= 2 && c >> 4 == 0x0E) {
25397 this.charLength = 3;
25398 break;
25399 }
25400
25401 // 11110XXX
25402 if (i <= 3 && c >> 3 == 0x1E) {
25403 this.charLength = 4;
25404 break;
25405 }
25406 }
25407 this.charReceived = i;
25408 };
25409
25410 StringDecoder.prototype.end = function(buffer) {
25411 var res = '';
25412 if (buffer && buffer.length)
25413 res = this.write(buffer);
25414
25415 if (this.charReceived) {
25416 var cr = this.charReceived;
25417 var buf = this.charBuffer;
25418 var enc = this.encoding;
25419 res += buf.slice(0, cr).toString(enc);
25420 }
25421
25422 return res;
25423 };
25424
25425 function passThroughWrite(buffer) {
25426 return buffer.toString(this.encoding);
25427 }
25428
25429 function utf16DetectIncompleteChar(buffer) {
25430 this.charReceived = buffer.length % 2;
25431 this.charLength = this.charReceived ? 2 : 0;
25432 }
25433
25434 function base64DetectIncompleteChar(buffer) {
25435 this.charReceived = buffer.length % 3;
25436 this.charLength = this.charReceived ? 3 : 0;
25437 }
25438
25439 },{"buffer":5}],27:[function(require,module,exports){
25440 (function (global){
25441
25442 /**
25443 * Module exports.
25444 */
25445
25446 module.exports = deprecate;
25447
25448 /**
25449 * Mark that a method should not be used.
25450 * Returns a modified function which warns once by default.
25451 *
25452 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25453 *
25454 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25455 * will throw an Error when invoked.
25456 *
25457 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25458 * will invoke `console.trace()` instead of `console.error()`.
25459 *
25460 * @param {Function} fn - the function to deprecate
25461 * @param {String} msg - the string to print to the console when `fn` is invoked
25462 * @returns {Function} a new "deprecated" version of `fn`
25463 * @api public
25464 */
25465
25466 function deprecate (fn, msg) {
25467 if (config('noDeprecation')) {
25468 return fn;
25469 }
25470
25471 var warned = false;
25472 function deprecated() {
25473 if (!warned) {
25474 if (config('throwDeprecation')) {
25475 throw new Error(msg);
25476 } else if (config('traceDeprecation')) {
25477 console.trace(msg);
25478 } else {
25479 console.warn(msg);
25480 }
25481 warned = true;
25482 }
25483 return fn.apply(this, arguments);
25484 }
25485
25486 return deprecated;
25487 }
25488
25489 /**
25490 * Checks `localStorage` for boolean values for the given `name`.
25491 *
25492 * @param {String} name
25493 * @returns {Boolean}
25494 * @api private
25495 */
25496
25497 function config (name) {
25498 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25499 try {
25500 if (!global.localStorage) return false;
25501 } catch (_) {
25502 return false;
25503 }
25504 var val = global.localStorage[name];
25505 if (null == val) return false;
25506 return String(val).toLowerCase() === 'true';
25507 }
25508
25509 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25510 },{}],28:[function(require,module,exports){
25511 arguments[4][9][0].apply(exports,arguments)
25512 },{"dup":9}],29:[function(require,module,exports){
25513 module.exports = function isBuffer(arg) {
25514 return arg && typeof arg === 'object'
25515 && typeof arg.copy === 'function'
25516 && typeof arg.fill === 'function'
25517 && typeof arg.readUInt8 === 'function';
25518 }
25519 },{}],30:[function(require,module,exports){
25520 (function (process,global){
25521 // Copyright Joyent, Inc. and other Node contributors.
25522 //
25523 // Permission is hereby granted, free of charge, to any person obtaining a
25524 // copy of this software and associated documentation files (the
25525 // "Software"), to deal in the Software without restriction, including
25526 // without limitation the rights to use, copy, modify, merge, publish,
25527 // distribute, sublicense, and/or sell copies of the Software, and to permit
25528 // persons to whom the Software is furnished to do so, subject to the
25529 // following conditions:
25530 //
25531 // The above copyright notice and this permission notice shall be included
25532 // in all copies or substantial portions of the Software.
25533 //
25534 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25535 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25536 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25537 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25538 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25539 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25540 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25541
25542 var formatRegExp = /%[sdj%]/g;
25543 exports.format = function(f) {
25544 if (!isString(f)) {
25545 var objects = [];
25546 for (var i = 0; i < arguments.length; i++) {
25547 objects.push(inspect(arguments[i]));
25548 }
25549 return objects.join(' ');
25550 }
25551
25552 var i = 1;
25553 var args = arguments;
25554 var len = args.length;
25555 var str = String(f).replace(formatRegExp, function(x) {
25556 if (x === '%%') return '%';
25557 if (i >= len) return x;
25558 switch (x) {
25559 case '%s': return String(args[i++]);
25560 case '%d': return Number(args[i++]);
25561 case '%j':
25562 try {
25563 return JSON.stringify(args[i++]);
25564 } catch (_) {
25565 return '[Circular]';
25566 }
25567 default:
25568 return x;
25569 }
25570 });
25571 for (var x = args[i]; i < len; x = args[++i]) {
25572 if (isNull(x) || !isObject(x)) {
25573 str += ' ' + x;
25574 } else {
25575 str += ' ' + inspect(x);
25576 }
25577 }
25578 return str;
25579 };
25580
25581
25582 // Mark that a method should not be used.
25583 // Returns a modified function which warns once by default.
25584 // If --no-deprecation is set, then it is a no-op.
25585 exports.deprecate = function(fn, msg) {
25586 // Allow for deprecating things in the process of starting up.
25587 if (isUndefined(global.process)) {
25588 return function() {
25589 return exports.deprecate(fn, msg).apply(this, arguments);
25590 };
25591 }
25592
25593 if (process.noDeprecation === true) {
25594 return fn;
25595 }
25596
25597 var warned = false;
25598 function deprecated() {
25599 if (!warned) {
25600 if (process.throwDeprecation) {
25601 throw new Error(msg);
25602 } else if (process.traceDeprecation) {
25603 console.trace(msg);
25604 } else {
25605 console.error(msg);
25606 }
25607 warned = true;
25608 }
25609 return fn.apply(this, arguments);
25610 }
25611
25612 return deprecated;
25613 };
25614
25615
25616 var debugs = {};
25617 var debugEnviron;
25618 exports.debuglog = function(set) {
25619 if (isUndefined(debugEnviron))
25620 debugEnviron = process.env.NODE_DEBUG || '';
25621 set = set.toUpperCase();
25622 if (!debugs[set]) {
25623 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25624 var pid = process.pid;
25625 debugs[set] = function() {
25626 var msg = exports.format.apply(exports, arguments);
25627 console.error('%s %d: %s', set, pid, msg);
25628 };
25629 } else {
25630 debugs[set] = function() {};
25631 }
25632 }
25633 return debugs[set];
25634 };
25635
25636
25637 /**
25638 * Echos the value of a value. Trys to print the value out
25639 * in the best way possible given the different types.
25640 *
25641 * @param {Object} obj The object to print out.
25642 * @param {Object} opts Optional options object that alters the output.
25643 */
25644 /* legacy: obj, showHidden, depth, colors*/
25645 function inspect(obj, opts) {
25646 // default options
25647 var ctx = {
25648 seen: [],
25649 stylize: stylizeNoColor
25650 };
25651 // legacy...
25652 if (arguments.length >= 3) ctx.depth = arguments[2];
25653 if (arguments.length >= 4) ctx.colors = arguments[3];
25654 if (isBoolean(opts)) {
25655 // legacy...
25656 ctx.showHidden = opts;
25657 } else if (opts) {
25658 // got an "options" object
25659 exports._extend(ctx, opts);
25660 }
25661 // set default options
25662 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25663 if (isUndefined(ctx.depth)) ctx.depth = 2;
25664 if (isUndefined(ctx.colors)) ctx.colors = false;
25665 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25666 if (ctx.colors) ctx.stylize = stylizeWithColor;
25667 return formatValue(ctx, obj, ctx.depth);
25668 }
25669 exports.inspect = inspect;
25670
25671
25672 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25673 inspect.colors = {
25674 'bold' : [1, 22],
25675 'italic' : [3, 23],
25676 'underline' : [4, 24],
25677 'inverse' : [7, 27],
25678 'white' : [37, 39],
25679 'grey' : [90, 39],
25680 'black' : [30, 39],
25681 'blue' : [34, 39],
25682 'cyan' : [36, 39],
25683 'green' : [32, 39],
25684 'magenta' : [35, 39],
25685 'red' : [31, 39],
25686 'yellow' : [33, 39]
25687 };
25688
25689 // Don't use 'blue' not visible on cmd.exe
25690 inspect.styles = {
25691 'special': 'cyan',
25692 'number': 'yellow',
25693 'boolean': 'yellow',
25694 'undefined': 'grey',
25695 'null': 'bold',
25696 'string': 'green',
25697 'date': 'magenta',
25698 // "name": intentionally not styling
25699 'regexp': 'red'
25700 };
25701
25702
25703 function stylizeWithColor(str, styleType) {
25704 var style = inspect.styles[styleType];
25705
25706 if (style) {
25707 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25708 '\u001b[' + inspect.colors[style][1] + 'm';
25709 } else {
25710 return str;
25711 }
25712 }
25713
25714
25715 function stylizeNoColor(str, styleType) {
25716 return str;
25717 }
25718
25719
25720 function arrayToHash(array) {
25721 var hash = {};
25722
25723 array.forEach(function(val, idx) {
25724 hash[val] = true;
25725 });
25726
25727 return hash;
25728 }
25729
25730
25731 function formatValue(ctx, value, recurseTimes) {
25732 // Provide a hook for user-specified inspect functions.
25733 // Check that value is an object with an inspect function on it
25734 if (ctx.customInspect &&
25735 value &&
25736 isFunction(value.inspect) &&
25737 // Filter out the util module, it's inspect function is special
25738 value.inspect !== exports.inspect &&
25739 // Also filter out any prototype objects using the circular check.
25740 !(value.constructor && value.constructor.prototype === value)) {
25741 var ret = value.inspect(recurseTimes, ctx);
25742 if (!isString(ret)) {
25743 ret = formatValue(ctx, ret, recurseTimes);
25744 }
25745 return ret;
25746 }
25747
25748 // Primitive types cannot have properties
25749 var primitive = formatPrimitive(ctx, value);
25750 if (primitive) {
25751 return primitive;
25752 }
25753
25754 // Look up the keys of the object.
25755 var keys = Object.keys(value);
25756 var visibleKeys = arrayToHash(keys);
25757
25758 if (ctx.showHidden) {
25759 keys = Object.getOwnPropertyNames(value);
25760 }
25761
25762 // IE doesn't make error fields non-enumerable
25763 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25764 if (isError(value)
25765 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25766 return formatError(value);
25767 }
25768
25769 // Some type of object without properties can be shortcutted.
25770 if (keys.length === 0) {
25771 if (isFunction(value)) {
25772 var name = value.name ? ': ' + value.name : '';
25773 return ctx.stylize('[Function' + name + ']', 'special');
25774 }
25775 if (isRegExp(value)) {
25776 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25777 }
25778 if (isDate(value)) {
25779 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25780 }
25781 if (isError(value)) {
25782 return formatError(value);
25783 }
25784 }
25785
25786 var base = '', array = false, braces = ['{', '}'];
25787
25788 // Make Array say that they are Array
25789 if (isArray(value)) {
25790 array = true;
25791 braces = ['[', ']'];
25792 }
25793
25794 // Make functions say that they are functions
25795 if (isFunction(value)) {
25796 var n = value.name ? ': ' + value.name : '';
25797 base = ' [Function' + n + ']';
25798 }
25799
25800 // Make RegExps say that they are RegExps
25801 if (isRegExp(value)) {
25802 base = ' ' + RegExp.prototype.toString.call(value);
25803 }
25804
25805 // Make dates with properties first say the date
25806 if (isDate(value)) {
25807 base = ' ' + Date.prototype.toUTCString.call(value);
25808 }
25809
25810 // Make error with message first say the error
25811 if (isError(value)) {
25812 base = ' ' + formatError(value);
25813 }
25814
25815 if (keys.length === 0 && (!array || value.length == 0)) {
25816 return braces[0] + base + braces[1];
25817 }
25818
25819 if (recurseTimes < 0) {
25820 if (isRegExp(value)) {
25821 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25822 } else {
25823 return ctx.stylize('[Object]', 'special');
25824 }
25825 }
25826
25827 ctx.seen.push(value);
25828
25829 var output;
25830 if (array) {
25831 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25832 } else {
25833 output = keys.map(function(key) {
25834 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25835 });
25836 }
25837
25838 ctx.seen.pop();
25839
25840 return reduceToSingleString(output, base, braces);
25841 }
25842
25843
25844 function formatPrimitive(ctx, value) {
25845 if (isUndefined(value))
25846 return ctx.stylize('undefined', 'undefined');
25847 if (isString(value)) {
25848 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25849 .replace(/'/g, "\\'")
25850 .replace(/\\"/g, '"') + '\'';
25851 return ctx.stylize(simple, 'string');
25852 }
25853 if (isNumber(value))
25854 return ctx.stylize('' + value, 'number');
25855 if (isBoolean(value))
25856 return ctx.stylize('' + value, 'boolean');
25857 // For some reason typeof null is "object", so special case here.
25858 if (isNull(value))
25859 return ctx.stylize('null', 'null');
25860 }
25861
25862
25863 function formatError(value) {
25864 return '[' + Error.prototype.toString.call(value) + ']';
25865 }
25866
25867
25868 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25869 var output = [];
25870 for (var i = 0, l = value.length; i < l; ++i) {
25871 if (hasOwnProperty(value, String(i))) {
25872 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25873 String(i), true));
25874 } else {
25875 output.push('');
25876 }
25877 }
25878 keys.forEach(function(key) {
25879 if (!key.match(/^\d+$/)) {
25880 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25881 key, true));
25882 }
25883 });
25884 return output;
25885 }
25886
25887
25888 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25889 var name, str, desc;
25890 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25891 if (desc.get) {
25892 if (desc.set) {
25893 str = ctx.stylize('[Getter/Setter]', 'special');
25894 } else {
25895 str = ctx.stylize('[Getter]', 'special');
25896 }
25897 } else {
25898 if (desc.set) {
25899 str = ctx.stylize('[Setter]', 'special');
25900 }
25901 }
25902 if (!hasOwnProperty(visibleKeys, key)) {
25903 name = '[' + key + ']';
25904 }
25905 if (!str) {
25906 if (ctx.seen.indexOf(desc.value) < 0) {
25907 if (isNull(recurseTimes)) {
25908 str = formatValue(ctx, desc.value, null);
25909 } else {
25910 str = formatValue(ctx, desc.value, recurseTimes - 1);
25911 }
25912 if (str.indexOf('\n') > -1) {
25913 if (array) {
25914 str = str.split('\n').map(function(line) {
25915 return ' ' + line;
25916 }).join('\n').substr(2);
25917 } else {
25918 str = '\n' + str.split('\n').map(function(line) {
25919 return ' ' + line;
25920 }).join('\n');
25921 }
25922 }
25923 } else {
25924 str = ctx.stylize('[Circular]', 'special');
25925 }
25926 }
25927 if (isUndefined(name)) {
25928 if (array && key.match(/^\d+$/)) {
25929 return str;
25930 }
25931 name = JSON.stringify('' + key);
25932 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25933 name = name.substr(1, name.length - 2);
25934 name = ctx.stylize(name, 'name');
25935 } else {
25936 name = name.replace(/'/g, "\\'")
25937 .replace(/\\"/g, '"')
25938 .replace(/(^"|"$)/g, "'");
25939 name = ctx.stylize(name, 'string');
25940 }
25941 }
25942
25943 return name + ': ' + str;
25944 }
25945
25946
25947 function reduceToSingleString(output, base, braces) {
25948 var numLinesEst = 0;
25949 var length = output.reduce(function(prev, cur) {
25950 numLinesEst++;
25951 if (cur.indexOf('\n') >= 0) numLinesEst++;
25952 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25953 }, 0);
25954
25955 if (length > 60) {
25956 return braces[0] +
25957 (base === '' ? '' : base + '\n ') +
25958 ' ' +
25959 output.join(',\n ') +
25960 ' ' +
25961 braces[1];
25962 }
25963
25964 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25965 }
25966
25967
25968 // NOTE: These type checking functions intentionally don't use `instanceof`
25969 // because it is fragile and can be easily faked with `Object.create()`.
25970 function isArray(ar) {
25971 return Array.isArray(ar);
25972 }
25973 exports.isArray = isArray;
25974
25975 function isBoolean(arg) {
25976 return typeof arg === 'boolean';
25977 }
25978 exports.isBoolean = isBoolean;
25979
25980 function isNull(arg) {
25981 return arg === null;
25982 }
25983 exports.isNull = isNull;
25984
25985 function isNullOrUndefined(arg) {
25986 return arg == null;
25987 }
25988 exports.isNullOrUndefined = isNullOrUndefined;
25989
25990 function isNumber(arg) {
25991 return typeof arg === 'number';
25992 }
25993 exports.isNumber = isNumber;
25994
25995 function isString(arg) {
25996 return typeof arg === 'string';
25997 }
25998 exports.isString = isString;
25999
26000 function isSymbol(arg) {
26001 return typeof arg === 'symbol';
26002 }
26003 exports.isSymbol = isSymbol;
26004
26005 function isUndefined(arg) {
26006 return arg === void 0;
26007 }
26008 exports.isUndefined = isUndefined;
26009
26010 function isRegExp(re) {
26011 return isObject(re) && objectToString(re) === '[object RegExp]';
26012 }
26013 exports.isRegExp = isRegExp;
26014
26015 function isObject(arg) {
26016 return typeof arg === 'object' && arg !== null;
26017 }
26018 exports.isObject = isObject;
26019
26020 function isDate(d) {
26021 return isObject(d) && objectToString(d) === '[object Date]';
26022 }
26023 exports.isDate = isDate;
26024
26025 function isError(e) {
26026 return isObject(e) &&
26027 (objectToString(e) === '[object Error]' || e instanceof Error);
26028 }
26029 exports.isError = isError;
26030
26031 function isFunction(arg) {
26032 return typeof arg === 'function';
26033 }
26034 exports.isFunction = isFunction;
26035
26036 function isPrimitive(arg) {
26037 return arg === null ||
26038 typeof arg === 'boolean' ||
26039 typeof arg === 'number' ||
26040 typeof arg === 'string' ||
26041 typeof arg === 'symbol' || // ES6 symbol
26042 typeof arg === 'undefined';
26043 }
26044 exports.isPrimitive = isPrimitive;
26045
26046 exports.isBuffer = require('./support/isBuffer');
26047
26048 function objectToString(o) {
26049 return Object.prototype.toString.call(o);
26050 }
26051
26052
26053 function pad(n) {
26054 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26055 }
26056
26057
26058 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26059 'Oct', 'Nov', 'Dec'];
26060
26061 // 26 Feb 16:19:34
26062 function timestamp() {
26063 var d = new Date();
26064 var time = [pad(d.getHours()),
26065 pad(d.getMinutes()),
26066 pad(d.getSeconds())].join(':');
26067 return [d.getDate(), months[d.getMonth()], time].join(' ');
26068 }
26069
26070
26071 // log is just a thin wrapper to console.log that prepends a timestamp
26072 exports.log = function() {
26073 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
26074 };
26075
26076
26077 /**
26078 * Inherit the prototype methods from one constructor into another.
26079 *
26080 * The Function.prototype.inherits from lang.js rewritten as a standalone
26081 * function (not on Function.prototype). NOTE: If this file is to be loaded
26082 * during bootstrapping this function needs to be rewritten using some native
26083 * functions as prototype setup using normal JavaScript does not work as
26084 * expected during bootstrapping (see mirror.js in r114903).
26085 *
26086 * @param {function} ctor Constructor function which needs to inherit the
26087 * prototype.
26088 * @param {function} superCtor Constructor function to inherit prototype from.
26089 */
26090 exports.inherits = require('inherits');
26091
26092 exports._extend = function(origin, add) {
26093 // Don't do anything if add isn't an object
26094 if (!add || !isObject(add)) return origin;
26095
26096 var keys = Object.keys(add);
26097 var i = keys.length;
26098 while (i--) {
26099 origin[keys[i]] = add[keys[i]];
26100 }
26101 return origin;
26102 };
26103
26104 function hasOwnProperty(obj, prop) {
26105 return Object.prototype.hasOwnProperty.call(obj, prop);
26106 }
26107
26108 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26109 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26110 (function (Buffer){
26111 const createKeccakHash = require('keccak')
26112 const secp256k1 = require('secp256k1')
26113 const assert = require('assert')
26114 const rlp = require('rlp')
26115 const BN = require('bn.js')
26116 const createHash = require('create-hash')
26117 Object.assign(exports, require('ethjs-util'))
26118
26119 /**
26120 * the max integer that this VM can handle (a ```BN```)
26121 * @var {BN} MAX_INTEGER
26122 */
26123 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
26124
26125 /**
26126 * 2^256 (a ```BN```)
26127 * @var {BN} TWO_POW256
26128 */
26129 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
26130
26131 /**
26132 * SHA3-256 hash of null (a ```String```)
26133 * @var {String} SHA3_NULL_S
26134 */
26135 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
26136
26137 /**
26138 * SHA3-256 hash of null (a ```Buffer```)
26139 * @var {Buffer} SHA3_NULL
26140 */
26141 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
26142
26143 /**
26144 * SHA3-256 of an RLP of an empty array (a ```String```)
26145 * @var {String} SHA3_RLP_ARRAY_S
26146 */
26147 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
26148
26149 /**
26150 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26151 * @var {Buffer} SHA3_RLP_ARRAY
26152 */
26153 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
26154
26155 /**
26156 * SHA3-256 hash of the RLP of null (a ```String```)
26157 * @var {String} SHA3_RLP_S
26158 */
26159 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
26160
26161 /**
26162 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26163 * @var {Buffer} SHA3_RLP
26164 */
26165 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
26166
26167 /**
26168 * [`BN`](https://github.com/indutny/bn.js)
26169 * @var {Function}
26170 */
26171 exports.BN = BN
26172
26173 /**
26174 * [`rlp`](https://github.com/ethereumjs/rlp)
26175 * @var {Function}
26176 */
26177 exports.rlp = rlp
26178
26179 /**
26180 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26181 * @var {Object}
26182 */
26183 exports.secp256k1 = secp256k1
26184
26185 /**
26186 * Returns a buffer filled with 0s
26187 * @method zeros
26188 * @param {Number} bytes the number of bytes the buffer should be
26189 * @return {Buffer}
26190 */
26191 exports.zeros = function (bytes) {
26192 return Buffer.allocUnsafe(bytes).fill(0)
26193 }
26194
26195 /**
26196 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26197 * Or it truncates the beginning if it exceeds.
26198 * @method lsetLength
26199 * @param {Buffer|Array} msg the value to pad
26200 * @param {Number} length the number of bytes the output should be
26201 * @param {Boolean} [right=false] whether to start padding form the left or right
26202 * @return {Buffer|Array}
26203 */
26204 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26205 var buf = exports.zeros(length)
26206 msg = exports.toBuffer(msg)
26207 if (right) {
26208 if (msg.length < length) {
26209 msg.copy(buf)
26210 return buf
26211 }
26212 return msg.slice(0, length)
26213 } else {
26214 if (msg.length < length) {
26215 msg.copy(buf, length - msg.length)
26216 return buf
26217 }
26218 return msg.slice(-length)
26219 }
26220 }
26221
26222 /**
26223 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26224 * Or it truncates the beginning if it exceeds.
26225 * @param {Buffer|Array} msg the value to pad
26226 * @param {Number} length the number of bytes the output should be
26227 * @return {Buffer|Array}
26228 */
26229 exports.setLengthRight = function (msg, length) {
26230 return exports.setLength(msg, length, true)
26231 }
26232
26233 /**
26234 * Trims leading zeros from a `Buffer` or an `Array`
26235 * @param {Buffer|Array|String} a
26236 * @return {Buffer|Array|String}
26237 */
26238 exports.unpad = exports.stripZeros = function (a) {
26239 a = exports.stripHexPrefix(a)
26240 var first = a[0]
26241 while (a.length > 0 && first.toString() === '0') {
26242 a = a.slice(1)
26243 first = a[0]
26244 }
26245 return a
26246 }
26247 /**
26248 * 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.
26249 * @param {*} v the value
26250 */
26251 exports.toBuffer = function (v) {
26252 if (!Buffer.isBuffer(v)) {
26253 if (Array.isArray(v)) {
26254 v = Buffer.from(v)
26255 } else if (typeof v === 'string') {
26256 if (exports.isHexPrefixed(v)) {
26257 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26258 } else {
26259 v = Buffer.from(v)
26260 }
26261 } else if (typeof v === 'number') {
26262 v = exports.intToBuffer(v)
26263 } else if (v === null || v === undefined) {
26264 v = Buffer.allocUnsafe(0)
26265 } else if (v.toArray) {
26266 // converts a BN to a Buffer
26267 v = Buffer.from(v.toArray())
26268 } else {
26269 throw new Error('invalid type')
26270 }
26271 }
26272 return v
26273 }
26274
26275 /**
26276 * Converts a `Buffer` to a `Number`
26277 * @param {Buffer} buf
26278 * @return {Number}
26279 * @throws If the input number exceeds 53 bits.
26280 */
26281 exports.bufferToInt = function (buf) {
26282 return new BN(exports.toBuffer(buf)).toNumber()
26283 }
26284
26285 /**
26286 * Converts a `Buffer` into a hex `String`
26287 * @param {Buffer} buf
26288 * @return {String}
26289 */
26290 exports.bufferToHex = function (buf) {
26291 buf = exports.toBuffer(buf)
26292 return '0x' + buf.toString('hex')
26293 }
26294
26295 /**
26296 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26297 * @param {Buffer} num
26298 * @return {BN}
26299 */
26300 exports.fromSigned = function (num) {
26301 return new BN(num).fromTwos(256)
26302 }
26303
26304 /**
26305 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26306 * @param {BN} num
26307 * @return {Buffer}
26308 */
26309 exports.toUnsigned = function (num) {
26310 return Buffer.from(num.toTwos(256).toArray())
26311 }
26312
26313 /**
26314 * Creates SHA-3 hash of the input
26315 * @param {Buffer|Array|String|Number} a the input data
26316 * @param {Number} [bits=256] the SHA width
26317 * @return {Buffer}
26318 */
26319 exports.sha3 = function (a, bits) {
26320 a = exports.toBuffer(a)
26321 if (!bits) bits = 256
26322
26323 return createKeccakHash('keccak' + bits).update(a).digest()
26324 }
26325
26326 /**
26327 * Creates SHA256 hash of the input
26328 * @param {Buffer|Array|String|Number} a the input data
26329 * @return {Buffer}
26330 */
26331 exports.sha256 = function (a) {
26332 a = exports.toBuffer(a)
26333 return createHash('sha256').update(a).digest()
26334 }
26335
26336 /**
26337 * Creates RIPEMD160 hash of the input
26338 * @param {Buffer|Array|String|Number} a the input data
26339 * @param {Boolean} padded whether it should be padded to 256 bits or not
26340 * @return {Buffer}
26341 */
26342 exports.ripemd160 = function (a, padded) {
26343 a = exports.toBuffer(a)
26344 var hash = createHash('rmd160').update(a).digest()
26345 if (padded === true) {
26346 return exports.setLength(hash, 32)
26347 } else {
26348 return hash
26349 }
26350 }
26351
26352 /**
26353 * Creates SHA-3 hash of the RLP encoded version of the input
26354 * @param {Buffer|Array|String|Number} a the input data
26355 * @return {Buffer}
26356 */
26357 exports.rlphash = function (a) {
26358 return exports.sha3(rlp.encode(a))
26359 }
26360
26361 /**
26362 * Checks if the private key satisfies the rules of the curve secp256k1.
26363 * @param {Buffer} privateKey
26364 * @return {Boolean}
26365 */
26366 exports.isValidPrivate = function (privateKey) {
26367 return secp256k1.privateKeyVerify(privateKey)
26368 }
26369
26370 /**
26371 * Checks if the public key satisfies the rules of the curve secp256k1
26372 * and the requirements of Ethereum.
26373 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26374 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26375 * @return {Boolean}
26376 */
26377 exports.isValidPublic = function (publicKey, sanitize) {
26378 if (publicKey.length === 64) {
26379 // Convert to SEC1 for secp256k1
26380 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26381 }
26382
26383 if (!sanitize) {
26384 return false
26385 }
26386
26387 return secp256k1.publicKeyVerify(publicKey)
26388 }
26389
26390 /**
26391 * Returns the ethereum address of a given public key.
26392 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26393 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26394 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26395 * @return {Buffer}
26396 */
26397 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26398 pubKey = exports.toBuffer(pubKey)
26399 if (sanitize && (pubKey.length !== 64)) {
26400 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
26401 }
26402 assert(pubKey.length === 64)
26403 // Only take the lower 160bits of the hash
26404 return exports.sha3(pubKey).slice(-20)
26405 }
26406
26407 /**
26408 * Returns the ethereum public key of a given private key
26409 * @param {Buffer} privateKey A private key must be 256 bits wide
26410 * @return {Buffer}
26411 */
26412 var privateToPublic = exports.privateToPublic = function (privateKey) {
26413 privateKey = exports.toBuffer(privateKey)
26414 // skip the type flag and use the X, Y points
26415 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26416 }
26417
26418 /**
26419 * Converts a public key to the Ethereum format.
26420 * @param {Buffer} publicKey
26421 * @return {Buffer}
26422 */
26423 exports.importPublic = function (publicKey) {
26424 publicKey = exports.toBuffer(publicKey)
26425 if (publicKey.length !== 64) {
26426 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
26427 }
26428 return publicKey
26429 }
26430
26431 /**
26432 * ECDSA sign
26433 * @param {Buffer} msgHash
26434 * @param {Buffer} privateKey
26435 * @return {Object}
26436 */
26437 exports.ecsign = function (msgHash, privateKey) {
26438 var sig = secp256k1.sign(msgHash, privateKey)
26439
26440 var ret = {}
26441 ret.r = sig.signature.slice(0, 32)
26442 ret.s = sig.signature.slice(32, 64)
26443 ret.v = sig.recovery + 27
26444 return ret
26445 }
26446
26447 /**
26448 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26449 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26450 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26451 * used to produce the signature.
26452 * @param message
26453 * @returns {Buffer} hash
26454 */
26455 exports.hashPersonalMessage = function (message) {
26456 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26457 return exports.sha3(Buffer.concat([prefix, message]))
26458 }
26459
26460 /**
26461 * ECDSA public key recovery from signature
26462 * @param {Buffer} msgHash
26463 * @param {Number} v
26464 * @param {Buffer} r
26465 * @param {Buffer} s
26466 * @return {Buffer} publicKey
26467 */
26468 exports.ecrecover = function (msgHash, v, r, s) {
26469 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26470 var recovery = v - 27
26471 if (recovery !== 0 && recovery !== 1) {
26472 throw new Error('Invalid signature v value')
26473 }
26474 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26475 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
26476 }
26477
26478 /**
26479 * Convert signature parameters into the format of `eth_sign` RPC method
26480 * @param {Number} v
26481 * @param {Buffer} r
26482 * @param {Buffer} s
26483 * @return {String} sig
26484 */
26485 exports.toRpcSig = function (v, r, s) {
26486 // NOTE: with potential introduction of chainId this might need to be updated
26487 if (v !== 27 && v !== 28) {
26488 throw new Error('Invalid recovery id')
26489 }
26490
26491 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26492 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26493 return exports.bufferToHex(Buffer.concat([
26494 exports.setLengthLeft(r, 32),
26495 exports.setLengthLeft(s, 32),
26496 exports.toBuffer(v - 27)
26497 ]))
26498 }
26499
26500 /**
26501 * Convert signature format of the `eth_sign` RPC method to signature parameters
26502 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26503 * @param {String} sig
26504 * @return {Object}
26505 */
26506 exports.fromRpcSig = function (sig) {
26507 sig = exports.toBuffer(sig)
26508
26509 // NOTE: with potential introduction of chainId this might need to be updated
26510 if (sig.length !== 65) {
26511 throw new Error('Invalid signature length')
26512 }
26513
26514 var v = sig[64]
26515 // support both versions of `eth_sign` responses
26516 if (v < 27) {
26517 v += 27
26518 }
26519
26520 return {
26521 v: v,
26522 r: sig.slice(0, 32),
26523 s: sig.slice(32, 64)
26524 }
26525 }
26526
26527 /**
26528 * Returns the ethereum address of a given private key
26529 * @param {Buffer} privateKey A private key must be 256 bits wide
26530 * @return {Buffer}
26531 */
26532 exports.privateToAddress = function (privateKey) {
26533 return exports.publicToAddress(privateToPublic(privateKey))
26534 }
26535
26536 /**
26537 * Checks if the address is a valid. Accepts checksummed addresses too
26538 * @param {String} address
26539 * @return {Boolean}
26540 */
26541 exports.isValidAddress = function (address) {
26542 return /^0x[0-9a-fA-F]{40}$/i.test(address)
26543 }
26544
26545 /**
26546 * Returns a checksummed address
26547 * @param {String} address
26548 * @return {String}
26549 */
26550 exports.toChecksumAddress = function (address) {
26551 address = exports.stripHexPrefix(address).toLowerCase()
26552 var hash = exports.sha3(address).toString('hex')
26553 var ret = '0x'
26554
26555 for (var i = 0; i < address.length; i++) {
26556 if (parseInt(hash[i], 16) >= 8) {
26557 ret += address[i].toUpperCase()
26558 } else {
26559 ret += address[i]
26560 }
26561 }
26562
26563 return ret
26564 }
26565
26566 /**
26567 * Checks if the address is a valid checksummed address
26568 * @param {Buffer} address
26569 * @return {Boolean}
26570 */
26571 exports.isValidChecksumAddress = function (address) {
26572 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
26573 }
26574
26575 /**
26576 * Generates an address of a newly created contract
26577 * @param {Buffer} from the address which is creating this new address
26578 * @param {Buffer} nonce the nonce of the from account
26579 * @return {Buffer}
26580 */
26581 exports.generateAddress = function (from, nonce) {
26582 from = exports.toBuffer(from)
26583 nonce = new BN(nonce)
26584
26585 if (nonce.isZero()) {
26586 // in RLP we want to encode null in the case of zero nonce
26587 // read the RLP documentation for an answer if you dare
26588 nonce = null
26589 } else {
26590 nonce = Buffer.from(nonce.toArray())
26591 }
26592
26593 // Only take the lower 160bits of the hash
26594 return exports.rlphash([from, nonce]).slice(-20)
26595 }
26596
26597 /**
26598 * Returns true if the supplied address belongs to a precompiled account
26599 * @param {Buffer|String} address
26600 * @return {Boolean}
26601 */
26602 exports.isPrecompiled = function (address) {
26603 var a = exports.unpad(address)
26604 return a.length === 1 && a[0] > 0 && a[0] < 5
26605 }
26606
26607 /**
26608 * Adds "0x" to a given `String` if it does not already start with "0x"
26609 * @param {String} str
26610 * @return {String}
26611 */
26612 exports.addHexPrefix = function (str) {
26613 if (typeof str !== 'string') {
26614 return str
26615 }
26616
26617 return exports.isHexPrefixed(str) ? str : '0x' + str
26618 }
26619
26620 /**
26621 * Validate ECDSA signature
26622 * @method isValidSignature
26623 * @param {Buffer} v
26624 * @param {Buffer} r
26625 * @param {Buffer} s
26626 * @param {Boolean} [homestead=true]
26627 * @return {Boolean}
26628 */
26629
26630 exports.isValidSignature = function (v, r, s, homestead) {
26631 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26632 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26633
26634 if (r.length !== 32 || s.length !== 32) {
26635 return false
26636 }
26637
26638 if (v !== 27 && v !== 28) {
26639 return false
26640 }
26641
26642 r = new BN(r)
26643 s = new BN(s)
26644
26645 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26646 return false
26647 }
26648
26649 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26650 return false
26651 }
26652
26653 return true
26654 }
26655
26656 /**
26657 * Converts a `Buffer` or `Array` to JSON
26658 * @param {Buffer|Array} ba
26659 * @return {Array|String|null}
26660 */
26661 exports.baToJSON = function (ba) {
26662 if (Buffer.isBuffer(ba)) {
26663 return '0x' + ba.toString('hex')
26664 } else if (ba instanceof Array) {
26665 var array = []
26666 for (var i = 0; i < ba.length; i++) {
26667 array.push(exports.baToJSON(ba[i]))
26668 }
26669 return array
26670 }
26671 }
26672
26673 /**
26674 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26675 * @param {Object} self the `Object` to define properties on
26676 * @param {Array} fields an array fields to define. Fields can contain:
26677 * * `name` - the name of the properties
26678 * * `length` - the number of bytes the field can have
26679 * * `allowLess` - if the field can be less than the length
26680 * * `allowEmpty`
26681 * @param {*} data data to be validated against the definitions
26682 */
26683 exports.defineProperties = function (self, fields, data) {
26684 self.raw = []
26685 self._fields = []
26686
26687 // attach the `toJSON`
26688 self.toJSON = function (label) {
26689 if (label) {
26690 var obj = {}
26691 self._fields.forEach(function (field) {
26692 obj[field] = '0x' + self[field].toString('hex')
26693 })
26694 return obj
26695 }
26696 return exports.baToJSON(this.raw)
26697 }
26698
26699 self.serialize = function serialize () {
26700 return rlp.encode(self.raw)
26701 }
26702
26703 fields.forEach(function (field, i) {
26704 self._fields.push(field.name)
26705 function getter () {
26706 return self.raw[i]
26707 }
26708 function setter (v) {
26709 v = exports.toBuffer(v)
26710
26711 if (v.toString('hex') === '00' && !field.allowZero) {
26712 v = Buffer.allocUnsafe(0)
26713 }
26714
26715 if (field.allowLess && field.length) {
26716 v = exports.stripZeros(v)
26717 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26718 } else if (!(field.allowZero && v.length === 0) && field.length) {
26719 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26720 }
26721
26722 self.raw[i] = v
26723 }
26724
26725 Object.defineProperty(self, field.name, {
26726 enumerable: true,
26727 configurable: true,
26728 get: getter,
26729 set: setter
26730 })
26731
26732 if (field.default) {
26733 self[field.name] = field.default
26734 }
26735
26736 // attach alias
26737 if (field.alias) {
26738 Object.defineProperty(self, field.alias, {
26739 enumerable: false,
26740 configurable: true,
26741 set: setter,
26742 get: getter
26743 })
26744 }
26745 })
26746
26747 // if the constuctor is passed data
26748 if (data) {
26749 if (typeof data === 'string') {
26750 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26751 }
26752
26753 if (Buffer.isBuffer(data)) {
26754 data = rlp.decode(data)
26755 }
26756
26757 if (Array.isArray(data)) {
26758 if (data.length > self._fields.length) {
26759 throw (new Error('wrong number of fields in data'))
26760 }
26761
26762 // make sure all the items are buffers
26763 data.forEach(function (d, i) {
26764 self[self._fields[i]] = exports.toBuffer(d)
26765 })
26766 } else if (typeof data === 'object') {
26767 const keys = Object.keys(data)
26768 fields.forEach(function (field) {
26769 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26770 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26771 })
26772 } else {
26773 throw new Error('invalid data')
26774 }
26775 }
26776 }
26777
26778 }).call(this,require("buffer").Buffer)
26779 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26780 (function (Buffer){
26781 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26782 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26783 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
26784
26785 function check (buffer) {
26786 if (buffer.length < 8) return false
26787 if (buffer.length > 72) return false
26788 if (buffer[0] !== 0x30) return false
26789 if (buffer[1] !== buffer.length - 2) return false
26790 if (buffer[2] !== 0x02) return false
26791
26792 var lenR = buffer[3]
26793 if (lenR === 0) return false
26794 if (5 + lenR >= buffer.length) return false
26795 if (buffer[4 + lenR] !== 0x02) return false
26796
26797 var lenS = buffer[5 + lenR]
26798 if (lenS === 0) return false
26799 if ((6 + lenR + lenS) !== buffer.length) return false
26800
26801 if (buffer[4] & 0x80) return false
26802 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26803
26804 if (buffer[lenR + 6] & 0x80) return false
26805 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26806 return true
26807 }
26808
26809 function decode (buffer) {
26810 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26811 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26812 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26813 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26814 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26815
26816 var lenR = buffer[3]
26817 if (lenR === 0) throw new Error('R length is zero')
26818 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26819 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26820
26821 var lenS = buffer[5 + lenR]
26822 if (lenS === 0) throw new Error('S length is zero')
26823 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26824
26825 if (buffer[4] & 0x80) throw new Error('R value is negative')
26826 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26827
26828 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26829 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26830
26831 // non-BIP66 - extract R, S values
26832 return {
26833 r: buffer.slice(4, 4 + lenR),
26834 s: buffer.slice(6 + lenR)
26835 }
26836 }
26837
26838 /*
26839 * Expects r and s to be positive DER integers.
26840 *
26841 * The DER format uses the most significant bit as a sign bit (& 0x80).
26842 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26843 *
26844 * Examples:
26845 *
26846 * 0 => 0x00
26847 * 1 => 0x01
26848 * -1 => 0xff
26849 * 127 => 0x7f
26850 * -127 => 0x81
26851 * 128 => 0x0080
26852 * -128 => 0x80
26853 * 255 => 0x00ff
26854 * -255 => 0xff01
26855 * 16300 => 0x3fac
26856 * -16300 => 0xc054
26857 * 62300 => 0x00f35c
26858 * -62300 => 0xff0ca4
26859 */
26860 function encode (r, s) {
26861 var lenR = r.length
26862 var lenS = s.length
26863 if (lenR === 0) throw new Error('R length is zero')
26864 if (lenS === 0) throw new Error('S length is zero')
26865 if (lenR > 33) throw new Error('R length is too long')
26866 if (lenS > 33) throw new Error('S length is too long')
26867 if (r[0] & 0x80) throw new Error('R value is negative')
26868 if (s[0] & 0x80) throw new Error('S value is negative')
26869 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26870 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26871
26872 var signature = new Buffer(6 + lenR + lenS)
26873
26874 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26875 signature[0] = 0x30
26876 signature[1] = signature.length - 2
26877 signature[2] = 0x02
26878 signature[3] = r.length
26879 r.copy(signature, 4)
26880 signature[4 + lenR] = 0x02
26881 signature[5 + lenR] = s.length
26882 s.copy(signature, 6 + lenR)
26883
26884 return signature
26885 }
26886
26887 module.exports = {
26888 check: check,
26889 decode: decode,
26890 encode: encode
26891 }
26892
26893 }).call(this,require("buffer").Buffer)
26894 },{"buffer":5}],33:[function(require,module,exports){
26895 (function (module, exports) {
26896 'use strict';
26897
26898 // Utils
26899 function assert (val, msg) {
26900 if (!val) throw new Error(msg || 'Assertion failed');
26901 }
26902
26903 // Could use `inherits` module, but don't want to move from single file
26904 // architecture yet.
26905 function inherits (ctor, superCtor) {
26906 ctor.super_ = superCtor;
26907 var TempCtor = function () {};
26908 TempCtor.prototype = superCtor.prototype;
26909 ctor.prototype = new TempCtor();
26910 ctor.prototype.constructor = ctor;
26911 }
26912
26913 // BN
26914
26915 function BN (number, base, endian) {
26916 if (BN.isBN(number)) {
26917 return number;
26918 }
26919
26920 this.negative = 0;
26921 this.words = null;
26922 this.length = 0;
26923
26924 // Reduction context
26925 this.red = null;
26926
26927 if (number !== null) {
26928 if (base === 'le' || base === 'be') {
26929 endian = base;
26930 base = 10;
26931 }
26932
26933 this._init(number || 0, base || 10, endian || 'be');
26934 }
26935 }
26936 if (typeof module === 'object') {
26937 module.exports = BN;
26938 } else {
26939 exports.BN = BN;
26940 }
26941
26942 BN.BN = BN;
26943 BN.wordSize = 26;
26944
26945 var Buffer;
26946 try {
26947 Buffer = require('buf' + 'fer').Buffer;
26948 } catch (e) {
26949 }
26950
26951 BN.isBN = function isBN (num) {
26952 if (num instanceof BN) {
26953 return true;
26954 }
26955
26956 return num !== null && typeof num === 'object' &&
26957 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26958 };
26959
26960 BN.max = function max (left, right) {
26961 if (left.cmp(right) > 0) return left;
26962 return right;
26963 };
26964
26965 BN.min = function min (left, right) {
26966 if (left.cmp(right) < 0) return left;
26967 return right;
26968 };
26969
26970 BN.prototype._init = function init (number, base, endian) {
26971 if (typeof number === 'number') {
26972 return this._initNumber(number, base, endian);
26973 }
26974
26975 if (typeof number === 'object') {
26976 return this._initArray(number, base, endian);
26977 }
26978
26979 if (base === 'hex') {
26980 base = 16;
26981 }
26982 assert(base === (base | 0) && base >= 2 && base <= 36);
26983
26984 number = number.toString().replace(/\s+/g, '');
26985 var start = 0;
26986 if (number[0] === '-') {
26987 start++;
26988 }
26989
26990 if (base === 16) {
26991 this._parseHex(number, start);
26992 } else {
26993 this._parseBase(number, base, start);
26994 }
26995
26996 if (number[0] === '-') {
26997 this.negative = 1;
26998 }
26999
27000 this.strip();
27001
27002 if (endian !== 'le') return;
27003
27004 this._initArray(this.toArray(), base, endian);
27005 };
27006
27007 BN.prototype._initNumber = function _initNumber (number, base, endian) {
27008 if (number < 0) {
27009 this.negative = 1;
27010 number = -number;
27011 }
27012 if (number < 0x4000000) {
27013 this.words = [ number & 0x3ffffff ];
27014 this.length = 1;
27015 } else if (number < 0x10000000000000) {
27016 this.words = [
27017 number & 0x3ffffff,
27018 (number / 0x4000000) & 0x3ffffff
27019 ];
27020 this.length = 2;
27021 } else {
27022 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
27023 this.words = [
27024 number & 0x3ffffff,
27025 (number / 0x4000000) & 0x3ffffff,
27026 1
27027 ];
27028 this.length = 3;
27029 }
27030
27031 if (endian !== 'le') return;
27032
27033 // Reverse the bytes
27034 this._initArray(this.toArray(), base, endian);
27035 };
27036
27037 BN.prototype._initArray = function _initArray (number, base, endian) {
27038 // Perhaps a Uint8Array
27039 assert(typeof number.length === 'number');
27040 if (number.length <= 0) {
27041 this.words = [ 0 ];
27042 this.length = 1;
27043 return this;
27044 }
27045
27046 this.length = Math.ceil(number.length / 3);
27047 this.words = new Array(this.length);
27048 for (var i = 0; i < this.length; i++) {
27049 this.words[i] = 0;
27050 }
27051
27052 var j, w;
27053 var off = 0;
27054 if (endian === 'be') {
27055 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27056 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27057 this.words[j] |= (w << off) & 0x3ffffff;
27058 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27059 off += 24;
27060 if (off >= 26) {
27061 off -= 26;
27062 j++;
27063 }
27064 }
27065 } else if (endian === 'le') {
27066 for (i = 0, j = 0; i < number.length; i += 3) {
27067 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27068 this.words[j] |= (w << off) & 0x3ffffff;
27069 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27070 off += 24;
27071 if (off >= 26) {
27072 off -= 26;
27073 j++;
27074 }
27075 }
27076 }
27077 return this.strip();
27078 };
27079
27080 function parseHex (str, start, end) {
27081 var r = 0;
27082 var len = Math.min(str.length, end);
27083 for (var i = start; i < len; i++) {
27084 var c = str.charCodeAt(i) - 48;
27085
27086 r <<= 4;
27087
27088 // 'a' - 'f'
27089 if (c >= 49 && c <= 54) {
27090 r |= c - 49 + 0xa;
27091
27092 // 'A' - 'F'
27093 } else if (c >= 17 && c <= 22) {
27094 r |= c - 17 + 0xa;
27095
27096 // '0' - '9'
27097 } else {
27098 r |= c & 0xf;
27099 }
27100 }
27101 return r;
27102 }
27103
27104 BN.prototype._parseHex = function _parseHex (number, start) {
27105 // Create possibly bigger array to ensure that it fits the number
27106 this.length = Math.ceil((number.length - start) / 6);
27107 this.words = new Array(this.length);
27108 for (var i = 0; i < this.length; i++) {
27109 this.words[i] = 0;
27110 }
27111
27112 var j, w;
27113 // Scan 24-bit chunks and add them to the number
27114 var off = 0;
27115 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27116 w = parseHex(number, i, i + 6);
27117 this.words[j] |= (w << off) & 0x3ffffff;
27118 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27119 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27120 off += 24;
27121 if (off >= 26) {
27122 off -= 26;
27123 j++;
27124 }
27125 }
27126 if (i + 6 !== start) {
27127 w = parseHex(number, start, i + 6);
27128 this.words[j] |= (w << off) & 0x3ffffff;
27129 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27130 }
27131 this.strip();
27132 };
27133
27134 function parseBase (str, start, end, mul) {
27135 var r = 0;
27136 var len = Math.min(str.length, end);
27137 for (var i = start; i < len; i++) {
27138 var c = str.charCodeAt(i) - 48;
27139
27140 r *= mul;
27141
27142 // 'a'
27143 if (c >= 49) {
27144 r += c - 49 + 0xa;
27145
27146 // 'A'
27147 } else if (c >= 17) {
27148 r += c - 17 + 0xa;
27149
27150 // '0' - '9'
27151 } else {
27152 r += c;
27153 }
27154 }
27155 return r;
27156 }
27157
27158 BN.prototype._parseBase = function _parseBase (number, base, start) {
27159 // Initialize as zero
27160 this.words = [ 0 ];
27161 this.length = 1;
27162
27163 // Find length of limb in base
27164 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27165 limbLen++;
27166 }
27167 limbLen--;
27168 limbPow = (limbPow / base) | 0;
27169
27170 var total = number.length - start;
27171 var mod = total % limbLen;
27172 var end = Math.min(total, total - mod) + start;
27173
27174 var word = 0;
27175 for (var i = start; i < end; i += limbLen) {
27176 word = parseBase(number, i, i + limbLen, base);
27177
27178 this.imuln(limbPow);
27179 if (this.words[0] + word < 0x4000000) {
27180 this.words[0] += word;
27181 } else {
27182 this._iaddn(word);
27183 }
27184 }
27185
27186 if (mod !== 0) {
27187 var pow = 1;
27188 word = parseBase(number, i, number.length, base);
27189
27190 for (i = 0; i < mod; i++) {
27191 pow *= base;
27192 }
27193
27194 this.imuln(pow);
27195 if (this.words[0] + word < 0x4000000) {
27196 this.words[0] += word;
27197 } else {
27198 this._iaddn(word);
27199 }
27200 }
27201 };
27202
27203 BN.prototype.copy = function copy (dest) {
27204 dest.words = new Array(this.length);
27205 for (var i = 0; i < this.length; i++) {
27206 dest.words[i] = this.words[i];
27207 }
27208 dest.length = this.length;
27209 dest.negative = this.negative;
27210 dest.red = this.red;
27211 };
27212
27213 BN.prototype.clone = function clone () {
27214 var r = new BN(null);
27215 this.copy(r);
27216 return r;
27217 };
27218
27219 BN.prototype._expand = function _expand (size) {
27220 while (this.length < size) {
27221 this.words[this.length++] = 0;
27222 }
27223 return this;
27224 };
27225
27226 // Remove leading `0` from `this`
27227 BN.prototype.strip = function strip () {
27228 while (this.length > 1 && this.words[this.length - 1] === 0) {
27229 this.length--;
27230 }
27231 return this._normSign();
27232 };
27233
27234 BN.prototype._normSign = function _normSign () {
27235 // -0 = 0
27236 if (this.length === 1 && this.words[0] === 0) {
27237 this.negative = 0;
27238 }
27239 return this;
27240 };
27241
27242 BN.prototype.inspect = function inspect () {
27243 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27244 };
27245
27246 /*
27247
27248 var zeros = [];
27249 var groupSizes = [];
27250 var groupBases = [];
27251
27252 var s = '';
27253 var i = -1;
27254 while (++i < BN.wordSize) {
27255 zeros[i] = s;
27256 s += '0';
27257 }
27258 groupSizes[0] = 0;
27259 groupSizes[1] = 0;
27260 groupBases[0] = 0;
27261 groupBases[1] = 0;
27262 var base = 2 - 1;
27263 while (++base < 36 + 1) {
27264 var groupSize = 0;
27265 var groupBase = 1;
27266 while (groupBase < (1 << BN.wordSize) / base) {
27267 groupBase *= base;
27268 groupSize += 1;
27269 }
27270 groupSizes[base] = groupSize;
27271 groupBases[base] = groupBase;
27272 }
27273
27274 */
27275
27276 var zeros = [
27277 '',
27278 '0',
27279 '00',
27280 '000',
27281 '0000',
27282 '00000',
27283 '000000',
27284 '0000000',
27285 '00000000',
27286 '000000000',
27287 '0000000000',
27288 '00000000000',
27289 '000000000000',
27290 '0000000000000',
27291 '00000000000000',
27292 '000000000000000',
27293 '0000000000000000',
27294 '00000000000000000',
27295 '000000000000000000',
27296 '0000000000000000000',
27297 '00000000000000000000',
27298 '000000000000000000000',
27299 '0000000000000000000000',
27300 '00000000000000000000000',
27301 '000000000000000000000000',
27302 '0000000000000000000000000'
27303 ];
27304
27305 var groupSizes = [
27306 0, 0,
27307 25, 16, 12, 11, 10, 9, 8,
27308 8, 7, 7, 7, 7, 6, 6,
27309 6, 6, 6, 6, 6, 5, 5,
27310 5, 5, 5, 5, 5, 5, 5,
27311 5, 5, 5, 5, 5, 5, 5
27312 ];
27313
27314 var groupBases = [
27315 0, 0,
27316 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27317 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27318 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27319 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27320 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27321 ];
27322
27323 BN.prototype.toString = function toString (base, padding) {
27324 base = base || 10;
27325 padding = padding | 0 || 1;
27326
27327 var out;
27328 if (base === 16 || base === 'hex') {
27329 out = '';
27330 var off = 0;
27331 var carry = 0;
27332 for (var i = 0; i < this.length; i++) {
27333 var w = this.words[i];
27334 var word = (((w << off) | carry) & 0xffffff).toString(16);
27335 carry = (w >>> (24 - off)) & 0xffffff;
27336 if (carry !== 0 || i !== this.length - 1) {
27337 out = zeros[6 - word.length] + word + out;
27338 } else {
27339 out = word + out;
27340 }
27341 off += 2;
27342 if (off >= 26) {
27343 off -= 26;
27344 i--;
27345 }
27346 }
27347 if (carry !== 0) {
27348 out = carry.toString(16) + out;
27349 }
27350 while (out.length % padding !== 0) {
27351 out = '0' + out;
27352 }
27353 if (this.negative !== 0) {
27354 out = '-' + out;
27355 }
27356 return out;
27357 }
27358
27359 if (base === (base | 0) && base >= 2 && base <= 36) {
27360 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27361 var groupSize = groupSizes[base];
27362 // var groupBase = Math.pow(base, groupSize);
27363 var groupBase = groupBases[base];
27364 out = '';
27365 var c = this.clone();
27366 c.negative = 0;
27367 while (!c.isZero()) {
27368 var r = c.modn(groupBase).toString(base);
27369 c = c.idivn(groupBase);
27370
27371 if (!c.isZero()) {
27372 out = zeros[groupSize - r.length] + r + out;
27373 } else {
27374 out = r + out;
27375 }
27376 }
27377 if (this.isZero()) {
27378 out = '0' + out;
27379 }
27380 while (out.length % padding !== 0) {
27381 out = '0' + out;
27382 }
27383 if (this.negative !== 0) {
27384 out = '-' + out;
27385 }
27386 return out;
27387 }
27388
27389 assert(false, 'Base should be between 2 and 36');
27390 };
27391
27392 BN.prototype.toNumber = function toNumber () {
27393 var ret = this.words[0];
27394 if (this.length === 2) {
27395 ret += this.words[1] * 0x4000000;
27396 } else if (this.length === 3 && this.words[2] === 0x01) {
27397 // NOTE: at this stage it is known that the top bit is set
27398 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27399 } else if (this.length > 2) {
27400 assert(false, 'Number can only safely store up to 53 bits');
27401 }
27402 return (this.negative !== 0) ? -ret : ret;
27403 };
27404
27405 BN.prototype.toJSON = function toJSON () {
27406 return this.toString(16);
27407 };
27408
27409 BN.prototype.toBuffer = function toBuffer (endian, length) {
27410 assert(typeof Buffer !== 'undefined');
27411 return this.toArrayLike(Buffer, endian, length);
27412 };
27413
27414 BN.prototype.toArray = function toArray (endian, length) {
27415 return this.toArrayLike(Array, endian, length);
27416 };
27417
27418 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27419 var byteLength = this.byteLength();
27420 var reqLength = length || Math.max(1, byteLength);
27421 assert(byteLength <= reqLength, 'byte array longer than desired length');
27422 assert(reqLength > 0, 'Requested array length <= 0');
27423
27424 this.strip();
27425 var littleEndian = endian === 'le';
27426 var res = new ArrayType(reqLength);
27427
27428 var b, i;
27429 var q = this.clone();
27430 if (!littleEndian) {
27431 // Assume big-endian
27432 for (i = 0; i < reqLength - byteLength; i++) {
27433 res[i] = 0;
27434 }
27435
27436 for (i = 0; !q.isZero(); i++) {
27437 b = q.andln(0xff);
27438 q.iushrn(8);
27439
27440 res[reqLength - i - 1] = b;
27441 }
27442 } else {
27443 for (i = 0; !q.isZero(); i++) {
27444 b = q.andln(0xff);
27445 q.iushrn(8);
27446
27447 res[i] = b;
27448 }
27449
27450 for (; i < reqLength; i++) {
27451 res[i] = 0;
27452 }
27453 }
27454
27455 return res;
27456 };
27457
27458 if (Math.clz32) {
27459 BN.prototype._countBits = function _countBits (w) {
27460 return 32 - Math.clz32(w);
27461 };
27462 } else {
27463 BN.prototype._countBits = function _countBits (w) {
27464 var t = w;
27465 var r = 0;
27466 if (t >= 0x1000) {
27467 r += 13;
27468 t >>>= 13;
27469 }
27470 if (t >= 0x40) {
27471 r += 7;
27472 t >>>= 7;
27473 }
27474 if (t >= 0x8) {
27475 r += 4;
27476 t >>>= 4;
27477 }
27478 if (t >= 0x02) {
27479 r += 2;
27480 t >>>= 2;
27481 }
27482 return r + t;
27483 };
27484 }
27485
27486 BN.prototype._zeroBits = function _zeroBits (w) {
27487 // Short-cut
27488 if (w === 0) return 26;
27489
27490 var t = w;
27491 var r = 0;
27492 if ((t & 0x1fff) === 0) {
27493 r += 13;
27494 t >>>= 13;
27495 }
27496 if ((t & 0x7f) === 0) {
27497 r += 7;
27498 t >>>= 7;
27499 }
27500 if ((t & 0xf) === 0) {
27501 r += 4;
27502 t >>>= 4;
27503 }
27504 if ((t & 0x3) === 0) {
27505 r += 2;
27506 t >>>= 2;
27507 }
27508 if ((t & 0x1) === 0) {
27509 r++;
27510 }
27511 return r;
27512 };
27513
27514 // Return number of used bits in a BN
27515 BN.prototype.bitLength = function bitLength () {
27516 var w = this.words[this.length - 1];
27517 var hi = this._countBits(w);
27518 return (this.length - 1) * 26 + hi;
27519 };
27520
27521 function toBitArray (num) {
27522 var w = new Array(num.bitLength());
27523
27524 for (var bit = 0; bit < w.length; bit++) {
27525 var off = (bit / 26) | 0;
27526 var wbit = bit % 26;
27527
27528 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
27529 }
27530
27531 return w;
27532 }
27533
27534 // Number of trailing zero bits
27535 BN.prototype.zeroBits = function zeroBits () {
27536 if (this.isZero()) return 0;
27537
27538 var r = 0;
27539 for (var i = 0; i < this.length; i++) {
27540 var b = this._zeroBits(this.words[i]);
27541 r += b;
27542 if (b !== 26) break;
27543 }
27544 return r;
27545 };
27546
27547 BN.prototype.byteLength = function byteLength () {
27548 return Math.ceil(this.bitLength() / 8);
27549 };
27550
27551 BN.prototype.toTwos = function toTwos (width) {
27552 if (this.negative !== 0) {
27553 return this.abs().inotn(width).iaddn(1);
27554 }
27555 return this.clone();
27556 };
27557
27558 BN.prototype.fromTwos = function fromTwos (width) {
27559 if (this.testn(width - 1)) {
27560 return this.notn(width).iaddn(1).ineg();
27561 }
27562 return this.clone();
27563 };
27564
27565 BN.prototype.isNeg = function isNeg () {
27566 return this.negative !== 0;
27567 };
27568
27569 // Return negative clone of `this`
27570 BN.prototype.neg = function neg () {
27571 return this.clone().ineg();
27572 };
27573
27574 BN.prototype.ineg = function ineg () {
27575 if (!this.isZero()) {
27576 this.negative ^= 1;
27577 }
27578
27579 return this;
27580 };
27581
27582 // Or `num` with `this` in-place
27583 BN.prototype.iuor = function iuor (num) {
27584 while (this.length < num.length) {
27585 this.words[this.length++] = 0;
27586 }
27587
27588 for (var i = 0; i < num.length; i++) {
27589 this.words[i] = this.words[i] | num.words[i];
27590 }
27591
27592 return this.strip();
27593 };
27594
27595 BN.prototype.ior = function ior (num) {
27596 assert((this.negative | num.negative) === 0);
27597 return this.iuor(num);
27598 };
27599
27600 // Or `num` with `this`
27601 BN.prototype.or = function or (num) {
27602 if (this.length > num.length) return this.clone().ior(num);
27603 return num.clone().ior(this);
27604 };
27605
27606 BN.prototype.uor = function uor (num) {
27607 if (this.length > num.length) return this.clone().iuor(num);
27608 return num.clone().iuor(this);
27609 };
27610
27611 // And `num` with `this` in-place
27612 BN.prototype.iuand = function iuand (num) {
27613 // b = min-length(num, this)
27614 var b;
27615 if (this.length > num.length) {
27616 b = num;
27617 } else {
27618 b = this;
27619 }
27620
27621 for (var i = 0; i < b.length; i++) {
27622 this.words[i] = this.words[i] & num.words[i];
27623 }
27624
27625 this.length = b.length;
27626
27627 return this.strip();
27628 };
27629
27630 BN.prototype.iand = function iand (num) {
27631 assert((this.negative | num.negative) === 0);
27632 return this.iuand(num);
27633 };
27634
27635 // And `num` with `this`
27636 BN.prototype.and = function and (num) {
27637 if (this.length > num.length) return this.clone().iand(num);
27638 return num.clone().iand(this);
27639 };
27640
27641 BN.prototype.uand = function uand (num) {
27642 if (this.length > num.length) return this.clone().iuand(num);
27643 return num.clone().iuand(this);
27644 };
27645
27646 // Xor `num` with `this` in-place
27647 BN.prototype.iuxor = function iuxor (num) {
27648 // a.length > b.length
27649 var a;
27650 var b;
27651 if (this.length > num.length) {
27652 a = this;
27653 b = num;
27654 } else {
27655 a = num;
27656 b = this;
27657 }
27658
27659 for (var i = 0; i < b.length; i++) {
27660 this.words[i] = a.words[i] ^ b.words[i];
27661 }
27662
27663 if (this !== a) {
27664 for (; i < a.length; i++) {
27665 this.words[i] = a.words[i];
27666 }
27667 }
27668
27669 this.length = a.length;
27670
27671 return this.strip();
27672 };
27673
27674 BN.prototype.ixor = function ixor (num) {
27675 assert((this.negative | num.negative) === 0);
27676 return this.iuxor(num);
27677 };
27678
27679 // Xor `num` with `this`
27680 BN.prototype.xor = function xor (num) {
27681 if (this.length > num.length) return this.clone().ixor(num);
27682 return num.clone().ixor(this);
27683 };
27684
27685 BN.prototype.uxor = function uxor (num) {
27686 if (this.length > num.length) return this.clone().iuxor(num);
27687 return num.clone().iuxor(this);
27688 };
27689
27690 // Not ``this`` with ``width`` bitwidth
27691 BN.prototype.inotn = function inotn (width) {
27692 assert(typeof width === 'number' && width >= 0);
27693
27694 var bytesNeeded = Math.ceil(width / 26) | 0;
27695 var bitsLeft = width % 26;
27696
27697 // Extend the buffer with leading zeroes
27698 this._expand(bytesNeeded);
27699
27700 if (bitsLeft > 0) {
27701 bytesNeeded--;
27702 }
27703
27704 // Handle complete words
27705 for (var i = 0; i < bytesNeeded; i++) {
27706 this.words[i] = ~this.words[i] & 0x3ffffff;
27707 }
27708
27709 // Handle the residue
27710 if (bitsLeft > 0) {
27711 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
27712 }
27713
27714 // And remove leading zeroes
27715 return this.strip();
27716 };
27717
27718 BN.prototype.notn = function notn (width) {
27719 return this.clone().inotn(width);
27720 };
27721
27722 // Set `bit` of `this`
27723 BN.prototype.setn = function setn (bit, val) {
27724 assert(typeof bit === 'number' && bit >= 0);
27725
27726 var off = (bit / 26) | 0;
27727 var wbit = bit % 26;
27728
27729 this._expand(off + 1);
27730
27731 if (val) {
27732 this.words[off] = this.words[off] | (1 << wbit);
27733 } else {
27734 this.words[off] = this.words[off] & ~(1 << wbit);
27735 }
27736
27737 return this.strip();
27738 };
27739
27740 // Add `num` to `this` in-place
27741 BN.prototype.iadd = function iadd (num) {
27742 var r;
27743
27744 // negative + positive
27745 if (this.negative !== 0 && num.negative === 0) {
27746 this.negative = 0;
27747 r = this.isub(num);
27748 this.negative ^= 1;
27749 return this._normSign();
27750
27751 // positive + negative
27752 } else if (this.negative === 0 && num.negative !== 0) {
27753 num.negative = 0;
27754 r = this.isub(num);
27755 num.negative = 1;
27756 return r._normSign();
27757 }
27758
27759 // a.length > b.length
27760 var a, b;
27761 if (this.length > num.length) {
27762 a = this;
27763 b = num;
27764 } else {
27765 a = num;
27766 b = this;
27767 }
27768
27769 var carry = 0;
27770 for (var i = 0; i < b.length; i++) {
27771 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27772 this.words[i] = r & 0x3ffffff;
27773 carry = r >>> 26;
27774 }
27775 for (; carry !== 0 && i < a.length; i++) {
27776 r = (a.words[i] | 0) + carry;
27777 this.words[i] = r & 0x3ffffff;
27778 carry = r >>> 26;
27779 }
27780
27781 this.length = a.length;
27782 if (carry !== 0) {
27783 this.words[this.length] = carry;
27784 this.length++;
27785 // Copy the rest of the words
27786 } else if (a !== this) {
27787 for (; i < a.length; i++) {
27788 this.words[i] = a.words[i];
27789 }
27790 }
27791
27792 return this;
27793 };
27794
27795 // Add `num` to `this`
27796 BN.prototype.add = function add (num) {
27797 var res;
27798 if (num.negative !== 0 && this.negative === 0) {
27799 num.negative = 0;
27800 res = this.sub(num);
27801 num.negative ^= 1;
27802 return res;
27803 } else if (num.negative === 0 && this.negative !== 0) {
27804 this.negative = 0;
27805 res = num.sub(this);
27806 this.negative = 1;
27807 return res;
27808 }
27809
27810 if (this.length > num.length) return this.clone().iadd(num);
27811
27812 return num.clone().iadd(this);
27813 };
27814
27815 // Subtract `num` from `this` in-place
27816 BN.prototype.isub = function isub (num) {
27817 // this - (-num) = this + num
27818 if (num.negative !== 0) {
27819 num.negative = 0;
27820 var r = this.iadd(num);
27821 num.negative = 1;
27822 return r._normSign();
27823
27824 // -this - num = -(this + num)
27825 } else if (this.negative !== 0) {
27826 this.negative = 0;
27827 this.iadd(num);
27828 this.negative = 1;
27829 return this._normSign();
27830 }
27831
27832 // At this point both numbers are positive
27833 var cmp = this.cmp(num);
27834
27835 // Optimization - zeroify
27836 if (cmp === 0) {
27837 this.negative = 0;
27838 this.length = 1;
27839 this.words[0] = 0;
27840 return this;
27841 }
27842
27843 // a > b
27844 var a, b;
27845 if (cmp > 0) {
27846 a = this;
27847 b = num;
27848 } else {
27849 a = num;
27850 b = this;
27851 }
27852
27853 var carry = 0;
27854 for (var i = 0; i < b.length; i++) {
27855 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27856 carry = r >> 26;
27857 this.words[i] = r & 0x3ffffff;
27858 }
27859 for (; carry !== 0 && i < a.length; i++) {
27860 r = (a.words[i] | 0) + carry;
27861 carry = r >> 26;
27862 this.words[i] = r & 0x3ffffff;
27863 }
27864
27865 // Copy rest of the words
27866 if (carry === 0 && i < a.length && a !== this) {
27867 for (; i < a.length; i++) {
27868 this.words[i] = a.words[i];
27869 }
27870 }
27871
27872 this.length = Math.max(this.length, i);
27873
27874 if (a !== this) {
27875 this.negative = 1;
27876 }
27877
27878 return this.strip();
27879 };
27880
27881 // Subtract `num` from `this`
27882 BN.prototype.sub = function sub (num) {
27883 return this.clone().isub(num);
27884 };
27885
27886 function smallMulTo (self, num, out) {
27887 out.negative = num.negative ^ self.negative;
27888 var len = (self.length + num.length) | 0;
27889 out.length = len;
27890 len = (len - 1) | 0;
27891
27892 // Peel one iteration (compiler can't do it, because of code complexity)
27893 var a = self.words[0] | 0;
27894 var b = num.words[0] | 0;
27895 var r = a * b;
27896
27897 var lo = r & 0x3ffffff;
27898 var carry = (r / 0x4000000) | 0;
27899 out.words[0] = lo;
27900
27901 for (var k = 1; k < len; k++) {
27902 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27903 // note that ncarry could be >= 0x3ffffff
27904 var ncarry = carry >>> 26;
27905 var rword = carry & 0x3ffffff;
27906 var maxJ = Math.min(k, num.length - 1);
27907 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27908 var i = (k - j) | 0;
27909 a = self.words[i] | 0;
27910 b = num.words[j] | 0;
27911 r = a * b + rword;
27912 ncarry += (r / 0x4000000) | 0;
27913 rword = r & 0x3ffffff;
27914 }
27915 out.words[k] = rword | 0;
27916 carry = ncarry | 0;
27917 }
27918 if (carry !== 0) {
27919 out.words[k] = carry | 0;
27920 } else {
27921 out.length--;
27922 }
27923
27924 return out.strip();
27925 }
27926
27927 // TODO(indutny): it may be reasonable to omit it for users who don't need
27928 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27929 // multiplication (like elliptic secp256k1).
27930 var comb10MulTo = function comb10MulTo (self, num, out) {
27931 var a = self.words;
27932 var b = num.words;
27933 var o = out.words;
27934 var c = 0;
27935 var lo;
27936 var mid;
27937 var hi;
27938 var a0 = a[0] | 0;
27939 var al0 = a0 & 0x1fff;
27940 var ah0 = a0 >>> 13;
27941 var a1 = a[1] | 0;
27942 var al1 = a1 & 0x1fff;
27943 var ah1 = a1 >>> 13;
27944 var a2 = a[2] | 0;
27945 var al2 = a2 & 0x1fff;
27946 var ah2 = a2 >>> 13;
27947 var a3 = a[3] | 0;
27948 var al3 = a3 & 0x1fff;
27949 var ah3 = a3 >>> 13;
27950 var a4 = a[4] | 0;
27951 var al4 = a4 & 0x1fff;
27952 var ah4 = a4 >>> 13;
27953 var a5 = a[5] | 0;
27954 var al5 = a5 & 0x1fff;
27955 var ah5 = a5 >>> 13;
27956 var a6 = a[6] | 0;
27957 var al6 = a6 & 0x1fff;
27958 var ah6 = a6 >>> 13;
27959 var a7 = a[7] | 0;
27960 var al7 = a7 & 0x1fff;
27961 var ah7 = a7 >>> 13;
27962 var a8 = a[8] | 0;
27963 var al8 = a8 & 0x1fff;
27964 var ah8 = a8 >>> 13;
27965 var a9 = a[9] | 0;
27966 var al9 = a9 & 0x1fff;
27967 var ah9 = a9 >>> 13;
27968 var b0 = b[0] | 0;
27969 var bl0 = b0 & 0x1fff;
27970 var bh0 = b0 >>> 13;
27971 var b1 = b[1] | 0;
27972 var bl1 = b1 & 0x1fff;
27973 var bh1 = b1 >>> 13;
27974 var b2 = b[2] | 0;
27975 var bl2 = b2 & 0x1fff;
27976 var bh2 = b2 >>> 13;
27977 var b3 = b[3] | 0;
27978 var bl3 = b3 & 0x1fff;
27979 var bh3 = b3 >>> 13;
27980 var b4 = b[4] | 0;
27981 var bl4 = b4 & 0x1fff;
27982 var bh4 = b4 >>> 13;
27983 var b5 = b[5] | 0;
27984 var bl5 = b5 & 0x1fff;
27985 var bh5 = b5 >>> 13;
27986 var b6 = b[6] | 0;
27987 var bl6 = b6 & 0x1fff;
27988 var bh6 = b6 >>> 13;
27989 var b7 = b[7] | 0;
27990 var bl7 = b7 & 0x1fff;
27991 var bh7 = b7 >>> 13;
27992 var b8 = b[8] | 0;
27993 var bl8 = b8 & 0x1fff;
27994 var bh8 = b8 >>> 13;
27995 var b9 = b[9] | 0;
27996 var bl9 = b9 & 0x1fff;
27997 var bh9 = b9 >>> 13;
27998
27999 out.negative = self.negative ^ num.negative;
28000 out.length = 19;
28001 /* k = 0 */
28002 lo = Math.imul(al0, bl0);
28003 mid = Math.imul(al0, bh0);
28004 mid = (mid + Math.imul(ah0, bl0)) | 0;
28005 hi = Math.imul(ah0, bh0);
28006 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28007 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
28008 w0 &= 0x3ffffff;
28009 /* k = 1 */
28010 lo = Math.imul(al1, bl0);
28011 mid = Math.imul(al1, bh0);
28012 mid = (mid + Math.imul(ah1, bl0)) | 0;
28013 hi = Math.imul(ah1, bh0);
28014 lo = (lo + Math.imul(al0, bl1)) | 0;
28015 mid = (mid + Math.imul(al0, bh1)) | 0;
28016 mid = (mid + Math.imul(ah0, bl1)) | 0;
28017 hi = (hi + Math.imul(ah0, bh1)) | 0;
28018 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28019 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
28020 w1 &= 0x3ffffff;
28021 /* k = 2 */
28022 lo = Math.imul(al2, bl0);
28023 mid = Math.imul(al2, bh0);
28024 mid = (mid + Math.imul(ah2, bl0)) | 0;
28025 hi = Math.imul(ah2, bh0);
28026 lo = (lo + Math.imul(al1, bl1)) | 0;
28027 mid = (mid + Math.imul(al1, bh1)) | 0;
28028 mid = (mid + Math.imul(ah1, bl1)) | 0;
28029 hi = (hi + Math.imul(ah1, bh1)) | 0;
28030 lo = (lo + Math.imul(al0, bl2)) | 0;
28031 mid = (mid + Math.imul(al0, bh2)) | 0;
28032 mid = (mid + Math.imul(ah0, bl2)) | 0;
28033 hi = (hi + Math.imul(ah0, bh2)) | 0;
28034 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28035 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
28036 w2 &= 0x3ffffff;
28037 /* k = 3 */
28038 lo = Math.imul(al3, bl0);
28039 mid = Math.imul(al3, bh0);
28040 mid = (mid + Math.imul(ah3, bl0)) | 0;
28041 hi = Math.imul(ah3, bh0);
28042 lo = (lo + Math.imul(al2, bl1)) | 0;
28043 mid = (mid + Math.imul(al2, bh1)) | 0;
28044 mid = (mid + Math.imul(ah2, bl1)) | 0;
28045 hi = (hi + Math.imul(ah2, bh1)) | 0;
28046 lo = (lo + Math.imul(al1, bl2)) | 0;
28047 mid = (mid + Math.imul(al1, bh2)) | 0;
28048 mid = (mid + Math.imul(ah1, bl2)) | 0;
28049 hi = (hi + Math.imul(ah1, bh2)) | 0;
28050 lo = (lo + Math.imul(al0, bl3)) | 0;
28051 mid = (mid + Math.imul(al0, bh3)) | 0;
28052 mid = (mid + Math.imul(ah0, bl3)) | 0;
28053 hi = (hi + Math.imul(ah0, bh3)) | 0;
28054 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28055 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28056 w3 &= 0x3ffffff;
28057 /* k = 4 */
28058 lo = Math.imul(al4, bl0);
28059 mid = Math.imul(al4, bh0);
28060 mid = (mid + Math.imul(ah4, bl0)) | 0;
28061 hi = Math.imul(ah4, bh0);
28062 lo = (lo + Math.imul(al3, bl1)) | 0;
28063 mid = (mid + Math.imul(al3, bh1)) | 0;
28064 mid = (mid + Math.imul(ah3, bl1)) | 0;
28065 hi = (hi + Math.imul(ah3, bh1)) | 0;
28066 lo = (lo + Math.imul(al2, bl2)) | 0;
28067 mid = (mid + Math.imul(al2, bh2)) | 0;
28068 mid = (mid + Math.imul(ah2, bl2)) | 0;
28069 hi = (hi + Math.imul(ah2, bh2)) | 0;
28070 lo = (lo + Math.imul(al1, bl3)) | 0;
28071 mid = (mid + Math.imul(al1, bh3)) | 0;
28072 mid = (mid + Math.imul(ah1, bl3)) | 0;
28073 hi = (hi + Math.imul(ah1, bh3)) | 0;
28074 lo = (lo + Math.imul(al0, bl4)) | 0;
28075 mid = (mid + Math.imul(al0, bh4)) | 0;
28076 mid = (mid + Math.imul(ah0, bl4)) | 0;
28077 hi = (hi + Math.imul(ah0, bh4)) | 0;
28078 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28079 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28080 w4 &= 0x3ffffff;
28081 /* k = 5 */
28082 lo = Math.imul(al5, bl0);
28083 mid = Math.imul(al5, bh0);
28084 mid = (mid + Math.imul(ah5, bl0)) | 0;
28085 hi = Math.imul(ah5, bh0);
28086 lo = (lo + Math.imul(al4, bl1)) | 0;
28087 mid = (mid + Math.imul(al4, bh1)) | 0;
28088 mid = (mid + Math.imul(ah4, bl1)) | 0;
28089 hi = (hi + Math.imul(ah4, bh1)) | 0;
28090 lo = (lo + Math.imul(al3, bl2)) | 0;
28091 mid = (mid + Math.imul(al3, bh2)) | 0;
28092 mid = (mid + Math.imul(ah3, bl2)) | 0;
28093 hi = (hi + Math.imul(ah3, bh2)) | 0;
28094 lo = (lo + Math.imul(al2, bl3)) | 0;
28095 mid = (mid + Math.imul(al2, bh3)) | 0;
28096 mid = (mid + Math.imul(ah2, bl3)) | 0;
28097 hi = (hi + Math.imul(ah2, bh3)) | 0;
28098 lo = (lo + Math.imul(al1, bl4)) | 0;
28099 mid = (mid + Math.imul(al1, bh4)) | 0;
28100 mid = (mid + Math.imul(ah1, bl4)) | 0;
28101 hi = (hi + Math.imul(ah1, bh4)) | 0;
28102 lo = (lo + Math.imul(al0, bl5)) | 0;
28103 mid = (mid + Math.imul(al0, bh5)) | 0;
28104 mid = (mid + Math.imul(ah0, bl5)) | 0;
28105 hi = (hi + Math.imul(ah0, bh5)) | 0;
28106 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28107 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28108 w5 &= 0x3ffffff;
28109 /* k = 6 */
28110 lo = Math.imul(al6, bl0);
28111 mid = Math.imul(al6, bh0);
28112 mid = (mid + Math.imul(ah6, bl0)) | 0;
28113 hi = Math.imul(ah6, bh0);
28114 lo = (lo + Math.imul(al5, bl1)) | 0;
28115 mid = (mid + Math.imul(al5, bh1)) | 0;
28116 mid = (mid + Math.imul(ah5, bl1)) | 0;
28117 hi = (hi + Math.imul(ah5, bh1)) | 0;
28118 lo = (lo + Math.imul(al4, bl2)) | 0;
28119 mid = (mid + Math.imul(al4, bh2)) | 0;
28120 mid = (mid + Math.imul(ah4, bl2)) | 0;
28121 hi = (hi + Math.imul(ah4, bh2)) | 0;
28122 lo = (lo + Math.imul(al3, bl3)) | 0;
28123 mid = (mid + Math.imul(al3, bh3)) | 0;
28124 mid = (mid + Math.imul(ah3, bl3)) | 0;
28125 hi = (hi + Math.imul(ah3, bh3)) | 0;
28126 lo = (lo + Math.imul(al2, bl4)) | 0;
28127 mid = (mid + Math.imul(al2, bh4)) | 0;
28128 mid = (mid + Math.imul(ah2, bl4)) | 0;
28129 hi = (hi + Math.imul(ah2, bh4)) | 0;
28130 lo = (lo + Math.imul(al1, bl5)) | 0;
28131 mid = (mid + Math.imul(al1, bh5)) | 0;
28132 mid = (mid + Math.imul(ah1, bl5)) | 0;
28133 hi = (hi + Math.imul(ah1, bh5)) | 0;
28134 lo = (lo + Math.imul(al0, bl6)) | 0;
28135 mid = (mid + Math.imul(al0, bh6)) | 0;
28136 mid = (mid + Math.imul(ah0, bl6)) | 0;
28137 hi = (hi + Math.imul(ah0, bh6)) | 0;
28138 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28139 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28140 w6 &= 0x3ffffff;
28141 /* k = 7 */
28142 lo = Math.imul(al7, bl0);
28143 mid = Math.imul(al7, bh0);
28144 mid = (mid + Math.imul(ah7, bl0)) | 0;
28145 hi = Math.imul(ah7, bh0);
28146 lo = (lo + Math.imul(al6, bl1)) | 0;
28147 mid = (mid + Math.imul(al6, bh1)) | 0;
28148 mid = (mid + Math.imul(ah6, bl1)) | 0;
28149 hi = (hi + Math.imul(ah6, bh1)) | 0;
28150 lo = (lo + Math.imul(al5, bl2)) | 0;
28151 mid = (mid + Math.imul(al5, bh2)) | 0;
28152 mid = (mid + Math.imul(ah5, bl2)) | 0;
28153 hi = (hi + Math.imul(ah5, bh2)) | 0;
28154 lo = (lo + Math.imul(al4, bl3)) | 0;
28155 mid = (mid + Math.imul(al4, bh3)) | 0;
28156 mid = (mid + Math.imul(ah4, bl3)) | 0;
28157 hi = (hi + Math.imul(ah4, bh3)) | 0;
28158 lo = (lo + Math.imul(al3, bl4)) | 0;
28159 mid = (mid + Math.imul(al3, bh4)) | 0;
28160 mid = (mid + Math.imul(ah3, bl4)) | 0;
28161 hi = (hi + Math.imul(ah3, bh4)) | 0;
28162 lo = (lo + Math.imul(al2, bl5)) | 0;
28163 mid = (mid + Math.imul(al2, bh5)) | 0;
28164 mid = (mid + Math.imul(ah2, bl5)) | 0;
28165 hi = (hi + Math.imul(ah2, bh5)) | 0;
28166 lo = (lo + Math.imul(al1, bl6)) | 0;
28167 mid = (mid + Math.imul(al1, bh6)) | 0;
28168 mid = (mid + Math.imul(ah1, bl6)) | 0;
28169 hi = (hi + Math.imul(ah1, bh6)) | 0;
28170 lo = (lo + Math.imul(al0, bl7)) | 0;
28171 mid = (mid + Math.imul(al0, bh7)) | 0;
28172 mid = (mid + Math.imul(ah0, bl7)) | 0;
28173 hi = (hi + Math.imul(ah0, bh7)) | 0;
28174 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28175 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28176 w7 &= 0x3ffffff;
28177 /* k = 8 */
28178 lo = Math.imul(al8, bl0);
28179 mid = Math.imul(al8, bh0);
28180 mid = (mid + Math.imul(ah8, bl0)) | 0;
28181 hi = Math.imul(ah8, bh0);
28182 lo = (lo + Math.imul(al7, bl1)) | 0;
28183 mid = (mid + Math.imul(al7, bh1)) | 0;
28184 mid = (mid + Math.imul(ah7, bl1)) | 0;
28185 hi = (hi + Math.imul(ah7, bh1)) | 0;
28186 lo = (lo + Math.imul(al6, bl2)) | 0;
28187 mid = (mid + Math.imul(al6, bh2)) | 0;
28188 mid = (mid + Math.imul(ah6, bl2)) | 0;
28189 hi = (hi + Math.imul(ah6, bh2)) | 0;
28190 lo = (lo + Math.imul(al5, bl3)) | 0;
28191 mid = (mid + Math.imul(al5, bh3)) | 0;
28192 mid = (mid + Math.imul(ah5, bl3)) | 0;
28193 hi = (hi + Math.imul(ah5, bh3)) | 0;
28194 lo = (lo + Math.imul(al4, bl4)) | 0;
28195 mid = (mid + Math.imul(al4, bh4)) | 0;
28196 mid = (mid + Math.imul(ah4, bl4)) | 0;
28197 hi = (hi + Math.imul(ah4, bh4)) | 0;
28198 lo = (lo + Math.imul(al3, bl5)) | 0;
28199 mid = (mid + Math.imul(al3, bh5)) | 0;
28200 mid = (mid + Math.imul(ah3, bl5)) | 0;
28201 hi = (hi + Math.imul(ah3, bh5)) | 0;
28202 lo = (lo + Math.imul(al2, bl6)) | 0;
28203 mid = (mid + Math.imul(al2, bh6)) | 0;
28204 mid = (mid + Math.imul(ah2, bl6)) | 0;
28205 hi = (hi + Math.imul(ah2, bh6)) | 0;
28206 lo = (lo + Math.imul(al1, bl7)) | 0;
28207 mid = (mid + Math.imul(al1, bh7)) | 0;
28208 mid = (mid + Math.imul(ah1, bl7)) | 0;
28209 hi = (hi + Math.imul(ah1, bh7)) | 0;
28210 lo = (lo + Math.imul(al0, bl8)) | 0;
28211 mid = (mid + Math.imul(al0, bh8)) | 0;
28212 mid = (mid + Math.imul(ah0, bl8)) | 0;
28213 hi = (hi + Math.imul(ah0, bh8)) | 0;
28214 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28215 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28216 w8 &= 0x3ffffff;
28217 /* k = 9 */
28218 lo = Math.imul(al9, bl0);
28219 mid = Math.imul(al9, bh0);
28220 mid = (mid + Math.imul(ah9, bl0)) | 0;
28221 hi = Math.imul(ah9, bh0);
28222 lo = (lo + Math.imul(al8, bl1)) | 0;
28223 mid = (mid + Math.imul(al8, bh1)) | 0;
28224 mid = (mid + Math.imul(ah8, bl1)) | 0;
28225 hi = (hi + Math.imul(ah8, bh1)) | 0;
28226 lo = (lo + Math.imul(al7, bl2)) | 0;
28227 mid = (mid + Math.imul(al7, bh2)) | 0;
28228 mid = (mid + Math.imul(ah7, bl2)) | 0;
28229 hi = (hi + Math.imul(ah7, bh2)) | 0;
28230 lo = (lo + Math.imul(al6, bl3)) | 0;
28231 mid = (mid + Math.imul(al6, bh3)) | 0;
28232 mid = (mid + Math.imul(ah6, bl3)) | 0;
28233 hi = (hi + Math.imul(ah6, bh3)) | 0;
28234 lo = (lo + Math.imul(al5, bl4)) | 0;
28235 mid = (mid + Math.imul(al5, bh4)) | 0;
28236 mid = (mid + Math.imul(ah5, bl4)) | 0;
28237 hi = (hi + Math.imul(ah5, bh4)) | 0;
28238 lo = (lo + Math.imul(al4, bl5)) | 0;
28239 mid = (mid + Math.imul(al4, bh5)) | 0;
28240 mid = (mid + Math.imul(ah4, bl5)) | 0;
28241 hi = (hi + Math.imul(ah4, bh5)) | 0;
28242 lo = (lo + Math.imul(al3, bl6)) | 0;
28243 mid = (mid + Math.imul(al3, bh6)) | 0;
28244 mid = (mid + Math.imul(ah3, bl6)) | 0;
28245 hi = (hi + Math.imul(ah3, bh6)) | 0;
28246 lo = (lo + Math.imul(al2, bl7)) | 0;
28247 mid = (mid + Math.imul(al2, bh7)) | 0;
28248 mid = (mid + Math.imul(ah2, bl7)) | 0;
28249 hi = (hi + Math.imul(ah2, bh7)) | 0;
28250 lo = (lo + Math.imul(al1, bl8)) | 0;
28251 mid = (mid + Math.imul(al1, bh8)) | 0;
28252 mid = (mid + Math.imul(ah1, bl8)) | 0;
28253 hi = (hi + Math.imul(ah1, bh8)) | 0;
28254 lo = (lo + Math.imul(al0, bl9)) | 0;
28255 mid = (mid + Math.imul(al0, bh9)) | 0;
28256 mid = (mid + Math.imul(ah0, bl9)) | 0;
28257 hi = (hi + Math.imul(ah0, bh9)) | 0;
28258 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28259 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28260 w9 &= 0x3ffffff;
28261 /* k = 10 */
28262 lo = Math.imul(al9, bl1);
28263 mid = Math.imul(al9, bh1);
28264 mid = (mid + Math.imul(ah9, bl1)) | 0;
28265 hi = Math.imul(ah9, bh1);
28266 lo = (lo + Math.imul(al8, bl2)) | 0;
28267 mid = (mid + Math.imul(al8, bh2)) | 0;
28268 mid = (mid + Math.imul(ah8, bl2)) | 0;
28269 hi = (hi + Math.imul(ah8, bh2)) | 0;
28270 lo = (lo + Math.imul(al7, bl3)) | 0;
28271 mid = (mid + Math.imul(al7, bh3)) | 0;
28272 mid = (mid + Math.imul(ah7, bl3)) | 0;
28273 hi = (hi + Math.imul(ah7, bh3)) | 0;
28274 lo = (lo + Math.imul(al6, bl4)) | 0;
28275 mid = (mid + Math.imul(al6, bh4)) | 0;
28276 mid = (mid + Math.imul(ah6, bl4)) | 0;
28277 hi = (hi + Math.imul(ah6, bh4)) | 0;
28278 lo = (lo + Math.imul(al5, bl5)) | 0;
28279 mid = (mid + Math.imul(al5, bh5)) | 0;
28280 mid = (mid + Math.imul(ah5, bl5)) | 0;
28281 hi = (hi + Math.imul(ah5, bh5)) | 0;
28282 lo = (lo + Math.imul(al4, bl6)) | 0;
28283 mid = (mid + Math.imul(al4, bh6)) | 0;
28284 mid = (mid + Math.imul(ah4, bl6)) | 0;
28285 hi = (hi + Math.imul(ah4, bh6)) | 0;
28286 lo = (lo + Math.imul(al3, bl7)) | 0;
28287 mid = (mid + Math.imul(al3, bh7)) | 0;
28288 mid = (mid + Math.imul(ah3, bl7)) | 0;
28289 hi = (hi + Math.imul(ah3, bh7)) | 0;
28290 lo = (lo + Math.imul(al2, bl8)) | 0;
28291 mid = (mid + Math.imul(al2, bh8)) | 0;
28292 mid = (mid + Math.imul(ah2, bl8)) | 0;
28293 hi = (hi + Math.imul(ah2, bh8)) | 0;
28294 lo = (lo + Math.imul(al1, bl9)) | 0;
28295 mid = (mid + Math.imul(al1, bh9)) | 0;
28296 mid = (mid + Math.imul(ah1, bl9)) | 0;
28297 hi = (hi + Math.imul(ah1, bh9)) | 0;
28298 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28299 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28300 w10 &= 0x3ffffff;
28301 /* k = 11 */
28302 lo = Math.imul(al9, bl2);
28303 mid = Math.imul(al9, bh2);
28304 mid = (mid + Math.imul(ah9, bl2)) | 0;
28305 hi = Math.imul(ah9, bh2);
28306 lo = (lo + Math.imul(al8, bl3)) | 0;
28307 mid = (mid + Math.imul(al8, bh3)) | 0;
28308 mid = (mid + Math.imul(ah8, bl3)) | 0;
28309 hi = (hi + Math.imul(ah8, bh3)) | 0;
28310 lo = (lo + Math.imul(al7, bl4)) | 0;
28311 mid = (mid + Math.imul(al7, bh4)) | 0;
28312 mid = (mid + Math.imul(ah7, bl4)) | 0;
28313 hi = (hi + Math.imul(ah7, bh4)) | 0;
28314 lo = (lo + Math.imul(al6, bl5)) | 0;
28315 mid = (mid + Math.imul(al6, bh5)) | 0;
28316 mid = (mid + Math.imul(ah6, bl5)) | 0;
28317 hi = (hi + Math.imul(ah6, bh5)) | 0;
28318 lo = (lo + Math.imul(al5, bl6)) | 0;
28319 mid = (mid + Math.imul(al5, bh6)) | 0;
28320 mid = (mid + Math.imul(ah5, bl6)) | 0;
28321 hi = (hi + Math.imul(ah5, bh6)) | 0;
28322 lo = (lo + Math.imul(al4, bl7)) | 0;
28323 mid = (mid + Math.imul(al4, bh7)) | 0;
28324 mid = (mid + Math.imul(ah4, bl7)) | 0;
28325 hi = (hi + Math.imul(ah4, bh7)) | 0;
28326 lo = (lo + Math.imul(al3, bl8)) | 0;
28327 mid = (mid + Math.imul(al3, bh8)) | 0;
28328 mid = (mid + Math.imul(ah3, bl8)) | 0;
28329 hi = (hi + Math.imul(ah3, bh8)) | 0;
28330 lo = (lo + Math.imul(al2, bl9)) | 0;
28331 mid = (mid + Math.imul(al2, bh9)) | 0;
28332 mid = (mid + Math.imul(ah2, bl9)) | 0;
28333 hi = (hi + Math.imul(ah2, bh9)) | 0;
28334 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28335 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28336 w11 &= 0x3ffffff;
28337 /* k = 12 */
28338 lo = Math.imul(al9, bl3);
28339 mid = Math.imul(al9, bh3);
28340 mid = (mid + Math.imul(ah9, bl3)) | 0;
28341 hi = Math.imul(ah9, bh3);
28342 lo = (lo + Math.imul(al8, bl4)) | 0;
28343 mid = (mid + Math.imul(al8, bh4)) | 0;
28344 mid = (mid + Math.imul(ah8, bl4)) | 0;
28345 hi = (hi + Math.imul(ah8, bh4)) | 0;
28346 lo = (lo + Math.imul(al7, bl5)) | 0;
28347 mid = (mid + Math.imul(al7, bh5)) | 0;
28348 mid = (mid + Math.imul(ah7, bl5)) | 0;
28349 hi = (hi + Math.imul(ah7, bh5)) | 0;
28350 lo = (lo + Math.imul(al6, bl6)) | 0;
28351 mid = (mid + Math.imul(al6, bh6)) | 0;
28352 mid = (mid + Math.imul(ah6, bl6)) | 0;
28353 hi = (hi + Math.imul(ah6, bh6)) | 0;
28354 lo = (lo + Math.imul(al5, bl7)) | 0;
28355 mid = (mid + Math.imul(al5, bh7)) | 0;
28356 mid = (mid + Math.imul(ah5, bl7)) | 0;
28357 hi = (hi + Math.imul(ah5, bh7)) | 0;
28358 lo = (lo + Math.imul(al4, bl8)) | 0;
28359 mid = (mid + Math.imul(al4, bh8)) | 0;
28360 mid = (mid + Math.imul(ah4, bl8)) | 0;
28361 hi = (hi + Math.imul(ah4, bh8)) | 0;
28362 lo = (lo + Math.imul(al3, bl9)) | 0;
28363 mid = (mid + Math.imul(al3, bh9)) | 0;
28364 mid = (mid + Math.imul(ah3, bl9)) | 0;
28365 hi = (hi + Math.imul(ah3, bh9)) | 0;
28366 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28367 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28368 w12 &= 0x3ffffff;
28369 /* k = 13 */
28370 lo = Math.imul(al9, bl4);
28371 mid = Math.imul(al9, bh4);
28372 mid = (mid + Math.imul(ah9, bl4)) | 0;
28373 hi = Math.imul(ah9, bh4);
28374 lo = (lo + Math.imul(al8, bl5)) | 0;
28375 mid = (mid + Math.imul(al8, bh5)) | 0;
28376 mid = (mid + Math.imul(ah8, bl5)) | 0;
28377 hi = (hi + Math.imul(ah8, bh5)) | 0;
28378 lo = (lo + Math.imul(al7, bl6)) | 0;
28379 mid = (mid + Math.imul(al7, bh6)) | 0;
28380 mid = (mid + Math.imul(ah7, bl6)) | 0;
28381 hi = (hi + Math.imul(ah7, bh6)) | 0;
28382 lo = (lo + Math.imul(al6, bl7)) | 0;
28383 mid = (mid + Math.imul(al6, bh7)) | 0;
28384 mid = (mid + Math.imul(ah6, bl7)) | 0;
28385 hi = (hi + Math.imul(ah6, bh7)) | 0;
28386 lo = (lo + Math.imul(al5, bl8)) | 0;
28387 mid = (mid + Math.imul(al5, bh8)) | 0;
28388 mid = (mid + Math.imul(ah5, bl8)) | 0;
28389 hi = (hi + Math.imul(ah5, bh8)) | 0;
28390 lo = (lo + Math.imul(al4, bl9)) | 0;
28391 mid = (mid + Math.imul(al4, bh9)) | 0;
28392 mid = (mid + Math.imul(ah4, bl9)) | 0;
28393 hi = (hi + Math.imul(ah4, bh9)) | 0;
28394 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28395 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28396 w13 &= 0x3ffffff;
28397 /* k = 14 */
28398 lo = Math.imul(al9, bl5);
28399 mid = Math.imul(al9, bh5);
28400 mid = (mid + Math.imul(ah9, bl5)) | 0;
28401 hi = Math.imul(ah9, bh5);
28402 lo = (lo + Math.imul(al8, bl6)) | 0;
28403 mid = (mid + Math.imul(al8, bh6)) | 0;
28404 mid = (mid + Math.imul(ah8, bl6)) | 0;
28405 hi = (hi + Math.imul(ah8, bh6)) | 0;
28406 lo = (lo + Math.imul(al7, bl7)) | 0;
28407 mid = (mid + Math.imul(al7, bh7)) | 0;
28408 mid = (mid + Math.imul(ah7, bl7)) | 0;
28409 hi = (hi + Math.imul(ah7, bh7)) | 0;
28410 lo = (lo + Math.imul(al6, bl8)) | 0;
28411 mid = (mid + Math.imul(al6, bh8)) | 0;
28412 mid = (mid + Math.imul(ah6, bl8)) | 0;
28413 hi = (hi + Math.imul(ah6, bh8)) | 0;
28414 lo = (lo + Math.imul(al5, bl9)) | 0;
28415 mid = (mid + Math.imul(al5, bh9)) | 0;
28416 mid = (mid + Math.imul(ah5, bl9)) | 0;
28417 hi = (hi + Math.imul(ah5, bh9)) | 0;
28418 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28419 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28420 w14 &= 0x3ffffff;
28421 /* k = 15 */
28422 lo = Math.imul(al9, bl6);
28423 mid = Math.imul(al9, bh6);
28424 mid = (mid + Math.imul(ah9, bl6)) | 0;
28425 hi = Math.imul(ah9, bh6);
28426 lo = (lo + Math.imul(al8, bl7)) | 0;
28427 mid = (mid + Math.imul(al8, bh7)) | 0;
28428 mid = (mid + Math.imul(ah8, bl7)) | 0;
28429 hi = (hi + Math.imul(ah8, bh7)) | 0;
28430 lo = (lo + Math.imul(al7, bl8)) | 0;
28431 mid = (mid + Math.imul(al7, bh8)) | 0;
28432 mid = (mid + Math.imul(ah7, bl8)) | 0;
28433 hi = (hi + Math.imul(ah7, bh8)) | 0;
28434 lo = (lo + Math.imul(al6, bl9)) | 0;
28435 mid = (mid + Math.imul(al6, bh9)) | 0;
28436 mid = (mid + Math.imul(ah6, bl9)) | 0;
28437 hi = (hi + Math.imul(ah6, bh9)) | 0;
28438 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28439 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28440 w15 &= 0x3ffffff;
28441 /* k = 16 */
28442 lo = Math.imul(al9, bl7);
28443 mid = Math.imul(al9, bh7);
28444 mid = (mid + Math.imul(ah9, bl7)) | 0;
28445 hi = Math.imul(ah9, bh7);
28446 lo = (lo + Math.imul(al8, bl8)) | 0;
28447 mid = (mid + Math.imul(al8, bh8)) | 0;
28448 mid = (mid + Math.imul(ah8, bl8)) | 0;
28449 hi = (hi + Math.imul(ah8, bh8)) | 0;
28450 lo = (lo + Math.imul(al7, bl9)) | 0;
28451 mid = (mid + Math.imul(al7, bh9)) | 0;
28452 mid = (mid + Math.imul(ah7, bl9)) | 0;
28453 hi = (hi + Math.imul(ah7, bh9)) | 0;
28454 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28455 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28456 w16 &= 0x3ffffff;
28457 /* k = 17 */
28458 lo = Math.imul(al9, bl8);
28459 mid = Math.imul(al9, bh8);
28460 mid = (mid + Math.imul(ah9, bl8)) | 0;
28461 hi = Math.imul(ah9, bh8);
28462 lo = (lo + Math.imul(al8, bl9)) | 0;
28463 mid = (mid + Math.imul(al8, bh9)) | 0;
28464 mid = (mid + Math.imul(ah8, bl9)) | 0;
28465 hi = (hi + Math.imul(ah8, bh9)) | 0;
28466 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28467 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28468 w17 &= 0x3ffffff;
28469 /* k = 18 */
28470 lo = Math.imul(al9, bl9);
28471 mid = Math.imul(al9, bh9);
28472 mid = (mid + Math.imul(ah9, bl9)) | 0;
28473 hi = Math.imul(ah9, bh9);
28474 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28475 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28476 w18 &= 0x3ffffff;
28477 o[0] = w0;
28478 o[1] = w1;
28479 o[2] = w2;
28480 o[3] = w3;
28481 o[4] = w4;
28482 o[5] = w5;
28483 o[6] = w6;
28484 o[7] = w7;
28485 o[8] = w8;
28486 o[9] = w9;
28487 o[10] = w10;
28488 o[11] = w11;
28489 o[12] = w12;
28490 o[13] = w13;
28491 o[14] = w14;
28492 o[15] = w15;
28493 o[16] = w16;
28494 o[17] = w17;
28495 o[18] = w18;
28496 if (c !== 0) {
28497 o[19] = c;
28498 out.length++;
28499 }
28500 return out;
28501 };
28502
28503 // Polyfill comb
28504 if (!Math.imul) {
28505 comb10MulTo = smallMulTo;
28506 }
28507
28508 function bigMulTo (self, num, out) {
28509 out.negative = num.negative ^ self.negative;
28510 out.length = self.length + num.length;
28511
28512 var carry = 0;
28513 var hncarry = 0;
28514 for (var k = 0; k < out.length - 1; k++) {
28515 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28516 // note that ncarry could be >= 0x3ffffff
28517 var ncarry = hncarry;
28518 hncarry = 0;
28519 var rword = carry & 0x3ffffff;
28520 var maxJ = Math.min(k, num.length - 1);
28521 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28522 var i = k - j;
28523 var a = self.words[i] | 0;
28524 var b = num.words[j] | 0;
28525 var r = a * b;
28526
28527 var lo = r & 0x3ffffff;
28528 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28529 lo = (lo + rword) | 0;
28530 rword = lo & 0x3ffffff;
28531 ncarry = (ncarry + (lo >>> 26)) | 0;
28532
28533 hncarry += ncarry >>> 26;
28534 ncarry &= 0x3ffffff;
28535 }
28536 out.words[k] = rword;
28537 carry = ncarry;
28538 ncarry = hncarry;
28539 }
28540 if (carry !== 0) {
28541 out.words[k] = carry;
28542 } else {
28543 out.length--;
28544 }
28545
28546 return out.strip();
28547 }
28548
28549 function jumboMulTo (self, num, out) {
28550 var fftm = new FFTM();
28551 return fftm.mulp(self, num, out);
28552 }
28553
28554 BN.prototype.mulTo = function mulTo (num, out) {
28555 var res;
28556 var len = this.length + num.length;
28557 if (this.length === 10 && num.length === 10) {
28558 res = comb10MulTo(this, num, out);
28559 } else if (len < 63) {
28560 res = smallMulTo(this, num, out);
28561 } else if (len < 1024) {
28562 res = bigMulTo(this, num, out);
28563 } else {
28564 res = jumboMulTo(this, num, out);
28565 }
28566
28567 return res;
28568 };
28569
28570 // Cooley-Tukey algorithm for FFT
28571 // slightly revisited to rely on looping instead of recursion
28572
28573 function FFTM (x, y) {
28574 this.x = x;
28575 this.y = y;
28576 }
28577
28578 FFTM.prototype.makeRBT = function makeRBT (N) {
28579 var t = new Array(N);
28580 var l = BN.prototype._countBits(N) - 1;
28581 for (var i = 0; i < N; i++) {
28582 t[i] = this.revBin(i, l, N);
28583 }
28584
28585 return t;
28586 };
28587
28588 // Returns binary-reversed representation of `x`
28589 FFTM.prototype.revBin = function revBin (x, l, N) {
28590 if (x === 0 || x === N - 1) return x;
28591
28592 var rb = 0;
28593 for (var i = 0; i < l; i++) {
28594 rb |= (x & 1) << (l - i - 1);
28595 x >>= 1;
28596 }
28597
28598 return rb;
28599 };
28600
28601 // Performs "tweedling" phase, therefore 'emulating'
28602 // behaviour of the recursive algorithm
28603 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28604 for (var i = 0; i < N; i++) {
28605 rtws[i] = rws[rbt[i]];
28606 itws[i] = iws[rbt[i]];
28607 }
28608 };
28609
28610 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28611 this.permute(rbt, rws, iws, rtws, itws, N);
28612
28613 for (var s = 1; s < N; s <<= 1) {
28614 var l = s << 1;
28615
28616 var rtwdf = Math.cos(2 * Math.PI / l);
28617 var itwdf = Math.sin(2 * Math.PI / l);
28618
28619 for (var p = 0; p < N; p += l) {
28620 var rtwdf_ = rtwdf;
28621 var itwdf_ = itwdf;
28622
28623 for (var j = 0; j < s; j++) {
28624 var re = rtws[p + j];
28625 var ie = itws[p + j];
28626
28627 var ro = rtws[p + j + s];
28628 var io = itws[p + j + s];
28629
28630 var rx = rtwdf_ * ro - itwdf_ * io;
28631
28632 io = rtwdf_ * io + itwdf_ * ro;
28633 ro = rx;
28634
28635 rtws[p + j] = re + ro;
28636 itws[p + j] = ie + io;
28637
28638 rtws[p + j + s] = re - ro;
28639 itws[p + j + s] = ie - io;
28640
28641 /* jshint maxdepth : false */
28642 if (j !== l) {
28643 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28644
28645 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28646 rtwdf_ = rx;
28647 }
28648 }
28649 }
28650 }
28651 };
28652
28653 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28654 var N = Math.max(m, n) | 1;
28655 var odd = N & 1;
28656 var i = 0;
28657 for (N = N / 2 | 0; N; N = N >>> 1) {
28658 i++;
28659 }
28660
28661 return 1 << i + 1 + odd;
28662 };
28663
28664 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28665 if (N <= 1) return;
28666
28667 for (var i = 0; i < N / 2; i++) {
28668 var t = rws[i];
28669
28670 rws[i] = rws[N - i - 1];
28671 rws[N - i - 1] = t;
28672
28673 t = iws[i];
28674
28675 iws[i] = -iws[N - i - 1];
28676 iws[N - i - 1] = -t;
28677 }
28678 };
28679
28680 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28681 var carry = 0;
28682 for (var i = 0; i < N / 2; i++) {
28683 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28684 Math.round(ws[2 * i] / N) +
28685 carry;
28686
28687 ws[i] = w & 0x3ffffff;
28688
28689 if (w < 0x4000000) {
28690 carry = 0;
28691 } else {
28692 carry = w / 0x4000000 | 0;
28693 }
28694 }
28695
28696 return ws;
28697 };
28698
28699 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28700 var carry = 0;
28701 for (var i = 0; i < len; i++) {
28702 carry = carry + (ws[i] | 0);
28703
28704 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28705 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28706 }
28707
28708 // Pad with zeroes
28709 for (i = 2 * len; i < N; ++i) {
28710 rws[i] = 0;
28711 }
28712
28713 assert(carry === 0);
28714 assert((carry & ~0x1fff) === 0);
28715 };
28716
28717 FFTM.prototype.stub = function stub (N) {
28718 var ph = new Array(N);
28719 for (var i = 0; i < N; i++) {
28720 ph[i] = 0;
28721 }
28722
28723 return ph;
28724 };
28725
28726 FFTM.prototype.mulp = function mulp (x, y, out) {
28727 var N = 2 * this.guessLen13b(x.length, y.length);
28728
28729 var rbt = this.makeRBT(N);
28730
28731 var _ = this.stub(N);
28732
28733 var rws = new Array(N);
28734 var rwst = new Array(N);
28735 var iwst = new Array(N);
28736
28737 var nrws = new Array(N);
28738 var nrwst = new Array(N);
28739 var niwst = new Array(N);
28740
28741 var rmws = out.words;
28742 rmws.length = N;
28743
28744 this.convert13b(x.words, x.length, rws, N);
28745 this.convert13b(y.words, y.length, nrws, N);
28746
28747 this.transform(rws, _, rwst, iwst, N, rbt);
28748 this.transform(nrws, _, nrwst, niwst, N, rbt);
28749
28750 for (var i = 0; i < N; i++) {
28751 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28752 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28753 rwst[i] = rx;
28754 }
28755
28756 this.conjugate(rwst, iwst, N);
28757 this.transform(rwst, iwst, rmws, _, N, rbt);
28758 this.conjugate(rmws, _, N);
28759 this.normalize13b(rmws, N);
28760
28761 out.negative = x.negative ^ y.negative;
28762 out.length = x.length + y.length;
28763 return out.strip();
28764 };
28765
28766 // Multiply `this` by `num`
28767 BN.prototype.mul = function mul (num) {
28768 var out = new BN(null);
28769 out.words = new Array(this.length + num.length);
28770 return this.mulTo(num, out);
28771 };
28772
28773 // Multiply employing FFT
28774 BN.prototype.mulf = function mulf (num) {
28775 var out = new BN(null);
28776 out.words = new Array(this.length + num.length);
28777 return jumboMulTo(this, num, out);
28778 };
28779
28780 // In-place Multiplication
28781 BN.prototype.imul = function imul (num) {
28782 return this.clone().mulTo(num, this);
28783 };
28784
28785 BN.prototype.imuln = function imuln (num) {
28786 assert(typeof num === 'number');
28787 assert(num < 0x4000000);
28788
28789 // Carry
28790 var carry = 0;
28791 for (var i = 0; i < this.length; i++) {
28792 var w = (this.words[i] | 0) * num;
28793 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28794 carry >>= 26;
28795 carry += (w / 0x4000000) | 0;
28796 // NOTE: lo is 27bit maximum
28797 carry += lo >>> 26;
28798 this.words[i] = lo & 0x3ffffff;
28799 }
28800
28801 if (carry !== 0) {
28802 this.words[i] = carry;
28803 this.length++;
28804 }
28805
28806 return this;
28807 };
28808
28809 BN.prototype.muln = function muln (num) {
28810 return this.clone().imuln(num);
28811 };
28812
28813 // `this` * `this`
28814 BN.prototype.sqr = function sqr () {
28815 return this.mul(this);
28816 };
28817
28818 // `this` * `this` in-place
28819 BN.prototype.isqr = function isqr () {
28820 return this.imul(this.clone());
28821 };
28822
28823 // Math.pow(`this`, `num`)
28824 BN.prototype.pow = function pow (num) {
28825 var w = toBitArray(num);
28826 if (w.length === 0) return new BN(1);
28827
28828 // Skip leading zeroes
28829 var res = this;
28830 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28831 if (w[i] !== 0) break;
28832 }
28833
28834 if (++i < w.length) {
28835 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28836 if (w[i] === 0) continue;
28837
28838 res = res.mul(q);
28839 }
28840 }
28841
28842 return res;
28843 };
28844
28845 // Shift-left in-place
28846 BN.prototype.iushln = function iushln (bits) {
28847 assert(typeof bits === 'number' && bits >= 0);
28848 var r = bits % 26;
28849 var s = (bits - r) / 26;
28850 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28851 var i;
28852
28853 if (r !== 0) {
28854 var carry = 0;
28855
28856 for (i = 0; i < this.length; i++) {
28857 var newCarry = this.words[i] & carryMask;
28858 var c = ((this.words[i] | 0) - newCarry) << r;
28859 this.words[i] = c | carry;
28860 carry = newCarry >>> (26 - r);
28861 }
28862
28863 if (carry) {
28864 this.words[i] = carry;
28865 this.length++;
28866 }
28867 }
28868
28869 if (s !== 0) {
28870 for (i = this.length - 1; i >= 0; i--) {
28871 this.words[i + s] = this.words[i];
28872 }
28873
28874 for (i = 0; i < s; i++) {
28875 this.words[i] = 0;
28876 }
28877
28878 this.length += s;
28879 }
28880
28881 return this.strip();
28882 };
28883
28884 BN.prototype.ishln = function ishln (bits) {
28885 // TODO(indutny): implement me
28886 assert(this.negative === 0);
28887 return this.iushln(bits);
28888 };
28889
28890 // Shift-right in-place
28891 // NOTE: `hint` is a lowest bit before trailing zeroes
28892 // NOTE: if `extended` is present - it will be filled with destroyed bits
28893 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28894 assert(typeof bits === 'number' && bits >= 0);
28895 var h;
28896 if (hint) {
28897 h = (hint - (hint % 26)) / 26;
28898 } else {
28899 h = 0;
28900 }
28901
28902 var r = bits % 26;
28903 var s = Math.min((bits - r) / 26, this.length);
28904 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28905 var maskedWords = extended;
28906
28907 h -= s;
28908 h = Math.max(0, h);
28909
28910 // Extended mode, copy masked part
28911 if (maskedWords) {
28912 for (var i = 0; i < s; i++) {
28913 maskedWords.words[i] = this.words[i];
28914 }
28915 maskedWords.length = s;
28916 }
28917
28918 if (s === 0) {
28919 // No-op, we should not move anything at all
28920 } else if (this.length > s) {
28921 this.length -= s;
28922 for (i = 0; i < this.length; i++) {
28923 this.words[i] = this.words[i + s];
28924 }
28925 } else {
28926 this.words[0] = 0;
28927 this.length = 1;
28928 }
28929
28930 var carry = 0;
28931 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28932 var word = this.words[i] | 0;
28933 this.words[i] = (carry << (26 - r)) | (word >>> r);
28934 carry = word & mask;
28935 }
28936
28937 // Push carried bits as a mask
28938 if (maskedWords && carry !== 0) {
28939 maskedWords.words[maskedWords.length++] = carry;
28940 }
28941
28942 if (this.length === 0) {
28943 this.words[0] = 0;
28944 this.length = 1;
28945 }
28946
28947 return this.strip();
28948 };
28949
28950 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28951 // TODO(indutny): implement me
28952 assert(this.negative === 0);
28953 return this.iushrn(bits, hint, extended);
28954 };
28955
28956 // Shift-left
28957 BN.prototype.shln = function shln (bits) {
28958 return this.clone().ishln(bits);
28959 };
28960
28961 BN.prototype.ushln = function ushln (bits) {
28962 return this.clone().iushln(bits);
28963 };
28964
28965 // Shift-right
28966 BN.prototype.shrn = function shrn (bits) {
28967 return this.clone().ishrn(bits);
28968 };
28969
28970 BN.prototype.ushrn = function ushrn (bits) {
28971 return this.clone().iushrn(bits);
28972 };
28973
28974 // Test if n bit is set
28975 BN.prototype.testn = function testn (bit) {
28976 assert(typeof bit === 'number' && bit >= 0);
28977 var r = bit % 26;
28978 var s = (bit - r) / 26;
28979 var q = 1 << r;
28980
28981 // Fast case: bit is much higher than all existing words
28982 if (this.length <= s) return false;
28983
28984 // Check bit and return
28985 var w = this.words[s];
28986
28987 return !!(w & q);
28988 };
28989
28990 // Return only lowers bits of number (in-place)
28991 BN.prototype.imaskn = function imaskn (bits) {
28992 assert(typeof bits === 'number' && bits >= 0);
28993 var r = bits % 26;
28994 var s = (bits - r) / 26;
28995
28996 assert(this.negative === 0, 'imaskn works only with positive numbers');
28997
28998 if (this.length <= s) {
28999 return this;
29000 }
29001
29002 if (r !== 0) {
29003 s++;
29004 }
29005 this.length = Math.min(s, this.length);
29006
29007 if (r !== 0) {
29008 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
29009 this.words[this.length - 1] &= mask;
29010 }
29011
29012 return this.strip();
29013 };
29014
29015 // Return only lowers bits of number
29016 BN.prototype.maskn = function maskn (bits) {
29017 return this.clone().imaskn(bits);
29018 };
29019
29020 // Add plain number `num` to `this`
29021 BN.prototype.iaddn = function iaddn (num) {
29022 assert(typeof num === 'number');
29023 assert(num < 0x4000000);
29024 if (num < 0) return this.isubn(-num);
29025
29026 // Possible sign change
29027 if (this.negative !== 0) {
29028 if (this.length === 1 && (this.words[0] | 0) < num) {
29029 this.words[0] = num - (this.words[0] | 0);
29030 this.negative = 0;
29031 return this;
29032 }
29033
29034 this.negative = 0;
29035 this.isubn(num);
29036 this.negative = 1;
29037 return this;
29038 }
29039
29040 // Add without checks
29041 return this._iaddn(num);
29042 };
29043
29044 BN.prototype._iaddn = function _iaddn (num) {
29045 this.words[0] += num;
29046
29047 // Carry
29048 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29049 this.words[i] -= 0x4000000;
29050 if (i === this.length - 1) {
29051 this.words[i + 1] = 1;
29052 } else {
29053 this.words[i + 1]++;
29054 }
29055 }
29056 this.length = Math.max(this.length, i + 1);
29057
29058 return this;
29059 };
29060
29061 // Subtract plain number `num` from `this`
29062 BN.prototype.isubn = function isubn (num) {
29063 assert(typeof num === 'number');
29064 assert(num < 0x4000000);
29065 if (num < 0) return this.iaddn(-num);
29066
29067 if (this.negative !== 0) {
29068 this.negative = 0;
29069 this.iaddn(num);
29070 this.negative = 1;
29071 return this;
29072 }
29073
29074 this.words[0] -= num;
29075
29076 if (this.length === 1 && this.words[0] < 0) {
29077 this.words[0] = -this.words[0];
29078 this.negative = 1;
29079 } else {
29080 // Carry
29081 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29082 this.words[i] += 0x4000000;
29083 this.words[i + 1] -= 1;
29084 }
29085 }
29086
29087 return this.strip();
29088 };
29089
29090 BN.prototype.addn = function addn (num) {
29091 return this.clone().iaddn(num);
29092 };
29093
29094 BN.prototype.subn = function subn (num) {
29095 return this.clone().isubn(num);
29096 };
29097
29098 BN.prototype.iabs = function iabs () {
29099 this.negative = 0;
29100
29101 return this;
29102 };
29103
29104 BN.prototype.abs = function abs () {
29105 return this.clone().iabs();
29106 };
29107
29108 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29109 var len = num.length + shift;
29110 var i;
29111
29112 this._expand(len);
29113
29114 var w;
29115 var carry = 0;
29116 for (i = 0; i < num.length; i++) {
29117 w = (this.words[i + shift] | 0) + carry;
29118 var right = (num.words[i] | 0) * mul;
29119 w -= right & 0x3ffffff;
29120 carry = (w >> 26) - ((right / 0x4000000) | 0);
29121 this.words[i + shift] = w & 0x3ffffff;
29122 }
29123 for (; i < this.length - shift; i++) {
29124 w = (this.words[i + shift] | 0) + carry;
29125 carry = w >> 26;
29126 this.words[i + shift] = w & 0x3ffffff;
29127 }
29128
29129 if (carry === 0) return this.strip();
29130
29131 // Subtraction overflow
29132 assert(carry === -1);
29133 carry = 0;
29134 for (i = 0; i < this.length; i++) {
29135 w = -(this.words[i] | 0) + carry;
29136 carry = w >> 26;
29137 this.words[i] = w & 0x3ffffff;
29138 }
29139 this.negative = 1;
29140
29141 return this.strip();
29142 };
29143
29144 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29145 var shift = this.length - num.length;
29146
29147 var a = this.clone();
29148 var b = num;
29149
29150 // Normalize
29151 var bhi = b.words[b.length - 1] | 0;
29152 var bhiBits = this._countBits(bhi);
29153 shift = 26 - bhiBits;
29154 if (shift !== 0) {
29155 b = b.ushln(shift);
29156 a.iushln(shift);
29157 bhi = b.words[b.length - 1] | 0;
29158 }
29159
29160 // Initialize quotient
29161 var m = a.length - b.length;
29162 var q;
29163
29164 if (mode !== 'mod') {
29165 q = new BN(null);
29166 q.length = m + 1;
29167 q.words = new Array(q.length);
29168 for (var i = 0; i < q.length; i++) {
29169 q.words[i] = 0;
29170 }
29171 }
29172
29173 var diff = a.clone()._ishlnsubmul(b, 1, m);
29174 if (diff.negative === 0) {
29175 a = diff;
29176 if (q) {
29177 q.words[m] = 1;
29178 }
29179 }
29180
29181 for (var j = m - 1; j >= 0; j--) {
29182 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29183 (a.words[b.length + j - 1] | 0);
29184
29185 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29186 // (0x7ffffff)
29187 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
29188
29189 a._ishlnsubmul(b, qj, j);
29190 while (a.negative !== 0) {
29191 qj--;
29192 a.negative = 0;
29193 a._ishlnsubmul(b, 1, j);
29194 if (!a.isZero()) {
29195 a.negative ^= 1;
29196 }
29197 }
29198 if (q) {
29199 q.words[j] = qj;
29200 }
29201 }
29202 if (q) {
29203 q.strip();
29204 }
29205 a.strip();
29206
29207 // Denormalize
29208 if (mode !== 'div' && shift !== 0) {
29209 a.iushrn(shift);
29210 }
29211
29212 return {
29213 div: q || null,
29214 mod: a
29215 };
29216 };
29217
29218 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29219 // to `div` to request div only, or be absent to
29220 // request both div & mod
29221 // 2) `positive` is true if unsigned mod is requested
29222 BN.prototype.divmod = function divmod (num, mode, positive) {
29223 assert(!num.isZero());
29224
29225 if (this.isZero()) {
29226 return {
29227 div: new BN(0),
29228 mod: new BN(0)
29229 };
29230 }
29231
29232 var div, mod, res;
29233 if (this.negative !== 0 && num.negative === 0) {
29234 res = this.neg().divmod(num, mode);
29235
29236 if (mode !== 'mod') {
29237 div = res.div.neg();
29238 }
29239
29240 if (mode !== 'div') {
29241 mod = res.mod.neg();
29242 if (positive && mod.negative !== 0) {
29243 mod.iadd(num);
29244 }
29245 }
29246
29247 return {
29248 div: div,
29249 mod: mod
29250 };
29251 }
29252
29253 if (this.negative === 0 && num.negative !== 0) {
29254 res = this.divmod(num.neg(), mode);
29255
29256 if (mode !== 'mod') {
29257 div = res.div.neg();
29258 }
29259
29260 return {
29261 div: div,
29262 mod: res.mod
29263 };
29264 }
29265
29266 if ((this.negative & num.negative) !== 0) {
29267 res = this.neg().divmod(num.neg(), mode);
29268
29269 if (mode !== 'div') {
29270 mod = res.mod.neg();
29271 if (positive && mod.negative !== 0) {
29272 mod.isub(num);
29273 }
29274 }
29275
29276 return {
29277 div: res.div,
29278 mod: mod
29279 };
29280 }
29281
29282 // Both numbers are positive at this point
29283
29284 // Strip both numbers to approximate shift value
29285 if (num.length > this.length || this.cmp(num) < 0) {
29286 return {
29287 div: new BN(0),
29288 mod: this
29289 };
29290 }
29291
29292 // Very short reduction
29293 if (num.length === 1) {
29294 if (mode === 'div') {
29295 return {
29296 div: this.divn(num.words[0]),
29297 mod: null
29298 };
29299 }
29300
29301 if (mode === 'mod') {
29302 return {
29303 div: null,
29304 mod: new BN(this.modn(num.words[0]))
29305 };
29306 }
29307
29308 return {
29309 div: this.divn(num.words[0]),
29310 mod: new BN(this.modn(num.words[0]))
29311 };
29312 }
29313
29314 return this._wordDiv(num, mode);
29315 };
29316
29317 // Find `this` / `num`
29318 BN.prototype.div = function div (num) {
29319 return this.divmod(num, 'div', false).div;
29320 };
29321
29322 // Find `this` % `num`
29323 BN.prototype.mod = function mod (num) {
29324 return this.divmod(num, 'mod', false).mod;
29325 };
29326
29327 BN.prototype.umod = function umod (num) {
29328 return this.divmod(num, 'mod', true).mod;
29329 };
29330
29331 // Find Round(`this` / `num`)
29332 BN.prototype.divRound = function divRound (num) {
29333 var dm = this.divmod(num);
29334
29335 // Fast case - exact division
29336 if (dm.mod.isZero()) return dm.div;
29337
29338 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
29339
29340 var half = num.ushrn(1);
29341 var r2 = num.andln(1);
29342 var cmp = mod.cmp(half);
29343
29344 // Round down
29345 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
29346
29347 // Round up
29348 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29349 };
29350
29351 BN.prototype.modn = function modn (num) {
29352 assert(num <= 0x3ffffff);
29353 var p = (1 << 26) % num;
29354
29355 var acc = 0;
29356 for (var i = this.length - 1; i >= 0; i--) {
29357 acc = (p * acc + (this.words[i] | 0)) % num;
29358 }
29359
29360 return acc;
29361 };
29362
29363 // In-place division by number
29364 BN.prototype.idivn = function idivn (num) {
29365 assert(num <= 0x3ffffff);
29366
29367 var carry = 0;
29368 for (var i = this.length - 1; i >= 0; i--) {
29369 var w = (this.words[i] | 0) + carry * 0x4000000;
29370 this.words[i] = (w / num) | 0;
29371 carry = w % num;
29372 }
29373
29374 return this.strip();
29375 };
29376
29377 BN.prototype.divn = function divn (num) {
29378 return this.clone().idivn(num);
29379 };
29380
29381 BN.prototype.egcd = function egcd (p) {
29382 assert(p.negative === 0);
29383 assert(!p.isZero());
29384
29385 var x = this;
29386 var y = p.clone();
29387
29388 if (x.negative !== 0) {
29389 x = x.umod(p);
29390 } else {
29391 x = x.clone();
29392 }
29393
29394 // A * x + B * y = x
29395 var A = new BN(1);
29396 var B = new BN(0);
29397
29398 // C * x + D * y = y
29399 var C = new BN(0);
29400 var D = new BN(1);
29401
29402 var g = 0;
29403
29404 while (x.isEven() && y.isEven()) {
29405 x.iushrn(1);
29406 y.iushrn(1);
29407 ++g;
29408 }
29409
29410 var yp = y.clone();
29411 var xp = x.clone();
29412
29413 while (!x.isZero()) {
29414 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29415 if (i > 0) {
29416 x.iushrn(i);
29417 while (i-- > 0) {
29418 if (A.isOdd() || B.isOdd()) {
29419 A.iadd(yp);
29420 B.isub(xp);
29421 }
29422
29423 A.iushrn(1);
29424 B.iushrn(1);
29425 }
29426 }
29427
29428 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29429 if (j > 0) {
29430 y.iushrn(j);
29431 while (j-- > 0) {
29432 if (C.isOdd() || D.isOdd()) {
29433 C.iadd(yp);
29434 D.isub(xp);
29435 }
29436
29437 C.iushrn(1);
29438 D.iushrn(1);
29439 }
29440 }
29441
29442 if (x.cmp(y) >= 0) {
29443 x.isub(y);
29444 A.isub(C);
29445 B.isub(D);
29446 } else {
29447 y.isub(x);
29448 C.isub(A);
29449 D.isub(B);
29450 }
29451 }
29452
29453 return {
29454 a: C,
29455 b: D,
29456 gcd: y.iushln(g)
29457 };
29458 };
29459
29460 // This is reduced incarnation of the binary EEA
29461 // above, designated to invert members of the
29462 // _prime_ fields F(p) at a maximal speed
29463 BN.prototype._invmp = function _invmp (p) {
29464 assert(p.negative === 0);
29465 assert(!p.isZero());
29466
29467 var a = this;
29468 var b = p.clone();
29469
29470 if (a.negative !== 0) {
29471 a = a.umod(p);
29472 } else {
29473 a = a.clone();
29474 }
29475
29476 var x1 = new BN(1);
29477 var x2 = new BN(0);
29478
29479 var delta = b.clone();
29480
29481 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29482 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29483 if (i > 0) {
29484 a.iushrn(i);
29485 while (i-- > 0) {
29486 if (x1.isOdd()) {
29487 x1.iadd(delta);
29488 }
29489
29490 x1.iushrn(1);
29491 }
29492 }
29493
29494 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29495 if (j > 0) {
29496 b.iushrn(j);
29497 while (j-- > 0) {
29498 if (x2.isOdd()) {
29499 x2.iadd(delta);
29500 }
29501
29502 x2.iushrn(1);
29503 }
29504 }
29505
29506 if (a.cmp(b) >= 0) {
29507 a.isub(b);
29508 x1.isub(x2);
29509 } else {
29510 b.isub(a);
29511 x2.isub(x1);
29512 }
29513 }
29514
29515 var res;
29516 if (a.cmpn(1) === 0) {
29517 res = x1;
29518 } else {
29519 res = x2;
29520 }
29521
29522 if (res.cmpn(0) < 0) {
29523 res.iadd(p);
29524 }
29525
29526 return res;
29527 };
29528
29529 BN.prototype.gcd = function gcd (num) {
29530 if (this.isZero()) return num.abs();
29531 if (num.isZero()) return this.abs();
29532
29533 var a = this.clone();
29534 var b = num.clone();
29535 a.negative = 0;
29536 b.negative = 0;
29537
29538 // Remove common factor of two
29539 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29540 a.iushrn(1);
29541 b.iushrn(1);
29542 }
29543
29544 do {
29545 while (a.isEven()) {
29546 a.iushrn(1);
29547 }
29548 while (b.isEven()) {
29549 b.iushrn(1);
29550 }
29551
29552 var r = a.cmp(b);
29553 if (r < 0) {
29554 // Swap `a` and `b` to make `a` always bigger than `b`
29555 var t = a;
29556 a = b;
29557 b = t;
29558 } else if (r === 0 || b.cmpn(1) === 0) {
29559 break;
29560 }
29561
29562 a.isub(b);
29563 } while (true);
29564
29565 return b.iushln(shift);
29566 };
29567
29568 // Invert number in the field F(num)
29569 BN.prototype.invm = function invm (num) {
29570 return this.egcd(num).a.umod(num);
29571 };
29572
29573 BN.prototype.isEven = function isEven () {
29574 return (this.words[0] & 1) === 0;
29575 };
29576
29577 BN.prototype.isOdd = function isOdd () {
29578 return (this.words[0] & 1) === 1;
29579 };
29580
29581 // And first word and num
29582 BN.prototype.andln = function andln (num) {
29583 return this.words[0] & num;
29584 };
29585
29586 // Increment at the bit position in-line
29587 BN.prototype.bincn = function bincn (bit) {
29588 assert(typeof bit === 'number');
29589 var r = bit % 26;
29590 var s = (bit - r) / 26;
29591 var q = 1 << r;
29592
29593 // Fast case: bit is much higher than all existing words
29594 if (this.length <= s) {
29595 this._expand(s + 1);
29596 this.words[s] |= q;
29597 return this;
29598 }
29599
29600 // Add bit and propagate, if needed
29601 var carry = q;
29602 for (var i = s; carry !== 0 && i < this.length; i++) {
29603 var w = this.words[i] | 0;
29604 w += carry;
29605 carry = w >>> 26;
29606 w &= 0x3ffffff;
29607 this.words[i] = w;
29608 }
29609 if (carry !== 0) {
29610 this.words[i] = carry;
29611 this.length++;
29612 }
29613 return this;
29614 };
29615
29616 BN.prototype.isZero = function isZero () {
29617 return this.length === 1 && this.words[0] === 0;
29618 };
29619
29620 BN.prototype.cmpn = function cmpn (num) {
29621 var negative = num < 0;
29622
29623 if (this.negative !== 0 && !negative) return -1;
29624 if (this.negative === 0 && negative) return 1;
29625
29626 this.strip();
29627
29628 var res;
29629 if (this.length > 1) {
29630 res = 1;
29631 } else {
29632 if (negative) {
29633 num = -num;
29634 }
29635
29636 assert(num <= 0x3ffffff, 'Number is too big');
29637
29638 var w = this.words[0] | 0;
29639 res = w === num ? 0 : w < num ? -1 : 1;
29640 }
29641 if (this.negative !== 0) return -res | 0;
29642 return res;
29643 };
29644
29645 // Compare two numbers and return:
29646 // 1 - if `this` > `num`
29647 // 0 - if `this` == `num`
29648 // -1 - if `this` < `num`
29649 BN.prototype.cmp = function cmp (num) {
29650 if (this.negative !== 0 && num.negative === 0) return -1;
29651 if (this.negative === 0 && num.negative !== 0) return 1;
29652
29653 var res = this.ucmp(num);
29654 if (this.negative !== 0) return -res | 0;
29655 return res;
29656 };
29657
29658 // Unsigned comparison
29659 BN.prototype.ucmp = function ucmp (num) {
29660 // At this point both numbers have the same sign
29661 if (this.length > num.length) return 1;
29662 if (this.length < num.length) return -1;
29663
29664 var res = 0;
29665 for (var i = this.length - 1; i >= 0; i--) {
29666 var a = this.words[i] | 0;
29667 var b = num.words[i] | 0;
29668
29669 if (a === b) continue;
29670 if (a < b) {
29671 res = -1;
29672 } else if (a > b) {
29673 res = 1;
29674 }
29675 break;
29676 }
29677 return res;
29678 };
29679
29680 BN.prototype.gtn = function gtn (num) {
29681 return this.cmpn(num) === 1;
29682 };
29683
29684 BN.prototype.gt = function gt (num) {
29685 return this.cmp(num) === 1;
29686 };
29687
29688 BN.prototype.gten = function gten (num) {
29689 return this.cmpn(num) >= 0;
29690 };
29691
29692 BN.prototype.gte = function gte (num) {
29693 return this.cmp(num) >= 0;
29694 };
29695
29696 BN.prototype.ltn = function ltn (num) {
29697 return this.cmpn(num) === -1;
29698 };
29699
29700 BN.prototype.lt = function lt (num) {
29701 return this.cmp(num) === -1;
29702 };
29703
29704 BN.prototype.lten = function lten (num) {
29705 return this.cmpn(num) <= 0;
29706 };
29707
29708 BN.prototype.lte = function lte (num) {
29709 return this.cmp(num) <= 0;
29710 };
29711
29712 BN.prototype.eqn = function eqn (num) {
29713 return this.cmpn(num) === 0;
29714 };
29715
29716 BN.prototype.eq = function eq (num) {
29717 return this.cmp(num) === 0;
29718 };
29719
29720 //
29721 // A reduce context, could be using montgomery or something better, depending
29722 // on the `m` itself.
29723 //
29724 BN.red = function red (num) {
29725 return new Red(num);
29726 };
29727
29728 BN.prototype.toRed = function toRed (ctx) {
29729 assert(!this.red, 'Already a number in reduction context');
29730 assert(this.negative === 0, 'red works only with positives');
29731 return ctx.convertTo(this)._forceRed(ctx);
29732 };
29733
29734 BN.prototype.fromRed = function fromRed () {
29735 assert(this.red, 'fromRed works only with numbers in reduction context');
29736 return this.red.convertFrom(this);
29737 };
29738
29739 BN.prototype._forceRed = function _forceRed (ctx) {
29740 this.red = ctx;
29741 return this;
29742 };
29743
29744 BN.prototype.forceRed = function forceRed (ctx) {
29745 assert(!this.red, 'Already a number in reduction context');
29746 return this._forceRed(ctx);
29747 };
29748
29749 BN.prototype.redAdd = function redAdd (num) {
29750 assert(this.red, 'redAdd works only with red numbers');
29751 return this.red.add(this, num);
29752 };
29753
29754 BN.prototype.redIAdd = function redIAdd (num) {
29755 assert(this.red, 'redIAdd works only with red numbers');
29756 return this.red.iadd(this, num);
29757 };
29758
29759 BN.prototype.redSub = function redSub (num) {
29760 assert(this.red, 'redSub works only with red numbers');
29761 return this.red.sub(this, num);
29762 };
29763
29764 BN.prototype.redISub = function redISub (num) {
29765 assert(this.red, 'redISub works only with red numbers');
29766 return this.red.isub(this, num);
29767 };
29768
29769 BN.prototype.redShl = function redShl (num) {
29770 assert(this.red, 'redShl works only with red numbers');
29771 return this.red.shl(this, num);
29772 };
29773
29774 BN.prototype.redMul = function redMul (num) {
29775 assert(this.red, 'redMul works only with red numbers');
29776 this.red._verify2(this, num);
29777 return this.red.mul(this, num);
29778 };
29779
29780 BN.prototype.redIMul = function redIMul (num) {
29781 assert(this.red, 'redMul works only with red numbers');
29782 this.red._verify2(this, num);
29783 return this.red.imul(this, num);
29784 };
29785
29786 BN.prototype.redSqr = function redSqr () {
29787 assert(this.red, 'redSqr works only with red numbers');
29788 this.red._verify1(this);
29789 return this.red.sqr(this);
29790 };
29791
29792 BN.prototype.redISqr = function redISqr () {
29793 assert(this.red, 'redISqr works only with red numbers');
29794 this.red._verify1(this);
29795 return this.red.isqr(this);
29796 };
29797
29798 // Square root over p
29799 BN.prototype.redSqrt = function redSqrt () {
29800 assert(this.red, 'redSqrt works only with red numbers');
29801 this.red._verify1(this);
29802 return this.red.sqrt(this);
29803 };
29804
29805 BN.prototype.redInvm = function redInvm () {
29806 assert(this.red, 'redInvm works only with red numbers');
29807 this.red._verify1(this);
29808 return this.red.invm(this);
29809 };
29810
29811 // Return negative clone of `this` % `red modulo`
29812 BN.prototype.redNeg = function redNeg () {
29813 assert(this.red, 'redNeg works only with red numbers');
29814 this.red._verify1(this);
29815 return this.red.neg(this);
29816 };
29817
29818 BN.prototype.redPow = function redPow (num) {
29819 assert(this.red && !num.red, 'redPow(normalNum)');
29820 this.red._verify1(this);
29821 return this.red.pow(this, num);
29822 };
29823
29824 // Prime numbers with efficient reduction
29825 var primes = {
29826 k256: null,
29827 p224: null,
29828 p192: null,
29829 p25519: null
29830 };
29831
29832 // Pseudo-Mersenne prime
29833 function MPrime (name, p) {
29834 // P = 2 ^ N - K
29835 this.name = name;
29836 this.p = new BN(p, 16);
29837 this.n = this.p.bitLength();
29838 this.k = new BN(1).iushln(this.n).isub(this.p);
29839
29840 this.tmp = this._tmp();
29841 }
29842
29843 MPrime.prototype._tmp = function _tmp () {
29844 var tmp = new BN(null);
29845 tmp.words = new Array(Math.ceil(this.n / 13));
29846 return tmp;
29847 };
29848
29849 MPrime.prototype.ireduce = function ireduce (num) {
29850 // Assumes that `num` is less than `P^2`
29851 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29852 var r = num;
29853 var rlen;
29854
29855 do {
29856 this.split(r, this.tmp);
29857 r = this.imulK(r);
29858 r = r.iadd(this.tmp);
29859 rlen = r.bitLength();
29860 } while (rlen > this.n);
29861
29862 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29863 if (cmp === 0) {
29864 r.words[0] = 0;
29865 r.length = 1;
29866 } else if (cmp > 0) {
29867 r.isub(this.p);
29868 } else {
29869 r.strip();
29870 }
29871
29872 return r;
29873 };
29874
29875 MPrime.prototype.split = function split (input, out) {
29876 input.iushrn(this.n, 0, out);
29877 };
29878
29879 MPrime.prototype.imulK = function imulK (num) {
29880 return num.imul(this.k);
29881 };
29882
29883 function K256 () {
29884 MPrime.call(
29885 this,
29886 'k256',
29887 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29888 }
29889 inherits(K256, MPrime);
29890
29891 K256.prototype.split = function split (input, output) {
29892 // 256 = 9 * 26 + 22
29893 var mask = 0x3fffff;
29894
29895 var outLen = Math.min(input.length, 9);
29896 for (var i = 0; i < outLen; i++) {
29897 output.words[i] = input.words[i];
29898 }
29899 output.length = outLen;
29900
29901 if (input.length <= 9) {
29902 input.words[0] = 0;
29903 input.length = 1;
29904 return;
29905 }
29906
29907 // Shift by 9 limbs
29908 var prev = input.words[9];
29909 output.words[output.length++] = prev & mask;
29910
29911 for (i = 10; i < input.length; i++) {
29912 var next = input.words[i] | 0;
29913 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29914 prev = next;
29915 }
29916 prev >>>= 22;
29917 input.words[i - 10] = prev;
29918 if (prev === 0 && input.length > 10) {
29919 input.length -= 10;
29920 } else {
29921 input.length -= 9;
29922 }
29923 };
29924
29925 K256.prototype.imulK = function imulK (num) {
29926 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29927 num.words[num.length] = 0;
29928 num.words[num.length + 1] = 0;
29929 num.length += 2;
29930
29931 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29932 var lo = 0;
29933 for (var i = 0; i < num.length; i++) {
29934 var w = num.words[i] | 0;
29935 lo += w * 0x3d1;
29936 num.words[i] = lo & 0x3ffffff;
29937 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29938 }
29939
29940 // Fast length reduction
29941 if (num.words[num.length - 1] === 0) {
29942 num.length--;
29943 if (num.words[num.length - 1] === 0) {
29944 num.length--;
29945 }
29946 }
29947 return num;
29948 };
29949
29950 function P224 () {
29951 MPrime.call(
29952 this,
29953 'p224',
29954 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29955 }
29956 inherits(P224, MPrime);
29957
29958 function P192 () {
29959 MPrime.call(
29960 this,
29961 'p192',
29962 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29963 }
29964 inherits(P192, MPrime);
29965
29966 function P25519 () {
29967 // 2 ^ 255 - 19
29968 MPrime.call(
29969 this,
29970 '25519',
29971 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29972 }
29973 inherits(P25519, MPrime);
29974
29975 P25519.prototype.imulK = function imulK (num) {
29976 // K = 0x13
29977 var carry = 0;
29978 for (var i = 0; i < num.length; i++) {
29979 var hi = (num.words[i] | 0) * 0x13 + carry;
29980 var lo = hi & 0x3ffffff;
29981 hi >>>= 26;
29982
29983 num.words[i] = lo;
29984 carry = hi;
29985 }
29986 if (carry !== 0) {
29987 num.words[num.length++] = carry;
29988 }
29989 return num;
29990 };
29991
29992 // Exported mostly for testing purposes, use plain name instead
29993 BN._prime = function prime (name) {
29994 // Cached version of prime
29995 if (primes[name]) return primes[name];
29996
29997 var prime;
29998 if (name === 'k256') {
29999 prime = new K256();
30000 } else if (name === 'p224') {
30001 prime = new P224();
30002 } else if (name === 'p192') {
30003 prime = new P192();
30004 } else if (name === 'p25519') {
30005 prime = new P25519();
30006 } else {
30007 throw new Error('Unknown prime ' + name);
30008 }
30009 primes[name] = prime;
30010
30011 return prime;
30012 };
30013
30014 //
30015 // Base reduction engine
30016 //
30017 function Red (m) {
30018 if (typeof m === 'string') {
30019 var prime = BN._prime(m);
30020 this.m = prime.p;
30021 this.prime = prime;
30022 } else {
30023 assert(m.gtn(1), 'modulus must be greater than 1');
30024 this.m = m;
30025 this.prime = null;
30026 }
30027 }
30028
30029 Red.prototype._verify1 = function _verify1 (a) {
30030 assert(a.negative === 0, 'red works only with positives');
30031 assert(a.red, 'red works only with red numbers');
30032 };
30033
30034 Red.prototype._verify2 = function _verify2 (a, b) {
30035 assert((a.negative | b.negative) === 0, 'red works only with positives');
30036 assert(a.red && a.red === b.red,
30037 'red works only with red numbers');
30038 };
30039
30040 Red.prototype.imod = function imod (a) {
30041 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
30042 return a.umod(this.m)._forceRed(this);
30043 };
30044
30045 Red.prototype.neg = function neg (a) {
30046 if (a.isZero()) {
30047 return a.clone();
30048 }
30049
30050 return this.m.sub(a)._forceRed(this);
30051 };
30052
30053 Red.prototype.add = function add (a, b) {
30054 this._verify2(a, b);
30055
30056 var res = a.add(b);
30057 if (res.cmp(this.m) >= 0) {
30058 res.isub(this.m);
30059 }
30060 return res._forceRed(this);
30061 };
30062
30063 Red.prototype.iadd = function iadd (a, b) {
30064 this._verify2(a, b);
30065
30066 var res = a.iadd(b);
30067 if (res.cmp(this.m) >= 0) {
30068 res.isub(this.m);
30069 }
30070 return res;
30071 };
30072
30073 Red.prototype.sub = function sub (a, b) {
30074 this._verify2(a, b);
30075
30076 var res = a.sub(b);
30077 if (res.cmpn(0) < 0) {
30078 res.iadd(this.m);
30079 }
30080 return res._forceRed(this);
30081 };
30082
30083 Red.prototype.isub = function isub (a, b) {
30084 this._verify2(a, b);
30085
30086 var res = a.isub(b);
30087 if (res.cmpn(0) < 0) {
30088 res.iadd(this.m);
30089 }
30090 return res;
30091 };
30092
30093 Red.prototype.shl = function shl (a, num) {
30094 this._verify1(a);
30095 return this.imod(a.ushln(num));
30096 };
30097
30098 Red.prototype.imul = function imul (a, b) {
30099 this._verify2(a, b);
30100 return this.imod(a.imul(b));
30101 };
30102
30103 Red.prototype.mul = function mul (a, b) {
30104 this._verify2(a, b);
30105 return this.imod(a.mul(b));
30106 };
30107
30108 Red.prototype.isqr = function isqr (a) {
30109 return this.imul(a, a.clone());
30110 };
30111
30112 Red.prototype.sqr = function sqr (a) {
30113 return this.mul(a, a);
30114 };
30115
30116 Red.prototype.sqrt = function sqrt (a) {
30117 if (a.isZero()) return a.clone();
30118
30119 var mod3 = this.m.andln(3);
30120 assert(mod3 % 2 === 1);
30121
30122 // Fast case
30123 if (mod3 === 3) {
30124 var pow = this.m.add(new BN(1)).iushrn(2);
30125 return this.pow(a, pow);
30126 }
30127
30128 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30129 //
30130 // Find Q and S, that Q * 2 ^ S = (P - 1)
30131 var q = this.m.subn(1);
30132 var s = 0;
30133 while (!q.isZero() && q.andln(1) === 0) {
30134 s++;
30135 q.iushrn(1);
30136 }
30137 assert(!q.isZero());
30138
30139 var one = new BN(1).toRed(this);
30140 var nOne = one.redNeg();
30141
30142 // Find quadratic non-residue
30143 // NOTE: Max is such because of generalized Riemann hypothesis.
30144 var lpow = this.m.subn(1).iushrn(1);
30145 var z = this.m.bitLength();
30146 z = new BN(2 * z * z).toRed(this);
30147
30148 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30149 z.redIAdd(nOne);
30150 }
30151
30152 var c = this.pow(z, q);
30153 var r = this.pow(a, q.addn(1).iushrn(1));
30154 var t = this.pow(a, q);
30155 var m = s;
30156 while (t.cmp(one) !== 0) {
30157 var tmp = t;
30158 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30159 tmp = tmp.redSqr();
30160 }
30161 assert(i < m);
30162 var b = this.pow(c, new BN(1).iushln(m - i - 1));
30163
30164 r = r.redMul(b);
30165 c = b.redSqr();
30166 t = t.redMul(c);
30167 m = i;
30168 }
30169
30170 return r;
30171 };
30172
30173 Red.prototype.invm = function invm (a) {
30174 var inv = a._invmp(this.m);
30175 if (inv.negative !== 0) {
30176 inv.negative = 0;
30177 return this.imod(inv).redNeg();
30178 } else {
30179 return this.imod(inv);
30180 }
30181 };
30182
30183 Red.prototype.pow = function pow (a, num) {
30184 if (num.isZero()) return new BN(1);
30185 if (num.cmpn(1) === 0) return a.clone();
30186
30187 var windowSize = 4;
30188 var wnd = new Array(1 << windowSize);
30189 wnd[0] = new BN(1).toRed(this);
30190 wnd[1] = a;
30191 for (var i = 2; i < wnd.length; i++) {
30192 wnd[i] = this.mul(wnd[i - 1], a);
30193 }
30194
30195 var res = wnd[0];
30196 var current = 0;
30197 var currentLen = 0;
30198 var start = num.bitLength() % 26;
30199 if (start === 0) {
30200 start = 26;
30201 }
30202
30203 for (i = num.length - 1; i >= 0; i--) {
30204 var word = num.words[i];
30205 for (var j = start - 1; j >= 0; j--) {
30206 var bit = (word >> j) & 1;
30207 if (res !== wnd[0]) {
30208 res = this.sqr(res);
30209 }
30210
30211 if (bit === 0 && current === 0) {
30212 currentLen = 0;
30213 continue;
30214 }
30215
30216 current <<= 1;
30217 current |= bit;
30218 currentLen++;
30219 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
30220
30221 res = this.mul(res, wnd[current]);
30222 currentLen = 0;
30223 current = 0;
30224 }
30225 start = 26;
30226 }
30227
30228 return res;
30229 };
30230
30231 Red.prototype.convertTo = function convertTo (num) {
30232 var r = num.umod(this.m);
30233
30234 return r === num ? r.clone() : r;
30235 };
30236
30237 Red.prototype.convertFrom = function convertFrom (num) {
30238 var res = num.clone();
30239 res.red = null;
30240 return res;
30241 };
30242
30243 //
30244 // Montgomery method engine
30245 //
30246
30247 BN.mont = function mont (num) {
30248 return new Mont(num);
30249 };
30250
30251 function Mont (m) {
30252 Red.call(this, m);
30253
30254 this.shift = this.m.bitLength();
30255 if (this.shift % 26 !== 0) {
30256 this.shift += 26 - (this.shift % 26);
30257 }
30258
30259 this.r = new BN(1).iushln(this.shift);
30260 this.r2 = this.imod(this.r.sqr());
30261 this.rinv = this.r._invmp(this.m);
30262
30263 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30264 this.minv = this.minv.umod(this.r);
30265 this.minv = this.r.sub(this.minv);
30266 }
30267 inherits(Mont, Red);
30268
30269 Mont.prototype.convertTo = function convertTo (num) {
30270 return this.imod(num.ushln(this.shift));
30271 };
30272
30273 Mont.prototype.convertFrom = function convertFrom (num) {
30274 var r = this.imod(num.mul(this.rinv));
30275 r.red = null;
30276 return r;
30277 };
30278
30279 Mont.prototype.imul = function imul (a, b) {
30280 if (a.isZero() || b.isZero()) {
30281 a.words[0] = 0;
30282 a.length = 1;
30283 return a;
30284 }
30285
30286 var t = a.imul(b);
30287 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30288 var u = t.isub(c).iushrn(this.shift);
30289 var res = u;
30290
30291 if (u.cmp(this.m) >= 0) {
30292 res = u.isub(this.m);
30293 } else if (u.cmpn(0) < 0) {
30294 res = u.iadd(this.m);
30295 }
30296
30297 return res._forceRed(this);
30298 };
30299
30300 Mont.prototype.mul = function mul (a, b) {
30301 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
30302
30303 var t = a.mul(b);
30304 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30305 var u = t.isub(c).iushrn(this.shift);
30306 var res = u;
30307 if (u.cmp(this.m) >= 0) {
30308 res = u.isub(this.m);
30309 } else if (u.cmpn(0) < 0) {
30310 res = u.iadd(this.m);
30311 }
30312
30313 return res._forceRed(this);
30314 };
30315
30316 Mont.prototype.invm = function invm (a) {
30317 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30318 var res = this.imod(a._invmp(this.m).mul(this.r2));
30319 return res._forceRed(this);
30320 };
30321 })(typeof module === 'undefined' || module, this);
30322
30323 },{}],34:[function(require,module,exports){
30324 var r;
30325
30326 module.exports = function rand(len) {
30327 if (!r)
30328 r = new Rand(null);
30329
30330 return r.generate(len);
30331 };
30332
30333 function Rand(rand) {
30334 this.rand = rand;
30335 }
30336 module.exports.Rand = Rand;
30337
30338 Rand.prototype.generate = function generate(len) {
30339 return this._rand(len);
30340 };
30341
30342 if (typeof self === 'object') {
30343 if (self.crypto && self.crypto.getRandomValues) {
30344 // Modern browsers
30345 Rand.prototype._rand = function _rand(n) {
30346 var arr = new Uint8Array(n);
30347 self.crypto.getRandomValues(arr);
30348 return arr;
30349 };
30350 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30351 // IE
30352 Rand.prototype._rand = function _rand(n) {
30353 var arr = new Uint8Array(n);
30354 self.msCrypto.getRandomValues(arr);
30355 return arr;
30356 };
30357 } else {
30358 // Old junk
30359 Rand.prototype._rand = function() {
30360 throw new Error('Not implemented yet');
30361 };
30362 }
30363 } else {
30364 // Node.js or Web worker with no crypto support
30365 try {
30366 var crypto = require('crypto');
30367
30368 Rand.prototype._rand = function _rand(n) {
30369 return crypto.randomBytes(n);
30370 };
30371 } catch (e) {
30372 // Emulate crypto API using randy
30373 Rand.prototype._rand = function _rand(n) {
30374 var res = new Uint8Array(n);
30375 for (var i = 0; i < res.length; i++)
30376 res[i] = this.rand.getByte();
30377 return res;
30378 };
30379 }
30380 }
30381
30382 },{"crypto":3}],35:[function(require,module,exports){
30383 (function (Buffer){
30384 var Transform = require('stream').Transform
30385 var inherits = require('inherits')
30386 var StringDecoder = require('string_decoder').StringDecoder
30387 module.exports = CipherBase
30388 inherits(CipherBase, Transform)
30389 function CipherBase (hashMode) {
30390 Transform.call(this)
30391 this.hashMode = typeof hashMode === 'string'
30392 if (this.hashMode) {
30393 this[hashMode] = this._finalOrDigest
30394 } else {
30395 this.final = this._finalOrDigest
30396 }
30397 this._decoder = null
30398 this._encoding = null
30399 }
30400 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30401 if (typeof data === 'string') {
30402 data = new Buffer(data, inputEnc)
30403 }
30404 var outData = this._update(data)
30405 if (this.hashMode) {
30406 return this
30407 }
30408 if (outputEnc) {
30409 outData = this._toString(outData, outputEnc)
30410 }
30411 return outData
30412 }
30413
30414 CipherBase.prototype.setAutoPadding = function () {}
30415
30416 CipherBase.prototype.getAuthTag = function () {
30417 throw new Error('trying to get auth tag in unsupported state')
30418 }
30419
30420 CipherBase.prototype.setAuthTag = function () {
30421 throw new Error('trying to set auth tag in unsupported state')
30422 }
30423
30424 CipherBase.prototype.setAAD = function () {
30425 throw new Error('trying to set aad in unsupported state')
30426 }
30427
30428 CipherBase.prototype._transform = function (data, _, next) {
30429 var err
30430 try {
30431 if (this.hashMode) {
30432 this._update(data)
30433 } else {
30434 this.push(this._update(data))
30435 }
30436 } catch (e) {
30437 err = e
30438 } finally {
30439 next(err)
30440 }
30441 }
30442 CipherBase.prototype._flush = function (done) {
30443 var err
30444 try {
30445 this.push(this._final())
30446 } catch (e) {
30447 err = e
30448 } finally {
30449 done(err)
30450 }
30451 }
30452 CipherBase.prototype._finalOrDigest = function (outputEnc) {
30453 var outData = this._final() || new Buffer('')
30454 if (outputEnc) {
30455 outData = this._toString(outData, outputEnc, true)
30456 }
30457 return outData
30458 }
30459
30460 CipherBase.prototype._toString = function (value, enc, fin) {
30461 if (!this._decoder) {
30462 this._decoder = new StringDecoder(enc)
30463 this._encoding = enc
30464 }
30465 if (this._encoding !== enc) {
30466 throw new Error('can\'t switch encodings')
30467 }
30468 var out = this._decoder.write(value)
30469 if (fin) {
30470 out += this._decoder.end()
30471 }
30472 return out
30473 }
30474
30475 }).call(this,require("buffer").Buffer)
30476 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30477 (function (Buffer){
30478 'use strict';
30479 var inherits = require('inherits')
30480 var md5 = require('./md5')
30481 var rmd160 = require('ripemd160')
30482 var sha = require('sha.js')
30483
30484 var Base = require('cipher-base')
30485
30486 function HashNoConstructor(hash) {
30487 Base.call(this, 'digest')
30488
30489 this._hash = hash
30490 this.buffers = []
30491 }
30492
30493 inherits(HashNoConstructor, Base)
30494
30495 HashNoConstructor.prototype._update = function (data) {
30496 this.buffers.push(data)
30497 }
30498
30499 HashNoConstructor.prototype._final = function () {
30500 var buf = Buffer.concat(this.buffers)
30501 var r = this._hash(buf)
30502 this.buffers = null
30503
30504 return r
30505 }
30506
30507 function Hash(hash) {
30508 Base.call(this, 'digest')
30509
30510 this._hash = hash
30511 }
30512
30513 inherits(Hash, Base)
30514
30515 Hash.prototype._update = function (data) {
30516 this._hash.update(data)
30517 }
30518
30519 Hash.prototype._final = function () {
30520 return this._hash.digest()
30521 }
30522
30523 module.exports = function createHash (alg) {
30524 alg = alg.toLowerCase()
30525 if ('md5' === alg) return new HashNoConstructor(md5)
30526 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30527
30528 return new Hash(sha(alg))
30529 }
30530
30531 }).call(this,require("buffer").Buffer)
30532 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30533 (function (Buffer){
30534 'use strict';
30535 var intSize = 4;
30536 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30537 var chrsz = 8;
30538
30539 function toArray(buf, bigEndian) {
30540 if ((buf.length % intSize) !== 0) {
30541 var len = buf.length + (intSize - (buf.length % intSize));
30542 buf = Buffer.concat([buf, zeroBuffer], len);
30543 }
30544
30545 var arr = [];
30546 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30547 for (var i = 0; i < buf.length; i += intSize) {
30548 arr.push(fn.call(buf, i));
30549 }
30550 return arr;
30551 }
30552
30553 function toBuffer(arr, size, bigEndian) {
30554 var buf = new Buffer(size);
30555 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30556 for (var i = 0; i < arr.length; i++) {
30557 fn.call(buf, arr[i], i * 4, true);
30558 }
30559 return buf;
30560 }
30561
30562 function hash(buf, fn, hashSize, bigEndian) {
30563 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30564 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30565 return toBuffer(arr, hashSize, bigEndian);
30566 }
30567 exports.hash = hash;
30568 }).call(this,require("buffer").Buffer)
30569 },{"buffer":5}],38:[function(require,module,exports){
30570 'use strict';
30571 /*
30572 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30573 * Digest Algorithm, as defined in RFC 1321.
30574 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30575 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30576 * Distributed under the BSD License
30577 * See http://pajhome.org.uk/crypt/md5 for more info.
30578 */
30579
30580 var helpers = require('./helpers');
30581
30582 /*
30583 * Calculate the MD5 of an array of little-endian words, and a bit length
30584 */
30585 function core_md5(x, len)
30586 {
30587 /* append padding */
30588 x[len >> 5] |= 0x80 << ((len) % 32);
30589 x[(((len + 64) >>> 9) << 4) + 14] = len;
30590
30591 var a = 1732584193;
30592 var b = -271733879;
30593 var c = -1732584194;
30594 var d = 271733878;
30595
30596 for(var i = 0; i < x.length; i += 16)
30597 {
30598 var olda = a;
30599 var oldb = b;
30600 var oldc = c;
30601 var oldd = d;
30602
30603 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30604 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30605 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30606 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30607 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30608 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30609 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30610 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30611 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30612 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30613 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30614 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30615 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30616 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30617 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30618 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
30619
30620 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30621 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30622 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30623 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30624 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30625 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30626 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30627 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30628 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30629 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30630 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30631 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30632 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30633 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30634 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30635 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
30636
30637 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30638 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30639 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30640 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30641 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30642 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30643 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30644 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30645 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30646 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30647 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30648 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30649 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30650 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30651 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30652 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
30653
30654 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30655 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30656 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30657 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30658 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30659 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30660 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30661 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30662 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30663 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30664 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30665 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30666 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30667 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30668 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30669 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
30670
30671 a = safe_add(a, olda);
30672 b = safe_add(b, oldb);
30673 c = safe_add(c, oldc);
30674 d = safe_add(d, oldd);
30675 }
30676 return Array(a, b, c, d);
30677
30678 }
30679
30680 /*
30681 * These functions implement the four basic operations the algorithm uses.
30682 */
30683 function md5_cmn(q, a, b, x, s, t)
30684 {
30685 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
30686 }
30687 function md5_ff(a, b, c, d, x, s, t)
30688 {
30689 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
30690 }
30691 function md5_gg(a, b, c, d, x, s, t)
30692 {
30693 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
30694 }
30695 function md5_hh(a, b, c, d, x, s, t)
30696 {
30697 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30698 }
30699 function md5_ii(a, b, c, d, x, s, t)
30700 {
30701 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
30702 }
30703
30704 /*
30705 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30706 * to work around bugs in some JS interpreters.
30707 */
30708 function safe_add(x, y)
30709 {
30710 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30711 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30712 return (msw << 16) | (lsw & 0xFFFF);
30713 }
30714
30715 /*
30716 * Bitwise rotate a 32-bit number to the left.
30717 */
30718 function bit_rol(num, cnt)
30719 {
30720 return (num << cnt) | (num >>> (32 - cnt));
30721 }
30722
30723 module.exports = function md5(buf) {
30724 return helpers.hash(buf, core_md5, 16);
30725 };
30726 },{"./helpers":37}],39:[function(require,module,exports){
30727 'use strict';
30728
30729 var elliptic = exports;
30730
30731 elliptic.version = require('../package.json').version;
30732 elliptic.utils = require('./elliptic/utils');
30733 elliptic.rand = require('brorand');
30734 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30735 elliptic.curve = require('./elliptic/curve');
30736 elliptic.curves = require('./elliptic/curves');
30737
30738 // Protocols
30739 elliptic.ec = require('./elliptic/ec');
30740 elliptic.eddsa = require('./elliptic/eddsa');
30741
30742 },{"../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){
30743 'use strict';
30744
30745 var BN = require('bn.js');
30746 var elliptic = require('../../elliptic');
30747 var utils = elliptic.utils;
30748 var getNAF = utils.getNAF;
30749 var getJSF = utils.getJSF;
30750 var assert = utils.assert;
30751
30752 function BaseCurve(type, conf) {
30753 this.type = type;
30754 this.p = new BN(conf.p, 16);
30755
30756 // Use Montgomery, when there is no fast reduction for the prime
30757 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30758
30759 // Useful for many curves
30760 this.zero = new BN(0).toRed(this.red);
30761 this.one = new BN(1).toRed(this.red);
30762 this.two = new BN(2).toRed(this.red);
30763
30764 // Curve configuration, optional
30765 this.n = conf.n && new BN(conf.n, 16);
30766 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30767
30768 // Temporary arrays
30769 this._wnafT1 = new Array(4);
30770 this._wnafT2 = new Array(4);
30771 this._wnafT3 = new Array(4);
30772 this._wnafT4 = new Array(4);
30773
30774 // Generalized Greg Maxwell's trick
30775 var adjustCount = this.n && this.p.div(this.n);
30776 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30777 this.redN = null;
30778 } else {
30779 this._maxwellTrick = true;
30780 this.redN = this.n.toRed(this.red);
30781 }
30782 }
30783 module.exports = BaseCurve;
30784
30785 BaseCurve.prototype.point = function point() {
30786 throw new Error('Not implemented');
30787 };
30788
30789 BaseCurve.prototype.validate = function validate() {
30790 throw new Error('Not implemented');
30791 };
30792
30793 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30794 assert(p.precomputed);
30795 var doubles = p._getDoubles();
30796
30797 var naf = getNAF(k, 1);
30798 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30799 I /= 3;
30800
30801 // Translate into more windowed form
30802 var repr = [];
30803 for (var j = 0; j < naf.length; j += doubles.step) {
30804 var nafW = 0;
30805 for (var k = j + doubles.step - 1; k >= j; k--)
30806 nafW = (nafW << 1) + naf[k];
30807 repr.push(nafW);
30808 }
30809
30810 var a = this.jpoint(null, null, null);
30811 var b = this.jpoint(null, null, null);
30812 for (var i = I; i > 0; i--) {
30813 for (var j = 0; j < repr.length; j++) {
30814 var nafW = repr[j];
30815 if (nafW === i)
30816 b = b.mixedAdd(doubles.points[j]);
30817 else if (nafW === -i)
30818 b = b.mixedAdd(doubles.points[j].neg());
30819 }
30820 a = a.add(b);
30821 }
30822 return a.toP();
30823 };
30824
30825 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30826 var w = 4;
30827
30828 // Precompute window
30829 var nafPoints = p._getNAFPoints(w);
30830 w = nafPoints.wnd;
30831 var wnd = nafPoints.points;
30832
30833 // Get NAF form
30834 var naf = getNAF(k, w);
30835
30836 // Add `this`*(N+1) for every w-NAF index
30837 var acc = this.jpoint(null, null, null);
30838 for (var i = naf.length - 1; i >= 0; i--) {
30839 // Count zeroes
30840 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30841 k++;
30842 if (i >= 0)
30843 k++;
30844 acc = acc.dblp(k);
30845
30846 if (i < 0)
30847 break;
30848 var z = naf[i];
30849 assert(z !== 0);
30850 if (p.type === 'affine') {
30851 // J +- P
30852 if (z > 0)
30853 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30854 else
30855 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30856 } else {
30857 // J +- J
30858 if (z > 0)
30859 acc = acc.add(wnd[(z - 1) >> 1]);
30860 else
30861 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30862 }
30863 }
30864 return p.type === 'affine' ? acc.toP() : acc;
30865 };
30866
30867 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30868 points,
30869 coeffs,
30870 len,
30871 jacobianResult) {
30872 var wndWidth = this._wnafT1;
30873 var wnd = this._wnafT2;
30874 var naf = this._wnafT3;
30875
30876 // Fill all arrays
30877 var max = 0;
30878 for (var i = 0; i < len; i++) {
30879 var p = points[i];
30880 var nafPoints = p._getNAFPoints(defW);
30881 wndWidth[i] = nafPoints.wnd;
30882 wnd[i] = nafPoints.points;
30883 }
30884
30885 // Comb small window NAFs
30886 for (var i = len - 1; i >= 1; i -= 2) {
30887 var a = i - 1;
30888 var b = i;
30889 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30890 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30891 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30892 max = Math.max(naf[a].length, max);
30893 max = Math.max(naf[b].length, max);
30894 continue;
30895 }
30896
30897 var comb = [
30898 points[a], /* 1 */
30899 null, /* 3 */
30900 null, /* 5 */
30901 points[b] /* 7 */
30902 ];
30903
30904 // Try to avoid Projective points, if possible
30905 if (points[a].y.cmp(points[b].y) === 0) {
30906 comb[1] = points[a].add(points[b]);
30907 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30908 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30909 comb[1] = points[a].toJ().mixedAdd(points[b]);
30910 comb[2] = points[a].add(points[b].neg());
30911 } else {
30912 comb[1] = points[a].toJ().mixedAdd(points[b]);
30913 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30914 }
30915
30916 var index = [
30917 -3, /* -1 -1 */
30918 -1, /* -1 0 */
30919 -5, /* -1 1 */
30920 -7, /* 0 -1 */
30921 0, /* 0 0 */
30922 7, /* 0 1 */
30923 5, /* 1 -1 */
30924 1, /* 1 0 */
30925 3 /* 1 1 */
30926 ];
30927
30928 var jsf = getJSF(coeffs[a], coeffs[b]);
30929 max = Math.max(jsf[0].length, max);
30930 naf[a] = new Array(max);
30931 naf[b] = new Array(max);
30932 for (var j = 0; j < max; j++) {
30933 var ja = jsf[0][j] | 0;
30934 var jb = jsf[1][j] | 0;
30935
30936 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30937 naf[b][j] = 0;
30938 wnd[a] = comb;
30939 }
30940 }
30941
30942 var acc = this.jpoint(null, null, null);
30943 var tmp = this._wnafT4;
30944 for (var i = max; i >= 0; i--) {
30945 var k = 0;
30946
30947 while (i >= 0) {
30948 var zero = true;
30949 for (var j = 0; j < len; j++) {
30950 tmp[j] = naf[j][i] | 0;
30951 if (tmp[j] !== 0)
30952 zero = false;
30953 }
30954 if (!zero)
30955 break;
30956 k++;
30957 i--;
30958 }
30959 if (i >= 0)
30960 k++;
30961 acc = acc.dblp(k);
30962 if (i < 0)
30963 break;
30964
30965 for (var j = 0; j < len; j++) {
30966 var z = tmp[j];
30967 var p;
30968 if (z === 0)
30969 continue;
30970 else if (z > 0)
30971 p = wnd[j][(z - 1) >> 1];
30972 else if (z < 0)
30973 p = wnd[j][(-z - 1) >> 1].neg();
30974
30975 if (p.type === 'affine')
30976 acc = acc.mixedAdd(p);
30977 else
30978 acc = acc.add(p);
30979 }
30980 }
30981 // Zeroify references
30982 for (var i = 0; i < len; i++)
30983 wnd[i] = null;
30984
30985 if (jacobianResult)
30986 return acc;
30987 else
30988 return acc.toP();
30989 };
30990
30991 function BasePoint(curve, type) {
30992 this.curve = curve;
30993 this.type = type;
30994 this.precomputed = null;
30995 }
30996 BaseCurve.BasePoint = BasePoint;
30997
30998 BasePoint.prototype.eq = function eq(/*other*/) {
30999 throw new Error('Not implemented');
31000 };
31001
31002 BasePoint.prototype.validate = function validate() {
31003 return this.curve.validate(this);
31004 };
31005
31006 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31007 bytes = utils.toArray(bytes, enc);
31008
31009 var len = this.p.byteLength();
31010
31011 // uncompressed, hybrid-odd, hybrid-even
31012 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
31013 bytes.length - 1 === 2 * len) {
31014 if (bytes[0] === 0x06)
31015 assert(bytes[bytes.length - 1] % 2 === 0);
31016 else if (bytes[0] === 0x07)
31017 assert(bytes[bytes.length - 1] % 2 === 1);
31018
31019 var res = this.point(bytes.slice(1, 1 + len),
31020 bytes.slice(1 + len, 1 + 2 * len));
31021
31022 return res;
31023 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
31024 bytes.length - 1 === len) {
31025 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
31026 }
31027 throw new Error('Unknown point format');
31028 };
31029
31030 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
31031 return this.encode(enc, true);
31032 };
31033
31034 BasePoint.prototype._encode = function _encode(compact) {
31035 var len = this.curve.p.byteLength();
31036 var x = this.getX().toArray('be', len);
31037
31038 if (compact)
31039 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
31040
31041 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
31042 };
31043
31044 BasePoint.prototype.encode = function encode(enc, compact) {
31045 return utils.encode(this._encode(compact), enc);
31046 };
31047
31048 BasePoint.prototype.precompute = function precompute(power) {
31049 if (this.precomputed)
31050 return this;
31051
31052 var precomputed = {
31053 doubles: null,
31054 naf: null,
31055 beta: null
31056 };
31057 precomputed.naf = this._getNAFPoints(8);
31058 precomputed.doubles = this._getDoubles(4, power);
31059 precomputed.beta = this._getBeta();
31060 this.precomputed = precomputed;
31061
31062 return this;
31063 };
31064
31065 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31066 if (!this.precomputed)
31067 return false;
31068
31069 var doubles = this.precomputed.doubles;
31070 if (!doubles)
31071 return false;
31072
31073 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31074 };
31075
31076 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31077 if (this.precomputed && this.precomputed.doubles)
31078 return this.precomputed.doubles;
31079
31080 var doubles = [ this ];
31081 var acc = this;
31082 for (var i = 0; i < power; i += step) {
31083 for (var j = 0; j < step; j++)
31084 acc = acc.dbl();
31085 doubles.push(acc);
31086 }
31087 return {
31088 step: step,
31089 points: doubles
31090 };
31091 };
31092
31093 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31094 if (this.precomputed && this.precomputed.naf)
31095 return this.precomputed.naf;
31096
31097 var res = [ this ];
31098 var max = (1 << wnd) - 1;
31099 var dbl = max === 1 ? null : this.dbl();
31100 for (var i = 1; i < max; i++)
31101 res[i] = res[i - 1].add(dbl);
31102 return {
31103 wnd: wnd,
31104 points: res
31105 };
31106 };
31107
31108 BasePoint.prototype._getBeta = function _getBeta() {
31109 return null;
31110 };
31111
31112 BasePoint.prototype.dblp = function dblp(k) {
31113 var r = this;
31114 for (var i = 0; i < k; i++)
31115 r = r.dbl();
31116 return r;
31117 };
31118
31119 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31120 'use strict';
31121
31122 var curve = require('../curve');
31123 var elliptic = require('../../elliptic');
31124 var BN = require('bn.js');
31125 var inherits = require('inherits');
31126 var Base = curve.base;
31127
31128 var assert = elliptic.utils.assert;
31129
31130 function EdwardsCurve(conf) {
31131 // NOTE: Important as we are creating point in Base.call()
31132 this.twisted = (conf.a | 0) !== 1;
31133 this.mOneA = this.twisted && (conf.a | 0) === -1;
31134 this.extended = this.mOneA;
31135
31136 Base.call(this, 'edwards', conf);
31137
31138 this.a = new BN(conf.a, 16).umod(this.red.m);
31139 this.a = this.a.toRed(this.red);
31140 this.c = new BN(conf.c, 16).toRed(this.red);
31141 this.c2 = this.c.redSqr();
31142 this.d = new BN(conf.d, 16).toRed(this.red);
31143 this.dd = this.d.redAdd(this.d);
31144
31145 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31146 this.oneC = (conf.c | 0) === 1;
31147 }
31148 inherits(EdwardsCurve, Base);
31149 module.exports = EdwardsCurve;
31150
31151 EdwardsCurve.prototype._mulA = function _mulA(num) {
31152 if (this.mOneA)
31153 return num.redNeg();
31154 else
31155 return this.a.redMul(num);
31156 };
31157
31158 EdwardsCurve.prototype._mulC = function _mulC(num) {
31159 if (this.oneC)
31160 return num;
31161 else
31162 return this.c.redMul(num);
31163 };
31164
31165 // Just for compatibility with Short curve
31166 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31167 return this.point(x, y, z, t);
31168 };
31169
31170 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31171 x = new BN(x, 16);
31172 if (!x.red)
31173 x = x.toRed(this.red);
31174
31175 var x2 = x.redSqr();
31176 var rhs = this.c2.redSub(this.a.redMul(x2));
31177 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31178
31179 var y2 = rhs.redMul(lhs.redInvm());
31180 var y = y2.redSqrt();
31181 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31182 throw new Error('invalid point');
31183
31184 var isOdd = y.fromRed().isOdd();
31185 if (odd && !isOdd || !odd && isOdd)
31186 y = y.redNeg();
31187
31188 return this.point(x, y);
31189 };
31190
31191 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31192 y = new BN(y, 16);
31193 if (!y.red)
31194 y = y.toRed(this.red);
31195
31196 // x^2 = (y^2 - 1) / (d y^2 + 1)
31197 var y2 = y.redSqr();
31198 var lhs = y2.redSub(this.one);
31199 var rhs = y2.redMul(this.d).redAdd(this.one);
31200 var x2 = lhs.redMul(rhs.redInvm());
31201
31202 if (x2.cmp(this.zero) === 0) {
31203 if (odd)
31204 throw new Error('invalid point');
31205 else
31206 return this.point(this.zero, y);
31207 }
31208
31209 var x = x2.redSqrt();
31210 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31211 throw new Error('invalid point');
31212
31213 if (x.isOdd() !== odd)
31214 x = x.redNeg();
31215
31216 return this.point(x, y);
31217 };
31218
31219 EdwardsCurve.prototype.validate = function validate(point) {
31220 if (point.isInfinity())
31221 return true;
31222
31223 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31224 point.normalize();
31225
31226 var x2 = point.x.redSqr();
31227 var y2 = point.y.redSqr();
31228 var lhs = x2.redMul(this.a).redAdd(y2);
31229 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
31230
31231 return lhs.cmp(rhs) === 0;
31232 };
31233
31234 function Point(curve, x, y, z, t) {
31235 Base.BasePoint.call(this, curve, 'projective');
31236 if (x === null && y === null && z === null) {
31237 this.x = this.curve.zero;
31238 this.y = this.curve.one;
31239 this.z = this.curve.one;
31240 this.t = this.curve.zero;
31241 this.zOne = true;
31242 } else {
31243 this.x = new BN(x, 16);
31244 this.y = new BN(y, 16);
31245 this.z = z ? new BN(z, 16) : this.curve.one;
31246 this.t = t && new BN(t, 16);
31247 if (!this.x.red)
31248 this.x = this.x.toRed(this.curve.red);
31249 if (!this.y.red)
31250 this.y = this.y.toRed(this.curve.red);
31251 if (!this.z.red)
31252 this.z = this.z.toRed(this.curve.red);
31253 if (this.t && !this.t.red)
31254 this.t = this.t.toRed(this.curve.red);
31255 this.zOne = this.z === this.curve.one;
31256
31257 // Use extended coordinates
31258 if (this.curve.extended && !this.t) {
31259 this.t = this.x.redMul(this.y);
31260 if (!this.zOne)
31261 this.t = this.t.redMul(this.z.redInvm());
31262 }
31263 }
31264 }
31265 inherits(Point, Base.BasePoint);
31266
31267 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31268 return Point.fromJSON(this, obj);
31269 };
31270
31271 EdwardsCurve.prototype.point = function point(x, y, z, t) {
31272 return new Point(this, x, y, z, t);
31273 };
31274
31275 Point.fromJSON = function fromJSON(curve, obj) {
31276 return new Point(curve, obj[0], obj[1], obj[2]);
31277 };
31278
31279 Point.prototype.inspect = function inspect() {
31280 if (this.isInfinity())
31281 return '<EC Point Infinity>';
31282 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31283 ' y: ' + this.y.fromRed().toString(16, 2) +
31284 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31285 };
31286
31287 Point.prototype.isInfinity = function isInfinity() {
31288 // XXX This code assumes that zero is always zero in red
31289 return this.x.cmpn(0) === 0 &&
31290 this.y.cmp(this.z) === 0;
31291 };
31292
31293 Point.prototype._extDbl = function _extDbl() {
31294 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31295 // #doubling-dbl-2008-hwcd
31296 // 4M + 4S
31297
31298 // A = X1^2
31299 var a = this.x.redSqr();
31300 // B = Y1^2
31301 var b = this.y.redSqr();
31302 // C = 2 * Z1^2
31303 var c = this.z.redSqr();
31304 c = c.redIAdd(c);
31305 // D = a * A
31306 var d = this.curve._mulA(a);
31307 // E = (X1 + Y1)^2 - A - B
31308 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31309 // G = D + B
31310 var g = d.redAdd(b);
31311 // F = G - C
31312 var f = g.redSub(c);
31313 // H = D - B
31314 var h = d.redSub(b);
31315 // X3 = E * F
31316 var nx = e.redMul(f);
31317 // Y3 = G * H
31318 var ny = g.redMul(h);
31319 // T3 = E * H
31320 var nt = e.redMul(h);
31321 // Z3 = F * G
31322 var nz = f.redMul(g);
31323 return this.curve.point(nx, ny, nz, nt);
31324 };
31325
31326 Point.prototype._projDbl = function _projDbl() {
31327 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31328 // #doubling-dbl-2008-bbjlp
31329 // #doubling-dbl-2007-bl
31330 // and others
31331 // Generally 3M + 4S or 2M + 4S
31332
31333 // B = (X1 + Y1)^2
31334 var b = this.x.redAdd(this.y).redSqr();
31335 // C = X1^2
31336 var c = this.x.redSqr();
31337 // D = Y1^2
31338 var d = this.y.redSqr();
31339
31340 var nx;
31341 var ny;
31342 var nz;
31343 if (this.curve.twisted) {
31344 // E = a * C
31345 var e = this.curve._mulA(c);
31346 // F = E + D
31347 var f = e.redAdd(d);
31348 if (this.zOne) {
31349 // X3 = (B - C - D) * (F - 2)
31350 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31351 // Y3 = F * (E - D)
31352 ny = f.redMul(e.redSub(d));
31353 // Z3 = F^2 - 2 * F
31354 nz = f.redSqr().redSub(f).redSub(f);
31355 } else {
31356 // H = Z1^2
31357 var h = this.z.redSqr();
31358 // J = F - 2 * H
31359 var j = f.redSub(h).redISub(h);
31360 // X3 = (B-C-D)*J
31361 nx = b.redSub(c).redISub(d).redMul(j);
31362 // Y3 = F * (E - D)
31363 ny = f.redMul(e.redSub(d));
31364 // Z3 = F * J
31365 nz = f.redMul(j);
31366 }
31367 } else {
31368 // E = C + D
31369 var e = c.redAdd(d);
31370 // H = (c * Z1)^2
31371 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31372 // J = E - 2 * H
31373 var j = e.redSub(h).redSub(h);
31374 // X3 = c * (B - E) * J
31375 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31376 // Y3 = c * E * (C - D)
31377 ny = this.curve._mulC(e).redMul(c.redISub(d));
31378 // Z3 = E * J
31379 nz = e.redMul(j);
31380 }
31381 return this.curve.point(nx, ny, nz);
31382 };
31383
31384 Point.prototype.dbl = function dbl() {
31385 if (this.isInfinity())
31386 return this;
31387
31388 // Double in extended coordinates
31389 if (this.curve.extended)
31390 return this._extDbl();
31391 else
31392 return this._projDbl();
31393 };
31394
31395 Point.prototype._extAdd = function _extAdd(p) {
31396 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31397 // #addition-add-2008-hwcd-3
31398 // 8M
31399
31400 // A = (Y1 - X1) * (Y2 - X2)
31401 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31402 // B = (Y1 + X1) * (Y2 + X2)
31403 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31404 // C = T1 * k * T2
31405 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31406 // D = Z1 * 2 * Z2
31407 var d = this.z.redMul(p.z.redAdd(p.z));
31408 // E = B - A
31409 var e = b.redSub(a);
31410 // F = D - C
31411 var f = d.redSub(c);
31412 // G = D + C
31413 var g = d.redAdd(c);
31414 // H = B + A
31415 var h = b.redAdd(a);
31416 // X3 = E * F
31417 var nx = e.redMul(f);
31418 // Y3 = G * H
31419 var ny = g.redMul(h);
31420 // T3 = E * H
31421 var nt = e.redMul(h);
31422 // Z3 = F * G
31423 var nz = f.redMul(g);
31424 return this.curve.point(nx, ny, nz, nt);
31425 };
31426
31427 Point.prototype._projAdd = function _projAdd(p) {
31428 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31429 // #addition-add-2008-bbjlp
31430 // #addition-add-2007-bl
31431 // 10M + 1S
31432
31433 // A = Z1 * Z2
31434 var a = this.z.redMul(p.z);
31435 // B = A^2
31436 var b = a.redSqr();
31437 // C = X1 * X2
31438 var c = this.x.redMul(p.x);
31439 // D = Y1 * Y2
31440 var d = this.y.redMul(p.y);
31441 // E = d * C * D
31442 var e = this.curve.d.redMul(c).redMul(d);
31443 // F = B - E
31444 var f = b.redSub(e);
31445 // G = B + E
31446 var g = b.redAdd(e);
31447 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31448 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31449 var nx = a.redMul(f).redMul(tmp);
31450 var ny;
31451 var nz;
31452 if (this.curve.twisted) {
31453 // Y3 = A * G * (D - a * C)
31454 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31455 // Z3 = F * G
31456 nz = f.redMul(g);
31457 } else {
31458 // Y3 = A * G * (D - C)
31459 ny = a.redMul(g).redMul(d.redSub(c));
31460 // Z3 = c * F * G
31461 nz = this.curve._mulC(f).redMul(g);
31462 }
31463 return this.curve.point(nx, ny, nz);
31464 };
31465
31466 Point.prototype.add = function add(p) {
31467 if (this.isInfinity())
31468 return p;
31469 if (p.isInfinity())
31470 return this;
31471
31472 if (this.curve.extended)
31473 return this._extAdd(p);
31474 else
31475 return this._projAdd(p);
31476 };
31477
31478 Point.prototype.mul = function mul(k) {
31479 if (this._hasDoubles(k))
31480 return this.curve._fixedNafMul(this, k);
31481 else
31482 return this.curve._wnafMul(this, k);
31483 };
31484
31485 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31486 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31487 };
31488
31489 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31490 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31491 };
31492
31493 Point.prototype.normalize = function normalize() {
31494 if (this.zOne)
31495 return this;
31496
31497 // Normalize coordinates
31498 var zi = this.z.redInvm();
31499 this.x = this.x.redMul(zi);
31500 this.y = this.y.redMul(zi);
31501 if (this.t)
31502 this.t = this.t.redMul(zi);
31503 this.z = this.curve.one;
31504 this.zOne = true;
31505 return this;
31506 };
31507
31508 Point.prototype.neg = function neg() {
31509 return this.curve.point(this.x.redNeg(),
31510 this.y,
31511 this.z,
31512 this.t && this.t.redNeg());
31513 };
31514
31515 Point.prototype.getX = function getX() {
31516 this.normalize();
31517 return this.x.fromRed();
31518 };
31519
31520 Point.prototype.getY = function getY() {
31521 this.normalize();
31522 return this.y.fromRed();
31523 };
31524
31525 Point.prototype.eq = function eq(other) {
31526 return this === other ||
31527 this.getX().cmp(other.getX()) === 0 &&
31528 this.getY().cmp(other.getY()) === 0;
31529 };
31530
31531 Point.prototype.eqXToP = function eqXToP(x) {
31532 var rx = x.toRed(this.curve.red).redMul(this.z);
31533 if (this.x.cmp(rx) === 0)
31534 return true;
31535
31536 var xc = x.clone();
31537 var t = this.curve.redN.redMul(this.z);
31538 for (;;) {
31539 xc.iadd(this.curve.n);
31540 if (xc.cmp(this.curve.p) >= 0)
31541 return false;
31542
31543 rx.redIAdd(t);
31544 if (this.x.cmp(rx) === 0)
31545 return true;
31546 }
31547 return false;
31548 };
31549
31550 // Compatibility with BaseCurve
31551 Point.prototype.toP = Point.prototype.normalize;
31552 Point.prototype.mixedAdd = Point.prototype.add;
31553
31554 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31555 'use strict';
31556
31557 var curve = exports;
31558
31559 curve.base = require('./base');
31560 curve.short = require('./short');
31561 curve.mont = require('./mont');
31562 curve.edwards = require('./edwards');
31563
31564 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31565 'use strict';
31566
31567 var curve = require('../curve');
31568 var BN = require('bn.js');
31569 var inherits = require('inherits');
31570 var Base = curve.base;
31571
31572 var elliptic = require('../../elliptic');
31573 var utils = elliptic.utils;
31574
31575 function MontCurve(conf) {
31576 Base.call(this, 'mont', conf);
31577
31578 this.a = new BN(conf.a, 16).toRed(this.red);
31579 this.b = new BN(conf.b, 16).toRed(this.red);
31580 this.i4 = new BN(4).toRed(this.red).redInvm();
31581 this.two = new BN(2).toRed(this.red);
31582 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
31583 }
31584 inherits(MontCurve, Base);
31585 module.exports = MontCurve;
31586
31587 MontCurve.prototype.validate = function validate(point) {
31588 var x = point.normalize().x;
31589 var x2 = x.redSqr();
31590 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31591 var y = rhs.redSqrt();
31592
31593 return y.redSqr().cmp(rhs) === 0;
31594 };
31595
31596 function Point(curve, x, z) {
31597 Base.BasePoint.call(this, curve, 'projective');
31598 if (x === null && z === null) {
31599 this.x = this.curve.one;
31600 this.z = this.curve.zero;
31601 } else {
31602 this.x = new BN(x, 16);
31603 this.z = new BN(z, 16);
31604 if (!this.x.red)
31605 this.x = this.x.toRed(this.curve.red);
31606 if (!this.z.red)
31607 this.z = this.z.toRed(this.curve.red);
31608 }
31609 }
31610 inherits(Point, Base.BasePoint);
31611
31612 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31613 return this.point(utils.toArray(bytes, enc), 1);
31614 };
31615
31616 MontCurve.prototype.point = function point(x, z) {
31617 return new Point(this, x, z);
31618 };
31619
31620 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31621 return Point.fromJSON(this, obj);
31622 };
31623
31624 Point.prototype.precompute = function precompute() {
31625 // No-op
31626 };
31627
31628 Point.prototype._encode = function _encode() {
31629 return this.getX().toArray('be', this.curve.p.byteLength());
31630 };
31631
31632 Point.fromJSON = function fromJSON(curve, obj) {
31633 return new Point(curve, obj[0], obj[1] || curve.one);
31634 };
31635
31636 Point.prototype.inspect = function inspect() {
31637 if (this.isInfinity())
31638 return '<EC Point Infinity>';
31639 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31640 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31641 };
31642
31643 Point.prototype.isInfinity = function isInfinity() {
31644 // XXX This code assumes that zero is always zero in red
31645 return this.z.cmpn(0) === 0;
31646 };
31647
31648 Point.prototype.dbl = function dbl() {
31649 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31650 // 2M + 2S + 4A
31651
31652 // A = X1 + Z1
31653 var a = this.x.redAdd(this.z);
31654 // AA = A^2
31655 var aa = a.redSqr();
31656 // B = X1 - Z1
31657 var b = this.x.redSub(this.z);
31658 // BB = B^2
31659 var bb = b.redSqr();
31660 // C = AA - BB
31661 var c = aa.redSub(bb);
31662 // X3 = AA * BB
31663 var nx = aa.redMul(bb);
31664 // Z3 = C * (BB + A24 * C)
31665 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31666 return this.curve.point(nx, nz);
31667 };
31668
31669 Point.prototype.add = function add() {
31670 throw new Error('Not supported on Montgomery curve');
31671 };
31672
31673 Point.prototype.diffAdd = function diffAdd(p, diff) {
31674 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31675 // 4M + 2S + 6A
31676
31677 // A = X2 + Z2
31678 var a = this.x.redAdd(this.z);
31679 // B = X2 - Z2
31680 var b = this.x.redSub(this.z);
31681 // C = X3 + Z3
31682 var c = p.x.redAdd(p.z);
31683 // D = X3 - Z3
31684 var d = p.x.redSub(p.z);
31685 // DA = D * A
31686 var da = d.redMul(a);
31687 // CB = C * B
31688 var cb = c.redMul(b);
31689 // X5 = Z1 * (DA + CB)^2
31690 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31691 // Z5 = X1 * (DA - CB)^2
31692 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31693 return this.curve.point(nx, nz);
31694 };
31695
31696 Point.prototype.mul = function mul(k) {
31697 var t = k.clone();
31698 var a = this; // (N / 2) * Q + Q
31699 var b = this.curve.point(null, null); // (N / 2) * Q
31700 var c = this; // Q
31701
31702 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31703 bits.push(t.andln(1));
31704
31705 for (var i = bits.length - 1; i >= 0; i--) {
31706 if (bits[i] === 0) {
31707 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31708 a = a.diffAdd(b, c);
31709 // N * Q = 2 * ((N / 2) * Q + Q))
31710 b = b.dbl();
31711 } else {
31712 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31713 b = a.diffAdd(b, c);
31714 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31715 a = a.dbl();
31716 }
31717 }
31718 return b;
31719 };
31720
31721 Point.prototype.mulAdd = function mulAdd() {
31722 throw new Error('Not supported on Montgomery curve');
31723 };
31724
31725 Point.prototype.jumlAdd = function jumlAdd() {
31726 throw new Error('Not supported on Montgomery curve');
31727 };
31728
31729 Point.prototype.eq = function eq(other) {
31730 return this.getX().cmp(other.getX()) === 0;
31731 };
31732
31733 Point.prototype.normalize = function normalize() {
31734 this.x = this.x.redMul(this.z.redInvm());
31735 this.z = this.curve.one;
31736 return this;
31737 };
31738
31739 Point.prototype.getX = function getX() {
31740 // Normalize coordinates
31741 this.normalize();
31742
31743 return this.x.fromRed();
31744 };
31745
31746 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
31747 'use strict';
31748
31749 var curve = require('../curve');
31750 var elliptic = require('../../elliptic');
31751 var BN = require('bn.js');
31752 var inherits = require('inherits');
31753 var Base = curve.base;
31754
31755 var assert = elliptic.utils.assert;
31756
31757 function ShortCurve(conf) {
31758 Base.call(this, 'short', conf);
31759
31760 this.a = new BN(conf.a, 16).toRed(this.red);
31761 this.b = new BN(conf.b, 16).toRed(this.red);
31762 this.tinv = this.two.redInvm();
31763
31764 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31765 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
31766
31767 // If the curve is endomorphic, precalculate beta and lambda
31768 this.endo = this._getEndomorphism(conf);
31769 this._endoWnafT1 = new Array(4);
31770 this._endoWnafT2 = new Array(4);
31771 }
31772 inherits(ShortCurve, Base);
31773 module.exports = ShortCurve;
31774
31775 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31776 // No efficient endomorphism
31777 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31778 return;
31779
31780 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31781 var beta;
31782 var lambda;
31783 if (conf.beta) {
31784 beta = new BN(conf.beta, 16).toRed(this.red);
31785 } else {
31786 var betas = this._getEndoRoots(this.p);
31787 // Choose the smallest beta
31788 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31789 beta = beta.toRed(this.red);
31790 }
31791 if (conf.lambda) {
31792 lambda = new BN(conf.lambda, 16);
31793 } else {
31794 // Choose the lambda that is matching selected beta
31795 var lambdas = this._getEndoRoots(this.n);
31796 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31797 lambda = lambdas[0];
31798 } else {
31799 lambda = lambdas[1];
31800 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31801 }
31802 }
31803
31804 // Get basis vectors, used for balanced length-two representation
31805 var basis;
31806 if (conf.basis) {
31807 basis = conf.basis.map(function(vec) {
31808 return {
31809 a: new BN(vec.a, 16),
31810 b: new BN(vec.b, 16)
31811 };
31812 });
31813 } else {
31814 basis = this._getEndoBasis(lambda);
31815 }
31816
31817 return {
31818 beta: beta,
31819 lambda: lambda,
31820 basis: basis
31821 };
31822 };
31823
31824 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31825 // Find roots of for x^2 + x + 1 in F
31826 // Root = (-1 +- Sqrt(-3)) / 2
31827 //
31828 var red = num === this.p ? this.red : BN.mont(num);
31829 var tinv = new BN(2).toRed(red).redInvm();
31830 var ntinv = tinv.redNeg();
31831
31832 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
31833
31834 var l1 = ntinv.redAdd(s).fromRed();
31835 var l2 = ntinv.redSub(s).fromRed();
31836 return [ l1, l2 ];
31837 };
31838
31839 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31840 // aprxSqrt >= sqrt(this.n)
31841 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31842
31843 // 3.74
31844 // Run EGCD, until r(L + 1) < aprxSqrt
31845 var u = lambda;
31846 var v = this.n.clone();
31847 var x1 = new BN(1);
31848 var y1 = new BN(0);
31849 var x2 = new BN(0);
31850 var y2 = new BN(1);
31851
31852 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31853 var a0;
31854 var b0;
31855 // First vector
31856 var a1;
31857 var b1;
31858 // Second vector
31859 var a2;
31860 var b2;
31861
31862 var prevR;
31863 var i = 0;
31864 var r;
31865 var x;
31866 while (u.cmpn(0) !== 0) {
31867 var q = v.div(u);
31868 r = v.sub(q.mul(u));
31869 x = x2.sub(q.mul(x1));
31870 var y = y2.sub(q.mul(y1));
31871
31872 if (!a1 && r.cmp(aprxSqrt) < 0) {
31873 a0 = prevR.neg();
31874 b0 = x1;
31875 a1 = r.neg();
31876 b1 = x;
31877 } else if (a1 && ++i === 2) {
31878 break;
31879 }
31880 prevR = r;
31881
31882 v = u;
31883 u = r;
31884 x2 = x1;
31885 x1 = x;
31886 y2 = y1;
31887 y1 = y;
31888 }
31889 a2 = r.neg();
31890 b2 = x;
31891
31892 var len1 = a1.sqr().add(b1.sqr());
31893 var len2 = a2.sqr().add(b2.sqr());
31894 if (len2.cmp(len1) >= 0) {
31895 a2 = a0;
31896 b2 = b0;
31897 }
31898
31899 // Normalize signs
31900 if (a1.negative) {
31901 a1 = a1.neg();
31902 b1 = b1.neg();
31903 }
31904 if (a2.negative) {
31905 a2 = a2.neg();
31906 b2 = b2.neg();
31907 }
31908
31909 return [
31910 { a: a1, b: b1 },
31911 { a: a2, b: b2 }
31912 ];
31913 };
31914
31915 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31916 var basis = this.endo.basis;
31917 var v1 = basis[0];
31918 var v2 = basis[1];
31919
31920 var c1 = v2.b.mul(k).divRound(this.n);
31921 var c2 = v1.b.neg().mul(k).divRound(this.n);
31922
31923 var p1 = c1.mul(v1.a);
31924 var p2 = c2.mul(v2.a);
31925 var q1 = c1.mul(v1.b);
31926 var q2 = c2.mul(v2.b);
31927
31928 // Calculate answer
31929 var k1 = k.sub(p1).sub(p2);
31930 var k2 = q1.add(q2).neg();
31931 return { k1: k1, k2: k2 };
31932 };
31933
31934 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31935 x = new BN(x, 16);
31936 if (!x.red)
31937 x = x.toRed(this.red);
31938
31939 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31940 var y = y2.redSqrt();
31941 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31942 throw new Error('invalid point');
31943
31944 // XXX Is there any way to tell if the number is odd without converting it
31945 // to non-red form?
31946 var isOdd = y.fromRed().isOdd();
31947 if (odd && !isOdd || !odd && isOdd)
31948 y = y.redNeg();
31949
31950 return this.point(x, y);
31951 };
31952
31953 ShortCurve.prototype.validate = function validate(point) {
31954 if (point.inf)
31955 return true;
31956
31957 var x = point.x;
31958 var y = point.y;
31959
31960 var ax = this.a.redMul(x);
31961 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31962 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31963 };
31964
31965 ShortCurve.prototype._endoWnafMulAdd =
31966 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31967 var npoints = this._endoWnafT1;
31968 var ncoeffs = this._endoWnafT2;
31969 for (var i = 0; i < points.length; i++) {
31970 var split = this._endoSplit(coeffs[i]);
31971 var p = points[i];
31972 var beta = p._getBeta();
31973
31974 if (split.k1.negative) {
31975 split.k1.ineg();
31976 p = p.neg(true);
31977 }
31978 if (split.k2.negative) {
31979 split.k2.ineg();
31980 beta = beta.neg(true);
31981 }
31982
31983 npoints[i * 2] = p;
31984 npoints[i * 2 + 1] = beta;
31985 ncoeffs[i * 2] = split.k1;
31986 ncoeffs[i * 2 + 1] = split.k2;
31987 }
31988 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
31989
31990 // Clean-up references to points and coefficients
31991 for (var j = 0; j < i * 2; j++) {
31992 npoints[j] = null;
31993 ncoeffs[j] = null;
31994 }
31995 return res;
31996 };
31997
31998 function Point(curve, x, y, isRed) {
31999 Base.BasePoint.call(this, curve, 'affine');
32000 if (x === null && y === null) {
32001 this.x = null;
32002 this.y = null;
32003 this.inf = true;
32004 } else {
32005 this.x = new BN(x, 16);
32006 this.y = new BN(y, 16);
32007 // Force redgomery representation when loading from JSON
32008 if (isRed) {
32009 this.x.forceRed(this.curve.red);
32010 this.y.forceRed(this.curve.red);
32011 }
32012 if (!this.x.red)
32013 this.x = this.x.toRed(this.curve.red);
32014 if (!this.y.red)
32015 this.y = this.y.toRed(this.curve.red);
32016 this.inf = false;
32017 }
32018 }
32019 inherits(Point, Base.BasePoint);
32020
32021 ShortCurve.prototype.point = function point(x, y, isRed) {
32022 return new Point(this, x, y, isRed);
32023 };
32024
32025 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
32026 return Point.fromJSON(this, obj, red);
32027 };
32028
32029 Point.prototype._getBeta = function _getBeta() {
32030 if (!this.curve.endo)
32031 return;
32032
32033 var pre = this.precomputed;
32034 if (pre && pre.beta)
32035 return pre.beta;
32036
32037 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
32038 if (pre) {
32039 var curve = this.curve;
32040 var endoMul = function(p) {
32041 return curve.point(p.x.redMul(curve.endo.beta), p.y);
32042 };
32043 pre.beta = beta;
32044 beta.precomputed = {
32045 beta: null,
32046 naf: pre.naf && {
32047 wnd: pre.naf.wnd,
32048 points: pre.naf.points.map(endoMul)
32049 },
32050 doubles: pre.doubles && {
32051 step: pre.doubles.step,
32052 points: pre.doubles.points.map(endoMul)
32053 }
32054 };
32055 }
32056 return beta;
32057 };
32058
32059 Point.prototype.toJSON = function toJSON() {
32060 if (!this.precomputed)
32061 return [ this.x, this.y ];
32062
32063 return [ this.x, this.y, this.precomputed && {
32064 doubles: this.precomputed.doubles && {
32065 step: this.precomputed.doubles.step,
32066 points: this.precomputed.doubles.points.slice(1)
32067 },
32068 naf: this.precomputed.naf && {
32069 wnd: this.precomputed.naf.wnd,
32070 points: this.precomputed.naf.points.slice(1)
32071 }
32072 } ];
32073 };
32074
32075 Point.fromJSON = function fromJSON(curve, obj, red) {
32076 if (typeof obj === 'string')
32077 obj = JSON.parse(obj);
32078 var res = curve.point(obj[0], obj[1], red);
32079 if (!obj[2])
32080 return res;
32081
32082 function obj2point(obj) {
32083 return curve.point(obj[0], obj[1], red);
32084 }
32085
32086 var pre = obj[2];
32087 res.precomputed = {
32088 beta: null,
32089 doubles: pre.doubles && {
32090 step: pre.doubles.step,
32091 points: [ res ].concat(pre.doubles.points.map(obj2point))
32092 },
32093 naf: pre.naf && {
32094 wnd: pre.naf.wnd,
32095 points: [ res ].concat(pre.naf.points.map(obj2point))
32096 }
32097 };
32098 return res;
32099 };
32100
32101 Point.prototype.inspect = function inspect() {
32102 if (this.isInfinity())
32103 return '<EC Point Infinity>';
32104 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32105 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32106 };
32107
32108 Point.prototype.isInfinity = function isInfinity() {
32109 return this.inf;
32110 };
32111
32112 Point.prototype.add = function add(p) {
32113 // O + P = P
32114 if (this.inf)
32115 return p;
32116
32117 // P + O = P
32118 if (p.inf)
32119 return this;
32120
32121 // P + P = 2P
32122 if (this.eq(p))
32123 return this.dbl();
32124
32125 // P + (-P) = O
32126 if (this.neg().eq(p))
32127 return this.curve.point(null, null);
32128
32129 // P + Q = O
32130 if (this.x.cmp(p.x) === 0)
32131 return this.curve.point(null, null);
32132
32133 var c = this.y.redSub(p.y);
32134 if (c.cmpn(0) !== 0)
32135 c = c.redMul(this.x.redSub(p.x).redInvm());
32136 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32137 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32138 return this.curve.point(nx, ny);
32139 };
32140
32141 Point.prototype.dbl = function dbl() {
32142 if (this.inf)
32143 return this;
32144
32145 // 2P = O
32146 var ys1 = this.y.redAdd(this.y);
32147 if (ys1.cmpn(0) === 0)
32148 return this.curve.point(null, null);
32149
32150 var a = this.curve.a;
32151
32152 var x2 = this.x.redSqr();
32153 var dyinv = ys1.redInvm();
32154 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
32155
32156 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32157 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32158 return this.curve.point(nx, ny);
32159 };
32160
32161 Point.prototype.getX = function getX() {
32162 return this.x.fromRed();
32163 };
32164
32165 Point.prototype.getY = function getY() {
32166 return this.y.fromRed();
32167 };
32168
32169 Point.prototype.mul = function mul(k) {
32170 k = new BN(k, 16);
32171
32172 if (this._hasDoubles(k))
32173 return this.curve._fixedNafMul(this, k);
32174 else if (this.curve.endo)
32175 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32176 else
32177 return this.curve._wnafMul(this, k);
32178 };
32179
32180 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32181 var points = [ this, p2 ];
32182 var coeffs = [ k1, k2 ];
32183 if (this.curve.endo)
32184 return this.curve._endoWnafMulAdd(points, coeffs);
32185 else
32186 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32187 };
32188
32189 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32190 var points = [ this, p2 ];
32191 var coeffs = [ k1, k2 ];
32192 if (this.curve.endo)
32193 return this.curve._endoWnafMulAdd(points, coeffs, true);
32194 else
32195 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32196 };
32197
32198 Point.prototype.eq = function eq(p) {
32199 return this === p ||
32200 this.inf === p.inf &&
32201 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32202 };
32203
32204 Point.prototype.neg = function neg(_precompute) {
32205 if (this.inf)
32206 return this;
32207
32208 var res = this.curve.point(this.x, this.y.redNeg());
32209 if (_precompute && this.precomputed) {
32210 var pre = this.precomputed;
32211 var negate = function(p) {
32212 return p.neg();
32213 };
32214 res.precomputed = {
32215 naf: pre.naf && {
32216 wnd: pre.naf.wnd,
32217 points: pre.naf.points.map(negate)
32218 },
32219 doubles: pre.doubles && {
32220 step: pre.doubles.step,
32221 points: pre.doubles.points.map(negate)
32222 }
32223 };
32224 }
32225 return res;
32226 };
32227
32228 Point.prototype.toJ = function toJ() {
32229 if (this.inf)
32230 return this.curve.jpoint(null, null, null);
32231
32232 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32233 return res;
32234 };
32235
32236 function JPoint(curve, x, y, z) {
32237 Base.BasePoint.call(this, curve, 'jacobian');
32238 if (x === null && y === null && z === null) {
32239 this.x = this.curve.one;
32240 this.y = this.curve.one;
32241 this.z = new BN(0);
32242 } else {
32243 this.x = new BN(x, 16);
32244 this.y = new BN(y, 16);
32245 this.z = new BN(z, 16);
32246 }
32247 if (!this.x.red)
32248 this.x = this.x.toRed(this.curve.red);
32249 if (!this.y.red)
32250 this.y = this.y.toRed(this.curve.red);
32251 if (!this.z.red)
32252 this.z = this.z.toRed(this.curve.red);
32253
32254 this.zOne = this.z === this.curve.one;
32255 }
32256 inherits(JPoint, Base.BasePoint);
32257
32258 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32259 return new JPoint(this, x, y, z);
32260 };
32261
32262 JPoint.prototype.toP = function toP() {
32263 if (this.isInfinity())
32264 return this.curve.point(null, null);
32265
32266 var zinv = this.z.redInvm();
32267 var zinv2 = zinv.redSqr();
32268 var ax = this.x.redMul(zinv2);
32269 var ay = this.y.redMul(zinv2).redMul(zinv);
32270
32271 return this.curve.point(ax, ay);
32272 };
32273
32274 JPoint.prototype.neg = function neg() {
32275 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32276 };
32277
32278 JPoint.prototype.add = function add(p) {
32279 // O + P = P
32280 if (this.isInfinity())
32281 return p;
32282
32283 // P + O = P
32284 if (p.isInfinity())
32285 return this;
32286
32287 // 12M + 4S + 7A
32288 var pz2 = p.z.redSqr();
32289 var z2 = this.z.redSqr();
32290 var u1 = this.x.redMul(pz2);
32291 var u2 = p.x.redMul(z2);
32292 var s1 = this.y.redMul(pz2.redMul(p.z));
32293 var s2 = p.y.redMul(z2.redMul(this.z));
32294
32295 var h = u1.redSub(u2);
32296 var r = s1.redSub(s2);
32297 if (h.cmpn(0) === 0) {
32298 if (r.cmpn(0) !== 0)
32299 return this.curve.jpoint(null, null, null);
32300 else
32301 return this.dbl();
32302 }
32303
32304 var h2 = h.redSqr();
32305 var h3 = h2.redMul(h);
32306 var v = u1.redMul(h2);
32307
32308 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32309 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32310 var nz = this.z.redMul(p.z).redMul(h);
32311
32312 return this.curve.jpoint(nx, ny, nz);
32313 };
32314
32315 JPoint.prototype.mixedAdd = function mixedAdd(p) {
32316 // O + P = P
32317 if (this.isInfinity())
32318 return p.toJ();
32319
32320 // P + O = P
32321 if (p.isInfinity())
32322 return this;
32323
32324 // 8M + 3S + 7A
32325 var z2 = this.z.redSqr();
32326 var u1 = this.x;
32327 var u2 = p.x.redMul(z2);
32328 var s1 = this.y;
32329 var s2 = p.y.redMul(z2).redMul(this.z);
32330
32331 var h = u1.redSub(u2);
32332 var r = s1.redSub(s2);
32333 if (h.cmpn(0) === 0) {
32334 if (r.cmpn(0) !== 0)
32335 return this.curve.jpoint(null, null, null);
32336 else
32337 return this.dbl();
32338 }
32339
32340 var h2 = h.redSqr();
32341 var h3 = h2.redMul(h);
32342 var v = u1.redMul(h2);
32343
32344 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32345 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32346 var nz = this.z.redMul(h);
32347
32348 return this.curve.jpoint(nx, ny, nz);
32349 };
32350
32351 JPoint.prototype.dblp = function dblp(pow) {
32352 if (pow === 0)
32353 return this;
32354 if (this.isInfinity())
32355 return this;
32356 if (!pow)
32357 return this.dbl();
32358
32359 if (this.curve.zeroA || this.curve.threeA) {
32360 var r = this;
32361 for (var i = 0; i < pow; i++)
32362 r = r.dbl();
32363 return r;
32364 }
32365
32366 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32367 // N = 1 => 6M + 6S + 9A
32368 var a = this.curve.a;
32369 var tinv = this.curve.tinv;
32370
32371 var jx = this.x;
32372 var jy = this.y;
32373 var jz = this.z;
32374 var jz4 = jz.redSqr().redSqr();
32375
32376 // Reuse results
32377 var jyd = jy.redAdd(jy);
32378 for (var i = 0; i < pow; i++) {
32379 var jx2 = jx.redSqr();
32380 var jyd2 = jyd.redSqr();
32381 var jyd4 = jyd2.redSqr();
32382 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32383
32384 var t1 = jx.redMul(jyd2);
32385 var nx = c.redSqr().redISub(t1.redAdd(t1));
32386 var t2 = t1.redISub(nx);
32387 var dny = c.redMul(t2);
32388 dny = dny.redIAdd(dny).redISub(jyd4);
32389 var nz = jyd.redMul(jz);
32390 if (i + 1 < pow)
32391 jz4 = jz4.redMul(jyd4);
32392
32393 jx = nx;
32394 jz = nz;
32395 jyd = dny;
32396 }
32397
32398 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32399 };
32400
32401 JPoint.prototype.dbl = function dbl() {
32402 if (this.isInfinity())
32403 return this;
32404
32405 if (this.curve.zeroA)
32406 return this._zeroDbl();
32407 else if (this.curve.threeA)
32408 return this._threeDbl();
32409 else
32410 return this._dbl();
32411 };
32412
32413 JPoint.prototype._zeroDbl = function _zeroDbl() {
32414 var nx;
32415 var ny;
32416 var nz;
32417 // Z = 1
32418 if (this.zOne) {
32419 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32420 // #doubling-mdbl-2007-bl
32421 // 1M + 5S + 14A
32422
32423 // XX = X1^2
32424 var xx = this.x.redSqr();
32425 // YY = Y1^2
32426 var yy = this.y.redSqr();
32427 // YYYY = YY^2
32428 var yyyy = yy.redSqr();
32429 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32430 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32431 s = s.redIAdd(s);
32432 // M = 3 * XX + a; a = 0
32433 var m = xx.redAdd(xx).redIAdd(xx);
32434 // T = M ^ 2 - 2*S
32435 var t = m.redSqr().redISub(s).redISub(s);
32436
32437 // 8 * YYYY
32438 var yyyy8 = yyyy.redIAdd(yyyy);
32439 yyyy8 = yyyy8.redIAdd(yyyy8);
32440 yyyy8 = yyyy8.redIAdd(yyyy8);
32441
32442 // X3 = T
32443 nx = t;
32444 // Y3 = M * (S - T) - 8 * YYYY
32445 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32446 // Z3 = 2*Y1
32447 nz = this.y.redAdd(this.y);
32448 } else {
32449 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32450 // #doubling-dbl-2009-l
32451 // 2M + 5S + 13A
32452
32453 // A = X1^2
32454 var a = this.x.redSqr();
32455 // B = Y1^2
32456 var b = this.y.redSqr();
32457 // C = B^2
32458 var c = b.redSqr();
32459 // D = 2 * ((X1 + B)^2 - A - C)
32460 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32461 d = d.redIAdd(d);
32462 // E = 3 * A
32463 var e = a.redAdd(a).redIAdd(a);
32464 // F = E^2
32465 var f = e.redSqr();
32466
32467 // 8 * C
32468 var c8 = c.redIAdd(c);
32469 c8 = c8.redIAdd(c8);
32470 c8 = c8.redIAdd(c8);
32471
32472 // X3 = F - 2 * D
32473 nx = f.redISub(d).redISub(d);
32474 // Y3 = E * (D - X3) - 8 * C
32475 ny = e.redMul(d.redISub(nx)).redISub(c8);
32476 // Z3 = 2 * Y1 * Z1
32477 nz = this.y.redMul(this.z);
32478 nz = nz.redIAdd(nz);
32479 }
32480
32481 return this.curve.jpoint(nx, ny, nz);
32482 };
32483
32484 JPoint.prototype._threeDbl = function _threeDbl() {
32485 var nx;
32486 var ny;
32487 var nz;
32488 // Z = 1
32489 if (this.zOne) {
32490 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32491 // #doubling-mdbl-2007-bl
32492 // 1M + 5S + 15A
32493
32494 // XX = X1^2
32495 var xx = this.x.redSqr();
32496 // YY = Y1^2
32497 var yy = this.y.redSqr();
32498 // YYYY = YY^2
32499 var yyyy = yy.redSqr();
32500 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32501 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32502 s = s.redIAdd(s);
32503 // M = 3 * XX + a
32504 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32505 // T = M^2 - 2 * S
32506 var t = m.redSqr().redISub(s).redISub(s);
32507 // X3 = T
32508 nx = t;
32509 // Y3 = M * (S - T) - 8 * YYYY
32510 var yyyy8 = yyyy.redIAdd(yyyy);
32511 yyyy8 = yyyy8.redIAdd(yyyy8);
32512 yyyy8 = yyyy8.redIAdd(yyyy8);
32513 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32514 // Z3 = 2 * Y1
32515 nz = this.y.redAdd(this.y);
32516 } else {
32517 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32518 // 3M + 5S
32519
32520 // delta = Z1^2
32521 var delta = this.z.redSqr();
32522 // gamma = Y1^2
32523 var gamma = this.y.redSqr();
32524 // beta = X1 * gamma
32525 var beta = this.x.redMul(gamma);
32526 // alpha = 3 * (X1 - delta) * (X1 + delta)
32527 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32528 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32529 // X3 = alpha^2 - 8 * beta
32530 var beta4 = beta.redIAdd(beta);
32531 beta4 = beta4.redIAdd(beta4);
32532 var beta8 = beta4.redAdd(beta4);
32533 nx = alpha.redSqr().redISub(beta8);
32534 // Z3 = (Y1 + Z1)^2 - gamma - delta
32535 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32536 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32537 var ggamma8 = gamma.redSqr();
32538 ggamma8 = ggamma8.redIAdd(ggamma8);
32539 ggamma8 = ggamma8.redIAdd(ggamma8);
32540 ggamma8 = ggamma8.redIAdd(ggamma8);
32541 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32542 }
32543
32544 return this.curve.jpoint(nx, ny, nz);
32545 };
32546
32547 JPoint.prototype._dbl = function _dbl() {
32548 var a = this.curve.a;
32549
32550 // 4M + 6S + 10A
32551 var jx = this.x;
32552 var jy = this.y;
32553 var jz = this.z;
32554 var jz4 = jz.redSqr().redSqr();
32555
32556 var jx2 = jx.redSqr();
32557 var jy2 = jy.redSqr();
32558
32559 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32560
32561 var jxd4 = jx.redAdd(jx);
32562 jxd4 = jxd4.redIAdd(jxd4);
32563 var t1 = jxd4.redMul(jy2);
32564 var nx = c.redSqr().redISub(t1.redAdd(t1));
32565 var t2 = t1.redISub(nx);
32566
32567 var jyd8 = jy2.redSqr();
32568 jyd8 = jyd8.redIAdd(jyd8);
32569 jyd8 = jyd8.redIAdd(jyd8);
32570 jyd8 = jyd8.redIAdd(jyd8);
32571 var ny = c.redMul(t2).redISub(jyd8);
32572 var nz = jy.redAdd(jy).redMul(jz);
32573
32574 return this.curve.jpoint(nx, ny, nz);
32575 };
32576
32577 JPoint.prototype.trpl = function trpl() {
32578 if (!this.curve.zeroA)
32579 return this.dbl().add(this);
32580
32581 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32582 // 5M + 10S + ...
32583
32584 // XX = X1^2
32585 var xx = this.x.redSqr();
32586 // YY = Y1^2
32587 var yy = this.y.redSqr();
32588 // ZZ = Z1^2
32589 var zz = this.z.redSqr();
32590 // YYYY = YY^2
32591 var yyyy = yy.redSqr();
32592 // M = 3 * XX + a * ZZ2; a = 0
32593 var m = xx.redAdd(xx).redIAdd(xx);
32594 // MM = M^2
32595 var mm = m.redSqr();
32596 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32597 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32598 e = e.redIAdd(e);
32599 e = e.redAdd(e).redIAdd(e);
32600 e = e.redISub(mm);
32601 // EE = E^2
32602 var ee = e.redSqr();
32603 // T = 16*YYYY
32604 var t = yyyy.redIAdd(yyyy);
32605 t = t.redIAdd(t);
32606 t = t.redIAdd(t);
32607 t = t.redIAdd(t);
32608 // U = (M + E)^2 - MM - EE - T
32609 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32610 // X3 = 4 * (X1 * EE - 4 * YY * U)
32611 var yyu4 = yy.redMul(u);
32612 yyu4 = yyu4.redIAdd(yyu4);
32613 yyu4 = yyu4.redIAdd(yyu4);
32614 var nx = this.x.redMul(ee).redISub(yyu4);
32615 nx = nx.redIAdd(nx);
32616 nx = nx.redIAdd(nx);
32617 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32618 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32619 ny = ny.redIAdd(ny);
32620 ny = ny.redIAdd(ny);
32621 ny = ny.redIAdd(ny);
32622 // Z3 = (Z1 + E)^2 - ZZ - EE
32623 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32624
32625 return this.curve.jpoint(nx, ny, nz);
32626 };
32627
32628 JPoint.prototype.mul = function mul(k, kbase) {
32629 k = new BN(k, kbase);
32630
32631 return this.curve._wnafMul(this, k);
32632 };
32633
32634 JPoint.prototype.eq = function eq(p) {
32635 if (p.type === 'affine')
32636 return this.eq(p.toJ());
32637
32638 if (this === p)
32639 return true;
32640
32641 // x1 * z2^2 == x2 * z1^2
32642 var z2 = this.z.redSqr();
32643 var pz2 = p.z.redSqr();
32644 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32645 return false;
32646
32647 // y1 * z2^3 == y2 * z1^3
32648 var z3 = z2.redMul(this.z);
32649 var pz3 = pz2.redMul(p.z);
32650 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32651 };
32652
32653 JPoint.prototype.eqXToP = function eqXToP(x) {
32654 var zs = this.z.redSqr();
32655 var rx = x.toRed(this.curve.red).redMul(zs);
32656 if (this.x.cmp(rx) === 0)
32657 return true;
32658
32659 var xc = x.clone();
32660 var t = this.curve.redN.redMul(zs);
32661 for (;;) {
32662 xc.iadd(this.curve.n);
32663 if (xc.cmp(this.curve.p) >= 0)
32664 return false;
32665
32666 rx.redIAdd(t);
32667 if (this.x.cmp(rx) === 0)
32668 return true;
32669 }
32670 return false;
32671 };
32672
32673 JPoint.prototype.inspect = function inspect() {
32674 if (this.isInfinity())
32675 return '<EC JPoint Infinity>';
32676 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32677 ' y: ' + this.y.toString(16, 2) +
32678 ' z: ' + this.z.toString(16, 2) + '>';
32679 };
32680
32681 JPoint.prototype.isInfinity = function isInfinity() {
32682 // XXX This code assumes that zero is always zero in red
32683 return this.z.cmpn(0) === 0;
32684 };
32685
32686 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32687 'use strict';
32688
32689 var curves = exports;
32690
32691 var hash = require('hash.js');
32692 var elliptic = require('../elliptic');
32693
32694 var assert = elliptic.utils.assert;
32695
32696 function PresetCurve(options) {
32697 if (options.type === 'short')
32698 this.curve = new elliptic.curve.short(options);
32699 else if (options.type === 'edwards')
32700 this.curve = new elliptic.curve.edwards(options);
32701 else
32702 this.curve = new elliptic.curve.mont(options);
32703 this.g = this.curve.g;
32704 this.n = this.curve.n;
32705 this.hash = options.hash;
32706
32707 assert(this.g.validate(), 'Invalid curve');
32708 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32709 }
32710 curves.PresetCurve = PresetCurve;
32711
32712 function defineCurve(name, options) {
32713 Object.defineProperty(curves, name, {
32714 configurable: true,
32715 enumerable: true,
32716 get: function() {
32717 var curve = new PresetCurve(options);
32718 Object.defineProperty(curves, name, {
32719 configurable: true,
32720 enumerable: true,
32721 value: curve
32722 });
32723 return curve;
32724 }
32725 });
32726 }
32727
32728 defineCurve('p192', {
32729 type: 'short',
32730 prime: 'p192',
32731 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32732 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32733 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32734 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32735 hash: hash.sha256,
32736 gRed: false,
32737 g: [
32738 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32739 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32740 ]
32741 });
32742
32743 defineCurve('p224', {
32744 type: 'short',
32745 prime: 'p224',
32746 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32747 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32748 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32749 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32750 hash: hash.sha256,
32751 gRed: false,
32752 g: [
32753 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32754 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32755 ]
32756 });
32757
32758 defineCurve('p256', {
32759 type: 'short',
32760 prime: null,
32761 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32762 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32763 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32764 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32765 hash: hash.sha256,
32766 gRed: false,
32767 g: [
32768 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32769 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32770 ]
32771 });
32772
32773 defineCurve('p384', {
32774 type: 'short',
32775 prime: null,
32776 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32777 'fffffffe ffffffff 00000000 00000000 ffffffff',
32778 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32779 'fffffffe ffffffff 00000000 00000000 fffffffc',
32780 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32781 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32782 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32783 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32784 hash: hash.sha384,
32785 gRed: false,
32786 g: [
32787 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32788 '5502f25d bf55296c 3a545e38 72760ab7',
32789 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32790 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32791 ]
32792 });
32793
32794 defineCurve('p521', {
32795 type: 'short',
32796 prime: null,
32797 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32798 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32799 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32800 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32801 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32802 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32803 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32804 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32805 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32806 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32807 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32808 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32809 hash: hash.sha512,
32810 gRed: false,
32811 g: [
32812 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32813 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32814 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32815 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32816 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32817 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32818 ]
32819 });
32820
32821 defineCurve('curve25519', {
32822 type: 'mont',
32823 prime: 'p25519',
32824 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32825 a: '76d06',
32826 b: '1',
32827 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32828 hash: hash.sha256,
32829 gRed: false,
32830 g: [
32831 '9'
32832 ]
32833 });
32834
32835 defineCurve('ed25519', {
32836 type: 'edwards',
32837 prime: 'p25519',
32838 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32839 a: '-1',
32840 c: '1',
32841 // -121665 * (121666^(-1)) (mod P)
32842 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32843 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32844 hash: hash.sha256,
32845 gRed: false,
32846 g: [
32847 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32848
32849 // 4/5
32850 '6666666666666666666666666666666666666666666666666666666666666658'
32851 ]
32852 });
32853
32854 var pre;
32855 try {
32856 pre = require('./precomputed/secp256k1');
32857 } catch (e) {
32858 pre = undefined;
32859 }
32860
32861 defineCurve('secp256k1', {
32862 type: 'short',
32863 prime: 'k256',
32864 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32865 a: '0',
32866 b: '7',
32867 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32868 h: '1',
32869 hash: hash.sha256,
32870
32871 // Precomputed endomorphism
32872 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32873 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32874 basis: [
32875 {
32876 a: '3086d221a7d46bcde86c90e49284eb15',
32877 b: '-e4437ed6010e88286f547fa90abfe4c3'
32878 },
32879 {
32880 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32881 b: '3086d221a7d46bcde86c90e49284eb15'
32882 }
32883 ],
32884
32885 gRed: false,
32886 g: [
32887 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32888 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32889 pre
32890 ]
32891 });
32892
32893 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32894 'use strict';
32895
32896 var BN = require('bn.js');
32897 var elliptic = require('../../elliptic');
32898 var utils = elliptic.utils;
32899 var assert = utils.assert;
32900
32901 var KeyPair = require('./key');
32902 var Signature = require('./signature');
32903
32904 function EC(options) {
32905 if (!(this instanceof EC))
32906 return new EC(options);
32907
32908 // Shortcut `elliptic.ec(curve-name)`
32909 if (typeof options === 'string') {
32910 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32911
32912 options = elliptic.curves[options];
32913 }
32914
32915 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32916 if (options instanceof elliptic.curves.PresetCurve)
32917 options = { curve: options };
32918
32919 this.curve = options.curve.curve;
32920 this.n = this.curve.n;
32921 this.nh = this.n.ushrn(1);
32922 this.g = this.curve.g;
32923
32924 // Point on curve
32925 this.g = options.curve.g;
32926 this.g.precompute(options.curve.n.bitLength() + 1);
32927
32928 // Hash for function for DRBG
32929 this.hash = options.hash || options.curve.hash;
32930 }
32931 module.exports = EC;
32932
32933 EC.prototype.keyPair = function keyPair(options) {
32934 return new KeyPair(this, options);
32935 };
32936
32937 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32938 return KeyPair.fromPrivate(this, priv, enc);
32939 };
32940
32941 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32942 return KeyPair.fromPublic(this, pub, enc);
32943 };
32944
32945 EC.prototype.genKeyPair = function genKeyPair(options) {
32946 if (!options)
32947 options = {};
32948
32949 // Instantiate Hmac_DRBG
32950 var drbg = new elliptic.hmacDRBG({
32951 hash: this.hash,
32952 pers: options.pers,
32953 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32954 nonce: this.n.toArray()
32955 });
32956
32957 var bytes = this.n.byteLength();
32958 var ns2 = this.n.sub(new BN(2));
32959 do {
32960 var priv = new BN(drbg.generate(bytes));
32961 if (priv.cmp(ns2) > 0)
32962 continue;
32963
32964 priv.iaddn(1);
32965 return this.keyFromPrivate(priv);
32966 } while (true);
32967 };
32968
32969 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32970 var delta = msg.byteLength() * 8 - this.n.bitLength();
32971 if (delta > 0)
32972 msg = msg.ushrn(delta);
32973 if (!truncOnly && msg.cmp(this.n) >= 0)
32974 return msg.sub(this.n);
32975 else
32976 return msg;
32977 };
32978
32979 EC.prototype.sign = function sign(msg, key, enc, options) {
32980 if (typeof enc === 'object') {
32981 options = enc;
32982 enc = null;
32983 }
32984 if (!options)
32985 options = {};
32986
32987 key = this.keyFromPrivate(key, enc);
32988 msg = this._truncateToN(new BN(msg, 16));
32989
32990 // Zero-extend key to provide enough entropy
32991 var bytes = this.n.byteLength();
32992 var bkey = key.getPrivate().toArray('be', bytes);
32993
32994 // Zero-extend nonce to have the same byte size as N
32995 var nonce = msg.toArray('be', bytes);
32996
32997 // Instantiate Hmac_DRBG
32998 var drbg = new elliptic.hmacDRBG({
32999 hash: this.hash,
33000 entropy: bkey,
33001 nonce: nonce,
33002 pers: options.pers,
33003 persEnc: options.persEnc
33004 });
33005
33006 // Number of bytes to generate
33007 var ns1 = this.n.sub(new BN(1));
33008
33009 for (var iter = 0; true; iter++) {
33010 var k = options.k ?
33011 options.k(iter) :
33012 new BN(drbg.generate(this.n.byteLength()));
33013 k = this._truncateToN(k, true);
33014 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
33015 continue;
33016
33017 var kp = this.g.mul(k);
33018 if (kp.isInfinity())
33019 continue;
33020
33021 var kpX = kp.getX();
33022 var r = kpX.umod(this.n);
33023 if (r.cmpn(0) === 0)
33024 continue;
33025
33026 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
33027 s = s.umod(this.n);
33028 if (s.cmpn(0) === 0)
33029 continue;
33030
33031 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
33032 (kpX.cmp(r) !== 0 ? 2 : 0);
33033
33034 // Use complement of `s`, if it is > `n / 2`
33035 if (options.canonical && s.cmp(this.nh) > 0) {
33036 s = this.n.sub(s);
33037 recoveryParam ^= 1;
33038 }
33039
33040 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
33041 }
33042 };
33043
33044 EC.prototype.verify = function verify(msg, signature, key, enc) {
33045 msg = this._truncateToN(new BN(msg, 16));
33046 key = this.keyFromPublic(key, enc);
33047 signature = new Signature(signature, 'hex');
33048
33049 // Perform primitive values validation
33050 var r = signature.r;
33051 var s = signature.s;
33052 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33053 return false;
33054 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33055 return false;
33056
33057 // Validate signature
33058 var sinv = s.invm(this.n);
33059 var u1 = sinv.mul(msg).umod(this.n);
33060 var u2 = sinv.mul(r).umod(this.n);
33061
33062 if (!this.curve._maxwellTrick) {
33063 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33064 if (p.isInfinity())
33065 return false;
33066
33067 return p.getX().umod(this.n).cmp(r) === 0;
33068 }
33069
33070 // NOTE: Greg Maxwell's trick, inspired by:
33071 // https://git.io/vad3K
33072
33073 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33074 if (p.isInfinity())
33075 return false;
33076
33077 // Compare `p.x` of Jacobian point with `r`,
33078 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33079 // inverse of `p.z^2`
33080 return p.eqXToP(r);
33081 };
33082
33083 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33084 assert((3 & j) === j, 'The recovery param is more than two bits');
33085 signature = new Signature(signature, enc);
33086
33087 var n = this.n;
33088 var e = new BN(msg);
33089 var r = signature.r;
33090 var s = signature.s;
33091
33092 // A set LSB signifies that the y-coordinate is odd
33093 var isYOdd = j & 1;
33094 var isSecondKey = j >> 1;
33095 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33096 throw new Error('Unable to find sencond key candinate');
33097
33098 // 1.1. Let x = r + jn.
33099 if (isSecondKey)
33100 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33101 else
33102 r = this.curve.pointFromX(r, isYOdd);
33103
33104 var rInv = signature.r.invm(n);
33105 var s1 = n.sub(e).mul(rInv).umod(n);
33106 var s2 = s.mul(rInv).umod(n);
33107
33108 // 1.6.1 Compute Q = r^-1 (sR - eG)
33109 // Q = r^-1 (sR + -eG)
33110 return this.g.mulAdd(s1, r, s2);
33111 };
33112
33113 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33114 signature = new Signature(signature, enc);
33115 if (signature.recoveryParam !== null)
33116 return signature.recoveryParam;
33117
33118 for (var i = 0; i < 4; i++) {
33119 var Qprime;
33120 try {
33121 Qprime = this.recoverPubKey(e, signature, i);
33122 } catch (e) {
33123 continue;
33124 }
33125
33126 if (Qprime.eq(Q))
33127 return i;
33128 }
33129 throw new Error('Unable to find valid recovery factor');
33130 };
33131
33132 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33133 'use strict';
33134
33135 var BN = require('bn.js');
33136 var elliptic = require('../../elliptic');
33137 var utils = elliptic.utils;
33138 var assert = utils.assert;
33139
33140 function KeyPair(ec, options) {
33141 this.ec = ec;
33142 this.priv = null;
33143 this.pub = null;
33144
33145 // KeyPair(ec, { priv: ..., pub: ... })
33146 if (options.priv)
33147 this._importPrivate(options.priv, options.privEnc);
33148 if (options.pub)
33149 this._importPublic(options.pub, options.pubEnc);
33150 }
33151 module.exports = KeyPair;
33152
33153 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33154 if (pub instanceof KeyPair)
33155 return pub;
33156
33157 return new KeyPair(ec, {
33158 pub: pub,
33159 pubEnc: enc
33160 });
33161 };
33162
33163 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33164 if (priv instanceof KeyPair)
33165 return priv;
33166
33167 return new KeyPair(ec, {
33168 priv: priv,
33169 privEnc: enc
33170 });
33171 };
33172
33173 KeyPair.prototype.validate = function validate() {
33174 var pub = this.getPublic();
33175
33176 if (pub.isInfinity())
33177 return { result: false, reason: 'Invalid public key' };
33178 if (!pub.validate())
33179 return { result: false, reason: 'Public key is not a point' };
33180 if (!pub.mul(this.ec.curve.n).isInfinity())
33181 return { result: false, reason: 'Public key * N != O' };
33182
33183 return { result: true, reason: null };
33184 };
33185
33186 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33187 // compact is optional argument
33188 if (typeof compact === 'string') {
33189 enc = compact;
33190 compact = null;
33191 }
33192
33193 if (!this.pub)
33194 this.pub = this.ec.g.mul(this.priv);
33195
33196 if (!enc)
33197 return this.pub;
33198
33199 return this.pub.encode(enc, compact);
33200 };
33201
33202 KeyPair.prototype.getPrivate = function getPrivate(enc) {
33203 if (enc === 'hex')
33204 return this.priv.toString(16, 2);
33205 else
33206 return this.priv;
33207 };
33208
33209 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33210 this.priv = new BN(key, enc || 16);
33211
33212 // Ensure that the priv won't be bigger than n, otherwise we may fail
33213 // in fixed multiplication method
33214 this.priv = this.priv.umod(this.ec.curve.n);
33215 };
33216
33217 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33218 if (key.x || key.y) {
33219 // Montgomery points only have an `x` coordinate.
33220 // Weierstrass/Edwards points on the other hand have both `x` and
33221 // `y` coordinates.
33222 if (this.ec.curve.type === 'mont') {
33223 assert(key.x, 'Need x coordinate');
33224 } else if (this.ec.curve.type === 'short' ||
33225 this.ec.curve.type === 'edwards') {
33226 assert(key.x && key.y, 'Need both x and y coordinate');
33227 }
33228 this.pub = this.ec.curve.point(key.x, key.y);
33229 return;
33230 }
33231 this.pub = this.ec.curve.decodePoint(key, enc);
33232 };
33233
33234 // ECDH
33235 KeyPair.prototype.derive = function derive(pub) {
33236 return pub.mul(this.priv).getX();
33237 };
33238
33239 // ECDSA
33240 KeyPair.prototype.sign = function sign(msg, enc, options) {
33241 return this.ec.sign(msg, this, enc, options);
33242 };
33243
33244 KeyPair.prototype.verify = function verify(msg, signature) {
33245 return this.ec.verify(msg, signature, this);
33246 };
33247
33248 KeyPair.prototype.inspect = function inspect() {
33249 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33250 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33251 };
33252
33253 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33254 'use strict';
33255
33256 var BN = require('bn.js');
33257
33258 var elliptic = require('../../elliptic');
33259 var utils = elliptic.utils;
33260 var assert = utils.assert;
33261
33262 function Signature(options, enc) {
33263 if (options instanceof Signature)
33264 return options;
33265
33266 if (this._importDER(options, enc))
33267 return;
33268
33269 assert(options.r && options.s, 'Signature without r or s');
33270 this.r = new BN(options.r, 16);
33271 this.s = new BN(options.s, 16);
33272 if (options.recoveryParam === undefined)
33273 this.recoveryParam = null;
33274 else
33275 this.recoveryParam = options.recoveryParam;
33276 }
33277 module.exports = Signature;
33278
33279 function Position() {
33280 this.place = 0;
33281 }
33282
33283 function getLength(buf, p) {
33284 var initial = buf[p.place++];
33285 if (!(initial & 0x80)) {
33286 return initial;
33287 }
33288 var octetLen = initial & 0xf;
33289 var val = 0;
33290 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33291 val <<= 8;
33292 val |= buf[off];
33293 }
33294 p.place = off;
33295 return val;
33296 }
33297
33298 function rmPadding(buf) {
33299 var i = 0;
33300 var len = buf.length - 1;
33301 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33302 i++;
33303 }
33304 if (i === 0) {
33305 return buf;
33306 }
33307 return buf.slice(i);
33308 }
33309
33310 Signature.prototype._importDER = function _importDER(data, enc) {
33311 data = utils.toArray(data, enc);
33312 var p = new Position();
33313 if (data[p.place++] !== 0x30) {
33314 return false;
33315 }
33316 var len = getLength(data, p);
33317 if ((len + p.place) !== data.length) {
33318 return false;
33319 }
33320 if (data[p.place++] !== 0x02) {
33321 return false;
33322 }
33323 var rlen = getLength(data, p);
33324 var r = data.slice(p.place, rlen + p.place);
33325 p.place += rlen;
33326 if (data[p.place++] !== 0x02) {
33327 return false;
33328 }
33329 var slen = getLength(data, p);
33330 if (data.length !== slen + p.place) {
33331 return false;
33332 }
33333 var s = data.slice(p.place, slen + p.place);
33334 if (r[0] === 0 && (r[1] & 0x80)) {
33335 r = r.slice(1);
33336 }
33337 if (s[0] === 0 && (s[1] & 0x80)) {
33338 s = s.slice(1);
33339 }
33340
33341 this.r = new BN(r);
33342 this.s = new BN(s);
33343 this.recoveryParam = null;
33344
33345 return true;
33346 };
33347
33348 function constructLength(arr, len) {
33349 if (len < 0x80) {
33350 arr.push(len);
33351 return;
33352 }
33353 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33354 arr.push(octets | 0x80);
33355 while (--octets) {
33356 arr.push((len >>> (octets << 3)) & 0xff);
33357 }
33358 arr.push(len);
33359 }
33360
33361 Signature.prototype.toDER = function toDER(enc) {
33362 var r = this.r.toArray();
33363 var s = this.s.toArray();
33364
33365 // Pad values
33366 if (r[0] & 0x80)
33367 r = [ 0 ].concat(r);
33368 // Pad values
33369 if (s[0] & 0x80)
33370 s = [ 0 ].concat(s);
33371
33372 r = rmPadding(r);
33373 s = rmPadding(s);
33374
33375 while (!s[0] && !(s[1] & 0x80)) {
33376 s = s.slice(1);
33377 }
33378 var arr = [ 0x02 ];
33379 constructLength(arr, r.length);
33380 arr = arr.concat(r);
33381 arr.push(0x02);
33382 constructLength(arr, s.length);
33383 var backHalf = arr.concat(s);
33384 var res = [ 0x30 ];
33385 constructLength(res, backHalf.length);
33386 res = res.concat(backHalf);
33387 return utils.encode(res, enc);
33388 };
33389
33390 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33391 'use strict';
33392
33393 var hash = require('hash.js');
33394 var elliptic = require('../../elliptic');
33395 var utils = elliptic.utils;
33396 var assert = utils.assert;
33397 var parseBytes = utils.parseBytes;
33398 var KeyPair = require('./key');
33399 var Signature = require('./signature');
33400
33401 function EDDSA(curve) {
33402 assert(curve === 'ed25519', 'only tested with ed25519 so far');
33403
33404 if (!(this instanceof EDDSA))
33405 return new EDDSA(curve);
33406
33407 var curve = elliptic.curves[curve].curve;
33408 this.curve = curve;
33409 this.g = curve.g;
33410 this.g.precompute(curve.n.bitLength() + 1);
33411
33412 this.pointClass = curve.point().constructor;
33413 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33414 this.hash = hash.sha512;
33415 }
33416
33417 module.exports = EDDSA;
33418
33419 /**
33420 * @param {Array|String} message - message bytes
33421 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
33422 * @returns {Signature} - signature
33423 */
33424 EDDSA.prototype.sign = function sign(message, secret) {
33425 message = parseBytes(message);
33426 var key = this.keyFromSecret(secret);
33427 var r = this.hashInt(key.messagePrefix(), message);
33428 var R = this.g.mul(r);
33429 var Rencoded = this.encodePoint(R);
33430 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33431 .mul(key.priv());
33432 var S = r.add(s_).umod(this.curve.n);
33433 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33434 };
33435
33436 /**
33437 * @param {Array} message - message bytes
33438 * @param {Array|String|Signature} sig - sig bytes
33439 * @param {Array|String|Point|KeyPair} pub - public key
33440 * @returns {Boolean} - true if public key matches sig of message
33441 */
33442 EDDSA.prototype.verify = function verify(message, sig, pub) {
33443 message = parseBytes(message);
33444 sig = this.makeSignature(sig);
33445 var key = this.keyFromPublic(pub);
33446 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33447 var SG = this.g.mul(sig.S());
33448 var RplusAh = sig.R().add(key.pub().mul(h));
33449 return RplusAh.eq(SG);
33450 };
33451
33452 EDDSA.prototype.hashInt = function hashInt() {
33453 var hash = this.hash();
33454 for (var i = 0; i < arguments.length; i++)
33455 hash.update(arguments[i]);
33456 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33457 };
33458
33459 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33460 return KeyPair.fromPublic(this, pub);
33461 };
33462
33463 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33464 return KeyPair.fromSecret(this, secret);
33465 };
33466
33467 EDDSA.prototype.makeSignature = function makeSignature(sig) {
33468 if (sig instanceof Signature)
33469 return sig;
33470 return new Signature(this, sig);
33471 };
33472
33473 /**
33474 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33475 *
33476 * EDDSA defines methods for encoding and decoding points and integers. These are
33477 * helper convenience methods, that pass along to utility functions implied
33478 * parameters.
33479 *
33480 */
33481 EDDSA.prototype.encodePoint = function encodePoint(point) {
33482 var enc = point.getY().toArray('le', this.encodingLength);
33483 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33484 return enc;
33485 };
33486
33487 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33488 bytes = utils.parseBytes(bytes);
33489
33490 var lastIx = bytes.length - 1;
33491 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33492 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
33493
33494 var y = utils.intFromLE(normed);
33495 return this.curve.pointFromY(y, xIsOdd);
33496 };
33497
33498 EDDSA.prototype.encodeInt = function encodeInt(num) {
33499 return num.toArray('le', this.encodingLength);
33500 };
33501
33502 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33503 return utils.intFromLE(bytes);
33504 };
33505
33506 EDDSA.prototype.isPoint = function isPoint(val) {
33507 return val instanceof this.pointClass;
33508 };
33509
33510 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33511 'use strict';
33512
33513 var elliptic = require('../../elliptic');
33514 var utils = elliptic.utils;
33515 var assert = utils.assert;
33516 var parseBytes = utils.parseBytes;
33517 var cachedProperty = utils.cachedProperty;
33518
33519 /**
33520 * @param {EDDSA} eddsa - instance
33521 * @param {Object} params - public/private key parameters
33522 *
33523 * @param {Array<Byte>} [params.secret] - secret seed bytes
33524 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33525 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33526 *
33527 */
33528 function KeyPair(eddsa, params) {
33529 this.eddsa = eddsa;
33530 this._secret = parseBytes(params.secret);
33531 if (eddsa.isPoint(params.pub))
33532 this._pub = params.pub;
33533 else
33534 this._pubBytes = parseBytes(params.pub);
33535 }
33536
33537 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33538 if (pub instanceof KeyPair)
33539 return pub;
33540 return new KeyPair(eddsa, { pub: pub });
33541 };
33542
33543 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33544 if (secret instanceof KeyPair)
33545 return secret;
33546 return new KeyPair(eddsa, { secret: secret });
33547 };
33548
33549 KeyPair.prototype.secret = function secret() {
33550 return this._secret;
33551 };
33552
33553 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33554 return this.eddsa.encodePoint(this.pub());
33555 });
33556
33557 cachedProperty(KeyPair, 'pub', function pub() {
33558 if (this._pubBytes)
33559 return this.eddsa.decodePoint(this._pubBytes);
33560 return this.eddsa.g.mul(this.priv());
33561 });
33562
33563 cachedProperty(KeyPair, 'privBytes', function privBytes() {
33564 var eddsa = this.eddsa;
33565 var hash = this.hash();
33566 var lastIx = eddsa.encodingLength - 1;
33567
33568 var a = hash.slice(0, eddsa.encodingLength);
33569 a[0] &= 248;
33570 a[lastIx] &= 127;
33571 a[lastIx] |= 64;
33572
33573 return a;
33574 });
33575
33576 cachedProperty(KeyPair, 'priv', function priv() {
33577 return this.eddsa.decodeInt(this.privBytes());
33578 });
33579
33580 cachedProperty(KeyPair, 'hash', function hash() {
33581 return this.eddsa.hash().update(this.secret()).digest();
33582 });
33583
33584 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33585 return this.hash().slice(this.eddsa.encodingLength);
33586 });
33587
33588 KeyPair.prototype.sign = function sign(message) {
33589 assert(this._secret, 'KeyPair can only verify');
33590 return this.eddsa.sign(message, this);
33591 };
33592
33593 KeyPair.prototype.verify = function verify(message, sig) {
33594 return this.eddsa.verify(message, sig, this);
33595 };
33596
33597 KeyPair.prototype.getSecret = function getSecret(enc) {
33598 assert(this._secret, 'KeyPair is public only');
33599 return utils.encode(this.secret(), enc);
33600 };
33601
33602 KeyPair.prototype.getPublic = function getPublic(enc) {
33603 return utils.encode(this.pubBytes(), enc);
33604 };
33605
33606 module.exports = KeyPair;
33607
33608 },{"../../elliptic":39}],51:[function(require,module,exports){
33609 'use strict';
33610
33611 var BN = require('bn.js');
33612 var elliptic = require('../../elliptic');
33613 var utils = elliptic.utils;
33614 var assert = utils.assert;
33615 var cachedProperty = utils.cachedProperty;
33616 var parseBytes = utils.parseBytes;
33617
33618 /**
33619 * @param {EDDSA} eddsa - eddsa instance
33620 * @param {Array<Bytes>|Object} sig -
33621 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33622 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33623 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33624 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33625 */
33626 function Signature(eddsa, sig) {
33627 this.eddsa = eddsa;
33628
33629 if (typeof sig !== 'object')
33630 sig = parseBytes(sig);
33631
33632 if (Array.isArray(sig)) {
33633 sig = {
33634 R: sig.slice(0, eddsa.encodingLength),
33635 S: sig.slice(eddsa.encodingLength)
33636 };
33637 }
33638
33639 assert(sig.R && sig.S, 'Signature without R or S');
33640
33641 if (eddsa.isPoint(sig.R))
33642 this._R = sig.R;
33643 if (sig.S instanceof BN)
33644 this._S = sig.S;
33645
33646 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33647 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
33648 }
33649
33650 cachedProperty(Signature, 'S', function S() {
33651 return this.eddsa.decodeInt(this.Sencoded());
33652 });
33653
33654 cachedProperty(Signature, 'R', function R() {
33655 return this.eddsa.decodePoint(this.Rencoded());
33656 });
33657
33658 cachedProperty(Signature, 'Rencoded', function Rencoded() {
33659 return this.eddsa.encodePoint(this.R());
33660 });
33661
33662 cachedProperty(Signature, 'Sencoded', function Sencoded() {
33663 return this.eddsa.encodeInt(this.S());
33664 });
33665
33666 Signature.prototype.toBytes = function toBytes() {
33667 return this.Rencoded().concat(this.Sencoded());
33668 };
33669
33670 Signature.prototype.toHex = function toHex() {
33671 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33672 };
33673
33674 module.exports = Signature;
33675
33676 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33677 'use strict';
33678
33679 var hash = require('hash.js');
33680 var elliptic = require('../elliptic');
33681 var utils = elliptic.utils;
33682 var assert = utils.assert;
33683
33684 function HmacDRBG(options) {
33685 if (!(this instanceof HmacDRBG))
33686 return new HmacDRBG(options);
33687 this.hash = options.hash;
33688 this.predResist = !!options.predResist;
33689
33690 this.outLen = this.hash.outSize;
33691 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
33692
33693 this.reseed = null;
33694 this.reseedInterval = null;
33695 this.K = null;
33696 this.V = null;
33697
33698 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33699 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33700 var pers = utils.toArray(options.pers, options.persEnc);
33701 assert(entropy.length >= (this.minEntropy / 8),
33702 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33703 this._init(entropy, nonce, pers);
33704 }
33705 module.exports = HmacDRBG;
33706
33707 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33708 var seed = entropy.concat(nonce).concat(pers);
33709
33710 this.K = new Array(this.outLen / 8);
33711 this.V = new Array(this.outLen / 8);
33712 for (var i = 0; i < this.V.length; i++) {
33713 this.K[i] = 0x00;
33714 this.V[i] = 0x01;
33715 }
33716
33717 this._update(seed);
33718 this.reseed = 1;
33719 this.reseedInterval = 0x1000000000000; // 2^48
33720 };
33721
33722 HmacDRBG.prototype._hmac = function hmac() {
33723 return new hash.hmac(this.hash, this.K);
33724 };
33725
33726 HmacDRBG.prototype._update = function update(seed) {
33727 var kmac = this._hmac()
33728 .update(this.V)
33729 .update([ 0x00 ]);
33730 if (seed)
33731 kmac = kmac.update(seed);
33732 this.K = kmac.digest();
33733 this.V = this._hmac().update(this.V).digest();
33734 if (!seed)
33735 return;
33736
33737 this.K = this._hmac()
33738 .update(this.V)
33739 .update([ 0x01 ])
33740 .update(seed)
33741 .digest();
33742 this.V = this._hmac().update(this.V).digest();
33743 };
33744
33745 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33746 // Optional entropy enc
33747 if (typeof entropyEnc !== 'string') {
33748 addEnc = add;
33749 add = entropyEnc;
33750 entropyEnc = null;
33751 }
33752
33753 entropy = utils.toBuffer(entropy, entropyEnc);
33754 add = utils.toBuffer(add, addEnc);
33755
33756 assert(entropy.length >= (this.minEntropy / 8),
33757 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33758
33759 this._update(entropy.concat(add || []));
33760 this.reseed = 1;
33761 };
33762
33763 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33764 if (this.reseed > this.reseedInterval)
33765 throw new Error('Reseed is required');
33766
33767 // Optional encoding
33768 if (typeof enc !== 'string') {
33769 addEnc = add;
33770 add = enc;
33771 enc = null;
33772 }
33773
33774 // Optional additional data
33775 if (add) {
33776 add = utils.toArray(add, addEnc);
33777 this._update(add);
33778 }
33779
33780 var temp = [];
33781 while (temp.length < len) {
33782 this.V = this._hmac().update(this.V).digest();
33783 temp = temp.concat(this.V);
33784 }
33785
33786 var res = temp.slice(0, len);
33787 this._update(add);
33788 this.reseed++;
33789 return utils.encode(res, enc);
33790 };
33791
33792 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33793 module.exports = {
33794 doubles: {
33795 step: 4,
33796 points: [
33797 [
33798 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33799 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33800 ],
33801 [
33802 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33803 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33804 ],
33805 [
33806 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33807 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33808 ],
33809 [
33810 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33811 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33812 ],
33813 [
33814 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33815 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33816 ],
33817 [
33818 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33819 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33820 ],
33821 [
33822 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33823 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33824 ],
33825 [
33826 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33827 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33828 ],
33829 [
33830 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33831 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33832 ],
33833 [
33834 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33835 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33836 ],
33837 [
33838 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33839 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33840 ],
33841 [
33842 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33843 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33844 ],
33845 [
33846 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33847 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33848 ],
33849 [
33850 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33851 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33852 ],
33853 [
33854 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33855 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33856 ],
33857 [
33858 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33859 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33860 ],
33861 [
33862 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33863 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33864 ],
33865 [
33866 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33867 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33868 ],
33869 [
33870 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33871 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33872 ],
33873 [
33874 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33875 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33876 ],
33877 [
33878 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33879 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33880 ],
33881 [
33882 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33883 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33884 ],
33885 [
33886 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33887 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33888 ],
33889 [
33890 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33891 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33892 ],
33893 [
33894 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33895 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33896 ],
33897 [
33898 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33899 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33900 ],
33901 [
33902 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33903 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33904 ],
33905 [
33906 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33907 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33908 ],
33909 [
33910 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33911 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33912 ],
33913 [
33914 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33915 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33916 ],
33917 [
33918 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33919 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33920 ],
33921 [
33922 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33923 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33924 ],
33925 [
33926 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33927 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33928 ],
33929 [
33930 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33931 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33932 ],
33933 [
33934 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33935 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33936 ],
33937 [
33938 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33939 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33940 ],
33941 [
33942 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33943 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33944 ],
33945 [
33946 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33947 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33948 ],
33949 [
33950 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33951 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33952 ],
33953 [
33954 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33955 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33956 ],
33957 [
33958 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33959 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33960 ],
33961 [
33962 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33963 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33964 ],
33965 [
33966 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33967 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33968 ],
33969 [
33970 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33971 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33972 ],
33973 [
33974 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33975 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33976 ],
33977 [
33978 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33979 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33980 ],
33981 [
33982 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33983 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33984 ],
33985 [
33986 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33987 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33988 ],
33989 [
33990 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33991 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33992 ],
33993 [
33994 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33995 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33996 ],
33997 [
33998 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33999 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
34000 ],
34001 [
34002 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
34003 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
34004 ],
34005 [
34006 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
34007 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
34008 ],
34009 [
34010 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
34011 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
34012 ],
34013 [
34014 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
34015 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
34016 ],
34017 [
34018 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
34019 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
34020 ],
34021 [
34022 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
34023 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
34024 ],
34025 [
34026 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
34027 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
34028 ],
34029 [
34030 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
34031 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
34032 ],
34033 [
34034 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
34035 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
34036 ],
34037 [
34038 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
34039 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
34040 ],
34041 [
34042 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
34043 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
34044 ],
34045 [
34046 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34047 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34048 ],
34049 [
34050 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34051 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34052 ],
34053 [
34054 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34055 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34056 ]
34057 ]
34058 },
34059 naf: {
34060 wnd: 7,
34061 points: [
34062 [
34063 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34064 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34065 ],
34066 [
34067 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34068 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34069 ],
34070 [
34071 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34072 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34073 ],
34074 [
34075 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34076 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34077 ],
34078 [
34079 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34080 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34081 ],
34082 [
34083 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34084 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34085 ],
34086 [
34087 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34088 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34089 ],
34090 [
34091 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34092 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34093 ],
34094 [
34095 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34096 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34097 ],
34098 [
34099 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34100 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34101 ],
34102 [
34103 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34104 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34105 ],
34106 [
34107 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34108 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34109 ],
34110 [
34111 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34112 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34113 ],
34114 [
34115 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34116 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34117 ],
34118 [
34119 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34120 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34121 ],
34122 [
34123 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34124 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34125 ],
34126 [
34127 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34128 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34129 ],
34130 [
34131 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34132 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34133 ],
34134 [
34135 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34136 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34137 ],
34138 [
34139 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34140 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34141 ],
34142 [
34143 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34144 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34145 ],
34146 [
34147 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34148 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34149 ],
34150 [
34151 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34152 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34153 ],
34154 [
34155 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34156 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34157 ],
34158 [
34159 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34160 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34161 ],
34162 [
34163 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34164 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34165 ],
34166 [
34167 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34168 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34169 ],
34170 [
34171 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34172 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34173 ],
34174 [
34175 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34176 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34177 ],
34178 [
34179 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34180 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34181 ],
34182 [
34183 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34184 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34185 ],
34186 [
34187 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34188 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34189 ],
34190 [
34191 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34192 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34193 ],
34194 [
34195 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34196 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34197 ],
34198 [
34199 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34200 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34201 ],
34202 [
34203 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34204 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34205 ],
34206 [
34207 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34208 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34209 ],
34210 [
34211 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34212 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34213 ],
34214 [
34215 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34216 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34217 ],
34218 [
34219 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34220 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34221 ],
34222 [
34223 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34224 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34225 ],
34226 [
34227 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34228 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34229 ],
34230 [
34231 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34232 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34233 ],
34234 [
34235 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34236 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34237 ],
34238 [
34239 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34240 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34241 ],
34242 [
34243 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34244 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34245 ],
34246 [
34247 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34248 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34249 ],
34250 [
34251 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34252 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34253 ],
34254 [
34255 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34256 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34257 ],
34258 [
34259 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34260 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34261 ],
34262 [
34263 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34264 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34265 ],
34266 [
34267 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34268 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34269 ],
34270 [
34271 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34272 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34273 ],
34274 [
34275 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34276 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34277 ],
34278 [
34279 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34280 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34281 ],
34282 [
34283 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34284 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34285 ],
34286 [
34287 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34288 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34289 ],
34290 [
34291 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34292 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34293 ],
34294 [
34295 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34296 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34297 ],
34298 [
34299 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34300 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34301 ],
34302 [
34303 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34304 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34305 ],
34306 [
34307 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34308 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34309 ],
34310 [
34311 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34312 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34313 ],
34314 [
34315 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34316 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34317 ],
34318 [
34319 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34320 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34321 ],
34322 [
34323 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34324 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34325 ],
34326 [
34327 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34328 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34329 ],
34330 [
34331 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34332 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34333 ],
34334 [
34335 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34336 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34337 ],
34338 [
34339 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34340 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34341 ],
34342 [
34343 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34344 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34345 ],
34346 [
34347 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34348 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34349 ],
34350 [
34351 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34352 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34353 ],
34354 [
34355 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34356 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34357 ],
34358 [
34359 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34360 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34361 ],
34362 [
34363 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34364 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34365 ],
34366 [
34367 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34368 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34369 ],
34370 [
34371 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34372 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34373 ],
34374 [
34375 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34376 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34377 ],
34378 [
34379 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34380 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34381 ],
34382 [
34383 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34384 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34385 ],
34386 [
34387 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34388 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34389 ],
34390 [
34391 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34392 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34393 ],
34394 [
34395 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34396 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34397 ],
34398 [
34399 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34400 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34401 ],
34402 [
34403 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34404 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34405 ],
34406 [
34407 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34408 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34409 ],
34410 [
34411 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34412 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34413 ],
34414 [
34415 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34416 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34417 ],
34418 [
34419 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34420 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34421 ],
34422 [
34423 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34424 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34425 ],
34426 [
34427 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34428 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34429 ],
34430 [
34431 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34432 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34433 ],
34434 [
34435 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34436 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34437 ],
34438 [
34439 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34440 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34441 ],
34442 [
34443 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34444 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34445 ],
34446 [
34447 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34448 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34449 ],
34450 [
34451 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34452 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34453 ],
34454 [
34455 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34456 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34457 ],
34458 [
34459 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34460 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34461 ],
34462 [
34463 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34464 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34465 ],
34466 [
34467 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34468 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34469 ],
34470 [
34471 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34472 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34473 ],
34474 [
34475 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34476 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34477 ],
34478 [
34479 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34480 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34481 ],
34482 [
34483 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34484 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34485 ],
34486 [
34487 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34488 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34489 ],
34490 [
34491 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34492 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34493 ],
34494 [
34495 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34496 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34497 ],
34498 [
34499 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34500 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34501 ],
34502 [
34503 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34504 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34505 ],
34506 [
34507 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34508 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34509 ],
34510 [
34511 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34512 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34513 ],
34514 [
34515 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34516 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34517 ],
34518 [
34519 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34520 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34521 ],
34522 [
34523 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34524 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34525 ],
34526 [
34527 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34528 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34529 ],
34530 [
34531 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34532 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34533 ],
34534 [
34535 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34536 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34537 ],
34538 [
34539 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34540 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34541 ],
34542 [
34543 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34544 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34545 ],
34546 [
34547 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34548 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34549 ],
34550 [
34551 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34552 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34553 ],
34554 [
34555 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34556 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34557 ],
34558 [
34559 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34560 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34561 ],
34562 [
34563 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34564 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34565 ],
34566 [
34567 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34568 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34569 ]
34570 ]
34571 }
34572 };
34573
34574 },{}],54:[function(require,module,exports){
34575 'use strict';
34576
34577 var utils = exports;
34578 var BN = require('bn.js');
34579
34580 utils.assert = function assert(val, msg) {
34581 if (!val)
34582 throw new Error(msg || 'Assertion failed');
34583 };
34584
34585 function toArray(msg, enc) {
34586 if (Array.isArray(msg))
34587 return msg.slice();
34588 if (!msg)
34589 return [];
34590 var res = [];
34591 if (typeof msg !== 'string') {
34592 for (var i = 0; i < msg.length; i++)
34593 res[i] = msg[i] | 0;
34594 return res;
34595 }
34596 if (!enc) {
34597 for (var i = 0; i < msg.length; i++) {
34598 var c = msg.charCodeAt(i);
34599 var hi = c >> 8;
34600 var lo = c & 0xff;
34601 if (hi)
34602 res.push(hi, lo);
34603 else
34604 res.push(lo);
34605 }
34606 } else if (enc === 'hex') {
34607 msg = msg.replace(/[^a-z0-9]+/ig, '');
34608 if (msg.length % 2 !== 0)
34609 msg = '0' + msg;
34610 for (var i = 0; i < msg.length; i += 2)
34611 res.push(parseInt(msg[i] + msg[i + 1], 16));
34612 }
34613 return res;
34614 }
34615 utils.toArray = toArray;
34616
34617 function zero2(word) {
34618 if (word.length === 1)
34619 return '0' + word;
34620 else
34621 return word;
34622 }
34623 utils.zero2 = zero2;
34624
34625 function toHex(msg) {
34626 var res = '';
34627 for (var i = 0; i < msg.length; i++)
34628 res += zero2(msg[i].toString(16));
34629 return res;
34630 }
34631 utils.toHex = toHex;
34632
34633 utils.encode = function encode(arr, enc) {
34634 if (enc === 'hex')
34635 return toHex(arr);
34636 else
34637 return arr;
34638 };
34639
34640 // Represent num in a w-NAF form
34641 function getNAF(num, w) {
34642 var naf = [];
34643 var ws = 1 << (w + 1);
34644 var k = num.clone();
34645 while (k.cmpn(1) >= 0) {
34646 var z;
34647 if (k.isOdd()) {
34648 var mod = k.andln(ws - 1);
34649 if (mod > (ws >> 1) - 1)
34650 z = (ws >> 1) - mod;
34651 else
34652 z = mod;
34653 k.isubn(z);
34654 } else {
34655 z = 0;
34656 }
34657 naf.push(z);
34658
34659 // Optimization, shift by word if possible
34660 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34661 for (var i = 1; i < shift; i++)
34662 naf.push(0);
34663 k.iushrn(shift);
34664 }
34665
34666 return naf;
34667 }
34668 utils.getNAF = getNAF;
34669
34670 // Represent k1, k2 in a Joint Sparse Form
34671 function getJSF(k1, k2) {
34672 var jsf = [
34673 [],
34674 []
34675 ];
34676
34677 k1 = k1.clone();
34678 k2 = k2.clone();
34679 var d1 = 0;
34680 var d2 = 0;
34681 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34682
34683 // First phase
34684 var m14 = (k1.andln(3) + d1) & 3;
34685 var m24 = (k2.andln(3) + d2) & 3;
34686 if (m14 === 3)
34687 m14 = -1;
34688 if (m24 === 3)
34689 m24 = -1;
34690 var u1;
34691 if ((m14 & 1) === 0) {
34692 u1 = 0;
34693 } else {
34694 var m8 = (k1.andln(7) + d1) & 7;
34695 if ((m8 === 3 || m8 === 5) && m24 === 2)
34696 u1 = -m14;
34697 else
34698 u1 = m14;
34699 }
34700 jsf[0].push(u1);
34701
34702 var u2;
34703 if ((m24 & 1) === 0) {
34704 u2 = 0;
34705 } else {
34706 var m8 = (k2.andln(7) + d2) & 7;
34707 if ((m8 === 3 || m8 === 5) && m14 === 2)
34708 u2 = -m24;
34709 else
34710 u2 = m24;
34711 }
34712 jsf[1].push(u2);
34713
34714 // Second phase
34715 if (2 * d1 === u1 + 1)
34716 d1 = 1 - d1;
34717 if (2 * d2 === u2 + 1)
34718 d2 = 1 - d2;
34719 k1.iushrn(1);
34720 k2.iushrn(1);
34721 }
34722
34723 return jsf;
34724 }
34725 utils.getJSF = getJSF;
34726
34727 function cachedProperty(obj, name, computer) {
34728 var key = '_' + name;
34729 obj.prototype[name] = function cachedProperty() {
34730 return this[key] !== undefined ? this[key] :
34731 this[key] = computer.call(this);
34732 };
34733 }
34734 utils.cachedProperty = cachedProperty;
34735
34736 function parseBytes(bytes) {
34737 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34738 bytes;
34739 }
34740 utils.parseBytes = parseBytes;
34741
34742 function intFromLE(bytes) {
34743 return new BN(bytes, 'hex', 'le');
34744 }
34745 utils.intFromLE = intFromLE;
34746
34747
34748 },{"bn.js":33}],55:[function(require,module,exports){
34749 module.exports={
34750 "_args": [
34751 [
34752 {
34753 "raw": "elliptic@^6.2.3",
34754 "scope": null,
34755 "escapedName": "elliptic",
34756 "name": "elliptic",
34757 "rawSpec": "^6.2.3",
34758 "spec": ">=6.2.3 <7.0.0",
34759 "type": "range"
34760 },
34761 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34762 ]
34763 ],
34764 "_from": "elliptic@>=6.2.3 <7.0.0",
34765 "_id": "elliptic@6.3.3",
34766 "_inCache": true,
34767 "_location": "/elliptic",
34768 "_nodeVersion": "7.0.0",
34769 "_npmOperationalInternal": {
34770 "host": "packages-18-east.internal.npmjs.com",
34771 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34772 },
34773 "_npmUser": {
34774 "name": "indutny",
34775 "email": "fedor@indutny.com"
34776 },
34777 "_npmVersion": "3.10.8",
34778 "_phantomChildren": {},
34779 "_requested": {
34780 "raw": "elliptic@^6.2.3",
34781 "scope": null,
34782 "escapedName": "elliptic",
34783 "name": "elliptic",
34784 "rawSpec": "^6.2.3",
34785 "spec": ">=6.2.3 <7.0.0",
34786 "type": "range"
34787 },
34788 "_requiredBy": [
34789 "/browserify-sign",
34790 "/create-ecdh",
34791 "/secp256k1"
34792 ],
34793 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34794 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34795 "_shrinkwrap": null,
34796 "_spec": "elliptic@^6.2.3",
34797 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34798 "author": {
34799 "name": "Fedor Indutny",
34800 "email": "fedor@indutny.com"
34801 },
34802 "bugs": {
34803 "url": "https://github.com/indutny/elliptic/issues"
34804 },
34805 "dependencies": {
34806 "bn.js": "^4.4.0",
34807 "brorand": "^1.0.1",
34808 "hash.js": "^1.0.0",
34809 "inherits": "^2.0.1"
34810 },
34811 "description": "EC cryptography",
34812 "devDependencies": {
34813 "brfs": "^1.4.3",
34814 "coveralls": "^2.11.3",
34815 "grunt": "^0.4.5",
34816 "grunt-browserify": "^5.0.0",
34817 "grunt-cli": "^1.2.0",
34818 "grunt-contrib-connect": "^1.0.0",
34819 "grunt-contrib-copy": "^1.0.0",
34820 "grunt-contrib-uglify": "^1.0.1",
34821 "grunt-mocha-istanbul": "^3.0.1",
34822 "grunt-saucelabs": "^8.6.2",
34823 "istanbul": "^0.4.2",
34824 "jscs": "^2.9.0",
34825 "jshint": "^2.6.0",
34826 "mocha": "^2.1.0"
34827 },
34828 "directories": {},
34829 "dist": {
34830 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34831 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34832 },
34833 "files": [
34834 "lib"
34835 ],
34836 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34837 "homepage": "https://github.com/indutny/elliptic",
34838 "keywords": [
34839 "EC",
34840 "Elliptic",
34841 "curve",
34842 "Cryptography"
34843 ],
34844 "license": "MIT",
34845 "main": "lib/elliptic.js",
34846 "maintainers": [
34847 {
34848 "name": "indutny",
34849 "email": "fedor@indutny.com"
34850 }
34851 ],
34852 "name": "elliptic",
34853 "optionalDependencies": {},
34854 "readme": "ERROR: No README data found!",
34855 "repository": {
34856 "type": "git",
34857 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34858 },
34859 "scripts": {
34860 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34861 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34862 "lint": "npm run jscs && npm run jshint",
34863 "test": "npm run lint && npm run unit",
34864 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34865 "version": "grunt dist && git add dist/"
34866 },
34867 "version": "6.3.3"
34868 }
34869
34870 },{}],56:[function(require,module,exports){
34871 (function (Buffer){
34872 'use strict';
34873
34874 var isHexPrefixed = require('is-hex-prefixed');
34875 var stripHexPrefix = require('strip-hex-prefix');
34876
34877 /**
34878 * Pads a `String` to have an even length
34879 * @param {String} value
34880 * @return {String} output
34881 */
34882 function padToEven(value) {
34883 var a = value; // eslint-disable-line
34884
34885 if (typeof a !== 'string') {
34886 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34887 }
34888
34889 if (a.length % 2) {
34890 a = '0' + a;
34891 }
34892
34893 return a;
34894 }
34895
34896 /**
34897 * Converts a `Number` into a hex `String`
34898 * @param {Number} i
34899 * @return {String}
34900 */
34901 function intToHex(i) {
34902 var hex = i.toString(16); // eslint-disable-line
34903
34904 return '0x' + padToEven(hex);
34905 }
34906
34907 /**
34908 * Converts an `Number` to a `Buffer`
34909 * @param {Number} i
34910 * @return {Buffer}
34911 */
34912 function intToBuffer(i) {
34913 var hex = intToHex(i);
34914
34915 return new Buffer(hex.slice(2), 'hex');
34916 }
34917
34918 /**
34919 * Get the binary size of a string
34920 * @param {String} str
34921 * @return {Number}
34922 */
34923 function getBinarySize(str) {
34924 if (typeof str !== 'string') {
34925 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34926 }
34927
34928 return Buffer.byteLength(str, 'utf8');
34929 }
34930
34931 /**
34932 * Returns TRUE if the first specified array contains all elements
34933 * from the second one. FALSE otherwise.
34934 *
34935 * @param {array} superset
34936 * @param {array} subset
34937 *
34938 * @returns {boolean}
34939 */
34940 function arrayContainsArray(superset, subset, some) {
34941 if (Array.isArray(superset) !== true) {
34942 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34943 }
34944 if (Array.isArray(subset) !== true) {
34945 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
34946 }
34947
34948 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34949 return superset.indexOf(value) >= 0;
34950 });
34951 }
34952
34953 /**
34954 * Should be called to get utf8 from it's hex representation
34955 *
34956 * @method toUtf8
34957 * @param {String} string in hex
34958 * @returns {String} ascii string representation of hex value
34959 */
34960 function toUtf8(hex) {
34961 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
34962
34963 return bufferValue.toString('utf8');
34964 }
34965
34966 /**
34967 * Should be called to get ascii from it's hex representation
34968 *
34969 * @method toAscii
34970 * @param {String} string in hex
34971 * @returns {String} ascii string representation of hex value
34972 */
34973 function toAscii(hex) {
34974 var str = ''; // eslint-disable-line
34975 var i = 0,
34976 l = hex.length; // eslint-disable-line
34977
34978 if (hex.substring(0, 2) === '0x') {
34979 i = 2;
34980 }
34981
34982 for (; i < l; i += 2) {
34983 var code = parseInt(hex.substr(i, 2), 16);
34984 str += String.fromCharCode(code);
34985 }
34986
34987 return str;
34988 }
34989
34990 /**
34991 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34992 *
34993 * @method fromUtf8
34994 * @param {String} string
34995 * @param {Number} optional padding
34996 * @returns {String} hex representation of input string
34997 */
34998 function fromUtf8(stringValue) {
34999 var str = new Buffer(stringValue, 'utf8');
35000
35001 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
35002 }
35003
35004 /**
35005 * Should be called to get hex representation (prefixed by 0x) of ascii string
35006 *
35007 * @method fromAscii
35008 * @param {String} string
35009 * @param {Number} optional padding
35010 * @returns {String} hex representation of input string
35011 */
35012 function fromAscii(stringValue) {
35013 var hex = ''; // eslint-disable-line
35014 for (var i = 0; i < stringValue.length; i++) {
35015 // eslint-disable-line
35016 var code = stringValue.charCodeAt(i);
35017 var n = code.toString(16);
35018 hex += n.length < 2 ? '0' + n : n;
35019 }
35020
35021 return '0x' + hex;
35022 }
35023
35024 /**
35025 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
35026 *
35027 * @method getKeys get specific key from inner object array of objects
35028 * @param {String} params
35029 * @param {String} key
35030 * @param {Boolean} allowEmpty
35031 * @returns {Array} output just a simple array of output keys
35032 */
35033 function getKeys(params, key, allowEmpty) {
35034 if (!Array.isArray(params)) {
35035 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
35036 }
35037 if (typeof key !== 'string') {
35038 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
35039 }
35040
35041 var result = []; // eslint-disable-line
35042
35043 for (var i = 0; i < params.length; i++) {
35044 // eslint-disable-line
35045 var value = params[i][key]; // eslint-disable-line
35046 if (allowEmpty && !value) {
35047 value = '';
35048 } else if (typeof value !== 'string') {
35049 throw new Error('invalid abi');
35050 }
35051 result.push(value);
35052 }
35053
35054 return result;
35055 }
35056
35057 /**
35058 * Is the string a hex string.
35059 *
35060 * @method check if string is hex string of specific length
35061 * @param {String} value
35062 * @param {Number} length
35063 * @returns {Boolean} output the string is a hex string
35064 */
35065 function isHexString(value, length) {
35066 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35067 return false;
35068 }
35069
35070 if (length && value.length !== 2 + 2 * length) {
35071 return false;
35072 }
35073
35074 return true;
35075 }
35076
35077 module.exports = {
35078 arrayContainsArray: arrayContainsArray,
35079 intToBuffer: intToBuffer,
35080 getBinarySize: getBinarySize,
35081 isHexPrefixed: isHexPrefixed,
35082 stripHexPrefix: stripHexPrefix,
35083 padToEven: padToEven,
35084 intToHex: intToHex,
35085 fromAscii: fromAscii,
35086 fromUtf8: fromUtf8,
35087 toAscii: toAscii,
35088 toUtf8: toUtf8,
35089 getKeys: getKeys,
35090 isHexString: isHexString
35091 };
35092 }).call(this,require("buffer").Buffer)
35093 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35094 var hash = exports;
35095
35096 hash.utils = require('./hash/utils');
35097 hash.common = require('./hash/common');
35098 hash.sha = require('./hash/sha');
35099 hash.ripemd = require('./hash/ripemd');
35100 hash.hmac = require('./hash/hmac');
35101
35102 // Proxy hash functions to the main object
35103 hash.sha1 = hash.sha.sha1;
35104 hash.sha256 = hash.sha.sha256;
35105 hash.sha224 = hash.sha.sha224;
35106 hash.sha384 = hash.sha.sha384;
35107 hash.sha512 = hash.sha.sha512;
35108 hash.ripemd160 = hash.ripemd.ripemd160;
35109
35110 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35111 var hash = require('../hash');
35112 var utils = hash.utils;
35113 var assert = utils.assert;
35114
35115 function BlockHash() {
35116 this.pending = null;
35117 this.pendingTotal = 0;
35118 this.blockSize = this.constructor.blockSize;
35119 this.outSize = this.constructor.outSize;
35120 this.hmacStrength = this.constructor.hmacStrength;
35121 this.padLength = this.constructor.padLength / 8;
35122 this.endian = 'big';
35123
35124 this._delta8 = this.blockSize / 8;
35125 this._delta32 = this.blockSize / 32;
35126 }
35127 exports.BlockHash = BlockHash;
35128
35129 BlockHash.prototype.update = function update(msg, enc) {
35130 // Convert message to array, pad it, and join into 32bit blocks
35131 msg = utils.toArray(msg, enc);
35132 if (!this.pending)
35133 this.pending = msg;
35134 else
35135 this.pending = this.pending.concat(msg);
35136 this.pendingTotal += msg.length;
35137
35138 // Enough data, try updating
35139 if (this.pending.length >= this._delta8) {
35140 msg = this.pending;
35141
35142 // Process pending data in blocks
35143 var r = msg.length % this._delta8;
35144 this.pending = msg.slice(msg.length - r, msg.length);
35145 if (this.pending.length === 0)
35146 this.pending = null;
35147
35148 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35149 for (var i = 0; i < msg.length; i += this._delta32)
35150 this._update(msg, i, i + this._delta32);
35151 }
35152
35153 return this;
35154 };
35155
35156 BlockHash.prototype.digest = function digest(enc) {
35157 this.update(this._pad());
35158 assert(this.pending === null);
35159
35160 return this._digest(enc);
35161 };
35162
35163 BlockHash.prototype._pad = function pad() {
35164 var len = this.pendingTotal;
35165 var bytes = this._delta8;
35166 var k = bytes - ((len + this.padLength) % bytes);
35167 var res = new Array(k + this.padLength);
35168 res[0] = 0x80;
35169 for (var i = 1; i < k; i++)
35170 res[i] = 0;
35171
35172 // Append length
35173 len <<= 3;
35174 if (this.endian === 'big') {
35175 for (var t = 8; t < this.padLength; t++)
35176 res[i++] = 0;
35177
35178 res[i++] = 0;
35179 res[i++] = 0;
35180 res[i++] = 0;
35181 res[i++] = 0;
35182 res[i++] = (len >>> 24) & 0xff;
35183 res[i++] = (len >>> 16) & 0xff;
35184 res[i++] = (len >>> 8) & 0xff;
35185 res[i++] = len & 0xff;
35186 } else {
35187 res[i++] = len & 0xff;
35188 res[i++] = (len >>> 8) & 0xff;
35189 res[i++] = (len >>> 16) & 0xff;
35190 res[i++] = (len >>> 24) & 0xff;
35191 res[i++] = 0;
35192 res[i++] = 0;
35193 res[i++] = 0;
35194 res[i++] = 0;
35195
35196 for (var t = 8; t < this.padLength; t++)
35197 res[i++] = 0;
35198 }
35199
35200 return res;
35201 };
35202
35203 },{"../hash":57}],59:[function(require,module,exports){
35204 var hmac = exports;
35205
35206 var hash = require('../hash');
35207 var utils = hash.utils;
35208 var assert = utils.assert;
35209
35210 function Hmac(hash, key, enc) {
35211 if (!(this instanceof Hmac))
35212 return new Hmac(hash, key, enc);
35213 this.Hash = hash;
35214 this.blockSize = hash.blockSize / 8;
35215 this.outSize = hash.outSize / 8;
35216 this.inner = null;
35217 this.outer = null;
35218
35219 this._init(utils.toArray(key, enc));
35220 }
35221 module.exports = Hmac;
35222
35223 Hmac.prototype._init = function init(key) {
35224 // Shorten key, if needed
35225 if (key.length > this.blockSize)
35226 key = new this.Hash().update(key).digest();
35227 assert(key.length <= this.blockSize);
35228
35229 // Add padding to key
35230 for (var i = key.length; i < this.blockSize; i++)
35231 key.push(0);
35232
35233 for (var i = 0; i < key.length; i++)
35234 key[i] ^= 0x36;
35235 this.inner = new this.Hash().update(key);
35236
35237 // 0x36 ^ 0x5c = 0x6a
35238 for (var i = 0; i < key.length; i++)
35239 key[i] ^= 0x6a;
35240 this.outer = new this.Hash().update(key);
35241 };
35242
35243 Hmac.prototype.update = function update(msg, enc) {
35244 this.inner.update(msg, enc);
35245 return this;
35246 };
35247
35248 Hmac.prototype.digest = function digest(enc) {
35249 this.outer.update(this.inner.digest());
35250 return this.outer.digest(enc);
35251 };
35252
35253 },{"../hash":57}],60:[function(require,module,exports){
35254 var hash = require('../hash');
35255 var utils = hash.utils;
35256
35257 var rotl32 = utils.rotl32;
35258 var sum32 = utils.sum32;
35259 var sum32_3 = utils.sum32_3;
35260 var sum32_4 = utils.sum32_4;
35261 var BlockHash = hash.common.BlockHash;
35262
35263 function RIPEMD160() {
35264 if (!(this instanceof RIPEMD160))
35265 return new RIPEMD160();
35266
35267 BlockHash.call(this);
35268
35269 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35270 this.endian = 'little';
35271 }
35272 utils.inherits(RIPEMD160, BlockHash);
35273 exports.ripemd160 = RIPEMD160;
35274
35275 RIPEMD160.blockSize = 512;
35276 RIPEMD160.outSize = 160;
35277 RIPEMD160.hmacStrength = 192;
35278 RIPEMD160.padLength = 64;
35279
35280 RIPEMD160.prototype._update = function update(msg, start) {
35281 var A = this.h[0];
35282 var B = this.h[1];
35283 var C = this.h[2];
35284 var D = this.h[3];
35285 var E = this.h[4];
35286 var Ah = A;
35287 var Bh = B;
35288 var Ch = C;
35289 var Dh = D;
35290 var Eh = E;
35291 for (var j = 0; j < 80; j++) {
35292 var T = sum32(
35293 rotl32(
35294 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35295 s[j]),
35296 E);
35297 A = E;
35298 E = D;
35299 D = rotl32(C, 10);
35300 C = B;
35301 B = T;
35302 T = sum32(
35303 rotl32(
35304 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35305 sh[j]),
35306 Eh);
35307 Ah = Eh;
35308 Eh = Dh;
35309 Dh = rotl32(Ch, 10);
35310 Ch = Bh;
35311 Bh = T;
35312 }
35313 T = sum32_3(this.h[1], C, Dh);
35314 this.h[1] = sum32_3(this.h[2], D, Eh);
35315 this.h[2] = sum32_3(this.h[3], E, Ah);
35316 this.h[3] = sum32_3(this.h[4], A, Bh);
35317 this.h[4] = sum32_3(this.h[0], B, Ch);
35318 this.h[0] = T;
35319 };
35320
35321 RIPEMD160.prototype._digest = function digest(enc) {
35322 if (enc === 'hex')
35323 return utils.toHex32(this.h, 'little');
35324 else
35325 return utils.split32(this.h, 'little');
35326 };
35327
35328 function f(j, x, y, z) {
35329 if (j <= 15)
35330 return x ^ y ^ z;
35331 else if (j <= 31)
35332 return (x & y) | ((~x) & z);
35333 else if (j <= 47)
35334 return (x | (~y)) ^ z;
35335 else if (j <= 63)
35336 return (x & z) | (y & (~z));
35337 else
35338 return x ^ (y | (~z));
35339 }
35340
35341 function K(j) {
35342 if (j <= 15)
35343 return 0x00000000;
35344 else if (j <= 31)
35345 return 0x5a827999;
35346 else if (j <= 47)
35347 return 0x6ed9eba1;
35348 else if (j <= 63)
35349 return 0x8f1bbcdc;
35350 else
35351 return 0xa953fd4e;
35352 }
35353
35354 function Kh(j) {
35355 if (j <= 15)
35356 return 0x50a28be6;
35357 else if (j <= 31)
35358 return 0x5c4dd124;
35359 else if (j <= 47)
35360 return 0x6d703ef3;
35361 else if (j <= 63)
35362 return 0x7a6d76e9;
35363 else
35364 return 0x00000000;
35365 }
35366
35367 var r = [
35368 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35369 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35370 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35371 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35372 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35373 ];
35374
35375 var rh = [
35376 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35377 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35378 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35379 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35380 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35381 ];
35382
35383 var s = [
35384 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35385 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35386 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35387 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35388 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35389 ];
35390
35391 var sh = [
35392 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35393 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35394 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35395 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35396 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35397 ];
35398
35399 },{"../hash":57}],61:[function(require,module,exports){
35400 var hash = require('../hash');
35401 var utils = hash.utils;
35402 var assert = utils.assert;
35403
35404 var rotr32 = utils.rotr32;
35405 var rotl32 = utils.rotl32;
35406 var sum32 = utils.sum32;
35407 var sum32_4 = utils.sum32_4;
35408 var sum32_5 = utils.sum32_5;
35409 var rotr64_hi = utils.rotr64_hi;
35410 var rotr64_lo = utils.rotr64_lo;
35411 var shr64_hi = utils.shr64_hi;
35412 var shr64_lo = utils.shr64_lo;
35413 var sum64 = utils.sum64;
35414 var sum64_hi = utils.sum64_hi;
35415 var sum64_lo = utils.sum64_lo;
35416 var sum64_4_hi = utils.sum64_4_hi;
35417 var sum64_4_lo = utils.sum64_4_lo;
35418 var sum64_5_hi = utils.sum64_5_hi;
35419 var sum64_5_lo = utils.sum64_5_lo;
35420 var BlockHash = hash.common.BlockHash;
35421
35422 var sha256_K = [
35423 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35424 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35425 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35426 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35427 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35428 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35429 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35430 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35431 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35432 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35433 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35434 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35435 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35436 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35437 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35438 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35439 ];
35440
35441 var sha512_K = [
35442 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35443 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35444 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35445 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35446 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35447 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35448 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35449 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35450 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35451 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35452 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35453 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35454 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35455 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35456 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35457 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35458 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35459 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35460 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35461 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35462 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35463 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35464 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35465 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35466 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35467 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35468 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35469 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35470 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35471 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35472 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35473 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35474 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35475 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35476 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35477 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35478 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35479 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35480 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35481 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35482 ];
35483
35484 var sha1_K = [
35485 0x5A827999, 0x6ED9EBA1,
35486 0x8F1BBCDC, 0xCA62C1D6
35487 ];
35488
35489 function SHA256() {
35490 if (!(this instanceof SHA256))
35491 return new SHA256();
35492
35493 BlockHash.call(this);
35494 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35495 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35496 this.k = sha256_K;
35497 this.W = new Array(64);
35498 }
35499 utils.inherits(SHA256, BlockHash);
35500 exports.sha256 = SHA256;
35501
35502 SHA256.blockSize = 512;
35503 SHA256.outSize = 256;
35504 SHA256.hmacStrength = 192;
35505 SHA256.padLength = 64;
35506
35507 SHA256.prototype._update = function _update(msg, start) {
35508 var W = this.W;
35509
35510 for (var i = 0; i < 16; i++)
35511 W[i] = msg[start + i];
35512 for (; i < W.length; i++)
35513 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35514
35515 var a = this.h[0];
35516 var b = this.h[1];
35517 var c = this.h[2];
35518 var d = this.h[3];
35519 var e = this.h[4];
35520 var f = this.h[5];
35521 var g = this.h[6];
35522 var h = this.h[7];
35523
35524 assert(this.k.length === W.length);
35525 for (var i = 0; i < W.length; i++) {
35526 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35527 var T2 = sum32(s0_256(a), maj32(a, b, c));
35528 h = g;
35529 g = f;
35530 f = e;
35531 e = sum32(d, T1);
35532 d = c;
35533 c = b;
35534 b = a;
35535 a = sum32(T1, T2);
35536 }
35537
35538 this.h[0] = sum32(this.h[0], a);
35539 this.h[1] = sum32(this.h[1], b);
35540 this.h[2] = sum32(this.h[2], c);
35541 this.h[3] = sum32(this.h[3], d);
35542 this.h[4] = sum32(this.h[4], e);
35543 this.h[5] = sum32(this.h[5], f);
35544 this.h[6] = sum32(this.h[6], g);
35545 this.h[7] = sum32(this.h[7], h);
35546 };
35547
35548 SHA256.prototype._digest = function digest(enc) {
35549 if (enc === 'hex')
35550 return utils.toHex32(this.h, 'big');
35551 else
35552 return utils.split32(this.h, 'big');
35553 };
35554
35555 function SHA224() {
35556 if (!(this instanceof SHA224))
35557 return new SHA224();
35558
35559 SHA256.call(this);
35560 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35561 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35562 }
35563 utils.inherits(SHA224, SHA256);
35564 exports.sha224 = SHA224;
35565
35566 SHA224.blockSize = 512;
35567 SHA224.outSize = 224;
35568 SHA224.hmacStrength = 192;
35569 SHA224.padLength = 64;
35570
35571 SHA224.prototype._digest = function digest(enc) {
35572 // Just truncate output
35573 if (enc === 'hex')
35574 return utils.toHex32(this.h.slice(0, 7), 'big');
35575 else
35576 return utils.split32(this.h.slice(0, 7), 'big');
35577 };
35578
35579 function SHA512() {
35580 if (!(this instanceof SHA512))
35581 return new SHA512();
35582
35583 BlockHash.call(this);
35584 this.h = [ 0x6a09e667, 0xf3bcc908,
35585 0xbb67ae85, 0x84caa73b,
35586 0x3c6ef372, 0xfe94f82b,
35587 0xa54ff53a, 0x5f1d36f1,
35588 0x510e527f, 0xade682d1,
35589 0x9b05688c, 0x2b3e6c1f,
35590 0x1f83d9ab, 0xfb41bd6b,
35591 0x5be0cd19, 0x137e2179 ];
35592 this.k = sha512_K;
35593 this.W = new Array(160);
35594 }
35595 utils.inherits(SHA512, BlockHash);
35596 exports.sha512 = SHA512;
35597
35598 SHA512.blockSize = 1024;
35599 SHA512.outSize = 512;
35600 SHA512.hmacStrength = 192;
35601 SHA512.padLength = 128;
35602
35603 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35604 var W = this.W;
35605
35606 // 32 x 32bit words
35607 for (var i = 0; i < 32; i++)
35608 W[i] = msg[start + i];
35609 for (; i < W.length; i += 2) {
35610 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35611 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35612 var c1_hi = W[i - 14]; // i - 7
35613 var c1_lo = W[i - 13];
35614 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35615 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35616 var c3_hi = W[i - 32]; // i - 16
35617 var c3_lo = W[i - 31];
35618
35619 W[i] = sum64_4_hi(c0_hi, c0_lo,
35620 c1_hi, c1_lo,
35621 c2_hi, c2_lo,
35622 c3_hi, c3_lo);
35623 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35624 c1_hi, c1_lo,
35625 c2_hi, c2_lo,
35626 c3_hi, c3_lo);
35627 }
35628 };
35629
35630 SHA512.prototype._update = function _update(msg, start) {
35631 this._prepareBlock(msg, start);
35632
35633 var W = this.W;
35634
35635 var ah = this.h[0];
35636 var al = this.h[1];
35637 var bh = this.h[2];
35638 var bl = this.h[3];
35639 var ch = this.h[4];
35640 var cl = this.h[5];
35641 var dh = this.h[6];
35642 var dl = this.h[7];
35643 var eh = this.h[8];
35644 var el = this.h[9];
35645 var fh = this.h[10];
35646 var fl = this.h[11];
35647 var gh = this.h[12];
35648 var gl = this.h[13];
35649 var hh = this.h[14];
35650 var hl = this.h[15];
35651
35652 assert(this.k.length === W.length);
35653 for (var i = 0; i < W.length; i += 2) {
35654 var c0_hi = hh;
35655 var c0_lo = hl;
35656 var c1_hi = s1_512_hi(eh, el);
35657 var c1_lo = s1_512_lo(eh, el);
35658 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35659 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35660 var c3_hi = this.k[i];
35661 var c3_lo = this.k[i + 1];
35662 var c4_hi = W[i];
35663 var c4_lo = W[i + 1];
35664
35665 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35666 c1_hi, c1_lo,
35667 c2_hi, c2_lo,
35668 c3_hi, c3_lo,
35669 c4_hi, c4_lo);
35670 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35671 c1_hi, c1_lo,
35672 c2_hi, c2_lo,
35673 c3_hi, c3_lo,
35674 c4_hi, c4_lo);
35675
35676 var c0_hi = s0_512_hi(ah, al);
35677 var c0_lo = s0_512_lo(ah, al);
35678 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35679 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35680
35681 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35682 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35683
35684 hh = gh;
35685 hl = gl;
35686
35687 gh = fh;
35688 gl = fl;
35689
35690 fh = eh;
35691 fl = el;
35692
35693 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35694 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35695
35696 dh = ch;
35697 dl = cl;
35698
35699 ch = bh;
35700 cl = bl;
35701
35702 bh = ah;
35703 bl = al;
35704
35705 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35706 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35707 }
35708
35709 sum64(this.h, 0, ah, al);
35710 sum64(this.h, 2, bh, bl);
35711 sum64(this.h, 4, ch, cl);
35712 sum64(this.h, 6, dh, dl);
35713 sum64(this.h, 8, eh, el);
35714 sum64(this.h, 10, fh, fl);
35715 sum64(this.h, 12, gh, gl);
35716 sum64(this.h, 14, hh, hl);
35717 };
35718
35719 SHA512.prototype._digest = function digest(enc) {
35720 if (enc === 'hex')
35721 return utils.toHex32(this.h, 'big');
35722 else
35723 return utils.split32(this.h, 'big');
35724 };
35725
35726 function SHA384() {
35727 if (!(this instanceof SHA384))
35728 return new SHA384();
35729
35730 SHA512.call(this);
35731 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35732 0x629a292a, 0x367cd507,
35733 0x9159015a, 0x3070dd17,
35734 0x152fecd8, 0xf70e5939,
35735 0x67332667, 0xffc00b31,
35736 0x8eb44a87, 0x68581511,
35737 0xdb0c2e0d, 0x64f98fa7,
35738 0x47b5481d, 0xbefa4fa4 ];
35739 }
35740 utils.inherits(SHA384, SHA512);
35741 exports.sha384 = SHA384;
35742
35743 SHA384.blockSize = 1024;
35744 SHA384.outSize = 384;
35745 SHA384.hmacStrength = 192;
35746 SHA384.padLength = 128;
35747
35748 SHA384.prototype._digest = function digest(enc) {
35749 if (enc === 'hex')
35750 return utils.toHex32(this.h.slice(0, 12), 'big');
35751 else
35752 return utils.split32(this.h.slice(0, 12), 'big');
35753 };
35754
35755 function SHA1() {
35756 if (!(this instanceof SHA1))
35757 return new SHA1();
35758
35759 BlockHash.call(this);
35760 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35761 0x10325476, 0xc3d2e1f0 ];
35762 this.W = new Array(80);
35763 }
35764
35765 utils.inherits(SHA1, BlockHash);
35766 exports.sha1 = SHA1;
35767
35768 SHA1.blockSize = 512;
35769 SHA1.outSize = 160;
35770 SHA1.hmacStrength = 80;
35771 SHA1.padLength = 64;
35772
35773 SHA1.prototype._update = function _update(msg, start) {
35774 var W = this.W;
35775
35776 for (var i = 0; i < 16; i++)
35777 W[i] = msg[start + i];
35778
35779 for(; i < W.length; i++)
35780 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
35781
35782 var a = this.h[0];
35783 var b = this.h[1];
35784 var c = this.h[2];
35785 var d = this.h[3];
35786 var e = this.h[4];
35787
35788 for (var i = 0; i < W.length; i++) {
35789 var s = ~~(i / 20);
35790 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35791 e = d;
35792 d = c;
35793 c = rotl32(b, 30);
35794 b = a;
35795 a = t;
35796 }
35797
35798 this.h[0] = sum32(this.h[0], a);
35799 this.h[1] = sum32(this.h[1], b);
35800 this.h[2] = sum32(this.h[2], c);
35801 this.h[3] = sum32(this.h[3], d);
35802 this.h[4] = sum32(this.h[4], e);
35803 };
35804
35805 SHA1.prototype._digest = function digest(enc) {
35806 if (enc === 'hex')
35807 return utils.toHex32(this.h, 'big');
35808 else
35809 return utils.split32(this.h, 'big');
35810 };
35811
35812 function ch32(x, y, z) {
35813 return (x & y) ^ ((~x) & z);
35814 }
35815
35816 function maj32(x, y, z) {
35817 return (x & y) ^ (x & z) ^ (y & z);
35818 }
35819
35820 function p32(x, y, z) {
35821 return x ^ y ^ z;
35822 }
35823
35824 function s0_256(x) {
35825 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35826 }
35827
35828 function s1_256(x) {
35829 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
35830 }
35831
35832 function g0_256(x) {
35833 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35834 }
35835
35836 function g1_256(x) {
35837 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35838 }
35839
35840 function ft_1(s, x, y, z) {
35841 if (s === 0)
35842 return ch32(x, y, z);
35843 if (s === 1 || s === 3)
35844 return p32(x, y, z);
35845 if (s === 2)
35846 return maj32(x, y, z);
35847 }
35848
35849 function ch64_hi(xh, xl, yh, yl, zh, zl) {
35850 var r = (xh & yh) ^ ((~xh) & zh);
35851 if (r < 0)
35852 r += 0x100000000;
35853 return r;
35854 }
35855
35856 function ch64_lo(xh, xl, yh, yl, zh, zl) {
35857 var r = (xl & yl) ^ ((~xl) & zl);
35858 if (r < 0)
35859 r += 0x100000000;
35860 return r;
35861 }
35862
35863 function maj64_hi(xh, xl, yh, yl, zh, zl) {
35864 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35865 if (r < 0)
35866 r += 0x100000000;
35867 return r;
35868 }
35869
35870 function maj64_lo(xh, xl, yh, yl, zh, zl) {
35871 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35872 if (r < 0)
35873 r += 0x100000000;
35874 return r;
35875 }
35876
35877 function s0_512_hi(xh, xl) {
35878 var c0_hi = rotr64_hi(xh, xl, 28);
35879 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35880 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35881
35882 var r = c0_hi ^ c1_hi ^ c2_hi;
35883 if (r < 0)
35884 r += 0x100000000;
35885 return r;
35886 }
35887
35888 function s0_512_lo(xh, xl) {
35889 var c0_lo = rotr64_lo(xh, xl, 28);
35890 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35891 var c2_lo = rotr64_lo(xl, xh, 7); // 39
35892
35893 var r = c0_lo ^ c1_lo ^ c2_lo;
35894 if (r < 0)
35895 r += 0x100000000;
35896 return r;
35897 }
35898
35899 function s1_512_hi(xh, xl) {
35900 var c0_hi = rotr64_hi(xh, xl, 14);
35901 var c1_hi = rotr64_hi(xh, xl, 18);
35902 var c2_hi = rotr64_hi(xl, xh, 9); // 41
35903
35904 var r = c0_hi ^ c1_hi ^ c2_hi;
35905 if (r < 0)
35906 r += 0x100000000;
35907 return r;
35908 }
35909
35910 function s1_512_lo(xh, xl) {
35911 var c0_lo = rotr64_lo(xh, xl, 14);
35912 var c1_lo = rotr64_lo(xh, xl, 18);
35913 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35914
35915 var r = c0_lo ^ c1_lo ^ c2_lo;
35916 if (r < 0)
35917 r += 0x100000000;
35918 return r;
35919 }
35920
35921 function g0_512_hi(xh, xl) {
35922 var c0_hi = rotr64_hi(xh, xl, 1);
35923 var c1_hi = rotr64_hi(xh, xl, 8);
35924 var c2_hi = shr64_hi(xh, xl, 7);
35925
35926 var r = c0_hi ^ c1_hi ^ c2_hi;
35927 if (r < 0)
35928 r += 0x100000000;
35929 return r;
35930 }
35931
35932 function g0_512_lo(xh, xl) {
35933 var c0_lo = rotr64_lo(xh, xl, 1);
35934 var c1_lo = rotr64_lo(xh, xl, 8);
35935 var c2_lo = shr64_lo(xh, xl, 7);
35936
35937 var r = c0_lo ^ c1_lo ^ c2_lo;
35938 if (r < 0)
35939 r += 0x100000000;
35940 return r;
35941 }
35942
35943 function g1_512_hi(xh, xl) {
35944 var c0_hi = rotr64_hi(xh, xl, 19);
35945 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35946 var c2_hi = shr64_hi(xh, xl, 6);
35947
35948 var r = c0_hi ^ c1_hi ^ c2_hi;
35949 if (r < 0)
35950 r += 0x100000000;
35951 return r;
35952 }
35953
35954 function g1_512_lo(xh, xl) {
35955 var c0_lo = rotr64_lo(xh, xl, 19);
35956 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35957 var c2_lo = shr64_lo(xh, xl, 6);
35958
35959 var r = c0_lo ^ c1_lo ^ c2_lo;
35960 if (r < 0)
35961 r += 0x100000000;
35962 return r;
35963 }
35964
35965 },{"../hash":57}],62:[function(require,module,exports){
35966 var utils = exports;
35967 var inherits = require('inherits');
35968
35969 function toArray(msg, enc) {
35970 if (Array.isArray(msg))
35971 return msg.slice();
35972 if (!msg)
35973 return [];
35974 var res = [];
35975 if (typeof msg === 'string') {
35976 if (!enc) {
35977 for (var i = 0; i < msg.length; i++) {
35978 var c = msg.charCodeAt(i);
35979 var hi = c >> 8;
35980 var lo = c & 0xff;
35981 if (hi)
35982 res.push(hi, lo);
35983 else
35984 res.push(lo);
35985 }
35986 } else if (enc === 'hex') {
35987 msg = msg.replace(/[^a-z0-9]+/ig, '');
35988 if (msg.length % 2 !== 0)
35989 msg = '0' + msg;
35990 for (var i = 0; i < msg.length; i += 2)
35991 res.push(parseInt(msg[i] + msg[i + 1], 16));
35992 }
35993 } else {
35994 for (var i = 0; i < msg.length; i++)
35995 res[i] = msg[i] | 0;
35996 }
35997 return res;
35998 }
35999 utils.toArray = toArray;
36000
36001 function toHex(msg) {
36002 var res = '';
36003 for (var i = 0; i < msg.length; i++)
36004 res += zero2(msg[i].toString(16));
36005 return res;
36006 }
36007 utils.toHex = toHex;
36008
36009 function htonl(w) {
36010 var res = (w >>> 24) |
36011 ((w >>> 8) & 0xff00) |
36012 ((w << 8) & 0xff0000) |
36013 ((w & 0xff) << 24);
36014 return res >>> 0;
36015 }
36016 utils.htonl = htonl;
36017
36018 function toHex32(msg, endian) {
36019 var res = '';
36020 for (var i = 0; i < msg.length; i++) {
36021 var w = msg[i];
36022 if (endian === 'little')
36023 w = htonl(w);
36024 res += zero8(w.toString(16));
36025 }
36026 return res;
36027 }
36028 utils.toHex32 = toHex32;
36029
36030 function zero2(word) {
36031 if (word.length === 1)
36032 return '0' + word;
36033 else
36034 return word;
36035 }
36036 utils.zero2 = zero2;
36037
36038 function zero8(word) {
36039 if (word.length === 7)
36040 return '0' + word;
36041 else if (word.length === 6)
36042 return '00' + word;
36043 else if (word.length === 5)
36044 return '000' + word;
36045 else if (word.length === 4)
36046 return '0000' + word;
36047 else if (word.length === 3)
36048 return '00000' + word;
36049 else if (word.length === 2)
36050 return '000000' + word;
36051 else if (word.length === 1)
36052 return '0000000' + word;
36053 else
36054 return word;
36055 }
36056 utils.zero8 = zero8;
36057
36058 function join32(msg, start, end, endian) {
36059 var len = end - start;
36060 assert(len % 4 === 0);
36061 var res = new Array(len / 4);
36062 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36063 var w;
36064 if (endian === 'big')
36065 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36066 else
36067 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36068 res[i] = w >>> 0;
36069 }
36070 return res;
36071 }
36072 utils.join32 = join32;
36073
36074 function split32(msg, endian) {
36075 var res = new Array(msg.length * 4);
36076 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36077 var m = msg[i];
36078 if (endian === 'big') {
36079 res[k] = m >>> 24;
36080 res[k + 1] = (m >>> 16) & 0xff;
36081 res[k + 2] = (m >>> 8) & 0xff;
36082 res[k + 3] = m & 0xff;
36083 } else {
36084 res[k + 3] = m >>> 24;
36085 res[k + 2] = (m >>> 16) & 0xff;
36086 res[k + 1] = (m >>> 8) & 0xff;
36087 res[k] = m & 0xff;
36088 }
36089 }
36090 return res;
36091 }
36092 utils.split32 = split32;
36093
36094 function rotr32(w, b) {
36095 return (w >>> b) | (w << (32 - b));
36096 }
36097 utils.rotr32 = rotr32;
36098
36099 function rotl32(w, b) {
36100 return (w << b) | (w >>> (32 - b));
36101 }
36102 utils.rotl32 = rotl32;
36103
36104 function sum32(a, b) {
36105 return (a + b) >>> 0;
36106 }
36107 utils.sum32 = sum32;
36108
36109 function sum32_3(a, b, c) {
36110 return (a + b + c) >>> 0;
36111 }
36112 utils.sum32_3 = sum32_3;
36113
36114 function sum32_4(a, b, c, d) {
36115 return (a + b + c + d) >>> 0;
36116 }
36117 utils.sum32_4 = sum32_4;
36118
36119 function sum32_5(a, b, c, d, e) {
36120 return (a + b + c + d + e) >>> 0;
36121 }
36122 utils.sum32_5 = sum32_5;
36123
36124 function assert(cond, msg) {
36125 if (!cond)
36126 throw new Error(msg || 'Assertion failed');
36127 }
36128 utils.assert = assert;
36129
36130 utils.inherits = inherits;
36131
36132 function sum64(buf, pos, ah, al) {
36133 var bh = buf[pos];
36134 var bl = buf[pos + 1];
36135
36136 var lo = (al + bl) >>> 0;
36137 var hi = (lo < al ? 1 : 0) + ah + bh;
36138 buf[pos] = hi >>> 0;
36139 buf[pos + 1] = lo;
36140 }
36141 exports.sum64 = sum64;
36142
36143 function sum64_hi(ah, al, bh, bl) {
36144 var lo = (al + bl) >>> 0;
36145 var hi = (lo < al ? 1 : 0) + ah + bh;
36146 return hi >>> 0;
36147 };
36148 exports.sum64_hi = sum64_hi;
36149
36150 function sum64_lo(ah, al, bh, bl) {
36151 var lo = al + bl;
36152 return lo >>> 0;
36153 };
36154 exports.sum64_lo = sum64_lo;
36155
36156 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36157 var carry = 0;
36158 var lo = al;
36159 lo = (lo + bl) >>> 0;
36160 carry += lo < al ? 1 : 0;
36161 lo = (lo + cl) >>> 0;
36162 carry += lo < cl ? 1 : 0;
36163 lo = (lo + dl) >>> 0;
36164 carry += lo < dl ? 1 : 0;
36165
36166 var hi = ah + bh + ch + dh + carry;
36167 return hi >>> 0;
36168 };
36169 exports.sum64_4_hi = sum64_4_hi;
36170
36171 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36172 var lo = al + bl + cl + dl;
36173 return lo >>> 0;
36174 };
36175 exports.sum64_4_lo = sum64_4_lo;
36176
36177 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36178 var carry = 0;
36179 var lo = al;
36180 lo = (lo + bl) >>> 0;
36181 carry += lo < al ? 1 : 0;
36182 lo = (lo + cl) >>> 0;
36183 carry += lo < cl ? 1 : 0;
36184 lo = (lo + dl) >>> 0;
36185 carry += lo < dl ? 1 : 0;
36186 lo = (lo + el) >>> 0;
36187 carry += lo < el ? 1 : 0;
36188
36189 var hi = ah + bh + ch + dh + eh + carry;
36190 return hi >>> 0;
36191 };
36192 exports.sum64_5_hi = sum64_5_hi;
36193
36194 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36195 var lo = al + bl + cl + dl + el;
36196
36197 return lo >>> 0;
36198 };
36199 exports.sum64_5_lo = sum64_5_lo;
36200
36201 function rotr64_hi(ah, al, num) {
36202 var r = (al << (32 - num)) | (ah >>> num);
36203 return r >>> 0;
36204 };
36205 exports.rotr64_hi = rotr64_hi;
36206
36207 function rotr64_lo(ah, al, num) {
36208 var r = (ah << (32 - num)) | (al >>> num);
36209 return r >>> 0;
36210 };
36211 exports.rotr64_lo = rotr64_lo;
36212
36213 function shr64_hi(ah, al, num) {
36214 return ah >>> num;
36215 };
36216 exports.shr64_hi = shr64_hi;
36217
36218 function shr64_lo(ah, al, num) {
36219 var r = (ah << (32 - num)) | (al >>> num);
36220 return r >>> 0;
36221 };
36222 exports.shr64_lo = shr64_lo;
36223
36224 },{"inherits":63}],63:[function(require,module,exports){
36225 arguments[4][9][0].apply(exports,arguments)
36226 },{"dup":9}],64:[function(require,module,exports){
36227 /**
36228 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36229 * @param {String} str the string input value
36230 * @return {Boolean} a boolean if it is or is not hex prefixed
36231 * @throws if the str input is not a string
36232 */
36233 module.exports = function isHexPrefixed(str) {
36234 if (typeof str !== 'string') {
36235 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36236 }
36237
36238 return str.slice(0, 2) === '0x';
36239 }
36240
36241 },{}],65:[function(require,module,exports){
36242 'use strict'
36243 module.exports = require('./lib/api')(require('./lib/keccak'))
36244
36245 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36246 'use strict'
36247 var createKeccak = require('./keccak')
36248 var createShake = require('./shake')
36249
36250 module.exports = function (KeccakState) {
36251 var Keccak = createKeccak(KeccakState)
36252 var Shake = createShake(KeccakState)
36253
36254 return function (algorithm, options) {
36255 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36256 switch (hash) {
36257 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36258 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36259 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36260 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36261
36262 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36263 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36264 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36265 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36266
36267 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36268 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36269
36270 default: throw new Error('Invald algorithm: ' + algorithm)
36271 }
36272 }
36273 }
36274
36275 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
36276 (function (Buffer){
36277 'use strict'
36278 var Transform = require('stream').Transform
36279 var inherits = require('inherits')
36280
36281 module.exports = function (KeccakState) {
36282 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36283 Transform.call(this, options)
36284
36285 this._rate = rate
36286 this._capacity = capacity
36287 this._delimitedSuffix = delimitedSuffix
36288 this._hashBitLength = hashBitLength
36289 this._options = options
36290
36291 this._state = new KeccakState()
36292 this._state.initialize(rate, capacity)
36293 this._finalized = false
36294 }
36295
36296 inherits(Keccak, Transform)
36297
36298 Keccak.prototype._transform = function (chunk, encoding, callback) {
36299 var error = null
36300 try {
36301 this.update(chunk, encoding)
36302 } catch (err) {
36303 error = err
36304 }
36305
36306 callback(error)
36307 }
36308
36309 Keccak.prototype._flush = function (callback) {
36310 var error = null
36311 try {
36312 this.push(this.digest())
36313 } catch (err) {
36314 error = err
36315 }
36316
36317 callback(error)
36318 }
36319
36320 Keccak.prototype.update = function (data, encoding) {
36321 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36322 if (this._finalized) throw new Error('Digest already called')
36323 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36324
36325 this._state.absorb(data)
36326
36327 return this
36328 }
36329
36330 Keccak.prototype.digest = function (encoding) {
36331 if (this._finalized) throw new Error('Digest already called')
36332 this._finalized = true
36333
36334 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36335 var digest = this._state.squeeze(this._hashBitLength / 8)
36336 if (encoding !== undefined) digest = digest.toString(encoding)
36337
36338 this._resetState()
36339
36340 return digest
36341 }
36342
36343 // remove result from memory
36344 Keccak.prototype._resetState = function () {
36345 this._state.initialize(this._rate, this._capacity)
36346 return this
36347 }
36348
36349 // because sometimes we need hash right now and little later
36350 Keccak.prototype._clone = function () {
36351 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36352 this._state.copy(clone._state)
36353 clone._finalized = this._finalized
36354
36355 return clone
36356 }
36357
36358 return Keccak
36359 }
36360
36361 }).call(this,require("buffer").Buffer)
36362 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36363 (function (Buffer){
36364 'use strict'
36365 var Transform = require('stream').Transform
36366 var inherits = require('inherits')
36367
36368 module.exports = function (KeccakState) {
36369 function Shake (rate, capacity, delimitedSuffix, options) {
36370 Transform.call(this, options)
36371
36372 this._rate = rate
36373 this._capacity = capacity
36374 this._delimitedSuffix = delimitedSuffix
36375 this._options = options
36376
36377 this._state = new KeccakState()
36378 this._state.initialize(rate, capacity)
36379 this._finalized = false
36380 }
36381
36382 inherits(Shake, Transform)
36383
36384 Shake.prototype._transform = function (chunk, encoding, callback) {
36385 var error = null
36386 try {
36387 this.update(chunk, encoding)
36388 } catch (err) {
36389 error = err
36390 }
36391
36392 callback(error)
36393 }
36394
36395 Shake.prototype._flush = function () {}
36396
36397 Shake.prototype._read = function (size) {
36398 this.push(this.squeeze(size))
36399 }
36400
36401 Shake.prototype.update = function (data, encoding) {
36402 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36403 if (this._finalized) throw new Error('Squeeze already called')
36404 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36405
36406 this._state.absorb(data)
36407
36408 return this
36409 }
36410
36411 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36412 if (!this._finalized) {
36413 this._finalized = true
36414 this._state.absorbLastFewBits(this._delimitedSuffix)
36415 }
36416
36417 var data = this._state.squeeze(dataByteLength)
36418 if (encoding !== undefined) data = data.toString(encoding)
36419
36420 return data
36421 }
36422
36423 Shake.prototype._resetState = function () {
36424 this._state.initialize(this._rate, this._capacity)
36425 return this
36426 }
36427
36428 Shake.prototype._clone = function () {
36429 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36430 this._state.copy(clone._state)
36431 clone._finalized = this._finalized
36432
36433 return clone
36434 }
36435
36436 return Shake
36437 }
36438
36439 }).call(this,require("buffer").Buffer)
36440 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36441 'use strict'
36442 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]
36443
36444 exports.p1600 = function (s) {
36445 for (var round = 0; round < 24; ++round) {
36446 // theta
36447 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36448 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36449 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36450 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36451 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36452 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36453 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36454 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36455 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36456 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36457
36458 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36459 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36460 var t1slo0 = s[0] ^ lo
36461 var t1shi0 = s[1] ^ hi
36462 var t1slo5 = s[10] ^ lo
36463 var t1shi5 = s[11] ^ hi
36464 var t1slo10 = s[20] ^ lo
36465 var t1shi10 = s[21] ^ hi
36466 var t1slo15 = s[30] ^ lo
36467 var t1shi15 = s[31] ^ hi
36468 var t1slo20 = s[40] ^ lo
36469 var t1shi20 = s[41] ^ hi
36470 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36471 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36472 var t1slo1 = s[2] ^ lo
36473 var t1shi1 = s[3] ^ hi
36474 var t1slo6 = s[12] ^ lo
36475 var t1shi6 = s[13] ^ hi
36476 var t1slo11 = s[22] ^ lo
36477 var t1shi11 = s[23] ^ hi
36478 var t1slo16 = s[32] ^ lo
36479 var t1shi16 = s[33] ^ hi
36480 var t1slo21 = s[42] ^ lo
36481 var t1shi21 = s[43] ^ hi
36482 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36483 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36484 var t1slo2 = s[4] ^ lo
36485 var t1shi2 = s[5] ^ hi
36486 var t1slo7 = s[14] ^ lo
36487 var t1shi7 = s[15] ^ hi
36488 var t1slo12 = s[24] ^ lo
36489 var t1shi12 = s[25] ^ hi
36490 var t1slo17 = s[34] ^ lo
36491 var t1shi17 = s[35] ^ hi
36492 var t1slo22 = s[44] ^ lo
36493 var t1shi22 = s[45] ^ hi
36494 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36495 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36496 var t1slo3 = s[6] ^ lo
36497 var t1shi3 = s[7] ^ hi
36498 var t1slo8 = s[16] ^ lo
36499 var t1shi8 = s[17] ^ hi
36500 var t1slo13 = s[26] ^ lo
36501 var t1shi13 = s[27] ^ hi
36502 var t1slo18 = s[36] ^ lo
36503 var t1shi18 = s[37] ^ hi
36504 var t1slo23 = s[46] ^ lo
36505 var t1shi23 = s[47] ^ hi
36506 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36507 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36508 var t1slo4 = s[8] ^ lo
36509 var t1shi4 = s[9] ^ hi
36510 var t1slo9 = s[18] ^ lo
36511 var t1shi9 = s[19] ^ hi
36512 var t1slo14 = s[28] ^ lo
36513 var t1shi14 = s[29] ^ hi
36514 var t1slo19 = s[38] ^ lo
36515 var t1shi19 = s[39] ^ hi
36516 var t1slo24 = s[48] ^ lo
36517 var t1shi24 = s[49] ^ hi
36518
36519 // rho & pi
36520 var t2slo0 = t1slo0
36521 var t2shi0 = t1shi0
36522 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36523 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36524 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36525 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36526 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36527 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36528 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36529 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36530 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36531 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36532 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36533 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36534 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36535 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36536 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36537 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36538 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36539 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36540 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36541 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36542 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36543 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36544 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36545 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36546 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36547 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36548 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36549 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36550 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36551 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36552 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36553 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36554 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36555 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36556 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36557 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36558 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36559 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36560 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36561 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36562 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36563 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36564 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36565 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36566 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36567 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36568 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36569 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36570
36571 // chi
36572 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36573 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36574 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36575 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36576 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36577 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36578 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36579 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36580 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36581 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36582 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36583 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36584 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36585 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36586 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36587 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36588 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36589 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36590 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36591 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36592 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36593 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36594 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36595 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36596 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36597 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36598 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36599 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36600 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36601 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36602 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36603 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36604 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36605 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36606 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36607 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36608 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36609 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36610 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36611 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36612 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36613 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36614 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36615 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36616 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36617 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36618 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36619 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36620 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36621 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36622
36623 // iota
36624 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36625 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36626 }
36627 }
36628
36629 },{}],70:[function(require,module,exports){
36630 (function (Buffer){
36631 'use strict'
36632 var keccakState = require('./keccak-state-unroll')
36633
36634 function Keccak () {
36635 // much faster than `new Array(50)`
36636 this.state = [
36637 0, 0, 0, 0, 0,
36638 0, 0, 0, 0, 0,
36639 0, 0, 0, 0, 0,
36640 0, 0, 0, 0, 0,
36641 0, 0, 0, 0, 0
36642 ]
36643
36644 this.blockSize = null
36645 this.count = 0
36646 this.squeezing = false
36647 }
36648
36649 Keccak.prototype.initialize = function (rate, capacity) {
36650 for (var i = 0; i < 50; ++i) this.state[i] = 0
36651 this.blockSize = rate / 8
36652 this.count = 0
36653 this.squeezing = false
36654 }
36655
36656 Keccak.prototype.absorb = function (data) {
36657 for (var i = 0; i < data.length; ++i) {
36658 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36659 this.count += 1
36660 if (this.count === this.blockSize) {
36661 keccakState.p1600(this.state)
36662 this.count = 0
36663 }
36664 }
36665 }
36666
36667 Keccak.prototype.absorbLastFewBits = function (bits) {
36668 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36669 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36670 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36671 keccakState.p1600(this.state)
36672 this.count = 0
36673 this.squeezing = true
36674 }
36675
36676 Keccak.prototype.squeeze = function (length) {
36677 if (!this.squeezing) this.absorbLastFewBits(0x01)
36678
36679 var output = Buffer.allocUnsafe(length)
36680 for (var i = 0; i < length; ++i) {
36681 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36682 this.count += 1
36683 if (this.count === this.blockSize) {
36684 keccakState.p1600(this.state)
36685 this.count = 0
36686 }
36687 }
36688
36689 return output
36690 }
36691
36692 Keccak.prototype.copy = function (dest) {
36693 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36694 dest.blockSize = this.blockSize
36695 dest.count = this.count
36696 dest.squeezing = this.squeezing
36697 }
36698
36699 module.exports = Keccak
36700
36701 }).call(this,require("buffer").Buffer)
36702 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36703 (function (Buffer){
36704 /*
36705 CryptoJS v3.1.2
36706 code.google.com/p/crypto-js
36707 (c) 2009-2013 by Jeff Mott. All rights reserved.
36708 code.google.com/p/crypto-js/wiki/License
36709 */
36710 /** @preserve
36711 (c) 2012 by Cédric Mesnil. All rights reserved.
36712
36713 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
36714
36715 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36716 - 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.
36717
36718 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.
36719 */
36720
36721 // constants table
36722 var zl = [
36723 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36724 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36725 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36726 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36727 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36728 ]
36729
36730 var zr = [
36731 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36732 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36733 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36734 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36735 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36736 ]
36737
36738 var sl = [
36739 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36740 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36741 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36742 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36743 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36744 ]
36745
36746 var sr = [
36747 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36748 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36749 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36750 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36751 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36752 ]
36753
36754 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36755 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36756
36757 function bytesToWords (bytes) {
36758 var words = []
36759 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36760 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36761 }
36762 return words
36763 }
36764
36765 function wordsToBytes (words) {
36766 var bytes = []
36767 for (var b = 0; b < words.length * 32; b += 8) {
36768 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36769 }
36770 return bytes
36771 }
36772
36773 function processBlock (H, M, offset) {
36774 // swap endian
36775 for (var i = 0; i < 16; i++) {
36776 var offset_i = offset + i
36777 var M_offset_i = M[offset_i]
36778
36779 // Swap
36780 M[offset_i] = (
36781 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36782 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36783 )
36784 }
36785
36786 // Working variables
36787 var al, bl, cl, dl, el
36788 var ar, br, cr, dr, er
36789
36790 ar = al = H[0]
36791 br = bl = H[1]
36792 cr = cl = H[2]
36793 dr = dl = H[3]
36794 er = el = H[4]
36795
36796 // computation
36797 var t
36798 for (i = 0; i < 80; i += 1) {
36799 t = (al + M[offset + zl[i]]) | 0
36800 if (i < 16) {
36801 t += f1(bl, cl, dl) + hl[0]
36802 } else if (i < 32) {
36803 t += f2(bl, cl, dl) + hl[1]
36804 } else if (i < 48) {
36805 t += f3(bl, cl, dl) + hl[2]
36806 } else if (i < 64) {
36807 t += f4(bl, cl, dl) + hl[3]
36808 } else {// if (i<80) {
36809 t += f5(bl, cl, dl) + hl[4]
36810 }
36811 t = t | 0
36812 t = rotl(t, sl[i])
36813 t = (t + el) | 0
36814 al = el
36815 el = dl
36816 dl = rotl(cl, 10)
36817 cl = bl
36818 bl = t
36819
36820 t = (ar + M[offset + zr[i]]) | 0
36821 if (i < 16) {
36822 t += f5(br, cr, dr) + hr[0]
36823 } else if (i < 32) {
36824 t += f4(br, cr, dr) + hr[1]
36825 } else if (i < 48) {
36826 t += f3(br, cr, dr) + hr[2]
36827 } else if (i < 64) {
36828 t += f2(br, cr, dr) + hr[3]
36829 } else {// if (i<80) {
36830 t += f1(br, cr, dr) + hr[4]
36831 }
36832
36833 t = t | 0
36834 t = rotl(t, sr[i])
36835 t = (t + er) | 0
36836 ar = er
36837 er = dr
36838 dr = rotl(cr, 10)
36839 cr = br
36840 br = t
36841 }
36842
36843 // intermediate hash value
36844 t = (H[1] + cl + dr) | 0
36845 H[1] = (H[2] + dl + er) | 0
36846 H[2] = (H[3] + el + ar) | 0
36847 H[3] = (H[4] + al + br) | 0
36848 H[4] = (H[0] + bl + cr) | 0
36849 H[0] = t
36850 }
36851
36852 function f1 (x, y, z) {
36853 return ((x) ^ (y) ^ (z))
36854 }
36855
36856 function f2 (x, y, z) {
36857 return (((x) & (y)) | ((~x) & (z)))
36858 }
36859
36860 function f3 (x, y, z) {
36861 return (((x) | (~(y))) ^ (z))
36862 }
36863
36864 function f4 (x, y, z) {
36865 return (((x) & (z)) | ((y) & (~(z))))
36866 }
36867
36868 function f5 (x, y, z) {
36869 return ((x) ^ ((y) | (~(z))))
36870 }
36871
36872 function rotl (x, n) {
36873 return (x << n) | (x >>> (32 - n))
36874 }
36875
36876 function ripemd160 (message) {
36877 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
36878
36879 if (typeof message === 'string') {
36880 message = new Buffer(message, 'utf8')
36881 }
36882
36883 var m = bytesToWords(message)
36884
36885 var nBitsLeft = message.length * 8
36886 var nBitsTotal = message.length * 8
36887
36888 // Add padding
36889 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36890 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36891 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36892 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36893 )
36894
36895 for (var i = 0; i < m.length; i += 16) {
36896 processBlock(H, m, i)
36897 }
36898
36899 // swap endian
36900 for (i = 0; i < 5; i++) {
36901 // shortcut
36902 var H_i = H[i]
36903
36904 // Swap
36905 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36906 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
36907 }
36908
36909 var digestbytes = wordsToBytes(H)
36910 return new Buffer(digestbytes)
36911 }
36912
36913 module.exports = ripemd160
36914
36915 }).call(this,require("buffer").Buffer)
36916 },{"buffer":5}],72:[function(require,module,exports){
36917 (function (Buffer){
36918 const assert = require('assert')
36919 /**
36920 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36921 * This function takes in a data, convert it to buffer if not, and a length for recursion
36922 *
36923 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36924 * @returns {Buffer} - returns buffer of encoded data
36925 **/
36926 exports.encode = function (input) {
36927 if (input instanceof Array) {
36928 var output = []
36929 for (var i = 0; i < input.length; i++) {
36930 output.push(exports.encode(input[i]))
36931 }
36932 var buf = Buffer.concat(output)
36933 return Buffer.concat([encodeLength(buf.length, 192), buf])
36934 } else {
36935 input = toBuffer(input)
36936 if (input.length === 1 && input[0] < 128) {
36937 return input
36938 } else {
36939 return Buffer.concat([encodeLength(input.length, 128), input])
36940 }
36941 }
36942 }
36943
36944 function safeParseInt (v, base) {
36945 if (v.slice(0, 2) === '00') {
36946 throw (new Error('invalid RLP: extra zeros'))
36947 }
36948
36949 return parseInt(v, base)
36950 }
36951
36952 function encodeLength (len, offset) {
36953 if (len < 56) {
36954 return new Buffer([len + offset])
36955 } else {
36956 var hexLength = intToHex(len)
36957 var lLength = hexLength.length / 2
36958 var firstByte = intToHex(offset + 55 + lLength)
36959 return new Buffer(firstByte + hexLength, 'hex')
36960 }
36961 }
36962
36963 /**
36964 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36965 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36966 * @returns {Array} - returns decode Array of Buffers containg the original message
36967 **/
36968 exports.decode = function (input, stream) {
36969 if (!input || input.length === 0) {
36970 return new Buffer([])
36971 }
36972
36973 input = toBuffer(input)
36974 var decoded = _decode(input)
36975
36976 if (stream) {
36977 return decoded
36978 }
36979
36980 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36981 return decoded.data
36982 }
36983
36984 exports.getLength = function (input) {
36985 if (!input || input.length === 0) {
36986 return new Buffer([])
36987 }
36988
36989 input = toBuffer(input)
36990 var firstByte = input[0]
36991 if (firstByte <= 0x7f) {
36992 return input.length
36993 } else if (firstByte <= 0xb7) {
36994 return firstByte - 0x7f
36995 } else if (firstByte <= 0xbf) {
36996 return firstByte - 0xb6
36997 } else if (firstByte <= 0xf7) {
36998 // a list between 0-55 bytes long
36999 return firstByte - 0xbf
37000 } else {
37001 // a list over 55 bytes long
37002 var llength = firstByte - 0xf6
37003 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37004 return llength + length
37005 }
37006 }
37007
37008 function _decode (input) {
37009 var length, llength, data, innerRemainder, d
37010 var decoded = []
37011 var firstByte = input[0]
37012
37013 if (firstByte <= 0x7f) {
37014 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
37015 return {
37016 data: input.slice(0, 1),
37017 remainder: input.slice(1)
37018 }
37019 } else if (firstByte <= 0xb7) {
37020 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
37021 // The range of the first byte is [0x80, 0xb7]
37022 length = firstByte - 0x7f
37023
37024 // set 0x80 null to 0
37025 if (firstByte === 0x80) {
37026 data = new Buffer([])
37027 } else {
37028 data = input.slice(1, length)
37029 }
37030
37031 if (length === 2 && data[0] < 0x80) {
37032 throw new Error('invalid rlp encoding: byte must be less 0x80')
37033 }
37034
37035 return {
37036 data: data,
37037 remainder: input.slice(length)
37038 }
37039 } else if (firstByte <= 0xbf) {
37040 llength = firstByte - 0xb6
37041 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37042 data = input.slice(llength, length + llength)
37043 if (data.length < length) {
37044 throw (new Error('invalid RLP'))
37045 }
37046
37047 return {
37048 data: data,
37049 remainder: input.slice(length + llength)
37050 }
37051 } else if (firstByte <= 0xf7) {
37052 // a list between 0-55 bytes long
37053 length = firstByte - 0xbf
37054 innerRemainder = input.slice(1, length)
37055 while (innerRemainder.length) {
37056 d = _decode(innerRemainder)
37057 decoded.push(d.data)
37058 innerRemainder = d.remainder
37059 }
37060
37061 return {
37062 data: decoded,
37063 remainder: input.slice(length)
37064 }
37065 } else {
37066 // a list over 55 bytes long
37067 llength = firstByte - 0xf6
37068 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37069 var totalLength = llength + length
37070 if (totalLength > input.length) {
37071 throw new Error('invalid rlp: total length is larger than the data')
37072 }
37073
37074 innerRemainder = input.slice(llength, totalLength)
37075 if (innerRemainder.length === 0) {
37076 throw new Error('invalid rlp, List has a invalid length')
37077 }
37078
37079 while (innerRemainder.length) {
37080 d = _decode(innerRemainder)
37081 decoded.push(d.data)
37082 innerRemainder = d.remainder
37083 }
37084 return {
37085 data: decoded,
37086 remainder: input.slice(totalLength)
37087 }
37088 }
37089 }
37090
37091 function isHexPrefixed (str) {
37092 return str.slice(0, 2) === '0x'
37093 }
37094
37095 // Removes 0x from a given String
37096 function stripHexPrefix (str) {
37097 if (typeof str !== 'string') {
37098 return str
37099 }
37100 return isHexPrefixed(str) ? str.slice(2) : str
37101 }
37102
37103 function intToHex (i) {
37104 var hex = i.toString(16)
37105 if (hex.length % 2) {
37106 hex = '0' + hex
37107 }
37108
37109 return hex
37110 }
37111
37112 function padToEven (a) {
37113 if (a.length % 2) a = '0' + a
37114 return a
37115 }
37116
37117 function intToBuffer (i) {
37118 var hex = intToHex(i)
37119 return new Buffer(hex, 'hex')
37120 }
37121
37122 function toBuffer (v) {
37123 if (!Buffer.isBuffer(v)) {
37124 if (typeof v === 'string') {
37125 if (isHexPrefixed(v)) {
37126 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37127 } else {
37128 v = new Buffer(v)
37129 }
37130 } else if (typeof v === 'number') {
37131 if (!v) {
37132 v = new Buffer([])
37133 } else {
37134 v = intToBuffer(v)
37135 }
37136 } else if (v === null || v === undefined) {
37137 v = new Buffer([])
37138 } else if (v.toArray) {
37139 // converts a BN to a Buffer
37140 v = new Buffer(v.toArray())
37141 } else {
37142 throw new Error('invalid type')
37143 }
37144 }
37145 return v
37146 }
37147
37148 }).call(this,require("buffer").Buffer)
37149 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
37150 'use strict'
37151 module.exports = require('./lib')(require('./lib/elliptic'))
37152
37153 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37154 (function (Buffer){
37155 'use strict'
37156 var toString = Object.prototype.toString
37157
37158 // TypeError
37159 exports.isArray = function (value, message) {
37160 if (!Array.isArray(value)) throw TypeError(message)
37161 }
37162
37163 exports.isBoolean = function (value, message) {
37164 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37165 }
37166
37167 exports.isBuffer = function (value, message) {
37168 if (!Buffer.isBuffer(value)) throw TypeError(message)
37169 }
37170
37171 exports.isFunction = function (value, message) {
37172 if (toString.call(value) !== '[object Function]') throw TypeError(message)
37173 }
37174
37175 exports.isNumber = function (value, message) {
37176 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37177 }
37178
37179 exports.isObject = function (value, message) {
37180 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37181 }
37182
37183 // RangeError
37184 exports.isBufferLength = function (buffer, length, message) {
37185 if (buffer.length !== length) throw RangeError(message)
37186 }
37187
37188 exports.isBufferLength2 = function (buffer, length1, length2, message) {
37189 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
37190 }
37191
37192 exports.isLengthGTZero = function (value, message) {
37193 if (value.length === 0) throw RangeError(message)
37194 }
37195
37196 exports.isNumberInInterval = function (number, x, y, message) {
37197 if (number <= x || number >= y) throw RangeError(message)
37198 }
37199
37200 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37201 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
37202 (function (Buffer){
37203 'use strict'
37204 var bip66 = require('bip66')
37205
37206 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37207 // begin
37208 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37209 // private key
37210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37212 // middle
37213 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37214 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37215 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37216 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37217 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37218 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37219 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37220 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37221 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37222 // public key
37223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37225 0x00
37226 ])
37227
37228 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37229 // begin
37230 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37231 // private key
37232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37234 // middle
37235 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37236 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37237 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37238 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37239 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37240 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37241 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37242 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37243 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37244 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37245 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37246 // public key
37247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37251 0x00
37252 ])
37253
37254 var ZERO_BUFFER_32 = new Buffer([
37255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37257 ])
37258
37259 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37260 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37261 privateKey.copy(result, compressed ? 8 : 9)
37262 publicKey.copy(result, compressed ? 181 : 214)
37263 return result
37264 }
37265
37266 exports.privateKeyImport = function (privateKey) {
37267 var length = privateKey.length
37268
37269 // sequence header
37270 var index = 0
37271 if (length < index + 1 || privateKey[index] !== 0x30) return
37272 index += 1
37273
37274 // sequence length constructor
37275 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37276
37277 var lenb = privateKey[index] & 0x7f
37278 index += 1
37279 if (lenb < 1 || lenb > 2) return
37280 if (length < index + lenb) return
37281
37282 // sequence length
37283 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37284 index += lenb
37285 if (length < index + len) return
37286
37287 // sequence element 0: version number (=1)
37288 if (length < index + 3 ||
37289 privateKey[index] !== 0x02 ||
37290 privateKey[index + 1] !== 0x01 ||
37291 privateKey[index + 2] !== 0x01) {
37292 return
37293 }
37294 index += 3
37295
37296 // sequence element 1: octet string, up to 32 bytes
37297 if (length < index + 2 ||
37298 privateKey[index] !== 0x04 ||
37299 privateKey[index + 1] > 0x20 ||
37300 length < index + 2 + privateKey[index + 1]) {
37301 return
37302 }
37303
37304 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
37305 }
37306
37307 exports.signatureExport = function (sigObj) {
37308 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37309 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
37310
37311 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37312 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
37313
37314 return bip66.encode(r.slice(posR), s.slice(posS))
37315 }
37316
37317 exports.signatureImport = function (sig) {
37318 var r = new Buffer(ZERO_BUFFER_32)
37319 var s = new Buffer(ZERO_BUFFER_32)
37320
37321 try {
37322 var sigObj = bip66.decode(sig)
37323 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37324 if (sigObj.r.length > 32) throw new Error('R length is too long')
37325 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37326 if (sigObj.s.length > 32) throw new Error('S length is too long')
37327 } catch (err) {
37328 return
37329 }
37330
37331 sigObj.r.copy(r, 32 - sigObj.r.length)
37332 sigObj.s.copy(s, 32 - sigObj.s.length)
37333
37334 return { r: r, s: s }
37335 }
37336
37337 exports.signatureImportLax = function (sig) {
37338 var r = new Buffer(ZERO_BUFFER_32)
37339 var s = new Buffer(ZERO_BUFFER_32)
37340
37341 var length = sig.length
37342 var index = 0
37343
37344 // sequence tag byte
37345 if (sig[index++] !== 0x30) return
37346
37347 // sequence length byte
37348 var lenbyte = sig[index++]
37349 if (lenbyte & 0x80) {
37350 index += lenbyte - 0x80
37351 if (index > length) return
37352 }
37353
37354 // sequence tag byte for r
37355 if (sig[index++] !== 0x02) return
37356
37357 // length for r
37358 var rlen = sig[index++]
37359 if (rlen & 0x80) {
37360 lenbyte = rlen - 0x80
37361 if (index + lenbyte > length) return
37362 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37363 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
37364 }
37365 if (rlen > length - index) return
37366 var rindex = index
37367 index += rlen
37368
37369 // sequence tag byte for s
37370 if (sig[index++] !== 0x02) return
37371
37372 // length for s
37373 var slen = sig[index++]
37374 if (slen & 0x80) {
37375 lenbyte = slen - 0x80
37376 if (index + lenbyte > length) return
37377 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37378 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
37379 }
37380 if (slen > length - index) return
37381 var sindex = index
37382 index += slen
37383
37384 // ignore leading zeros in r
37385 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37386 // copy r value
37387 if (rlen > 32) return
37388 var rvalue = sig.slice(rindex, rindex + rlen)
37389 rvalue.copy(r, 32 - rvalue.length)
37390
37391 // ignore leading zeros in s
37392 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37393 // copy s value
37394 if (slen > 32) return
37395 var svalue = sig.slice(sindex, sindex + slen)
37396 svalue.copy(s, 32 - svalue.length)
37397
37398 return { r: r, s: s }
37399 }
37400
37401 }).call(this,require("buffer").Buffer)
37402 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37403 (function (Buffer){
37404 'use strict'
37405 var createHash = require('create-hash')
37406 var BN = require('bn.js')
37407 var EC = require('elliptic').ec
37408
37409 var messages = require('../messages.json')
37410
37411 var ec = new EC('secp256k1')
37412 var ecparams = ec.curve
37413
37414 function loadCompressedPublicKey (first, xBuffer) {
37415 var x = new BN(xBuffer)
37416
37417 // overflow
37418 if (x.cmp(ecparams.p) >= 0) return null
37419 x = x.toRed(ecparams.red)
37420
37421 // compute corresponding Y
37422 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37423 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37424
37425 return ec.keyPair({ pub: { x: x, y: y } })
37426 }
37427
37428 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37429 var x = new BN(xBuffer)
37430 var y = new BN(yBuffer)
37431
37432 // overflow
37433 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
37434
37435 x = x.toRed(ecparams.red)
37436 y = y.toRed(ecparams.red)
37437
37438 // is odd flag
37439 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
37440
37441 // x*x*x + b = y*y
37442 var x3 = x.redSqr().redIMul(x)
37443 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
37444
37445 return ec.keyPair({ pub: { x: x, y: y } })
37446 }
37447
37448 function loadPublicKey (publicKey) {
37449 var first = publicKey[0]
37450 switch (first) {
37451 case 0x02:
37452 case 0x03:
37453 if (publicKey.length !== 33) return null
37454 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37455 case 0x04:
37456 case 0x06:
37457 case 0x07:
37458 if (publicKey.length !== 65) return null
37459 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37460 default:
37461 return null
37462 }
37463 }
37464
37465 exports.privateKeyVerify = function (privateKey) {
37466 var bn = new BN(privateKey)
37467 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37468 }
37469
37470 exports.privateKeyExport = function (privateKey, compressed) {
37471 var d = new BN(privateKey)
37472 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
37473
37474 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37475 }
37476
37477 exports.privateKeyTweakAdd = function (privateKey, tweak) {
37478 var bn = new BN(tweak)
37479 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37480
37481 bn.iadd(new BN(privateKey))
37482 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37483 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37484
37485 return bn.toArrayLike(Buffer, 'be', 32)
37486 }
37487
37488 exports.privateKeyTweakMul = function (privateKey, tweak) {
37489 var bn = new BN(tweak)
37490 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37491
37492 bn.imul(new BN(privateKey))
37493 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37494
37495 return bn.toArrayLike(Buffer, 'be', 32)
37496 }
37497
37498 exports.publicKeyCreate = function (privateKey, compressed) {
37499 var d = new BN(privateKey)
37500 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37501
37502 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37503 }
37504
37505 exports.publicKeyConvert = function (publicKey, compressed) {
37506 var pair = loadPublicKey(publicKey)
37507 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37508
37509 return new Buffer(pair.getPublic(compressed, true))
37510 }
37511
37512 exports.publicKeyVerify = function (publicKey) {
37513 return loadPublicKey(publicKey) !== null
37514 }
37515
37516 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37517 var pair = loadPublicKey(publicKey)
37518 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37519
37520 tweak = new BN(tweak)
37521 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
37522
37523 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37524 }
37525
37526 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37527 var pair = loadPublicKey(publicKey)
37528 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37529
37530 tweak = new BN(tweak)
37531 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
37532
37533 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37534 }
37535
37536 exports.publicKeyCombine = function (publicKeys, compressed) {
37537 var pairs = new Array(publicKeys.length)
37538 for (var i = 0; i < publicKeys.length; ++i) {
37539 pairs[i] = loadPublicKey(publicKeys[i])
37540 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37541 }
37542
37543 var point = pairs[0].pub
37544 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37545 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
37546
37547 return new Buffer(point.encode(true, compressed))
37548 }
37549
37550 exports.signatureNormalize = function (signature) {
37551 var r = new BN(signature.slice(0, 32))
37552 var s = new BN(signature.slice(32, 64))
37553 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37554
37555 var result = new Buffer(signature)
37556 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37557
37558 return result
37559 }
37560
37561 exports.signatureExport = function (signature) {
37562 var r = signature.slice(0, 32)
37563 var s = signature.slice(32, 64)
37564 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37565
37566 return { r: r, s: s }
37567 }
37568
37569 exports.signatureImport = function (sigObj) {
37570 var r = new BN(sigObj.r)
37571 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37572
37573 var s = new BN(sigObj.s)
37574 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37575
37576 return Buffer.concat([
37577 r.toArrayLike(Buffer, 'be', 32),
37578 s.toArrayLike(Buffer, 'be', 32)
37579 ])
37580 }
37581
37582 exports.sign = function (message, privateKey, noncefn, data) {
37583 if (typeof noncefn === 'function') {
37584 var getNonce = noncefn
37585 noncefn = function (counter) {
37586 var nonce = getNonce(message, privateKey, null, data, counter)
37587 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
37588
37589 return new BN(nonce)
37590 }
37591 }
37592
37593 var d = new BN(privateKey)
37594 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
37595
37596 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37597 return {
37598 signature: Buffer.concat([
37599 result.r.toArrayLike(Buffer, 'be', 32),
37600 result.s.toArrayLike(Buffer, 'be', 32)
37601 ]),
37602 recovery: result.recoveryParam
37603 }
37604 }
37605
37606 exports.verify = function (message, signature, publicKey) {
37607 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37608
37609 var sigr = new BN(sigObj.r)
37610 var sigs = new BN(sigObj.s)
37611 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37612 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
37613
37614 var pair = loadPublicKey(publicKey)
37615 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37616
37617 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37618 }
37619
37620 exports.recover = function (message, signature, recovery, compressed) {
37621 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37622
37623 var sigr = new BN(sigObj.r)
37624 var sigs = new BN(sigObj.s)
37625 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37626
37627 try {
37628 if (sigr.isZero() || sigs.isZero()) throw new Error()
37629
37630 var point = ec.recoverPubKey(message, sigObj, recovery)
37631 return new Buffer(point.encode(true, compressed))
37632 } catch (err) {
37633 throw new Error(messages.ECDSA_RECOVER_FAIL)
37634 }
37635 }
37636
37637 exports.ecdh = function (publicKey, privateKey) {
37638 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37639 return createHash('sha256').update(shared).digest()
37640 }
37641
37642 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37643 var pair = loadPublicKey(publicKey)
37644 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37645
37646 var scalar = new BN(privateKey)
37647 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37648
37649 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
37650 }
37651
37652 }).call(this,require("buffer").Buffer)
37653 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37654 'use strict'
37655 var assert = require('./assert')
37656 var der = require('./der')
37657 var messages = require('./messages.json')
37658
37659 function initCompressedValue (value, defaultValue) {
37660 if (value === undefined) return defaultValue
37661
37662 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37663 return value
37664 }
37665
37666 module.exports = function (secp256k1) {
37667 return {
37668 privateKeyVerify: function (privateKey) {
37669 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37670 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37671 },
37672
37673 privateKeyExport: function (privateKey, compressed) {
37674 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37675 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37676
37677 compressed = initCompressedValue(compressed, true)
37678 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
37679
37680 return der.privateKeyExport(privateKey, publicKey, compressed)
37681 },
37682
37683 privateKeyImport: function (privateKey) {
37684 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37685
37686 privateKey = der.privateKeyImport(privateKey)
37687 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
37688
37689 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37690 },
37691
37692 privateKeyTweakAdd: function (privateKey, tweak) {
37693 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37694 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37695
37696 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37697 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37698
37699 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37700 },
37701
37702 privateKeyTweakMul: function (privateKey, tweak) {
37703 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37704 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37705
37706 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37707 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37708
37709 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37710 },
37711
37712 publicKeyCreate: function (privateKey, compressed) {
37713 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37714 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37715
37716 compressed = initCompressedValue(compressed, true)
37717
37718 return secp256k1.publicKeyCreate(privateKey, compressed)
37719 },
37720
37721 publicKeyConvert: function (publicKey, compressed) {
37722 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37723 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37724
37725 compressed = initCompressedValue(compressed, true)
37726
37727 return secp256k1.publicKeyConvert(publicKey, compressed)
37728 },
37729
37730 publicKeyVerify: function (publicKey) {
37731 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37732 return secp256k1.publicKeyVerify(publicKey)
37733 },
37734
37735 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37736 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37737 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37738
37739 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37740 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37741
37742 compressed = initCompressedValue(compressed, true)
37743
37744 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37745 },
37746
37747 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37748 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37749 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37750
37751 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37752 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37753
37754 compressed = initCompressedValue(compressed, true)
37755
37756 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37757 },
37758
37759 publicKeyCombine: function (publicKeys, compressed) {
37760 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37761 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37762 for (var i = 0; i < publicKeys.length; ++i) {
37763 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37764 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37765 }
37766
37767 compressed = initCompressedValue(compressed, true)
37768
37769 return secp256k1.publicKeyCombine(publicKeys, compressed)
37770 },
37771
37772 signatureNormalize: function (signature) {
37773 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37774 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37775
37776 return secp256k1.signatureNormalize(signature)
37777 },
37778
37779 signatureExport: function (signature) {
37780 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37781 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37782
37783 var sigObj = secp256k1.signatureExport(signature)
37784 return der.signatureExport(sigObj)
37785 },
37786
37787 signatureImport: function (sig) {
37788 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37789 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37790
37791 var sigObj = der.signatureImport(sig)
37792 if (sigObj) return secp256k1.signatureImport(sigObj)
37793
37794 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37795 },
37796
37797 signatureImportLax: function (sig) {
37798 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37799 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37800
37801 var sigObj = der.signatureImportLax(sig)
37802 if (sigObj) return secp256k1.signatureImport(sigObj)
37803
37804 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37805 },
37806
37807 sign: function (message, privateKey, options) {
37808 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37809 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37810
37811 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37812 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37813
37814 var data = null
37815 var noncefn = null
37816 if (options !== undefined) {
37817 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37818
37819 if (options.data !== undefined) {
37820 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37821 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37822 data = options.data
37823 }
37824
37825 if (options.noncefn !== undefined) {
37826 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37827 noncefn = options.noncefn
37828 }
37829 }
37830
37831 return secp256k1.sign(message, privateKey, noncefn, data)
37832 },
37833
37834 verify: function (message, signature, publicKey) {
37835 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37836 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37837
37838 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37839 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37840
37841 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37842 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37843
37844 return secp256k1.verify(message, signature, publicKey)
37845 },
37846
37847 recover: function (message, signature, recovery, compressed) {
37848 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37849 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37850
37851 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37852 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37853
37854 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37855 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
37856
37857 compressed = initCompressedValue(compressed, true)
37858
37859 return secp256k1.recover(message, signature, recovery, compressed)
37860 },
37861
37862 ecdh: function (publicKey, privateKey) {
37863 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37864 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37865
37866 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37867 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37868
37869 return secp256k1.ecdh(publicKey, privateKey)
37870 },
37871
37872 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37873 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37874 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37875
37876 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37877 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37878
37879 compressed = initCompressedValue(compressed, true)
37880
37881 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37882 }
37883 }
37884 }
37885
37886 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37887 module.exports={
37888 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37889 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37890 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37891 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37892 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37893 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37894 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37895 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37896 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37897 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37898 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37899 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37900 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37901 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37902 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37903 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37904 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37905 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37906 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37907 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37908 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37909 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37910 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37911 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37912 "MSG32_TYPE_INVALID": "message should be a Buffer",
37913 "MSG32_LENGTH_INVALID": "message length is invalid",
37914 "OPTIONS_TYPE_INVALID": "options should be an Object",
37915 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37916 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37917 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37918 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37919 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37920 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37921 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37922 }
37923
37924 },{}],79:[function(require,module,exports){
37925 (function (Buffer){
37926 // prototype class for hash functions
37927 function Hash (blockSize, finalSize) {
37928 this._block = new Buffer(blockSize)
37929 this._finalSize = finalSize
37930 this._blockSize = blockSize
37931 this._len = 0
37932 this._s = 0
37933 }
37934
37935 Hash.prototype.update = function (data, enc) {
37936 if (typeof data === 'string') {
37937 enc = enc || 'utf8'
37938 data = new Buffer(data, enc)
37939 }
37940
37941 var l = this._len += data.length
37942 var s = this._s || 0
37943 var f = 0
37944 var buffer = this._block
37945
37946 while (s < l) {
37947 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37948 var ch = (t - f)
37949
37950 for (var i = 0; i < ch; i++) {
37951 buffer[(s % this._blockSize) + i] = data[i + f]
37952 }
37953
37954 s += ch
37955 f += ch
37956
37957 if ((s % this._blockSize) === 0) {
37958 this._update(buffer)
37959 }
37960 }
37961 this._s = s
37962
37963 return this
37964 }
37965
37966 Hash.prototype.digest = function (enc) {
37967 // Suppose the length of the message M, in bits, is l
37968 var l = this._len * 8
37969
37970 // Append the bit 1 to the end of the message
37971 this._block[this._len % this._blockSize] = 0x80
37972
37973 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37974 this._block.fill(0, this._len % this._blockSize + 1)
37975
37976 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37977 this._update(this._block)
37978 this._block.fill(0)
37979 }
37980
37981 // to this append the block which is equal to the number l written in binary
37982 // TODO: handle case where l is > Math.pow(2, 29)
37983 this._block.writeInt32BE(l, this._blockSize - 4)
37984
37985 var hash = this._update(this._block) || this._hash()
37986
37987 return enc ? hash.toString(enc) : hash
37988 }
37989
37990 Hash.prototype._update = function () {
37991 throw new Error('_update must be implemented by subclass')
37992 }
37993
37994 module.exports = Hash
37995
37996 }).call(this,require("buffer").Buffer)
37997 },{"buffer":5}],80:[function(require,module,exports){
37998 var exports = module.exports = function SHA (algorithm) {
37999 algorithm = algorithm.toLowerCase()
38000
38001 var Algorithm = exports[algorithm]
38002 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
38003
38004 return new Algorithm()
38005 }
38006
38007 exports.sha = require('./sha')
38008 exports.sha1 = require('./sha1')
38009 exports.sha224 = require('./sha224')
38010 exports.sha256 = require('./sha256')
38011 exports.sha384 = require('./sha384')
38012 exports.sha512 = require('./sha512')
38013
38014 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
38015 (function (Buffer){
38016 /*
38017 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
38018 * in FIPS PUB 180-1
38019 * This source code is derived from sha1.js of the same repository.
38020 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
38021 * operation was added.
38022 */
38023
38024 var inherits = require('inherits')
38025 var Hash = require('./hash')
38026
38027 var K = [
38028 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38029 ]
38030
38031 var W = new Array(80)
38032
38033 function Sha () {
38034 this.init()
38035 this._w = W
38036
38037 Hash.call(this, 64, 56)
38038 }
38039
38040 inherits(Sha, Hash)
38041
38042 Sha.prototype.init = function () {
38043 this._a = 0x67452301
38044 this._b = 0xefcdab89
38045 this._c = 0x98badcfe
38046 this._d = 0x10325476
38047 this._e = 0xc3d2e1f0
38048
38049 return this
38050 }
38051
38052 function rotl5 (num) {
38053 return (num << 5) | (num >>> 27)
38054 }
38055
38056 function rotl30 (num) {
38057 return (num << 30) | (num >>> 2)
38058 }
38059
38060 function ft (s, b, c, d) {
38061 if (s === 0) return (b & c) | ((~b) & d)
38062 if (s === 2) return (b & c) | (b & d) | (c & d)
38063 return b ^ c ^ d
38064 }
38065
38066 Sha.prototype._update = function (M) {
38067 var W = this._w
38068
38069 var a = this._a | 0
38070 var b = this._b | 0
38071 var c = this._c | 0
38072 var d = this._d | 0
38073 var e = this._e | 0
38074
38075 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38076 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
38077
38078 for (var j = 0; j < 80; ++j) {
38079 var s = ~~(j / 20)
38080 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38081
38082 e = d
38083 d = c
38084 c = rotl30(b)
38085 b = a
38086 a = t
38087 }
38088
38089 this._a = (a + this._a) | 0
38090 this._b = (b + this._b) | 0
38091 this._c = (c + this._c) | 0
38092 this._d = (d + this._d) | 0
38093 this._e = (e + this._e) | 0
38094 }
38095
38096 Sha.prototype._hash = function () {
38097 var H = new Buffer(20)
38098
38099 H.writeInt32BE(this._a | 0, 0)
38100 H.writeInt32BE(this._b | 0, 4)
38101 H.writeInt32BE(this._c | 0, 8)
38102 H.writeInt32BE(this._d | 0, 12)
38103 H.writeInt32BE(this._e | 0, 16)
38104
38105 return H
38106 }
38107
38108 module.exports = Sha
38109
38110 }).call(this,require("buffer").Buffer)
38111 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38112 (function (Buffer){
38113 /*
38114 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38115 * in FIPS PUB 180-1
38116 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38117 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38118 * Distributed under the BSD License
38119 * See http://pajhome.org.uk/crypt/md5 for details.
38120 */
38121
38122 var inherits = require('inherits')
38123 var Hash = require('./hash')
38124
38125 var K = [
38126 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38127 ]
38128
38129 var W = new Array(80)
38130
38131 function Sha1 () {
38132 this.init()
38133 this._w = W
38134
38135 Hash.call(this, 64, 56)
38136 }
38137
38138 inherits(Sha1, Hash)
38139
38140 Sha1.prototype.init = function () {
38141 this._a = 0x67452301
38142 this._b = 0xefcdab89
38143 this._c = 0x98badcfe
38144 this._d = 0x10325476
38145 this._e = 0xc3d2e1f0
38146
38147 return this
38148 }
38149
38150 function rotl1 (num) {
38151 return (num << 1) | (num >>> 31)
38152 }
38153
38154 function rotl5 (num) {
38155 return (num << 5) | (num >>> 27)
38156 }
38157
38158 function rotl30 (num) {
38159 return (num << 30) | (num >>> 2)
38160 }
38161
38162 function ft (s, b, c, d) {
38163 if (s === 0) return (b & c) | ((~b) & d)
38164 if (s === 2) return (b & c) | (b & d) | (c & d)
38165 return b ^ c ^ d
38166 }
38167
38168 Sha1.prototype._update = function (M) {
38169 var W = this._w
38170
38171 var a = this._a | 0
38172 var b = this._b | 0
38173 var c = this._c | 0
38174 var d = this._d | 0
38175 var e = this._e | 0
38176
38177 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38178 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38179
38180 for (var j = 0; j < 80; ++j) {
38181 var s = ~~(j / 20)
38182 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38183
38184 e = d
38185 d = c
38186 c = rotl30(b)
38187 b = a
38188 a = t
38189 }
38190
38191 this._a = (a + this._a) | 0
38192 this._b = (b + this._b) | 0
38193 this._c = (c + this._c) | 0
38194 this._d = (d + this._d) | 0
38195 this._e = (e + this._e) | 0
38196 }
38197
38198 Sha1.prototype._hash = function () {
38199 var H = new Buffer(20)
38200
38201 H.writeInt32BE(this._a | 0, 0)
38202 H.writeInt32BE(this._b | 0, 4)
38203 H.writeInt32BE(this._c | 0, 8)
38204 H.writeInt32BE(this._d | 0, 12)
38205 H.writeInt32BE(this._e | 0, 16)
38206
38207 return H
38208 }
38209
38210 module.exports = Sha1
38211
38212 }).call(this,require("buffer").Buffer)
38213 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38214 (function (Buffer){
38215 /**
38216 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38217 * in FIPS 180-2
38218 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38219 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38220 *
38221 */
38222
38223 var inherits = require('inherits')
38224 var Sha256 = require('./sha256')
38225 var Hash = require('./hash')
38226
38227 var W = new Array(64)
38228
38229 function Sha224 () {
38230 this.init()
38231
38232 this._w = W // new Array(64)
38233
38234 Hash.call(this, 64, 56)
38235 }
38236
38237 inherits(Sha224, Sha256)
38238
38239 Sha224.prototype.init = function () {
38240 this._a = 0xc1059ed8
38241 this._b = 0x367cd507
38242 this._c = 0x3070dd17
38243 this._d = 0xf70e5939
38244 this._e = 0xffc00b31
38245 this._f = 0x68581511
38246 this._g = 0x64f98fa7
38247 this._h = 0xbefa4fa4
38248
38249 return this
38250 }
38251
38252 Sha224.prototype._hash = function () {
38253 var H = new Buffer(28)
38254
38255 H.writeInt32BE(this._a, 0)
38256 H.writeInt32BE(this._b, 4)
38257 H.writeInt32BE(this._c, 8)
38258 H.writeInt32BE(this._d, 12)
38259 H.writeInt32BE(this._e, 16)
38260 H.writeInt32BE(this._f, 20)
38261 H.writeInt32BE(this._g, 24)
38262
38263 return H
38264 }
38265
38266 module.exports = Sha224
38267
38268 }).call(this,require("buffer").Buffer)
38269 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38270 (function (Buffer){
38271 /**
38272 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38273 * in FIPS 180-2
38274 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38275 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38276 *
38277 */
38278
38279 var inherits = require('inherits')
38280 var Hash = require('./hash')
38281
38282 var K = [
38283 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38284 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38285 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38286 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38287 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38288 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38289 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38290 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38291 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38292 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38293 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38294 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38295 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38296 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38297 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38298 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38299 ]
38300
38301 var W = new Array(64)
38302
38303 function Sha256 () {
38304 this.init()
38305
38306 this._w = W // new Array(64)
38307
38308 Hash.call(this, 64, 56)
38309 }
38310
38311 inherits(Sha256, Hash)
38312
38313 Sha256.prototype.init = function () {
38314 this._a = 0x6a09e667
38315 this._b = 0xbb67ae85
38316 this._c = 0x3c6ef372
38317 this._d = 0xa54ff53a
38318 this._e = 0x510e527f
38319 this._f = 0x9b05688c
38320 this._g = 0x1f83d9ab
38321 this._h = 0x5be0cd19
38322
38323 return this
38324 }
38325
38326 function ch (x, y, z) {
38327 return z ^ (x & (y ^ z))
38328 }
38329
38330 function maj (x, y, z) {
38331 return (x & y) | (z & (x | y))
38332 }
38333
38334 function sigma0 (x) {
38335 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38336 }
38337
38338 function sigma1 (x) {
38339 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38340 }
38341
38342 function gamma0 (x) {
38343 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38344 }
38345
38346 function gamma1 (x) {
38347 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38348 }
38349
38350 Sha256.prototype._update = function (M) {
38351 var W = this._w
38352
38353 var a = this._a | 0
38354 var b = this._b | 0
38355 var c = this._c | 0
38356 var d = this._d | 0
38357 var e = this._e | 0
38358 var f = this._f | 0
38359 var g = this._g | 0
38360 var h = this._h | 0
38361
38362 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38363 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
38364
38365 for (var j = 0; j < 64; ++j) {
38366 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38367 var T2 = (sigma0(a) + maj(a, b, c)) | 0
38368
38369 h = g
38370 g = f
38371 f = e
38372 e = (d + T1) | 0
38373 d = c
38374 c = b
38375 b = a
38376 a = (T1 + T2) | 0
38377 }
38378
38379 this._a = (a + this._a) | 0
38380 this._b = (b + this._b) | 0
38381 this._c = (c + this._c) | 0
38382 this._d = (d + this._d) | 0
38383 this._e = (e + this._e) | 0
38384 this._f = (f + this._f) | 0
38385 this._g = (g + this._g) | 0
38386 this._h = (h + this._h) | 0
38387 }
38388
38389 Sha256.prototype._hash = function () {
38390 var H = new Buffer(32)
38391
38392 H.writeInt32BE(this._a, 0)
38393 H.writeInt32BE(this._b, 4)
38394 H.writeInt32BE(this._c, 8)
38395 H.writeInt32BE(this._d, 12)
38396 H.writeInt32BE(this._e, 16)
38397 H.writeInt32BE(this._f, 20)
38398 H.writeInt32BE(this._g, 24)
38399 H.writeInt32BE(this._h, 28)
38400
38401 return H
38402 }
38403
38404 module.exports = Sha256
38405
38406 }).call(this,require("buffer").Buffer)
38407 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38408 (function (Buffer){
38409 var inherits = require('inherits')
38410 var SHA512 = require('./sha512')
38411 var Hash = require('./hash')
38412
38413 var W = new Array(160)
38414
38415 function Sha384 () {
38416 this.init()
38417 this._w = W
38418
38419 Hash.call(this, 128, 112)
38420 }
38421
38422 inherits(Sha384, SHA512)
38423
38424 Sha384.prototype.init = function () {
38425 this._ah = 0xcbbb9d5d
38426 this._bh = 0x629a292a
38427 this._ch = 0x9159015a
38428 this._dh = 0x152fecd8
38429 this._eh = 0x67332667
38430 this._fh = 0x8eb44a87
38431 this._gh = 0xdb0c2e0d
38432 this._hh = 0x47b5481d
38433
38434 this._al = 0xc1059ed8
38435 this._bl = 0x367cd507
38436 this._cl = 0x3070dd17
38437 this._dl = 0xf70e5939
38438 this._el = 0xffc00b31
38439 this._fl = 0x68581511
38440 this._gl = 0x64f98fa7
38441 this._hl = 0xbefa4fa4
38442
38443 return this
38444 }
38445
38446 Sha384.prototype._hash = function () {
38447 var H = new Buffer(48)
38448
38449 function writeInt64BE (h, l, offset) {
38450 H.writeInt32BE(h, offset)
38451 H.writeInt32BE(l, offset + 4)
38452 }
38453
38454 writeInt64BE(this._ah, this._al, 0)
38455 writeInt64BE(this._bh, this._bl, 8)
38456 writeInt64BE(this._ch, this._cl, 16)
38457 writeInt64BE(this._dh, this._dl, 24)
38458 writeInt64BE(this._eh, this._el, 32)
38459 writeInt64BE(this._fh, this._fl, 40)
38460
38461 return H
38462 }
38463
38464 module.exports = Sha384
38465
38466 }).call(this,require("buffer").Buffer)
38467 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38468 (function (Buffer){
38469 var inherits = require('inherits')
38470 var Hash = require('./hash')
38471
38472 var K = [
38473 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38474 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38475 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38476 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38477 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38478 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38479 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38480 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38481 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38482 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38483 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38484 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38485 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38486 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38487 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38488 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38489 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38490 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38491 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38492 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38493 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38494 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38495 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38496 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38497 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38498 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38499 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38500 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38501 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38502 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38503 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38504 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38505 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38506 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38507 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38508 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38509 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38510 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38511 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38512 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38513 ]
38514
38515 var W = new Array(160)
38516
38517 function Sha512 () {
38518 this.init()
38519 this._w = W
38520
38521 Hash.call(this, 128, 112)
38522 }
38523
38524 inherits(Sha512, Hash)
38525
38526 Sha512.prototype.init = function () {
38527 this._ah = 0x6a09e667
38528 this._bh = 0xbb67ae85
38529 this._ch = 0x3c6ef372
38530 this._dh = 0xa54ff53a
38531 this._eh = 0x510e527f
38532 this._fh = 0x9b05688c
38533 this._gh = 0x1f83d9ab
38534 this._hh = 0x5be0cd19
38535
38536 this._al = 0xf3bcc908
38537 this._bl = 0x84caa73b
38538 this._cl = 0xfe94f82b
38539 this._dl = 0x5f1d36f1
38540 this._el = 0xade682d1
38541 this._fl = 0x2b3e6c1f
38542 this._gl = 0xfb41bd6b
38543 this._hl = 0x137e2179
38544
38545 return this
38546 }
38547
38548 function Ch (x, y, z) {
38549 return z ^ (x & (y ^ z))
38550 }
38551
38552 function maj (x, y, z) {
38553 return (x & y) | (z & (x | y))
38554 }
38555
38556 function sigma0 (x, xl) {
38557 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38558 }
38559
38560 function sigma1 (x, xl) {
38561 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38562 }
38563
38564 function Gamma0 (x, xl) {
38565 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
38566 }
38567
38568 function Gamma0l (x, xl) {
38569 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38570 }
38571
38572 function Gamma1 (x, xl) {
38573 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
38574 }
38575
38576 function Gamma1l (x, xl) {
38577 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
38578 }
38579
38580 function getCarry (a, b) {
38581 return (a >>> 0) < (b >>> 0) ? 1 : 0
38582 }
38583
38584 Sha512.prototype._update = function (M) {
38585 var W = this._w
38586
38587 var ah = this._ah | 0
38588 var bh = this._bh | 0
38589 var ch = this._ch | 0
38590 var dh = this._dh | 0
38591 var eh = this._eh | 0
38592 var fh = this._fh | 0
38593 var gh = this._gh | 0
38594 var hh = this._hh | 0
38595
38596 var al = this._al | 0
38597 var bl = this._bl | 0
38598 var cl = this._cl | 0
38599 var dl = this._dl | 0
38600 var el = this._el | 0
38601 var fl = this._fl | 0
38602 var gl = this._gl | 0
38603 var hl = this._hl | 0
38604
38605 for (var i = 0; i < 32; i += 2) {
38606 W[i] = M.readInt32BE(i * 4)
38607 W[i + 1] = M.readInt32BE(i * 4 + 4)
38608 }
38609 for (; i < 160; i += 2) {
38610 var xh = W[i - 15 * 2]
38611 var xl = W[i - 15 * 2 + 1]
38612 var gamma0 = Gamma0(xh, xl)
38613 var gamma0l = Gamma0l(xl, xh)
38614
38615 xh = W[i - 2 * 2]
38616 xl = W[i - 2 * 2 + 1]
38617 var gamma1 = Gamma1(xh, xl)
38618 var gamma1l = Gamma1l(xl, xh)
38619
38620 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38621 var Wi7h = W[i - 7 * 2]
38622 var Wi7l = W[i - 7 * 2 + 1]
38623
38624 var Wi16h = W[i - 16 * 2]
38625 var Wi16l = W[i - 16 * 2 + 1]
38626
38627 var Wil = (gamma0l + Wi7l) | 0
38628 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38629 Wil = (Wil + gamma1l) | 0
38630 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38631 Wil = (Wil + Wi16l) | 0
38632 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
38633
38634 W[i] = Wih
38635 W[i + 1] = Wil
38636 }
38637
38638 for (var j = 0; j < 160; j += 2) {
38639 Wih = W[j]
38640 Wil = W[j + 1]
38641
38642 var majh = maj(ah, bh, ch)
38643 var majl = maj(al, bl, cl)
38644
38645 var sigma0h = sigma0(ah, al)
38646 var sigma0l = sigma0(al, ah)
38647 var sigma1h = sigma1(eh, el)
38648 var sigma1l = sigma1(el, eh)
38649
38650 // t1 = h + sigma1 + ch + K[j] + W[j]
38651 var Kih = K[j]
38652 var Kil = K[j + 1]
38653
38654 var chh = Ch(eh, fh, gh)
38655 var chl = Ch(el, fl, gl)
38656
38657 var t1l = (hl + sigma1l) | 0
38658 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38659 t1l = (t1l + chl) | 0
38660 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38661 t1l = (t1l + Kil) | 0
38662 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38663 t1l = (t1l + Wil) | 0
38664 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
38665
38666 // t2 = sigma0 + maj
38667 var t2l = (sigma0l + majl) | 0
38668 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
38669
38670 hh = gh
38671 hl = gl
38672 gh = fh
38673 gl = fl
38674 fh = eh
38675 fl = el
38676 el = (dl + t1l) | 0
38677 eh = (dh + t1h + getCarry(el, dl)) | 0
38678 dh = ch
38679 dl = cl
38680 ch = bh
38681 cl = bl
38682 bh = ah
38683 bl = al
38684 al = (t1l + t2l) | 0
38685 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38686 }
38687
38688 this._al = (this._al + al) | 0
38689 this._bl = (this._bl + bl) | 0
38690 this._cl = (this._cl + cl) | 0
38691 this._dl = (this._dl + dl) | 0
38692 this._el = (this._el + el) | 0
38693 this._fl = (this._fl + fl) | 0
38694 this._gl = (this._gl + gl) | 0
38695 this._hl = (this._hl + hl) | 0
38696
38697 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38698 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38699 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38700 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38701 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38702 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38703 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38704 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
38705 }
38706
38707 Sha512.prototype._hash = function () {
38708 var H = new Buffer(64)
38709
38710 function writeInt64BE (h, l, offset) {
38711 H.writeInt32BE(h, offset)
38712 H.writeInt32BE(l, offset + 4)
38713 }
38714
38715 writeInt64BE(this._ah, this._al, 0)
38716 writeInt64BE(this._bh, this._bl, 8)
38717 writeInt64BE(this._ch, this._cl, 16)
38718 writeInt64BE(this._dh, this._dl, 24)
38719 writeInt64BE(this._eh, this._el, 32)
38720 writeInt64BE(this._fh, this._fl, 40)
38721 writeInt64BE(this._gh, this._gl, 48)
38722 writeInt64BE(this._hh, this._hl, 56)
38723
38724 return H
38725 }
38726
38727 module.exports = Sha512
38728
38729 }).call(this,require("buffer").Buffer)
38730 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38731 var isHexPrefixed = require('is-hex-prefixed');
38732
38733 /**
38734 * Removes '0x' from a given `String` is present
38735 * @param {String} str the string value
38736 * @return {String|Optional} a string by pass if necessary
38737 */
38738 module.exports = function stripHexPrefix(str) {
38739 if (typeof str !== 'string') {
38740 return str;
38741 }
38742
38743 return isHexPrefixed(str) ? str.slice(2) : str;
38744 }
38745
38746 },{"is-hex-prefixed":64}]},{},[31])(31)
38747 });</script>
38748 <script>function convertRippleAdrr(address) {
38749 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38750 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38751 )
38752 }
38753
38754 function convertRipplePriv(priv) {
38755 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
38756 }
38757
38758 </script>
38759 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
38760
38761 //// base.js
38762
38763 /** @fileOverview Javascript cryptography implementation.
38764 *
38765 * Crush to remove comments, shorten variable names and
38766 * generally reduce transmission size.
38767 *
38768 * @author Emily Stark
38769 * @author Mike Hamburg
38770 * @author Dan Boneh
38771 */
38772
38773 "use strict";
38774 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38775 /*global document, window, escape, unescape, module, require, Uint32Array */
38776
38777 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38778 var sjcl = {
38779 /** @namespace Symmetric ciphers. */
38780 cipher: {},
38781
38782 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38783 hash: {},
38784
38785 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38786 keyexchange: {},
38787
38788 /** @namespace Block cipher modes of operation. */
38789 mode: {},
38790
38791 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38792 misc: {},
38793
38794 /**
38795 * @namespace Bit array encoders and decoders.
38796 *
38797 * @description
38798 * The members of this namespace are functions which translate between
38799 * SJCL's bitArrays and other objects (usually strings). Because it
38800 * isn't always clear which direction is encoding and which is decoding,
38801 * the method names are "fromBits" and "toBits".
38802 */
38803 codec: {},
38804
38805 /** @namespace Exceptions. */
38806 exception: {
38807 /** @constructor Ciphertext is corrupt. */
38808 corrupt: function(message) {
38809 this.toString = function() { return "CORRUPT: "+this.message; };
38810 this.message = message;
38811 },
38812
38813 /** @constructor Invalid parameter. */
38814 invalid: function(message) {
38815 this.toString = function() { return "INVALID: "+this.message; };
38816 this.message = message;
38817 },
38818
38819 /** @constructor Bug or missing feature in SJCL. @constructor */
38820 bug: function(message) {
38821 this.toString = function() { return "BUG: "+this.message; };
38822 this.message = message;
38823 },
38824
38825 /** @constructor Something isn't ready. */
38826 notReady: function(message) {
38827 this.toString = function() { return "NOT READY: "+this.message; };
38828 this.message = message;
38829 }
38830 }
38831 };
38832
38833 if(typeof module !== 'undefined' && module.exports){
38834 module.exports = sjcl;
38835 }
38836 if (typeof define === "function") {
38837 define([], function () {
38838 return sjcl;
38839 });
38840 }
38841
38842
38843 //// bitArray.js
38844
38845 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38846 *
38847 * @author Emily Stark
38848 * @author Mike Hamburg
38849 * @author Dan Boneh
38850 */
38851
38852 /** @namespace Arrays of bits, encoded as arrays of Numbers.
38853 *
38854 * @description
38855 * <p>
38856 * These objects are the currency accepted by SJCL's crypto functions.
38857 * </p>
38858 *
38859 * <p>
38860 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38861 * but many of them can take arguments that are not a multiple of 4 bytes.
38862 * This library encodes arrays of bits (whose size need not be a multiple of 8
38863 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38864 * array of words, 32 bits at a time. Since the words are double-precision
38865 * floating point numbers, they fit some extra data. We use this (in a private,
38866 * possibly-changing manner) to encode the number of bits actually present
38867 * in the last word of the array.
38868 * </p>
38869 *
38870 * <p>
38871 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38872 * to ciphers like AES which want arrays of words.
38873 * </p>
38874 */
38875 sjcl.bitArray = {
38876 /**
38877 * Array slices in units of bits.
38878 * @param {bitArray} a The array to slice.
38879 * @param {Number} bstart The offset to the start of the slice, in bits.
38880 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38881 * slice until the end of the array.
38882 * @return {bitArray} The requested slice.
38883 */
38884 bitSlice: function (a, bstart, bend) {
38885 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38886 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38887 },
38888
38889 /**
38890 * Extract a number packed into a bit array.
38891 * @param {bitArray} a The array to slice.
38892 * @param {Number} bstart The offset to the start of the slice, in bits.
38893 * @param {Number} length The length of the number to extract.
38894 * @return {Number} The requested slice.
38895 */
38896 extract: function(a, bstart, blength) {
38897 // FIXME: this Math.floor is not necessary at all, but for some reason
38898 // seems to suppress a bug in the Chromium JIT.
38899 var x, sh = Math.floor((-bstart-blength) & 31);
38900 if ((bstart + blength - 1 ^ bstart) & -32) {
38901 // it crosses a boundary
38902 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38903 } else {
38904 // within a single word
38905 x = a[bstart/32|0] >>> sh;
38906 }
38907 return x & ((1<<blength) - 1);
38908 },
38909
38910 /**
38911 * Concatenate two bit arrays.
38912 * @param {bitArray} a1 The first array.
38913 * @param {bitArray} a2 The second array.
38914 * @return {bitArray} The concatenation of a1 and a2.
38915 */
38916 concat: function (a1, a2) {
38917 if (a1.length === 0 || a2.length === 0) {
38918 return a1.concat(a2);
38919 }
38920
38921 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38922 if (shift === 32) {
38923 return a1.concat(a2);
38924 } else {
38925 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
38926 }
38927 },
38928
38929 /**
38930 * Find the length of an array of bits.
38931 * @param {bitArray} a The array.
38932 * @return {Number} The length of a, in bits.
38933 */
38934 bitLength: function (a) {
38935 var l = a.length, x;
38936 if (l === 0) { return 0; }
38937 x = a[l - 1];
38938 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38939 },
38940
38941 /**
38942 * Truncate an array.
38943 * @param {bitArray} a The array.
38944 * @param {Number} len The length to truncate to, in bits.
38945 * @return {bitArray} A new array, truncated to len bits.
38946 */
38947 clamp: function (a, len) {
38948 if (a.length * 32 < len) { return a; }
38949 a = a.slice(0, Math.ceil(len / 32));
38950 var l = a.length;
38951 len = len & 31;
38952 if (l > 0 && len) {
38953 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38954 }
38955 return a;
38956 },
38957
38958 /**
38959 * Make a partial word for a bit array.
38960 * @param {Number} len The number of bits in the word.
38961 * @param {Number} x The bits.
38962 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38963 * @return {Number} The partial word.
38964 */
38965 partial: function (len, x, _end) {
38966 if (len === 32) { return x; }
38967 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38968 },
38969
38970 /**
38971 * Get the number of bits used by a partial word.
38972 * @param {Number} x The partial word.
38973 * @return {Number} The number of bits used by the partial word.
38974 */
38975 getPartial: function (x) {
38976 return Math.round(x/0x10000000000) || 32;
38977 },
38978
38979 /**
38980 * Compare two arrays for equality in a predictable amount of time.
38981 * @param {bitArray} a The first array.
38982 * @param {bitArray} b The second array.
38983 * @return {boolean} true if a == b; false otherwise.
38984 */
38985 equal: function (a, b) {
38986 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38987 return false;
38988 }
38989 var x = 0, i;
38990 for (i=0; i<a.length; i++) {
38991 x |= a[i]^b[i];
38992 }
38993 return (x === 0);
38994 },
38995
38996 /** Shift an array right.
38997 * @param {bitArray} a The array to shift.
38998 * @param {Number} shift The number of bits to shift.
38999 * @param {Number} [carry=0] A byte to carry in
39000 * @param {bitArray} [out=[]] An array to prepend to the output.
39001 * @private
39002 */
39003 _shiftRight: function (a, shift, carry, out) {
39004 var i, last2=0, shift2;
39005 if (out === undefined) { out = []; }
39006
39007 for (; shift >= 32; shift -= 32) {
39008 out.push(carry);
39009 carry = 0;
39010 }
39011 if (shift === 0) {
39012 return out.concat(a);
39013 }
39014
39015 for (i=0; i<a.length; i++) {
39016 out.push(carry | a[i]>>>shift);
39017 carry = a[i] << (32-shift);
39018 }
39019 last2 = a.length ? a[a.length-1] : 0;
39020 shift2 = sjcl.bitArray.getPartial(last2);
39021 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
39022 return out;
39023 },
39024
39025 /** xor a block of 4 words together.
39026 * @private
39027 */
39028 _xor4: function(x,y) {
39029 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
39030 },
39031
39032 /** byteswap a word array inplace.
39033 * (does not handle partial words)
39034 * @param {sjcl.bitArray} a word array
39035 * @return {sjcl.bitArray} byteswapped array
39036 */
39037 byteswapM: function(a) {
39038 var i, v, m = 0xff00;
39039 for (i = 0; i < a.length; ++i) {
39040 v = a[i];
39041 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
39042 }
39043 return a;
39044 }
39045 };
39046
39047
39048 //// codecString.js
39049
39050 /** @fileOverview Bit array codec implementations.
39051 *
39052 * @author Emily Stark
39053 * @author Mike Hamburg
39054 * @author Dan Boneh
39055 */
39056
39057 /** @namespace UTF-8 strings */
39058 sjcl.codec.utf8String = {
39059 /** Convert from a bitArray to a UTF-8 string. */
39060 fromBits: function (arr) {
39061 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39062 for (i=0; i<bl/8; i++) {
39063 if ((i&3) === 0) {
39064 tmp = arr[i/4];
39065 }
39066 out += String.fromCharCode(tmp >>> 24);
39067 tmp <<= 8;
39068 }
39069 return decodeURIComponent(escape(out));
39070 },
39071
39072 /** Convert from a UTF-8 string to a bitArray. */
39073 toBits: function (str) {
39074 str = unescape(encodeURIComponent(str));
39075 var out = [], i, tmp=0;
39076 for (i=0; i<str.length; i++) {
39077 tmp = tmp << 8 | str.charCodeAt(i);
39078 if ((i&3) === 3) {
39079 out.push(tmp);
39080 tmp = 0;
39081 }
39082 }
39083 if (i&3) {
39084 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
39085 }
39086 return out;
39087 }
39088 };
39089
39090
39091 //// codecHex.js
39092
39093 /** @fileOverview Bit array codec implementations.
39094 *
39095 * @author Emily Stark
39096 * @author Mike Hamburg
39097 * @author Dan Boneh
39098 */
39099
39100 /** @namespace Hexadecimal */
39101 sjcl.codec.hex = {
39102 /** Convert from a bitArray to a hex string. */
39103 fromBits: function (arr) {
39104 var out = "", i;
39105 for (i=0; i<arr.length; i++) {
39106 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
39107 }
39108 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39109 },
39110 /** Convert from a hex string to a bitArray. */
39111 toBits: function (str) {
39112 var i, out=[], len;
39113 str = str.replace(/\s|0x/g, "");
39114 len = str.length;
39115 str = str + "00000000";
39116 for (i=0; i<str.length; i+=8) {
39117 out.push(parseInt(str.substr(i,8),16)^0);
39118 }
39119 return sjcl.bitArray.clamp(out, len*4);
39120 }
39121 };
39122
39123
39124 //// sha512.js
39125
39126 /** @fileOverview Javascript SHA-512 implementation.
39127 *
39128 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39129 * SJCL by Stefan Thomas.
39130 *
39131 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
39132 * Released with New BSD License
39133 *
39134 * @author Emily Stark
39135 * @author Mike Hamburg
39136 * @author Dan Boneh
39137 * @author Jeff Mott
39138 * @author Stefan Thomas
39139 */
39140
39141 /**
39142 * Context for a SHA-512 operation in progress.
39143 * @constructor
39144 * @class Secure Hash Algorithm, 512 bits.
39145 */
39146 sjcl.hash.sha512 = function (hash) {
39147 if (!this._key[0]) { this._precompute(); }
39148 if (hash) {
39149 this._h = hash._h.slice(0);
39150 this._buffer = hash._buffer.slice(0);
39151 this._length = hash._length;
39152 } else {
39153 this.reset();
39154 }
39155 };
39156
39157 /**
39158 * Hash a string or an array of words.
39159 * @static
39160 * @param {bitArray|String} data the data to hash.
39161 * @return {bitArray} The hash value, an array of 16 big-endian words.
39162 */
39163 sjcl.hash.sha512.hash = function (data) {
39164 return (new sjcl.hash.sha512()).update(data).finalize();
39165 };
39166
39167 sjcl.hash.sha512.prototype = {
39168 /**
39169 * The hash's block size, in bits.
39170 * @constant
39171 */
39172 blockSize: 1024,
39173
39174 /**
39175 * Reset the hash state.
39176 * @return this
39177 */
39178 reset:function () {
39179 this._h = this._init.slice(0);
39180 this._buffer = [];
39181 this._length = 0;
39182 return this;
39183 },
39184
39185 /**
39186 * Input several words to the hash.
39187 * @param {bitArray|String} data the data to hash.
39188 * @return this
39189 */
39190 update: function (data) {
39191 if (typeof data === "string") {
39192 data = sjcl.codec.utf8String.toBits(data);
39193 }
39194 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39195 ol = this._length,
39196 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39197 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39198 this._block(b.splice(0,32));
39199 }
39200 return this;
39201 },
39202
39203 /**
39204 * Complete hashing and output the hash value.
39205 * @return {bitArray} The hash value, an array of 16 big-endian words.
39206 */
39207 finalize:function () {
39208 var i, b = this._buffer, h = this._h;
39209
39210 // Round out and push the buffer
39211 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39212
39213 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39214 for (i = b.length + 4; i & 31; i++) {
39215 b.push(0);
39216 }
39217
39218 // append the length
39219 b.push(0);
39220 b.push(0);
39221 b.push(Math.floor(this._length / 0x100000000));
39222 b.push(this._length | 0);
39223
39224 while (b.length) {
39225 this._block(b.splice(0,32));
39226 }
39227
39228 this.reset();
39229 return h;
39230 },
39231
39232 /**
39233 * The SHA-512 initialization vector, to be precomputed.
39234 * @private
39235 */
39236 _init:[],
39237
39238 /**
39239 * Least significant 24 bits of SHA512 initialization values.
39240 *
39241 * Javascript only has 53 bits of precision, so we compute the 40 most
39242 * significant bits and add the remaining 24 bits as constants.
39243 *
39244 * @private
39245 */
39246 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39247
39248 /*
39249 _init:
39250 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39251 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39252 */
39253
39254 /**
39255 * The SHA-512 hash key, to be precomputed.
39256 * @private
39257 */
39258 _key:[],
39259
39260 /**
39261 * Least significant 24 bits of SHA512 key values.
39262 * @private
39263 */
39264 _keyr:
39265 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39266 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39267 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39268 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39269 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39270 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39271 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39272 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39273 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39274 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39275
39276 /*
39277 _key:
39278 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39279 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39280 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39281 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39282 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39283 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39284 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39285 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39286 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39287 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39288 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39289 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39290 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39291 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39292 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39293 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39294 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39295 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39296 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39297 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39298 */
39299
39300 /**
39301 * Function to precompute _init and _key.
39302 * @private
39303 */
39304 _precompute: function () {
39305 // XXX: This code is for precomputing the SHA256 constants, change for
39306 // SHA512 and re-enable.
39307 var i = 0, prime = 2, factor;
39308
39309 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39310 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39311
39312 outer: for (; i<80; prime++) {
39313 for (factor=2; factor*factor <= prime; factor++) {
39314 if (prime % factor === 0) {
39315 // not a prime
39316 continue outer;
39317 }
39318 }
39319
39320 if (i<8) {
39321 this._init[i*2] = frac(Math.pow(prime, 1/2));
39322 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39323 }
39324 this._key[i*2] = frac(Math.pow(prime, 1/3));
39325 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39326 i++;
39327 }
39328 },
39329
39330 /**
39331 * Perform one cycle of SHA-512.
39332 * @param {bitArray} words one block of words.
39333 * @private
39334 */
39335 _block:function (words) {
39336 var i, wrh, wrl,
39337 w = words.slice(0),
39338 h = this._h,
39339 k = this._key,
39340 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39341 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39342 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39343 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39344
39345 // Working variables
39346 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39347 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39348 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39349 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39350
39351 for (i=0; i<80; i++) {
39352 // load up the input word for this round
39353 if (i<16) {
39354 wrh = w[i * 2];
39355 wrl = w[i * 2 + 1];
39356 } else {
39357 // Gamma0
39358 var gamma0xh = w[(i-15) * 2];
39359 var gamma0xl = w[(i-15) * 2 + 1];
39360 var gamma0h =
39361 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39362 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39363 (gamma0xh >>> 7);
39364 var gamma0l =
39365 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39366 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39367 ((gamma0xh << 25) | (gamma0xl >>> 7));
39368
39369 // Gamma1
39370 var gamma1xh = w[(i-2) * 2];
39371 var gamma1xl = w[(i-2) * 2 + 1];
39372 var gamma1h =
39373 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39374 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39375 (gamma1xh >>> 6);
39376 var gamma1l =
39377 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39378 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39379 ((gamma1xh << 26) | (gamma1xl >>> 6));
39380
39381 // Shortcuts
39382 var wr7h = w[(i-7) * 2];
39383 var wr7l = w[(i-7) * 2 + 1];
39384
39385 var wr16h = w[(i-16) * 2];
39386 var wr16l = w[(i-16) * 2 + 1];
39387
39388 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39389 wrl = gamma0l + wr7l;
39390 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39391 wrl += gamma1l;
39392 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39393 wrl += wr16l;
39394 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39395 }
39396
39397 w[i*2] = wrh |= 0;
39398 w[i*2 + 1] = wrl |= 0;
39399
39400 // Ch
39401 var chh = (eh & fh) ^ (~eh & gh);
39402 var chl = (el & fl) ^ (~el & gl);
39403
39404 // Maj
39405 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39406 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39407
39408 // Sigma0
39409 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39410 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39411
39412 // Sigma1
39413 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39414 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39415
39416 // K(round)
39417 var krh = k[i*2];
39418 var krl = k[i*2+1];
39419
39420 // t1 = h + sigma1 + ch + K(round) + W(round)
39421 var t1l = hl + sigma1l;
39422 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39423 t1l += chl;
39424 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39425 t1l += krl;
39426 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39427 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39428 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39429
39430 // t2 = sigma0 + maj
39431 var t2l = sigma0l + majl;
39432 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39433
39434 // Update working variables
39435 hh = gh;
39436 hl = gl;
39437 gh = fh;
39438 gl = fl;
39439 fh = eh;
39440 fl = el;
39441 el = (dl + t1l) | 0;
39442 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39443 dh = ch;
39444 dl = cl;
39445 ch = bh;
39446 cl = bl;
39447 bh = ah;
39448 bl = al;
39449 al = (t1l + t2l) | 0;
39450 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39451 }
39452
39453 // Intermediate hash
39454 h0l = h[1] = (h0l + al) | 0;
39455 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39456 h1l = h[3] = (h1l + bl) | 0;
39457 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39458 h2l = h[5] = (h2l + cl) | 0;
39459 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39460 h3l = h[7] = (h3l + dl) | 0;
39461 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39462 h4l = h[9] = (h4l + el) | 0;
39463 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39464 h5l = h[11] = (h5l + fl) | 0;
39465 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39466 h6l = h[13] = (h6l + gl) | 0;
39467 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39468 h7l = h[15] = (h7l + hl) | 0;
39469 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39470 }
39471 };
39472
39473
39474 //// hmac.js
39475
39476 /** @fileOverview HMAC implementation.
39477 *
39478 * @author Emily Stark
39479 * @author Mike Hamburg
39480 * @author Dan Boneh
39481 */
39482
39483 /** HMAC with the specified hash function.
39484 * @constructor
39485 * @param {bitArray} key the key for HMAC.
39486 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39487 */
39488 sjcl.misc.hmac = function (key, Hash) {
39489 this._hash = Hash = Hash || sjcl.hash.sha256;
39490 var exKey = [[],[]], i,
39491 bs = Hash.prototype.blockSize / 32;
39492 this._baseHash = [new Hash(), new Hash()];
39493
39494 if (key.length > bs) {
39495 key = Hash.hash(key);
39496 }
39497
39498 for (i=0; i<bs; i++) {
39499 exKey[0][i] = key[i]^0x36363636;
39500 exKey[1][i] = key[i]^0x5C5C5C5C;
39501 }
39502
39503 this._baseHash[0].update(exKey[0]);
39504 this._baseHash[1].update(exKey[1]);
39505 this._resultHash = new Hash(this._baseHash[0]);
39506 };
39507
39508 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
39509 * @param {bitArray|String} data The data to mac.
39510 */
39511 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39512 if (!this._updated) {
39513 this.update(data);
39514 return this.digest(data);
39515 } else {
39516 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39517 }
39518 };
39519
39520 sjcl.misc.hmac.prototype.reset = function () {
39521 this._resultHash = new this._hash(this._baseHash[0]);
39522 this._updated = false;
39523 };
39524
39525 sjcl.misc.hmac.prototype.update = function (data) {
39526 this._updated = true;
39527 this._resultHash.update(data);
39528 };
39529
39530 sjcl.misc.hmac.prototype.digest = function () {
39531 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39532
39533 this.reset();
39534
39535 return result;
39536 };
39537
39538
39539 //// pbkdf2.js
39540
39541
39542 /** @fileOverview Password-based key-derivation function, version 2.0.
39543 *
39544 * @author Emily Stark
39545 * @author Mike Hamburg
39546 * @author Dan Boneh
39547 */
39548
39549 /** Password-Based Key-Derivation Function, version 2.0.
39550 *
39551 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39552 *
39553 * This is the method specified by RSA's PKCS #5 standard.
39554 *
39555 * @param {bitArray|String} password The password.
39556 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39557 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39558 * @param {Number} [length] The length of the derived key. Defaults to the
39559 output size of the hash function.
39560 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39561 * @return {bitArray} the derived key.
39562 */
39563 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39564 count = count || 1000;
39565
39566 if (length < 0 || count < 0) {
39567 throw sjcl.exception.invalid("invalid params to pbkdf2");
39568 }
39569
39570 if (typeof password === "string") {
39571 password = sjcl.codec.utf8String.toBits(password);
39572 }
39573
39574 if (typeof salt === "string") {
39575 salt = sjcl.codec.utf8String.toBits(salt);
39576 }
39577
39578 Prff = Prff || sjcl.misc.hmac;
39579
39580 var prf = new Prff(password),
39581 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39582
39583 for (k = 1; 32 * out.length < (length || 1); k++) {
39584 u = ui = prf.encrypt(b.concat(salt,[k]));
39585
39586 for (i=1; i<count; i++) {
39587 ui = prf.encrypt(ui);
39588 for (j=0; j<ui.length; j++) {
39589 u[j] ^= ui[j];
39590 }
39591 }
39592
39593 out = out.concat(u);
39594 }
39595
39596 if (length) { out = b.clamp(out, length); }
39597
39598 return out;
39599 };
39600
39601
39602 //// sha256.js
39603
39604 /** @fileOverview Javascript SHA-256 implementation.
39605 *
39606 * An older version of this implementation is available in the public
39607 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39608 * Stanford University 2008-2010 and BSD-licensed for liability
39609 * reasons.
39610 *
39611 * Special thanks to Aldo Cortesi for pointing out several bugs in
39612 * this code.
39613 *
39614 * @author Emily Stark
39615 * @author Mike Hamburg
39616 * @author Dan Boneh
39617 */
39618
39619 /**
39620 * Context for a SHA-256 operation in progress.
39621 * @constructor
39622 * @class Secure Hash Algorithm, 256 bits.
39623 */
39624 sjcl.hash.sha256 = function (hash) {
39625 if (!this._key[0]) { this._precompute(); }
39626 if (hash) {
39627 this._h = hash._h.slice(0);
39628 this._buffer = hash._buffer.slice(0);
39629 this._length = hash._length;
39630 } else {
39631 this.reset();
39632 }
39633 };
39634
39635 /**
39636 * Hash a string or an array of words.
39637 * @static
39638 * @param {bitArray|String} data the data to hash.
39639 * @return {bitArray} The hash value, an array of 16 big-endian words.
39640 */
39641 sjcl.hash.sha256.hash = function (data) {
39642 return (new sjcl.hash.sha256()).update(data).finalize();
39643 };
39644
39645 sjcl.hash.sha256.prototype = {
39646 /**
39647 * The hash's block size, in bits.
39648 * @constant
39649 */
39650 blockSize: 512,
39651
39652 /**
39653 * Reset the hash state.
39654 * @return this
39655 */
39656 reset:function () {
39657 this._h = this._init.slice(0);
39658 this._buffer = [];
39659 this._length = 0;
39660 return this;
39661 },
39662
39663 /**
39664 * Input several words to the hash.
39665 * @param {bitArray|String} data the data to hash.
39666 * @return this
39667 */
39668 update: function (data) {
39669 if (typeof data === "string") {
39670 data = sjcl.codec.utf8String.toBits(data);
39671 }
39672 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39673 ol = this._length,
39674 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39675 for (i = 512+ol & -512; i <= nl; i+= 512) {
39676 this._block(b.splice(0,16));
39677 }
39678 return this;
39679 },
39680
39681 /**
39682 * Complete hashing and output the hash value.
39683 * @return {bitArray} The hash value, an array of 8 big-endian words.
39684 */
39685 finalize:function () {
39686 var i, b = this._buffer, h = this._h;
39687
39688 // Round out and push the buffer
39689 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39690
39691 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39692 for (i = b.length + 2; i & 15; i++) {
39693 b.push(0);
39694 }
39695
39696 // append the length
39697 b.push(Math.floor(this._length / 0x100000000));
39698 b.push(this._length | 0);
39699
39700 while (b.length) {
39701 this._block(b.splice(0,16));
39702 }
39703
39704 this.reset();
39705 return h;
39706 },
39707
39708 /**
39709 * The SHA-256 initialization vector, to be precomputed.
39710 * @private
39711 */
39712 _init:[],
39713 /*
39714 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39715 */
39716
39717 /**
39718 * The SHA-256 hash key, to be precomputed.
39719 * @private
39720 */
39721 _key:[],
39722 /*
39723 _key:
39724 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39725 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39726 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39727 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39728 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39729 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39730 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39731 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39732 */
39733
39734
39735 /**
39736 * Function to precompute _init and _key.
39737 * @private
39738 */
39739 _precompute: function () {
39740 var i = 0, prime = 2, factor;
39741
39742 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39743
39744 outer: for (; i<64; prime++) {
39745 for (factor=2; factor*factor <= prime; factor++) {
39746 if (prime % factor === 0) {
39747 // not a prime
39748 continue outer;
39749 }
39750 }
39751
39752 if (i<8) {
39753 this._init[i] = frac(Math.pow(prime, 1/2));
39754 }
39755 this._key[i] = frac(Math.pow(prime, 1/3));
39756 i++;
39757 }
39758 },
39759
39760 /**
39761 * Perform one cycle of SHA-256.
39762 * @param {bitArray} words one block of words.
39763 * @private
39764 */
39765 _block:function (words) {
39766 var i, tmp, a, b,
39767 w = words.slice(0),
39768 h = this._h,
39769 k = this._key,
39770 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39771 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39772
39773 /* Rationale for placement of |0 :
39774 * If a value can overflow is original 32 bits by a factor of more than a few
39775 * million (2^23 ish), there is a possibility that it might overflow the
39776 * 53-bit mantissa and lose precision.
39777 *
39778 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39779 * propagates around the loop, and on the hash state h[]. I don't believe
39780 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39781 * (for h4 anyway), and better safe than sorry.
39782 *
39783 * The clamps on h[] are necessary for the output to be correct even in the
39784 * common case and for short inputs.
39785 */
39786 for (i=0; i<64; i++) {
39787 // load up the input word for this round
39788 if (i<16) {
39789 tmp = w[i];
39790 } else {
39791 a = w[(i+1 ) & 15];
39792 b = w[(i+14) & 15];
39793 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39794 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39795 w[i&15] + w[(i+9) & 15]) | 0;
39796 }
39797
39798 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39799
39800 // shift register
39801 h7 = h6; h6 = h5; h5 = h4;
39802 h4 = h3 + tmp | 0;
39803 h3 = h2; h2 = h1; h1 = h0;
39804
39805 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39806 }
39807
39808 h[0] = h[0]+h0 | 0;
39809 h[1] = h[1]+h1 | 0;
39810 h[2] = h[2]+h2 | 0;
39811 h[3] = h[3]+h3 | 0;
39812 h[4] = h[4]+h4 | 0;
39813 h[5] = h[5]+h5 | 0;
39814 h[6] = h[6]+h6 | 0;
39815 h[7] = h[7]+h7 | 0;
39816 }
39817 };
39818 </script>
39819 <script>// An extremely basic translation library
39820 //
39821 // Example usage:
39822 //
39823 // Set some html to be translated. Do this using the 'data-translate' attribute:
39824 //
39825 // <div data-translate>Test</div>
39826 // <div data-translate-html><em>keep em tag</em></div>
39827 // <input data-translate-placeholder placeholder="Example placeholder">
39828 // <span data-translate-title title="Example title"></span>
39829 //
39830 // Obtain all the phrases to be translated via js debug console:
39831 //
39832 // Translate.phrasesAsJson();
39833 //
39834 // Use that template to translate the phrases into another language.
39835 // Leave the key the same. Change the value to the new language.
39836 //
39837 // Create a js file to load the new phrases. In this example for Spanish,
39838 // es.js will contain the following code:
39839 //
39840 // Translate.loadForeignPhrases("es", {
39841 // "Test": "Test in Spanish",
39842 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
39843 // "Example placeholder": "Example placeholder in Spanish"
39844 // "Example title": "Example title in Spanish"
39845 // });
39846 //
39847 // In your UI put a listener for clicking on the Spanish button:
39848 //
39849 // mySpanishButton.addEventListener("click", function() {
39850 // Translate.setLanguage("es");
39851 // });
39852 // myEnglishButton.addEventListener("click", function() {
39853 // Translate.setLanguage("en");
39854 // });
39855
39856 Translate = new (function() {
39857
39858 var defaultLanguage = "en";
39859
39860 var allPhrases = {};
39861 allPhrases[defaultLanguage] = {};
39862
39863 // Node types
39864
39865 var text = {
39866 selector: "[data-translate]",
39867 getKey: function() {
39868 return this.textContent.trim().replace(/\s+/g, " ");
39869 },
39870 setPhrase: function(p) {
39871 this.textContent = p;
39872 },
39873 }
39874
39875 var html = {
39876 selector: "[data-translate-html]",
39877 getKey: function() {
39878 return this.innerHTML.trim().replace(/\s+/g, " ");
39879 },
39880 setPhrase: function(p) {
39881 this.innerHTML = p;
39882 },
39883 }
39884
39885 var placeholder = {
39886 selector: "[data-translate-placeholder]",
39887 getKey: function() {
39888 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39889 },
39890 setPhrase: function(p) {
39891 this.setAttribute("placeholder", p);
39892 },
39893 }
39894
39895 var title = {
39896 selector: "[data-translate-title]",
39897 getKey: function() {
39898 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39899 },
39900 setPhrase: function(p) {
39901 this.setAttribute("title", p);
39902 },
39903 }
39904
39905 // Get elements to be translated
39906 var allEls = getEls(text)
39907 .concat(getEls(html))
39908 .concat(getEls(placeholder))
39909 .concat(getEls(title));
39910
39911 // Provides access to phrases from a non-default language.
39912 // See phrases_en.js for example usage.
39913 this.loadForeignPhrases = function(language, phrases) {
39914 allPhrases[language] = phrases;
39915 }
39916
39917 // Displays a different language, eg "en" or "fr"
39918 this.setLanguage = function(language) {
39919 for (var i=0; i<allEls.length; i++) {
39920 var el = allEls[i];
39921 var key = el.key;
39922 if (!(language in allPhrases)) {
39923 console.log(language + " not in allPhrases");
39924 return;
39925 }
39926 if (!(key in allPhrases[language])) {
39927 console.log(language + " does not contain phrase: " + key);
39928 return;
39929 }
39930 var phrase = allPhrases[language][key];
39931 el.setPhrase(phrase);
39932 }
39933 }
39934
39935 // Converts the phrases to a key-pair json file.
39936 // This is a good way to export phrases for use in translation tools.
39937 this.phrasesAsJson = function(language) {
39938 var keys = [];
39939 for (var i=0; i<allEls.length; i++) {
39940 var el = allEls[i];
39941 var key = el.key;
39942 keys.push(key);
39943 }
39944 keys.sort();
39945 var output = {};
39946 for (var i=0; i<keys.length; i++) {
39947 var key = keys[i];
39948 var translated = "";
39949 if (language in allPhrases && key in allPhrases[language]) {
39950 translated = allPhrases[language][key];
39951 }
39952 output[key] = translated;
39953 }
39954 return JSON.stringify(output, null, 2);
39955 }
39956
39957 function getEls(nodeType) {
39958 var nodes = document.querySelectorAll(nodeType.selector);
39959 var els = [];
39960 for (var i=0; i<nodes.length; i++) {
39961 var node = nodes[i];
39962 node.getKey = nodeType.getKey;
39963 node.setPhrase = nodeType.setPhrase;
39964 node.key = node.getKey();
39965 allPhrases[defaultLanguage][node.key] = node.key;
39966 els.push(node);
39967 }
39968 return els;
39969 }
39970
39971 })();
39972 </script>
39973 <script>Translate.loadForeignPhrases("en",
39974 {
39975 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39976 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39977 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39978 "<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).",
39979 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39980 "Account": "Account",
39981 "Address": "Address",
39982 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39983 "BIP32 Derivation Path": "BIP32 Derivation Path",
39984 "BIP32 Extended Key": "BIP32 Extended Key",
39985 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39986 "BIP32 Root Key": "BIP32 Root Key",
39987 "BIP39 Mnemonic": "BIP39 Mnemonic",
39988 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39989 "BIP39 Seed": "BIP39 Seed",
39990 "Base 10": "Base 10",
39991 "Base 6": "Base 6",
39992 "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.",
39993 "Binary": "Binary",
39994 "Bitcoin Core": "Bitcoin Core",
39995 "Bits Per Event": "Bits Per Event",
39996 "Block Explorers": "Block Explorers",
39997 "Can be used with": "Can be used with",
39998 "Card": "Card",
39999 "Coin": "Coin",
40000 "Dice": "Dice",
40001 "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.",
40002 "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.",
40003 "Entropy": "Entropy",
40004 "Entropy Type": "Entropy Type",
40005 "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.",
40006 "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>.",
40007 "Event Count": "Event Count",
40008 "External / Internal": "External / Internal",
40009 "Filtered Entropy": "Filtered Entropy",
40010 "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>",
40011 "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>.",
40012 "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>.",
40013 "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>",
40014 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
40015 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
40016 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
40017 "Get the source code from the repository": "Get the source code from the repository",
40018 "Hex": "Hex",
40019 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
40020 "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.",
40021 "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.",
40022 "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.",
40023 "Libraries": "Libraries",
40024 "Mnemonic Language": "Mnemonic Language",
40025 "Mnemonic Length": "Mnemonic Length",
40026 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
40027 "More info": "More info",
40028 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
40029 "Mycelium Wallet": "Mycelium Wallet",
40030 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
40031 "Offline Usage": "Offline Usage",
40032 "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.",
40033 "Path": "Path",
40034 "Private Key": "Private Key",
40035 "Private Keys": "Private Keys",
40036 "Public Key": "Public Key",
40037 "Purpose": "Purpose",
40038 "Raw Binary": "Raw Binary",
40039 "Read more": "Read more",
40040 "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>",
40041 "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>",
40042 "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>",
40043 "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>",
40044 "Show": "Show",
40045 "Show more rows": "Show more rows",
40046 "Strength": "Strength",
40047 "Supply my own source of entropy": "Supply my own source of entropy",
40048 "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.",
40049 "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>.",
40050 "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.",
40051 "This project is 100% open-source code": "This project is 100% open-source code",
40052 "Toggle": "Toggle",
40053 "Total Bits": "Total Bits",
40054 "Use hardened addresses": "Use hardened addresses",
40055 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40056 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40057 "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>.",
40058 "Valid entropy values include:": "Valid entropy values include:",
40059 "Warning": "Warning",
40060 "Word Count": "Word Count",
40061 "You are not a good source of entropy.": "You are not a good source of entropy.",
40062 "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).",
40063 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40064 "words": "words"
40065 }
40066 );
40067 </script>
40068 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40069 WORDLISTS["english"] = [
40070 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40071 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40072 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40073 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40074 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40075 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40076 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40077 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40078 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40079 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40080 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40081 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40082 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40083 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40084 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40085 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40086 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40087 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40088 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40089 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40090 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40091 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40092 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40093 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40094 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40095 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40096 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40097 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40098 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40099 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40100 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40101 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40102 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40103 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40104 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40105 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40106 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40107 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40108 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40109 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40110 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40111 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40112 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40113 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40114 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40115 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40116 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40117 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40118 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40119 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40120 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40121 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40122 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40123 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40124 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40125 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40126 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40127 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40128 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40129 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40130 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40131 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40132 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40133 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40134 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40135 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40136 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40137 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40138 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40139 "film","filter","final","find","fine","finger","finish","fire","firm","first",
40140 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40141 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40142 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40143 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40144 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40145 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40146 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40147 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40148 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40149 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40150 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40151 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40152 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40153 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40154 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40155 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40156 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40157 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40158 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40159 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40160 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40161 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40162 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40163 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40164 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40165 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40166 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40167 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40168 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40169 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40170 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40171 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40172 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40173 "liar","liberty","library","license","life","lift","light","like","limb","limit",
40174 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40175 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40176 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40177 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40178 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40179 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40180 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40181 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40182 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40183 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40184 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40185 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40186 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40187 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40188 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40189 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
40190 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40191 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40192 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40193 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
40194 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40195 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40196 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40197 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40198 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40199 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40200 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40201 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40202 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40203 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40204 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
40205 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40206 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40207 "prize","problem","process","produce","profit","program","project","promote","proof","property",
40208 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40209 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40210 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40211 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40212 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40213 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40214 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40215 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40216 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40217 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40218 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40219 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40220 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40221 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40222 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40223 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40224 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40225 "scrub","sea","search","season","seat","second","secret","section","security","seed",
40226 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40227 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40228 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40229 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40230 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40231 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40232 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40233 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40234 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40235 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40236 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40237 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40238 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40239 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40240 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40241 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40242 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40243 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40244 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40245 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40246 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40247 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40248 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40249 "thank","that","theme","then","theory","there","they","thing","this","thought",
40250 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40251 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40252 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40253 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40254 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40255 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40256 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40257 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40258 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40259 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40260 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40261 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40262 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40263 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40264 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40265 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40266 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40267 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40268 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40269 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40270 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40271 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40272 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40273 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40274 "yellow","you","young","youth","zebra","zero","zone","zoo"]
40275 </script>
40276 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40277 WORDLISTS["japanese"] = [
40278 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
40279 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
40280 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
40281 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
40282 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
40283 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
40284 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
40285 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
40286 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
40287 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
40288 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
40289 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
40290 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
40291 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
40292 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
40293 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
40294 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
40295 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
40296 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
40297 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
40298 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
40299 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
40300 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
40301 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
40302 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
40303 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
40304 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
40305 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
40306 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
40307 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
40308 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
40309 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
40310 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
40311 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
40312 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
40313 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
40314 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
40315 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
40316 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
40317 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
40318 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
40319 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
40320 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
40321 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
40322 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
40323 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
40324 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
40325 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
40326 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
40327 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
40328 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
40329 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
40330 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
40331 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
40332 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
40333 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
40334 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
40335 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
40336 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
40337 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
40338 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
40339 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
40340 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
40341 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
40342 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
40343 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
40344 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
40345 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
40346 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
40347 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
40348 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
40349 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
40350 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
40351 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
40352 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
40353 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
40354 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
40355 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
40356 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
40357 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
40358 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
40359 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
40360 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
40361 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
40362 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
40363 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
40364 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
40365 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
40366 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
40367 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
40368 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
40369 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
40370 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
40371 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
40372 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
40373 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
40374 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
40375 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
40376 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
40377 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
40378 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
40379 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
40380 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
40381 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
40382 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
40383 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
40384 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
40385 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
40386 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
40387 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
40388 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
40389 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
40390 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
40391 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
40392 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
40393 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
40394 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
40395 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
40396 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
40397 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
40398 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
40399 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
40400 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
40401 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
40402 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
40403 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
40404 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
40405 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
40406 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
40407 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
40408 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
40409 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
40410 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
40411 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
40412 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
40413 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
40414 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
40415 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
40416 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
40417 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
40418 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
40419 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
40420 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
40421 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
40422 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
40423 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
40424 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
40425 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
40426 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
40427 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
40428 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
40429 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
40430 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
40431 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
40432 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
40433 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
40434 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
40435 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
40436 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
40437 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
40438 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
40439 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
40440 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
40441 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
40442 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
40443 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
40444 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
40445 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
40446 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
40447 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
40448 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
40449 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
40450 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
40451 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
40452 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
40453 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
40454 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
40455 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
40456 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
40457 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
40458 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
40459 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
40460 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
40461 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
40462 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
40463 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
40464 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
40465 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
40466 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
40467 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
40468 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
40469 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
40470 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
40471 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
40472 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
40473 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
40474 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
40475 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
40476 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
40477 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
40478 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
40479 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
40480 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
40481 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
40482 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
40483 </script>
40484 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40485 WORDLISTS["spanish"] = [
40486 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40487 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40488 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40489 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40490 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40491 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40492 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40493 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40494 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40495 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40496 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40497 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40498 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40499 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40500 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40501 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40502 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40503 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40504 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40505 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40506 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40507 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40508 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40509 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40510 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40511 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40512 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40513 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40514 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40515 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40516 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40517 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40518 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40519 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40520 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40521 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40522 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40523 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40524 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40525 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40526 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40527 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40528 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40529 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40530 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40531 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40532 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40533 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40534 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40535 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40536 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40537 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40538 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40539 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40540 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40541 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40542 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40543 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40544 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40545 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40546 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40547 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40548 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40549 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40550 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40551 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40552 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40553 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40554 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40555 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40556 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40557 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40558 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40559 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40560 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40561 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40562 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40563 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40564 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40565 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40566 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40567 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40568 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40569 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40570 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40571 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40572 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40573 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40574 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40575 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40576 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40577 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40578 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40579 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40580 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40581 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40582 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40583 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40584 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40585 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40586 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40587 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40588 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40589 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40590 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40591 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40592 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40593 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40594 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40595 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40596 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40597 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40598 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40599 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40600 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40601 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40602 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40603 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40604 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40605 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40606 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40607 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40608 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40609 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40610 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40611 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40612 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40613 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40614 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40615 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40616 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40617 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40618 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40619 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40620 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40621 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40622 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40623 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40624 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40625 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40626 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40627 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40628 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40629 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40630 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40631 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40632 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40633 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40634 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40635 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40636 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40637 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40638 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40639 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40640 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40641 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40642 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40643 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40644 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40645 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40646 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40647 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40648 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40649 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40650 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40651 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40652 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40653 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40654 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40655 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40656 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40657 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40658 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40659 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40660 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40661 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40662 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40663 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40664 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40665 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40666 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40667 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40668 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40669 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40670 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40671 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40672 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40673 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40674 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40675 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40676 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40677 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40678 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40679 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40680 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40681 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40682 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40683 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40684 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40685 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40686 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40687 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40688 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40689 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40690 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40691 </script>
40692 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40693 WORDLISTS["chinese_simplified"] = [
40694 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
40695 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
40696 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
40697 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
40698 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
40699 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
40700 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
40701 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
40702 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
40703 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
40704 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
40705 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40706 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
40707 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
40708 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
40709 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
40710 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
40711 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
40712 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
40713 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
40714 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
40715 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
40716 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
40717 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
40718 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
40719 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
40720 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
40721 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
40722 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
40723 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
40724 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
40725 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
40726 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
40727 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
40728 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
40729 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
40730 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
40731 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
40732 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
40733 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
40734 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
40735 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
40736 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
40737 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
40738 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
40739 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
40740 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
40741 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
40742 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
40743 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
40744 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
40745 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
40746 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
40747 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
40748 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
40749 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
40750 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
40751 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
40752 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
40753 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
40754 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
40755 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
40756 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
40757 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
40758 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
40759 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
40760 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
40761 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
40762 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
40763 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
40764 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
40765 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
40766 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
40767 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
40768 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
40769 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40770 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
40771 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
40772 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
40773 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
40774 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
40775 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
40776 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
40777 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
40778 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
40779 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
40780 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
40781 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
40782 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
40783 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
40784 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
40785 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
40786 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40787 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
40788 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
40789 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
40790 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
40791 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
40792 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
40793 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
40794 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
40795 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
40796 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
40797 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
40798 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
40799 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
40800 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
40801 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
40802 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40803 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40804 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
40805 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
40806 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
40807 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
40808 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
40809 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
40810 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
40811 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
40812 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
40813 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
40814 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
40815 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
40816 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
40817 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
40818 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
40819 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
40820 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
40821 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
40822 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
40823 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
40824 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
40825 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
40826 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
40827 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
40828 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
40829 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
40830 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
40831 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
40832 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
40833 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
40834 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
40835 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
40836 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
40837 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
40838 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
40839 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
40840 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
40841 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
40842 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
40843 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
40844 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
40845 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
40846 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
40847 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
40848 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
40849 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
40850 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
40851 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
40852 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
40853 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
40854 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
40855 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
40856 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
40857 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
40858 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
40859 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
40860 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
40861 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
40862 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
40863 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
40864 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
40865 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
40866 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
40867 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
40868 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
40869 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
40870 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
40871 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
40872 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
40873 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
40874 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
40875 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
40876 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
40877 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
40878 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
40879 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
40880 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
40881 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
40882 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
40883 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
40884 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
40885 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
40886 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
40887 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
40888 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
40889 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
40890 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
40891 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
40892 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
40893 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
40894 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
40895 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
40896 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
40897 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
40898 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
40899 </script>
40900 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40901 WORDLISTS["chinese_traditional"] = [
40902 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
40903 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
40904 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
40905 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
40906 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
40907 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
40908 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
40909 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
40910 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
40911 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
40912 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
40913 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40914 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
40915 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
40916 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
40917 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
40918 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
40919 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
40920 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
40921 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
40922 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
40923 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
40924 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
40925 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
40926 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
40927 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
40928 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
40929 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
40930 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
40931 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
40932 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
40933 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
40934 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
40935 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
40936 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
40937 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
40938 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
40939 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
40940 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
40941 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
40942 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
40943 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
40944 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
40945 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
40946 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
40947 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
40948 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
40949 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
40950 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
40951 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
40952 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
40953 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
40954 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
40955 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
40956 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
40957 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
40958 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
40959 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
40960 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
40961 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
40962 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
40963 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
40964 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
40965 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
40966 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
40967 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
40968 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
40969 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
40970 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
40971 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
40972 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
40973 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
40974 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
40975 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
40976 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
40977 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40978 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
40979 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
40980 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
40981 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
40982 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
40983 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
40984 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
40985 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
40986 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
40987 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
40988 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
40989 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
40990 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
40991 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
40992 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
40993 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
40994 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40995 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
40996 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
40997 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
40998 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
40999 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
41000 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
41001 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
41002 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
41003 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
41004 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
41005 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
41006 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
41007 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
41008 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
41009 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
41010 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
41011 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
41012 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
41013 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
41014 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
41015 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
41016 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
41017 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
41018 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
41019 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
41020 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
41021 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
41022 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
41023 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
41024 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
41025 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
41026 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
41027 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
41028 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
41029 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
41030 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
41031 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
41032 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
41033 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
41034 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
41035 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
41036 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
41037 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
41038 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
41039 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
41040 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
41041 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
41042 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
41043 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
41044 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
41045 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
41046 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
41047 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
41048 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
41049 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
41050 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
41051 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
41052 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
41053 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
41054 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
41055 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
41056 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
41057 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
41058 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
41059 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
41060 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
41061 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
41062 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
41063 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
41064 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
41065 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
41066 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
41067 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
41068 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
41069 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
41070 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
41071 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
41072 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
41073 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
41074 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
41075 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
41076 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
41077 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
41078 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
41079 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
41080 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
41081 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
41082 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
41083 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
41084 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
41085 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
41086 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
41087 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
41088 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
41089 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
41090 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
41091 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
41092 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
41093 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
41094 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
41095 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
41096 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
41097 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
41098 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
41099 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
41100 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
41101 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
41102 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
41103 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
41104 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
41105 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
41106 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
41107 </script>
41108 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41109 WORDLISTS["french"] = [
41110 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41111 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41112 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41113 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41114 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41115 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41116 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41117 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41118 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41119 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41120 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41121 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41122 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41123 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41124 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41125 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41126 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41127 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41128 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41129 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41130 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41131 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41132 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41133 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41134 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41135 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41136 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41137 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41138 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41139 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41140 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41141 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41142 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41143 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41144 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41145 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41146 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41147 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41148 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41149 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41150 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41151 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41152 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41153 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41154 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41155 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41156 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41157 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41158 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41159 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41160 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41161 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41162 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41163 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41164 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41165 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41166 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41167 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41168 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41169 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41170 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41171 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41172 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41173 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41174 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41175 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41176 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41177 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41178 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41179 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41180 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41181 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41182 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41183 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41184 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41185 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41186 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41187 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41188 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41189 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41190 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41191 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41192 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41193 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41194 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41195 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41196 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41197 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41198 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41199 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41200 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41201 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41202 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41203 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41204 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41205 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41206 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41207 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41208 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41209 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41210 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41211 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41212 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41213 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41214 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41215 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41216 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41217 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41218 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41219 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41220 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41221 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41222 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41223 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41224 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41225 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41226 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41227 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41228 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41229 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41230 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41231 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41232 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41233 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41234 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41235 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41236 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41237 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41238 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41239 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41240 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41241 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41242 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41243 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41244 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41245 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41246 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41247 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41248 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41249 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41250 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41251 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41252 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41253 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41254 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41255 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41256 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41257 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41258 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41259 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41260 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41261 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41262 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41263 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41264 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41265 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41266 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41267 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41268 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41269 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41270 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41271 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41272 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41273 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41274 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41275 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41276 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41277 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41278 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41279 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41280 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41281 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41282 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41283 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41284 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41285 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41286 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41287 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41288 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41289 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41290 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41291 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41292 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41293 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41294 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41295 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41296 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41297 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41298 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41299 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41300 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41301 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41302 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41303 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41304 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41305 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41306 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41307 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41308 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41309 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41310 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41311 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41312 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41313 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41314 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41315 </script>
41316 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41317 WORDLISTS["italian"] = [
41318 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41319 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41320 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41321 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41322 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41323 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41324 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41325 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41326 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41327 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41328 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41329 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41330 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41331 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41332 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41333 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41334 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41335 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41336 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41337 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41338 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41339 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41340 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41341 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41342 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41343 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41344 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41345 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41346 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41347 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41348 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41349 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41350 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41351 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41352 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41353 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41354 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41355 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41356 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41357 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41358 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41359 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41360 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41361 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41362 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41363 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41364 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41365 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41366 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41367 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41368 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41369 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41370 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41371 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41372 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41373 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41374 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41375 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41376 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41377 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41378 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41379 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41380 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41381 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41382 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41383 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41384 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41385 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41386 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41387 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41388 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41389 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41390 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41391 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41392 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41393 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41394 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41395 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41396 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41397 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41398 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41399 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41400 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41401 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41402 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41403 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41404 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41405 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41406 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41407 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41408 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41409 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41410 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41411 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41412 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41413 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41414 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41415 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41416 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41417 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41418 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41419 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41420 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41421 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41422 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41423 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41424 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41425 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41426 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41427 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41428 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41429 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41430 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41431 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41432 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41433 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41434 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41435 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41436 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41437 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41438 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41439 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41440 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41441 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41442 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41443 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41444 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41445 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41446 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41447 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41448 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41449 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41450 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41451 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41452 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41453 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41454 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41455 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41456 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41457 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41458 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41459 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41460 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41461 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41462 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41463 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41464 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41465 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41466 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41467 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41468 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41469 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41470 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41471 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41472 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41473 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41474 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41475 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41476 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41477 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41478 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41479 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41480 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41481 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41482 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41483 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41484 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41485 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41486 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41487 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41488 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41489 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41490 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41491 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41492 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41493 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41494 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41495 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41496 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41497 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41498 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41499 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41500 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41501 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41502 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41503 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41504 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41505 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41506 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41507 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41508 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41509 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41510 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41511 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41512 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41513 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41514 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41515 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41516 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41517 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41518 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41519 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41520 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41521 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41522 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
41523 </script>
41524 <script>/*
41525 * Copyright (c) 2013 Pavol Rusnak
41526 *
41527 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41528 * this software and associated documentation files (the "Software"), to deal in
41529 * the Software without restriction, including without limitation the rights to
41530 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41531 * of the Software, and to permit persons to whom the Software is furnished to do
41532 * so, subject to the following conditions:
41533 *
41534 * The above copyright notice and this permission notice shall be included in all
41535 * copies or substantial portions of the Software.
41536 *
41537 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41538 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41539 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41540 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41541 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41542 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41543 */
41544
41545 /*
41546 * Javascript port from python by Ian Coleman
41547 *
41548 * Requires code from sjcl
41549 * https://github.com/bitwiseshiftleft/sjcl
41550 */
41551
41552 var Mnemonic = function(language) {
41553
41554 var PBKDF2_ROUNDS = 2048;
41555 var RADIX = 2048;
41556
41557 var self = this;
41558 var wordlist = [];
41559
41560 var hmacSHA512 = function(key) {
41561 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41562 this.encrypt = function() {
41563 return hasher.encrypt.apply(hasher, arguments);
41564 };
41565 };
41566
41567 function init() {
41568 wordlist = WORDLISTS[language];
41569 if (wordlist.length != RADIX) {
41570 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41571 throw err;
41572 }
41573 }
41574
41575 self.generate = function(strength) {
41576 strength = strength || 128;
41577 var r = strength % 32;
41578 if (r > 0) {
41579 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41580 }
41581 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41582 if (!hasStrongCrypto) {
41583 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41584 }
41585 var buffer = new Uint8Array(strength / 8);
41586 var data = crypto.getRandomValues(buffer);
41587 return self.toMnemonic(data);
41588 }
41589
41590 self.toMnemonic = function(byteArray) {
41591 if (byteArray.length % 4 > 0) {
41592 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
41593 }
41594
41595 //h = hashlib.sha256(data).hexdigest()
41596 var data = byteArrayToWordArray(byteArray);
41597 var hash = sjcl.hash.sha256.hash(data);
41598 var h = sjcl.codec.hex.fromBits(hash);
41599
41600 // b is a binary string, eg '00111010101100...'
41601 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41602 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41603 //
41604 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41605 // c = bin(int(h, 16))[2:].zfill(256)
41606 // d = c[:len(data) * 8 / 32]
41607 var a = byteArrayToBinaryString(byteArray);
41608 var c = zfill(hexStringToBinaryString(h), 256);
41609 var d = c.substring(0, byteArray.length * 8 / 32);
41610 // b = line1 + line2
41611 var b = a + d;
41612
41613 var result = [];
41614 var blen = b.length / 11;
41615 for (var i=0; i<blen; i++) {
41616 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41617 result.push(wordlist[idx]);
41618 }
41619 return self.joinWords(result);
41620 }
41621
41622 self.check = function(mnemonic) {
41623 var mnemonic = self.splitWords(mnemonic);
41624 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
41625 return false
41626 }
41627 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41628 var idx = [];
41629 for (var i=0; i<mnemonic.length; i++) {
41630 var word = mnemonic[i];
41631 var wordIndex = wordlist.indexOf(word);
41632 if (wordIndex == -1) {
41633 return false;
41634 }
41635 var binaryIndex = zfill(wordIndex.toString(2), 11);
41636 idx.push(binaryIndex);
41637 }
41638 var b = idx.join('');
41639 var l = b.length;
41640 //d = b[:l / 33 * 32]
41641 //h = b[-l / 33:]
41642 var d = b.substring(0, l / 33 * 32);
41643 var h = b.substring(l - l / 33, l);
41644 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
41645 var nd = binaryStringToWordArray(d);
41646 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
41647 var ndHash = sjcl.hash.sha256.hash(nd);
41648 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41649 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
41650 var nh = ndBstr.substring(0,l/33);
41651 return h == nh;
41652 }
41653
41654 self.toSeed = function(mnemonic, passphrase) {
41655 passphrase = passphrase || '';
41656 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41657 var mnemonicNormalized = self.normalizeString(mnemonic);
41658 passphrase = self.normalizeString(passphrase)
41659 passphrase = "mnemonic" + passphrase;
41660 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
41661 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41662 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41663 var hashHex = sjcl.codec.hex.fromBits(result);
41664 return hashHex;
41665 }
41666
41667 self.splitWords = function(mnemonic) {
41668 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41669 }
41670
41671 self.joinWords = function(words) {
41672 // Set space correctly depending on the language
41673 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41674 var space = " ";
41675 if (language == "japanese") {
41676 space = "\u3000"; // ideographic space
41677 }
41678 return words.join(space);
41679 }
41680
41681 self.normalizeString = function(str) {
41682 if (typeof str.normalize == "function") {
41683 return str.normalize("NFKD");
41684 }
41685 else {
41686 // TODO decide how to handle this in the future.
41687 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41688 return str;
41689 }
41690 }
41691
41692 function byteArrayToWordArray(data) {
41693 var a = [];
41694 for (var i=0; i<data.length/4; i++) {
41695 v = 0;
41696 v += data[i*4 + 0] << 8 * 3;
41697 v += data[i*4 + 1] << 8 * 2;
41698 v += data[i*4 + 2] << 8 * 1;
41699 v += data[i*4 + 3] << 8 * 0;
41700 a.push(v);
41701 }
41702 return a;
41703 }
41704
41705 function byteArrayToBinaryString(data) {
41706 var bin = "";
41707 for (var i=0; i<data.length; i++) {
41708 bin += zfill(data[i].toString(2), 8);
41709 }
41710 return bin;
41711 }
41712
41713 function hexStringToBinaryString(hexString) {
41714 binaryString = "";
41715 for (var i=0; i<hexString.length; i++) {
41716 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41717 }
41718 return binaryString;
41719 }
41720
41721 function binaryStringToWordArray(binary) {
41722 var aLen = binary.length / 32;
41723 var a = [];
41724 for (var i=0; i<aLen; i++) {
41725 var valueStr = binary.substring(0,32);
41726 var value = parseInt(valueStr, 2);
41727 a.push(value);
41728 binary = binary.slice(32);
41729 }
41730 return a;
41731 }
41732
41733 // Pad a numeric string on the left with zero digits until the given width
41734 // is reached.
41735 // Note this differs to the python implementation because it does not
41736 // handle numbers starting with a sign.
41737 function zfill(source, length) {
41738 source = source.toString();
41739 while (source.length < length) {
41740 source = '0' + source;
41741 }
41742 return source;
41743 }
41744
41745 init();
41746
41747 }
41748 </script>
41749 <script>/*
41750 JavaScript BigInteger library version 0.9.1
41751 http://silentmatt.com/biginteger/
41752
41753 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41754 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41755 Licensed under the MIT license.
41756
41757 Support for arbitrary internal representation base was added by
41758 Vitaly Magerya.
41759 */
41760
41761 /*
41762 File: biginteger.js
41763
41764 Exports:
41765
41766 <BigInteger>
41767 */
41768 (function(exports) {
41769 "use strict";
41770 /*
41771 Class: BigInteger
41772 An arbitrarily-large integer.
41773
41774 <BigInteger> objects should be considered immutable. None of the "built-in"
41775 methods modify *this* or their arguments. All properties should be
41776 considered private.
41777
41778 All the methods of <BigInteger> instances can be called "statically". The
41779 static versions are convenient if you don't already have a <BigInteger>
41780 object.
41781
41782 As an example, these calls are equivalent.
41783
41784 > BigInteger(4).multiply(5); // returns BigInteger(20);
41785 > BigInteger.multiply(4, 5); // returns BigInteger(20);
41786
41787 > var a = 42;
41788 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41789 */
41790
41791 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
41792
41793 /*
41794 Constructor: BigInteger()
41795 Convert a value to a <BigInteger>.
41796
41797 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41798 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41799 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41800 without a radix argument.
41801
41802 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41803 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41804 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41805 > var n3 = BigInteger(n2); // Return n2, unchanged
41806
41807 The constructor form only takes an array and a sign. *n* must be an
41808 array of numbers in little-endian order, where each digit is between 0
41809 and BigInteger.base. The second parameter sets the sign: -1 for
41810 negative, +1 for positive, or 0 for zero. The array is *not copied and
41811 may be modified*. If the array contains only zeros, the sign parameter
41812 is ignored and is forced to zero.
41813
41814 > new BigInteger([5], -1): create a new BigInteger with value -5
41815
41816 Parameters:
41817
41818 n - Value to convert to a <BigInteger>.
41819
41820 Returns:
41821
41822 A <BigInteger> value.
41823
41824 See Also:
41825
41826 <parse>, <BigInteger>
41827 */
41828 function BigInteger(n, s, token) {
41829 if (token !== CONSTRUCT) {
41830 if (n instanceof BigInteger) {
41831 return n;
41832 }
41833 else if (typeof n === "undefined") {
41834 return ZERO;
41835 }
41836 return BigInteger.parse(n);
41837 }
41838
41839 n = n || []; // Provide the nullary constructor for subclasses.
41840 while (n.length && !n[n.length - 1]) {
41841 --n.length;
41842 }
41843 this._d = n;
41844 this._s = n.length ? (s || 1) : 0;
41845 }
41846
41847 BigInteger._construct = function(n, s) {
41848 return new BigInteger(n, s, CONSTRUCT);
41849 };
41850
41851 // Base-10 speedup hacks in parse, toString, exp10 and log functions
41852 // require base to be a power of 10. 10^7 is the largest such power
41853 // that won't cause a precision loss when digits are multiplied.
41854 var BigInteger_base = 10000000;
41855 var BigInteger_base_log10 = 7;
41856
41857 BigInteger.base = BigInteger_base;
41858 BigInteger.base_log10 = BigInteger_base_log10;
41859
41860 var ZERO = new BigInteger([], 0, CONSTRUCT);
41861 // Constant: ZERO
41862 // <BigInteger> 0.
41863 BigInteger.ZERO = ZERO;
41864
41865 var ONE = new BigInteger([1], 1, CONSTRUCT);
41866 // Constant: ONE
41867 // <BigInteger> 1.
41868 BigInteger.ONE = ONE;
41869
41870 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41871 // Constant: M_ONE
41872 // <BigInteger> -1.
41873 BigInteger.M_ONE = M_ONE;
41874
41875 // Constant: _0
41876 // Shortcut for <ZERO>.
41877 BigInteger._0 = ZERO;
41878
41879 // Constant: _1
41880 // Shortcut for <ONE>.
41881 BigInteger._1 = ONE;
41882
41883 /*
41884 Constant: small
41885 Array of <BigIntegers> from 0 to 36.
41886
41887 These are used internally for parsing, but useful when you need a "small"
41888 <BigInteger>.
41889
41890 See Also:
41891
41892 <ZERO>, <ONE>, <_0>, <_1>
41893 */
41894 BigInteger.small = [
41895 ZERO,
41896 ONE,
41897 /* Assuming BigInteger_base > 36 */
41898 new BigInteger( [2], 1, CONSTRUCT),
41899 new BigInteger( [3], 1, CONSTRUCT),
41900 new BigInteger( [4], 1, CONSTRUCT),
41901 new BigInteger( [5], 1, CONSTRUCT),
41902 new BigInteger( [6], 1, CONSTRUCT),
41903 new BigInteger( [7], 1, CONSTRUCT),
41904 new BigInteger( [8], 1, CONSTRUCT),
41905 new BigInteger( [9], 1, CONSTRUCT),
41906 new BigInteger([10], 1, CONSTRUCT),
41907 new BigInteger([11], 1, CONSTRUCT),
41908 new BigInteger([12], 1, CONSTRUCT),
41909 new BigInteger([13], 1, CONSTRUCT),
41910 new BigInteger([14], 1, CONSTRUCT),
41911 new BigInteger([15], 1, CONSTRUCT),
41912 new BigInteger([16], 1, CONSTRUCT),
41913 new BigInteger([17], 1, CONSTRUCT),
41914 new BigInteger([18], 1, CONSTRUCT),
41915 new BigInteger([19], 1, CONSTRUCT),
41916 new BigInteger([20], 1, CONSTRUCT),
41917 new BigInteger([21], 1, CONSTRUCT),
41918 new BigInteger([22], 1, CONSTRUCT),
41919 new BigInteger([23], 1, CONSTRUCT),
41920 new BigInteger([24], 1, CONSTRUCT),
41921 new BigInteger([25], 1, CONSTRUCT),
41922 new BigInteger([26], 1, CONSTRUCT),
41923 new BigInteger([27], 1, CONSTRUCT),
41924 new BigInteger([28], 1, CONSTRUCT),
41925 new BigInteger([29], 1, CONSTRUCT),
41926 new BigInteger([30], 1, CONSTRUCT),
41927 new BigInteger([31], 1, CONSTRUCT),
41928 new BigInteger([32], 1, CONSTRUCT),
41929 new BigInteger([33], 1, CONSTRUCT),
41930 new BigInteger([34], 1, CONSTRUCT),
41931 new BigInteger([35], 1, CONSTRUCT),
41932 new BigInteger([36], 1, CONSTRUCT)
41933 ];
41934
41935 // Used for parsing/radix conversion
41936 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41937
41938 /*
41939 Method: toString
41940 Convert a <BigInteger> to a string.
41941
41942 When *base* is greater than 10, letters are upper case.
41943
41944 Parameters:
41945
41946 base - Optional base to represent the number in (default is base 10).
41947 Must be between 2 and 36 inclusive, or an Error will be thrown.
41948
41949 Returns:
41950
41951 The string representation of the <BigInteger>.
41952 */
41953 BigInteger.prototype.toString = function(base) {
41954 base = +base || 10;
41955 if (base < 2 || base > 36) {
41956 throw new Error("illegal radix " + base + ".");
41957 }
41958 if (this._s === 0) {
41959 return "0";
41960 }
41961 if (base === 10) {
41962 var str = this._s < 0 ? "-" : "";
41963 str += this._d[this._d.length - 1].toString();
41964 for (var i = this._d.length - 2; i >= 0; i--) {
41965 var group = this._d[i].toString();
41966 while (group.length < BigInteger_base_log10) group = '0' + group;
41967 str += group;
41968 }
41969 return str;
41970 }
41971 else {
41972 var numerals = BigInteger.digits;
41973 base = BigInteger.small[base];
41974 var sign = this._s;
41975
41976 var n = this.abs();
41977 var digits = [];
41978 var digit;
41979
41980 while (n._s !== 0) {
41981 var divmod = n.divRem(base);
41982 n = divmod[0];
41983 digit = divmod[1];
41984 // TODO: This could be changed to unshift instead of reversing at the end.
41985 // Benchmark both to compare speeds.
41986 digits.push(numerals[digit.valueOf()]);
41987 }
41988 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41989 }
41990 };
41991
41992 // Verify strings for parsing
41993 BigInteger.radixRegex = [
41994 /^$/,
41995 /^$/,
41996 /^[01]*$/,
41997 /^[012]*$/,
41998 /^[0-3]*$/,
41999 /^[0-4]*$/,
42000 /^[0-5]*$/,
42001 /^[0-6]*$/,
42002 /^[0-7]*$/,
42003 /^[0-8]*$/,
42004 /^[0-9]*$/,
42005 /^[0-9aA]*$/,
42006 /^[0-9abAB]*$/,
42007 /^[0-9abcABC]*$/,
42008 /^[0-9a-dA-D]*$/,
42009 /^[0-9a-eA-E]*$/,
42010 /^[0-9a-fA-F]*$/,
42011 /^[0-9a-gA-G]*$/,
42012 /^[0-9a-hA-H]*$/,
42013 /^[0-9a-iA-I]*$/,
42014 /^[0-9a-jA-J]*$/,
42015 /^[0-9a-kA-K]*$/,
42016 /^[0-9a-lA-L]*$/,
42017 /^[0-9a-mA-M]*$/,
42018 /^[0-9a-nA-N]*$/,
42019 /^[0-9a-oA-O]*$/,
42020 /^[0-9a-pA-P]*$/,
42021 /^[0-9a-qA-Q]*$/,
42022 /^[0-9a-rA-R]*$/,
42023 /^[0-9a-sA-S]*$/,
42024 /^[0-9a-tA-T]*$/,
42025 /^[0-9a-uA-U]*$/,
42026 /^[0-9a-vA-V]*$/,
42027 /^[0-9a-wA-W]*$/,
42028 /^[0-9a-xA-X]*$/,
42029 /^[0-9a-yA-Y]*$/,
42030 /^[0-9a-zA-Z]*$/
42031 ];
42032
42033 /*
42034 Function: parse
42035 Parse a string into a <BigInteger>.
42036
42037 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
42038 *base* is not provided, it will be guessed based on the leading characters
42039 of *s* as follows:
42040
42041 - "0x" or "0X": *base* = 16
42042 - "0c" or "0C": *base* = 8
42043 - "0b" or "0B": *base* = 2
42044 - else: *base* = 10
42045
42046 If no base is provided, or *base* is 10, the number can be in exponential
42047 form. For example, these are all valid:
42048
42049 > BigInteger.parse("1e9"); // Same as "1000000000"
42050 > BigInteger.parse("1.234*10^3"); // Same as 1234
42051 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42052
42053 If any characters fall outside the range defined by the radix, an exception
42054 will be thrown.
42055
42056 Parameters:
42057
42058 s - The string to parse.
42059 base - Optional radix (default is to guess based on *s*).
42060
42061 Returns:
42062
42063 a <BigInteger> instance.
42064 */
42065 BigInteger.parse = function(s, base) {
42066 // Expands a number in exponential form to decimal form.
42067 // expandExponential("-13.441*10^5") === "1344100";
42068 // expandExponential("1.12300e-1") === "0.112300";
42069 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42070 function expandExponential(str) {
42071 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42072
42073 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42074 c = +c;
42075 var l = c < 0;
42076 var i = n.length + c;
42077 x = (l ? n : f).length;
42078 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42079 var z = (new Array(c + 1)).join("0");
42080 var r = n + f;
42081 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42082 });
42083 }
42084
42085 s = s.toString();
42086 if (typeof base === "undefined" || +base === 10) {
42087 s = expandExponential(s);
42088 }
42089
42090 var prefixRE;
42091 if (typeof base === "undefined") {
42092 prefixRE = '0[xcb]';
42093 }
42094 else if (base == 16) {
42095 prefixRE = '0x';
42096 }
42097 else if (base == 8) {
42098 prefixRE = '0c';
42099 }
42100 else if (base == 2) {
42101 prefixRE = '0b';
42102 }
42103 else {
42104 prefixRE = '';
42105 }
42106 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42107 if (parts) {
42108 var sign = parts[1] || "+";
42109 var baseSection = parts[2] || "";
42110 var digits = parts[3] || "";
42111
42112 if (typeof base === "undefined") {
42113 // Guess base
42114 if (baseSection === "0x" || baseSection === "0X") { // Hex
42115 base = 16;
42116 }
42117 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42118 base = 8;
42119 }
42120 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42121 base = 2;
42122 }
42123 else {
42124 base = 10;
42125 }
42126 }
42127 else if (base < 2 || base > 36) {
42128 throw new Error("Illegal radix " + base + ".");
42129 }
42130
42131 base = +base;
42132
42133 // Check for digits outside the range
42134 if (!(BigInteger.radixRegex[base].test(digits))) {
42135 throw new Error("Bad digit for radix " + base);
42136 }
42137
42138 // Strip leading zeros, and convert to array
42139 digits = digits.replace(/^0+/, "").split("");
42140 if (digits.length === 0) {
42141 return ZERO;
42142 }
42143
42144 // Get the sign (we know it's not zero)
42145 sign = (sign === "-") ? -1 : 1;
42146
42147 // Optimize 10
42148 if (base == 10) {
42149 var d = [];
42150 while (digits.length >= BigInteger_base_log10) {
42151 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42152 }
42153 d.push(parseInt(digits.join(''), 10));
42154 return new BigInteger(d, sign, CONSTRUCT);
42155 }
42156
42157 // Do the conversion
42158 var d = ZERO;
42159 base = BigInteger.small[base];
42160 var small = BigInteger.small;
42161 for (var i = 0; i < digits.length; i++) {
42162 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42163 }
42164 return new BigInteger(d._d, sign, CONSTRUCT);
42165 }
42166 else {
42167 throw new Error("Invalid BigInteger format: " + s);
42168 }
42169 };
42170
42171 /*
42172 Function: add
42173 Add two <BigIntegers>.
42174
42175 Parameters:
42176
42177 n - The number to add to *this*. Will be converted to a <BigInteger>.
42178
42179 Returns:
42180
42181 The numbers added together.
42182
42183 See Also:
42184
42185 <subtract>, <multiply>, <quotient>, <next>
42186 */
42187 BigInteger.prototype.add = function(n) {
42188 if (this._s === 0) {
42189 return BigInteger(n);
42190 }
42191
42192 n = BigInteger(n);
42193 if (n._s === 0) {
42194 return this;
42195 }
42196 if (this._s !== n._s) {
42197 n = n.negate();
42198 return this.subtract(n);
42199 }
42200
42201 var a = this._d;
42202 var b = n._d;
42203 var al = a.length;
42204 var bl = b.length;
42205 var sum = new Array(Math.max(al, bl) + 1);
42206 var size = Math.min(al, bl);
42207 var carry = 0;
42208 var digit;
42209
42210 for (var i = 0; i < size; i++) {
42211 digit = a[i] + b[i] + carry;
42212 sum[i] = digit % BigInteger_base;
42213 carry = (digit / BigInteger_base) | 0;
42214 }
42215 if (bl > al) {
42216 a = b;
42217 al = bl;
42218 }
42219 for (i = size; carry && i < al; i++) {
42220 digit = a[i] + carry;
42221 sum[i] = digit % BigInteger_base;
42222 carry = (digit / BigInteger_base) | 0;
42223 }
42224 if (carry) {
42225 sum[i] = carry;
42226 }
42227
42228 for ( ; i < al; i++) {
42229 sum[i] = a[i];
42230 }
42231
42232 return new BigInteger(sum, this._s, CONSTRUCT);
42233 };
42234
42235 /*
42236 Function: negate
42237 Get the additive inverse of a <BigInteger>.
42238
42239 Returns:
42240
42241 A <BigInteger> with the same magnatude, but with the opposite sign.
42242
42243 See Also:
42244
42245 <abs>
42246 */
42247 BigInteger.prototype.negate = function() {
42248 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42249 };
42250
42251 /*
42252 Function: abs
42253 Get the absolute value of a <BigInteger>.
42254
42255 Returns:
42256
42257 A <BigInteger> with the same magnatude, but always positive (or zero).
42258
42259 See Also:
42260
42261 <negate>
42262 */
42263 BigInteger.prototype.abs = function() {
42264 return (this._s < 0) ? this.negate() : this;
42265 };
42266
42267 /*
42268 Function: subtract
42269 Subtract two <BigIntegers>.
42270
42271 Parameters:
42272
42273 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42274
42275 Returns:
42276
42277 The *n* subtracted from *this*.
42278
42279 See Also:
42280
42281 <add>, <multiply>, <quotient>, <prev>
42282 */
42283 BigInteger.prototype.subtract = function(n) {
42284 if (this._s === 0) {
42285 return BigInteger(n).negate();
42286 }
42287
42288 n = BigInteger(n);
42289 if (n._s === 0) {
42290 return this;
42291 }
42292 if (this._s !== n._s) {
42293 n = n.negate();
42294 return this.add(n);
42295 }
42296
42297 var m = this;
42298 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42299 if (this._s < 0) {
42300 m = new BigInteger(n._d, 1, CONSTRUCT);
42301 n = new BigInteger(this._d, 1, CONSTRUCT);
42302 }
42303
42304 // Both are positive => a - b
42305 var sign = m.compareAbs(n);
42306 if (sign === 0) {
42307 return ZERO;
42308 }
42309 else if (sign < 0) {
42310 // swap m and n
42311 var t = n;
42312 n = m;
42313 m = t;
42314 }
42315
42316 // a > b
42317 var a = m._d;
42318 var b = n._d;
42319 var al = a.length;
42320 var bl = b.length;
42321 var diff = new Array(al); // al >= bl since a > b
42322 var borrow = 0;
42323 var i;
42324 var digit;
42325
42326 for (i = 0; i < bl; i++) {
42327 digit = a[i] - borrow - b[i];
42328 if (digit < 0) {
42329 digit += BigInteger_base;
42330 borrow = 1;
42331 }
42332 else {
42333 borrow = 0;
42334 }
42335 diff[i] = digit;
42336 }
42337 for (i = bl; i < al; i++) {
42338 digit = a[i] - borrow;
42339 if (digit < 0) {
42340 digit += BigInteger_base;
42341 }
42342 else {
42343 diff[i++] = digit;
42344 break;
42345 }
42346 diff[i] = digit;
42347 }
42348 for ( ; i < al; i++) {
42349 diff[i] = a[i];
42350 }
42351
42352 return new BigInteger(diff, sign, CONSTRUCT);
42353 };
42354
42355 (function() {
42356 function addOne(n, sign) {
42357 var a = n._d;
42358 var sum = a.slice();
42359 var carry = true;
42360 var i = 0;
42361
42362 while (true) {
42363 var digit = (a[i] || 0) + 1;
42364 sum[i] = digit % BigInteger_base;
42365 if (digit <= BigInteger_base - 1) {
42366 break;
42367 }
42368 ++i;
42369 }
42370
42371 return new BigInteger(sum, sign, CONSTRUCT);
42372 }
42373
42374 function subtractOne(n, sign) {
42375 var a = n._d;
42376 var sum = a.slice();
42377 var borrow = true;
42378 var i = 0;
42379
42380 while (true) {
42381 var digit = (a[i] || 0) - 1;
42382 if (digit < 0) {
42383 sum[i] = digit + BigInteger_base;
42384 }
42385 else {
42386 sum[i] = digit;
42387 break;
42388 }
42389 ++i;
42390 }
42391
42392 return new BigInteger(sum, sign, CONSTRUCT);
42393 }
42394
42395 /*
42396 Function: next
42397 Get the next <BigInteger> (add one).
42398
42399 Returns:
42400
42401 *this* + 1.
42402
42403 See Also:
42404
42405 <add>, <prev>
42406 */
42407 BigInteger.prototype.next = function() {
42408 switch (this._s) {
42409 case 0:
42410 return ONE;
42411 case -1:
42412 return subtractOne(this, -1);
42413 // case 1:
42414 default:
42415 return addOne(this, 1);
42416 }
42417 };
42418
42419 /*
42420 Function: prev
42421 Get the previous <BigInteger> (subtract one).
42422
42423 Returns:
42424
42425 *this* - 1.
42426
42427 See Also:
42428
42429 <next>, <subtract>
42430 */
42431 BigInteger.prototype.prev = function() {
42432 switch (this._s) {
42433 case 0:
42434 return M_ONE;
42435 case -1:
42436 return addOne(this, -1);
42437 // case 1:
42438 default:
42439 return subtractOne(this, 1);
42440 }
42441 };
42442 })();
42443
42444 /*
42445 Function: compareAbs
42446 Compare the absolute value of two <BigIntegers>.
42447
42448 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42449
42450 Parameters:
42451
42452 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42453
42454 Returns:
42455
42456 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42457
42458 See Also:
42459
42460 <compare>, <abs>
42461 */
42462 BigInteger.prototype.compareAbs = function(n) {
42463 if (this === n) {
42464 return 0;
42465 }
42466
42467 if (!(n instanceof BigInteger)) {
42468 if (!isFinite(n)) {
42469 return(isNaN(n) ? n : -1);
42470 }
42471 n = BigInteger(n);
42472 }
42473
42474 if (this._s === 0) {
42475 return (n._s !== 0) ? -1 : 0;
42476 }
42477 if (n._s === 0) {
42478 return 1;
42479 }
42480
42481 var l = this._d.length;
42482 var nl = n._d.length;
42483 if (l < nl) {
42484 return -1;
42485 }
42486 else if (l > nl) {
42487 return 1;
42488 }
42489
42490 var a = this._d;
42491 var b = n._d;
42492 for (var i = l-1; i >= 0; i--) {
42493 if (a[i] !== b[i]) {
42494 return a[i] < b[i] ? -1 : 1;
42495 }
42496 }
42497
42498 return 0;
42499 };
42500
42501 /*
42502 Function: compare
42503 Compare two <BigIntegers>.
42504
42505 Parameters:
42506
42507 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42508
42509 Returns:
42510
42511 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42512
42513 See Also:
42514
42515 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42516 */
42517 BigInteger.prototype.compare = function(n) {
42518 if (this === n) {
42519 return 0;
42520 }
42521
42522 n = BigInteger(n);
42523
42524 if (this._s === 0) {
42525 return -n._s;
42526 }
42527
42528 if (this._s === n._s) { // both positive or both negative
42529 var cmp = this.compareAbs(n);
42530 return cmp * this._s;
42531 }
42532 else {
42533 return this._s;
42534 }
42535 };
42536
42537 /*
42538 Function: isUnit
42539 Return true iff *this* is either 1 or -1.
42540
42541 Returns:
42542
42543 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42544
42545 See Also:
42546
42547 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42548 <BigInteger.ONE>, <BigInteger.M_ONE>
42549 */
42550 BigInteger.prototype.isUnit = function() {
42551 return this === ONE ||
42552 this === M_ONE ||
42553 (this._d.length === 1 && this._d[0] === 1);
42554 };
42555
42556 /*
42557 Function: multiply
42558 Multiply two <BigIntegers>.
42559
42560 Parameters:
42561
42562 n - The number to multiply *this* by. Will be converted to a
42563 <BigInteger>.
42564
42565 Returns:
42566
42567 The numbers multiplied together.
42568
42569 See Also:
42570
42571 <add>, <subtract>, <quotient>, <square>
42572 */
42573 BigInteger.prototype.multiply = function(n) {
42574 // TODO: Consider adding Karatsuba multiplication for large numbers
42575 if (this._s === 0) {
42576 return ZERO;
42577 }
42578
42579 n = BigInteger(n);
42580 if (n._s === 0) {
42581 return ZERO;
42582 }
42583 if (this.isUnit()) {
42584 if (this._s < 0) {
42585 return n.negate();
42586 }
42587 return n;
42588 }
42589 if (n.isUnit()) {
42590 if (n._s < 0) {
42591 return this.negate();
42592 }
42593 return this;
42594 }
42595 if (this === n) {
42596 return this.square();
42597 }
42598
42599 var r = (this._d.length >= n._d.length);
42600 var a = (r ? this : n)._d; // a will be longer than b
42601 var b = (r ? n : this)._d;
42602 var al = a.length;
42603 var bl = b.length;
42604
42605 var pl = al + bl;
42606 var partial = new Array(pl);
42607 var i;
42608 for (i = 0; i < pl; i++) {
42609 partial[i] = 0;
42610 }
42611
42612 for (i = 0; i < bl; i++) {
42613 var carry = 0;
42614 var bi = b[i];
42615 var jlimit = al + i;
42616 var digit;
42617 for (var j = i; j < jlimit; j++) {
42618 digit = partial[j] + bi * a[j - i] + carry;
42619 carry = (digit / BigInteger_base) | 0;
42620 partial[j] = (digit % BigInteger_base) | 0;
42621 }
42622 if (carry) {
42623 digit = partial[j] + carry;
42624 carry = (digit / BigInteger_base) | 0;
42625 partial[j] = digit % BigInteger_base;
42626 }
42627 }
42628 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42629 };
42630
42631 // Multiply a BigInteger by a single-digit native number
42632 // Assumes that this and n are >= 0
42633 // This is not really intended to be used outside the library itself
42634 BigInteger.prototype.multiplySingleDigit = function(n) {
42635 if (n === 0 || this._s === 0) {
42636 return ZERO;
42637 }
42638 if (n === 1) {
42639 return this;
42640 }
42641
42642 var digit;
42643 if (this._d.length === 1) {
42644 digit = this._d[0] * n;
42645 if (digit >= BigInteger_base) {
42646 return new BigInteger([(digit % BigInteger_base)|0,
42647 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42648 }
42649 return new BigInteger([digit], 1, CONSTRUCT);
42650 }
42651
42652 if (n === 2) {
42653 return this.add(this);
42654 }
42655 if (this.isUnit()) {
42656 return new BigInteger([n], 1, CONSTRUCT);
42657 }
42658
42659 var a = this._d;
42660 var al = a.length;
42661
42662 var pl = al + 1;
42663 var partial = new Array(pl);
42664 for (var i = 0; i < pl; i++) {
42665 partial[i] = 0;
42666 }
42667
42668 var carry = 0;
42669 for (var j = 0; j < al; j++) {
42670 digit = n * a[j] + carry;
42671 carry = (digit / BigInteger_base) | 0;
42672 partial[j] = (digit % BigInteger_base) | 0;
42673 }
42674 if (carry) {
42675 partial[j] = carry;
42676 }
42677
42678 return new BigInteger(partial, 1, CONSTRUCT);
42679 };
42680
42681 /*
42682 Function: square
42683 Multiply a <BigInteger> by itself.
42684
42685 This is slightly faster than regular multiplication, since it removes the
42686 duplicated multiplcations.
42687
42688 Returns:
42689
42690 > this.multiply(this)
42691
42692 See Also:
42693 <multiply>
42694 */
42695 BigInteger.prototype.square = function() {
42696 // Normally, squaring a 10-digit number would take 100 multiplications.
42697 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42698 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42699 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42700
42701 if (this._s === 0) {
42702 return ZERO;
42703 }
42704 if (this.isUnit()) {
42705 return ONE;
42706 }
42707
42708 var digits = this._d;
42709 var length = digits.length;
42710 var imult1 = new Array(length + length + 1);
42711 var product, carry, k;
42712 var i;
42713
42714 // Calculate diagonal
42715 for (i = 0; i < length; i++) {
42716 k = i * 2;
42717 product = digits[i] * digits[i];
42718 carry = (product / BigInteger_base) | 0;
42719 imult1[k] = product % BigInteger_base;
42720 imult1[k + 1] = carry;
42721 }
42722
42723 // Calculate repeating part
42724 for (i = 0; i < length; i++) {
42725 carry = 0;
42726 k = i * 2 + 1;
42727 for (var j = i + 1; j < length; j++, k++) {
42728 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42729 carry = (product / BigInteger_base) | 0;
42730 imult1[k] = product % BigInteger_base;
42731 }
42732 k = length + i;
42733 var digit = carry + imult1[k];
42734 carry = (digit / BigInteger_base) | 0;
42735 imult1[k] = digit % BigInteger_base;
42736 imult1[k + 1] += carry;
42737 }
42738
42739 return new BigInteger(imult1, 1, CONSTRUCT);
42740 };
42741
42742 /*
42743 Function: quotient
42744 Divide two <BigIntegers> and truncate towards zero.
42745
42746 <quotient> throws an exception if *n* is zero.
42747
42748 Parameters:
42749
42750 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42751
42752 Returns:
42753
42754 The *this* / *n*, truncated to an integer.
42755
42756 See Also:
42757
42758 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42759 */
42760 BigInteger.prototype.quotient = function(n) {
42761 return this.divRem(n)[0];
42762 };
42763
42764 /*
42765 Function: divide
42766 Deprecated synonym for <quotient>.
42767 */
42768 BigInteger.prototype.divide = BigInteger.prototype.quotient;
42769
42770 /*
42771 Function: remainder
42772 Calculate the remainder of two <BigIntegers>.
42773
42774 <remainder> throws an exception if *n* is zero.
42775
42776 Parameters:
42777
42778 n - The remainder after *this* is divided *this* by *n*. Will be
42779 converted to a <BigInteger>.
42780
42781 Returns:
42782
42783 *this* % *n*.
42784
42785 See Also:
42786
42787 <divRem>, <quotient>
42788 */
42789 BigInteger.prototype.remainder = function(n) {
42790 return this.divRem(n)[1];
42791 };
42792
42793 /*
42794 Function: divRem
42795 Calculate the integer quotient and remainder of two <BigIntegers>.
42796
42797 <divRem> throws an exception if *n* is zero.
42798
42799 Parameters:
42800
42801 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42802
42803 Returns:
42804
42805 A two-element array containing the quotient and the remainder.
42806
42807 > a.divRem(b)
42808
42809 is exactly equivalent to
42810
42811 > [a.quotient(b), a.remainder(b)]
42812
42813 except it is faster, because they are calculated at the same time.
42814
42815 See Also:
42816
42817 <quotient>, <remainder>
42818 */
42819 BigInteger.prototype.divRem = function(n) {
42820 n = BigInteger(n);
42821 if (n._s === 0) {
42822 throw new Error("Divide by zero");
42823 }
42824 if (this._s === 0) {
42825 return [ZERO, ZERO];
42826 }
42827 if (n._d.length === 1) {
42828 return this.divRemSmall(n._s * n._d[0]);
42829 }
42830
42831 // Test for easy cases -- |n1| <= |n2|
42832 switch (this.compareAbs(n)) {
42833 case 0: // n1 == n2
42834 return [this._s === n._s ? ONE : M_ONE, ZERO];
42835 case -1: // |n1| < |n2|
42836 return [ZERO, this];
42837 }
42838
42839 var sign = this._s * n._s;
42840 var a = n.abs();
42841 var b_digits = this._d;
42842 var b_index = b_digits.length;
42843 var digits = n._d.length;
42844 var quot = [];
42845 var guess;
42846
42847 var part = new BigInteger([], 0, CONSTRUCT);
42848
42849 while (b_index) {
42850 part._d.unshift(b_digits[--b_index]);
42851 part = new BigInteger(part._d, 1, CONSTRUCT);
42852
42853 if (part.compareAbs(n) < 0) {
42854 quot.push(0);
42855 continue;
42856 }
42857 if (part._s === 0) {
42858 guess = 0;
42859 }
42860 else {
42861 var xlen = part._d.length, ylen = a._d.length;
42862 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42863 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42864 if (part._d.length > a._d.length) {
42865 // The length of part._d can either match a._d length,
42866 // or exceed it by one.
42867 highx = (highx+1)*BigInteger_base;
42868 }
42869 guess = Math.ceil(highx/highy);
42870 }
42871 do {
42872 var check = a.multiplySingleDigit(guess);
42873 if (check.compareAbs(part) <= 0) {
42874 break;
42875 }
42876 guess--;
42877 } while (guess);
42878
42879 quot.push(guess);
42880 if (!guess) {
42881 continue;
42882 }
42883 var diff = part.subtract(check);
42884 part._d = diff._d.slice();
42885 }
42886
42887 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42888 new BigInteger(part._d, this._s, CONSTRUCT)];
42889 };
42890
42891 // Throws an exception if n is outside of (-BigInteger.base, -1] or
42892 // [1, BigInteger.base). It's not necessary to call this, since the
42893 // other division functions will call it if they are able to.
42894 BigInteger.prototype.divRemSmall = function(n) {
42895 var r;
42896 n = +n;
42897 if (n === 0) {
42898 throw new Error("Divide by zero");
42899 }
42900
42901 var n_s = n < 0 ? -1 : 1;
42902 var sign = this._s * n_s;
42903 n = Math.abs(n);
42904
42905 if (n < 1 || n >= BigInteger_base) {
42906 throw new Error("Argument out of range");
42907 }
42908
42909 if (this._s === 0) {
42910 return [ZERO, ZERO];
42911 }
42912
42913 if (n === 1 || n === -1) {
42914 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42915 }
42916
42917 // 2 <= n < BigInteger_base
42918
42919 // divide a single digit by a single digit
42920 if (this._d.length === 1) {
42921 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42922 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42923 if (sign < 0) {
42924 q = q.negate();
42925 }
42926 if (this._s < 0) {
42927 r = r.negate();
42928 }
42929 return [q, r];
42930 }
42931
42932 var digits = this._d.slice();
42933 var quot = new Array(digits.length);
42934 var part = 0;
42935 var diff = 0;
42936 var i = 0;
42937 var guess;
42938
42939 while (digits.length) {
42940 part = part * BigInteger_base + digits[digits.length - 1];
42941 if (part < n) {
42942 quot[i++] = 0;
42943 digits.pop();
42944 diff = BigInteger_base * diff + part;
42945 continue;
42946 }
42947 if (part === 0) {
42948 guess = 0;
42949 }
42950 else {
42951 guess = (part / n) | 0;
42952 }
42953
42954 var check = n * guess;
42955 diff = part - check;
42956 quot[i++] = guess;
42957 if (!guess) {
42958 digits.pop();
42959 continue;
42960 }
42961
42962 digits.pop();
42963 part = diff;
42964 }
42965
42966 r = new BigInteger([diff], 1, CONSTRUCT);
42967 if (this._s < 0) {
42968 r = r.negate();
42969 }
42970 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42971 };
42972
42973 /*
42974 Function: isEven
42975 Return true iff *this* is divisible by two.
42976
42977 Note that <BigInteger.ZERO> is even.
42978
42979 Returns:
42980
42981 true if *this* is even, false otherwise.
42982
42983 See Also:
42984
42985 <isOdd>
42986 */
42987 BigInteger.prototype.isEven = function() {
42988 var digits = this._d;
42989 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42990 };
42991
42992 /*
42993 Function: isOdd
42994 Return true iff *this* is not divisible by two.
42995
42996 Returns:
42997
42998 true if *this* is odd, false otherwise.
42999
43000 See Also:
43001
43002 <isEven>
43003 */
43004 BigInteger.prototype.isOdd = function() {
43005 return !this.isEven();
43006 };
43007
43008 /*
43009 Function: sign
43010 Get the sign of a <BigInteger>.
43011
43012 Returns:
43013
43014 * -1 if *this* < 0
43015 * 0 if *this* == 0
43016 * +1 if *this* > 0
43017
43018 See Also:
43019
43020 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
43021 */
43022 BigInteger.prototype.sign = function() {
43023 return this._s;
43024 };
43025
43026 /*
43027 Function: isPositive
43028 Return true iff *this* > 0.
43029
43030 Returns:
43031
43032 true if *this*.compare(<BigInteger.ZERO>) == 1.
43033
43034 See Also:
43035
43036 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
43037 */
43038 BigInteger.prototype.isPositive = function() {
43039 return this._s > 0;
43040 };
43041
43042 /*
43043 Function: isNegative
43044 Return true iff *this* < 0.
43045
43046 Returns:
43047
43048 true if *this*.compare(<BigInteger.ZERO>) == -1.
43049
43050 See Also:
43051
43052 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43053 */
43054 BigInteger.prototype.isNegative = function() {
43055 return this._s < 0;
43056 };
43057
43058 /*
43059 Function: isZero
43060 Return true iff *this* == 0.
43061
43062 Returns:
43063
43064 true if *this*.compare(<BigInteger.ZERO>) == 0.
43065
43066 See Also:
43067
43068 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43069 */
43070 BigInteger.prototype.isZero = function() {
43071 return this._s === 0;
43072 };
43073
43074 /*
43075 Function: exp10
43076 Multiply a <BigInteger> by a power of 10.
43077
43078 This is equivalent to, but faster than
43079
43080 > if (n >= 0) {
43081 > return this.multiply(BigInteger("1e" + n));
43082 > }
43083 > else { // n <= 0
43084 > return this.quotient(BigInteger("1e" + -n));
43085 > }
43086
43087 Parameters:
43088
43089 n - The power of 10 to multiply *this* by. *n* is converted to a
43090 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43091 (0x7FFFFFFF), or an exception will be thrown.
43092
43093 Returns:
43094
43095 *this* * (10 ** *n*), truncated to an integer if necessary.
43096
43097 See Also:
43098
43099 <pow>, <multiply>
43100 */
43101 BigInteger.prototype.exp10 = function(n) {
43102 n = +n;
43103 if (n === 0) {
43104 return this;
43105 }
43106 if (Math.abs(n) > Number(MAX_EXP)) {
43107 throw new Error("exponent too large in BigInteger.exp10");
43108 }
43109 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43110 if (this._s === 0) {
43111 return ZERO;
43112 }
43113 if (n > 0) {
43114 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43115
43116 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43117 k._d.unshift(0);
43118 }
43119 if (n == 0)
43120 return k;
43121 k._s = 1;
43122 k = k.multiplySingleDigit(Math.pow(10, n));
43123 return (this._s < 0 ? k.negate() : k);
43124 } else if (-n >= this._d.length*BigInteger_base_log10) {
43125 return ZERO;
43126 } else {
43127 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43128
43129 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43130 k._d.shift();
43131 }
43132 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43133 }
43134 };
43135
43136 /*
43137 Function: pow
43138 Raise a <BigInteger> to a power.
43139
43140 In this implementation, 0**0 is 1.
43141
43142 Parameters:
43143
43144 n - The exponent to raise *this* by. *n* must be no greater than
43145 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43146
43147 Returns:
43148
43149 *this* raised to the *nth* power.
43150
43151 See Also:
43152
43153 <modPow>
43154 */
43155 BigInteger.prototype.pow = function(n) {
43156 if (this.isUnit()) {
43157 if (this._s > 0) {
43158 return this;
43159 }
43160 else {
43161 return BigInteger(n).isOdd() ? this : this.negate();
43162 }
43163 }
43164
43165 n = BigInteger(n);
43166 if (n._s === 0) {
43167 return ONE;
43168 }
43169 else if (n._s < 0) {
43170 if (this._s === 0) {
43171 throw new Error("Divide by zero");
43172 }
43173 else {
43174 return ZERO;
43175 }
43176 }
43177 if (this._s === 0) {
43178 return ZERO;
43179 }
43180 if (n.isUnit()) {
43181 return this;
43182 }
43183
43184 if (n.compareAbs(MAX_EXP) > 0) {
43185 throw new Error("exponent too large in BigInteger.pow");
43186 }
43187 var x = this;
43188 var aux = ONE;
43189 var two = BigInteger.small[2];
43190
43191 while (n.isPositive()) {
43192 if (n.isOdd()) {
43193 aux = aux.multiply(x);
43194 if (n.isUnit()) {
43195 return aux;
43196 }
43197 }
43198 x = x.square();
43199 n = n.quotient(two);
43200 }
43201
43202 return aux;
43203 };
43204
43205 /*
43206 Function: modPow
43207 Raise a <BigInteger> to a power (mod m).
43208
43209 Because it is reduced by a modulus, <modPow> is not limited by
43210 <BigInteger.MAX_EXP> like <pow>.
43211
43212 Parameters:
43213
43214 exponent - The exponent to raise *this* by. Must be positive.
43215 modulus - The modulus.
43216
43217 Returns:
43218
43219 *this* ^ *exponent* (mod *modulus*).
43220
43221 See Also:
43222
43223 <pow>, <mod>
43224 */
43225 BigInteger.prototype.modPow = function(exponent, modulus) {
43226 var result = ONE;
43227 var base = this;
43228
43229 while (exponent.isPositive()) {
43230 if (exponent.isOdd()) {
43231 result = result.multiply(base).remainder(modulus);
43232 }
43233
43234 exponent = exponent.quotient(BigInteger.small[2]);
43235 if (exponent.isPositive()) {
43236 base = base.square().remainder(modulus);
43237 }
43238 }
43239
43240 return result;
43241 };
43242
43243 /*
43244 Function: log
43245 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43246
43247 This is equivalent to
43248
43249 > Math.log(this.toJSValue())
43250
43251 but handles values outside of the native number range.
43252
43253 Returns:
43254
43255 log( *this* )
43256
43257 See Also:
43258
43259 <toJSValue>
43260 */
43261 BigInteger.prototype.log = function() {
43262 switch (this._s) {
43263 case 0: return -Infinity;
43264 case -1: return NaN;
43265 default: // Fall through.
43266 }
43267
43268 var l = this._d.length;
43269
43270 if (l*BigInteger_base_log10 < 30) {
43271 return Math.log(this.valueOf());
43272 }
43273
43274 var N = Math.ceil(30/BigInteger_base_log10);
43275 var firstNdigits = this._d.slice(l - N);
43276 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43277 };
43278
43279 /*
43280 Function: valueOf
43281 Convert a <BigInteger> to a native JavaScript integer.
43282
43283 This is called automatically by JavaScipt to convert a <BigInteger> to a
43284 native value.
43285
43286 Returns:
43287
43288 > parseInt(this.toString(), 10)
43289
43290 See Also:
43291
43292 <toString>, <toJSValue>
43293 */
43294 BigInteger.prototype.valueOf = function() {
43295 return parseInt(this.toString(), 10);
43296 };
43297
43298 /*
43299 Function: toJSValue
43300 Convert a <BigInteger> to a native JavaScript integer.
43301
43302 This is the same as valueOf, but more explicitly named.
43303
43304 Returns:
43305
43306 > parseInt(this.toString(), 10)
43307
43308 See Also:
43309
43310 <toString>, <valueOf>
43311 */
43312 BigInteger.prototype.toJSValue = function() {
43313 return parseInt(this.toString(), 10);
43314 };
43315
43316 var MAX_EXP = BigInteger(0x7FFFFFFF);
43317 // Constant: MAX_EXP
43318 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43319 BigInteger.MAX_EXP = MAX_EXP;
43320
43321 (function() {
43322 function makeUnary(fn) {
43323 return function(a) {
43324 return fn.call(BigInteger(a));
43325 };
43326 }
43327
43328 function makeBinary(fn) {
43329 return function(a, b) {
43330 return fn.call(BigInteger(a), BigInteger(b));
43331 };
43332 }
43333
43334 function makeTrinary(fn) {
43335 return function(a, b, c) {
43336 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43337 };
43338 }
43339
43340 (function() {
43341 var i, fn;
43342 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43343 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43344 var trinary = ["modPow"];
43345
43346 for (i = 0; i < unary.length; i++) {
43347 fn = unary[i];
43348 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43349 }
43350
43351 for (i = 0; i < binary.length; i++) {
43352 fn = binary[i];
43353 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43354 }
43355
43356 for (i = 0; i < trinary.length; i++) {
43357 fn = trinary[i];
43358 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43359 }
43360
43361 BigInteger.exp10 = function(x, n) {
43362 return BigInteger(x).exp10(n);
43363 };
43364 })();
43365 })();
43366
43367 exports.BigInteger = BigInteger;
43368 })(typeof exports !== 'undefined' ? exports : this);
43369 </script>
43370 <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){
43371 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;
43372
43373 },{}],2:[function(require,module,exports){
43374 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;
43375
43376 },{"./scoring":6}],3:[function(require,module,exports){
43377 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,7ugd5hip2j,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,6uldv8,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,1um83z,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,7u8i9o0p,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,123lol123,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(","),
43378 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(","),
43379 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(","),
43380 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(","),
43381 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;
43382
43383 },{}],4:[function(require,module,exports){
43384 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;
43385
43386 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43387 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;
43388
43389 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43390 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;
43391
43392 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
43393 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;
43394
43395 },{}]},{},[4])(4)
43396 });
43397 //# sourceMappingURL=zxcvbn.js.map
43398 </script>
43399 <script>/*
43400 * Detects entropy from a string.
43401 *
43402 * Formats include:
43403 * binary [0-1]
43404 * base 6 [0-5]
43405 * dice 6 [1-6]
43406 * decimal [0-9]
43407 * hexadecimal [0-9A-F]
43408 * card [A2-9TJQK][CDHS]
43409 *
43410 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43411 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43412 * entropy.
43413 */
43414
43415 window.Entropy = new (function() {
43416
43417 var TWO = new BigInteger(2);
43418
43419 // matchers returns an array of the matched events for each type of entropy.
43420 // eg
43421 // matchers.binary("010") returns ["0", "1", "0"]
43422 // matchers.binary("a10") returns ["1", "0"]
43423 // matchers.hex("a10") returns ["a", "1", "0"]
43424 var matchers = {
43425 binary: function(str) {
43426 return str.match(/[0-1]/gi) || [];
43427 },
43428 base6: function(str) {
43429 return str.match(/[0-5]/gi) || [];
43430 },
43431 dice: function(str) {
43432 return str.match(/[1-6]/gi) || []; // ie dice numbers
43433 },
43434 base10: function(str) {
43435 return str.match(/[0-9]/gi) || [];
43436 },
43437 hex: function(str) {
43438 return str.match(/[0-9A-F]/gi) || [];
43439 },
43440 card: function(str) {
43441 // Format is NumberSuit, eg
43442 // AH ace of hearts
43443 // 8C eight of clubs
43444 // TD ten of diamonds
43445 // JS jack of spades
43446 // QH queen of hearts
43447 // KC king of clubs
43448 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43449 }
43450 }
43451
43452 // Convert array of cards from ["ac", "4d", "ks"]
43453 // to numbers between 0 and 51 [0, 16, 51]
43454 function convertCardsToInts(cards) {
43455 var ints = [];
43456 var values = "a23456789tjqk";
43457 var suits = "cdhs";
43458 for (var i=0; i<cards.length; i++) {
43459 var card = cards[i].toLowerCase();
43460 var value = card[0];
43461 var suit = card[1];
43462 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43463 ints.push(asInt);
43464 }
43465 return ints;
43466 }
43467
43468 this.fromString = function(rawEntropyStr) {
43469 // Find type of entropy being used (binary, hex, dice etc)
43470 var base = getBase(rawEntropyStr);
43471 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43472 // This is done by changing all 6s to 0s
43473 if (base.str == "dice") {
43474 var newParts = [];
43475 var newInts = [];
43476 for (var i=0; i<base.parts.length; i++) {
43477 var c = base.parts[i];
43478 if ("12345".indexOf(c) > -1) {
43479 newParts[i] = base.parts[i];
43480 newInts[i] = base.ints[i];
43481 }
43482 else {
43483 newParts[i] = "0";
43484 newInts[i] = 0;
43485 }
43486 }
43487 base.str = "base 6 (dice)";
43488 base.ints = newInts;
43489 base.parts = newParts;
43490 base.matcher = matchers.base6;
43491 }
43492 // Detect empty entropy
43493 if (base.parts.length == 0) {
43494 return {
43495 binaryStr: "",
43496 cleanStr: "",
43497 cleanHtml: "",
43498 base: base,
43499 };
43500 }
43501 // Convert base.ints to BigInteger.
43502 // Due to using unusual bases, eg cards of base52, this is not as simple as
43503 // using BigInteger.parse()
43504 var entropyInt = BigInteger.ZERO;
43505 for (var i=base.ints.length-1; i>=0; i--) {
43506 var thisInt = BigInteger.parse(base.ints[i]);
43507 var power = (base.ints.length - 1) - i;
43508 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43509 entropyInt = entropyInt.add(additionalEntropy);
43510 }
43511 // Convert entropy to binary
43512 var entropyBin = entropyInt.toString(2);
43513 // If the first integer is small, it must be padded with zeros.
43514 // Otherwise the chance of the first bit being 1 is 100%, which is
43515 // obviously incorrect.
43516 // This is not perfect for non-2^n bases.
43517 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43518 while (entropyBin.length < expectedBits) {
43519 entropyBin = "0" + entropyBin;
43520 }
43521 // Calculate the number of bits per event
43522 var bitsPerEvent = Math.log2(base.asInt);
43523 // Cards binary must be handled differently, since they're not replaced
43524 if (base.asInt == 52) {
43525 var cardEntropy = processCardEntropy(base.parts);
43526 entropyBin = cardEntropy.binaryStr;
43527 bitsPerEvent = cardEntropy.bitsPerEvent;
43528 }
43529 // Supply a 'filtered' entropy string for display purposes
43530 var entropyClean = base.parts.join("");
43531 var entropyHtml = base.parts.join("");
43532 if (base.asInt == 52) {
43533 entropyClean = base.parts.join(" ").toUpperCase();
43534 entropyClean = entropyClean.replace(/C/g, "\u2663");
43535 entropyClean = entropyClean.replace(/D/g, "\u2666");
43536 entropyClean = entropyClean.replace(/H/g, "\u2665");
43537 entropyClean = entropyClean.replace(/S/g, "\u2660");
43538 entropyHtml = base.parts.join(" ").toUpperCase();
43539 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43540 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43541 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43542 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43543 }
43544 // Return the result
43545 var e = {
43546 binaryStr: entropyBin,
43547 cleanStr: entropyClean,
43548 cleanHtml: entropyHtml,
43549 bitsPerEvent: bitsPerEvent,
43550 base: base,
43551 }
43552 return e;
43553 }
43554
43555 function getSortedDeck() {
43556 var s = [];
43557 var suits = "CDHS";
43558 var values = "A23456789TJQK";
43559 for (var i=0; i<suits.length; i++) {
43560 for (var j=0; j<values.length; j++) {
43561 s.push(values[j]+suits[i]);
43562 }
43563 }
43564 return s;
43565 }
43566
43567 function getBase(str) {
43568 // Need to get the lowest base for the supplied entropy.
43569 // This prevents interpreting, say, dice rolls as hexadecimal.
43570 var binaryMatches = matchers.binary(str);
43571 var hexMatches = matchers.hex(str);
43572 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43573 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43574 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43575 return {
43576 ints: ints,
43577 parts: binaryMatches,
43578 matcher: matchers.binary,
43579 asInt: 2,
43580 str: "binary",
43581 }
43582 }
43583 var cardMatches = matchers.card(str);
43584 if (cardMatches.length >= hexMatches.length / 2) {
43585 var ints = convertCardsToInts(cardMatches);
43586 return {
43587 ints: ints,
43588 parts: cardMatches,
43589 matcher: matchers.card,
43590 asInt: 52,
43591 str: "card",
43592 }
43593 }
43594 var diceMatches = matchers.dice(str);
43595 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43596 var ints = diceMatches.map(function(i) { return parseInt(i) });
43597 return {
43598 ints: ints,
43599 parts: diceMatches,
43600 matcher: matchers.dice,
43601 asInt: 6,
43602 str: "dice",
43603 }
43604 }
43605 var base6Matches = matchers.base6(str);
43606 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43607 var ints = base6Matches.map(function(i) { return parseInt(i) });
43608 return {
43609 ints: ints,
43610 parts: base6Matches,
43611 matcher: matchers.base6,
43612 asInt: 6,
43613 str: "base 6",
43614 }
43615 }
43616 var base10Matches = matchers.base10(str);
43617 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43618 var ints = base10Matches.map(function(i) { return parseInt(i) });
43619 return {
43620 ints: ints,
43621 parts: base10Matches,
43622 matcher: matchers.base10,
43623 asInt: 10,
43624 str: "base 10",
43625 }
43626 }
43627 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43628 return {
43629 ints: ints,
43630 parts: hexMatches,
43631 matcher: matchers.hex,
43632 asInt: 16,
43633 str: "hexadecimal",
43634 }
43635 }
43636
43637 // Assume cards are NOT replaced.
43638 // Additional entropy decreases as more cards are used. This means
43639 // total possible entropy is measured using n!, not base^n.
43640 // eg the second last card can be only one of two, not one of fifty two
43641 // so the added entropy for that card is only one bit at most
43642 function processCardEntropy(cards) {
43643 // Track how many instances of each card have been used, and thus
43644 // how many decks are in use.
43645 var cardCounts = {};
43646 var numberOfDecks = 0;
43647 // Work out number of decks by max(duplicates)
43648 for (var i=0; i<cards.length; i++) {
43649 // Get the card that was drawn
43650 var cardLower = cards[i];
43651 var card = cardLower.toUpperCase();
43652 // Initialize the count for this card if needed
43653 if (!(card in cardCounts)) {
43654 cardCounts[card] = 0;
43655 }
43656 cardCounts[card] += 1;
43657 // See if this is max(duplicates)
43658 if (cardCounts[card] > numberOfDecks) {
43659 numberOfDecks = cardCounts[card];
43660 }
43661 }
43662 // Work out the total number of bits for this many decks
43663 // See http://crypto.stackexchange.com/q/41886
43664 var gainedBits = 0;
43665 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43666 // which becomes infinity for numberOfDecks > 4
43667 for (var i=1; i<=52*numberOfDecks; i++) {
43668 gainedBits = gainedBits + Math.log2(i);
43669 }
43670 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43671 var maxBits = gainedBits - lostBits;
43672 // Convert the drawn cards to a binary representation.
43673 // The exact technique for doing this is unclear.
43674 // See
43675 // http://crypto.stackexchange.com/a/41896
43676 // "I even doubt that this is well defined (only the average entropy
43677 // is, I believe)."
43678 // See
43679 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43680 // "The binary representation can be the first log(permutations,2) bits
43681 // of the sha-2 hash of the normalized deck string."
43682 //
43683 // In this specific implementation, the first N bits of the hash of the
43684 // normalized cards string is being used. Uppercase, no spaces; eg
43685 // sha256("AH8DQSTC2H")
43686 var totalCards = numberOfDecks * 52;
43687 var percentUsed = cards.length / totalCards;
43688 // Calculate the average number of bits of entropy for the number of
43689 // cards drawn.
43690 var numberOfBits = Math.floor(maxBits * percentUsed);
43691 // Create a normalized string of the selected cards
43692 var normalizedCards = cards.join("").toUpperCase();
43693 // Convert to binary using the SHA256 hash of the normalized cards.
43694 // If the number of bits is more than 256, multiple hashes
43695 // are used until the required number of bits is reached.
43696 var entropyBin = "";
43697 var iterations = 0;
43698 while (entropyBin.length < numberOfBits) {
43699 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
43700 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43701 for (var i=0; i<hashHex.length; i++) {
43702 var decimal = parseInt(hashHex[i], 16);
43703 var binary = decimal.toString(2);
43704 while (binary.length < 4) {
43705 binary = "0" + binary;
43706 }
43707 entropyBin = entropyBin + binary;
43708 }
43709 iterations = iterations + 1;
43710 }
43711 // Truncate to the appropriate number of bits.
43712 entropyBin = entropyBin.substring(0, numberOfBits);
43713 // Get the number of bits per event
43714 bitsPerEvent = maxBits / totalCards;
43715 return {
43716 binaryStr: entropyBin,
43717 bitsPerEvent: bitsPerEvent,
43718 }
43719 }
43720
43721 // Polyfill for Math.log2
43722 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43723 Math.log2 = Math.log2 || function(x) {
43724 // The polyfill isn't good enough because of the poor accuracy of
43725 // Math.LOG2E
43726 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43727 // So instead use the BigInteger library to get it right.
43728 return BigInteger.log(x) / BigInteger.log(2);
43729 };
43730
43731 // Depends on BigInteger
43732 function factorial(n) {
43733 if (n == 0) {
43734 return 1;
43735 }
43736 f = BigInteger.ONE;
43737 for (var i=1; i<=n; i++) {
43738 f = f.multiply(new BigInteger(i));
43739 }
43740 return f;
43741 }
43742
43743 })();
43744 </script>
43745 <script>(function() {
43746
43747 // mnemonics is populated as required by getLanguage
43748 var mnemonics = { "english": new Mnemonic("english") };
43749 var mnemonic = mnemonics["english"];
43750 var seed = null;
43751 var bip32RootKey = null;
43752 var bip32ExtendedKey = null;
43753 var network = bitcoin.networks.bitcoin;
43754 var addressRowTemplate = $("#address-row-template");
43755
43756 var showIndex = true;
43757 var showAddress = true;
43758 var showPubKey = true;
43759 var showPrivKey = true;
43760 var showQr = false;
43761
43762 var entropyChangeTimeoutEvent = null;
43763 var phraseChangeTimeoutEvent = null;
43764 var rootKeyChangedTimeoutEvent = null;
43765
43766 var generationProcesses = [];
43767
43768 var DOM = {};
43769 DOM.network = $(".network");
43770 DOM.bip32Client = $("#bip32-client");
43771 DOM.phraseNetwork = $("#network-phrase");
43772 DOM.useEntropy = $(".use-entropy");
43773 DOM.entropyContainer = $(".entropy-container");
43774 DOM.entropy = $(".entropy");
43775 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43776 DOM.entropyType = DOM.entropyContainer.find(".type");
43777 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
43778 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43779 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43780 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43781 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43782 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43783 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43784 DOM.phrase = $(".phrase");
43785 DOM.passphrase = $(".passphrase");
43786 DOM.generateContainer = $(".generate-container");
43787 DOM.generate = $(".generate");
43788 DOM.seed = $(".seed");
43789 DOM.rootKey = $(".root-key");
43790 DOM.extendedPrivKey = $(".extended-priv-key");
43791 DOM.extendedPubKey = $(".extended-pub-key");
43792 DOM.bip32tab = $("#bip32-tab");
43793 DOM.bip44tab = $("#bip44-tab");
43794 DOM.bip32panel = $("#bip32");
43795 DOM.bip44panel = $("#bip44");
43796 DOM.bip32path = $("#bip32-path");
43797 DOM.bip44path = $("#bip44-path");
43798 DOM.bip44purpose = $("#bip44 .purpose");
43799 DOM.bip44coin = $("#bip44 .coin");
43800 DOM.bip44account = $("#bip44 .account");
43801 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43802 DOM.bip44accountXpub = $("#bip44 .account-xpub");
43803 DOM.bip44change = $("#bip44 .change");
43804 DOM.generatedStrength = $(".generate-container .strength");
43805 DOM.hardenedAddresses = $(".hardened-addresses");
43806 DOM.addresses = $(".addresses");
43807 DOM.rowsToAdd = $(".rows-to-add");
43808 DOM.more = $(".more");
43809 DOM.feedback = $(".feedback");
43810 DOM.tab = $(".derivation-type a");
43811 DOM.indexToggle = $(".index-toggle");
43812 DOM.addressToggle = $(".address-toggle");
43813 DOM.publicKeyToggle = $(".public-key-toggle");
43814 DOM.privateKeyToggle = $(".private-key-toggle");
43815 DOM.languages = $(".languages a");
43816 DOM.qrContainer = $(".qr-container");
43817 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
43818 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43819 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43820 DOM.showQrEls = $("[data-show-qr]");
43821
43822 function init() {
43823 // Events
43824 DOM.network.on("change", networkChanged);
43825 DOM.bip32Client.on("change", bip32ClientChanged);
43826 DOM.useEntropy.on("change", setEntropyVisibility);
43827 DOM.entropy.on("input", delayedEntropyChanged);
43828 DOM.entropyMnemonicLength.on("change", entropyChanged);
43829 DOM.phrase.on("input", delayedPhraseChanged);
43830 DOM.passphrase.on("input", delayedPhraseChanged);
43831 DOM.generate.on("click", generateClicked);
43832 DOM.more.on("click", showMore);
43833 DOM.rootKey.on("input", delayedRootKeyChanged);
43834 DOM.bip32path.on("input", calcForDerivationPath);
43835 DOM.bip44purpose.on("input", calcForDerivationPath);
43836 DOM.bip44coin.on("input", calcForDerivationPath);
43837 DOM.bip44account.on("input", calcForDerivationPath);
43838 DOM.bip44change.on("input", calcForDerivationPath);
43839 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43840 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43841 DOM.indexToggle.on("click", toggleIndexes);
43842 DOM.addressToggle.on("click", toggleAddresses);
43843 DOM.publicKeyToggle.on("click", togglePublicKeys);
43844 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43845 DOM.languages.on("click", languageChanged);
43846 setQrEvents(DOM.showQrEls);
43847 disableForms();
43848 hidePending();
43849 hideValidationError();
43850 populateNetworkSelect();
43851 populateClientSelect();
43852 }
43853
43854 // Event handlers
43855
43856 function networkChanged(e) {
43857 var networkIndex = e.target.value;
43858 networks[networkIndex].onSelect();
43859 if (seed != null) {
43860 phraseChanged();
43861 }
43862 else {
43863 rootKeyChanged();
43864 }
43865 }
43866
43867 function bip32ClientChanged(e) {
43868 var clientIndex = DOM.bip32Client.val();
43869 if (clientIndex == "custom") {
43870 DOM.bip32path.prop("readonly", false);
43871 }
43872 else {
43873 DOM.bip32path.prop("readonly", true);
43874 clients[clientIndex].onSelect();
43875 if (seed != null) {
43876 phraseChanged();
43877 }
43878 else {
43879 rootKeyChanged();
43880 }
43881 }
43882 }
43883
43884 function setEntropyVisibility() {
43885 if (isUsingOwnEntropy()) {
43886 DOM.entropyContainer.removeClass("hidden");
43887 DOM.generateContainer.addClass("hidden");
43888 DOM.phrase.prop("readonly", true);
43889 DOM.entropy.focus();
43890 entropyChanged();
43891 }
43892 else {
43893 DOM.entropyContainer.addClass("hidden");
43894 DOM.generateContainer.removeClass("hidden");
43895 DOM.phrase.prop("readonly", false);
43896 hidePending();
43897 }
43898 }
43899
43900 function delayedPhraseChanged() {
43901 hideValidationError();
43902 showPending();
43903 if (phraseChangeTimeoutEvent != null) {
43904 clearTimeout(phraseChangeTimeoutEvent);
43905 }
43906 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43907 }
43908
43909 function phraseChanged() {
43910 showPending();
43911 hideValidationError();
43912 setMnemonicLanguage();
43913 // Get the mnemonic phrase
43914 var phrase = DOM.phrase.val();
43915 var errorText = findPhraseErrors(phrase);
43916 if (errorText) {
43917 showValidationError(errorText);
43918 return;
43919 }
43920 // Calculate and display
43921 var passphrase = DOM.passphrase.val();
43922 calcBip32RootKeyFromSeed(phrase, passphrase);
43923 calcForDerivationPath();
43924 hidePending();
43925 }
43926
43927 function delayedEntropyChanged() {
43928 hideValidationError();
43929 showPending();
43930 if (entropyChangeTimeoutEvent != null) {
43931 clearTimeout(entropyChangeTimeoutEvent);
43932 }
43933 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43934 }
43935
43936 function entropyChanged() {
43937 // If blank entropy, clear mnemonic, addresses, errors
43938 if (DOM.entropy.val().trim().length == 0) {
43939 clearDisplay();
43940 clearEntropyFeedback();
43941 DOM.phrase.val("");
43942 showValidationError("Blank entropy");
43943 return;
43944 }
43945 // Get the current phrase to detect changes
43946 var phrase = DOM.phrase.val();
43947 // Set the phrase from the entropy
43948 setMnemonicFromEntropy();
43949 // Recalc addresses if the phrase has changed
43950 var newPhrase = DOM.phrase.val();
43951 if (newPhrase != phrase) {
43952 if (newPhrase.length == 0) {
43953 clearDisplay();
43954 }
43955 else {
43956 phraseChanged();
43957 }
43958 }
43959 else {
43960 hidePending();
43961 }
43962 }
43963
43964 function delayedRootKeyChanged() {
43965 // Warn if there is an existing mnemonic or passphrase.
43966 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43967 if (!confirm("This will clear existing mnemonic and passphrase")) {
43968 DOM.rootKey.val(bip32RootKey);
43969 return
43970 }
43971 }
43972 hideValidationError();
43973 showPending();
43974 // Clear existing mnemonic and passphrase
43975 DOM.phrase.val("");
43976 DOM.passphrase.val("");
43977 seed = null;
43978 if (rootKeyChangedTimeoutEvent != null) {
43979 clearTimeout(rootKeyChangedTimeoutEvent);
43980 }
43981 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43982 }
43983
43984 function rootKeyChanged() {
43985 showPending();
43986 hideValidationError();
43987 // Validate the root key TODO
43988 var rootKeyBase58 = DOM.rootKey.val();
43989 var errorText = validateRootKey(rootKeyBase58);
43990 if (errorText) {
43991 showValidationError(errorText);
43992 return;
43993 }
43994 // Calculate and display
43995 calcBip32RootKeyFromBase58(rootKeyBase58);
43996 calcForDerivationPath();
43997 }
43998
43999 function calcForDerivationPath() {
44000 showPending();
44001 clearAddressesList();
44002 hideValidationError();
44003 // Get the derivation path
44004 var derivationPath = getDerivationPath();
44005 var errorText = findDerivationPathErrors(derivationPath);
44006 if (errorText) {
44007 showValidationError(errorText);
44008 return;
44009 }
44010 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
44011 if (bip44TabSelected()) {
44012 displayBip44Info();
44013 }
44014 displayBip32Info();
44015 hidePending();
44016 }
44017
44018 function generateClicked() {
44019 if (isUsingOwnEntropy()) {
44020 return;
44021 }
44022 clearDisplay();
44023 showPending();
44024 setTimeout(function() {
44025 setMnemonicLanguage();
44026 var phrase = generateRandomPhrase();
44027 if (!phrase) {
44028 return;
44029 }
44030 phraseChanged();
44031 }, 50);
44032 }
44033
44034 function languageChanged() {
44035 setTimeout(function() {
44036 setMnemonicLanguage();
44037 if (DOM.phrase.val().length > 0) {
44038 var newPhrase = convertPhraseToNewLanguage();
44039 DOM.phrase.val(newPhrase);
44040 phraseChanged();
44041 }
44042 else {
44043 DOM.generate.trigger("click");
44044 }
44045 }, 50);
44046 }
44047
44048 function toggleIndexes() {
44049 showIndex = !showIndex;
44050 $("td.index span").toggleClass("invisible");
44051 }
44052
44053 function toggleAddresses() {
44054 showAddress = !showAddress;
44055 $("td.address span").toggleClass("invisible");
44056 }
44057
44058 function togglePublicKeys() {
44059 showPubKey = !showPubKey;
44060 $("td.pubkey span").toggleClass("invisible");
44061 }
44062
44063 function togglePrivateKeys() {
44064 showPrivKey = !showPrivKey;
44065 $("td.privkey span").toggleClass("invisible");
44066 }
44067
44068 // Private methods
44069
44070 function generateRandomPhrase() {
44071 if (!hasStrongRandom()) {
44072 var errorText = "This browser does not support strong randomness";
44073 showValidationError(errorText);
44074 return;
44075 }
44076 var numWords = parseInt(DOM.generatedStrength.val());
44077 var strength = numWords / 3 * 32;
44078 var words = mnemonic.generate(strength);
44079 DOM.phrase.val(words);
44080 return words;
44081 }
44082
44083 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44084 seed = mnemonic.toSeed(phrase, passphrase);
44085 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44086 }
44087
44088 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44089 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44090 }
44091
44092 function calcBip32ExtendedKey(path) {
44093 // Check there's a root key to derive from
44094 if (!bip32RootKey) {
44095 return bip32RootKey;
44096 }
44097 var extendedKey = bip32RootKey;
44098 // Derive the key from the path
44099 var pathBits = path.split("/");
44100 for (var i=0; i<pathBits.length; i++) {
44101 var bit = pathBits[i];
44102 var index = parseInt(bit);
44103 if (isNaN(index)) {
44104 continue;
44105 }
44106 var hardened = bit[bit.length-1] == "'";
44107 var isPriv = "privKey" in extendedKey;
44108 var invalidDerivationPath = hardened && !isPriv;
44109 if (invalidDerivationPath) {
44110 extendedKey = null;
44111 }
44112 else if (hardened) {
44113 extendedKey = extendedKey.deriveHardened(index);
44114 }
44115 else {
44116 extendedKey = extendedKey.derive(index);
44117 }
44118 }
44119 return extendedKey
44120 }
44121
44122 function showValidationError(errorText) {
44123 DOM.feedback
44124 .text(errorText)
44125 .show();
44126 }
44127
44128 function hideValidationError() {
44129 DOM.feedback
44130 .text("")
44131 .hide();
44132 }
44133
44134 function findPhraseErrors(phrase) {
44135 // Preprocess the words
44136 phrase = mnemonic.normalizeString(phrase);
44137 var words = phraseToWordArray(phrase);
44138 // Detect blank phrase
44139 if (words.length == 0) {
44140 return "Blank mnemonic";
44141 }
44142 // Check each word
44143 for (var i=0; i<words.length; i++) {
44144 var word = words[i];
44145 var language = getLanguage();
44146 if (WORDLISTS[language].indexOf(word) == -1) {
44147 console.log("Finding closest match to " + word);
44148 var nearestWord = findNearestWord(word);
44149 return word + " not in wordlist, did you mean " + nearestWord + "?";
44150 }
44151 }
44152 // Check the words are valid
44153 var properPhrase = wordArrayToPhrase(words);
44154 var isValid = mnemonic.check(properPhrase);
44155 if (!isValid) {
44156 return "Invalid mnemonic";
44157 }
44158 return false;
44159 }
44160
44161 function validateRootKey(rootKeyBase58) {
44162 try {
44163 bitcoin.HDNode.fromBase58(rootKeyBase58);
44164 }
44165 catch (e) {
44166 return "Invalid root key";
44167 }
44168 return "";
44169 }
44170
44171 function getDerivationPath() {
44172 if (bip44TabSelected()) {
44173 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44174 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44175 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44176 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44177 var path = "m/";
44178 path += purpose + "'/";
44179 path += coin + "'/";
44180 path += account + "'/";
44181 path += change;
44182 DOM.bip44path.val(path);
44183 var derivationPath = DOM.bip44path.val();
44184 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44185 return derivationPath;
44186 }
44187 else if (bip32TabSelected()) {
44188 var derivationPath = DOM.bip32path.val();
44189 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44190 return derivationPath;
44191 }
44192 else {
44193 console.log("Unknown derivation path");
44194 }
44195 }
44196
44197 function findDerivationPathErrors(path) {
44198 // TODO is not perfect but is better than nothing
44199 // Inspired by
44200 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44201 // and
44202 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44203 var maxDepth = 255; // TODO verify this!!
44204 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44205 if (path[0] != "m") {
44206 return "First character must be 'm'";
44207 }
44208 if (path.length > 1) {
44209 if (path[1] != "/") {
44210 return "Separator must be '/'";
44211 }
44212 var indexes = path.split("/");
44213 if (indexes.length > maxDepth) {
44214 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44215 }
44216 for (var depth = 1; depth<indexes.length; depth++) {
44217 var index = indexes[depth];
44218 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44219 if (invalidChars.length > 0) {
44220 return "Invalid characters " + invalidChars + " found at depth " + depth;
44221 }
44222 var indexValue = parseInt(index.replace("'", ""));
44223 if (isNaN(depth)) {
44224 return "Invalid number at depth " + depth;
44225 }
44226 if (indexValue > maxIndexValue) {
44227 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44228 }
44229 }
44230 }
44231 // Check root key exists or else derivation path is useless!
44232 if (!bip32RootKey) {
44233 return "No root key";
44234 }
44235 // Check no hardened derivation path when using xpub keys
44236 var hardened = path.indexOf("'") > -1;
44237 var isXpubkey = !("privKey" in bip32RootKey);
44238 if (hardened && isXpubkey) {
44239 return "Hardened derivation path is invalid with xpub key";
44240 }
44241 return false;
44242 }
44243
44244 function displayBip44Info() {
44245 // Get the derivation path for the account
44246 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44247 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44248 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44249 var path = "m/";
44250 path += purpose + "'/";
44251 path += coin + "'/";
44252 path += account + "'/";
44253 // Calculate the account extended keys
44254 var accountExtendedKey = calcBip32ExtendedKey(path);
44255 var accountXprv = accountExtendedKey.toBase58();
44256 var accountXpub = accountExtendedKey.toBase58(false);
44257 // Display the extended keys
44258 DOM.bip44accountXprv.val(accountXprv);
44259 DOM.bip44accountXpub.val(accountXpub);
44260 }
44261
44262 function displayBip32Info() {
44263 // Display the key
44264 DOM.seed.val(seed);
44265 var rootKey = bip32RootKey.toBase58();
44266 DOM.rootKey.val(rootKey);
44267 var xprvkeyB58 = "NA";
44268 if (bip32ExtendedKey.privKey) {
44269 xprvkeyB58 = bip32ExtendedKey.toBase58();
44270 }
44271 var extendedPrivKey = xprvkeyB58;
44272 DOM.extendedPrivKey.val(extendedPrivKey);
44273 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44274 DOM.extendedPubKey.val(extendedPubKey);
44275 // Display the addresses and privkeys
44276 clearAddressesList();
44277 displayAddresses(0, 20);
44278 }
44279
44280 function displayAddresses(start, total) {
44281 generationProcesses.push(new (function() {
44282
44283 var rows = [];
44284
44285 this.stop = function() {
44286 for (var i=0; i<rows.length; i++) {
44287 rows[i].shouldGenerate = false;
44288 }
44289 }
44290
44291 for (var i=0; i<total; i++) {
44292 var index = i + start;
44293 rows.push(new TableRow(index));
44294 }
44295
44296 })());
44297 }
44298
44299 function TableRow(index) {
44300
44301 var self = this;
44302 this.shouldGenerate = true;
44303 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44304
44305 function init() {
44306 calculateValues();
44307 }
44308
44309 function calculateValues() {
44310 setTimeout(function() {
44311 if (!self.shouldGenerate) {
44312 return;
44313 }
44314 var key = "";
44315 if (useHardenedAddresses) {
44316 key = bip32ExtendedKey.deriveHardened(index);
44317 }
44318 else {
44319 key = bip32ExtendedKey.derive(index);
44320 }
44321 var address = key.getAddress().toString();
44322 var privkey = "NA";
44323 if (key.privKey) {
44324 privkey = key.privKey.toWIF(network);
44325 }
44326 var pubkey = key.pubKey.toHex();
44327 var indexText = getDerivationPath() + "/" + index;
44328 if (useHardenedAddresses) {
44329 indexText = indexText + "'";
44330 }
44331 // Ethereum values are different
44332 if (networks[DOM.network.val()].name == "Ethereum") {
44333 var privKeyBuffer = key.privKey.d.toBuffer();
44334 privkey = privKeyBuffer.toString('hex');
44335 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
44336 var hexAddress = addressBuffer.toString('hex');
44337 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44338 address = ethUtil.addHexPrefix(checksumAddress);
44339 privkey = ethUtil.addHexPrefix(privkey);
44340 pubkey = ethUtil.addHexPrefix(pubkey);
44341 }
44342 // Ripple values are different
44343 if (networks[DOM.network.val()].name == "Ripple") {
44344 privkey = convertRipplePriv(privkey);
44345 address = convertRippleAdrr(address);
44346 }
44347 addAddressToList(indexText, address, pubkey, privkey);
44348 }, 50)
44349 }
44350
44351 init();
44352
44353 }
44354
44355 function showMore() {
44356 var start = DOM.addresses.children().length;
44357 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44358 if (isNaN(rowsToAdd)) {
44359 rowsToAdd = 20;
44360 DOM.rowsToAdd.val("20");
44361 }
44362 if (rowsToAdd > 200) {
44363 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44364 msg += "Do you want to continue?";
44365 if (!confirm(msg)) {
44366 return;
44367 }
44368 }
44369 displayAddresses(start, rowsToAdd);
44370 }
44371
44372 function clearDisplay() {
44373 clearAddressesList();
44374 clearKey();
44375 hideValidationError();
44376 }
44377
44378 function clearAddressesList() {
44379 DOM.addresses.empty();
44380 stopGenerating();
44381 }
44382
44383 function stopGenerating() {
44384 while (generationProcesses.length > 0) {
44385 var generation = generationProcesses.shift();
44386 generation.stop();
44387 }
44388 }
44389
44390 function clearKey() {
44391 DOM.rootKey.val("");
44392 DOM.extendedPrivKey.val("");
44393 DOM.extendedPubKey.val("");
44394 }
44395
44396 function addAddressToList(indexText, address, pubkey, privkey) {
44397 var row = $(addressRowTemplate.html());
44398 // Elements
44399 var indexCell = row.find(".index span");
44400 var addressCell = row.find(".address span");
44401 var pubkeyCell = row.find(".pubkey span");
44402 var privkeyCell = row.find(".privkey span");
44403 // Content
44404 indexCell.text(indexText);
44405 addressCell.text(address);
44406 pubkeyCell.text(pubkey);
44407 privkeyCell.text(privkey);
44408 // Visibility
44409 if (!showIndex) {
44410 indexCell.addClass("invisible");
44411 }
44412 if (!showAddress) {
44413 addressCell.addClass("invisible");
44414 }
44415 if (!showPubKey) {
44416 pubkeyCell.addClass("invisible");
44417 }
44418 if (!showPrivKey) {
44419 privkeyCell.addClass("invisible");
44420 }
44421 DOM.addresses.append(row);
44422 var rowShowQrEls = row.find("[data-show-qr]");
44423 setQrEvents(rowShowQrEls);
44424 }
44425
44426 function hasStrongRandom() {
44427 return 'crypto' in window && window['crypto'] !== null;
44428 }
44429
44430 function disableForms() {
44431 $("form").on("submit", function(e) {
44432 e.preventDefault();
44433 });
44434 }
44435
44436 function parseIntNoNaN(val, defaultVal) {
44437 var v = parseInt(val);
44438 if (isNaN(v)) {
44439 return defaultVal;
44440 }
44441 return v;
44442 }
44443
44444 function showPending() {
44445 DOM.feedback
44446 .text("Calculating...")
44447 .show();
44448 }
44449
44450 function findNearestWord(word) {
44451 var language = getLanguage();
44452 var words = WORDLISTS[language];
44453 var minDistance = 99;
44454 var closestWord = words[0];
44455 for (var i=0; i<words.length; i++) {
44456 var comparedTo = words[i];
44457 if (comparedTo.indexOf(word) == 0) {
44458 return comparedTo;
44459 }
44460 var distance = Levenshtein.get(word, comparedTo);
44461 if (distance < minDistance) {
44462 closestWord = comparedTo;
44463 minDistance = distance;
44464 }
44465 }
44466 return closestWord;
44467 }
44468
44469 function hidePending() {
44470 DOM.feedback
44471 .text("")
44472 .hide();
44473 }
44474
44475 function populateNetworkSelect() {
44476 for (var i=0; i<networks.length; i++) {
44477 var network = networks[i];
44478 var option = $("<option>");
44479 option.attr("value", i);
44480 option.text(network.name);
44481 DOM.phraseNetwork.append(option);
44482 }
44483 }
44484
44485 function populateClientSelect() {
44486 for (var i=0; i<clients.length; i++) {
44487 var client = clients[i];
44488 var option = $("<option>");
44489 option.attr("value", i);
44490 option.text(client.name);
44491 DOM.bip32Client.append(option);
44492 }
44493 }
44494
44495 function getLanguage() {
44496 var defaultLanguage = "english";
44497 // Try to get from existing phrase
44498 var language = getLanguageFromPhrase();
44499 // Try to get from url if not from phrase
44500 if (language.length == 0) {
44501 language = getLanguageFromUrl();
44502 }
44503 // Default to English if no other option
44504 if (language.length == 0) {
44505 language = defaultLanguage;
44506 }
44507 return language;
44508 }
44509
44510 function getLanguageFromPhrase(phrase) {
44511 // Check if how many words from existing phrase match a language.
44512 var language = "";
44513 if (!phrase) {
44514 phrase = DOM.phrase.val();
44515 }
44516 if (phrase.length > 0) {
44517 var words = phraseToWordArray(phrase);
44518 var languageMatches = {};
44519 for (l in WORDLISTS) {
44520 // Track how many words match in this language
44521 languageMatches[l] = 0;
44522 for (var i=0; i<words.length; i++) {
44523 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44524 if (wordInLanguage) {
44525 languageMatches[l]++;
44526 }
44527 }
44528 // Find languages with most word matches.
44529 // This is made difficult due to commonalities between Chinese
44530 // simplified vs traditional.
44531 var mostMatches = 0;
44532 var mostMatchedLanguages = [];
44533 for (var l in languageMatches) {
44534 var numMatches = languageMatches[l];
44535 if (numMatches > mostMatches) {
44536 mostMatches = numMatches;
44537 mostMatchedLanguages = [l];
44538 }
44539 else if (numMatches == mostMatches) {
44540 mostMatchedLanguages.push(l);
44541 }
44542 }
44543 }
44544 if (mostMatchedLanguages.length > 0) {
44545 // Use first language and warn if multiple detected
44546 language = mostMatchedLanguages[0];
44547 if (mostMatchedLanguages.length > 1) {
44548 console.warn("Multiple possible languages");
44549 console.warn(mostMatchedLanguages);
44550 }
44551 }
44552 }
44553 return language;
44554 }
44555
44556 function getLanguageFromUrl() {
44557 for (var language in WORDLISTS) {
44558 if (window.location.hash.indexOf(language) > -1) {
44559 return language;
44560 }
44561 }
44562 return "";
44563 }
44564
44565 function setMnemonicLanguage() {
44566 var language = getLanguage();
44567 // Load the bip39 mnemonic generator for this language if required
44568 if (!(language in mnemonics)) {
44569 mnemonics[language] = new Mnemonic(language);
44570 }
44571 mnemonic = mnemonics[language];
44572 }
44573
44574 function convertPhraseToNewLanguage() {
44575 var oldLanguage = getLanguageFromPhrase();
44576 var newLanguage = getLanguageFromUrl();
44577 var oldPhrase = DOM.phrase.val();
44578 var oldWords = phraseToWordArray(oldPhrase);
44579 var newWords = [];
44580 for (var i=0; i<oldWords.length; i++) {
44581 var oldWord = oldWords[i];
44582 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44583 var newWord = WORDLISTS[newLanguage][index];
44584 newWords.push(newWord);
44585 }
44586 newPhrase = wordArrayToPhrase(newWords);
44587 return newPhrase;
44588 }
44589
44590 // TODO look at jsbip39 - mnemonic.splitWords
44591 function phraseToWordArray(phrase) {
44592 var words = phrase.split(/\s/g);
44593 var noBlanks = [];
44594 for (var i=0; i<words.length; i++) {
44595 var word = words[i];
44596 if (word.length > 0) {
44597 noBlanks.push(word);
44598 }
44599 }
44600 return noBlanks;
44601 }
44602
44603 // TODO look at jsbip39 - mnemonic.joinWords
44604 function wordArrayToPhrase(words) {
44605 var phrase = words.join(" ");
44606 var language = getLanguageFromPhrase(phrase);
44607 if (language == "japanese") {
44608 phrase = words.join("\u3000");
44609 }
44610 return phrase;
44611 }
44612
44613 function isUsingOwnEntropy() {
44614 return DOM.useEntropy.prop("checked");
44615 }
44616
44617 function setMnemonicFromEntropy() {
44618 clearEntropyFeedback();
44619 // Get entropy value
44620 var entropyStr = DOM.entropy.val();
44621 // Work out minimum base for entropy
44622 var entropy = Entropy.fromString(entropyStr);
44623 if (entropy.binaryStr.length == 0) {
44624 return;
44625 }
44626 // Show entropy details
44627 showEntropyFeedback(entropy);
44628 // Use entropy hash if not using raw entropy
44629 var bits = entropy.binaryStr;
44630 var mnemonicLength = DOM.entropyMnemonicLength.val();
44631 if (mnemonicLength != "raw") {
44632 // Get bits by hashing entropy with SHA256
44633 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44634 var hex = sjcl.codec.hex.fromBits(hash);
44635 bits = BigInteger.parse(hex, 16).toString(2);
44636 while (bits.length % 256 != 0) {
44637 bits = "0" + bits;
44638 }
44639 // Truncate hash to suit number of words
44640 mnemonicLength = parseInt(mnemonicLength);
44641 var numberOfBits = 32 * mnemonicLength / 3;
44642 bits = bits.substring(0, numberOfBits);
44643 }
44644 // Discard trailing entropy
44645 var bitsToUse = Math.floor(bits.length / 32) * 32;
44646 var start = bits.length - bitsToUse;
44647 var binaryStr = bits.substring(start);
44648 // Convert entropy string to numeric array
44649 var entropyArr = [];
44650 for (var i=0; i<binaryStr.length / 8; i++) {
44651 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44652 var entropyByte = parseInt(byteAsBits, 2);
44653 entropyArr.push(entropyByte)
44654 }
44655 // Convert entropy array to mnemonic
44656 var phrase = mnemonic.toMnemonic(entropyArr);
44657 // Set the mnemonic in the UI
44658 DOM.phrase.val(phrase);
44659 }
44660
44661 function clearEntropyFeedback() {
44662 DOM.entropyCrackTime.text("...");
44663 DOM.entropyType.text("");
44664 DOM.entropyWordCount.text("0");
44665 DOM.entropyEventCount.text("0");
44666 DOM.entropyBitsPerEvent.text("0");
44667 DOM.entropyBits.text("0");
44668 DOM.entropyFiltered.html("&nbsp;");
44669 DOM.entropyBinary.html("&nbsp;");
44670 }
44671
44672 function showEntropyFeedback(entropy) {
44673 var numberOfBits = entropy.binaryStr.length;
44674 var timeToCrack = "unknown";
44675 try {
44676 var z = zxcvbn(entropy.base.parts.join(""));
44677 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
44678 if (z.feedback.warning != "") {
44679 timeToCrack = timeToCrack + " - " + z.feedback.warning;
44680 };
44681 }
44682 catch (e) {
44683 console.log("Error detecting entropy strength with zxcvbn:");
44684 console.log(e);
44685 }
44686 var entropyTypeStr = getEntropyTypeStr(entropy);
44687 var wordCount = Math.floor(numberOfBits / 32) * 3;
44688 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
44689 DOM.entropyFiltered.html(entropy.cleanHtml);
44690 DOM.entropyType.text(entropyTypeStr);
44691 DOM.entropyCrackTime.text(timeToCrack);
44692 DOM.entropyEventCount.text(entropy.base.ints.length);
44693 DOM.entropyBits.text(numberOfBits);
44694 DOM.entropyWordCount.text(wordCount);
44695 DOM.entropyBinary.text(entropy.binaryStr);
44696 DOM.entropyBitsPerEvent.text(bitsPerEvent);
44697 }
44698
44699 function getEntropyTypeStr(entropy) {
44700 var typeStr = entropy.base.str;
44701 // Add some detail if these are cards
44702 if (entropy.base.asInt == 52) {
44703 var cardDetail = []; // array of message strings
44704 // Detect duplicates
44705 var dupes = [];
44706 var dupeTracker = {};
44707 for (var i=0; i<entropy.base.parts.length; i++) {
44708 var card = entropy.base.parts[i];
44709 var cardUpper = card.toUpperCase();
44710 if (cardUpper in dupeTracker) {
44711 dupes.push(card);
44712 }
44713 dupeTracker[cardUpper] = true;
44714 }
44715 if (dupes.length > 0) {
44716 var dupeWord = "duplicates";
44717 if (dupes.length == 1) {
44718 dupeWord = "duplicate";
44719 }
44720 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44721 if (dupes.length > 3) {
44722 msg += "...";
44723 }
44724 cardDetail.push(msg);
44725 }
44726 // Detect full deck
44727 var uniqueCards = [];
44728 for (var uniqueCard in dupeTracker) {
44729 uniqueCards.push(uniqueCard);
44730 }
44731 if (uniqueCards.length == 52) {
44732 cardDetail.unshift("full deck");
44733 }
44734 // Detect missing cards
44735 var values = "A23456789TJQK";
44736 var suits = "CDHS";
44737 var missingCards = [];
44738 for (var i=0; i<suits.length; i++) {
44739 for (var j=0; j<values.length; j++) {
44740 var card = values[j] + suits[i];
44741 if (!(card in dupeTracker)) {
44742 missingCards.push(card);
44743 }
44744 }
44745 }
44746 // Display missing cards if six or less, ie clearly going for full deck
44747 if (missingCards.length > 0 && missingCards.length <= 6) {
44748 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44749 if (missingCards.length > 3) {
44750 msg += "...";
44751 }
44752 cardDetail.push(msg);
44753 }
44754 // Add card details to typeStr
44755 if (cardDetail.length > 0) {
44756 typeStr += " (" + cardDetail.join(", ") + ")";
44757 }
44758 }
44759 return typeStr;
44760 }
44761
44762 function setQrEvents(els) {
44763 els.on("mouseenter", createQr);
44764 els.on("mouseleave", destroyQr);
44765 els.on("click", toggleQr);
44766 }
44767
44768 function createQr(e) {
44769 var content = e.target.textContent || e.target.value;
44770 if (content) {
44771 var size = 130;
44772 DOM.qrImage.qrcode({width: size, height: size, text: content});
44773 if (!showQr) {
44774 DOM.qrHider.addClass("hidden");
44775 }
44776 else {
44777 DOM.qrHider.removeClass("hidden");
44778 }
44779 DOM.qrContainer.removeClass("hidden");
44780 }
44781 }
44782
44783 function destroyQr() {
44784 DOM.qrImage.text("");
44785 DOM.qrContainer.addClass("hidden");
44786 }
44787
44788 function toggleQr() {
44789 showQr = !showQr;
44790 DOM.qrHider.toggleClass("hidden");
44791 DOM.qrHint.toggleClass("hidden");
44792 }
44793
44794 function bip44TabSelected() {
44795 return DOM.bip44tab.hasClass("active");
44796 }
44797
44798 function bip32TabSelected() {
44799 return DOM.bip32tab.hasClass("active");
44800 }
44801
44802 var networks = [
44803 {
44804 name: "Bitcoin",
44805 onSelect: function() {
44806 network = bitcoin.networks.bitcoin;
44807 DOM.bip44coin.val(0);
44808 },
44809 },
44810 {
44811 name: "Bitcoin Testnet",
44812 onSelect: function() {
44813 network = bitcoin.networks.testnet;
44814 DOM.bip44coin.val(1);
44815 },
44816 },
44817 {
44818 name: "CLAM",
44819 onSelect: function() {
44820 network = bitcoin.networks.clam;
44821 DOM.bip44coin.val(23);
44822 },
44823 },
44824 {
44825 name: "CRW - Crown",
44826 onSelect: function() {
44827 network = bitcoin.networks.crown;
44828 DOM.bip44coin.val(72);
44829 },
44830 },
44831 {
44832 name: "Dogecoin",
44833 onSelect: function() {
44834 network = bitcoin.networks.dogecoin;
44835 DOM.bip44coin.val(3);
44836 },
44837 },
44838 {
44839 name: "DASH",
44840 onSelect: function() {
44841 network = bitcoin.networks.dash;
44842 DOM.bip44coin.val(5);
44843 },
44844 },
44845 {
44846 name: "DASH Testnet",
44847 onSelect: function() {
44848 network = bitcoin.networks.dashtn;
44849 DOM.bip44coin.val(1);
44850 },
44851 },
44852 {
44853 name: "Ethereum",
44854 onSelect: function() {
44855 network = bitcoin.networks.bitcoin;
44856 DOM.bip44coin.val(60);
44857 },
44858 },
44859 {
44860 name: "GAME",
44861 onSelect: function() {
44862 network = bitcoin.networks.game;
44863 DOM.bip44coin.val(101);
44864 },
44865 },
44866 {
44867 name: "Jumbucks",
44868 onSelect: function() {
44869 network = bitcoin.networks.jumbucks;
44870 DOM.bip44coin.val(26);
44871 },
44872 },
44873 {
44874 name: "Litecoin",
44875 onSelect: function() {
44876 network = bitcoin.networks.litecoin;
44877 DOM.bip44coin.val(2);
44878 },
44879 },
44880 {
44881 name: "Namecoin",
44882 onSelect: function() {
44883 network = bitcoin.networks.namecoin;
44884 DOM.bip44coin.val(7);
44885 },
44886 },
44887 {
44888 name: "Peercoin",
44889 onSelect: function() {
44890 network = bitcoin.networks.peercoin;
44891 DOM.bip44coin.val(6);
44892 },
44893 },
44894 {
44895 name: "Ripple",
44896 onSelect: function() {
44897 network = bitcoin.networks.bitcoin;
44898 DOM.bip44coin.val(144);
44899 },
44900 },
44901 {
44902 name: "ShadowCash",
44903 onSelect: function() {
44904 network = bitcoin.networks.shadow;
44905 DOM.bip44coin.val(35);
44906 },
44907 },
44908 {
44909 name: "ShadowCash Testnet",
44910 onSelect: function() {
44911 network = bitcoin.networks.shadowtn;
44912 DOM.bip44coin.val(1);
44913 },
44914 },
44915 {
44916 name: "Slimcoin",
44917 onSelect: function() {
44918 network = bitcoin.networks.slimcoin;
44919 DOM.bip44coin.val(63);
44920 },
44921 },
44922 {
44923 name: "Slimcoin Testnet",
44924 onSelect: function() {
44925 network = bitcoin.networks.slimcointn;
44926 DOM.bip44coin.val(111);
44927 },
44928 },
44929 {
44930 name: "Viacoin",
44931 onSelect: function() {
44932 network = bitcoin.networks.viacoin;
44933 DOM.bip44coin.val(14);
44934 },
44935 },
44936 {
44937 name: "Viacoin Testnet",
44938 onSelect: function() {
44939 network = bitcoin.networks.viacointestnet;
44940 DOM.bip44coin.val(1);
44941 },
44942 },
44943 ]
44944
44945 var clients = [
44946 {
44947 name: "Bitcoin Core",
44948 onSelect: function() {
44949 DOM.bip32path.val("m/0'/0'");
44950 DOM.hardenedAddresses.prop('checked', true);
44951 },
44952 },
44953 {
44954 name: "blockchain.info",
44955 onSelect: function() {
44956 DOM.bip32path.val("m/44'/0'/0'");
44957 DOM.hardenedAddresses.prop('checked', false);
44958 },
44959 },
44960 {
44961 name: "MultiBit HD",
44962 onSelect: function() {
44963 DOM.bip32path.val("m/0'/0");
44964 DOM.hardenedAddresses.prop('checked', false);
44965 },
44966 }
44967 ]
44968
44969 init();
44970
44971 })();
44972 </script>
44973 </body>
44974 </html>