]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
compiled ripple version
[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 </style>
111 </head>
112 <body>
113 <div class="container">
114
115 <h1 class="text-center">Mnemonic Code Converter</h1>
116 <hr>
117 <div class="row">
118 <div class="col-md-12">
119 <h2>Mnemonic</h2>
120 <form class="form-horizontal" role="form">
121 <div class="form-group">
122 <div class="col-sm-2"></div>
123 <div class="col-sm-10">
124 <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>
125 <p data-translate-html>
126 For more info see the
127 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
128 </p>
129 </div>
130 </div>
131 <div class="form-group generate-container">
132 <label class="col-sm-2 control-label"></label>
133 <div class="col-sm-10">
134 <div class="form-inline">
135 <div class="input-group-inline">
136 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
137 <button class="btn generate">Generate</button>
138 <select id="strength" class="strength form-control">
139 <option value="3">3</option>
140 <option value="6">6</option>
141 <option value="9">9</option>
142 <option value="12">12</option>
143 <option value="15" selected>15</option>
144 <option value="18">18</option>
145 <option value="21">21</option>
146 <option value="24">24</option>
147 </select>
148 <span data-translate>words</span>
149 </div>
150 </div>
151 </div>
152 </div>
153 <div class="entropy-container hidden">
154 <div class="form-group text-danger">
155 <label class="col-sm-2 control-label" data-translate>Warning</label>
156 <div class="col-sm-10 form-control-static">
157 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
158 <a href="#entropy-notes" data-translate>Read more</a>
159 </div>
160 </div>
161 <div class="form-group">
162 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
163 <div class="col-sm-7">
164 <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>
165 <div class="row">
166 <label class="col-sm-3 control-label" data-translate>Strength</label>
167 <div class="strength col-sm-3 form-control-static"></div>
168 <label class="col-sm-3 control-label" data-translate>Event Count</label>
169 <div class="event-count col-sm-3 form-control-static"></div>
170 </div>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
173 <div class="type col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
175 <div class="bits-per-event col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Word Count</label>
179 <div class="word-count col-sm-3 form-control-static"></div>
180 <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>
181 <div class="bits col-sm-3 form-control-static"></div>
182 </div>
183 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
184 <div class="filtered col-sm-9 form-control-static"></div>
185 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
186 <div class="binary col-sm-9 form-control-static"></div>
187 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
188 <div class="col-sm-9">
189 <select class="mnemonic-length form-control">
190 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
191 <option value="12">12 <span data-translate>Words</span></option>
192 <option value="15">15 <span data-translate>Words</option>
193 <option value="18">18 <span data-translate>Words</span></option>
194 <option value="21">21 <span data-translate>Words</span></option>
195 <option value="24">24 <span data-translate>Words</span></option>
196 </select>
197 </div>
198 </div>
199 <div class="col-sm-3">
200 <p data-translate>Valid entropy values include:</p>
201 <ul>
202 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
203 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
204 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
205 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
206 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
207 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
208 </ul>
209 </div>
210 </div>
211 </div>
212 <div class="form-group">
213 <div class="col-sm-2"></div>
214 <div class="col-sm-10 checkbox">
215 <label>
216 <input type="checkbox" class="use-entropy">
217 <span data-translate>Supply my own source of entropy</span>
218 </label>
219 </div>
220 </div>
221 <div class="form-group">
222 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
223 <div class="col-sm-10 languages">
224 <div class="form-control no-border">
225 <a href="#english">English</a>
226 <a href="#japanese" title="Japanese">日本語</a>
227 <a href="#spanish" title="Spanish">Español</a>
228 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
229 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
230 <a href="#french" title="French">Français</a>
231 <a href="#italian" title="Italian">Italiano</a>
232 </div>
233 </div>
234 </div>
235 <div class="form-group">
236 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
237 <div class="col-sm-10">
238 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
243 <div class="col-sm-10">
244 <textarea id="passphrase" class="passphrase form-control"></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
249 <div class="col-sm-10">
250 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
255 <div class="col-sm-10">
256 <select id="network-phrase" class="network form-control">
257 <!-- populated by javascript -->
258 </select>
259 </div>
260 </div>
261 <div class="form-group">
262 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
263 <div class="col-sm-10">
264 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
265 </div>
266 </div>
267 </form>
268 </div>
269 </div>
270
271 <hr>
272
273 <div class="row">
274 <div class="col-md-12">
275 <h2>Derivation Path</h2>
276 <ul class="derivation-type nav nav-tabs" role="tablist">
277 <li id="bip44-tab" class="active">
278 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
279 </li>
280 <li id="bip32-tab">
281 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
282 </li>
283 </ul>
284 <div class="derivation-type tab-content">
285 <div id="bip44" class="tab-pane active">
286 <form class="form-horizontal" role="form">
287 <br>
288 <div class="col-sm-2"></div>
289 <div class="col-sm-10">
290 <p data-translate-html>
291 For more info see the
292 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
293 </p>
294 </div>
295 <div class="form-group">
296 <label for="purpose" class="col-sm-2 control-label">
297 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
298 </label>
299 <div class="col-sm-10">
300 <input id="purpose" type="text" class="purpose form-control" value="44">
301 </div>
302 </div>
303 <div class="form-group">
304 <label for="coin" class="col-sm-2 control-label">
305 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
306 </label>
307 <div class="col-sm-10">
308 <input id="coin" type="text" class="coin form-control" value="0">
309 </div>
310 </div>
311 <div class="form-group">
312 <label for="account" class="col-sm-2 control-label">
313 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
314 </label>
315 <div class="col-sm-10">
316 <input id="account" type="text" class="account form-control" value="0">
317 </div>
318 </div>
319 <div class="form-group">
320 <label for="change" class="col-sm-2 control-label">
321 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
322 </label>
323 <div class="col-sm-10">
324 <input id="change" type="text" class="change form-control" value="0">
325 </div>
326 </div>
327 <div class="form-group">
328 <label class="col-sm-2 control-label">
329 </label>
330 <div class="col-sm-10">
331 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
332 </div>
333 </div>
334 <div class="form-group">
335 <label for="account-xprv" class="col-sm-2 control-label">
336 <span data-translate>Account Extended Private Key</span>
337 </label>
338 <div class="col-sm-10">
339 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
340 </div>
341 </div>
342 <div class="form-group">
343 <label for="account-xpub" class="col-sm-2 control-label">
344 <span data-translate>Account Extended Public Key</span>
345 </label>
346 <div class="col-sm-10">
347 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
348 </div>
349 </div>
350 <div class="form-group">
351 <label class="col-sm-2 control-label">
352 </label>
353 <div class="col-sm-10">
354 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
355 </div>
356 </div>
357 <div class="form-group">
358 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
359 <div class="col-sm-10">
360 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
361 </div>
362 </div>
363 </form>
364 </div>
365 <div id="bip32" class="tab-pane">
366 <form class="form-horizontal" role="form">
367 <br>
368 <div class="col-sm-2"></div>
369 <div class="col-sm-10">
370 <p data-translate>
371 For more info see the
372 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
373 </p>
374 </div>
375 <div class="form-group">
376 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
377 <div class="col-sm-10">
378 <select id="bip32-client" class="client form-control">
379 <option value="custom">Custom derivation path</option>
380 <!-- populated by javascript -->
381 </select>
382 </div>
383 </div>
384 <div class="form-group">
385 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
386 <div class="col-sm-10">
387 <input id="bip32-path" type="text" class="path form-control" value="m/0">
388 </div>
389 </div>
390 <div class="form-group">
391 <div class="col-sm-2"></div>
392 <label class="col-sm-10">
393 <input class="hardened-addresses" type="checkbox">
394 <span data-translate>Use hardened addresses</span>
395 </label>
396 </div>
397 <div class="form-group">
398 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
399 <div class="col-sm-10">
400 <p class="form-control no-border" data-translate-html>
401 Use path <code>m/0'/0'</code> with hardened addresses.
402 </p>
403 <p class="form-control no-border" data-translate-html>
404 For more info see the
405 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
406 </p>
407 </div>
408 </div>
409 <div class="form-group">
410 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
411 <div class="col-sm-10">
412 <p class="form-control no-border">
413 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
414 </p>
415 <p class="form-control no-border">
416 <span data-translate>For more info see</span>
417 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
418 </p>
419 </div>
420 </div>
421 <div class="form-group">
422 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
423 <div class="col-sm-10">
424 <p class="form-control no-border">
425 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
426 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
427 </p>
428 <p class="form-control no-border">
429 <span data-translate>Can be used with</span>:
430 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
431 </p>
432 </div>
433 </div>
434 </form>
435 </div>
436 </div>
437 <form class="form-horizontal" role="form">
438 <div class="form-group">
439 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
440 <div class="col-sm-10">
441 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
442 </div>
443 </div>
444 <div class="form-group">
445 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
446 <div class="col-sm-10">
447 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
448 </div>
449 </div>
450 </form>
451 </div>
452 </div>
453
454 <hr>
455
456 <div class="row">
457 <div class="col-md-12">
458 <h2>Derived Addresses</h2>
459 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
460 <table class="table table-striped">
461 <thead>
462 <th>
463 <div class="input-group">
464 <span data-translate>Path</span>&nbsp;&nbsp;
465 <button class="index-toggle" data-translate>Toggle</button>
466 </div>
467 </th>
468 <th>
469 <div class="input-group">
470 <span data-translate>Address</span>&nbsp;&nbsp;
471 <button class="address-toggle" data-translate>Toggle</button>
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
476 <span data-translate>Public Key</span>&nbsp;&nbsp;
477 <button class="public-key-toggle" data-translate>Toggle</button>
478 </div>
479 </th>
480 <th>
481 <div class="input-group">
482 <span data-translate>Private Key</span>&nbsp;&nbsp;
483 <button class="private-key-toggle" data-translate>Toggle</button>
484 </div>
485 </th>
486 </thead>
487 <tbody class="addresses monospace">
488 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
489 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
490 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
491 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
492 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
493 </tbody>
494 </table>
495 </div>
496 </div>
497 <span data-translate>Show more rows</span>:
498 <input type="number" class="rows-to-add" value="20">
499 <button class="more" data-translate>Show</button>
500
501 <hr>
502
503 <div class="row">
504 <div class="col-md-12">
505 <h2 data-translate>More info</h2>
506 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
507 <p data-translate-html>
508 Read more at the
509 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
510 </p>
511 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
512 <p data-translate-html>
513 Read more at the
514 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
515 </p>
516 <p data-translate-html>
517 See the demo at
518 <a href="http://bip32.org/" target="_blank">bip32.org</a>
519 </p>
520 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
521 <p data-translate-html>
522 Read more at the
523 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
524 </p>
525 <h3 data-translate>Private Keys</h3>
526 <p>
527 <span data-translate-html>
528 Use private keys at
529 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
530 </span>
531 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
532 </p>
533 <h3 id="entropy-notes" data-translate>Entropy</h3>
534 <p>
535 <span data-translate-html>
536 Entropy values must be sourced from a
537 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
538 </span>
539 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
540 <span data-translate-html>
541 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
542 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
543 random enough for the needs of this tool.
544 </span>
545 </p>
546 <p>
547 <strong><span data-translate>Do not store entropy.</span></strong>
548 </p>
549 <p>
550 <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>
551 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
552 <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>
553 </p>
554 <p>
555 <span data-translate-html>
556 The random mnemonic generator on this page uses a
557 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
558 </span>
559 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
560 <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>
561 <span data-translate>In that case you might choose to use your own source of entropy.</span>
562 </p>
563 <p>
564 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
565 </p>
566 <h3 data-translate>License</h3>
567 <p>
568 <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.
569 </span>
570 </p>
571 <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>
572 </div>
573 </div>
574
575 <hr>
576
577 <div class="row">
578 <div class="col-md-12">
579
580 <h2 data-translate>Offline Usage</h2>
581
582 <p data-translate>
583 You can use this tool without having to be online.
584 </p>
585 <p data-translate>
586 In your browser, select file save-as, and save this page
587 as a file.
588 </p>
589 <p data-translate>
590 Double-click that file to open it in a browser
591 on any offline computer.
592 </p>
593 <p>
594 <span data-translate>Alternatively, download the file from the repository</span>
595 -
596 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
597 </p>
598
599 </div>
600 </div>
601
602 <hr>
603
604 <div class="row">
605 <div class="col-md-12">
606
607 <h2 data-translate>This project is 100% open-source code</h2>
608
609 <p>
610 <span data-translate>Get the source code from the repository</span>
611 -
612 <a href="https://github.com/iancoleman/bip39" target="_blank">
613 https://github.com/iancoleman/bip39
614 </a>
615 </p>
616
617 <h3 data-translate>Libraries</h3>
618
619 <p>
620 <span>BitcoinJS - </span>
621 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
622 https://github.com/bitcoinjs/bitcoinjs-lib
623 </a>
624 </p>
625
626 <p>
627 <span>jsBIP39 - </span>
628 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
629 https://github.com/iancoleman/jsbip39
630 </a>
631 </p>
632
633 <p>
634 <span>sjcl - </span>
635 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
636 https://github.com/bitwiseshiftleft/sjcl
637 </a>
638 </p>
639
640 <p>
641 <span>jQuery - </span>
642 <a href="https://jquery.com/" target="_blank">
643 https://jquery.com/
644 </a>
645 </p>
646
647 <p>
648 <span>Twitter Bootstrap - </span>
649 <a href="http://getbootstrap.com/" target="_blank">
650 http://getbootstrap.com/
651 </a>
652 </p>
653
654 </div>
655 </div>
656
657 </div>
658
659 <div class="qr-container hidden">
660 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
661 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
662 <div class="qr-hider hidden">
663 <div class="qr-image"></div>
664 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
665 </div>
666 </div>
667
668 <div class="feedback-container">
669 <div class="feedback">Loading...</div>
670 </div>
671
672 <script type="text/template" id="address-row-template">
673 <tr>
674 <td class="index"><span></span></td>
675 <td class="address"><span data-show-qr></span></td>
676 <td class="pubkey"><span data-show-qr></span></td>
677 <td class="privkey"><span data-show-qr></span></td>
678 </tr>
679 </script>
680 <script>// From
681 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
682 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
683 // but is not required in any modern browsers.
684 // For more information, see
685 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
686
687 //----------------------------------------------------------------------
688 //
689 // ECMAScript 2015 Polyfills
690 //
691 //----------------------------------------------------------------------
692
693 (function (global) {
694 "use strict";
695
696 // Set this to always override native implementations, for testing
697 // the polyfill in browsers with partial/full ES2015 support.
698 var OVERRIDE_NATIVE_FOR_TESTING = false;
699
700 var undefined = (void 0); // Paranoia
701
702 // Helpers
703
704 function strict(o) {
705 return o === global ? undefined : o;
706 }
707
708 function hook(o, p, f) {
709 var op = o[p];
710 console.assert(typeof op === 'function', 'Hooking a non-function');
711 o[p] = function() {
712 var o = strict(this);
713 var r = f.apply(o, arguments);
714 return r !== undefined ? r : op.apply(o, arguments);
715 };
716 }
717
718 function isSymbol(s) {
719 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
720 }
721
722 function getPropertyDescriptor(target, name) {
723 var desc = Object.getOwnPropertyDescriptor(target, name);
724 var proto = Object.getPrototypeOf(target);
725 while (!desc && proto) {
726 desc = Object.getOwnPropertyDescriptor(proto, name);
727 proto = Object.getPrototypeOf(proto);
728 }
729 return desc;
730 }
731
732 var enqueue = (function(nativePromise, nativeSetImmediate) {
733 if (nativePromise)
734 return function(job) { nativePromise.resolve().then(function() { job(); }); };
735 if (nativeSetImmediate)
736 return function(job) { nativeSetImmediate(job); };
737 return function(job) { setTimeout(job, 0); };
738 }(global['Promise'], global['setImmediate']));
739
740 function define(o, p, v, override) {
741 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
742 return;
743
744 if (typeof v === 'function') {
745 // Sanity check that functions are appropriately named (where possible)
746 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
747 Object.defineProperty(o, p, {
748 value: v,
749 configurable: true,
750 enumerable: false,
751 writable: true
752 });
753 } else {
754 Object.defineProperty(o, p, {
755 value: v,
756 configurable: false,
757 enumerable: false,
758 writable: false
759 });
760 }
761 }
762
763 function set_internal(o, p, v) {
764 Object.defineProperty(o, p, {
765 value: v,
766 configurable: false,
767 enumerable: false,
768 writable: true
769 });
770 }
771
772 // Snapshot intrinsic functions
773 var $isNaN = global.isNaN,
774 $parseInt = global.parseInt,
775 $parseFloat = global.parseFloat;
776
777 var E = Math.E,
778 LOG10E = Math.LOG10E,
779 LOG2E = Math.LOG2E,
780 abs = Math.abs,
781 ceil = Math.ceil,
782 exp = Math.exp,
783 floor = Math.floor,
784 log = Math.log,
785 max = Math.max,
786 min = Math.min,
787 pow = Math.pow,
788 random = Math.random,
789 sqrt = Math.sqrt;
790
791 var orig_match = String.prototype.match,
792 orig_replace = String.prototype.replace,
793 orig_search = String.prototype.search,
794 orig_split = String.prototype.split;
795
796 // These are used for implementing the polyfills, but not exported.
797
798 // Inspired by https://gist.github.com/1638059
799 /** @constructor */
800 function EphemeronTable() {
801 var secretKey = ObjectCreate(null);
802
803 function conceal(o) {
804 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
805 Object.defineProperty(o, 'valueOf', {
806 value: (function(secretKey) {
807 return function (k) {
808 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
809 };
810 }(secretKey)),
811 configurable: true,
812 writeable: true,
813 enumerable: false
814 });
815 return secrets;
816 }
817
818 function reveal(o) {
819 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
820 return v === o ? null : v;
821 }
822
823 return {
824 clear: function() {
825 secretKey = ObjectCreate(null);
826 },
827 remove: function(key) {
828 var secrets = reveal(key);
829 if (secrets && HasOwnProperty(secrets, 'value')) {
830 delete secrets.value;
831 return true;
832 }
833 return false;
834 },
835 get: function(key, defaultValue) {
836 var secrets = reveal(key);
837 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
838 },
839 has: function(key) {
840 var secrets = reveal(key);
841 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
842 },
843 set: function(key, value) {
844 var secrets = reveal(key) || conceal(key);
845 secrets.value = value;
846 }
847 };
848 }
849
850 var empty = Object.create(null);
851
852 //----------------------------------------------------------------------
853 //
854 // ECMAScript 2015
855 // http://www.ecma-international.org/ecma-262/6.0/
856 //
857 //----------------------------------------------------------------------
858
859 // ---------------------------------------
860 // 19.4 Symbol Objects
861 // ---------------------------------------
862
863 // NOTE: Symbols are defined here - out of spec order - since we need the
864 // properties and prototype to be populated for other polyfills.
865
866 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
867
868 var symbolForKey;
869 (function() {
870 var secret = Object.create(null);
871 var symbolMap = {};
872 symbolForKey = function(k) {
873 return symbolMap[k];
874 };
875
876 var GlobalSymbolRegistry = [];
877
878 function unique(bits) {
879 return Array(bits + 1).join('x').replace(/x/g, function() {
880 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
881 });
882 }
883
884 // 19.4.1 The Symbol Constructor
885 // 19.4.1.1 Symbol ( description=undefined )
886 function Symbol(description) {
887 if (!(this instanceof Symbol)) return new Symbol(description, secret);
888 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
889
890 var descString = description === undefined ? undefined : String(description);
891
892 set_internal(this, '[[SymbolData]]', unique(128));
893 set_internal(this, '[[Description]]', descString);
894
895 symbolMap[this] = this;
896 return this;
897 }
898
899 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
900 global.Symbol = Symbol;
901
902 // 19.4.2 Properties of the Symbol Constructor
903
904 // 19.4.2.1 Symbol.for (key)
905 define(Symbol, 'for', function for_(key) {
906 var stringKey = String(key);
907 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
908 var e = GlobalSymbolRegistry[i];
909 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
910 }
911 var newSymbol = Symbol(key);
912 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
913 return newSymbol;
914 });
915
916 // 19.4.2.2 Symbol.hasInstance
917 // 19.4.2.3 Symbol.isConcatSpreadable
918
919 // 19.4.2.4 Symbol.iterator
920 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
921
922 // 19.4.2.5 Symbol.keyFor (sym)
923 define(Symbol, 'keyFor', function keyFor(sym) {
924 if (!(sym instanceof Symbol)) throw TypeError();
925 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
926 var e = GlobalSymbolRegistry[i];
927 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
928 }
929 return undefined;
930 });
931
932 // 19.4.2.6 Symbol.match
933 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
934
935 // 19.4.2.7 Symbol.prototype
936
937 // 19.4.2.8 Symbol.replace
938 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
939
940 // 19.4.2.9 Symbol.search
941 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
942
943 // 19.4.2.10 Symbol.species
944
945 // 19.4.2.11 Symbol.search
946 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
947
948 // 19.4.2.12 Symbol.toPrimitive
949
950 // 19.4.2.13 Symbol.toStringTag
951 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
952
953 // 19.4.2.14 Symbol.unscopables
954
955 // 19.4.3 Properties of the Symbol Prototype Object
956 // 19.4.3.1 Symbol.prototype.constructor
957
958 // 19.4.3.2 Symbol.prototype.toString ( )
959 Object.defineProperty(Symbol.prototype, 'toString', {
960 value: function toString() {
961 var s = strict(this);
962 var desc = s['[[Description]]'];
963 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
964 },
965 configurable: true, writeable: true, enumerable: false });
966
967 // 19.4.3.3 Symbol.prototype.valueOf ( )
968 Object.defineProperty(Symbol.prototype, 'valueOf', {
969 value: function valueOf() {
970 // To prevent automatic string conversion:
971 throw TypeError();
972
973 // Spec has approximately the following:
974 //var s = strict(this);
975 //if (Type(s) === 'symbol') return s;
976 //if (Type(s) !== 'object') throw TypeError();
977 //if (!('[[SymbolData]]' in s)) throw TypeError();
978 //return s['[[SymbolData]]'];
979 },
980 configurable: true, writeable: true, enumerable: false });
981
982 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
983 // (Done later to polyfill partial implementations)
984
985 // 19.4.4 Properties of Symbol Instances
986 }());
987
988 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
989
990 // Defined here so that other prototypes can reference it
991 // 25.1.2 The %IteratorPrototype% Object
992 var $IteratorPrototype$ = {};
993
994 //----------------------------------------
995 // 6 ECMAScript Data Types and Values
996 //----------------------------------------
997
998 // 6.1 ECMAScript Language Types
999
1000 // "Type(x)" is used as shorthand for "the type of x"...
1001 function Type(v) {
1002 switch (typeof v) {
1003 case 'undefined': return 'undefined';
1004 case 'boolean': return 'boolean';
1005 case 'number': return 'number';
1006 case 'string': return 'string';
1007 case 'symbol': return 'symbol';
1008 default:
1009 if (v === null) return 'null';
1010 if (v instanceof global.Symbol) return 'symbol';
1011 return 'object';
1012 }
1013 }
1014
1015 // 6.1.5.1 Well-Known Symbols
1016 var $$iterator = global.Symbol.iterator,
1017 $$match = global.Symbol.match,
1018 $$replace = global.Symbol.replace,
1019 $$search = global.Symbol.search,
1020 $$split = global.Symbol.split,
1021 $$toStringTag = global.Symbol.toStringTag;
1022
1023 //----------------------------------------
1024 // 7 Abstract Operations
1025 //----------------------------------------
1026
1027 //----------------------------------------
1028 // 7.1 Type Conversion
1029 //----------------------------------------
1030
1031 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1032 // just use valueOf()
1033
1034 // 7.1.2 ToBoolean ( argument )
1035 // just use Boolean()
1036
1037 // 7.1.3 ToNumber ( argument )
1038 // just use Number()
1039
1040 // 7.1.4 ToInteger ( argument )
1041 function ToInteger(n) {
1042 n = Number(n);
1043 if ($isNaN(n)) return 0;
1044 if (n === 0 || n === Infinity || n === -Infinity) return n;
1045 return ((n < 0) ? -1 : 1) * floor(abs(n));
1046 }
1047
1048 // 7.1.5 ToInt32 ( argument )
1049 function ToInt32(v) { return v >> 0; }
1050
1051 // 7.1.6 ToUint32 ( argument )
1052 function ToUint32(v) { return v >>> 0; }
1053
1054 // 7.1.7 ToInt16 ( argument )
1055 function ToInt16(v) { return (v << 16) >> 16; }
1056
1057 // 7.1.8 ToUint16 ( argument )
1058 function ToUint16(v) { return v & 0xFFFF; }
1059
1060 // 7.1.9 ToInt8 ( argument )
1061 function ToInt8(v) { return (v << 24) >> 24; }
1062
1063 // 7.1.10 ToUint8 ( argument )
1064 function ToUint8(v) { return v & 0xFF; }
1065
1066 // 7.1.11 ToUint8Clamp ( argument )
1067 function ToUint8Clamp(argument) {
1068 var number = Number(argument);
1069 if ($isNaN(number)) return 0;
1070 if (number <= 0) return 0;
1071 if (number >= 255) return 255;
1072 var f = floor(number);
1073 if ((f + 0.5) < number) return f + 1;
1074 if (number < (f + 0.5)) return f;
1075 if (f % 2) return f + 1;
1076 return f;
1077 }
1078
1079 // 7.1.12 ToString ( argument )
1080 // just use String()
1081
1082 // 7.1.13 ToObject ( argument )
1083 function ToObject(v) {
1084 if (v === null || v === undefined) throw TypeError();
1085 return Object(v);
1086 }
1087
1088 // 7.1.14 ToPropertyKey ( argument )
1089 function ToPropertyKey(v) {
1090 return String(v);
1091 }
1092
1093 // 7.1.15 ToLength ( argument )
1094 function ToLength(v) {
1095 var len = ToInteger(v);
1096 if (len <= 0) return 0;
1097 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1098 return min(len, 0x20000000000000 - 1); // 2^53-1
1099 }
1100
1101 // 7.1.16 CanonicalNumericIndexString ( argument )
1102
1103 //----------------------------------------
1104 // 7.2 Testing and Comparison Operations
1105 //----------------------------------------
1106
1107 // 7.2.1 RequireObjectCoercible ( argument )
1108 // 7.2.2 IsArray ( argument )
1109
1110 // 7.2.3 IsCallable ( argument )
1111 function IsCallable(o) { return typeof o === 'function'; }
1112
1113 // 7.2.4 IsConstructor ( argument )
1114 function IsConstructor(o) {
1115 // Hacks for Safari 7 TypedArray XXXConstructor objects
1116 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1117 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1118 // TODO: Can this be improved on?
1119 return typeof o === 'function';
1120 }
1121
1122 // 7.2.5 IsExtensible (O)
1123 // 7.2.6 IsInteger ( argument )
1124
1125 // 7.2.7 IsPropertyKey ( argument )
1126 function IsPropertyKey(argument) {
1127 if (Type(argument) === 'string') return true;
1128 if (Type(argument) === 'symbol') return true;
1129 return false;
1130 }
1131
1132 // 7.2.8 IsRegExp ( argument )
1133 // 7.2.5 IsConstructor ( argument )
1134
1135 // 7.2.9 SameValue(x, y)
1136 function SameValue(x, y) {
1137 if (typeof x !== typeof y) return false;
1138 switch (typeof x) {
1139 case 'undefined':
1140 return true;
1141 case 'number':
1142 if (x !== x && y !== y) return true;
1143 if (x === 0 && y === 0) return 1/x === 1/y;
1144 return x === y;
1145 case 'boolean':
1146 case 'string':
1147 case 'object':
1148 default:
1149 return x === y;
1150 }
1151 }
1152
1153 // 7.2.10 SameValueZero(x, y)
1154 function SameValueZero(x, y) {
1155 if (typeof x !== typeof y) return false;
1156 switch (typeof x) {
1157 case 'undefined':
1158 return true;
1159 case 'number':
1160 if (x !== x && y !== y) return true;
1161 return x === y;
1162 case 'boolean':
1163 case 'string':
1164 case 'object':
1165 default:
1166 return x === y;
1167 }
1168 }
1169
1170 //----------------------------------------
1171 // 7.3 Operations on Objects
1172 //----------------------------------------
1173
1174 // 7.3.1 Get (O, P)
1175 // - just use o.p or o[p]
1176
1177 // 7.3.2 GetV (V, P)
1178 function GetV(v, p) {
1179 var o = ToObject(v);
1180 return o[p];
1181 }
1182
1183 // 7.3.3 Set (O, P, V, Throw)
1184 // - just use o.p = v or o[p] = v
1185
1186
1187
1188
1189 // 7.3.9 GetMethod (O, P)
1190 function GetMethod(o, p) {
1191 var func = GetV(o, p);
1192 if (func === undefined || func === null) return undefined;
1193 if (!IsCallable(func)) throw TypeError();
1194 return func;
1195 }
1196
1197 // 7.3.10 HasProperty (O, P)
1198 function HasProperty(o, p) {
1199 while (o) {
1200 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1201 if (Type(o) !== 'object') return false;
1202 o = Object.getPrototypeOf(o);
1203 }
1204 return false;
1205 }
1206
1207 // 7.3.11 HasOwnProperty (O, P)
1208 function HasOwnProperty(o, p) {
1209 return Object.prototype.hasOwnProperty.call(o, p);
1210 }
1211
1212 //----------------------------------------
1213 // 7.4 Operations on Iterator Objects
1214 //----------------------------------------
1215
1216 // 7.4.1 GetIterator ( obj, method )
1217 function GetIterator(obj, method) {
1218 if (arguments.length < 2)
1219 method = GetMethod(obj, $$iterator);
1220 var iterator = method.call(obj);
1221 if (Type(iterator) !== 'object') throw TypeError();
1222 return iterator;
1223 }
1224
1225 // 7.4.2 IteratorNext ( iterator, value )
1226 function IteratorNext(iterator, value) {
1227 if (arguments.length < 2)
1228 var result = iterator.next();
1229 else
1230 result = iterator.next(value);
1231 if (Type(result) !== 'object') throw TypeError();
1232 return result;
1233 }
1234
1235 // 7.4.3 IteratorComplete ( iterResult )
1236 function IteratorComplete(iterResult) {
1237 console.assert(Type(iterResult) === 'object');
1238 return Boolean(iterResult.done);
1239 }
1240
1241 // 7.4.4 IteratorValue ( iterResult )
1242 function IteratorValue(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return iterResult.value;
1245 }
1246
1247 // 7.4.5 IteratorStep ( iterator )
1248 function IteratorStep( iterator, value ) {
1249 var result = IteratorNext(iterator, value);
1250 var done = result['done'];
1251 if (Boolean(done) === true) return false;
1252 return result;
1253 }
1254
1255 // 7.4.6 IteratorClose( iterator, completion )
1256 function IteratorClose( iterator, completion ) {
1257 console.assert(Type(iterator) === 'object');
1258 var _return = GetMethod(iterator, 'return');
1259 if (_return === undefined) return completion;
1260 try {
1261 var innerResult = _return[iterator]();
1262 } catch (result) {
1263 // TODO: If completion.[[type]] is throw, return completion
1264 return result;
1265 }
1266 if (Type(innerResult) !== 'object') throw TypeError();
1267 return completion;
1268 }
1269
1270 // 7.4.7 CreateIterResultObject (value, done)
1271 function CreateIterResultObject(value, done) {
1272 console.assert(Type(done) === 'boolean');
1273 var obj = {};
1274 obj["value"] = value;
1275 obj["done"] = done;
1276 return obj;
1277 }
1278
1279 // 7.4.8 CreateListIterator (list)
1280 // 7.4.8.1 ListIterator next( )
1281 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1282 // 7.4.9.1 CompoundIterator next( )
1283
1284 //----------------------------------------
1285 // 8 Executable Code and Execution Contexts
1286 //----------------------------------------
1287
1288 //----------------------------------------
1289 // 8.4 Jobs and Job Queues
1290 //----------------------------------------
1291
1292 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1293 function EnqueueJob(queueName, job, args) {
1294 var fn = function() { job.apply(undefined, args); };
1295 enqueue(fn);
1296 }
1297
1298 // 8.4.2 NextJob result
1299 function NextJob(result) {
1300 // no-op
1301 }
1302
1303 //----------------------------------------
1304 // 9 Ordinary and Exotic Objects Behaviors
1305 //----------------------------------------
1306
1307 // 9.1.11 [[Enumerate]] ()
1308 function Enumerate(obj) {
1309 var e = [];
1310 if (Object(obj) !== obj) return e;
1311 var visited = new Set;
1312 while (obj !== null) {
1313 Object.getOwnPropertyNames(obj).forEach(function(name) {
1314 if (!visited.has(name)) {
1315 var desc = Object.getOwnPropertyDescriptor(obj, name);
1316 if (desc) {
1317 visited.add(name);
1318 if (desc.enumerable) e.push(name);
1319 }
1320 }
1321 });
1322 obj = Object.getPrototypeOf(obj);
1323 }
1324 return e[$$iterator]();
1325 }
1326
1327 // 9.1.12 [[OwnPropertyKeys]] ( )
1328 function OwnPropertyKeys(o) {
1329 return Object.getOwnPropertyNames(o);
1330 }
1331
1332 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1333 function ObjectCreate(proto, internalSlotsList) {
1334 return Object.create(proto, internalSlotsList);
1335 }
1336
1337 // ---------------------------------------
1338 // 19 Fundamental Objects
1339 // ---------------------------------------
1340
1341 // ---------------------------------------
1342 // 19.1 Object Objects
1343 // ---------------------------------------
1344
1345 // 19.1.1 The Object Constructor
1346 // 19.1.1.1 Object ( [ value ] )
1347 // 19.1.2 Properties of the Object Constructor
1348 // 19.1.2.1 Object.assign ( target, ...sources )
1349 define(
1350 Object, 'assign',
1351 function assign(target, /*...*/sources) {
1352 var to = ToObject(target);
1353 if (arguments.length < 2) return to;
1354
1355 var sourcesIndex = 1;
1356 while (sourcesIndex < arguments.length) {
1357 var nextSource = arguments[sourcesIndex++];
1358 if (nextSource === undefined || nextSource === null) {
1359 var keys = [];
1360 } else {
1361 var from = ToObject(nextSource);
1362 keys = OwnPropertyKeys(from);
1363 }
1364 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1365 var nextKey = keys[keysIndex];
1366 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1367 if (desc !== undefined && desc.enumerable) {
1368 var propValue = from[nextKey];
1369 to[nextKey] = propValue;
1370 }
1371 }
1372 }
1373 return to;
1374 });
1375
1376 // 19.1.2.2 Object.create ( O [ , Properties ] )
1377 // 19.1.2.3 Object.defineProperties ( O, Properties )
1378 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1379 // 19.1.2.5 Object.freeze ( O )
1380 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1381
1382 (function() {
1383 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1384 $getOwnPropertyNames = Object.getOwnPropertyNames,
1385 $keys = Object.keys,
1386 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1387
1388 function isStringKey(k) { return !symbolForKey(k); }
1389
1390 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1391 define(
1392 Object, 'getOwnPropertyNames',
1393 function getOwnPropertyNames(o) {
1394 if (Object.prototype.toString.call(o) === '[object Window]') {
1395 // Workaround for cross-realm calling by IE itself.
1396 // https://github.com/inexorabletash/polyfill/issues/96
1397 try {
1398 return $getOwnPropertyNames(o).filter(isStringKey);
1399 } catch (_) {
1400 return $window_names.slice();
1401 }
1402 }
1403 return $getOwnPropertyNames(o).filter(isStringKey);
1404 }, !nativeSymbols);
1405
1406 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1407 define(
1408 Object, 'getOwnPropertySymbols',
1409 function getOwnPropertySymbols(o) {
1410 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1411 }, !nativeSymbols);
1412
1413 // 19.1.2.14 Object.keys ( O )
1414 define(
1415 Object, 'keys',
1416 function keys(o) {
1417 return $keys(o).filter(isStringKey);
1418 }, !nativeSymbols);
1419 }());
1420
1421 // 19.1.2.9 Object.getPrototypeOf ( O )
1422 // 19.1.2.10 Object.is ( value1, value2 )
1423 define(
1424 Object, 'is',
1425 function is(value1, value2) {
1426 return SameValue(value1, value2);
1427 });
1428
1429 // 19.1.2.11 Object.isExtensible ( O )
1430 // 19.1.2.12 Object.isFrozen ( O )
1431 // 19.1.2.13 Object.isSealed ( O )
1432
1433 // 19.1.2.14 Object.keys ( O )
1434 // see above
1435
1436 // 19.1.2.15 Object.preventExtensions ( O )
1437 // 19.1.2.16 Object.prototype
1438 // 19.1.2.17 Object.seal ( O )
1439
1440 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1441 define(
1442 Object, 'setPrototypeOf',
1443 function setPrototypeOf(o, proto) {
1444 if (Type(o) !== 'object') throw TypeError();
1445 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1446 o.__proto__ = proto;
1447 return o;
1448 }
1449 );
1450
1451 // 19.1.3 Properties of the Object Prototype Object
1452 // 19.1.3.1 Object.prototype.constructor
1453 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1454 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1455 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1456 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1457 // 19.1.3.6 Object.prototype.toString ( )
1458 hook(Object.prototype, 'toString',
1459 function() {
1460 var o = strict(this);
1461 if (o === Object(o) && $$toStringTag in o) {
1462 return '[object ' + o[$$toStringTag] + ']';
1463 }
1464 return undefined;
1465 });
1466
1467 // 19.1.3.7 Object.prototype.valueOf ( )
1468 // 19.1.4 Properties of Object Instances
1469
1470 // ---------------------------------------
1471 // 19.2 Function Objects
1472 // ---------------------------------------
1473
1474 // 19.2.1 The Function Constructor
1475 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1476 // 19.2.2 Properties of the Function Constructor
1477 // 19.2.2.1 Function.length
1478 // 19.2.2.2 Function.prototype
1479 // 19.2.3 Properties of the Function Prototype Object
1480 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1481 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1482 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1483 // 19.2.3.4 Function.prototype.constructor
1484 // 19.2.3.5 Function.prototype.toString ( )
1485 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1486 // 19.2.4 Function Instances
1487 // 19.2.4.1 length
1488 // 19.2.4.2 name
1489 // 19.2.4.3 prototype
1490
1491 // (No polyfillable changes from ES5)
1492
1493 // ---------------------------------------
1494 // 19.3 Boolean Objects
1495 // ---------------------------------------
1496
1497 // 19.3.1 The Boolean Constructor
1498 // 19.3.1.1 Boolean ( value )
1499 // 19.3.2 Properties of the Boolean Constructor
1500 // 19.3.2.1 Boolean.prototype
1501 // 19.3.3 Properties of the Boolean Prototype Object
1502 // 19.3.3.1 Boolean.prototype.constructor
1503 // 19.3.3.2 Boolean.prototype.toString ( )
1504 // 19.3.3.3 Boolean.prototype.valueOf ( )
1505 // 19.3.4 Properties of Boolean Instances
1506
1507 // (No polyfillable changes from ES5)
1508
1509 // ---------------------------------------
1510 // 19.4 Symbol Objects
1511 // ---------------------------------------
1512
1513 // Moved earlier in this script, so that other polyfills can depend on them.
1514
1515 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1516 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1517
1518 // ---------------------------------------
1519 // 19.5 Error Objects
1520 // ---------------------------------------
1521
1522 // 19.5.1 The Error Constructor
1523 // 19.5.1.1 Error ( message )
1524 // 19.5.1.2 new Error( ...argumentsList )
1525 // 19.5.2 Properties of the Error Constructor
1526 // 19.5.2.1 Error.prototype
1527 // 19.5.3 Properties of the Error Prototype Object
1528 // 19.5.3.1 Error.prototype.constructor
1529 // 19.5.3.2 Error.prototype.message
1530 // 19.5.3.3 Error.prototype.name
1531 // 19.5.3.4 Error.prototype.toString ( )
1532 // 19.5.4 Properties of Error Instances
1533 // 19.5.5 Native Error Types Used in This Standard
1534 // 19.5.5.1 EvalError
1535 // 19.5.5.2 RangeError
1536 // 19.5.5.3 ReferenceError
1537 // 19.5.5.4 SyntaxError
1538 // 19.5.5.5 TypeError
1539 // 19.5.5.6 URIError
1540 // 19.5.6 NativeError Object Structure
1541 // 19.5.6.1 NativeError Constructors
1542 // 19.5.6.1.1 NativeError ( message )
1543 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1544 // 19.5.6.2 Properties of the NativeError Constructors
1545 // 19.5.6.2.1 NativeError.prototype
1546 // 19.5.6.3 Properties of the NativeError Prototype Objects
1547 // 19.5.6.4 Properties of NativeError Instances
1548
1549 // (No polyfillable changes from ES5)
1550
1551 // ---------------------------------------
1552 // 20 Numbers and Dates
1553 // ---------------------------------------
1554
1555 // ---------------------------------------
1556 // 20.1 Number Objects
1557 // ---------------------------------------
1558
1559 // 20.1.1 The Number Constructor
1560 // 20.1.1.1 Number ( [ value ] )
1561 // 20.1.1.2 new Number ( ...argumentsList )
1562 // 20.1.2 Properties of the Number Constructor
1563
1564 // 20.1.2.1 Number.EPSILON
1565 define(
1566 Number, 'EPSILON',
1567 (function () {
1568 var next, result;
1569 for (next = 1; 1 + next !== 1; next = next / 2)
1570 result = next;
1571 return result;
1572 }()));
1573
1574 // 20.1.2.2 Number.isFinite ( number )
1575 define(
1576 Number, 'isFinite',
1577 function isFinite(number) {
1578 if (Type(number) !== 'number') return false;
1579 if (number !== number || number === +Infinity || number === -Infinity) return false;
1580 return true;
1581 });
1582
1583 // 20.1.2.3 Number.isInteger ( number )
1584 define(
1585 Number, 'isInteger',
1586 function isInteger(number) {
1587 if (Type(number) !== 'number') return false;
1588 if (number !== number || number === +Infinity || number === -Infinity) return false;
1589 var integer = ToInteger(number);
1590 if (integer !== number) return false;
1591 return true;
1592 });
1593
1594 // 20.1.2.4 Number.isNaN ( number )
1595 define(
1596 Number, 'isNaN',
1597 function isNaN(number) {
1598 if (Type(number) !== 'number') return false;
1599 if (number !== number) return true;
1600 return false;
1601 });
1602
1603 // 20.1.2.5 Number.isSafeInteger ( number )
1604 define(
1605 Number, 'isSafeInteger',
1606 function isSafeInteger(number) {
1607 if (Type(number) !== 'number') return false;
1608 if (number !== number || number === +Infinity || number === -Infinity) return false;
1609 var integer = ToInteger(number);
1610 if (integer !== number) return false;
1611 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1612 return true;
1613 return false;
1614 });
1615
1616 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1617 define(
1618 Number, 'MAX_SAFE_INTEGER',
1619 9007199254740991); // 2^53-1
1620
1621 // 20.1.2.7 Number.MAX_VALUE
1622
1623 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1624 define(
1625 Number, 'MIN_SAFE_INTEGER',
1626 -9007199254740991); // -2^53+1
1627
1628 // 20.1.2.9 Number.MIN_VALUE
1629 // 20.1.2.10 Number.NaN
1630 // 20.1.2.11 Number.NEGATIVE_INFINITY
1631
1632 // 20.1.2.12 Number.parseFloat ( string )
1633 define(Number, 'parseFloat', $parseFloat);
1634
1635 // 20.1.2.13 Number.parseInt ( string, radix )
1636 define(Number, 'parseInt', $parseInt);
1637
1638 // 20.1.2.14 Number.POSITIVE_INFINITY
1639 // 20.1.2.15 Number.prototype
1640
1641 // 20.1.3 Properties of the Number Prototype Object
1642 // 20.1.3.1 Number.prototype.constructor
1643 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1644 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1645 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1646 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1647 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1648 // 20.1.3.7 Number.prototype.valueOf ( )
1649 // 20.1.4 Properties of Number Instances
1650
1651 // ---------------------------------------
1652 // 20.2 The Math Object
1653 // ---------------------------------------
1654
1655 // 20.2.1 Value Properties of the Math Object
1656 // 20.2.1.1 Math.E
1657 // 20.2.1.2 Math.LN10
1658 // 20.2.1.3 Math.LN2
1659 // 20.2.1.4 Math.LOG10E
1660 // 20.2.1.5 Math.LOG2E
1661 // 20.2.1.6 Math.PI
1662 // 20.2.1.7 Math.SQRT1_2
1663 // 20.2.1.8 Math.SQRT2
1664
1665 // 20.2.1.9 Math [ @@toStringTag ]
1666 define(Math, $$toStringTag, 'Math');
1667
1668 // 20.2.2 Function Properties of the Math Object
1669 // 20.2.2.1 Math.abs ( x )
1670 // 20.2.2.2 Math.acos ( x )
1671
1672 // 20.2.2.3 Math.acosh(x)
1673 define(
1674 Math, 'acosh',
1675 function acosh(x) {
1676 x = Number(x);
1677 return log(x + sqrt(x * x - 1));
1678 });
1679
1680 // 20.2.2.4 Math.asin ( x )
1681
1682 // 20.2.2.5 Math.asinh( x )
1683 define(
1684 Math, 'asinh',
1685 function asinh(x) {
1686 x = Number(x);
1687 if (SameValue(x, -0)) {
1688 return x;
1689 }
1690 var s = sqrt(x * x + 1);
1691 return (s === -x) ? log(0) : log(x + s);
1692 });
1693
1694 // 20.2.2.6 Math.atan ( x )
1695
1696 // 20.2.2.7 Math.atanh( x )
1697 define(
1698 Math, 'atanh',
1699 function atanh(x) {
1700 x = Number(x);
1701 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1702 });
1703
1704 // 20.2.2.8 Math.atan2 ( y, x )
1705
1706 // 20.2.2.9 Math.cbrt ( x )
1707 define(
1708 Math, 'cbrt',
1709 function cbrt(x) {
1710 x = Number(x);
1711 if ($isNaN(x/x)) {
1712 return x;
1713 }
1714 var r = pow(abs(x), 1/3);
1715 var t = x/r/r;
1716 return r + (r * (t-r) / (2*r + t));
1717 });
1718
1719 // 20.2.2.10 Math.ceil ( x )
1720
1721 // 20.2.2.11 Math.clz32 ( x )
1722 define(
1723 Math, 'clz32',
1724 function clz32(x) {
1725 function clz8(x) {
1726 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1727 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1728 }
1729 x = ToUint32(x);
1730 return x & 0xff000000 ? clz8(x >> 24) :
1731 x & 0xff0000 ? clz8(x >> 16) + 8 :
1732 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1733 });
1734
1735
1736
1737 // 20.2.2.12 Math.cos ( x )
1738
1739 // 20.2.2.13 Math.cosh ( x )
1740 define(
1741 Math, 'cosh',
1742 function cosh(x) {
1743 x = Number(x);
1744 return (pow(E, x) + pow(E, -x)) / 2;
1745 });
1746
1747 // 20.2.2.14 Math.exp ( x )
1748
1749 // 20.2.2.15 Math.expm1 ( x )
1750 define(
1751 Math, 'expm1',
1752 function expm1(x) {
1753 x = Number(x);
1754 // from: http://www.johndcook.com/cpp_log1p.html
1755 if (SameValue(x, -0)) {
1756 return -0;
1757 } else if (abs(x) < 1e-5) {
1758 return x + 0.5 * x * x; // two terms of Taylor expansion
1759 } else {
1760 return exp(x) - 1;
1761 }
1762 });
1763
1764 // 20.2.2.16 Math.floor ( x )
1765
1766 // 20.2.2.17 Math.fround ( x )
1767 define(
1768 Math, 'fround',
1769 function fround(x) {
1770 if ($isNaN(x)) {
1771 return NaN;
1772 }
1773 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1774 return x;
1775 }
1776 return (new Float32Array([x]))[0];
1777 });
1778
1779 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1780 define(
1781 Math, 'hypot',
1782 function hypot() {
1783 var values = [];
1784 var m = 0, sawNaN = false;
1785 for (var i = 0; i < arguments.length; ++i) {
1786 var n = abs(Number(arguments[i]));
1787 if (n === Infinity) return n;
1788 if (n !== n) sawNaN = true;
1789 if (n > m) m = n;
1790 values[i] = n;
1791 }
1792 if (sawNaN) return NaN;
1793 if (m === 0) return +0;
1794 var sum = +0;
1795 for (i = 0; i < values.length; ++i) {
1796 var r = values[i] / m;
1797 sum = sum + r * r;
1798 }
1799 return m * sqrt(sum);
1800 });
1801
1802 // 20.2.2.19 Math.imul ( x, y )
1803 define(
1804 Math, 'imul',
1805 function imul(x, y) {
1806 var a = ToUint32(x);
1807 var b = ToUint32(y);
1808 // (slow but accurate)
1809 var ah = (a >>> 16) & 0xffff;
1810 var al = a & 0xffff;
1811 var bh = (b >>> 16) & 0xffff;
1812 var bl = b & 0xffff;
1813 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1814 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1815 );
1816
1817 // 20.2.2.20 Math.log ( x )
1818
1819 // 20.2.2.21 Math.log1p ( x )
1820 define(
1821 Math, 'log1p',
1822 function log1p(x) {
1823 x = Number(x);
1824 // from: http://www.johndcook.com/cpp_expm1.html
1825 if (x < -1) {
1826 return NaN;
1827 } else if (SameValue(x, -0)) {
1828 return -0;
1829 } else if (abs(x) > 1e-4) {
1830 return log(1 + x);
1831 } else {
1832 return (-0.5 * x + 1) * x;
1833 }
1834 });
1835
1836 // 20.2.2.22 Math.log10 ( x )
1837 define(
1838 Math, 'log10',
1839 function log10(x) {
1840 x = Number(x);
1841 return log(x) * LOG10E;
1842 });
1843
1844 // 20.2.2.23 Math.log2 ( x )
1845 define(
1846 Math, 'log2',
1847 function log2(x) {
1848 x = Number(x);
1849 return log(x) * LOG2E;
1850 });
1851
1852 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1853 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1854 // 20.2.2.26 Math.pow ( x, y )
1855 // 20.2.2.27 Math.random ( )
1856 // 20.2.2.28 Math.round ( x )
1857
1858 // 20.2.2.29 Math.sign(x)
1859 define(
1860 Math, 'sign',
1861 function sign(x) {
1862 x = Number(x);
1863 return x < 0 ? -1 : x > 0 ? 1 : x;
1864 });
1865
1866 // 20.2.2.30 Math.sin ( x )
1867
1868 // 20.2.2.31 Math.sinh( x )
1869 define(
1870 Math, 'sinh',
1871 function sinh(x) {
1872 x = Number(x);
1873 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1874 });
1875
1876 // 20.2.2.32 Math.sqrt ( x )
1877 // 20.2.2.33 Math.tan ( x )
1878
1879 // 20.2.2.34 Math.tanh ( x )
1880 define(
1881 Math, 'tanh',
1882 function tanh(x) {
1883 x = Number(x);
1884 var n = pow(E, 2 * x) - 1,
1885 d = pow(E, 2 * x) + 1;
1886 if (SameValue(x, -0))
1887 return x;
1888 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1889 });
1890
1891 // 20.2.2.35 Math.trunc ( x )
1892 define(
1893 Math, 'trunc',
1894 function trunc(x) {
1895 x = Number(x);
1896 return $isNaN(x) ? NaN :
1897 x < 0 ? ceil(x) : floor(x);
1898 });
1899
1900 // ---------------------------------------
1901 // 20.3 Date Objects
1902 // ---------------------------------------
1903
1904 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1905 // 20.3.1.1 Time Values and Time Range
1906 // 20.3.1.2 Day Number and Time within Day
1907 // 20.3.1.3 Year Number
1908 // 20.3.1.4 Month Number
1909 // 20.3.1.5 Date Number
1910 // 20.3.1.6 Week Day
1911 // 20.3.1.7 Local Time Zone Adjustment
1912 // 20.3.1.8 Daylight Saving Time Adjustment
1913 // 20.3.1.9 Local Time
1914 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1915 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1916 // 20.3.1.12 MakeDay (year, month, date)
1917 // 20.3.1.13 MakeDate (day, time)
1918 // 20.3.1.14 TimeClip (time)
1919 // 20.3.1.15 Date Time String Format
1920 // 20.3.1.15.1 Extended years
1921 // 20.3.2 The Date Constructor
1922 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1923 // 20.3.2.2 Date ( value )
1924 // 20.3.2.3 Date ( )
1925 // 20.3.3 Properties of the Date Constructor
1926 // 20.3.3.1 Date.now ( )
1927 // 20.3.3.2 Date.parse (string)
1928 // 20.3.3.3 Date.prototype
1929 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1930 // 20.3.4 Properties of the Date Prototype Object
1931 // 20.3.4.1 Date.prototype.constructor
1932 // 20.3.4.2 Date.prototype.getDate ( )
1933 // 20.3.4.3 Date.prototype.getDay ( )
1934 // 20.3.4.4 Date.prototype.getFullYear ( )
1935 // 20.3.4.5 Date.prototype.getHours ( )
1936 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1937 // 20.3.4.7 Date.prototype.getMinutes ( )
1938 // 20.3.4.8 Date.prototype.getMonth ( )
1939 // 20.3.4.9 Date.prototype.getSeconds ( )
1940 // 20.3.4.10 Date.prototype.getTime ( )
1941 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1942 // 20.3.4.12 Date.prototype.getUTCDate ( )
1943 // 20.3.4.13 Date.prototype.getUTCDay ( )
1944 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1945 // 20.3.4.15 Date.prototype.getUTCHours ( )
1946 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1947 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1948 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1949 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1950 // 20.3.4.20 Date.prototype.setDate ( date )
1951 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1952 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1953 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1954 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1955 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1956 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1957 // 20.3.4.27 Date.prototype.setTime ( time )
1958 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1959 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1960 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1961 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1962 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1963 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1964 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1965 // 20.3.4.35 Date.prototype.toDateString ( )
1966 // 20.3.4.36 Date.prototype.toISOString ( )
1967 // 20.3.4.37 Date.prototype.toJSON ( key )
1968 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1969 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1970 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1971 // 20.3.4.41 Date.prototype.toString ( )
1972 // 20.3.4.42 Date.prototype.toTimeString ( )
1973 // 20.3.4.43 Date.prototype.toUTCString ( )
1974 // 20.3.4.44 Date.prototype.valueOf ( )
1975 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1976 // 20.3.5 Properties of Date Instances
1977
1978 // (No polyfillable changes from ES5)
1979
1980 // ---------------------------------------
1981 // 21 Text Processing
1982 // ---------------------------------------
1983
1984 var string_regexp_dispatch = (function() {
1985 var faux = {}, secret = Symbol();
1986 faux[Symbol.match] = function() { return secret; };
1987 return ("").match(faux) === secret;
1988 }());
1989
1990 // 21.1 String Objects
1991 // 21.1.1 The String Constructor
1992 // 21.1.1.1 String ( value )
1993 // 21.1.2 Properties of the String Constructor
1994 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
1995
1996 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
1997 define(
1998 String, 'fromCodePoint',
1999 function fromCodePoint(/*...codePoints*/) {
2000 var codePoints = arguments,
2001 length = codePoints.length,
2002 elements = [],
2003 nextIndex = 0;
2004 while (nextIndex < length) {
2005 var next = codePoints[nextIndex];
2006 var nextCP = Number(next);
2007 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2008 nextCP < 0 || nextCP > 0x10FFFF) {
2009 throw RangeError('Invalid code point ' + nextCP);
2010 }
2011 if (nextCP < 0x10000) {
2012 elements.push(String.fromCharCode(nextCP));
2013 } else {
2014 nextCP -= 0x10000;
2015 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2016 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2017 }
2018 nextIndex += 1;
2019 }
2020 return elements.join('');
2021 });
2022
2023 // 21.1.2.3 String.prototype
2024
2025 // 21.1.2.4 String.raw ( template , ...substitutions )
2026 define(
2027 String, 'raw',
2028 function raw(template /*, ...substitutions*/) {
2029 var substitutions = [].slice.call(arguments, 1);
2030
2031 var cooked = Object(template);
2032 var rawValue = cooked['raw'];
2033 var raw = Object(rawValue);
2034 var len = raw['length'];
2035 var literalSegments = ToLength(len);
2036 if (literalSegments <= 0) return '';
2037 var stringElements = [];
2038 var nextIndex = 0;
2039 while (true) {
2040 var next = raw[nextIndex];
2041 var nextSeg = String(next);
2042 stringElements.push(nextSeg);
2043 if (nextIndex + 1 === literalSegments)
2044 return stringElements.join('');
2045 next = substitutions[nextIndex];
2046 var nextSub = String(next);
2047 stringElements.push(nextSub);
2048 nextIndex = nextIndex + 1;
2049 }
2050 });
2051
2052 // See https://githib.com/inexorabletash/uate for a more useful version.
2053
2054 // 21.1.3 Properties of the String Prototype Object
2055 // 21.1.3.1 String.prototype.charAt ( pos )
2056 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2057
2058 // 21.1.3.3 String.prototype.codePointAt ( pos )
2059 define(
2060 String.prototype, 'codePointAt',
2061 function codePointAt(pos) {
2062 var o = strict(this);
2063 var s = String(o);
2064 var position = ToInteger(pos);
2065 var size = s.length;
2066 if (position < 0 || position >= size) return undefined;
2067 var first = s.charCodeAt(position);
2068 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2069 var second = s.charCodeAt(position + 1);
2070 if (second < 0xDC00 || second > 0xDFFF) return first;
2071 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2072 });
2073
2074 // 21.1.3.4 String.prototype.concat ( ...args )
2075 // 21.1.3.5 String.prototype.constructor
2076
2077 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2078 define(
2079 String.prototype, 'endsWith',
2080 function endsWith(searchString) {
2081 var endPosition = arguments[1];
2082
2083 var o = strict(this);
2084 var s = String(o);
2085 var searchStr = String(searchString);
2086 var len = s.length;
2087 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2088 var end = min(max(pos, 0), len);
2089 var searchLength = searchStr.length;
2090 var start = end - searchLength;
2091 if (start < 0) return false;
2092 if (s.substring(start, start + searchLength) === searchStr) return true;
2093 return false;
2094 });
2095
2096 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2097 define(
2098 String.prototype, 'includes',
2099 function includes(searchString) {
2100 var position = arguments[1];
2101
2102 var o = strict(this);
2103 var s = String(o);
2104 var searchStr = String(searchString);
2105 var pos = ToInteger(position);
2106 var len = s.length;
2107 var start = min(max(pos, 0), len);
2108 return s.indexOf(searchStr, start) !== -1;
2109 });
2110
2111 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2112 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2113 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2114 // 21.1.3.11 String.prototype.match ( regexp )
2115 define(
2116 String.prototype, 'match',
2117 function match(regexp) {
2118 var o = strict(this);
2119 var s = String(o);
2120 if (HasProperty(regexp, $$match)) var rx = regexp;
2121 else rx = new RegExp(regexp);
2122 return rx[$$match](s);
2123 }, !string_regexp_dispatch);
2124
2125 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2126
2127 // Not practical due to table sizes; if needed, pull in:
2128 // https://github.com/walling/unorm/
2129
2130 // 21.1.3.13 String.prototype.repeat ( count )
2131 define(
2132 String.prototype, 'repeat',
2133 function repeat(count) {
2134 var o = strict(this);
2135 var s = String(o);
2136 var n = ToInteger(count);
2137 if (n < 0) throw RangeError();
2138 if (n === Infinity) throw RangeError();
2139 var t = new Array(n + 1).join(s);
2140 return t;
2141 });
2142
2143 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2144 define(
2145 String.prototype, 'replace',
2146 function replace(searchValue, replaceValue) {
2147 var o = strict(this);
2148 if (HasProperty(searchValue, $$replace))
2149 return searchValue[$$replace](o, replaceValue);
2150 return orig_replace.call(o, searchValue, replaceValue);
2151 }, !string_regexp_dispatch);
2152
2153 // 21.1.3.15 String.prototype.search ( regexp )
2154 define(
2155 String.prototype, 'search',
2156 function search(regexp) {
2157 var o = strict(this);
2158 var string = String(o);
2159 if (HasProperty(regexp, $$search)) var rx = regexp;
2160 else rx = new RegExp(regexp);
2161 return rx[$$search](string);
2162 }, !string_regexp_dispatch);
2163
2164 // 21.1.3.16 String.prototype.slice ( start, end )
2165 // 21.1.3.17 String.prototype.split ( separator, limit )
2166 define(
2167 String.prototype, 'split',
2168 function split(separator, limit) {
2169 var o = strict(this);
2170 if (HasProperty(separator, $$split))
2171 return separator[$$split](o, limit);
2172 return orig_split.call(o, separator, limit);
2173 }, !string_regexp_dispatch);
2174
2175 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2176 define(
2177 String.prototype, 'startsWith',
2178 function startsWith(searchString) {
2179 var position = arguments[1];
2180
2181 var o = strict(this);
2182 var s = String(o);
2183 var searchStr = String(searchString);
2184 var pos = ToInteger(position);
2185 var len = s.length;
2186 var start = min(max(pos, 0), len);
2187 var searchLength = searchStr.length;
2188 if (searchLength + start > len) return false;
2189 if (s.substring(start, start + searchLength) === searchStr) return true;
2190 return false;
2191 });
2192
2193 // 21.1.3.19 String.prototype.substring ( start, end )
2194 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2195 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2196 // 21.1.3.22 String.prototype.toLowerCase ( )
2197 // 21.1.3.23 String.prototype.toString ( )
2198 // 21.1.3.24 String.prototype.toUpperCase ( )
2199 // 21.1.3.25 String.prototype.trim ( )
2200 // 21.1.3.26 String.prototype.valueOf ( )
2201
2202 // 21.1.3.27 String.prototype [ @@iterator ]( )
2203 define(
2204 String.prototype, $$iterator,
2205 function entries() {
2206 return CreateStringIterator(this, 'value');
2207 });
2208
2209 // 21.1.4 Properties of String Instances
2210 // 21.1.4.1 length
2211
2212 // 21.1.5 String Iterator Objects
2213 /** @constructor */
2214 function StringIterator() {}
2215
2216 // 21.1.5.1 CreateStringIterator Abstract Operation
2217 function CreateStringIterator(string, kind) {
2218 var s = String(string);
2219 var iterator = new StringIterator;
2220 set_internal(iterator, '[[IteratedString]]', s);
2221 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2222 set_internal(iterator, '[[StringIterationKind]]', kind);
2223 return iterator;
2224 }
2225
2226 // 21.1.5.2 The %StringIteratorPrototype% Object
2227 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2228 StringIterator.prototype = $StringIteratorPrototype$;
2229
2230 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2231 define(
2232 $StringIteratorPrototype$, 'next',
2233 function next() {
2234 var o = ToObject(this);
2235 var s = String(o['[[IteratedString]]']),
2236 index = o['[[StringIteratorNextIndex]]'],
2237 len = s.length;
2238 if (index >= len) {
2239 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2240 return CreateIterResultObject(undefined, true);
2241 }
2242 var cp = s.codePointAt(index);
2243 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2244 return CreateIterResultObject(String.fromCodePoint(cp), false);
2245 });
2246
2247 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2248 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2249
2250 // 21.1.5.3 Properties of String Iterator Instances
2251
2252 // ---------------------------------------
2253 // 21.2 RegExp (Regular Expression) Objects
2254 // ---------------------------------------
2255
2256 // 21.2.1 Patterns
2257 // 21.2.2 Pattern Semantics
2258 // 21.2.2.1 Notation
2259 // 21.2.2.2 Pattern
2260 // 21.2.2.3 Disjunction
2261 // 21.2.2.4 Alternative
2262 // 21.2.2.5 Term
2263 // 21.2.2.6 Assertion
2264 // 21.2.2.7 Quantifier
2265 // 21.2.2.8 Atom
2266 // 21.2.2.9 AtomEscape
2267 // 21.2.2.10 CharacterEscape
2268 // 21.2.2.11 DecimalEscape
2269 // 21.2.2.12 CharacterClassEscape
2270 // 21.2.2.13 CharacterClass
2271 // 21.2.2.14 ClassRanges
2272 // 21.2.2.15 NonemptyClassRanges
2273 // 21.2.2.16 NonemptyClassRangesNoDash
2274 // 21.2.2.17 ClassAtom
2275 // 21.2.2.18 ClassAtomNoDash
2276 // 21.2.2.19 ClassEscape
2277 // 21.2.3 The RegExp Constructor
2278 // 21.2.3.1 RegExp ( pattern, flags )
2279 // 21.2.3.2 new RegExp( ...argumentsList )
2280 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2281 // 21.2.4 Properties of the RegExp Constructor
2282 // 21.2.4.1 RegExp.prototype
2283 // 21.2.5 Properties of the RegExp Prototype Object
2284 // 21.2.5.1 RegExp.prototype.constructor
2285 // 21.2.5.2 RegExp.prototype.exec ( string )
2286
2287 // 21.2.5.3 get RegExp.prototype.flags
2288 if (!('flags' in RegExp.prototype)) {
2289 Object.defineProperty(
2290 RegExp.prototype, 'flags', {
2291 get: function() {
2292 var s = String(this);
2293 return s.substring(s.lastIndexOf('/') + 1);
2294 }
2295 });
2296 }
2297
2298 // 21.2.5.4 get RegExp.prototype.global
2299 // 21.2.5.5 get RegExp.prototype.ignoreCase
2300
2301 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2302 define(RegExp.prototype, $$match, function(string) {
2303 var o = strict(this);
2304 return orig_match.call(string, o);
2305 });
2306
2307 // 21.2.5.7 get RegExp.prototype.multiline
2308
2309 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2310 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2311 var o = strict(this);
2312 return orig_replace.call(string, o, replaceValue);
2313 });
2314
2315 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2316 define(RegExp.prototype, $$search, function(string) {
2317 var o = strict(this);
2318 return orig_search.call(string, o);
2319 });
2320
2321 // 21.2.5.10 get RegExp.prototype.source
2322
2323 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2324 define(RegExp.prototype, $$split, function(string, limit) {
2325 var o = strict(this);
2326 return orig_split.call(string, o, limit);
2327 });
2328
2329 // 21.2.5.12 get RegExp.prototype.sticky
2330 // 21.2.5.13 RegExp.prototype.test( S )
2331 // 21.2.5.14 RegExp.prototype.toString ( )
2332 // 21.2.5.15 get RegExp.prototype.unicode
2333
2334 // 21.2.6 Properties of RegExp Instances
2335 // 21.2.6.1 lastIndex
2336
2337 // (No polyfillable changes from ES5)
2338
2339 // ---------------------------------------
2340 // 22 Indexed Collections
2341 // ---------------------------------------
2342
2343 // ---------------------------------------
2344 // 22.1 Array Objects
2345 // ---------------------------------------
2346
2347 // 22.1.1 The Array Constructor
2348 // 22.1.1.1 Array ( )
2349 // 22.1.1.2 Array (len)
2350 // 22.1.1.3 Array (...items )
2351
2352 // 22.1.2 Properties of the Array Constructor
2353
2354 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2355 define(
2356 Array, 'from',
2357 function from(items) {
2358 var mapfn = arguments[1];
2359 var thisArg = arguments[2];
2360
2361 var c = strict(this);
2362 if (mapfn === undefined) {
2363 var mapping = false;
2364 } else {
2365 if (!IsCallable(mapfn)) throw TypeError();
2366 var t = thisArg;
2367 mapping = true;
2368 }
2369 var usingIterator = GetMethod(items, $$iterator);
2370 if (usingIterator !== undefined) {
2371 if (IsConstructor(c)) {
2372 var a = new c();
2373 } else {
2374 a = new Array(0);
2375 }
2376 var iterator = GetIterator(items, usingIterator);
2377 var k = 0;
2378 while (true) {
2379 var next = IteratorStep(iterator);
2380 if (next === false) {
2381 a.length = k;
2382 return a;
2383 }
2384 var nextValue = IteratorValue(next);
2385 if (mapping)
2386 var mappedValue = mapfn.call(t, nextValue);
2387 else
2388 mappedValue = nextValue;
2389 a[k] = mappedValue;
2390 k += 1;
2391 }
2392 }
2393 var arrayLike = ToObject(items);
2394 var lenValue = arrayLike.length;
2395 var len = ToLength(lenValue);
2396 if (IsConstructor(c)) {
2397 a = new c(len);
2398 } else {
2399 a = new Array(len);
2400 }
2401 k = 0;
2402 while (k < len) {
2403 var kValue = arrayLike[k];
2404 if (mapping)
2405 mappedValue = mapfn.call(t, kValue, k);
2406 else
2407 mappedValue = kValue;
2408 a[k] = mappedValue;
2409 k += 1;
2410 }
2411 a.length = len;
2412 return a;
2413 });
2414
2415 // 22.1.2.2 Array.isArray ( arg )
2416
2417 // 22.1.2.3 Array.of ( ...items )
2418 define(
2419 Array, 'of',
2420 function of() {
2421 var items = arguments;
2422
2423 var lenValue = items.length;
2424 var len = ToUint32(lenValue);
2425 var c = strict(this), a;
2426 if (IsConstructor(c)) {
2427 a = new c(len);
2428 a = ToObject(a);
2429 } else {
2430 a = new Array(len);
2431 }
2432 var k = 0;
2433 while (k < len) {
2434 a[k] = items[k];
2435 k += 1;
2436 }
2437 a.length = len;
2438 return a;
2439 });
2440
2441 // 22.1.2.4 Array.prototype
2442 // 22.1.2.5 get Array [ @@species ]
2443 // 22.1.3 Properties of the Array Prototype Object
2444 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2445 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2446 // 22.1.3.2 Array.prototype.constructor
2447 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2448 define(
2449 Array.prototype, 'copyWithin',
2450 function copyWithin(target, start/*, end*/) {
2451 var end = arguments[2];
2452
2453 var o = ToObject(this);
2454 var lenVal = o.length;
2455 var len = ToLength(lenVal);
2456 len = max(len, 0);
2457 var relativeTarget = ToInteger(target);
2458 var to;
2459 if (relativeTarget < 0)
2460 to = max(len + relativeTarget, 0);
2461 else
2462 to = min(relativeTarget, len);
2463 var relativeStart = ToInteger(start);
2464 var from;
2465 if (relativeStart < 0)
2466 from = max(len + relativeStart, 0);
2467 else
2468 from = min(relativeStart, len);
2469 var relativeEnd;
2470 if (end === undefined)
2471 relativeEnd = len;
2472 else
2473 relativeEnd = ToInteger(end);
2474 var final;
2475 if (relativeEnd < 0)
2476 final = max(len + relativeEnd, 0);
2477 else
2478 final = min(relativeEnd, len);
2479 var count = min(final - from, len - to);
2480 var direction;
2481 if (from < to && to < from + count) {
2482 direction = -1;
2483 from = from + count - 1;
2484 to = to + count - 1;
2485 } else {
2486 direction = 1;
2487 }
2488 while (count > 0) {
2489 var fromKey = String(from);
2490 var toKey = String(to);
2491 var fromPresent = HasProperty(o, fromKey);
2492 if (fromPresent) {
2493 var fromVal = o[fromKey];
2494 o[toKey] = fromVal;
2495 } else {
2496 delete o[toKey];
2497 }
2498 from = from + direction;
2499 to = to + direction;
2500 count = count - 1;
2501 }
2502 return o;
2503 });
2504
2505 // 22.1.3.4 Array.prototype.entries ( )
2506 var nativeArrayIteratorMethods =
2507 ('entries' in Array.prototype && 'next' in [].entries());
2508
2509 define(
2510 Array.prototype, 'entries',
2511 function entries() {
2512 return CreateArrayIterator(this, 'key+value');
2513 }, !nativeArrayIteratorMethods);
2514
2515 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2516
2517 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2518 define(
2519 Array.prototype, 'fill',
2520 function fill(value/*, start, end*/) {
2521 var start = arguments[1],
2522 end = arguments[2];
2523
2524 var o = ToObject(this);
2525 var lenVal = o.length;
2526 var len = ToLength(lenVal);
2527 len = max(len, 0);
2528 var relativeStart = ToInteger(start);
2529 var k;
2530 if (relativeStart < 0)
2531 k = max((len + relativeStart), 0);
2532 else
2533 k = min(relativeStart, len);
2534 var relativeEnd;
2535 if (end === undefined)
2536 relativeEnd = len;
2537 else
2538 relativeEnd = ToInteger(end);
2539 var final;
2540 if (relativeEnd < 0)
2541 final = max((len + relativeEnd), 0);
2542 else
2543 final = min(relativeEnd, len);
2544 while (k < final) {
2545 var pk = String(k);
2546 o[pk] = value;
2547 k += 1;
2548 }
2549 return o;
2550 });
2551
2552 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2553
2554 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2555 define(
2556 Array.prototype, 'find',
2557 function find(predicate) {
2558 var o = ToObject(this);
2559 var lenValue = o.length;
2560 var len = ToInteger(lenValue);
2561 if (!IsCallable(predicate)) throw TypeError();
2562 var t = arguments.length > 1 ? arguments[1] : undefined;
2563 var k = 0;
2564 while (k < len) {
2565 var pk = String(k);
2566 var kPresent = HasProperty(o, pk);
2567 if (kPresent) {
2568 var kValue = o[pk];
2569 var testResult = predicate.call(t, kValue, k, o);
2570 if (Boolean(testResult)) {
2571 return kValue;
2572 }
2573 }
2574 ++k;
2575 }
2576 return undefined;
2577 });
2578
2579 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2580 define(
2581 Array.prototype, 'findIndex',
2582 function findIndex(predicate) {
2583 var o = ToObject(this);
2584 var lenValue = o.length;
2585 var len = ToLength(lenValue);
2586 if (!IsCallable(predicate)) throw TypeError();
2587 var t = arguments.length > 1 ? arguments[1] : undefined;
2588 var k = 0;
2589 while (k < len) {
2590 var pk = String(k);
2591 var kPresent = HasProperty(o, pk);
2592 if (kPresent) {
2593 var kValue = o[pk];
2594 var testResult = predicate.call(t, kValue, k, o);
2595 if (Boolean(testResult)) {
2596 return k;
2597 }
2598 }
2599 ++k;
2600 }
2601 return -1;
2602 });
2603
2604 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2605 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2606 // 22.1.3.12 Array.prototype.join (separator)
2607
2608 // 22.1.3.13 Array.prototype.keys ( )
2609 define(
2610 Array.prototype, 'keys',
2611 function keys() {
2612 return CreateArrayIterator(this, 'key');
2613 }, !nativeArrayIteratorMethods);
2614
2615 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2616 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2617 // 22.1.3.16 Array.prototype.pop ( )
2618 // 22.1.3.17 Array.prototype.push ( ...items )
2619 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2620 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2621 // 22.1.3.20 Array.prototype.reverse ( )
2622 // 22.1.3.21 Array.prototype.shift ( )
2623 // 22.1.3.22 Array.prototype.slice (start, end)
2624 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2625 // 22.1.3.24 Array.prototype.sort (comparefn)
2626 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2627 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2628 // 22.1.3.27 Array.prototype.toString ( )
2629 // 22.1.3.28 Array.prototype.unshift ( ...items )
2630
2631 // 22.1.3.29 Array.prototype.values ( )
2632 define(
2633 Array.prototype, 'values',
2634 function values() {
2635 return CreateArrayIterator(this, 'value');
2636 }, !nativeArrayIteratorMethods);
2637
2638 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2639 define(
2640 Array.prototype, $$iterator,
2641 Array.prototype.values
2642 );
2643
2644 // 22.1.3.31 Array.prototype [ @@unscopables ]
2645 // 22.1.4 Properties of Array Instances
2646 // 22.1.4.1 length
2647
2648 // 22.1.5 Array Iterator Objects
2649 function ArrayIterator() {}
2650
2651 // 22.1.5.1 CreateArrayIterator Abstract Operation
2652 function CreateArrayIterator(array, kind) {
2653 var o = ToObject(array);
2654 var iterator = new ArrayIterator;
2655 set_internal(iterator, '[[IteratedObject]]', o);
2656 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2657 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2658 return iterator;
2659 }
2660
2661 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2662 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2663 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2664
2665 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2666 define(
2667 $ArrayIteratorPrototype$, 'next',
2668 function next() {
2669 var o = strict(this);
2670 if (Type(o) !== 'object') throw TypeError();
2671 var a = o['[[IteratedObject]]'],
2672 index = o['[[ArrayIteratorNextIndex]]'],
2673 itemKind = o['[[ArrayIterationKind]]'],
2674 lenValue = a.length,
2675 len = ToUint32(lenValue),
2676 elementKey,
2677 elementValue;
2678 if (itemKind.indexOf('sparse') !== -1) {
2679 var found = false;
2680 while (!found && index < len) {
2681 elementKey = String(index);
2682 found = HasProperty(a, elementKey);
2683 if (!found) {
2684 index += 1;
2685 }
2686 }
2687 }
2688 if (index >= len) {
2689 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2690 return CreateIterResultObject(undefined, true);
2691 }
2692 elementKey = index;
2693 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2694 if (itemKind.indexOf('value') !== -1)
2695 elementValue = a[elementKey];
2696 if (itemKind.indexOf('key+value') !== -1)
2697 return CreateIterResultObject([elementKey, elementValue], false);
2698 if (itemKind.indexOf('key') !== -1)
2699 return CreateIterResultObject(elementKey, false);
2700 if (itemKind === 'value')
2701 return CreateIterResultObject(elementValue, false);
2702 throw Error('Internal error');
2703 });
2704
2705 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2706 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2707
2708 // 22.1.5.3 Properties of Array Iterator Instances
2709
2710
2711 // ---------------------------------------
2712 // 22.2 TypedArray Objects
2713 // ---------------------------------------
2714
2715 // See typedarray.js for TypedArray polyfill
2716
2717 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2718 'Int16Array', 'Uint16Array',
2719 'Int32Array', 'Uint32Array',
2720 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2721 if (!($TypedArrayName$ in global))
2722 return;
2723 var $TypedArray$ = global[$TypedArrayName$];
2724
2725 // 22.2.1 The %TypedArray% Intrinsic Object
2726 // 22.2.1.1 %TypedArray% ( length )
2727 // 22.2.1.2 %TypedArray% ( typedArray )
2728 // 22.2.1.3 %TypedArray% ( object )
2729 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2730 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2731 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2732
2733 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2734 define(
2735 $TypedArray$, 'from',
2736 function from(source) {
2737 var mapfn = arguments[1];
2738 var thisArg = arguments[2];
2739
2740 var c = strict(this);
2741 if (!IsConstructor(c)) throw TypeError();
2742 if (mapfn === undefined) {
2743 var mapping = false;
2744 } else {
2745 if (IsCallable(mapfn)) throw TypeError();
2746 var t = thisArg;
2747 mapping = true;
2748 }
2749 var usingIterator = GetMethod(source, $$iterator);
2750 if (usingIterator !== undefined) {
2751 var iterator = GetIterator(source, usingIterator);
2752 var values = [];
2753 var next = true;
2754 while (next !== false) {
2755 next = IteratorStep(iterator);
2756 if (next !== false) {
2757 var nextValue = IteratorValue(next);
2758 values.push(nextValue);
2759 }
2760 }
2761 var len = values.length;
2762 var newObj = new c(len);
2763 var k = 0;
2764 while (k < len) {
2765 var kValue = values.shift();
2766 if (mapping) {
2767 var mappedValue = mapfn.call(t, kValue);
2768 } else {
2769 mappedValue = kValue;
2770 }
2771 newObj[k] = mappedValue;
2772 ++k;
2773 }
2774 console.assert(values.length === 0);
2775 return newObj;
2776 }
2777 var arrayLike = ToObject(source);
2778 var lenValue = arrayLike.length;
2779 len = ToLength(lenValue);
2780 newObj = new c(len);
2781 k = 0;
2782 while (k < len) {
2783 kValue = arrayLike[k];
2784 if (mapping) {
2785 mappedValue = mapfn.call(t, kValue, k);
2786 } else {
2787 mappedValue = kValue;
2788 }
2789 newObj[k] = mappedValue;
2790 ++k;
2791 }
2792 return newObj;
2793 });
2794
2795 // 22.2.2.2 %TypedArray%.of ( ...items )
2796 define(
2797 $TypedArray$, 'of',
2798 function of() {
2799 var items = arguments;
2800
2801 var len = items.length;
2802 var c = strict(this);
2803 var newObj = new c(len);
2804 var k = 0;
2805 while (k < len) {
2806 newObj[k] = items[k];
2807 ++k;
2808 }
2809 return newObj;
2810 });
2811
2812 // 22.2.2.3 %TypedArray%.prototype
2813 // 22.2.2.4 get %TypedArray% [ @@species ]
2814 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2815 // 22.2.3.1 get %TypedArray%.prototype.buffer
2816 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2817 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2818 // 22.2.3.4 %TypedArray%.prototype.constructor
2819
2820 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2821 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2822
2823 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2824 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2825
2826 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2827 define($TypedArray$.prototype, 'every', Array.prototype.every);
2828
2829 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2830 define(
2831 $TypedArray$.prototype, 'fill',
2832 //Array.prototype.fill // Doesn't work in Safari 7
2833 function fill(value/*, start, end*/) {
2834 var start = arguments[1],
2835 end = arguments[2];
2836
2837 var o = ToObject(this);
2838 var lenVal = o.length;
2839 var len = ToLength(lenVal);
2840 len = max(len, 0);
2841 var relativeStart = ToInteger(start);
2842 var k;
2843 if (relativeStart < 0) k = max((len + relativeStart), 0);
2844 else k = min(relativeStart, len);
2845 var relativeEnd;
2846 if (end === undefined) relativeEnd = len;
2847 else relativeEnd = ToInteger(end);
2848 var final;
2849 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2850 else final = min(relativeEnd, len);
2851 while (k < final) {
2852 var pk = String(k);
2853 o[pk] = value;
2854 k += 1;
2855 }
2856 return o;
2857 });
2858
2859 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2860 define(
2861 $TypedArray$.prototype, 'filter',
2862 function filter(callbackfn) {
2863 var thisArg = arguments[1];
2864
2865 var o = ToObject(this);
2866 var lenVal = o.length;
2867 var len = ToLength(lenVal);
2868 if (!IsCallable(callbackfn)) throw TypeError();
2869 var t = thisArg;
2870 var c = o.constructor;
2871 var kept = [];
2872 var k = 0;
2873 var captured = 0;
2874 while (k < len) {
2875 var kValue = o[k];
2876 var selected = callbackfn.call(t, kValue, k, o);
2877 if (selected) {
2878 kept.push(kValue);
2879 ++captured;
2880 }
2881 ++k;
2882 }
2883 var a = new c(captured);
2884 var n = 0;
2885 for (var i = 0; i < kept.length; ++i) {
2886 var e = kept[i];
2887 a[n] = e;
2888 ++n;
2889 }
2890 return a;
2891 });
2892
2893 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2894 define($TypedArray$.prototype, 'find', Array.prototype.find);
2895
2896 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2897 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2898
2899 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2900 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2901
2902 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2903 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2904
2905 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2906 define($TypedArray$.prototype, 'join', Array.prototype.join);
2907
2908 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2909 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2910
2911 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2912 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2913
2914 // 22.2.3.17 get %TypedArray%.prototype.length
2915
2916 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2917 define(
2918 $TypedArray$.prototype, 'map',
2919 function map(callbackfn) {
2920 var thisArg = arguments[1];
2921
2922 var o = ToObject(this);
2923 var lenValue = o.length;
2924 var len = ToLength(lenValue);
2925 if (!IsCallable(callbackfn)) throw TypeError();
2926 var t = thisArg;
2927 var a = undefined;
2928 var c = o.constructor;
2929 if (IsConstructor(c))
2930 a = new c(len);
2931 if (a === undefined)
2932 a = new Array(len);
2933 var k = 0;
2934 while (k < len) {
2935 var kPresent = HasProperty(o, k);
2936 if (kPresent) {
2937 var kValue = o[k];
2938 var mappedValue = callbackfn.call(t, kValue, k, o);
2939 a[k] = mappedValue;
2940 }
2941 ++k;
2942 }
2943 return a;
2944 });
2945
2946 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2947 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2948
2949 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2950 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2951
2952 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2953 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2954
2955 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2956 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2957 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2958
2959 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2960 define(
2961 $TypedArray$.prototype, 'slice',
2962 function slice(start, end) {
2963 var o = ToObject(this);
2964 var lenVal = o.length;
2965 var len = ToLength(lenVal);
2966 var relativeStart = ToInteger(start);
2967 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2968 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2969 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2970 var count = final - k;
2971 var c = o.constructor;
2972 if (IsConstructor(c)) {
2973 var a = new c(count);
2974 } else {
2975 throw TypeError();
2976 }
2977 var n = 0;
2978 while (k < final) {
2979 var kValue = o[k];
2980 a[n] = kValue;
2981 ++k;
2982 ++n;
2983 }
2984 return a;
2985 });
2986
2987 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2988 define($TypedArray$.prototype, 'some', Array.prototype.some);
2989
2990 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2991 define(
2992 $TypedArray$.prototype, 'sort',
2993 function sort() {
2994 var comparefn = arguments[0];
2995
2996 function sortCompare(x, y) {
2997 console.assert(Type(x) === 'number' && Type(y) === 'number');
2998 if (x !== x && y !== y) return +0;
2999 if (x !== x) return 1;
3000 if (y !== y) return -1;
3001 if (comparefn !== undefined) {
3002 return comparefn(x, y);
3003 }
3004 if (x < y) return -1;
3005 if (x > y) return 1;
3006 return +0;
3007 }
3008 return Array.prototype.sort.call(this, sortCompare);
3009 });
3010
3011 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3012 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3013 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3014
3015 // 22.2.3.29 %TypedArray%.prototype.values ( )
3016 define($TypedArray$.prototype, 'values', Array.prototype.values);
3017
3018 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3019 define(
3020 $TypedArray$.prototype, $$iterator,
3021 $TypedArray$.prototype.values
3022 );
3023
3024 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3025 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3026
3027 // 22.2.4 The TypedArray Constructors
3028 // 22.2.4.1TypedArray( ... argumentsList)
3029 // 22.2.5 Properties of the TypedArray Constructors
3030 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3031 // 22.2.5.2 TypedArray.prototype
3032 // 22.2.6 Properties of TypedArray Prototype Objects
3033 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3034 // 22.2.6.2 TypedArray.prototype.constructor
3035 // 22.2.7 Properties of TypedArray Instances
3036 });
3037
3038 // ---------------------------------------
3039 // 23 Keyed Collection
3040 // ---------------------------------------
3041
3042 // ---------------------------------------
3043 // 23.1 Map Objects
3044 // ---------------------------------------
3045
3046 (function() {
3047 // 23.1.1 The Map Constructor
3048
3049 // 23.1.1.1 Map ( [ iterable ] )
3050 /** @constructor */
3051 function Map(/*iterable*/) {
3052 var map = strict(this);
3053 var iterable = arguments[0];
3054
3055 if (Type(map) !== 'object') throw TypeError();
3056 if ('[[MapData]]' in map) throw TypeError();
3057
3058 if (iterable !== undefined) {
3059 var adder = map['set'];
3060 if (!IsCallable(adder)) throw TypeError();
3061 var iter = GetIterator(ToObject(iterable));
3062 }
3063 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3064 if (iter === undefined) return map;
3065 while (true) {
3066 var next = IteratorStep(iter);
3067 if (next === false)
3068 return map;
3069 var nextItem = IteratorValue(next);
3070 if (Type(nextItem) !== 'object') throw TypeError();
3071 var k = nextItem[0];
3072 var v = nextItem[1];
3073 adder.call(map, k, v);
3074 }
3075
3076 return map;
3077 }
3078
3079 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3080 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3081 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3082 (new global.Map([['a', 1]]).size !== 1))
3083 global.Map = Map;
3084
3085
3086 function MapDataIndexOf(mapData, key) {
3087 var i;
3088 if (key === key) return mapData.keys.indexOf(key);
3089 // Slow case for NaN
3090 for (i = 0; i < mapData.keys.length; i += 1)
3091 if (SameValueZero(mapData.keys[i], key)) return i;
3092 return -1;
3093 }
3094
3095 // 23.1.1.2 new Map ( ... argumentsList )
3096 // 23.1.2 Properties of the Map Constructor
3097 // 23.1.2.1 Map.prototype
3098 var $MapPrototype$ = {};
3099 Map.prototype = $MapPrototype$;
3100
3101 // 23.1.2.2 get Map [ @@species ]
3102
3103 // 23.1.3 Properties of the Map Prototype Object
3104 // 23.1.3.1 Map.prototype.clear ()
3105 define(
3106 Map.prototype, 'clear',
3107 function clear() {
3108 var m = strict(this);
3109 if (Type(m) !== 'object') throw TypeError();
3110 if (!('[[MapData]]' in m)) throw TypeError();
3111 if (m['[[MapData]]'] === undefined) throw TypeError();
3112 var entries = m['[[MapData]]'];
3113 entries.keys.length = 0;
3114 entries.values.length = 0;
3115 return undefined;
3116 });
3117
3118 // 23.1.3.2 Map.prototype.constructor
3119
3120 // 23.1.3.3 Map.prototype.delete ( key )
3121 define(
3122 Map.prototype, 'delete',
3123 function delete_(key) {
3124 var m = strict(this);
3125 if (Type(m) !== 'object') throw TypeError();
3126 if (!('[[MapData]]' in m)) throw TypeError();
3127 if (m['[[MapData]]'] === undefined) throw TypeError();
3128 var entries = m['[[MapData]]'];
3129 var i = MapDataIndexOf(entries, key);
3130 if (i < 0) return false;
3131 entries.keys[i] = empty;
3132 entries.values[i] = empty;
3133 return true;
3134 });
3135
3136 // 23.1.3.4 Map.prototype.entries ( )
3137 define(
3138 Map.prototype, 'entries',
3139 function entries() {
3140 var m = strict(this);
3141 if (Type(m) !== 'object') throw TypeError();
3142 return CreateMapIterator(m, 'key+value');
3143 });
3144
3145 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3146 define(
3147 Map.prototype, 'forEach',
3148 function forEach(callbackfn /*, thisArg*/) {
3149 var thisArg = arguments[1];
3150
3151 var m = strict(this);
3152 if (Type(m) !== 'object') throw TypeError();
3153 if (!('[[MapData]]' in m)) throw TypeError();
3154 if (m['[[MapData]]'] === undefined) throw TypeError();
3155 var entries = m['[[MapData]]'];
3156
3157 if (!IsCallable(callbackfn)) {
3158 throw TypeError('First argument to forEach is not callable.');
3159 }
3160 for (var i = 0; i < entries.keys.length; ++i) {
3161 if (entries.keys[i] !== empty) {
3162 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3163 }
3164 }
3165 return undefined;
3166 });
3167
3168 // 23.1.3.6 Map.prototype.get ( key )
3169 define(
3170 Map.prototype, 'get',
3171 function get(key) {
3172 var m = strict(this);
3173 if (Type(m) !== 'object') throw TypeError();
3174 if (!('[[MapData]]' in m)) throw TypeError();
3175 if (m['[[MapData]]'] === undefined) throw TypeError();
3176 var entries = m['[[MapData]]'];
3177 var i = MapDataIndexOf(entries, key);
3178 if (i >= 0) return entries.values[i];
3179 return undefined;
3180 });
3181
3182 // 23.1.3.7 Map.prototype.has ( key )
3183 define(
3184 Map.prototype, 'has',
3185 function has(key) {
3186 var m = strict(this);
3187 if (Type(m) !== 'object') throw TypeError();
3188 if (!('[[MapData]]' in m)) throw TypeError();
3189 if (m['[[MapData]]'] === undefined) throw TypeError();
3190 var entries = m['[[MapData]]'];
3191 if (MapDataIndexOf(entries, key) >= 0) return true;
3192 return false;
3193 });
3194
3195 // 23.1.3.8 Map.prototype.keys ( )
3196 define(
3197 Map.prototype, 'keys',
3198 function keys() {
3199 var m = strict(this);
3200 if (Type(m) !== 'object') throw TypeError();
3201 return CreateMapIterator(m, 'key');
3202 });
3203
3204 // 23.1.3.9 Map.prototype.set ( key , value )
3205 define(
3206 Map.prototype, 'set',
3207 function set(key, value) {
3208 var m = strict(this);
3209 if (Type(m) !== 'object') throw TypeError();
3210 if (!('[[MapData]]' in m)) throw TypeError();
3211 if (m['[[MapData]]'] === undefined) throw TypeError();
3212 var entries = m['[[MapData]]'];
3213 var i = MapDataIndexOf(entries, key);
3214 if (i < 0) i = entries.keys.length;
3215 if (SameValue(key, -0)) key = 0;
3216 entries.keys[i] = key;
3217 entries.values[i] = value;
3218 return m;
3219 });
3220
3221 // 23.1.3.10 get Map.prototype.size
3222 Object.defineProperty(
3223 Map.prototype, 'size', {
3224 get: function() {
3225 var m = strict(this);
3226 if (Type(m) !== 'object') throw TypeError();
3227 if (!('[[MapData]]' in m)) throw TypeError();
3228 if (m['[[MapData]]'] === undefined) throw TypeError();
3229 var entries = m['[[MapData]]'];
3230 var count = 0;
3231 for (var i = 0; i < entries.keys.length; ++i) {
3232 if (entries.keys[i] !== empty)
3233 count = count + 1;
3234 }
3235 return count;
3236 }
3237 });
3238
3239 // 23.1.3.11 Map.prototype.values ( )
3240 define(
3241 Map.prototype, 'values',
3242 function values() {
3243 var m = strict(this);
3244 if (Type(m) !== 'object') throw TypeError();
3245 return CreateMapIterator(m, 'value');
3246 });
3247
3248 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3249 define(
3250 Map.prototype, $$iterator,
3251 function() {
3252 var m = strict(this);
3253 if (Type(m) !== 'object') throw TypeError();
3254 return CreateMapIterator(m, 'key+value');
3255 });
3256
3257 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3258 define(global.Map.prototype, $$toStringTag, 'Map');
3259
3260 // 23.1.4 Properties of Map Instances
3261 // 23.1.5 Map Iterator Objects
3262
3263 /** @constructor */
3264 function MapIterator() {}
3265
3266 // 23.1.5.1 CreateMapIterator Abstract Operation
3267 function CreateMapIterator(map, kind) {
3268 if (Type(map) !== 'object') throw TypeError();
3269 if (!('[[MapData]]' in map)) throw TypeError();
3270 if (map['[[MapData]]'] === undefined) throw TypeError();
3271 var iterator = new MapIterator;
3272 set_internal(iterator, '[[Map]]', map);
3273 set_internal(iterator, '[[MapNextIndex]]', 0);
3274 set_internal(iterator, '[[MapIterationKind]]', kind);
3275 return iterator;
3276 }
3277
3278 // 23.1.5.2 The %MapIteratorPrototype% Object
3279 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3280 MapIterator.prototype = $MapIteratorPrototype$;
3281
3282 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3283 define(
3284 $MapIteratorPrototype$, 'next',
3285 function next() {
3286 var o = strict(this);
3287 if (Type(o) !== 'object') throw TypeError();
3288 var m = o['[[Map]]'],
3289 index = o['[[MapNextIndex]]'],
3290 itemKind = o['[[MapIterationKind]]'],
3291 entries = m['[[MapData]]'];
3292 while (index < entries.keys.length) {
3293 var e = {key: entries.keys[index], value: entries.values[index]};
3294 index = index += 1;
3295 set_internal(o, '[[MapNextIndex]]', index);
3296 if (e.key !== empty) {
3297 if (itemKind === 'key') {
3298 return CreateIterResultObject(e.key, false);
3299 } else if (itemKind === 'value') {
3300 return CreateIterResultObject(e.value, false);
3301 } else {
3302 return CreateIterResultObject([e.key, e.value], false);
3303 }
3304 }
3305 }
3306 return CreateIterResultObject(undefined, true);
3307 });
3308
3309 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3310 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3311
3312 // 23.1.5.3 Properties of Map Iterator Instances
3313 }());
3314
3315 // ---------------------------------------
3316 // 23.2 Set Objects
3317 // ---------------------------------------
3318
3319 (function() {
3320 // 23.2.1 The Set Constructor
3321 // 23.2.1.1 Set ( [ iterable ] )
3322
3323 /** @constructor */
3324 function Set(/*iterable*/) {
3325 var set = strict(this);
3326 var iterable = arguments[0];
3327
3328 if (Type(set) !== 'object') throw TypeError();
3329 if ('[[SetData]]' in set) throw TypeError();
3330
3331 if (iterable !== undefined) {
3332 var adder = set['add'];
3333 if (!IsCallable(adder)) throw TypeError();
3334 var iter = GetIterator(ToObject(iterable));
3335 }
3336 set_internal(set, '[[SetData]]', []);
3337 if (iter === undefined) return set;
3338 while (true) {
3339 var next = IteratorStep(iter);
3340 if (next === false)
3341 return set;
3342 var nextValue = IteratorValue(next);
3343 adder.call(set, nextValue);
3344 }
3345
3346 return set;
3347 }
3348
3349 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3350 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3351 (new global.Set([1]).size !== 1))
3352 global.Set = Set;
3353
3354 function SetDataIndexOf(setData, key) {
3355 var i;
3356 if (key === key)
3357 return setData.indexOf(key);
3358 // Slow case for NaN
3359 for (i = 0; i < setData.length; i += 1)
3360 if (SameValueZero(setData[i], key)) return i;
3361 return -1;
3362 }
3363
3364 // 23.2.1.2 new Set ( ...argumentsList )
3365 // 23.2.2 Properties of the Set Constructor
3366
3367 // 23.2.2.1 Set.prototype
3368 var $SetPrototype$ = {};
3369 Set.prototype = $SetPrototype$;
3370
3371 // 23.2.2.2 get Set [ @@species ]
3372 // 23.2.3 Properties of the Set Prototype Object
3373
3374 // 23.2.3.1 Set.prototype.add (value )
3375 define(
3376 Set.prototype, 'add',
3377 function add(value) {
3378 var s = strict(this);
3379 if (Type(s) !== 'object') throw TypeError();
3380 if (!('[[SetData]]' in s)) throw TypeError();
3381 if (s['[[SetData]]'] === undefined) throw TypeError();
3382 if (SameValue(value, -0)) value = 0;
3383 var entries = s['[[SetData]]'];
3384 var i = SetDataIndexOf(entries, value);
3385 if (i < 0) i = s['[[SetData]]'].length;
3386 s['[[SetData]]'][i] = value;
3387
3388 return s;
3389 });
3390
3391 // 23.2.3.2 Set.prototype.clear ()
3392 define(
3393 Set.prototype, 'clear',
3394 function clear() {
3395 var s = strict(this);
3396 if (Type(s) !== 'object') throw TypeError();
3397 if (!('[[SetData]]' in s)) throw TypeError();
3398 if (s['[[SetData]]'] === undefined) throw TypeError();
3399 var entries = s['[[SetData]]'];
3400 entries.length = 0;
3401 return undefined;
3402 });
3403
3404 // 23.2.3.3 Set.prototype.constructor
3405 // 23.2.3.4 Set.prototype.delete ( value )
3406 define(
3407 Set.prototype, 'delete',
3408 function delete_(value) {
3409 var s = strict(this);
3410 if (Type(s) !== 'object') throw TypeError();
3411 if (!('[[SetData]]' in s)) throw TypeError();
3412 if (s['[[SetData]]'] === undefined) throw TypeError();
3413 var entries = s['[[SetData]]'];
3414 var i = SetDataIndexOf(entries, value);
3415 if (i < 0) return false;
3416 entries[i] = empty;
3417 return true;
3418 });
3419
3420 // 23.2.3.5 Set.prototype.entries ( )
3421 define(
3422 Set.prototype, 'entries',
3423 function entries() {
3424 var s = strict(this);
3425 if (Type(s) !== 'object') throw TypeError();
3426 return CreateSetIterator(s, 'key+value');
3427 });
3428
3429 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3430 define(
3431 Set.prototype, 'forEach',
3432 function forEach(callbackfn/*, thisArg*/) {
3433 var thisArg = arguments[1];
3434
3435 var s = strict(this);
3436 if (Type(s) !== 'object') throw TypeError();
3437 if (!('[[SetData]]' in s)) throw TypeError();
3438 if (s['[[SetData]]'] === undefined) throw TypeError();
3439 var entries = s['[[SetData]]'];
3440
3441 if (!IsCallable(callbackfn)) {
3442 throw TypeError('First argument to forEach is not callable.');
3443 }
3444 for (var i = 0; i < entries.length; ++i) {
3445 if (entries[i] !== empty) {
3446 callbackfn.call(thisArg, entries[i], entries[i], s);
3447 }
3448 }
3449 });
3450
3451 // 23.2.3.7 Set.prototype.has ( value )
3452 define(
3453 Set.prototype, 'has',
3454 function has(key) {
3455 var s = strict(this);
3456 if (Type(s) !== 'object') throw TypeError();
3457 if (!('[[SetData]]' in s)) throw TypeError();
3458 if (s['[[SetData]]'] === undefined) throw TypeError();
3459 var entries = s['[[SetData]]'];
3460 return SetDataIndexOf(entries, key) !== -1;
3461 });
3462
3463 // 23.2.3.8 Set.prototype.keys ( )
3464 // See Set.prototype.values
3465
3466 // 23.2.3.9 get Set.prototype.size
3467 Object.defineProperty(
3468 Set.prototype, 'size', {
3469 get: function() {
3470 var s = strict(this);
3471 if (Type(s) !== 'object') throw TypeError();
3472 if (!('[[SetData]]' in s)) throw TypeError();
3473 if (s['[[SetData]]'] === undefined) throw TypeError();
3474 var entries = s['[[SetData]]'];
3475 var count = 0;
3476 for (var i = 0; i < entries.length; ++i) {
3477 if (entries[i] !== empty)
3478 count = count + 1;
3479 }
3480 return count;
3481 }
3482 });
3483
3484 // 23.2.3.10 Set.prototype.values ( )
3485 define(
3486 Set.prototype, 'values',
3487 function values() {
3488 var s = strict(this);
3489 if (Type(s) !== 'object') throw TypeError();
3490 return CreateSetIterator(s, 'value');
3491 });
3492 // NOTE: function name is still 'values':
3493 Set.prototype.keys = Set.prototype.values;
3494
3495 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3496 define(
3497 Set.prototype, $$iterator,
3498 function() {
3499 var s = strict(this);
3500 if (Type(s) !== 'object') throw TypeError();
3501 return CreateSetIterator(s);
3502 });
3503
3504 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3505 define(global.Set.prototype, $$toStringTag, 'Set');
3506
3507 // 23.2.4 Properties of Set Instances
3508 // 23.2.5 Set Iterator Objects
3509 /** @constructor */
3510 function SetIterator() {}
3511
3512 // 23.2.5.1 CreateSetIterator Abstract Operation
3513 function CreateSetIterator(set, kind) {
3514 if (Type(set) !== 'object') throw TypeError();
3515 if (!('[[SetData]]' in set)) throw TypeError();
3516 if (set['[[SetData]]'] === undefined) throw TypeError();
3517 var iterator = new SetIterator;
3518 set_internal(iterator, '[[IteratedSet]]', set);
3519 set_internal(iterator, '[[SetNextIndex]]', 0);
3520 set_internal(iterator, '[[SetIterationKind]]', kind);
3521 return iterator;
3522 }
3523
3524 // 23.2.5.2 The %SetIteratorPrototype% Object
3525 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3526 SetIterator.prototype = $SetIteratorPrototype$;
3527
3528 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3529 define(
3530 $SetIteratorPrototype$, 'next',
3531 function next() {
3532 var o = strict(this);
3533 if (Type(o) !== 'object') throw TypeError();
3534 var s = o['[[IteratedSet]]'],
3535 index = o['[[SetNextIndex]]'],
3536 itemKind = o['[[SetIterationKind]]'],
3537 entries = s['[[SetData]]'];
3538 while (index < entries.length) {
3539 var e = entries[index];
3540 index = index += 1;
3541 set_internal(o, '[[SetNextIndex]]', index);
3542 if (e !== empty) {
3543 if (itemKind === 'key+value')
3544 return CreateIterResultObject([e, e], false);
3545 return CreateIterResultObject(e, false);
3546 }
3547 }
3548 return CreateIterResultObject(undefined, true);
3549 });
3550
3551 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3552 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3553
3554 // 23.2.5.3 Properties of Set Iterator Instances
3555
3556 }());
3557
3558 // ---------------------------------------
3559 // 23.3 WeakMap Objects
3560 // ---------------------------------------
3561
3562 (function() {
3563 // 23.3.1 The WeakMap Constructor
3564 // 23.3.1.1 WeakMap ( [ iterable ] )
3565 /** @constructor */
3566 function WeakMap(/*iterable*/) {
3567 var map = strict(this);
3568 var iterable = arguments[0];
3569
3570 if (Type(map) !== 'object') throw TypeError();
3571 if ('[[WeakMapData]]' in map) throw TypeError();
3572
3573 if (iterable !== undefined) {
3574 var adder = map['set'];
3575 if (!IsCallable(adder)) throw TypeError();
3576 var iter = GetIterator(ToObject(iterable));
3577 }
3578 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3579 if (iter === undefined) return map;
3580 while (true) {
3581 var next = IteratorStep(iter);
3582 if (next === false)
3583 return map;
3584 var nextValue = IteratorValue(next);
3585 if (Type(nextValue) !== 'object') throw TypeError();
3586 var k = nextValue[0];
3587 var v = nextValue[1];
3588 adder.call(map, k, v);
3589 }
3590
3591 return map;
3592 }
3593
3594 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3595 global.WeakMap = WeakMap;
3596
3597 // 23.3.2 Properties of the WeakMap Constructor
3598 // 23.3.2.1 WeakMap.prototype
3599 var $WeakMapPrototype$ = {};
3600 WeakMap.prototype = $WeakMapPrototype$;
3601
3602
3603
3604 // 23.3.2.2 WeakMap[ @@create ] ( )
3605 // 23.3.3 Properties of the WeakMap Prototype Object
3606
3607 // 23.3.3.1 WeakMap.prototype.constructor
3608
3609 // 23.3.3.2 WeakMap.prototype.delete ( key )
3610 define(
3611 WeakMap.prototype, 'delete',
3612 function delete_(key) {
3613 var M = strict(this);
3614 if (Type(M) !== 'object') throw TypeError();
3615 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3616 if (Type(key) !== 'object') throw TypeError('Expected object');
3617 return M['[[WeakMapData]]'].remove(key);
3618 });
3619
3620 // 23.3.3.3 WeakMap.prototype.get ( key )
3621 define(
3622 WeakMap.prototype, 'get',
3623 function get(key, defaultValue) {
3624 var M = strict(this);
3625 if (Type(M) !== 'object') throw TypeError();
3626 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3627 if (Type(key) !== 'object') throw TypeError('Expected object');
3628 return M['[[WeakMapData]]'].get(key, defaultValue);
3629 });
3630
3631 // 23.3.3.4 WeakMap.prototype.has ( key )
3632 define(
3633 WeakMap.prototype, 'has',
3634 function has(key) {
3635 var M = strict(this);
3636 if (Type(M) !== 'object') throw TypeError();
3637 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3638 if (Type(key) !== 'object') throw TypeError('Expected object');
3639 return M['[[WeakMapData]]'].has(key);
3640 });
3641
3642 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3643 define(
3644 WeakMap.prototype, 'set',
3645 function set(key, value) {
3646 var M = strict(this);
3647 if (Type(M) !== 'object') throw TypeError();
3648 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3649 if (Type(key) !== 'object') throw TypeError('Expected object');
3650 M['[[WeakMapData]]'].set(key, value);
3651 return M;
3652 });
3653
3654 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3655 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3656
3657 // 23.3.4 Properties of WeakMap Instances
3658
3659 // Polyfills for incomplete native implementations:
3660 (function() {
3661 var wm = new global.WeakMap();
3662 var orig = global.WeakMap.prototype.set;
3663 define(global.WeakMap.prototype, 'set', function set() {
3664 orig.apply(this, arguments);
3665 return this;
3666 }, wm.set({}, 0) !== wm);
3667 }());
3668 }());
3669
3670 // ---------------------------------------
3671 // 23.4 WeakSet Objects
3672 // ---------------------------------------
3673
3674 (function() {
3675 // 23.4.1 The WeakSet Constructor
3676 // 23.4.1.1 WeakSet ( [ iterable ] )
3677 /** @constructor */
3678 function WeakSet(/*iterable*/) {
3679 var set = strict(this);
3680 var iterable = arguments[0];
3681
3682 if (Type(set) !== 'object') throw TypeError();
3683 if ('[[WeakSetData]]' in set) throw TypeError();
3684
3685 if (iterable !== undefined) {
3686 var adder = set['add'];
3687 if (!IsCallable(adder)) throw TypeError();
3688 var iter = GetIterator(ToObject(iterable));
3689 }
3690 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3691 if (iter === undefined) return set;
3692 while (true) {
3693 var next = IteratorStep(iter);
3694 if (next === false)
3695 return set;
3696 var nextValue = IteratorValue(next);
3697 adder.call(set, nextValue);
3698 }
3699
3700 return set;
3701 }
3702
3703 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3704 global.WeakSet = WeakSet;
3705
3706 // 23.4.2 Properties of the WeakSet Constructor
3707 // 23.4.2.1 WeakSet.prototype
3708 var $WeakSetPrototype$ = {};
3709 WeakSet.prototype = $WeakSetPrototype$;
3710
3711 // 23.4.3 Properties of the WeakSet Prototype Object
3712 // 23.4.3.1 WeakSet.prototype.add (value )
3713 define(
3714 WeakSet.prototype, 'add',
3715 function add(value) {
3716 var S = strict(this);
3717 if (Type(S) !== 'object') throw TypeError();
3718 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3719 if (Type(value) !== 'object') throw TypeError('Expected object');
3720 S['[[WeakSetData]]'].set(value, true);
3721 return S;
3722 });
3723
3724 // 23.4.3.2 WeakSet.prototype.constructor
3725 // 23.4.3.3 WeakSet.prototype.delete ( value )
3726 define(
3727 WeakSet.prototype, 'delete',
3728 function delete_(value) {
3729 var S = strict(this);
3730 if (Type(S) !== 'object') throw TypeError();
3731 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3732 if (Type(value) !== 'object') throw TypeError('Expected object');
3733 return S['[[WeakSetData]]'].remove(value);
3734 });
3735
3736 // 23.4.3.4 WeakSet.prototype.has ( value )
3737 define(
3738 WeakSet.prototype, 'has',
3739 function has(key) {
3740 var S = strict(this);
3741 if (Type(S) !== 'object') throw TypeError();
3742 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3743 if (Type(key) !== 'object') throw TypeError('Expected object');
3744 return S['[[WeakSetData]]'].has(key);
3745 });
3746
3747 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3748 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3749
3750 // 23.4.4 Properties of WeakSet Instances
3751
3752 // Polyfills for incomplete native implementations:
3753 (function() {
3754 var ws = new global.WeakSet();
3755 var orig = global.WeakSet.prototype.add;
3756 define(global.WeakSet.prototype, 'add', function add() {
3757 orig.apply(this, arguments);
3758 return this;
3759 }, ws.add({}) !== ws);
3760 }());
3761 }());
3762
3763 // ---------------------------------------
3764 // 24 Structured Data
3765 // ---------------------------------------
3766
3767 // ---------------------------------------
3768 // 24.1 ArrayBuffer Objects
3769 // ---------------------------------------
3770
3771 // See typedarray.js for TypedArray polyfill
3772
3773 (function() {
3774 if (!('ArrayBuffer' in global))
3775 return;
3776
3777 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3778 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3779 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3780 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3781 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3782 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3783 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3784 // 24.1.2 The ArrayBuffer Constructor
3785 // 24.1.2.1 ArrayBuffer( length )
3786 // 24.1.3 Properties of the ArrayBuffer Constructor
3787
3788 // 24.1.3.1 ArrayBuffer.isView ( arg )
3789 define(
3790 ArrayBuffer, 'isView',
3791 function isView(arg) {
3792 if (Type(arg) !== 'object') return false;
3793 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3794 return false;
3795 });
3796
3797 // 24.1.3.2 ArrayBuffer.prototype
3798 // 24.1.3.3 get ArrayBuffer [ @@species ]
3799 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3800 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3801 // 24.1.4.2 ArrayBuffer.prototype.constructor
3802 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3803
3804 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3805 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3806
3807 // 24.1.5 Properties of the ArrayBuffer Instances
3808 }());
3809
3810 // ---------------------------------------
3811 // 24.2 DataView Objects
3812 // ---------------------------------------
3813
3814 // See typedarray.js for TypedArray polyfill
3815
3816 (function() {
3817 if (!('DataView' in global))
3818 return;
3819
3820 // 24.2.1 Abstract Operations For DataView Objects
3821 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3822 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3823 // 24.2.2 The DataView Constructor
3824 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3825 // 24.2.3 Properties of the DataView Constructor
3826 // 24.2.3.1 DataView.prototype
3827 // 24.2.4 Properties of the DataView Prototype Object
3828 // 24.2.4.1 get DataView.prototype.buffer
3829 // 24.2.4.2 get DataView.prototype.byteLength
3830 // 24.2.4.3 get DataView.prototype.byteOffset
3831 // 24.2.4.4 DataView.prototype.constructor
3832 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3833 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3834 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3835 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3836 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3837 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3838 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3841 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3842 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3843 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3844 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3845 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3846 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3848
3849 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3850 define(DataView.prototype, $$toStringTag, 'DataView');
3851
3852 // 24.2.5 Properties of DataView Instances
3853 }());
3854
3855 // ---------------------------------------
3856 // 24.3 The JSON Object
3857 // ---------------------------------------
3858
3859 // 24.3.1 JSON.parse ( text [ , reviver ] )
3860 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3861 // 24.3.3 JSON [ @@toStringTag ]
3862 define(JSON, $$toStringTag, 'JSON');
3863
3864 // ---------------------------------------
3865 // 25.1 Iteration
3866 // ---------------------------------------
3867
3868 // 25.1.1 Common Iteration Interfaces
3869 // 25.1.1.1 The Iterable Interface
3870 // 25.1.1.2 The Iterator Interface
3871 // 25.1.1.3 The IteratorResult Interface
3872
3873 // 25.1.2 The %IteratorPrototype% Object
3874 // Defined earlier, so other prototypes can reference it.
3875 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3876 define($IteratorPrototype$, $$iterator, function() {
3877 return this;
3878 });
3879
3880
3881 // ---------------------------------------
3882 // 25.4 Promise Objects
3883 // ---------------------------------------
3884
3885 (function() {
3886 // 25.4 Promise Objects
3887
3888 // 25.4.1 Promise Abstract Operations
3889
3890 // 25.4.1.1 PromiseCapability Records
3891 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3892
3893 function IfAbruptRejectPromise(value, capability) {
3894 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3895 return capability['[[Promise]]'];
3896 }
3897
3898 // 25.4.1.2 PromiseReaction Records
3899
3900 // 25.4.1.3 CreateResolvingFunctions ( promise )
3901
3902 function CreateResolvingFunctions(promise) {
3903 var alreadyResolved = {'[[value]]': false};
3904 var resolve = PromiseResolveFunction();
3905 set_internal(resolve, '[[Promise]]', promise);
3906 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3907 var reject = PromiseRejectFunction();
3908 set_internal(reject, '[[Promise]]', promise);
3909 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3910 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3911 }
3912
3913 // 25.4.1.3.1 Promise Reject Functions
3914
3915 function PromiseRejectFunction() {
3916 var F = function(reason) {
3917 console.assert(Type(F['[[Promise]]']) === 'object');
3918 var promise = F['[[Promise]]'];
3919 var alreadyResolved = F['[[AlreadyResolved]]'];
3920 if (alreadyResolved['[[value]]']) return undefined;
3921 set_internal(alreadyResolved, '[[value]]', true);
3922 return RejectPromise(promise, reason);
3923 };
3924 return F;
3925 }
3926
3927 // 25.4.1.3.2 Promise Resolve Functions
3928
3929 function PromiseResolveFunction() {
3930 var F = function(resolution) {
3931 console.assert(Type(F['[[Promise]]']) === 'object');
3932 var promise = F['[[Promise]]'];
3933 var alreadyResolved = F['[[AlreadyResolved]]'];
3934 if (alreadyResolved['[[value]]']) return undefined;
3935 set_internal(alreadyResolved, '[[value]]', true);
3936
3937 if (SameValue(resolution, promise)) {
3938 var selfResolutionError = TypeError();
3939 return RejectPromise(promise, selfResolutionError);
3940 }
3941 if (Type(resolution) !== 'object')
3942 return FulfillPromise(promise, resolution);
3943 try {
3944 var then = resolution['then'];
3945 } catch(then) {
3946 return RejectPromise(promise, then);
3947 }
3948 if (!IsCallable(then))
3949 return FulfillPromise(promise, resolution);
3950 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3951 return undefined;
3952 };
3953 return F;
3954 }
3955
3956 // 25.4.1.4 FulfillPromise ( promise, value )
3957
3958 function FulfillPromise(promise, value) {
3959 console.assert(promise['[[PromiseState]]'] === 'pending');
3960 var reactions = promise['[[PromiseFulfillReactions]]'];
3961 set_internal(promise, '[[PromiseResult]]', value);
3962 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3963 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3964 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3965 return TriggerPromiseReactions(reactions, value);
3966 }
3967
3968 // 25.4.1.5 NewPromiseCapability ( C )
3969
3970 function NewPromiseCapability(c) {
3971 // To keep Promise hermetic, this doesn't look much like the spec.
3972 return CreatePromiseCapabilityRecord(undefined, c);
3973 }
3974
3975 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3976
3977 function CreatePromiseCapabilityRecord(promise, constructor) {
3978 // To keep Promise hermetic, this doesn't look much like the spec.
3979 console.assert(IsConstructor(constructor));
3980 var promiseCapability = {};
3981 set_internal(promiseCapability, '[[Promise]]', promise);
3982 set_internal(promiseCapability, '[[Resolve]]', undefined);
3983 set_internal(promiseCapability, '[[Reject]]', undefined);
3984 var executor = GetCapabilitiesExecutor();
3985 set_internal(executor, '[[Capability]]', promiseCapability);
3986
3987 // NOTE: Differs from spec; object is constructed here
3988 var constructorResult = promise = new constructor(executor);
3989 set_internal(promiseCapability, '[[Promise]]', promise);
3990
3991 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3992 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3993 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
3994 return promiseCapability;
3995 }
3996
3997 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
3998
3999 function GetCapabilitiesExecutor() {
4000 var F = function(resolve, reject) {
4001 console.assert(F['[[Capability]]']);
4002 var promiseCapability = F['[[Capability]]'];
4003 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4004 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4005 set_internal(promiseCapability, '[[Resolve]]', resolve);
4006 set_internal(promiseCapability, '[[Reject]]', reject);
4007 return undefined;
4008 };
4009 return F;
4010 }
4011
4012 // 25.4.1.6 IsPromise ( x )
4013
4014 function IsPromise(x) {
4015 if (Type(x) !== 'object') return false;
4016 if (!('[[PromiseState]]' in x)) return false;
4017 if (x['[[PromiseState]]'] === undefined) return false;
4018 return true;
4019 }
4020
4021 // 25.4.1.7 RejectPromise ( promise, reason )
4022
4023 function RejectPromise(promise, reason) {
4024 console.assert(promise['[[PromiseState]]'] === 'pending');
4025 var reactions = promise['[[PromiseRejectReactions]]'];
4026 set_internal(promise, '[[PromiseResult]]', reason);
4027 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4028 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4029 set_internal(promise, '[[PromiseState]]', 'rejected');
4030 return TriggerPromiseReactions(reactions, reason);
4031 }
4032
4033 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4034
4035 function TriggerPromiseReactions(reactions, argument) {
4036 for (var i = 0, len = reactions.length; i < len; ++i)
4037 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4038 return undefined;
4039 }
4040
4041 // 25.4.2 Promise Jobs
4042
4043 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4044
4045 function PromiseReactionJob(reaction, argument) {
4046 var promiseCapability = reaction['[[Capabilities]]'];
4047 var handler = reaction['[[Handler]]'];
4048 var handlerResult, status;
4049 try {
4050 if (handler === 'Identity') handlerResult = argument;
4051 else if (handler === 'Thrower') throw argument;
4052 else handlerResult = handler.call(undefined, argument);
4053 } catch (handlerResult) {
4054 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4055 NextJob(status); return;
4056 }
4057 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4058 NextJob(status);
4059 }
4060
4061 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4062
4063 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4064 // SPEC BUG: promise vs. promiseToResolve
4065 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4066 try {
4067 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4068 resolvingFunctions['[[Reject]]']);
4069 } catch (thenCallResult) {
4070 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4071 NextJob(status); return;
4072 }
4073 NextJob(thenCallResult);
4074 }
4075
4076 // 25.4.3 The Promise Constructor
4077
4078 // 25.4.3.1 Promise ( executor )
4079
4080 function Promise(executor) {
4081 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4082 Object.defineProperty(this, '[[PromiseState]]', config);
4083 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4084 Object.defineProperty(this, '[[PromiseResult]]', config);
4085 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4086 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4087
4088 var promise = this;
4089 if (Type(promise) !== 'object') throw new TypeError();
4090 if (!('[[PromiseState]]' in promise)) throw TypeError();
4091 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4092 if (!IsCallable(executor)) throw TypeError();
4093
4094 set_internal(promise, '[[PromiseConstructor]]', Promise);
4095
4096 return InitializePromise(promise, executor);
4097 }
4098
4099 // 25.4.3.1.1 InitializePromise ( promise, executor )
4100
4101 function InitializePromise(promise, executor) {
4102 console.assert('[[PromiseState]]' in promise);
4103 console.assert(IsCallable(executor));
4104 set_internal(promise, '[[PromiseState]]', 'pending');
4105 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4106 set_internal(promise, '[[PromiseRejectReactions]]', []);
4107 var resolvingFunctions = CreateResolvingFunctions(promise);
4108 try {
4109 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4110 resolvingFunctions['[[Reject]]']);
4111 } catch (completion) {
4112 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4113 }
4114 return promise;
4115 }
4116
4117 // 25.4.4 Properties of the Promise Constructor
4118 // 25.4.4.1 Promise.all ( iterable )
4119
4120 define(Promise, 'all', function all(iterable) {
4121 var c = strict(this);
4122 var promiseCapability = NewPromiseCapability(c);
4123 try {
4124 var iterator = GetIterator(iterable);
4125 } catch (value) {
4126 promiseCapability['[[Reject]]'].call(undefined, value);
4127 return promiseCapability['[[Promise]]'];
4128 }
4129 var values = [];
4130 var remainingElementsCount = { value: 1 };
4131 var index = 0;
4132 while (true) {
4133 try {
4134 var next = IteratorStep(iterator);
4135 } catch (value) {
4136 promiseCapability['[[Reject]]'].call(undefined, value);
4137 return promiseCapability['[[Promise]]'];
4138 }
4139 if (!next) {
4140 remainingElementsCount.value -= 1;
4141 if (remainingElementsCount.value === 0) {
4142 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4143
4144
4145 }
4146 return promiseCapability['[[Promise]]'];
4147 }
4148 try {
4149 var nextValue = IteratorValue(next);
4150 } catch (value) {
4151 promiseCapability['[[Reject]]'].call(undefined, value);
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextPromise = c.resolve(nextValue);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 var resolveElement = PromiseAllResolveElementFunction();
4161 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4162 set_internal(resolveElement, '[[Index]]', index);
4163 set_internal(resolveElement, '[[Values]]', values);
4164 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4165 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4166 remainingElementsCount.value += 1;
4167 try {
4168 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4169 } catch (value) {
4170 promiseCapability['[[Reject]]'].call(undefined, value);
4171 return promiseCapability['[[Promise]]'];
4172 }
4173 index += 1;
4174 }
4175 });
4176
4177 // 25.4.4.1.1 Promise.all Resolve Element Functions
4178
4179 function PromiseAllResolveElementFunction() {
4180 var F = function(x) {
4181 var alreadyCalled = F['[[AlreadyCalled]]'];
4182 if (alreadyCalled.value) return undefined;
4183 alreadyCalled.value = true;
4184 var index = F['[[Index]]'];
4185 var values = F['[[Values]]'];
4186 var promiseCapability = F['[[Capabilities]]'];
4187 var remainingElementsCount = F['[[RemainingElements]]'];
4188 try {
4189 values[index] = x;
4190 } catch (result) {
4191 promiseCapability['[[Reject]]'].call(undefined, result);
4192 return promiseCapability['[[Promise]]'];
4193 }
4194 remainingElementsCount.value -= 1;
4195 if (remainingElementsCount.value === 0)
4196 return promiseCapability['[[Resolve]]'].call(undefined, values);
4197 return undefined;
4198 };
4199 return F;
4200 }
4201
4202 // 25.4.4.2 Promise.prototype
4203
4204 Promise.prototype = {};
4205
4206 // 25.4.4.3 Promise.race ( iterable )
4207
4208 define(Promise, 'race', function race(iterable) {
4209 var c = strict(this);
4210 var promiseCapability = NewPromiseCapability(c);
4211 try {
4212 var iterator = GetIterator(iterable);
4213 } catch (value) {
4214 promiseCapability['[[Reject]]'].call(undefined, value);
4215 return promiseCapability['[[Promise]]'];
4216 }
4217 while (true) {
4218 try {
4219 var next = IteratorStep(iterator);
4220 } catch (value) {
4221 promiseCapability['[[Reject]]'].call(undefined, value);
4222 return promiseCapability['[[Promise]]'];
4223 }
4224 if (!next) return promiseCapability['[[Promise]]'];
4225 try {
4226 var nextValue = IteratorValue(next);
4227 } catch (value) {
4228 promiseCapability['[[Reject]]'].call(undefined, value);
4229 return promiseCapability['[[Promise]]'];
4230 }
4231 try {
4232 var nextPromise = c.resolve(nextValue);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 }
4244 });
4245
4246 // 25.4.4.4 Promise.reject ( r )
4247
4248 define(Promise, 'reject', function reject(r) {
4249 var c = strict(this);
4250 var promiseCapability = NewPromiseCapability(c);
4251 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4252 return promiseCapability['[[Promise]]'];
4253 });
4254
4255 // 25.4.4.5 Promise.resolve ( x )
4256
4257 define(Promise, 'resolve', function resolve(x) {
4258 var c = strict(this);
4259 if (IsPromise(x)) {
4260 var constructor = x['[[PromiseConstructor]]'];
4261 if (SameValue(constructor, c)) return x;
4262 }
4263 var promiseCapability = NewPromiseCapability(c);
4264 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4265 return promiseCapability['[[Promise]]'];
4266 });
4267
4268 // 25.4.4.6 Promise [ @@create ] ( )
4269 // 25.4.4.6.1 AllocatePromise ( constructor )
4270 // 25.4.5 Properties of the Promise Prototype Object
4271 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4272
4273 define(Promise.prototype, 'catch', function catch_(onRejected) {
4274 var promise = this;
4275 return promise.then(undefined, onRejected);
4276 });
4277
4278 // 25.4.5.2 Promise.prototype.constructor
4279
4280 Promise.prototype.constructor = Promise;
4281
4282 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4283
4284 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4285 var promise = this;
4286 if (!IsPromise(promise)) throw TypeError();
4287 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4288 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4289 var c = promise.constructor;
4290 var promiseCapability = NewPromiseCapability(c);
4291 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4292 '[[Handler]]': onFulfilled };
4293 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4294 '[[Handler]]': onRejected };
4295 if (promise['[[PromiseState]]'] === 'pending') {
4296 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4297 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4298 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4299 var value = promise['[[PromiseResult]]'];
4300 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4301 } else if (promise['[[PromiseState]]'] === 'rejected') {
4302 var reason = promise['[[PromiseResult]]'];
4303 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4304 }
4305 return promiseCapability['[[Promise]]'];
4306 });
4307
4308 // 25.4.6 Properties of Promise Instances
4309
4310 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4311 global.Promise = Promise;
4312
4313 // Patch early Promise.cast vs. Promise.resolve implementations
4314 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4315 }());
4316
4317 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4318 define(Promise.prototype, $$toStringTag, 'Promise');
4319
4320 // ---------------------------------------
4321 // 26 Reflection
4322 // ---------------------------------------
4323
4324 (function() {
4325 // 26.1 The Reflect Object
4326 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4327 global.Reflect = {};
4328
4329 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4330 define(
4331 Reflect, 'apply',
4332 function apply(target, thisArgument, argumentsList) {
4333 if (!IsCallable(target)) throw TypeError();
4334 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4335 });
4336
4337 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4338 define(
4339 Reflect, 'construct',
4340 function construct(target, argumentsList) {
4341 return __cons(target, argumentsList);
4342 });
4343
4344 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4345 define(
4346 Reflect, 'defineProperty',
4347 function defineProperty(target, propertyKey, attributes) {
4348 try {
4349 Object.defineProperty(target, propertyKey, attributes);
4350 return true;
4351 } catch (_) {
4352 return false;
4353 }
4354 });
4355
4356 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4357 define(
4358 Reflect, 'deleteProperty',
4359 function deleteProperty(target,name) {
4360 try {
4361 delete target[name];
4362 return !HasOwnProperty(target, name);
4363 } catch (_) {
4364 return false;
4365 }
4366 });
4367
4368 // 26.1.5 Reflect.enumerate ( target )
4369 define(
4370 Reflect, 'enumerate',
4371 function enumerate(target) {
4372 target = ToObject(target);
4373 var iterator = Enumerate(target);
4374 return iterator;
4375 });
4376
4377 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4378 define(
4379 Reflect, 'get',
4380 function get(target, name, receiver) {
4381 target = ToObject(target);
4382 name = String(name);
4383 receiver = (receiver === undefined) ? target : ToObject(receiver);
4384 var desc = getPropertyDescriptor(target, name);
4385 if (desc && 'get' in desc)
4386 return Function.prototype.call.call(desc['get'], receiver);
4387 return target[name];
4388 });
4389
4390 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4391 define(
4392 Reflect, 'getOwnPropertyDescriptor',
4393 Object.getOwnPropertyDescriptor);
4394
4395 // 26.1.8 Reflect.getPrototypeOf ( target )
4396 define(
4397 Reflect, 'getPrototypeOf',
4398 Object.getPrototypeOf);
4399
4400 // 26.1.9 Reflect.has ( target, propertyKey )
4401 define(
4402 Reflect, 'has',
4403 function has(target,name) {
4404 return String(name) in ToObject(target);
4405 });
4406
4407 // 26.1.10 Reflect.isExtensible (target)
4408 define(
4409 Reflect, 'isExtensible',
4410 Object.isExtensible);
4411
4412 // 26.1.11 Reflect.ownKeys ( target )
4413 define(
4414 Reflect, 'ownKeys',
4415 function ownKeys(target) {
4416 var obj = ToObject(target);
4417 return Object.getOwnPropertyNames(obj);
4418 });
4419
4420 // 26.1.12 Reflect.preventExtensions ( target )
4421 define(
4422 Reflect, 'preventExtensions',
4423 function preventExtensions(target) {
4424 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4425 });
4426
4427 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4428 define(
4429 Reflect, 'set',
4430 function set(target, name, value, receiver) {
4431 target = ToObject(target);
4432 name = String(name);
4433 receiver = (receiver === undefined) ? target : ToObject(receiver);
4434 var desc = getPropertyDescriptor(target, name);
4435 try {
4436 if (desc && 'set' in desc)
4437 Function.prototype.call.call(desc['set'], receiver, value);
4438 else
4439 target[name] = value;
4440 return true;
4441 } catch (_) {
4442 return false;
4443 }
4444 });
4445
4446 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4447 define(
4448 Reflect, 'setPrototypeOf',
4449 function setPrototypeOf(target, proto) {
4450 try {
4451 target.__proto__ = proto;
4452 return Reflect.getPrototypeOf(target) === proto;
4453 } catch(_) {
4454 return false;
4455 }
4456 });
4457
4458 }());
4459
4460 // ---------------------------------------
4461 // 26.2 Proxy Objects
4462 // ---------------------------------------
4463
4464 // Not polyfillable.
4465
4466 }(self));
4467
4468 // This helper is defined outside the main scope so that the use of
4469 // 'eval' does not taint the scope for minifiers.
4470 function __cons(t, a) {
4471 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4472 }
4473 </script>
4474 <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){
4475 'use strict'
4476
4477 exports.byteLength = byteLength
4478 exports.toByteArray = toByteArray
4479 exports.fromByteArray = fromByteArray
4480
4481 var lookup = []
4482 var revLookup = []
4483 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4484
4485 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4486 for (var i = 0, len = code.length; i < len; ++i) {
4487 lookup[i] = code[i]
4488 revLookup[code.charCodeAt(i)] = i
4489 }
4490
4491 revLookup['-'.charCodeAt(0)] = 62
4492 revLookup['_'.charCodeAt(0)] = 63
4493
4494 function placeHoldersCount (b64) {
4495 var len = b64.length
4496 if (len % 4 > 0) {
4497 throw new Error('Invalid string. Length must be a multiple of 4')
4498 }
4499
4500 // the number of equal signs (place holders)
4501 // if there are two placeholders, than the two characters before it
4502 // represent one byte
4503 // if there is only one, then the three characters before it represent 2 bytes
4504 // this is just a cheap hack to not do indexOf twice
4505 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4506 }
4507
4508 function byteLength (b64) {
4509 // base64 is 4/3 + up to two characters of the original data
4510 return b64.length * 3 / 4 - placeHoldersCount(b64)
4511 }
4512
4513 function toByteArray (b64) {
4514 var i, j, l, tmp, placeHolders, arr
4515 var len = b64.length
4516 placeHolders = placeHoldersCount(b64)
4517
4518 arr = new Arr(len * 3 / 4 - placeHolders)
4519
4520 // if there are placeholders, only get up to the last complete 4 chars
4521 l = placeHolders > 0 ? len - 4 : len
4522
4523 var L = 0
4524
4525 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4526 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4527 arr[L++] = (tmp >> 16) & 0xFF
4528 arr[L++] = (tmp >> 8) & 0xFF
4529 arr[L++] = tmp & 0xFF
4530 }
4531
4532 if (placeHolders === 2) {
4533 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4534 arr[L++] = tmp & 0xFF
4535 } else if (placeHolders === 1) {
4536 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4537 arr[L++] = (tmp >> 8) & 0xFF
4538 arr[L++] = tmp & 0xFF
4539 }
4540
4541 return arr
4542 }
4543
4544 function tripletToBase64 (num) {
4545 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4546 }
4547
4548 function encodeChunk (uint8, start, end) {
4549 var tmp
4550 var output = []
4551 for (var i = start; i < end; i += 3) {
4552 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4553 output.push(tripletToBase64(tmp))
4554 }
4555 return output.join('')
4556 }
4557
4558 function fromByteArray (uint8) {
4559 var tmp
4560 var len = uint8.length
4561 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4562 var output = ''
4563 var parts = []
4564 var maxChunkLength = 16383 // must be multiple of 3
4565
4566 // go through the array every three bytes, we'll deal with trailing stuff later
4567 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4568 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4569 }
4570
4571 // pad the end with zeros, but make sure to not forget the extra bytes
4572 if (extraBytes === 1) {
4573 tmp = uint8[len - 1]
4574 output += lookup[tmp >> 2]
4575 output += lookup[(tmp << 4) & 0x3F]
4576 output += '=='
4577 } else if (extraBytes === 2) {
4578 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4579 output += lookup[tmp >> 10]
4580 output += lookup[(tmp >> 4) & 0x3F]
4581 output += lookup[(tmp << 2) & 0x3F]
4582 output += '='
4583 }
4584
4585 parts.push(output)
4586
4587 return parts.join('')
4588 }
4589
4590 },{}],2:[function(require,module,exports){
4591 /*!
4592 * The buffer module from node.js, for the browser.
4593 *
4594 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4595 * @license MIT
4596 */
4597 /* eslint-disable no-proto */
4598
4599 'use strict'
4600
4601 var base64 = require('base64-js')
4602 var ieee754 = require('ieee754')
4603
4604 exports.Buffer = Buffer
4605 exports.SlowBuffer = SlowBuffer
4606 exports.INSPECT_MAX_BYTES = 50
4607
4608 var K_MAX_LENGTH = 0x7fffffff
4609 exports.kMaxLength = K_MAX_LENGTH
4610
4611 /**
4612 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4613 * === true Use Uint8Array implementation (fastest)
4614 * === false Print warning and recommend using `buffer` v4.x which has an Object
4615 * implementation (most compatible, even IE6)
4616 *
4617 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4618 * Opera 11.6+, iOS 4.2+.
4619 *
4620 * We report that the browser does not support typed arrays if the are not subclassable
4621 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4622 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4623 * for __proto__ and has a buggy typed array implementation.
4624 */
4625 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4626
4627 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4628 typeof console.error === 'function') {
4629 console.error(
4630 'This browser lacks typed array (Uint8Array) support which is required by ' +
4631 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4632 )
4633 }
4634
4635 function typedArraySupport () {
4636 // Can typed array instances can be augmented?
4637 try {
4638 var arr = new Uint8Array(1)
4639 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4640 return arr.foo() === 42
4641 } catch (e) {
4642 return false
4643 }
4644 }
4645
4646 function createBuffer (length) {
4647 if (length > K_MAX_LENGTH) {
4648 throw new RangeError('Invalid typed array length')
4649 }
4650 // Return an augmented `Uint8Array` instance
4651 var buf = new Uint8Array(length)
4652 buf.__proto__ = Buffer.prototype
4653 return buf
4654 }
4655
4656 /**
4657 * The Buffer constructor returns instances of `Uint8Array` that have their
4658 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4659 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4660 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4661 * returns a single octet.
4662 *
4663 * The `Uint8Array` prototype remains unmodified.
4664 */
4665
4666 function Buffer (arg, encodingOrOffset, length) {
4667 // Common case.
4668 if (typeof arg === 'number') {
4669 if (typeof encodingOrOffset === 'string') {
4670 throw new Error(
4671 'If encoding is specified then the first argument must be a string'
4672 )
4673 }
4674 return allocUnsafe(arg)
4675 }
4676 return from(arg, encodingOrOffset, length)
4677 }
4678
4679 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4680 if (typeof Symbol !== 'undefined' && Symbol.species &&
4681 Buffer[Symbol.species] === Buffer) {
4682 Object.defineProperty(Buffer, Symbol.species, {
4683 value: null,
4684 configurable: true,
4685 enumerable: false,
4686 writable: false
4687 })
4688 }
4689
4690 Buffer.poolSize = 8192 // not used by this implementation
4691
4692 function from (value, encodingOrOffset, length) {
4693 if (typeof value === 'number') {
4694 throw new TypeError('"value" argument must not be a number')
4695 }
4696
4697 if (value instanceof ArrayBuffer) {
4698 return fromArrayBuffer(value, encodingOrOffset, length)
4699 }
4700
4701 if (typeof value === 'string') {
4702 return fromString(value, encodingOrOffset)
4703 }
4704
4705 return fromObject(value)
4706 }
4707
4708 /**
4709 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4710 * if value is a number.
4711 * Buffer.from(str[, encoding])
4712 * Buffer.from(array)
4713 * Buffer.from(buffer)
4714 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4715 **/
4716 Buffer.from = function (value, encodingOrOffset, length) {
4717 return from(value, encodingOrOffset, length)
4718 }
4719
4720 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4721 // https://github.com/feross/buffer/pull/148
4722 Buffer.prototype.__proto__ = Uint8Array.prototype
4723 Buffer.__proto__ = Uint8Array
4724
4725 function assertSize (size) {
4726 if (typeof size !== 'number') {
4727 throw new TypeError('"size" argument must be a number')
4728 } else if (size < 0) {
4729 throw new RangeError('"size" argument must not be negative')
4730 }
4731 }
4732
4733 function alloc (size, fill, encoding) {
4734 assertSize(size)
4735 if (size <= 0) {
4736 return createBuffer(size)
4737 }
4738 if (fill !== undefined) {
4739 // Only pay attention to encoding if it's a string. This
4740 // prevents accidentally sending in a number that would
4741 // be interpretted as a start offset.
4742 return typeof encoding === 'string'
4743 ? createBuffer(size).fill(fill, encoding)
4744 : createBuffer(size).fill(fill)
4745 }
4746 return createBuffer(size)
4747 }
4748
4749 /**
4750 * Creates a new filled Buffer instance.
4751 * alloc(size[, fill[, encoding]])
4752 **/
4753 Buffer.alloc = function (size, fill, encoding) {
4754 return alloc(size, fill, encoding)
4755 }
4756
4757 function allocUnsafe (size) {
4758 assertSize(size)
4759 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4760 }
4761
4762 /**
4763 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4764 * */
4765 Buffer.allocUnsafe = function (size) {
4766 return allocUnsafe(size)
4767 }
4768 /**
4769 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4770 */
4771 Buffer.allocUnsafeSlow = function (size) {
4772 return allocUnsafe(size)
4773 }
4774
4775 function fromString (string, encoding) {
4776 if (typeof encoding !== 'string' || encoding === '') {
4777 encoding = 'utf8'
4778 }
4779
4780 if (!Buffer.isEncoding(encoding)) {
4781 throw new TypeError('"encoding" must be a valid string encoding')
4782 }
4783
4784 var length = byteLength(string, encoding) | 0
4785 var buf = createBuffer(length)
4786
4787 var actual = buf.write(string, encoding)
4788
4789 if (actual !== length) {
4790 // Writing a hex string, for example, that contains invalid characters will
4791 // cause everything after the first invalid character to be ignored. (e.g.
4792 // 'abxxcd' will be treated as 'ab')
4793 buf = buf.slice(0, actual)
4794 }
4795
4796 return buf
4797 }
4798
4799 function fromArrayLike (array) {
4800 var length = array.length < 0 ? 0 : checked(array.length) | 0
4801 var buf = createBuffer(length)
4802 for (var i = 0; i < length; i += 1) {
4803 buf[i] = array[i] & 255
4804 }
4805 return buf
4806 }
4807
4808 function fromArrayBuffer (array, byteOffset, length) {
4809 if (byteOffset < 0 || array.byteLength < byteOffset) {
4810 throw new RangeError('\'offset\' is out of bounds')
4811 }
4812
4813 if (array.byteLength < byteOffset + (length || 0)) {
4814 throw new RangeError('\'length\' is out of bounds')
4815 }
4816
4817 var buf
4818 if (byteOffset === undefined && length === undefined) {
4819 buf = new Uint8Array(array)
4820 } else if (length === undefined) {
4821 buf = new Uint8Array(array, byteOffset)
4822 } else {
4823 buf = new Uint8Array(array, byteOffset, length)
4824 }
4825
4826 // Return an augmented `Uint8Array` instance
4827 buf.__proto__ = Buffer.prototype
4828 return buf
4829 }
4830
4831 function fromObject (obj) {
4832 if (Buffer.isBuffer(obj)) {
4833 var len = checked(obj.length) | 0
4834 var buf = createBuffer(len)
4835
4836 if (buf.length === 0) {
4837 return buf
4838 }
4839
4840 obj.copy(buf, 0, 0, len)
4841 return buf
4842 }
4843
4844 if (obj) {
4845 if (isArrayBufferView(obj) || 'length' in obj) {
4846 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4847 return createBuffer(0)
4848 }
4849 return fromArrayLike(obj)
4850 }
4851
4852 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4853 return fromArrayLike(obj.data)
4854 }
4855 }
4856
4857 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4858 }
4859
4860 function checked (length) {
4861 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4862 // length is NaN (which is otherwise coerced to zero.)
4863 if (length >= K_MAX_LENGTH) {
4864 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4865 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4866 }
4867 return length | 0
4868 }
4869
4870 function SlowBuffer (length) {
4871 if (+length != length) { // eslint-disable-line eqeqeq
4872 length = 0
4873 }
4874 return Buffer.alloc(+length)
4875 }
4876
4877 Buffer.isBuffer = function isBuffer (b) {
4878 return b != null && b._isBuffer === true
4879 }
4880
4881 Buffer.compare = function compare (a, b) {
4882 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4883 throw new TypeError('Arguments must be Buffers')
4884 }
4885
4886 if (a === b) return 0
4887
4888 var x = a.length
4889 var y = b.length
4890
4891 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4892 if (a[i] !== b[i]) {
4893 x = a[i]
4894 y = b[i]
4895 break
4896 }
4897 }
4898
4899 if (x < y) return -1
4900 if (y < x) return 1
4901 return 0
4902 }
4903
4904 Buffer.isEncoding = function isEncoding (encoding) {
4905 switch (String(encoding).toLowerCase()) {
4906 case 'hex':
4907 case 'utf8':
4908 case 'utf-8':
4909 case 'ascii':
4910 case 'latin1':
4911 case 'binary':
4912 case 'base64':
4913 case 'ucs2':
4914 case 'ucs-2':
4915 case 'utf16le':
4916 case 'utf-16le':
4917 return true
4918 default:
4919 return false
4920 }
4921 }
4922
4923 Buffer.concat = function concat (list, length) {
4924 if (!Array.isArray(list)) {
4925 throw new TypeError('"list" argument must be an Array of Buffers')
4926 }
4927
4928 if (list.length === 0) {
4929 return Buffer.alloc(0)
4930 }
4931
4932 var i
4933 if (length === undefined) {
4934 length = 0
4935 for (i = 0; i < list.length; ++i) {
4936 length += list[i].length
4937 }
4938 }
4939
4940 var buffer = Buffer.allocUnsafe(length)
4941 var pos = 0
4942 for (i = 0; i < list.length; ++i) {
4943 var buf = list[i]
4944 if (!Buffer.isBuffer(buf)) {
4945 throw new TypeError('"list" argument must be an Array of Buffers')
4946 }
4947 buf.copy(buffer, pos)
4948 pos += buf.length
4949 }
4950 return buffer
4951 }
4952
4953 function byteLength (string, encoding) {
4954 if (Buffer.isBuffer(string)) {
4955 return string.length
4956 }
4957 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4958 return string.byteLength
4959 }
4960 if (typeof string !== 'string') {
4961 string = '' + string
4962 }
4963
4964 var len = string.length
4965 if (len === 0) return 0
4966
4967 // Use a for loop to avoid recursion
4968 var loweredCase = false
4969 for (;;) {
4970 switch (encoding) {
4971 case 'ascii':
4972 case 'latin1':
4973 case 'binary':
4974 return len
4975 case 'utf8':
4976 case 'utf-8':
4977 case undefined:
4978 return utf8ToBytes(string).length
4979 case 'ucs2':
4980 case 'ucs-2':
4981 case 'utf16le':
4982 case 'utf-16le':
4983 return len * 2
4984 case 'hex':
4985 return len >>> 1
4986 case 'base64':
4987 return base64ToBytes(string).length
4988 default:
4989 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4990 encoding = ('' + encoding).toLowerCase()
4991 loweredCase = true
4992 }
4993 }
4994 }
4995 Buffer.byteLength = byteLength
4996
4997 function slowToString (encoding, start, end) {
4998 var loweredCase = false
4999
5000 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5001 // property of a typed array.
5002
5003 // This behaves neither like String nor Uint8Array in that we set start/end
5004 // to their upper/lower bounds if the value passed is out of range.
5005 // undefined is handled specially as per ECMA-262 6th Edition,
5006 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5007 if (start === undefined || start < 0) {
5008 start = 0
5009 }
5010 // Return early if start > this.length. Done here to prevent potential uint32
5011 // coercion fail below.
5012 if (start > this.length) {
5013 return ''
5014 }
5015
5016 if (end === undefined || end > this.length) {
5017 end = this.length
5018 }
5019
5020 if (end <= 0) {
5021 return ''
5022 }
5023
5024 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5025 end >>>= 0
5026 start >>>= 0
5027
5028 if (end <= start) {
5029 return ''
5030 }
5031
5032 if (!encoding) encoding = 'utf8'
5033
5034 while (true) {
5035 switch (encoding) {
5036 case 'hex':
5037 return hexSlice(this, start, end)
5038
5039 case 'utf8':
5040 case 'utf-8':
5041 return utf8Slice(this, start, end)
5042
5043 case 'ascii':
5044 return asciiSlice(this, start, end)
5045
5046 case 'latin1':
5047 case 'binary':
5048 return latin1Slice(this, start, end)
5049
5050 case 'base64':
5051 return base64Slice(this, start, end)
5052
5053 case 'ucs2':
5054 case 'ucs-2':
5055 case 'utf16le':
5056 case 'utf-16le':
5057 return utf16leSlice(this, start, end)
5058
5059 default:
5060 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5061 encoding = (encoding + '').toLowerCase()
5062 loweredCase = true
5063 }
5064 }
5065 }
5066
5067 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5068 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5069 // reliably in a browserify context because there could be multiple different
5070 // copies of the 'buffer' package in use. This method works even for Buffer
5071 // instances that were created from another copy of the `buffer` package.
5072 // See: https://github.com/feross/buffer/issues/154
5073 Buffer.prototype._isBuffer = true
5074
5075 function swap (b, n, m) {
5076 var i = b[n]
5077 b[n] = b[m]
5078 b[m] = i
5079 }
5080
5081 Buffer.prototype.swap16 = function swap16 () {
5082 var len = this.length
5083 if (len % 2 !== 0) {
5084 throw new RangeError('Buffer size must be a multiple of 16-bits')
5085 }
5086 for (var i = 0; i < len; i += 2) {
5087 swap(this, i, i + 1)
5088 }
5089 return this
5090 }
5091
5092 Buffer.prototype.swap32 = function swap32 () {
5093 var len = this.length
5094 if (len % 4 !== 0) {
5095 throw new RangeError('Buffer size must be a multiple of 32-bits')
5096 }
5097 for (var i = 0; i < len; i += 4) {
5098 swap(this, i, i + 3)
5099 swap(this, i + 1, i + 2)
5100 }
5101 return this
5102 }
5103
5104 Buffer.prototype.swap64 = function swap64 () {
5105 var len = this.length
5106 if (len % 8 !== 0) {
5107 throw new RangeError('Buffer size must be a multiple of 64-bits')
5108 }
5109 for (var i = 0; i < len; i += 8) {
5110 swap(this, i, i + 7)
5111 swap(this, i + 1, i + 6)
5112 swap(this, i + 2, i + 5)
5113 swap(this, i + 3, i + 4)
5114 }
5115 return this
5116 }
5117
5118 Buffer.prototype.toString = function toString () {
5119 var length = this.length
5120 if (length === 0) return ''
5121 if (arguments.length === 0) return utf8Slice(this, 0, length)
5122 return slowToString.apply(this, arguments)
5123 }
5124
5125 Buffer.prototype.equals = function equals (b) {
5126 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5127 if (this === b) return true
5128 return Buffer.compare(this, b) === 0
5129 }
5130
5131 Buffer.prototype.inspect = function inspect () {
5132 var str = ''
5133 var max = exports.INSPECT_MAX_BYTES
5134 if (this.length > 0) {
5135 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5136 if (this.length > max) str += ' ... '
5137 }
5138 return '<Buffer ' + str + '>'
5139 }
5140
5141 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5142 if (!Buffer.isBuffer(target)) {
5143 throw new TypeError('Argument must be a Buffer')
5144 }
5145
5146 if (start === undefined) {
5147 start = 0
5148 }
5149 if (end === undefined) {
5150 end = target ? target.length : 0
5151 }
5152 if (thisStart === undefined) {
5153 thisStart = 0
5154 }
5155 if (thisEnd === undefined) {
5156 thisEnd = this.length
5157 }
5158
5159 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5160 throw new RangeError('out of range index')
5161 }
5162
5163 if (thisStart >= thisEnd && start >= end) {
5164 return 0
5165 }
5166 if (thisStart >= thisEnd) {
5167 return -1
5168 }
5169 if (start >= end) {
5170 return 1
5171 }
5172
5173 start >>>= 0
5174 end >>>= 0
5175 thisStart >>>= 0
5176 thisEnd >>>= 0
5177
5178 if (this === target) return 0
5179
5180 var x = thisEnd - thisStart
5181 var y = end - start
5182 var len = Math.min(x, y)
5183
5184 var thisCopy = this.slice(thisStart, thisEnd)
5185 var targetCopy = target.slice(start, end)
5186
5187 for (var i = 0; i < len; ++i) {
5188 if (thisCopy[i] !== targetCopy[i]) {
5189 x = thisCopy[i]
5190 y = targetCopy[i]
5191 break
5192 }
5193 }
5194
5195 if (x < y) return -1
5196 if (y < x) return 1
5197 return 0
5198 }
5199
5200 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5201 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5202 //
5203 // Arguments:
5204 // - buffer - a Buffer to search
5205 // - val - a string, Buffer, or number
5206 // - byteOffset - an index into `buffer`; will be clamped to an int32
5207 // - encoding - an optional encoding, relevant is val is a string
5208 // - dir - true for indexOf, false for lastIndexOf
5209 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5210 // Empty buffer means no match
5211 if (buffer.length === 0) return -1
5212
5213 // Normalize byteOffset
5214 if (typeof byteOffset === 'string') {
5215 encoding = byteOffset
5216 byteOffset = 0
5217 } else if (byteOffset > 0x7fffffff) {
5218 byteOffset = 0x7fffffff
5219 } else if (byteOffset < -0x80000000) {
5220 byteOffset = -0x80000000
5221 }
5222 byteOffset = +byteOffset // Coerce to Number.
5223 if (numberIsNaN(byteOffset)) {
5224 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5225 byteOffset = dir ? 0 : (buffer.length - 1)
5226 }
5227
5228 // Normalize byteOffset: negative offsets start from the end of the buffer
5229 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5230 if (byteOffset >= buffer.length) {
5231 if (dir) return -1
5232 else byteOffset = buffer.length - 1
5233 } else if (byteOffset < 0) {
5234 if (dir) byteOffset = 0
5235 else return -1
5236 }
5237
5238 // Normalize val
5239 if (typeof val === 'string') {
5240 val = Buffer.from(val, encoding)
5241 }
5242
5243 // Finally, search either indexOf (if dir is true) or lastIndexOf
5244 if (Buffer.isBuffer(val)) {
5245 // Special case: looking for empty string/buffer always fails
5246 if (val.length === 0) {
5247 return -1
5248 }
5249 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5250 } else if (typeof val === 'number') {
5251 val = val & 0xFF // Search for a byte value [0-255]
5252 if (typeof Uint8Array.prototype.indexOf === 'function') {
5253 if (dir) {
5254 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5255 } else {
5256 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5257 }
5258 }
5259 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5260 }
5261
5262 throw new TypeError('val must be string, number or Buffer')
5263 }
5264
5265 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5266 var indexSize = 1
5267 var arrLength = arr.length
5268 var valLength = val.length
5269
5270 if (encoding !== undefined) {
5271 encoding = String(encoding).toLowerCase()
5272 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5273 encoding === 'utf16le' || encoding === 'utf-16le') {
5274 if (arr.length < 2 || val.length < 2) {
5275 return -1
5276 }
5277 indexSize = 2
5278 arrLength /= 2
5279 valLength /= 2
5280 byteOffset /= 2
5281 }
5282 }
5283
5284 function read (buf, i) {
5285 if (indexSize === 1) {
5286 return buf[i]
5287 } else {
5288 return buf.readUInt16BE(i * indexSize)
5289 }
5290 }
5291
5292 var i
5293 if (dir) {
5294 var foundIndex = -1
5295 for (i = byteOffset; i < arrLength; i++) {
5296 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5297 if (foundIndex === -1) foundIndex = i
5298 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5299 } else {
5300 if (foundIndex !== -1) i -= i - foundIndex
5301 foundIndex = -1
5302 }
5303 }
5304 } else {
5305 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5306 for (i = byteOffset; i >= 0; i--) {
5307 var found = true
5308 for (var j = 0; j < valLength; j++) {
5309 if (read(arr, i + j) !== read(val, j)) {
5310 found = false
5311 break
5312 }
5313 }
5314 if (found) return i
5315 }
5316 }
5317
5318 return -1
5319 }
5320
5321 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5322 return this.indexOf(val, byteOffset, encoding) !== -1
5323 }
5324
5325 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5326 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5327 }
5328
5329 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5330 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5331 }
5332
5333 function hexWrite (buf, string, offset, length) {
5334 offset = Number(offset) || 0
5335 var remaining = buf.length - offset
5336 if (!length) {
5337 length = remaining
5338 } else {
5339 length = Number(length)
5340 if (length > remaining) {
5341 length = remaining
5342 }
5343 }
5344
5345 // must be an even number of digits
5346 var strLen = string.length
5347 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5348
5349 if (length > strLen / 2) {
5350 length = strLen / 2
5351 }
5352 for (var i = 0; i < length; ++i) {
5353 var parsed = parseInt(string.substr(i * 2, 2), 16)
5354 if (numberIsNaN(parsed)) return i
5355 buf[offset + i] = parsed
5356 }
5357 return i
5358 }
5359
5360 function utf8Write (buf, string, offset, length) {
5361 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5362 }
5363
5364 function asciiWrite (buf, string, offset, length) {
5365 return blitBuffer(asciiToBytes(string), buf, offset, length)
5366 }
5367
5368 function latin1Write (buf, string, offset, length) {
5369 return asciiWrite(buf, string, offset, length)
5370 }
5371
5372 function base64Write (buf, string, offset, length) {
5373 return blitBuffer(base64ToBytes(string), buf, offset, length)
5374 }
5375
5376 function ucs2Write (buf, string, offset, length) {
5377 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5378 }
5379
5380 Buffer.prototype.write = function write (string, offset, length, encoding) {
5381 // Buffer#write(string)
5382 if (offset === undefined) {
5383 encoding = 'utf8'
5384 length = this.length
5385 offset = 0
5386 // Buffer#write(string, encoding)
5387 } else if (length === undefined && typeof offset === 'string') {
5388 encoding = offset
5389 length = this.length
5390 offset = 0
5391 // Buffer#write(string, offset[, length][, encoding])
5392 } else if (isFinite(offset)) {
5393 offset = offset >>> 0
5394 if (isFinite(length)) {
5395 length = length >>> 0
5396 if (encoding === undefined) encoding = 'utf8'
5397 } else {
5398 encoding = length
5399 length = undefined
5400 }
5401 } else {
5402 throw new Error(
5403 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5404 )
5405 }
5406
5407 var remaining = this.length - offset
5408 if (length === undefined || length > remaining) length = remaining
5409
5410 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5411 throw new RangeError('Attempt to write outside buffer bounds')
5412 }
5413
5414 if (!encoding) encoding = 'utf8'
5415
5416 var loweredCase = false
5417 for (;;) {
5418 switch (encoding) {
5419 case 'hex':
5420 return hexWrite(this, string, offset, length)
5421
5422 case 'utf8':
5423 case 'utf-8':
5424 return utf8Write(this, string, offset, length)
5425
5426 case 'ascii':
5427 return asciiWrite(this, string, offset, length)
5428
5429 case 'latin1':
5430 case 'binary':
5431 return latin1Write(this, string, offset, length)
5432
5433 case 'base64':
5434 // Warning: maxLength not taken into account in base64Write
5435 return base64Write(this, string, offset, length)
5436
5437 case 'ucs2':
5438 case 'ucs-2':
5439 case 'utf16le':
5440 case 'utf-16le':
5441 return ucs2Write(this, string, offset, length)
5442
5443 default:
5444 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5445 encoding = ('' + encoding).toLowerCase()
5446 loweredCase = true
5447 }
5448 }
5449 }
5450
5451 Buffer.prototype.toJSON = function toJSON () {
5452 return {
5453 type: 'Buffer',
5454 data: Array.prototype.slice.call(this._arr || this, 0)
5455 }
5456 }
5457
5458 function base64Slice (buf, start, end) {
5459 if (start === 0 && end === buf.length) {
5460 return base64.fromByteArray(buf)
5461 } else {
5462 return base64.fromByteArray(buf.slice(start, end))
5463 }
5464 }
5465
5466 function utf8Slice (buf, start, end) {
5467 end = Math.min(buf.length, end)
5468 var res = []
5469
5470 var i = start
5471 while (i < end) {
5472 var firstByte = buf[i]
5473 var codePoint = null
5474 var bytesPerSequence = (firstByte > 0xEF) ? 4
5475 : (firstByte > 0xDF) ? 3
5476 : (firstByte > 0xBF) ? 2
5477 : 1
5478
5479 if (i + bytesPerSequence <= end) {
5480 var secondByte, thirdByte, fourthByte, tempCodePoint
5481
5482 switch (bytesPerSequence) {
5483 case 1:
5484 if (firstByte < 0x80) {
5485 codePoint = firstByte
5486 }
5487 break
5488 case 2:
5489 secondByte = buf[i + 1]
5490 if ((secondByte & 0xC0) === 0x80) {
5491 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5492 if (tempCodePoint > 0x7F) {
5493 codePoint = tempCodePoint
5494 }
5495 }
5496 break
5497 case 3:
5498 secondByte = buf[i + 1]
5499 thirdByte = buf[i + 2]
5500 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5501 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5502 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5503 codePoint = tempCodePoint
5504 }
5505 }
5506 break
5507 case 4:
5508 secondByte = buf[i + 1]
5509 thirdByte = buf[i + 2]
5510 fourthByte = buf[i + 3]
5511 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5512 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5513 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5514 codePoint = tempCodePoint
5515 }
5516 }
5517 }
5518 }
5519
5520 if (codePoint === null) {
5521 // we did not generate a valid codePoint so insert a
5522 // replacement char (U+FFFD) and advance only 1 byte
5523 codePoint = 0xFFFD
5524 bytesPerSequence = 1
5525 } else if (codePoint > 0xFFFF) {
5526 // encode to utf16 (surrogate pair dance)
5527 codePoint -= 0x10000
5528 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5529 codePoint = 0xDC00 | codePoint & 0x3FF
5530 }
5531
5532 res.push(codePoint)
5533 i += bytesPerSequence
5534 }
5535
5536 return decodeCodePointsArray(res)
5537 }
5538
5539 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5540 // the lowest limit is Chrome, with 0x10000 args.
5541 // We go 1 magnitude less, for safety
5542 var MAX_ARGUMENTS_LENGTH = 0x1000
5543
5544 function decodeCodePointsArray (codePoints) {
5545 var len = codePoints.length
5546 if (len <= MAX_ARGUMENTS_LENGTH) {
5547 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5548 }
5549
5550 // Decode in chunks to avoid "call stack size exceeded".
5551 var res = ''
5552 var i = 0
5553 while (i < len) {
5554 res += String.fromCharCode.apply(
5555 String,
5556 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5557 )
5558 }
5559 return res
5560 }
5561
5562 function asciiSlice (buf, start, end) {
5563 var ret = ''
5564 end = Math.min(buf.length, end)
5565
5566 for (var i = start; i < end; ++i) {
5567 ret += String.fromCharCode(buf[i] & 0x7F)
5568 }
5569 return ret
5570 }
5571
5572 function latin1Slice (buf, start, end) {
5573 var ret = ''
5574 end = Math.min(buf.length, end)
5575
5576 for (var i = start; i < end; ++i) {
5577 ret += String.fromCharCode(buf[i])
5578 }
5579 return ret
5580 }
5581
5582 function hexSlice (buf, start, end) {
5583 var len = buf.length
5584
5585 if (!start || start < 0) start = 0
5586 if (!end || end < 0 || end > len) end = len
5587
5588 var out = ''
5589 for (var i = start; i < end; ++i) {
5590 out += toHex(buf[i])
5591 }
5592 return out
5593 }
5594
5595 function utf16leSlice (buf, start, end) {
5596 var bytes = buf.slice(start, end)
5597 var res = ''
5598 for (var i = 0; i < bytes.length; i += 2) {
5599 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5600 }
5601 return res
5602 }
5603
5604 Buffer.prototype.slice = function slice (start, end) {
5605 var len = this.length
5606 start = ~~start
5607 end = end === undefined ? len : ~~end
5608
5609 if (start < 0) {
5610 start += len
5611 if (start < 0) start = 0
5612 } else if (start > len) {
5613 start = len
5614 }
5615
5616 if (end < 0) {
5617 end += len
5618 if (end < 0) end = 0
5619 } else if (end > len) {
5620 end = len
5621 }
5622
5623 if (end < start) end = start
5624
5625 var newBuf = this.subarray(start, end)
5626 // Return an augmented `Uint8Array` instance
5627 newBuf.__proto__ = Buffer.prototype
5628 return newBuf
5629 }
5630
5631 /*
5632 * Need to make sure that buffer isn't trying to write out of bounds.
5633 */
5634 function checkOffset (offset, ext, length) {
5635 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5636 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5637 }
5638
5639 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5640 offset = offset >>> 0
5641 byteLength = byteLength >>> 0
5642 if (!noAssert) checkOffset(offset, byteLength, this.length)
5643
5644 var val = this[offset]
5645 var mul = 1
5646 var i = 0
5647 while (++i < byteLength && (mul *= 0x100)) {
5648 val += this[offset + i] * mul
5649 }
5650
5651 return val
5652 }
5653
5654 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5655 offset = offset >>> 0
5656 byteLength = byteLength >>> 0
5657 if (!noAssert) {
5658 checkOffset(offset, byteLength, this.length)
5659 }
5660
5661 var val = this[offset + --byteLength]
5662 var mul = 1
5663 while (byteLength > 0 && (mul *= 0x100)) {
5664 val += this[offset + --byteLength] * mul
5665 }
5666
5667 return val
5668 }
5669
5670 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5671 offset = offset >>> 0
5672 if (!noAssert) checkOffset(offset, 1, this.length)
5673 return this[offset]
5674 }
5675
5676 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 2, this.length)
5679 return this[offset] | (this[offset + 1] << 8)
5680 }
5681
5682 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return (this[offset] << 8) | this[offset + 1]
5686 }
5687
5688 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 4, this.length)
5691
5692 return ((this[offset]) |
5693 (this[offset + 1] << 8) |
5694 (this[offset + 2] << 16)) +
5695 (this[offset + 3] * 0x1000000)
5696 }
5697
5698 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5699 offset = offset >>> 0
5700 if (!noAssert) checkOffset(offset, 4, this.length)
5701
5702 return (this[offset] * 0x1000000) +
5703 ((this[offset + 1] << 16) |
5704 (this[offset + 2] << 8) |
5705 this[offset + 3])
5706 }
5707
5708 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5709 offset = offset >>> 0
5710 byteLength = byteLength >>> 0
5711 if (!noAssert) checkOffset(offset, byteLength, this.length)
5712
5713 var val = this[offset]
5714 var mul = 1
5715 var i = 0
5716 while (++i < byteLength && (mul *= 0x100)) {
5717 val += this[offset + i] * mul
5718 }
5719 mul *= 0x80
5720
5721 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5722
5723 return val
5724 }
5725
5726 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5727 offset = offset >>> 0
5728 byteLength = byteLength >>> 0
5729 if (!noAssert) checkOffset(offset, byteLength, this.length)
5730
5731 var i = byteLength
5732 var mul = 1
5733 var val = this[offset + --i]
5734 while (i > 0 && (mul *= 0x100)) {
5735 val += this[offset + --i] * mul
5736 }
5737 mul *= 0x80
5738
5739 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5740
5741 return val
5742 }
5743
5744 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5745 offset = offset >>> 0
5746 if (!noAssert) checkOffset(offset, 1, this.length)
5747 if (!(this[offset] & 0x80)) return (this[offset])
5748 return ((0xff - this[offset] + 1) * -1)
5749 }
5750
5751 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5752 offset = offset >>> 0
5753 if (!noAssert) checkOffset(offset, 2, this.length)
5754 var val = this[offset] | (this[offset + 1] << 8)
5755 return (val & 0x8000) ? val | 0xFFFF0000 : val
5756 }
5757
5758 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5759 offset = offset >>> 0
5760 if (!noAssert) checkOffset(offset, 2, this.length)
5761 var val = this[offset + 1] | (this[offset] << 8)
5762 return (val & 0x8000) ? val | 0xFFFF0000 : val
5763 }
5764
5765 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5766 offset = offset >>> 0
5767 if (!noAssert) checkOffset(offset, 4, this.length)
5768
5769 return (this[offset]) |
5770 (this[offset + 1] << 8) |
5771 (this[offset + 2] << 16) |
5772 (this[offset + 3] << 24)
5773 }
5774
5775 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5776 offset = offset >>> 0
5777 if (!noAssert) checkOffset(offset, 4, this.length)
5778
5779 return (this[offset] << 24) |
5780 (this[offset + 1] << 16) |
5781 (this[offset + 2] << 8) |
5782 (this[offset + 3])
5783 }
5784
5785 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5786 offset = offset >>> 0
5787 if (!noAssert) checkOffset(offset, 4, this.length)
5788 return ieee754.read(this, offset, true, 23, 4)
5789 }
5790
5791 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, false, 23, 4)
5795 }
5796
5797 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 8, this.length)
5800 return ieee754.read(this, offset, true, 52, 8)
5801 }
5802
5803 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, false, 52, 8)
5807 }
5808
5809 function checkInt (buf, value, offset, ext, max, min) {
5810 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5811 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5812 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5813 }
5814
5815 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5816 value = +value
5817 offset = offset >>> 0
5818 byteLength = byteLength >>> 0
5819 if (!noAssert) {
5820 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5821 checkInt(this, value, offset, byteLength, maxBytes, 0)
5822 }
5823
5824 var mul = 1
5825 var i = 0
5826 this[offset] = value & 0xFF
5827 while (++i < byteLength && (mul *= 0x100)) {
5828 this[offset + i] = (value / mul) & 0xFF
5829 }
5830
5831 return offset + byteLength
5832 }
5833
5834 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5835 value = +value
5836 offset = offset >>> 0
5837 byteLength = byteLength >>> 0
5838 if (!noAssert) {
5839 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5840 checkInt(this, value, offset, byteLength, maxBytes, 0)
5841 }
5842
5843 var i = byteLength - 1
5844 var mul = 1
5845 this[offset + i] = value & 0xFF
5846 while (--i >= 0 && (mul *= 0x100)) {
5847 this[offset + i] = (value / mul) & 0xFF
5848 }
5849
5850 return offset + byteLength
5851 }
5852
5853 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5854 value = +value
5855 offset = offset >>> 0
5856 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5857 this[offset] = (value & 0xff)
5858 return offset + 1
5859 }
5860
5861 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5862 value = +value
5863 offset = offset >>> 0
5864 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5865 this[offset] = (value & 0xff)
5866 this[offset + 1] = (value >>> 8)
5867 return offset + 2
5868 }
5869
5870 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5871 value = +value
5872 offset = offset >>> 0
5873 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5874 this[offset] = (value >>> 8)
5875 this[offset + 1] = (value & 0xff)
5876 return offset + 2
5877 }
5878
5879 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5880 value = +value
5881 offset = offset >>> 0
5882 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5883 this[offset + 3] = (value >>> 24)
5884 this[offset + 2] = (value >>> 16)
5885 this[offset + 1] = (value >>> 8)
5886 this[offset] = (value & 0xff)
5887 return offset + 4
5888 }
5889
5890 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5891 value = +value
5892 offset = offset >>> 0
5893 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5894 this[offset] = (value >>> 24)
5895 this[offset + 1] = (value >>> 16)
5896 this[offset + 2] = (value >>> 8)
5897 this[offset + 3] = (value & 0xff)
5898 return offset + 4
5899 }
5900
5901 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5902 value = +value
5903 offset = offset >>> 0
5904 if (!noAssert) {
5905 var limit = Math.pow(2, (8 * byteLength) - 1)
5906
5907 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5908 }
5909
5910 var i = 0
5911 var mul = 1
5912 var sub = 0
5913 this[offset] = value & 0xFF
5914 while (++i < byteLength && (mul *= 0x100)) {
5915 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5916 sub = 1
5917 }
5918 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5919 }
5920
5921 return offset + byteLength
5922 }
5923
5924 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5925 value = +value
5926 offset = offset >>> 0
5927 if (!noAssert) {
5928 var limit = Math.pow(2, (8 * byteLength) - 1)
5929
5930 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5931 }
5932
5933 var i = byteLength - 1
5934 var mul = 1
5935 var sub = 0
5936 this[offset + i] = value & 0xFF
5937 while (--i >= 0 && (mul *= 0x100)) {
5938 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5939 sub = 1
5940 }
5941 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5942 }
5943
5944 return offset + byteLength
5945 }
5946
5947 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5948 value = +value
5949 offset = offset >>> 0
5950 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5951 if (value < 0) value = 0xff + value + 1
5952 this[offset] = (value & 0xff)
5953 return offset + 1
5954 }
5955
5956 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5957 value = +value
5958 offset = offset >>> 0
5959 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5960 this[offset] = (value & 0xff)
5961 this[offset + 1] = (value >>> 8)
5962 return offset + 2
5963 }
5964
5965 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5966 value = +value
5967 offset = offset >>> 0
5968 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5969 this[offset] = (value >>> 8)
5970 this[offset + 1] = (value & 0xff)
5971 return offset + 2
5972 }
5973
5974 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5975 value = +value
5976 offset = offset >>> 0
5977 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5978 this[offset] = (value & 0xff)
5979 this[offset + 1] = (value >>> 8)
5980 this[offset + 2] = (value >>> 16)
5981 this[offset + 3] = (value >>> 24)
5982 return offset + 4
5983 }
5984
5985 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5986 value = +value
5987 offset = offset >>> 0
5988 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5989 if (value < 0) value = 0xffffffff + value + 1
5990 this[offset] = (value >>> 24)
5991 this[offset + 1] = (value >>> 16)
5992 this[offset + 2] = (value >>> 8)
5993 this[offset + 3] = (value & 0xff)
5994 return offset + 4
5995 }
5996
5997 function checkIEEE754 (buf, value, offset, ext, max, min) {
5998 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5999 if (offset < 0) throw new RangeError('Index out of range')
6000 }
6001
6002 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6003 value = +value
6004 offset = offset >>> 0
6005 if (!noAssert) {
6006 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6007 }
6008 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6009 return offset + 4
6010 }
6011
6012 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6013 return writeFloat(this, value, offset, true, noAssert)
6014 }
6015
6016 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6017 return writeFloat(this, value, offset, false, noAssert)
6018 }
6019
6020 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6021 value = +value
6022 offset = offset >>> 0
6023 if (!noAssert) {
6024 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6025 }
6026 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6027 return offset + 8
6028 }
6029
6030 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6031 return writeDouble(this, value, offset, true, noAssert)
6032 }
6033
6034 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6035 return writeDouble(this, value, offset, false, noAssert)
6036 }
6037
6038 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6039 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6040 if (!start) start = 0
6041 if (!end && end !== 0) end = this.length
6042 if (targetStart >= target.length) targetStart = target.length
6043 if (!targetStart) targetStart = 0
6044 if (end > 0 && end < start) end = start
6045
6046 // Copy 0 bytes; we're done
6047 if (end === start) return 0
6048 if (target.length === 0 || this.length === 0) return 0
6049
6050 // Fatal error conditions
6051 if (targetStart < 0) {
6052 throw new RangeError('targetStart out of bounds')
6053 }
6054 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6055 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6056
6057 // Are we oob?
6058 if (end > this.length) end = this.length
6059 if (target.length - targetStart < end - start) {
6060 end = target.length - targetStart + start
6061 }
6062
6063 var len = end - start
6064 var i
6065
6066 if (this === target && start < targetStart && targetStart < end) {
6067 // descending copy from end
6068 for (i = len - 1; i >= 0; --i) {
6069 target[i + targetStart] = this[i + start]
6070 }
6071 } else if (len < 1000) {
6072 // ascending copy from start
6073 for (i = 0; i < len; ++i) {
6074 target[i + targetStart] = this[i + start]
6075 }
6076 } else {
6077 Uint8Array.prototype.set.call(
6078 target,
6079 this.subarray(start, start + len),
6080 targetStart
6081 )
6082 }
6083
6084 return len
6085 }
6086
6087 // Usage:
6088 // buffer.fill(number[, offset[, end]])
6089 // buffer.fill(buffer[, offset[, end]])
6090 // buffer.fill(string[, offset[, end]][, encoding])
6091 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6092 // Handle string cases:
6093 if (typeof val === 'string') {
6094 if (typeof start === 'string') {
6095 encoding = start
6096 start = 0
6097 end = this.length
6098 } else if (typeof end === 'string') {
6099 encoding = end
6100 end = this.length
6101 }
6102 if (val.length === 1) {
6103 var code = val.charCodeAt(0)
6104 if (code < 256) {
6105 val = code
6106 }
6107 }
6108 if (encoding !== undefined && typeof encoding !== 'string') {
6109 throw new TypeError('encoding must be a string')
6110 }
6111 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6112 throw new TypeError('Unknown encoding: ' + encoding)
6113 }
6114 } else if (typeof val === 'number') {
6115 val = val & 255
6116 }
6117
6118 // Invalid ranges are not set to a default, so can range check early.
6119 if (start < 0 || this.length < start || this.length < end) {
6120 throw new RangeError('Out of range index')
6121 }
6122
6123 if (end <= start) {
6124 return this
6125 }
6126
6127 start = start >>> 0
6128 end = end === undefined ? this.length : end >>> 0
6129
6130 if (!val) val = 0
6131
6132 var i
6133 if (typeof val === 'number') {
6134 for (i = start; i < end; ++i) {
6135 this[i] = val
6136 }
6137 } else {
6138 var bytes = Buffer.isBuffer(val)
6139 ? val
6140 : new Buffer(val, encoding)
6141 var len = bytes.length
6142 for (i = 0; i < end - start; ++i) {
6143 this[i + start] = bytes[i % len]
6144 }
6145 }
6146
6147 return this
6148 }
6149
6150 // HELPER FUNCTIONS
6151 // ================
6152
6153 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6154
6155 function base64clean (str) {
6156 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6157 str = str.trim().replace(INVALID_BASE64_RE, '')
6158 // Node converts strings with length < 2 to ''
6159 if (str.length < 2) return ''
6160 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6161 while (str.length % 4 !== 0) {
6162 str = str + '='
6163 }
6164 return str
6165 }
6166
6167 function toHex (n) {
6168 if (n < 16) return '0' + n.toString(16)
6169 return n.toString(16)
6170 }
6171
6172 function utf8ToBytes (string, units) {
6173 units = units || Infinity
6174 var codePoint
6175 var length = string.length
6176 var leadSurrogate = null
6177 var bytes = []
6178
6179 for (var i = 0; i < length; ++i) {
6180 codePoint = string.charCodeAt(i)
6181
6182 // is surrogate component
6183 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6184 // last char was a lead
6185 if (!leadSurrogate) {
6186 // no lead yet
6187 if (codePoint > 0xDBFF) {
6188 // unexpected trail
6189 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6190 continue
6191 } else if (i + 1 === length) {
6192 // unpaired lead
6193 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6194 continue
6195 }
6196
6197 // valid lead
6198 leadSurrogate = codePoint
6199
6200 continue
6201 }
6202
6203 // 2 leads in a row
6204 if (codePoint < 0xDC00) {
6205 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6206 leadSurrogate = codePoint
6207 continue
6208 }
6209
6210 // valid surrogate pair
6211 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6212 } else if (leadSurrogate) {
6213 // valid bmp char, but last char was a lead
6214 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6215 }
6216
6217 leadSurrogate = null
6218
6219 // encode utf8
6220 if (codePoint < 0x80) {
6221 if ((units -= 1) < 0) break
6222 bytes.push(codePoint)
6223 } else if (codePoint < 0x800) {
6224 if ((units -= 2) < 0) break
6225 bytes.push(
6226 codePoint >> 0x6 | 0xC0,
6227 codePoint & 0x3F | 0x80
6228 )
6229 } else if (codePoint < 0x10000) {
6230 if ((units -= 3) < 0) break
6231 bytes.push(
6232 codePoint >> 0xC | 0xE0,
6233 codePoint >> 0x6 & 0x3F | 0x80,
6234 codePoint & 0x3F | 0x80
6235 )
6236 } else if (codePoint < 0x110000) {
6237 if ((units -= 4) < 0) break
6238 bytes.push(
6239 codePoint >> 0x12 | 0xF0,
6240 codePoint >> 0xC & 0x3F | 0x80,
6241 codePoint >> 0x6 & 0x3F | 0x80,
6242 codePoint & 0x3F | 0x80
6243 )
6244 } else {
6245 throw new Error('Invalid code point')
6246 }
6247 }
6248
6249 return bytes
6250 }
6251
6252 function asciiToBytes (str) {
6253 var byteArray = []
6254 for (var i = 0; i < str.length; ++i) {
6255 // Node's code seems to be doing this and not & 0x7F..
6256 byteArray.push(str.charCodeAt(i) & 0xFF)
6257 }
6258 return byteArray
6259 }
6260
6261 function utf16leToBytes (str, units) {
6262 var c, hi, lo
6263 var byteArray = []
6264 for (var i = 0; i < str.length; ++i) {
6265 if ((units -= 2) < 0) break
6266
6267 c = str.charCodeAt(i)
6268 hi = c >> 8
6269 lo = c % 256
6270 byteArray.push(lo)
6271 byteArray.push(hi)
6272 }
6273
6274 return byteArray
6275 }
6276
6277 function base64ToBytes (str) {
6278 return base64.toByteArray(base64clean(str))
6279 }
6280
6281 function blitBuffer (src, dst, offset, length) {
6282 for (var i = 0; i < length; ++i) {
6283 if ((i + offset >= dst.length) || (i >= src.length)) break
6284 dst[i + offset] = src[i]
6285 }
6286 return i
6287 }
6288
6289 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6290 function isArrayBufferView (obj) {
6291 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6292 }
6293
6294 function numberIsNaN (obj) {
6295 return obj !== obj // eslint-disable-line no-self-compare
6296 }
6297
6298 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6299 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6300 var e, m
6301 var eLen = nBytes * 8 - mLen - 1
6302 var eMax = (1 << eLen) - 1
6303 var eBias = eMax >> 1
6304 var nBits = -7
6305 var i = isLE ? (nBytes - 1) : 0
6306 var d = isLE ? -1 : 1
6307 var s = buffer[offset + i]
6308
6309 i += d
6310
6311 e = s & ((1 << (-nBits)) - 1)
6312 s >>= (-nBits)
6313 nBits += eLen
6314 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6315
6316 m = e & ((1 << (-nBits)) - 1)
6317 e >>= (-nBits)
6318 nBits += mLen
6319 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6320
6321 if (e === 0) {
6322 e = 1 - eBias
6323 } else if (e === eMax) {
6324 return m ? NaN : ((s ? -1 : 1) * Infinity)
6325 } else {
6326 m = m + Math.pow(2, mLen)
6327 e = e - eBias
6328 }
6329 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6330 }
6331
6332 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6333 var e, m, c
6334 var eLen = nBytes * 8 - mLen - 1
6335 var eMax = (1 << eLen) - 1
6336 var eBias = eMax >> 1
6337 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6338 var i = isLE ? 0 : (nBytes - 1)
6339 var d = isLE ? 1 : -1
6340 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6341
6342 value = Math.abs(value)
6343
6344 if (isNaN(value) || value === Infinity) {
6345 m = isNaN(value) ? 1 : 0
6346 e = eMax
6347 } else {
6348 e = Math.floor(Math.log(value) / Math.LN2)
6349 if (value * (c = Math.pow(2, -e)) < 1) {
6350 e--
6351 c *= 2
6352 }
6353 if (e + eBias >= 1) {
6354 value += rt / c
6355 } else {
6356 value += rt * Math.pow(2, 1 - eBias)
6357 }
6358 if (value * c >= 2) {
6359 e++
6360 c /= 2
6361 }
6362
6363 if (e + eBias >= eMax) {
6364 m = 0
6365 e = eMax
6366 } else if (e + eBias >= 1) {
6367 m = (value * c - 1) * Math.pow(2, mLen)
6368 e = e + eBias
6369 } else {
6370 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6371 e = 0
6372 }
6373 }
6374
6375 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6376
6377 e = (e << mLen) | m
6378 eLen += mLen
6379 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6380
6381 buffer[offset + i - d] |= s * 128
6382 }
6383
6384 },{}],4:[function(require,module,exports){
6385 window.basex = require('base-x')
6386 },{"base-x":5}],5:[function(require,module,exports){
6387 // base-x encoding
6388 // Forked from https://github.com/cryptocoinjs/bs58
6389 // Originally written by Mike Hearn for BitcoinJ
6390 // Copyright (c) 2011 Google Inc
6391 // Ported to JavaScript by Stefan Thomas
6392 // Merged Buffer refactorings from base58-native by Stephen Pair
6393 // Copyright (c) 2013 BitPay Inc
6394
6395 var Buffer = require('safe-buffer').Buffer
6396
6397 module.exports = function base (ALPHABET) {
6398 var ALPHABET_MAP = {}
6399 var BASE = ALPHABET.length
6400 var LEADER = ALPHABET.charAt(0)
6401
6402 // pre-compute lookup table
6403 for (var z = 0; z < ALPHABET.length; z++) {
6404 var x = ALPHABET.charAt(z)
6405
6406 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6407 ALPHABET_MAP[x] = z
6408 }
6409
6410 function encode (source) {
6411 if (source.length === 0) return ''
6412
6413 var digits = [0]
6414 for (var i = 0; i < source.length; ++i) {
6415 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6416 carry += digits[j] << 8
6417 digits[j] = carry % BASE
6418 carry = (carry / BASE) | 0
6419 }
6420
6421 while (carry > 0) {
6422 digits.push(carry % BASE)
6423 carry = (carry / BASE) | 0
6424 }
6425 }
6426
6427 var string = ''
6428
6429 // deal with leading zeros
6430 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6431 // convert digits to a string
6432 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6433
6434 return string
6435 }
6436
6437 function decodeUnsafe (string) {
6438 if (string.length === 0) return Buffer.allocUnsafe(0)
6439
6440 var bytes = [0]
6441 for (var i = 0; i < string.length; i++) {
6442 var value = ALPHABET_MAP[string[i]]
6443 if (value === undefined) return
6444
6445 for (var j = 0, carry = value; j < bytes.length; ++j) {
6446 carry += bytes[j] * BASE
6447 bytes[j] = carry & 0xff
6448 carry >>= 8
6449 }
6450
6451 while (carry > 0) {
6452 bytes.push(carry & 0xff)
6453 carry >>= 8
6454 }
6455 }
6456
6457 // deal with leading zeros
6458 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6459 bytes.push(0)
6460 }
6461
6462 return Buffer.from(bytes.reverse())
6463 }
6464
6465 function decode (string) {
6466 var buffer = decodeUnsafe(string)
6467 if (buffer) return buffer
6468
6469 throw new Error('Non-base' + BASE + ' character')
6470 }
6471
6472 return {
6473 encode: encode,
6474 decodeUnsafe: decodeUnsafe,
6475 decode: decode
6476 }
6477 }
6478
6479 },{"safe-buffer":6}],6:[function(require,module,exports){
6480 module.exports = require('buffer')
6481
6482 },{"buffer":2}]},{},[4])(4)
6483 });</script>
6484 <script>(function (root) {
6485 "use strict";
6486
6487 /***** unorm.js *****/
6488
6489 /*
6490 * UnicodeNormalizer 1.0.0
6491 * Copyright (c) 2008 Matsuza
6492 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6493 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6494 * $Rev: 13309 $
6495 */
6496
6497 var DEFAULT_FEATURE = [null, 0, {}];
6498 var CACHE_THRESHOLD = 10;
6499 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6500 var NCount = VCount * TCount; // 588
6501 var SCount = LCount * NCount; // 11172
6502
6503 var UChar = function(cp, feature){
6504 this.codepoint = cp;
6505 this.feature = feature;
6506 };
6507
6508 // Strategies
6509 var cache = {};
6510 var cacheCounter = [];
6511 for (var i = 0; i <= 0xFF; ++i){
6512 cacheCounter[i] = 0;
6513 }
6514
6515 function fromCache(next, cp, needFeature){
6516 var ret = cache[cp];
6517 if(!ret){
6518 ret = next(cp, needFeature);
6519 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6520 cache[cp] = ret;
6521 }
6522 }
6523 return ret;
6524 }
6525
6526 function fromData(next, cp, needFeature){
6527 var hash = cp & 0xFF00;
6528 var dunit = UChar.udata[hash] || {};
6529 var f = dunit[cp];
6530 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6531 }
6532 function fromCpOnly(next, cp, needFeature){
6533 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6534 }
6535 function fromRuleBasedJamo(next, cp, needFeature){
6536 var j;
6537 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6538 return next(cp, needFeature);
6539 }
6540 if(LBase <= cp && cp < LBase + LCount){
6541 var c = {};
6542 var base = (cp - LBase) * VCount;
6543 for (j = 0; j < VCount; ++j){
6544 c[VBase + j] = SBase + TCount * (j + base);
6545 }
6546 return new UChar(cp, [,,c]);
6547 }
6548
6549 var SIndex = cp - SBase;
6550 var TIndex = SIndex % TCount;
6551 var feature = [];
6552 if(TIndex !== 0){
6553 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6554 } else {
6555 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6556 feature[2] = {};
6557 for (j = 1; j < TCount; ++j){
6558 feature[2][TBase + j] = cp + j;
6559 }
6560 }
6561 return new UChar(cp, feature);
6562 }
6563 function fromCpFilter(next, cp, needFeature){
6564 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6565 }
6566
6567 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6568
6569 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6570 return function (cp, needFeature) {
6571 return strategy(next, cp, needFeature);
6572 };
6573 }, null);
6574
6575 UChar.isHighSurrogate = function(cp){
6576 return cp >= 0xD800 && cp <= 0xDBFF;
6577 };
6578 UChar.isLowSurrogate = function(cp){
6579 return cp >= 0xDC00 && cp <= 0xDFFF;
6580 };
6581
6582 UChar.prototype.prepFeature = function(){
6583 if(!this.feature){
6584 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6585 }
6586 };
6587
6588 UChar.prototype.toString = function(){
6589 if(this.codepoint < 0x10000){
6590 return String.fromCharCode(this.codepoint);
6591 } else {
6592 var x = this.codepoint - 0x10000;
6593 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6594 }
6595 };
6596
6597 UChar.prototype.getDecomp = function(){
6598 this.prepFeature();
6599 return this.feature[0] || null;
6600 };
6601
6602 UChar.prototype.isCompatibility = function(){
6603 this.prepFeature();
6604 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6605 };
6606 UChar.prototype.isExclude = function(){
6607 this.prepFeature();
6608 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6609 };
6610 UChar.prototype.getCanonicalClass = function(){
6611 this.prepFeature();
6612 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6613 };
6614 UChar.prototype.getComposite = function(following){
6615 this.prepFeature();
6616 if(!this.feature[2]){
6617 return null;
6618 }
6619 var cp = this.feature[2][following.codepoint];
6620 return cp ? UChar.fromCharCode(cp) : null;
6621 };
6622
6623 var UCharIterator = function(str){
6624 this.str = str;
6625 this.cursor = 0;
6626 };
6627 UCharIterator.prototype.next = function(){
6628 if(!!this.str && this.cursor < this.str.length){
6629 var cp = this.str.charCodeAt(this.cursor++);
6630 var d;
6631 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6632 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6633 ++this.cursor;
6634 }
6635 return UChar.fromCharCode(cp);
6636 } else {
6637 this.str = null;
6638 return null;
6639 }
6640 };
6641
6642 var RecursDecompIterator = function(it, cano){
6643 this.it = it;
6644 this.canonical = cano;
6645 this.resBuf = [];
6646 };
6647
6648 RecursDecompIterator.prototype.next = function(){
6649 function recursiveDecomp(cano, uchar){
6650 var decomp = uchar.getDecomp();
6651 if(!!decomp && !(cano && uchar.isCompatibility())){
6652 var ret = [];
6653 for(var i = 0; i < decomp.length; ++i){
6654 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6655 ret = ret.concat(a);
6656 }
6657 return ret;
6658 } else {
6659 return [uchar];
6660 }
6661 }
6662 if(this.resBuf.length === 0){
6663 var uchar = this.it.next();
6664 if(!uchar){
6665 return null;
6666 }
6667 this.resBuf = recursiveDecomp(this.canonical, uchar);
6668 }
6669 return this.resBuf.shift();
6670 };
6671
6672 var DecompIterator = function(it){
6673 this.it = it;
6674 this.resBuf = [];
6675 };
6676
6677 DecompIterator.prototype.next = function(){
6678 var cc;
6679 if(this.resBuf.length === 0){
6680 do{
6681 var uchar = this.it.next();
6682 if(!uchar){
6683 break;
6684 }
6685 cc = uchar.getCanonicalClass();
6686 var inspt = this.resBuf.length;
6687 if(cc !== 0){
6688 for(; inspt > 0; --inspt){
6689 var uchar2 = this.resBuf[inspt - 1];
6690 var cc2 = uchar2.getCanonicalClass();
6691 if(cc2 <= cc){
6692 break;
6693 }
6694 }
6695 }
6696 this.resBuf.splice(inspt, 0, uchar);
6697 } while(cc !== 0);
6698 }
6699 return this.resBuf.shift();
6700 };
6701
6702 var CompIterator = function(it){
6703 this.it = it;
6704 this.procBuf = [];
6705 this.resBuf = [];
6706 this.lastClass = null;
6707 };
6708
6709 CompIterator.prototype.next = function(){
6710 while(this.resBuf.length === 0){
6711 var uchar = this.it.next();
6712 if(!uchar){
6713 this.resBuf = this.procBuf;
6714 this.procBuf = [];
6715 break;
6716 }
6717 if(this.procBuf.length === 0){
6718 this.lastClass = uchar.getCanonicalClass();
6719 this.procBuf.push(uchar);
6720 } else {
6721 var starter = this.procBuf[0];
6722 var composite = starter.getComposite(uchar);
6723 var cc = uchar.getCanonicalClass();
6724 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6725 this.procBuf[0] = composite;
6726 } else {
6727 if(cc === 0){
6728 this.resBuf = this.procBuf;
6729 this.procBuf = [];
6730 }
6731 this.lastClass = cc;
6732 this.procBuf.push(uchar);
6733 }
6734 }
6735 }
6736 return this.resBuf.shift();
6737 };
6738
6739 var createIterator = function(mode, str){
6740 switch(mode){
6741 case "NFD":
6742 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6743 case "NFKD":
6744 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6745 case "NFC":
6746 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6747 case "NFKC":
6748 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6749 }
6750 throw mode + " is invalid";
6751 };
6752 var normalize = function(mode, str){
6753 var it = createIterator(mode, str);
6754 var ret = "";
6755 var uchar;
6756 while(!!(uchar = it.next())){
6757 ret += uchar.toString();
6758 }
6759 return ret;
6760 };
6761
6762 /* API functions */
6763 function nfd(str){
6764 return normalize("NFD", str);
6765 }
6766
6767 function nfkd(str){
6768 return normalize("NFKD", str);
6769 }
6770
6771 function nfc(str){
6772 return normalize("NFC", str);
6773 }
6774
6775 function nfkc(str){
6776 return normalize("NFKC", str);
6777 }
6778
6779 /* Unicode data */
6780 UChar.udata={
6781 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]]},
6782 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]},
6783 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]},
6784 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]},
6785 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]]},
6786 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]},
6787 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]},
6788 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]},
6789 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]},
6790 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]},
6791 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]},
6792 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]},
6793 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]},
6794 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]]},
6795 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]},
6796 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]},
6797 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]},
6798 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]},
6799 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6800 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]},
6801 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6802 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6803 5632:{71231:[,9],71350:[,9],71351:[,7]},
6804 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6805 6144:{6313:[,228]},
6806 6400:{6457:[,222],6458:[,230],6459:[,220]},
6807 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]},
6808 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]},
6809 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]},
6810 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]},
6811 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]]},
6812 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}]},
6813 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]},
6814 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}]},
6815 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]]},
6816 8960:{9001:[[12296]],9002:[[12297]]},
6817 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]},
6818 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]},
6819 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6820 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]},
6821 11776:{11935:[[27597],256],12019:[[40863],256]},
6822 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]},
6823 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]},
6824 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]},
6825 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]},
6826 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]},
6827 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6828 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6829 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]},
6830 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6831 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]},
6832 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6833 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6834 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6835 48128:{113822:[,1]},
6836 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]},
6837 53760:{119362:[,230],119363:[,230],119364:[,230]},
6838 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]},
6839 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]},
6840 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]},
6841 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]},
6842 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6843 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]},
6844 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]},
6845 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]},
6846 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]]},
6847 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]]},
6848 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]]},
6849 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]},
6850 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]},
6851 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]},
6852 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]},
6853 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]}
6854
6855 };
6856
6857 /***** Module to export */
6858 var unorm = {
6859 nfc: nfc,
6860 nfd: nfd,
6861 nfkc: nfkc,
6862 nfkd: nfkd
6863 };
6864
6865 /*globals module:true,define:true*/
6866
6867 // CommonJS
6868 if (typeof module === "object") {
6869 module.exports = unorm;
6870
6871 // AMD
6872 } else if (typeof define === "function" && define.amd) {
6873 define("unorm", function () {
6874 return unorm;
6875 });
6876
6877 // Global
6878 } else {
6879 root.unorm = unorm;
6880 }
6881
6882 /***** Export as shim for String::normalize method *****/
6883 /*
6884 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6885
6886 21.1.3.12 String.prototype.normalize(form="NFC")
6887 When the normalize method is called with one argument form, the following steps are taken:
6888
6889 1. Let O be CheckObjectCoercible(this value).
6890 2. Let S be ToString(O).
6891 3. ReturnIfAbrupt(S).
6892 4. If form is not provided or undefined let form be "NFC".
6893 5. Let f be ToString(form).
6894 6. ReturnIfAbrupt(f).
6895 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6896 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.
6897 9. Return ns.
6898
6899 The length property of the normalize method is 0.
6900
6901 *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.
6902 */
6903 unorm.shimApplied = false;
6904
6905 if (!String.prototype.normalize) {
6906 String.prototype.normalize = function(form) {
6907 var str = "" + this;
6908 form = form === undefined ? "NFC" : form;
6909
6910 if (form === "NFC") {
6911 return unorm.nfc(str);
6912 } else if (form === "NFD") {
6913 return unorm.nfd(str);
6914 } else if (form === "NFKC") {
6915 return unorm.nfkc(str);
6916 } else if (form === "NFKD") {
6917 return unorm.nfkd(str);
6918 } else {
6919 throw new RangeError("Invalid normalization form: " + form);
6920 }
6921 };
6922
6923 unorm.shimApplied = true;
6924 }
6925 }(this));
6926 </script>
6927 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6928 !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)
6929 },_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))
6930 },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});
6931 </script>
6932 <script>/*!
6933 * Bootstrap v3.2.0 (http://getbootstrap.com)
6934 * Copyright 2011-2014 Twitter, Inc.
6935 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6936 */
6937 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>
6938 <script>(function() {
6939 'use strict';
6940
6941 /**
6942 * Extend an Object with another Object's properties.
6943 *
6944 * The source objects are specified as additional arguments.
6945 *
6946 * @param dst Object the object to extend.
6947 *
6948 * @return Object the final object.
6949 */
6950 var _extend = function(dst) {
6951 var sources = Array.prototype.slice.call(arguments, 1);
6952 for (var i=0; i<sources.length; ++i) {
6953 var src = sources[i];
6954 for (var p in src) {
6955 if (src.hasOwnProperty(p)) dst[p] = src[p];
6956 }
6957 }
6958 return dst;
6959 };
6960
6961
6962 /**
6963 * Defer execution of given function.
6964 * @param {Function} func
6965 */
6966 var _defer = function(func) {
6967 if (typeof setImmediate === 'function') {
6968 return setImmediate(func);
6969 } else {
6970 return setTimeout(func, 0);
6971 }
6972 };
6973
6974 /**
6975 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6976 */
6977 var Levenshtein = {
6978 /**
6979 * Calculate levenshtein distance of the two strings.
6980 *
6981 * @param str1 String the first string.
6982 * @param str2 String the second string.
6983 * @return Integer the levenshtein distance (0 and above).
6984 */
6985 get: function(str1, str2) {
6986 // base cases
6987 if (str1 === str2) return 0;
6988 if (str1.length === 0) return str2.length;
6989 if (str2.length === 0) return str1.length;
6990
6991 // two rows
6992 var prevRow = new Array(str2.length + 1),
6993 curCol, nextCol, i, j, tmp;
6994
6995 // initialise previous row
6996 for (i=0; i<prevRow.length; ++i) {
6997 prevRow[i] = i;
6998 }
6999
7000 // calculate current row distance from previous row
7001 for (i=0; i<str1.length; ++i) {
7002 nextCol = i + 1;
7003
7004 for (j=0; j<str2.length; ++j) {
7005 curCol = nextCol;
7006
7007 // substution
7008 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7009 // insertion
7010 tmp = curCol + 1;
7011 if (nextCol > tmp) {
7012 nextCol = tmp;
7013 }
7014 // deletion
7015 tmp = prevRow[j + 1] + 1;
7016 if (nextCol > tmp) {
7017 nextCol = tmp;
7018 }
7019
7020 // copy current col value into previous (in preparation for next iteration)
7021 prevRow[j] = curCol;
7022 }
7023
7024 // copy last col value into previous (in preparation for next iteration)
7025 prevRow[j] = nextCol;
7026 }
7027
7028 return nextCol;
7029 },
7030
7031 /**
7032 * Asynchronously calculate levenshtein distance of the two strings.
7033 *
7034 * @param str1 String the first string.
7035 * @param str2 String the second string.
7036 * @param cb Function callback function with signature: function(Error err, int distance)
7037 * @param [options] Object additional options.
7038 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7039 */
7040 getAsync: function(str1, str2, cb, options) {
7041 options = _extend({}, {
7042 progress: null
7043 }, options);
7044
7045 // base cases
7046 if (str1 === str2) return cb(null, 0);
7047 if (str1.length === 0) return cb(null, str2.length);
7048 if (str2.length === 0) return cb(null, str1.length);
7049
7050 // two rows
7051 var prevRow = new Array(str2.length + 1),
7052 curCol, nextCol,
7053 i, j, tmp,
7054 startTime, currentTime;
7055
7056 // initialise previous row
7057 for (i=0; i<prevRow.length; ++i) {
7058 prevRow[i] = i;
7059 }
7060
7061 nextCol = 1;
7062 i = 0;
7063 j = -1;
7064
7065 var __calculate = function() {
7066 // reset timer
7067 startTime = new Date().valueOf();
7068 currentTime = startTime;
7069
7070 // keep going until one second has elapsed
7071 while (currentTime - startTime < 1000) {
7072 // reached end of current row?
7073 if (str2.length <= (++j)) {
7074 // copy current into previous (in preparation for next iteration)
7075 prevRow[j] = nextCol;
7076
7077 // if already done all chars
7078 if (str1.length <= (++i)) {
7079 return cb(null, nextCol);
7080 }
7081 // else if we have more left to do
7082 else {
7083 nextCol = i + 1;
7084 j = 0;
7085 }
7086 }
7087
7088 // calculation
7089 curCol = nextCol;
7090
7091 // substution
7092 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7093 // insertion
7094 tmp = curCol + 1;
7095 if (nextCol > tmp) {
7096 nextCol = tmp;
7097 }
7098 // deletion
7099 tmp = prevRow[j + 1] + 1;
7100 if (nextCol > tmp) {
7101 nextCol = tmp;
7102 }
7103
7104 // copy current into previous (in preparation for next iteration)
7105 prevRow[j] = curCol;
7106
7107 // get current time
7108 currentTime = new Date().valueOf();
7109 }
7110
7111 // send a progress update?
7112 if (null !== options.progress) {
7113 try {
7114 options.progress.call(null, (i * 100.0/ str1.length));
7115 } catch (err) {
7116 return cb('Progress callback: ' + err.toString());
7117 }
7118 }
7119
7120 // next iteration
7121 _defer(__calculate);
7122 };
7123
7124 __calculate();
7125 }
7126
7127 };
7128
7129 // amd
7130 if (typeof define !== "undefined" && define !== null && define.amd) {
7131 define(function() {
7132 return Levenshtein;
7133 });
7134 }
7135 // commonjs
7136 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7137 module.exports = Levenshtein;
7138 }
7139 // web worker
7140 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7141 self.Levenshtein = Levenshtein;
7142 }
7143 // browser main thread
7144 else if (typeof window !== "undefined" && window !== null) {
7145 window.Levenshtein = Levenshtein;
7146 }
7147 }());
7148
7149 </script>
7150 <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},
7151 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;
7152 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-
7153 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]=
7154 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},
7155 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=
7156 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-
7157 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,
7158 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=
7159 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&&
7160 (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,
7161 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)-
7162 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:"+
7163 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:"+
7164 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+
7165 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),
7166 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>
7167 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],
7168 [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,
7169 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,
7170 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,
7171 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,
7172 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,
7173 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*
7174 (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,
7175 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),
7176 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",
7177 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7178 </script>
7179 <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){
7180 // (public) Constructor
7181 function BigInteger(a, b, c) {
7182 if (!(this instanceof BigInteger))
7183 return new BigInteger(a, b, c)
7184
7185 if (a != null) {
7186 if ("number" == typeof a) this.fromNumber(a, b, c)
7187 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7188 else this.fromString(a, b)
7189 }
7190 }
7191
7192 var proto = BigInteger.prototype
7193
7194 // duck-typed isBigInteger
7195 proto.__bigi = require('../package.json').version
7196 BigInteger.isBigInteger = function (obj, check_ver) {
7197 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7198 }
7199
7200 // Bits per digit
7201 var dbits
7202
7203 // am: Compute w_j += (x*this_i), propagate carries,
7204 // c is initial carry, returns final carry.
7205 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7206 // We need to select the fastest one that works in this environment.
7207
7208 // am1: use a single mult and divide to get the high bits,
7209 // max digit bits should be 26 because
7210 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7211 function am1(i, x, w, j, c, n) {
7212 while (--n >= 0) {
7213 var v = x * this[i++] + w[j] + c
7214 c = Math.floor(v / 0x4000000)
7215 w[j++] = v & 0x3ffffff
7216 }
7217 return c
7218 }
7219 // am2 avoids a big mult-and-extract completely.
7220 // Max digit bits should be <= 30 because we do bitwise ops
7221 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7222 function am2(i, x, w, j, c, n) {
7223 var xl = x & 0x7fff,
7224 xh = x >> 15
7225 while (--n >= 0) {
7226 var l = this[i] & 0x7fff
7227 var h = this[i++] >> 15
7228 var m = xh * l + h * xl
7229 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7230 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7231 w[j++] = l & 0x3fffffff
7232 }
7233 return c
7234 }
7235 // Alternately, set max digit bits to 28 since some
7236 // browsers slow down when dealing with 32-bit numbers.
7237 function am3(i, x, w, j, c, n) {
7238 var xl = x & 0x3fff,
7239 xh = x >> 14
7240 while (--n >= 0) {
7241 var l = this[i] & 0x3fff
7242 var h = this[i++] >> 14
7243 var m = xh * l + h * xl
7244 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7245 c = (l >> 28) + (m >> 14) + xh * h
7246 w[j++] = l & 0xfffffff
7247 }
7248 return c
7249 }
7250
7251 // wtf?
7252 BigInteger.prototype.am = am1
7253 dbits = 26
7254
7255 BigInteger.prototype.DB = dbits
7256 BigInteger.prototype.DM = ((1 << dbits) - 1)
7257 var DV = BigInteger.prototype.DV = (1 << dbits)
7258
7259 var BI_FP = 52
7260 BigInteger.prototype.FV = Math.pow(2, BI_FP)
7261 BigInteger.prototype.F1 = BI_FP - dbits
7262 BigInteger.prototype.F2 = 2 * dbits - BI_FP
7263
7264 // Digit conversions
7265 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7266 var BI_RC = new Array()
7267 var rr, vv
7268 rr = "0".charCodeAt(0)
7269 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7270 rr = "a".charCodeAt(0)
7271 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7272 rr = "A".charCodeAt(0)
7273 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7274
7275 function int2char(n) {
7276 return BI_RM.charAt(n)
7277 }
7278
7279 function intAt(s, i) {
7280 var c = BI_RC[s.charCodeAt(i)]
7281 return (c == null) ? -1 : c
7282 }
7283
7284 // (protected) copy this to r
7285 function bnpCopyTo(r) {
7286 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7287 r.t = this.t
7288 r.s = this.s
7289 }
7290
7291 // (protected) set from integer value x, -DV <= x < DV
7292 function bnpFromInt(x) {
7293 this.t = 1
7294 this.s = (x < 0) ? -1 : 0
7295 if (x > 0) this[0] = x
7296 else if (x < -1) this[0] = x + DV
7297 else this.t = 0
7298 }
7299
7300 // return bigint initialized to value
7301 function nbv(i) {
7302 var r = new BigInteger()
7303 r.fromInt(i)
7304 return r
7305 }
7306
7307 // (protected) set from string and radix
7308 function bnpFromString(s, b) {
7309 var self = this
7310
7311 var k
7312 if (b == 16) k = 4
7313 else if (b == 8) k = 3
7314 else if (b == 256) k = 8; // byte array
7315 else if (b == 2) k = 1
7316 else if (b == 32) k = 5
7317 else if (b == 4) k = 2
7318 else {
7319 self.fromRadix(s, b)
7320 return
7321 }
7322 self.t = 0
7323 self.s = 0
7324 var i = s.length,
7325 mi = false,
7326 sh = 0
7327 while (--i >= 0) {
7328 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7329 if (x < 0) {
7330 if (s.charAt(i) == "-") mi = true
7331 continue
7332 }
7333 mi = false
7334 if (sh == 0)
7335 self[self.t++] = x
7336 else if (sh + k > self.DB) {
7337 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7338 self[self.t++] = (x >> (self.DB - sh))
7339 } else
7340 self[self.t - 1] |= x << sh
7341 sh += k
7342 if (sh >= self.DB) sh -= self.DB
7343 }
7344 if (k == 8 && (s[0] & 0x80) != 0) {
7345 self.s = -1
7346 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7347 }
7348 self.clamp()
7349 if (mi) BigInteger.ZERO.subTo(self, self)
7350 }
7351
7352 // (protected) clamp off excess high words
7353 function bnpClamp() {
7354 var c = this.s & this.DM
7355 while (this.t > 0 && this[this.t - 1] == c)--this.t
7356 }
7357
7358 // (public) return string representation in given radix
7359 function bnToString(b) {
7360 var self = this
7361 if (self.s < 0) return "-" + self.negate()
7362 .toString(b)
7363 var k
7364 if (b == 16) k = 4
7365 else if (b == 8) k = 3
7366 else if (b == 2) k = 1
7367 else if (b == 32) k = 5
7368 else if (b == 4) k = 2
7369 else return self.toRadix(b)
7370 var km = (1 << k) - 1,
7371 d, m = false,
7372 r = "",
7373 i = self.t
7374 var p = self.DB - (i * self.DB) % k
7375 if (i-- > 0) {
7376 if (p < self.DB && (d = self[i] >> p) > 0) {
7377 m = true
7378 r = int2char(d)
7379 }
7380 while (i >= 0) {
7381 if (p < k) {
7382 d = (self[i] & ((1 << p) - 1)) << (k - p)
7383 d |= self[--i] >> (p += self.DB - k)
7384 } else {
7385 d = (self[i] >> (p -= k)) & km
7386 if (p <= 0) {
7387 p += self.DB
7388 --i
7389 }
7390 }
7391 if (d > 0) m = true
7392 if (m) r += int2char(d)
7393 }
7394 }
7395 return m ? r : "0"
7396 }
7397
7398 // (public) -this
7399 function bnNegate() {
7400 var r = new BigInteger()
7401 BigInteger.ZERO.subTo(this, r)
7402 return r
7403 }
7404
7405 // (public) |this|
7406 function bnAbs() {
7407 return (this.s < 0) ? this.negate() : this
7408 }
7409
7410 // (public) return + if this > a, - if this < a, 0 if equal
7411 function bnCompareTo(a) {
7412 var r = this.s - a.s
7413 if (r != 0) return r
7414 var i = this.t
7415 r = i - a.t
7416 if (r != 0) return (this.s < 0) ? -r : r
7417 while (--i >= 0)
7418 if ((r = this[i] - a[i]) != 0) return r
7419 return 0
7420 }
7421
7422 // returns bit length of the integer x
7423 function nbits(x) {
7424 var r = 1,
7425 t
7426 if ((t = x >>> 16) != 0) {
7427 x = t
7428 r += 16
7429 }
7430 if ((t = x >> 8) != 0) {
7431 x = t
7432 r += 8
7433 }
7434 if ((t = x >> 4) != 0) {
7435 x = t
7436 r += 4
7437 }
7438 if ((t = x >> 2) != 0) {
7439 x = t
7440 r += 2
7441 }
7442 if ((t = x >> 1) != 0) {
7443 x = t
7444 r += 1
7445 }
7446 return r
7447 }
7448
7449 // (public) return the number of bits in "this"
7450 function bnBitLength() {
7451 if (this.t <= 0) return 0
7452 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7453 }
7454
7455 // (public) return the number of bytes in "this"
7456 function bnByteLength() {
7457 return this.bitLength() >> 3
7458 }
7459
7460 // (protected) r = this << n*DB
7461 function bnpDLShiftTo(n, r) {
7462 var i
7463 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7464 for (i = n - 1; i >= 0; --i) r[i] = 0
7465 r.t = this.t + n
7466 r.s = this.s
7467 }
7468
7469 // (protected) r = this >> n*DB
7470 function bnpDRShiftTo(n, r) {
7471 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7472 r.t = Math.max(this.t - n, 0)
7473 r.s = this.s
7474 }
7475
7476 // (protected) r = this << n
7477 function bnpLShiftTo(n, r) {
7478 var self = this
7479 var bs = n % self.DB
7480 var cbs = self.DB - bs
7481 var bm = (1 << cbs) - 1
7482 var ds = Math.floor(n / self.DB),
7483 c = (self.s << bs) & self.DM,
7484 i
7485 for (i = self.t - 1; i >= 0; --i) {
7486 r[i + ds + 1] = (self[i] >> cbs) | c
7487 c = (self[i] & bm) << bs
7488 }
7489 for (i = ds - 1; i >= 0; --i) r[i] = 0
7490 r[ds] = c
7491 r.t = self.t + ds + 1
7492 r.s = self.s
7493 r.clamp()
7494 }
7495
7496 // (protected) r = this >> n
7497 function bnpRShiftTo(n, r) {
7498 var self = this
7499 r.s = self.s
7500 var ds = Math.floor(n / self.DB)
7501 if (ds >= self.t) {
7502 r.t = 0
7503 return
7504 }
7505 var bs = n % self.DB
7506 var cbs = self.DB - bs
7507 var bm = (1 << bs) - 1
7508 r[0] = self[ds] >> bs
7509 for (var i = ds + 1; i < self.t; ++i) {
7510 r[i - ds - 1] |= (self[i] & bm) << cbs
7511 r[i - ds] = self[i] >> bs
7512 }
7513 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7514 r.t = self.t - ds
7515 r.clamp()
7516 }
7517
7518 // (protected) r = this - a
7519 function bnpSubTo(a, r) {
7520 var self = this
7521 var i = 0,
7522 c = 0,
7523 m = Math.min(a.t, self.t)
7524 while (i < m) {
7525 c += self[i] - a[i]
7526 r[i++] = c & self.DM
7527 c >>= self.DB
7528 }
7529 if (a.t < self.t) {
7530 c -= a.s
7531 while (i < self.t) {
7532 c += self[i]
7533 r[i++] = c & self.DM
7534 c >>= self.DB
7535 }
7536 c += self.s
7537 } else {
7538 c += self.s
7539 while (i < a.t) {
7540 c -= a[i]
7541 r[i++] = c & self.DM
7542 c >>= self.DB
7543 }
7544 c -= a.s
7545 }
7546 r.s = (c < 0) ? -1 : 0
7547 if (c < -1) r[i++] = self.DV + c
7548 else if (c > 0) r[i++] = c
7549 r.t = i
7550 r.clamp()
7551 }
7552
7553 // (protected) r = this * a, r != this,a (HAC 14.12)
7554 // "this" should be the larger one if appropriate.
7555 function bnpMultiplyTo(a, r) {
7556 var x = this.abs(),
7557 y = a.abs()
7558 var i = x.t
7559 r.t = i + y.t
7560 while (--i >= 0) r[i] = 0
7561 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7562 r.s = 0
7563 r.clamp()
7564 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7565 }
7566
7567 // (protected) r = this^2, r != this (HAC 14.16)
7568 function bnpSquareTo(r) {
7569 var x = this.abs()
7570 var i = r.t = 2 * x.t
7571 while (--i >= 0) r[i] = 0
7572 for (i = 0; i < x.t - 1; ++i) {
7573 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7574 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7575 r[i + x.t] -= x.DV
7576 r[i + x.t + 1] = 1
7577 }
7578 }
7579 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7580 r.s = 0
7581 r.clamp()
7582 }
7583
7584 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7585 // r != q, this != m. q or r may be null.
7586 function bnpDivRemTo(m, q, r) {
7587 var self = this
7588 var pm = m.abs()
7589 if (pm.t <= 0) return
7590 var pt = self.abs()
7591 if (pt.t < pm.t) {
7592 if (q != null) q.fromInt(0)
7593 if (r != null) self.copyTo(r)
7594 return
7595 }
7596 if (r == null) r = new BigInteger()
7597 var y = new BigInteger(),
7598 ts = self.s,
7599 ms = m.s
7600 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7601 if (nsh > 0) {
7602 pm.lShiftTo(nsh, y)
7603 pt.lShiftTo(nsh, r)
7604 } else {
7605 pm.copyTo(y)
7606 pt.copyTo(r)
7607 }
7608 var ys = y.t
7609 var y0 = y[ys - 1]
7610 if (y0 == 0) return
7611 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7612 var d1 = self.FV / yt,
7613 d2 = (1 << self.F1) / yt,
7614 e = 1 << self.F2
7615 var i = r.t,
7616 j = i - ys,
7617 t = (q == null) ? new BigInteger() : q
7618 y.dlShiftTo(j, t)
7619 if (r.compareTo(t) >= 0) {
7620 r[r.t++] = 1
7621 r.subTo(t, r)
7622 }
7623 BigInteger.ONE.dlShiftTo(ys, t)
7624 t.subTo(y, y); // "negative" y so we can replace sub with am later
7625 while (y.t < ys) y[y.t++] = 0
7626 while (--j >= 0) {
7627 // Estimate quotient digit
7628 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7629 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7630 y.dlShiftTo(j, t)
7631 r.subTo(t, r)
7632 while (r[i] < --qd) r.subTo(t, r)
7633 }
7634 }
7635 if (q != null) {
7636 r.drShiftTo(ys, q)
7637 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7638 }
7639 r.t = ys
7640 r.clamp()
7641 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7642 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7643 }
7644
7645 // (public) this mod a
7646 function bnMod(a) {
7647 var r = new BigInteger()
7648 this.abs()
7649 .divRemTo(a, null, r)
7650 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7651 return r
7652 }
7653
7654 // Modular reduction using "classic" algorithm
7655 function Classic(m) {
7656 this.m = m
7657 }
7658
7659 function cConvert(x) {
7660 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7661 else return x
7662 }
7663
7664 function cRevert(x) {
7665 return x
7666 }
7667
7668 function cReduce(x) {
7669 x.divRemTo(this.m, null, x)
7670 }
7671
7672 function cMulTo(x, y, r) {
7673 x.multiplyTo(y, r)
7674 this.reduce(r)
7675 }
7676
7677 function cSqrTo(x, r) {
7678 x.squareTo(r)
7679 this.reduce(r)
7680 }
7681
7682 Classic.prototype.convert = cConvert
7683 Classic.prototype.revert = cRevert
7684 Classic.prototype.reduce = cReduce
7685 Classic.prototype.mulTo = cMulTo
7686 Classic.prototype.sqrTo = cSqrTo
7687
7688 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7689 // justification:
7690 // xy == 1 (mod m)
7691 // xy = 1+km
7692 // xy(2-xy) = (1+km)(1-km)
7693 // x[y(2-xy)] = 1-k^2m^2
7694 // x[y(2-xy)] == 1 (mod m^2)
7695 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7696 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7697 // JS multiply "overflows" differently from C/C++, so care is needed here.
7698 function bnpInvDigit() {
7699 if (this.t < 1) return 0
7700 var x = this[0]
7701 if ((x & 1) == 0) return 0
7702 var y = x & 3; // y == 1/x mod 2^2
7703 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7704 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7705 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7706 // last step - calculate inverse mod DV directly
7707 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7708 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7709 // we really want the negative inverse, and -DV < y < DV
7710 return (y > 0) ? this.DV - y : -y
7711 }
7712
7713 // Montgomery reduction
7714 function Montgomery(m) {
7715 this.m = m
7716 this.mp = m.invDigit()
7717 this.mpl = this.mp & 0x7fff
7718 this.mph = this.mp >> 15
7719 this.um = (1 << (m.DB - 15)) - 1
7720 this.mt2 = 2 * m.t
7721 }
7722
7723 // xR mod m
7724 function montConvert(x) {
7725 var r = new BigInteger()
7726 x.abs()
7727 .dlShiftTo(this.m.t, r)
7728 r.divRemTo(this.m, null, r)
7729 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7730 return r
7731 }
7732
7733 // x/R mod m
7734 function montRevert(x) {
7735 var r = new BigInteger()
7736 x.copyTo(r)
7737 this.reduce(r)
7738 return r
7739 }
7740
7741 // x = x/R mod m (HAC 14.32)
7742 function montReduce(x) {
7743 while (x.t <= this.mt2) // pad x so am has enough room later
7744 x[x.t++] = 0
7745 for (var i = 0; i < this.m.t; ++i) {
7746 // faster way of calculating u0 = x[i]*mp mod DV
7747 var j = x[i] & 0x7fff
7748 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7749 // use am to combine the multiply-shift-add into one call
7750 j = i + this.m.t
7751 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7752 // propagate carry
7753 while (x[j] >= x.DV) {
7754 x[j] -= x.DV
7755 x[++j]++
7756 }
7757 }
7758 x.clamp()
7759 x.drShiftTo(this.m.t, x)
7760 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7761 }
7762
7763 // r = "x^2/R mod m"; x != r
7764 function montSqrTo(x, r) {
7765 x.squareTo(r)
7766 this.reduce(r)
7767 }
7768
7769 // r = "xy/R mod m"; x,y != r
7770 function montMulTo(x, y, r) {
7771 x.multiplyTo(y, r)
7772 this.reduce(r)
7773 }
7774
7775 Montgomery.prototype.convert = montConvert
7776 Montgomery.prototype.revert = montRevert
7777 Montgomery.prototype.reduce = montReduce
7778 Montgomery.prototype.mulTo = montMulTo
7779 Montgomery.prototype.sqrTo = montSqrTo
7780
7781 // (protected) true iff this is even
7782 function bnpIsEven() {
7783 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7784 }
7785
7786 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7787 function bnpExp(e, z) {
7788 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7789 var r = new BigInteger(),
7790 r2 = new BigInteger(),
7791 g = z.convert(this),
7792 i = nbits(e) - 1
7793 g.copyTo(r)
7794 while (--i >= 0) {
7795 z.sqrTo(r, r2)
7796 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7797 else {
7798 var t = r
7799 r = r2
7800 r2 = t
7801 }
7802 }
7803 return z.revert(r)
7804 }
7805
7806 // (public) this^e % m, 0 <= e < 2^32
7807 function bnModPowInt(e, m) {
7808 var z
7809 if (e < 256 || m.isEven()) z = new Classic(m)
7810 else z = new Montgomery(m)
7811 return this.exp(e, z)
7812 }
7813
7814 // protected
7815 proto.copyTo = bnpCopyTo
7816 proto.fromInt = bnpFromInt
7817 proto.fromString = bnpFromString
7818 proto.clamp = bnpClamp
7819 proto.dlShiftTo = bnpDLShiftTo
7820 proto.drShiftTo = bnpDRShiftTo
7821 proto.lShiftTo = bnpLShiftTo
7822 proto.rShiftTo = bnpRShiftTo
7823 proto.subTo = bnpSubTo
7824 proto.multiplyTo = bnpMultiplyTo
7825 proto.squareTo = bnpSquareTo
7826 proto.divRemTo = bnpDivRemTo
7827 proto.invDigit = bnpInvDigit
7828 proto.isEven = bnpIsEven
7829 proto.exp = bnpExp
7830
7831 // public
7832 proto.toString = bnToString
7833 proto.negate = bnNegate
7834 proto.abs = bnAbs
7835 proto.compareTo = bnCompareTo
7836 proto.bitLength = bnBitLength
7837 proto.byteLength = bnByteLength
7838 proto.mod = bnMod
7839 proto.modPowInt = bnModPowInt
7840
7841 // (public)
7842 function bnClone() {
7843 var r = new BigInteger()
7844 this.copyTo(r)
7845 return r
7846 }
7847
7848 // (public) return value as integer
7849 function bnIntValue() {
7850 if (this.s < 0) {
7851 if (this.t == 1) return this[0] - this.DV
7852 else if (this.t == 0) return -1
7853 } else if (this.t == 1) return this[0]
7854 else if (this.t == 0) return 0
7855 // assumes 16 < DB < 32
7856 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7857 }
7858
7859 // (public) return value as byte
7860 function bnByteValue() {
7861 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7862 }
7863
7864 // (public) return value as short (assumes DB>=16)
7865 function bnShortValue() {
7866 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7867 }
7868
7869 // (protected) return x s.t. r^x < DV
7870 function bnpChunkSize(r) {
7871 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7872 }
7873
7874 // (public) 0 if this == 0, 1 if this > 0
7875 function bnSigNum() {
7876 if (this.s < 0) return -1
7877 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7878 else return 1
7879 }
7880
7881 // (protected) convert to radix string
7882 function bnpToRadix(b) {
7883 if (b == null) b = 10
7884 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7885 var cs = this.chunkSize(b)
7886 var a = Math.pow(b, cs)
7887 var d = nbv(a),
7888 y = new BigInteger(),
7889 z = new BigInteger(),
7890 r = ""
7891 this.divRemTo(d, y, z)
7892 while (y.signum() > 0) {
7893 r = (a + z.intValue())
7894 .toString(b)
7895 .substr(1) + r
7896 y.divRemTo(d, y, z)
7897 }
7898 return z.intValue()
7899 .toString(b) + r
7900 }
7901
7902 // (protected) convert from radix string
7903 function bnpFromRadix(s, b) {
7904 var self = this
7905 self.fromInt(0)
7906 if (b == null) b = 10
7907 var cs = self.chunkSize(b)
7908 var d = Math.pow(b, cs),
7909 mi = false,
7910 j = 0,
7911 w = 0
7912 for (var i = 0; i < s.length; ++i) {
7913 var x = intAt(s, i)
7914 if (x < 0) {
7915 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7916 continue
7917 }
7918 w = b * w + x
7919 if (++j >= cs) {
7920 self.dMultiply(d)
7921 self.dAddOffset(w, 0)
7922 j = 0
7923 w = 0
7924 }
7925 }
7926 if (j > 0) {
7927 self.dMultiply(Math.pow(b, j))
7928 self.dAddOffset(w, 0)
7929 }
7930 if (mi) BigInteger.ZERO.subTo(self, self)
7931 }
7932
7933 // (protected) alternate constructor
7934 function bnpFromNumber(a, b, c) {
7935 var self = this
7936 if ("number" == typeof b) {
7937 // new BigInteger(int,int,RNG)
7938 if (a < 2) self.fromInt(1)
7939 else {
7940 self.fromNumber(a, c)
7941 if (!self.testBit(a - 1)) // force MSB set
7942 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7943 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7944 while (!self.isProbablePrime(b)) {
7945 self.dAddOffset(2, 0)
7946 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7947 }
7948 }
7949 } else {
7950 // new BigInteger(int,RNG)
7951 var x = new Array(),
7952 t = a & 7
7953 x.length = (a >> 3) + 1
7954 b.nextBytes(x)
7955 if (t > 0) x[0] &= ((1 << t) - 1)
7956 else x[0] = 0
7957 self.fromString(x, 256)
7958 }
7959 }
7960
7961 // (public) convert to bigendian byte array
7962 function bnToByteArray() {
7963 var self = this
7964 var i = self.t,
7965 r = new Array()
7966 r[0] = self.s
7967 var p = self.DB - (i * self.DB) % 8,
7968 d, k = 0
7969 if (i-- > 0) {
7970 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7971 r[k++] = d | (self.s << (self.DB - p))
7972 while (i >= 0) {
7973 if (p < 8) {
7974 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7975 d |= self[--i] >> (p += self.DB - 8)
7976 } else {
7977 d = (self[i] >> (p -= 8)) & 0xff
7978 if (p <= 0) {
7979 p += self.DB
7980 --i
7981 }
7982 }
7983 if ((d & 0x80) != 0) d |= -256
7984 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7985 if (k > 0 || d != self.s) r[k++] = d
7986 }
7987 }
7988 return r
7989 }
7990
7991 function bnEquals(a) {
7992 return (this.compareTo(a) == 0)
7993 }
7994
7995 function bnMin(a) {
7996 return (this.compareTo(a) < 0) ? this : a
7997 }
7998
7999 function bnMax(a) {
8000 return (this.compareTo(a) > 0) ? this : a
8001 }
8002
8003 // (protected) r = this op a (bitwise)
8004 function bnpBitwiseTo(a, op, r) {
8005 var self = this
8006 var i, f, m = Math.min(a.t, self.t)
8007 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8008 if (a.t < self.t) {
8009 f = a.s & self.DM
8010 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8011 r.t = self.t
8012 } else {
8013 f = self.s & self.DM
8014 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8015 r.t = a.t
8016 }
8017 r.s = op(self.s, a.s)
8018 r.clamp()
8019 }
8020
8021 // (public) this & a
8022 function op_and(x, y) {
8023 return x & y
8024 }
8025
8026 function bnAnd(a) {
8027 var r = new BigInteger()
8028 this.bitwiseTo(a, op_and, r)
8029 return r
8030 }
8031
8032 // (public) this | a
8033 function op_or(x, y) {
8034 return x | y
8035 }
8036
8037 function bnOr(a) {
8038 var r = new BigInteger()
8039 this.bitwiseTo(a, op_or, r)
8040 return r
8041 }
8042
8043 // (public) this ^ a
8044 function op_xor(x, y) {
8045 return x ^ y
8046 }
8047
8048 function bnXor(a) {
8049 var r = new BigInteger()
8050 this.bitwiseTo(a, op_xor, r)
8051 return r
8052 }
8053
8054 // (public) this & ~a
8055 function op_andnot(x, y) {
8056 return x & ~y
8057 }
8058
8059 function bnAndNot(a) {
8060 var r = new BigInteger()
8061 this.bitwiseTo(a, op_andnot, r)
8062 return r
8063 }
8064
8065 // (public) ~this
8066 function bnNot() {
8067 var r = new BigInteger()
8068 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8069 r.t = this.t
8070 r.s = ~this.s
8071 return r
8072 }
8073
8074 // (public) this << n
8075 function bnShiftLeft(n) {
8076 var r = new BigInteger()
8077 if (n < 0) this.rShiftTo(-n, r)
8078 else this.lShiftTo(n, r)
8079 return r
8080 }
8081
8082 // (public) this >> n
8083 function bnShiftRight(n) {
8084 var r = new BigInteger()
8085 if (n < 0) this.lShiftTo(-n, r)
8086 else this.rShiftTo(n, r)
8087 return r
8088 }
8089
8090 // return index of lowest 1-bit in x, x < 2^31
8091 function lbit(x) {
8092 if (x == 0) return -1
8093 var r = 0
8094 if ((x & 0xffff) == 0) {
8095 x >>= 16
8096 r += 16
8097 }
8098 if ((x & 0xff) == 0) {
8099 x >>= 8
8100 r += 8
8101 }
8102 if ((x & 0xf) == 0) {
8103 x >>= 4
8104 r += 4
8105 }
8106 if ((x & 3) == 0) {
8107 x >>= 2
8108 r += 2
8109 }
8110 if ((x & 1) == 0)++r
8111 return r
8112 }
8113
8114 // (public) returns index of lowest 1-bit (or -1 if none)
8115 function bnGetLowestSetBit() {
8116 for (var i = 0; i < this.t; ++i)
8117 if (this[i] != 0) return i * this.DB + lbit(this[i])
8118 if (this.s < 0) return this.t * this.DB
8119 return -1
8120 }
8121
8122 // return number of 1 bits in x
8123 function cbit(x) {
8124 var r = 0
8125 while (x != 0) {
8126 x &= x - 1
8127 ++r
8128 }
8129 return r
8130 }
8131
8132 // (public) return number of set bits
8133 function bnBitCount() {
8134 var r = 0,
8135 x = this.s & this.DM
8136 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8137 return r
8138 }
8139
8140 // (public) true iff nth bit is set
8141 function bnTestBit(n) {
8142 var j = Math.floor(n / this.DB)
8143 if (j >= this.t) return (this.s != 0)
8144 return ((this[j] & (1 << (n % this.DB))) != 0)
8145 }
8146
8147 // (protected) this op (1<<n)
8148 function bnpChangeBit(n, op) {
8149 var r = BigInteger.ONE.shiftLeft(n)
8150 this.bitwiseTo(r, op, r)
8151 return r
8152 }
8153
8154 // (public) this | (1<<n)
8155 function bnSetBit(n) {
8156 return this.changeBit(n, op_or)
8157 }
8158
8159 // (public) this & ~(1<<n)
8160 function bnClearBit(n) {
8161 return this.changeBit(n, op_andnot)
8162 }
8163
8164 // (public) this ^ (1<<n)
8165 function bnFlipBit(n) {
8166 return this.changeBit(n, op_xor)
8167 }
8168
8169 // (protected) r = this + a
8170 function bnpAddTo(a, r) {
8171 var self = this
8172
8173 var i = 0,
8174 c = 0,
8175 m = Math.min(a.t, self.t)
8176 while (i < m) {
8177 c += self[i] + a[i]
8178 r[i++] = c & self.DM
8179 c >>= self.DB
8180 }
8181 if (a.t < self.t) {
8182 c += a.s
8183 while (i < self.t) {
8184 c += self[i]
8185 r[i++] = c & self.DM
8186 c >>= self.DB
8187 }
8188 c += self.s
8189 } else {
8190 c += self.s
8191 while (i < a.t) {
8192 c += a[i]
8193 r[i++] = c & self.DM
8194 c >>= self.DB
8195 }
8196 c += a.s
8197 }
8198 r.s = (c < 0) ? -1 : 0
8199 if (c > 0) r[i++] = c
8200 else if (c < -1) r[i++] = self.DV + c
8201 r.t = i
8202 r.clamp()
8203 }
8204
8205 // (public) this + a
8206 function bnAdd(a) {
8207 var r = new BigInteger()
8208 this.addTo(a, r)
8209 return r
8210 }
8211
8212 // (public) this - a
8213 function bnSubtract(a) {
8214 var r = new BigInteger()
8215 this.subTo(a, r)
8216 return r
8217 }
8218
8219 // (public) this * a
8220 function bnMultiply(a) {
8221 var r = new BigInteger()
8222 this.multiplyTo(a, r)
8223 return r
8224 }
8225
8226 // (public) this^2
8227 function bnSquare() {
8228 var r = new BigInteger()
8229 this.squareTo(r)
8230 return r
8231 }
8232
8233 // (public) this / a
8234 function bnDivide(a) {
8235 var r = new BigInteger()
8236 this.divRemTo(a, r, null)
8237 return r
8238 }
8239
8240 // (public) this % a
8241 function bnRemainder(a) {
8242 var r = new BigInteger()
8243 this.divRemTo(a, null, r)
8244 return r
8245 }
8246
8247 // (public) [this/a,this%a]
8248 function bnDivideAndRemainder(a) {
8249 var q = new BigInteger(),
8250 r = new BigInteger()
8251 this.divRemTo(a, q, r)
8252 return new Array(q, r)
8253 }
8254
8255 // (protected) this *= n, this >= 0, 1 < n < DV
8256 function bnpDMultiply(n) {
8257 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8258 ++this.t
8259 this.clamp()
8260 }
8261
8262 // (protected) this += n << w words, this >= 0
8263 function bnpDAddOffset(n, w) {
8264 if (n == 0) return
8265 while (this.t <= w) this[this.t++] = 0
8266 this[w] += n
8267 while (this[w] >= this.DV) {
8268 this[w] -= this.DV
8269 if (++w >= this.t) this[this.t++] = 0
8270 ++this[w]
8271 }
8272 }
8273
8274 // A "null" reducer
8275 function NullExp() {}
8276
8277 function nNop(x) {
8278 return x
8279 }
8280
8281 function nMulTo(x, y, r) {
8282 x.multiplyTo(y, r)
8283 }
8284
8285 function nSqrTo(x, r) {
8286 x.squareTo(r)
8287 }
8288
8289 NullExp.prototype.convert = nNop
8290 NullExp.prototype.revert = nNop
8291 NullExp.prototype.mulTo = nMulTo
8292 NullExp.prototype.sqrTo = nSqrTo
8293
8294 // (public) this^e
8295 function bnPow(e) {
8296 return this.exp(e, new NullExp())
8297 }
8298
8299 // (protected) r = lower n words of "this * a", a.t <= n
8300 // "this" should be the larger one if appropriate.
8301 function bnpMultiplyLowerTo(a, n, r) {
8302 var i = Math.min(this.t + a.t, n)
8303 r.s = 0; // assumes a,this >= 0
8304 r.t = i
8305 while (i > 0) r[--i] = 0
8306 var j
8307 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8308 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8309 r.clamp()
8310 }
8311
8312 // (protected) r = "this * a" without lower n words, n > 0
8313 // "this" should be the larger one if appropriate.
8314 function bnpMultiplyUpperTo(a, n, r) {
8315 --n
8316 var i = r.t = this.t + a.t - n
8317 r.s = 0; // assumes a,this >= 0
8318 while (--i >= 0) r[i] = 0
8319 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8320 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8321 r.clamp()
8322 r.drShiftTo(1, r)
8323 }
8324
8325 // Barrett modular reduction
8326 function Barrett(m) {
8327 // setup Barrett
8328 this.r2 = new BigInteger()
8329 this.q3 = new BigInteger()
8330 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8331 this.mu = this.r2.divide(m)
8332 this.m = m
8333 }
8334
8335 function barrettConvert(x) {
8336 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8337 else if (x.compareTo(this.m) < 0) return x
8338 else {
8339 var r = new BigInteger()
8340 x.copyTo(r)
8341 this.reduce(r)
8342 return r
8343 }
8344 }
8345
8346 function barrettRevert(x) {
8347 return x
8348 }
8349
8350 // x = x mod m (HAC 14.42)
8351 function barrettReduce(x) {
8352 var self = this
8353 x.drShiftTo(self.m.t - 1, self.r2)
8354 if (x.t > self.m.t + 1) {
8355 x.t = self.m.t + 1
8356 x.clamp()
8357 }
8358 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8359 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8360 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8361 x.subTo(self.r2, x)
8362 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8363 }
8364
8365 // r = x^2 mod m; x != r
8366 function barrettSqrTo(x, r) {
8367 x.squareTo(r)
8368 this.reduce(r)
8369 }
8370
8371 // r = x*y mod m; x,y != r
8372 function barrettMulTo(x, y, r) {
8373 x.multiplyTo(y, r)
8374 this.reduce(r)
8375 }
8376
8377 Barrett.prototype.convert = barrettConvert
8378 Barrett.prototype.revert = barrettRevert
8379 Barrett.prototype.reduce = barrettReduce
8380 Barrett.prototype.mulTo = barrettMulTo
8381 Barrett.prototype.sqrTo = barrettSqrTo
8382
8383 // (public) this^e % m (HAC 14.85)
8384 function bnModPow(e, m) {
8385 var i = e.bitLength(),
8386 k, r = nbv(1),
8387 z
8388 if (i <= 0) return r
8389 else if (i < 18) k = 1
8390 else if (i < 48) k = 3
8391 else if (i < 144) k = 4
8392 else if (i < 768) k = 5
8393 else k = 6
8394 if (i < 8)
8395 z = new Classic(m)
8396 else if (m.isEven())
8397 z = new Barrett(m)
8398 else
8399 z = new Montgomery(m)
8400
8401 // precomputation
8402 var g = new Array(),
8403 n = 3,
8404 k1 = k - 1,
8405 km = (1 << k) - 1
8406 g[1] = z.convert(this)
8407 if (k > 1) {
8408 var g2 = new BigInteger()
8409 z.sqrTo(g[1], g2)
8410 while (n <= km) {
8411 g[n] = new BigInteger()
8412 z.mulTo(g2, g[n - 2], g[n])
8413 n += 2
8414 }
8415 }
8416
8417 var j = e.t - 1,
8418 w, is1 = true,
8419 r2 = new BigInteger(),
8420 t
8421 i = nbits(e[j]) - 1
8422 while (j >= 0) {
8423 if (i >= k1) w = (e[j] >> (i - k1)) & km
8424 else {
8425 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8426 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8427 }
8428
8429 n = k
8430 while ((w & 1) == 0) {
8431 w >>= 1
8432 --n
8433 }
8434 if ((i -= n) < 0) {
8435 i += this.DB
8436 --j
8437 }
8438 if (is1) { // ret == 1, don't bother squaring or multiplying it
8439 g[w].copyTo(r)
8440 is1 = false
8441 } else {
8442 while (n > 1) {
8443 z.sqrTo(r, r2)
8444 z.sqrTo(r2, r)
8445 n -= 2
8446 }
8447 if (n > 0) z.sqrTo(r, r2)
8448 else {
8449 t = r
8450 r = r2
8451 r2 = t
8452 }
8453 z.mulTo(r2, g[w], r)
8454 }
8455
8456 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8457 z.sqrTo(r, r2)
8458 t = r
8459 r = r2
8460 r2 = t
8461 if (--i < 0) {
8462 i = this.DB - 1
8463 --j
8464 }
8465 }
8466 }
8467 return z.revert(r)
8468 }
8469
8470 // (public) gcd(this,a) (HAC 14.54)
8471 function bnGCD(a) {
8472 var x = (this.s < 0) ? this.negate() : this.clone()
8473 var y = (a.s < 0) ? a.negate() : a.clone()
8474 if (x.compareTo(y) < 0) {
8475 var t = x
8476 x = y
8477 y = t
8478 }
8479 var i = x.getLowestSetBit(),
8480 g = y.getLowestSetBit()
8481 if (g < 0) return x
8482 if (i < g) g = i
8483 if (g > 0) {
8484 x.rShiftTo(g, x)
8485 y.rShiftTo(g, y)
8486 }
8487 while (x.signum() > 0) {
8488 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8489 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8490 if (x.compareTo(y) >= 0) {
8491 x.subTo(y, x)
8492 x.rShiftTo(1, x)
8493 } else {
8494 y.subTo(x, y)
8495 y.rShiftTo(1, y)
8496 }
8497 }
8498 if (g > 0) y.lShiftTo(g, y)
8499 return y
8500 }
8501
8502 // (protected) this % n, n < 2^26
8503 function bnpModInt(n) {
8504 if (n <= 0) return 0
8505 var d = this.DV % n,
8506 r = (this.s < 0) ? n - 1 : 0
8507 if (this.t > 0)
8508 if (d == 0) r = this[0] % n
8509 else
8510 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8511 return r
8512 }
8513
8514 // (public) 1/this % m (HAC 14.61)
8515 function bnModInverse(m) {
8516 var ac = m.isEven()
8517 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8518 var u = m.clone(),
8519 v = this.clone()
8520 var a = nbv(1),
8521 b = nbv(0),
8522 c = nbv(0),
8523 d = nbv(1)
8524 while (u.signum() != 0) {
8525 while (u.isEven()) {
8526 u.rShiftTo(1, u)
8527 if (ac) {
8528 if (!a.isEven() || !b.isEven()) {
8529 a.addTo(this, a)
8530 b.subTo(m, b)
8531 }
8532 a.rShiftTo(1, a)
8533 } else if (!b.isEven()) b.subTo(m, b)
8534 b.rShiftTo(1, b)
8535 }
8536 while (v.isEven()) {
8537 v.rShiftTo(1, v)
8538 if (ac) {
8539 if (!c.isEven() || !d.isEven()) {
8540 c.addTo(this, c)
8541 d.subTo(m, d)
8542 }
8543 c.rShiftTo(1, c)
8544 } else if (!d.isEven()) d.subTo(m, d)
8545 d.rShiftTo(1, d)
8546 }
8547 if (u.compareTo(v) >= 0) {
8548 u.subTo(v, u)
8549 if (ac) a.subTo(c, a)
8550 b.subTo(d, b)
8551 } else {
8552 v.subTo(u, v)
8553 if (ac) c.subTo(a, c)
8554 d.subTo(b, d)
8555 }
8556 }
8557 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8558 if (d.compareTo(m) >= 0) return d.subtract(m)
8559 if (d.signum() < 0) d.addTo(m, d)
8560 else return d
8561 if (d.signum() < 0) return d.add(m)
8562 else return d
8563 }
8564
8565 var lowprimes = [
8566 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8567 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8568 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8569 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8570 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8571 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8572 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8573 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8574 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8575 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8576 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8577 ]
8578
8579 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8580
8581 // (public) test primality with certainty >= 1-.5^t
8582 function bnIsProbablePrime(t) {
8583 var i, x = this.abs()
8584 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8585 for (i = 0; i < lowprimes.length; ++i)
8586 if (x[0] == lowprimes[i]) return true
8587 return false
8588 }
8589 if (x.isEven()) return false
8590 i = 1
8591 while (i < lowprimes.length) {
8592 var m = lowprimes[i],
8593 j = i + 1
8594 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8595 m = x.modInt(m)
8596 while (i < j) if (m % lowprimes[i++] == 0) return false
8597 }
8598 return x.millerRabin(t)
8599 }
8600
8601 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8602 function bnpMillerRabin(t) {
8603 var n1 = this.subtract(BigInteger.ONE)
8604 var k = n1.getLowestSetBit()
8605 if (k <= 0) return false
8606 var r = n1.shiftRight(k)
8607 t = (t + 1) >> 1
8608 if (t > lowprimes.length) t = lowprimes.length
8609 var a = new BigInteger(null)
8610 var j, bases = []
8611 for (var i = 0; i < t; ++i) {
8612 for (;;) {
8613 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8614 if (bases.indexOf(j) == -1) break
8615 }
8616 bases.push(j)
8617 a.fromInt(j)
8618 var y = a.modPow(r, this)
8619 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8620 var j = 1
8621 while (j++ < k && y.compareTo(n1) != 0) {
8622 y = y.modPowInt(2, this)
8623 if (y.compareTo(BigInteger.ONE) == 0) return false
8624 }
8625 if (y.compareTo(n1) != 0) return false
8626 }
8627 }
8628 return true
8629 }
8630
8631 // protected
8632 proto.chunkSize = bnpChunkSize
8633 proto.toRadix = bnpToRadix
8634 proto.fromRadix = bnpFromRadix
8635 proto.fromNumber = bnpFromNumber
8636 proto.bitwiseTo = bnpBitwiseTo
8637 proto.changeBit = bnpChangeBit
8638 proto.addTo = bnpAddTo
8639 proto.dMultiply = bnpDMultiply
8640 proto.dAddOffset = bnpDAddOffset
8641 proto.multiplyLowerTo = bnpMultiplyLowerTo
8642 proto.multiplyUpperTo = bnpMultiplyUpperTo
8643 proto.modInt = bnpModInt
8644 proto.millerRabin = bnpMillerRabin
8645
8646 // public
8647 proto.clone = bnClone
8648 proto.intValue = bnIntValue
8649 proto.byteValue = bnByteValue
8650 proto.shortValue = bnShortValue
8651 proto.signum = bnSigNum
8652 proto.toByteArray = bnToByteArray
8653 proto.equals = bnEquals
8654 proto.min = bnMin
8655 proto.max = bnMax
8656 proto.and = bnAnd
8657 proto.or = bnOr
8658 proto.xor = bnXor
8659 proto.andNot = bnAndNot
8660 proto.not = bnNot
8661 proto.shiftLeft = bnShiftLeft
8662 proto.shiftRight = bnShiftRight
8663 proto.getLowestSetBit = bnGetLowestSetBit
8664 proto.bitCount = bnBitCount
8665 proto.testBit = bnTestBit
8666 proto.setBit = bnSetBit
8667 proto.clearBit = bnClearBit
8668 proto.flipBit = bnFlipBit
8669 proto.add = bnAdd
8670 proto.subtract = bnSubtract
8671 proto.multiply = bnMultiply
8672 proto.divide = bnDivide
8673 proto.remainder = bnRemainder
8674 proto.divideAndRemainder = bnDivideAndRemainder
8675 proto.modPow = bnModPow
8676 proto.modInverse = bnModInverse
8677 proto.pow = bnPow
8678 proto.gcd = bnGCD
8679 proto.isProbablePrime = bnIsProbablePrime
8680
8681 // JSBN-specific extension
8682 proto.square = bnSquare
8683
8684 // constants
8685 BigInteger.ZERO = nbv(0)
8686 BigInteger.ONE = nbv(1)
8687 BigInteger.valueOf = nbv
8688
8689 module.exports = BigInteger
8690
8691 },{"../package.json":4}],2:[function(require,module,exports){
8692 (function (Buffer){
8693 // FIXME: Kind of a weird way to throw exceptions, consider removing
8694 var assert = require('assert')
8695 var BigInteger = require('./bigi')
8696
8697 /**
8698 * Turns a byte array into a big integer.
8699 *
8700 * This function will interpret a byte array as a big integer in big
8701 * endian notation.
8702 */
8703 BigInteger.fromByteArrayUnsigned = function(byteArray) {
8704 // BigInteger expects a DER integer conformant byte array
8705 if (byteArray[0] & 0x80) {
8706 return new BigInteger([0].concat(byteArray))
8707 }
8708
8709 return new BigInteger(byteArray)
8710 }
8711
8712 /**
8713 * Returns a byte array representation of the big integer.
8714 *
8715 * This returns the absolute of the contained value in big endian
8716 * form. A value of zero results in an empty array.
8717 */
8718 BigInteger.prototype.toByteArrayUnsigned = function() {
8719 var byteArray = this.toByteArray()
8720 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8721 }
8722
8723 BigInteger.fromDERInteger = function(byteArray) {
8724 return new BigInteger(byteArray)
8725 }
8726
8727 /*
8728 * Converts BigInteger to a DER integer representation.
8729 *
8730 * The format for this value uses the most significant bit as a sign
8731 * bit. If the most significant bit is already set and the integer is
8732 * positive, a 0x00 is prepended.
8733 *
8734 * Examples:
8735 *
8736 * 0 => 0x00
8737 * 1 => 0x01
8738 * -1 => 0xff
8739 * 127 => 0x7f
8740 * -127 => 0x81
8741 * 128 => 0x0080
8742 * -128 => 0x80
8743 * 255 => 0x00ff
8744 * -255 => 0xff01
8745 * 16300 => 0x3fac
8746 * -16300 => 0xc054
8747 * 62300 => 0x00f35c
8748 * -62300 => 0xff0ca4
8749 */
8750 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8751
8752 BigInteger.fromBuffer = function(buffer) {
8753 // BigInteger expects a DER integer conformant byte array
8754 if (buffer[0] & 0x80) {
8755 var byteArray = Array.prototype.slice.call(buffer)
8756
8757 return new BigInteger([0].concat(byteArray))
8758 }
8759
8760 return new BigInteger(buffer)
8761 }
8762
8763 BigInteger.fromHex = function(hex) {
8764 if (hex === '') return BigInteger.ZERO
8765
8766 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8767 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8768 return new BigInteger(hex, 16)
8769 }
8770
8771 BigInteger.prototype.toBuffer = function(size) {
8772 var byteArray = this.toByteArrayUnsigned()
8773 var zeros = []
8774
8775 var padding = size - byteArray.length
8776 while (zeros.length < padding) zeros.push(0)
8777
8778 return new Buffer(zeros.concat(byteArray))
8779 }
8780
8781 BigInteger.prototype.toHex = function(size) {
8782 return this.toBuffer(size).toString('hex')
8783 }
8784
8785 }).call(this,require("buffer").Buffer)
8786 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8787 var BigInteger = require('./bigi')
8788
8789 //addons
8790 require('./convert')
8791
8792 module.exports = BigInteger
8793 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8794 module.exports={
8795 "name": "bigi",
8796 "version": "1.4.0",
8797 "description": "Big integers.",
8798 "keywords": [
8799 "cryptography",
8800 "math",
8801 "bitcoin",
8802 "arbitrary",
8803 "precision",
8804 "arithmetic",
8805 "big",
8806 "integer",
8807 "int",
8808 "number",
8809 "biginteger",
8810 "bigint",
8811 "bignumber",
8812 "decimal",
8813 "float"
8814 ],
8815 "devDependencies": {
8816 "mocha": "^1.20.1",
8817 "jshint": "^2.5.1",
8818 "coveralls": "^2.10.0",
8819 "istanbul": "^0.2.11"
8820 },
8821 "repository": {
8822 "url": "https://github.com/cryptocoinjs/bigi",
8823 "type": "git"
8824 },
8825 "main": "./lib/index.js",
8826 "scripts": {
8827 "test": "_mocha -- test/*.js",
8828 "jshint": "jshint --config jshint.json lib/*.js ; true",
8829 "unit": "mocha",
8830 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8831 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8832 },
8833 "dependencies": {},
8834 "testling": {
8835 "files": "test/*.js",
8836 "harness": "mocha",
8837 "browsers": [
8838 "ie/9..latest",
8839 "firefox/latest",
8840 "chrome/latest",
8841 "safari/6.0..latest",
8842 "iphone/6.0..latest",
8843 "android-browser/4.2..latest"
8844 ]
8845 },
8846 "bugs": {
8847 "url": "https://github.com/cryptocoinjs/bigi/issues"
8848 },
8849 "homepage": "https://github.com/cryptocoinjs/bigi",
8850 "_id": "bigi@1.4.0",
8851 "dist": {
8852 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8853 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8854 },
8855 "_from": "bigi@^1.4.0",
8856 "_npmVersion": "1.4.3",
8857 "_npmUser": {
8858 "name": "jp",
8859 "email": "jprichardson@gmail.com"
8860 },
8861 "maintainers": [
8862 {
8863 "name": "jp",
8864 "email": "jprichardson@gmail.com"
8865 },
8866 {
8867 "name": "midnightlightning",
8868 "email": "boydb@midnightdesign.ws"
8869 },
8870 {
8871 "name": "sidazhang",
8872 "email": "sidazhang89@gmail.com"
8873 },
8874 {
8875 "name": "nadav",
8876 "email": "npm@shesek.info"
8877 }
8878 ],
8879 "directories": {},
8880 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8881 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8882 }
8883
8884 },{}],5:[function(require,module,exports){
8885 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8886 //
8887 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8888 //
8889 // Originally from narwhal.js (http://narwhaljs.org)
8890 // Copyright (c) 2009 Thomas Robinson <280north.com>
8891 //
8892 // Permission is hereby granted, free of charge, to any person obtaining a copy
8893 // of this software and associated documentation files (the 'Software'), to
8894 // deal in the Software without restriction, including without limitation the
8895 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8896 // sell copies of the Software, and to permit persons to whom the Software is
8897 // furnished to do so, subject to the following conditions:
8898 //
8899 // The above copyright notice and this permission notice shall be included in
8900 // all copies or substantial portions of the Software.
8901 //
8902 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8903 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8904 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8905 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8906 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8907 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8908
8909 // when used in node, this will actually load the util module we depend on
8910 // versus loading the builtin util module as happens otherwise
8911 // this is a bug in node module loading as far as I am concerned
8912 var util = require('util/');
8913
8914 var pSlice = Array.prototype.slice;
8915 var hasOwn = Object.prototype.hasOwnProperty;
8916
8917 // 1. The assert module provides functions that throw
8918 // AssertionError's when particular conditions are not met. The
8919 // assert module must conform to the following interface.
8920
8921 var assert = module.exports = ok;
8922
8923 // 2. The AssertionError is defined in assert.
8924 // new assert.AssertionError({ message: message,
8925 // actual: actual,
8926 // expected: expected })
8927
8928 assert.AssertionError = function AssertionError(options) {
8929 this.name = 'AssertionError';
8930 this.actual = options.actual;
8931 this.expected = options.expected;
8932 this.operator = options.operator;
8933 if (options.message) {
8934 this.message = options.message;
8935 this.generatedMessage = false;
8936 } else {
8937 this.message = getMessage(this);
8938 this.generatedMessage = true;
8939 }
8940 var stackStartFunction = options.stackStartFunction || fail;
8941
8942 if (Error.captureStackTrace) {
8943 Error.captureStackTrace(this, stackStartFunction);
8944 }
8945 else {
8946 // non v8 browsers so we can have a stacktrace
8947 var err = new Error();
8948 if (err.stack) {
8949 var out = err.stack;
8950
8951 // try to strip useless frames
8952 var fn_name = stackStartFunction.name;
8953 var idx = out.indexOf('\n' + fn_name);
8954 if (idx >= 0) {
8955 // once we have located the function frame
8956 // we need to strip out everything before it (and its line)
8957 var next_line = out.indexOf('\n', idx + 1);
8958 out = out.substring(next_line + 1);
8959 }
8960
8961 this.stack = out;
8962 }
8963 }
8964 };
8965
8966 // assert.AssertionError instanceof Error
8967 util.inherits(assert.AssertionError, Error);
8968
8969 function replacer(key, value) {
8970 if (util.isUndefined(value)) {
8971 return '' + value;
8972 }
8973 if (util.isNumber(value) && !isFinite(value)) {
8974 return value.toString();
8975 }
8976 if (util.isFunction(value) || util.isRegExp(value)) {
8977 return value.toString();
8978 }
8979 return value;
8980 }
8981
8982 function truncate(s, n) {
8983 if (util.isString(s)) {
8984 return s.length < n ? s : s.slice(0, n);
8985 } else {
8986 return s;
8987 }
8988 }
8989
8990 function getMessage(self) {
8991 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8992 self.operator + ' ' +
8993 truncate(JSON.stringify(self.expected, replacer), 128);
8994 }
8995
8996 // At present only the three keys mentioned above are used and
8997 // understood by the spec. Implementations or sub modules can pass
8998 // other keys to the AssertionError's constructor - they will be
8999 // ignored.
9000
9001 // 3. All of the following functions must throw an AssertionError
9002 // when a corresponding condition is not met, with a message that
9003 // may be undefined if not provided. All assertion methods provide
9004 // both the actual and expected values to the assertion error for
9005 // display purposes.
9006
9007 function fail(actual, expected, message, operator, stackStartFunction) {
9008 throw new assert.AssertionError({
9009 message: message,
9010 actual: actual,
9011 expected: expected,
9012 operator: operator,
9013 stackStartFunction: stackStartFunction
9014 });
9015 }
9016
9017 // EXTENSION! allows for well behaved errors defined elsewhere.
9018 assert.fail = fail;
9019
9020 // 4. Pure assertion tests whether a value is truthy, as determined
9021 // by !!guard.
9022 // assert.ok(guard, message_opt);
9023 // This statement is equivalent to assert.equal(true, !!guard,
9024 // message_opt);. To test strictly for the value true, use
9025 // assert.strictEqual(true, guard, message_opt);.
9026
9027 function ok(value, message) {
9028 if (!value) fail(value, true, message, '==', assert.ok);
9029 }
9030 assert.ok = ok;
9031
9032 // 5. The equality assertion tests shallow, coercive equality with
9033 // ==.
9034 // assert.equal(actual, expected, message_opt);
9035
9036 assert.equal = function equal(actual, expected, message) {
9037 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9038 };
9039
9040 // 6. The non-equality assertion tests for whether two objects are not equal
9041 // with != assert.notEqual(actual, expected, message_opt);
9042
9043 assert.notEqual = function notEqual(actual, expected, message) {
9044 if (actual == expected) {
9045 fail(actual, expected, message, '!=', assert.notEqual);
9046 }
9047 };
9048
9049 // 7. The equivalence assertion tests a deep equality relation.
9050 // assert.deepEqual(actual, expected, message_opt);
9051
9052 assert.deepEqual = function deepEqual(actual, expected, message) {
9053 if (!_deepEqual(actual, expected)) {
9054 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9055 }
9056 };
9057
9058 function _deepEqual(actual, expected) {
9059 // 7.1. All identical values are equivalent, as determined by ===.
9060 if (actual === expected) {
9061 return true;
9062
9063 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9064 if (actual.length != expected.length) return false;
9065
9066 for (var i = 0; i < actual.length; i++) {
9067 if (actual[i] !== expected[i]) return false;
9068 }
9069
9070 return true;
9071
9072 // 7.2. If the expected value is a Date object, the actual value is
9073 // equivalent if it is also a Date object that refers to the same time.
9074 } else if (util.isDate(actual) && util.isDate(expected)) {
9075 return actual.getTime() === expected.getTime();
9076
9077 // 7.3 If the expected value is a RegExp object, the actual value is
9078 // equivalent if it is also a RegExp object with the same source and
9079 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9080 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9081 return actual.source === expected.source &&
9082 actual.global === expected.global &&
9083 actual.multiline === expected.multiline &&
9084 actual.lastIndex === expected.lastIndex &&
9085 actual.ignoreCase === expected.ignoreCase;
9086
9087 // 7.4. Other pairs that do not both pass typeof value == 'object',
9088 // equivalence is determined by ==.
9089 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9090 return actual == expected;
9091
9092 // 7.5 For all other Object pairs, including Array objects, equivalence is
9093 // determined by having the same number of owned properties (as verified
9094 // with Object.prototype.hasOwnProperty.call), the same set of keys
9095 // (although not necessarily the same order), equivalent values for every
9096 // corresponding key, and an identical 'prototype' property. Note: this
9097 // accounts for both named and indexed properties on Arrays.
9098 } else {
9099 return objEquiv(actual, expected);
9100 }
9101 }
9102
9103 function isArguments(object) {
9104 return Object.prototype.toString.call(object) == '[object Arguments]';
9105 }
9106
9107 function objEquiv(a, b) {
9108 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9109 return false;
9110 // an identical 'prototype' property.
9111 if (a.prototype !== b.prototype) return false;
9112 // if one is a primitive, the other must be same
9113 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9114 return a === b;
9115 }
9116 var aIsArgs = isArguments(a),
9117 bIsArgs = isArguments(b);
9118 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9119 return false;
9120 if (aIsArgs) {
9121 a = pSlice.call(a);
9122 b = pSlice.call(b);
9123 return _deepEqual(a, b);
9124 }
9125 var ka = objectKeys(a),
9126 kb = objectKeys(b),
9127 key, i;
9128 // having the same number of owned properties (keys incorporates
9129 // hasOwnProperty)
9130 if (ka.length != kb.length)
9131 return false;
9132 //the same set of keys (although not necessarily the same order),
9133 ka.sort();
9134 kb.sort();
9135 //~~~cheap key test
9136 for (i = ka.length - 1; i >= 0; i--) {
9137 if (ka[i] != kb[i])
9138 return false;
9139 }
9140 //equivalent values for every corresponding key, and
9141 //~~~possibly expensive deep test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 key = ka[i];
9144 if (!_deepEqual(a[key], b[key])) return false;
9145 }
9146 return true;
9147 }
9148
9149 // 8. The non-equivalence assertion tests for any deep inequality.
9150 // assert.notDeepEqual(actual, expected, message_opt);
9151
9152 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9153 if (_deepEqual(actual, expected)) {
9154 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9155 }
9156 };
9157
9158 // 9. The strict equality assertion tests strict equality, as determined by ===.
9159 // assert.strictEqual(actual, expected, message_opt);
9160
9161 assert.strictEqual = function strictEqual(actual, expected, message) {
9162 if (actual !== expected) {
9163 fail(actual, expected, message, '===', assert.strictEqual);
9164 }
9165 };
9166
9167 // 10. The strict non-equality assertion tests for strict inequality, as
9168 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9169
9170 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9171 if (actual === expected) {
9172 fail(actual, expected, message, '!==', assert.notStrictEqual);
9173 }
9174 };
9175
9176 function expectedException(actual, expected) {
9177 if (!actual || !expected) {
9178 return false;
9179 }
9180
9181 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9182 return expected.test(actual);
9183 } else if (actual instanceof expected) {
9184 return true;
9185 } else if (expected.call({}, actual) === true) {
9186 return true;
9187 }
9188
9189 return false;
9190 }
9191
9192 function _throws(shouldThrow, block, expected, message) {
9193 var actual;
9194
9195 if (util.isString(expected)) {
9196 message = expected;
9197 expected = null;
9198 }
9199
9200 try {
9201 block();
9202 } catch (e) {
9203 actual = e;
9204 }
9205
9206 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9207 (message ? ' ' + message : '.');
9208
9209 if (shouldThrow && !actual) {
9210 fail(actual, expected, 'Missing expected exception' + message);
9211 }
9212
9213 if (!shouldThrow && expectedException(actual, expected)) {
9214 fail(actual, expected, 'Got unwanted exception' + message);
9215 }
9216
9217 if ((shouldThrow && actual && expected &&
9218 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9219 throw actual;
9220 }
9221 }
9222
9223 // 11. Expected to throw an error:
9224 // assert.throws(block, Error_opt, message_opt);
9225
9226 assert.throws = function(block, /*optional*/error, /*optional*/message) {
9227 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9228 };
9229
9230 // EXTENSION! This is annoying to write outside this module.
9231 assert.doesNotThrow = function(block, /*optional*/message) {
9232 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9233 };
9234
9235 assert.ifError = function(err) { if (err) {throw err;}};
9236
9237 var objectKeys = Object.keys || function (obj) {
9238 var keys = [];
9239 for (var key in obj) {
9240 if (hasOwn.call(obj, key)) keys.push(key);
9241 }
9242 return keys;
9243 };
9244
9245 },{"util/":29}],6:[function(require,module,exports){
9246
9247 },{}],7:[function(require,module,exports){
9248 /*!
9249 * The buffer module from node.js, for the browser.
9250 *
9251 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9252 * @license MIT
9253 */
9254
9255 var base64 = require('base64-js')
9256 var ieee754 = require('ieee754')
9257 var isArray = require('is-array')
9258
9259 exports.Buffer = Buffer
9260 exports.SlowBuffer = SlowBuffer
9261 exports.INSPECT_MAX_BYTES = 50
9262 Buffer.poolSize = 8192 // not used by this implementation
9263
9264 var rootParent = {}
9265
9266 /**
9267 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9268 * === true Use Uint8Array implementation (fastest)
9269 * === false Use Object implementation (most compatible, even IE6)
9270 *
9271 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9272 * Opera 11.6+, iOS 4.2+.
9273 *
9274 * Due to various browser bugs, sometimes the Object implementation will be used even
9275 * when the browser supports typed arrays.
9276 *
9277 * Note:
9278 *
9279 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9280 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9281 *
9282 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9283 * on objects.
9284 *
9285 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9286 *
9287 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9288 * incorrect length in some situations.
9289
9290 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9291 * get the Object implementation, which is slower but behaves correctly.
9292 */
9293 Buffer.TYPED_ARRAY_SUPPORT = (function () {
9294 function Bar () {}
9295 try {
9296 var arr = new Uint8Array(1)
9297 arr.foo = function () { return 42 }
9298 arr.constructor = Bar
9299 return arr.foo() === 42 && // typed array instances can be augmented
9300 arr.constructor === Bar && // constructor can be set
9301 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9302 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9303 } catch (e) {
9304 return false
9305 }
9306 })()
9307
9308 function kMaxLength () {
9309 return Buffer.TYPED_ARRAY_SUPPORT
9310 ? 0x7fffffff
9311 : 0x3fffffff
9312 }
9313
9314 /**
9315 * Class: Buffer
9316 * =============
9317 *
9318 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9319 * with function properties for all the node `Buffer` API functions. We use
9320 * `Uint8Array` so that square bracket notation works as expected -- it returns
9321 * a single octet.
9322 *
9323 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9324 * prototype.
9325 */
9326 function Buffer (arg) {
9327 if (!(this instanceof Buffer)) {
9328 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9329 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9330 return new Buffer(arg)
9331 }
9332
9333 this.length = 0
9334 this.parent = undefined
9335
9336 // Common case.
9337 if (typeof arg === 'number') {
9338 return fromNumber(this, arg)
9339 }
9340
9341 // Slightly less common case.
9342 if (typeof arg === 'string') {
9343 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9344 }
9345
9346 // Unusual.
9347 return fromObject(this, arg)
9348 }
9349
9350 function fromNumber (that, length) {
9351 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9352 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9353 for (var i = 0; i < length; i++) {
9354 that[i] = 0
9355 }
9356 }
9357 return that
9358 }
9359
9360 function fromString (that, string, encoding) {
9361 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9362
9363 // Assumption: byteLength() return value is always < kMaxLength.
9364 var length = byteLength(string, encoding) | 0
9365 that = allocate(that, length)
9366
9367 that.write(string, encoding)
9368 return that
9369 }
9370
9371 function fromObject (that, object) {
9372 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9373
9374 if (isArray(object)) return fromArray(that, object)
9375
9376 if (object == null) {
9377 throw new TypeError('must start with number, buffer, array or string')
9378 }
9379
9380 if (typeof ArrayBuffer !== 'undefined') {
9381 if (object.buffer instanceof ArrayBuffer) {
9382 return fromTypedArray(that, object)
9383 }
9384 if (object instanceof ArrayBuffer) {
9385 return fromArrayBuffer(that, object)
9386 }
9387 }
9388
9389 if (object.length) return fromArrayLike(that, object)
9390
9391 return fromJsonObject(that, object)
9392 }
9393
9394 function fromBuffer (that, buffer) {
9395 var length = checked(buffer.length) | 0
9396 that = allocate(that, length)
9397 buffer.copy(that, 0, 0, length)
9398 return that
9399 }
9400
9401 function fromArray (that, array) {
9402 var length = checked(array.length) | 0
9403 that = allocate(that, length)
9404 for (var i = 0; i < length; i += 1) {
9405 that[i] = array[i] & 255
9406 }
9407 return that
9408 }
9409
9410 // Duplicate of fromArray() to keep fromArray() monomorphic.
9411 function fromTypedArray (that, array) {
9412 var length = checked(array.length) | 0
9413 that = allocate(that, length)
9414 // Truncating the elements is probably not what people expect from typed
9415 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9416 // of the old Buffer constructor.
9417 for (var i = 0; i < length; i += 1) {
9418 that[i] = array[i] & 255
9419 }
9420 return that
9421 }
9422
9423 function fromArrayBuffer (that, array) {
9424 if (Buffer.TYPED_ARRAY_SUPPORT) {
9425 // Return an augmented `Uint8Array` instance, for best performance
9426 array.byteLength
9427 that = Buffer._augment(new Uint8Array(array))
9428 } else {
9429 // Fallback: Return an object instance of the Buffer class
9430 that = fromTypedArray(that, new Uint8Array(array))
9431 }
9432 return that
9433 }
9434
9435 function fromArrayLike (that, array) {
9436 var length = checked(array.length) | 0
9437 that = allocate(that, length)
9438 for (var i = 0; i < length; i += 1) {
9439 that[i] = array[i] & 255
9440 }
9441 return that
9442 }
9443
9444 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9445 // Returns a zero-length buffer for inputs that don't conform to the spec.
9446 function fromJsonObject (that, object) {
9447 var array
9448 var length = 0
9449
9450 if (object.type === 'Buffer' && isArray(object.data)) {
9451 array = object.data
9452 length = checked(array.length) | 0
9453 }
9454 that = allocate(that, length)
9455
9456 for (var i = 0; i < length; i += 1) {
9457 that[i] = array[i] & 255
9458 }
9459 return that
9460 }
9461
9462 function allocate (that, length) {
9463 if (Buffer.TYPED_ARRAY_SUPPORT) {
9464 // Return an augmented `Uint8Array` instance, for best performance
9465 that = Buffer._augment(new Uint8Array(length))
9466 } else {
9467 // Fallback: Return an object instance of the Buffer class
9468 that.length = length
9469 that._isBuffer = true
9470 }
9471
9472 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9473 if (fromPool) that.parent = rootParent
9474
9475 return that
9476 }
9477
9478 function checked (length) {
9479 // Note: cannot use `length < kMaxLength` here because that fails when
9480 // length is NaN (which is otherwise coerced to zero.)
9481 if (length >= kMaxLength()) {
9482 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9483 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9484 }
9485 return length | 0
9486 }
9487
9488 function SlowBuffer (subject, encoding) {
9489 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9490
9491 var buf = new Buffer(subject, encoding)
9492 delete buf.parent
9493 return buf
9494 }
9495
9496 Buffer.isBuffer = function isBuffer (b) {
9497 return !!(b != null && b._isBuffer)
9498 }
9499
9500 Buffer.compare = function compare (a, b) {
9501 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9502 throw new TypeError('Arguments must be Buffers')
9503 }
9504
9505 if (a === b) return 0
9506
9507 var x = a.length
9508 var y = b.length
9509
9510 var i = 0
9511 var len = Math.min(x, y)
9512 while (i < len) {
9513 if (a[i] !== b[i]) break
9514
9515 ++i
9516 }
9517
9518 if (i !== len) {
9519 x = a[i]
9520 y = b[i]
9521 }
9522
9523 if (x < y) return -1
9524 if (y < x) return 1
9525 return 0
9526 }
9527
9528 Buffer.isEncoding = function isEncoding (encoding) {
9529 switch (String(encoding).toLowerCase()) {
9530 case 'hex':
9531 case 'utf8':
9532 case 'utf-8':
9533 case 'ascii':
9534 case 'binary':
9535 case 'base64':
9536 case 'raw':
9537 case 'ucs2':
9538 case 'ucs-2':
9539 case 'utf16le':
9540 case 'utf-16le':
9541 return true
9542 default:
9543 return false
9544 }
9545 }
9546
9547 Buffer.concat = function concat (list, length) {
9548 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9549
9550 if (list.length === 0) {
9551 return new Buffer(0)
9552 }
9553
9554 var i
9555 if (length === undefined) {
9556 length = 0
9557 for (i = 0; i < list.length; i++) {
9558 length += list[i].length
9559 }
9560 }
9561
9562 var buf = new Buffer(length)
9563 var pos = 0
9564 for (i = 0; i < list.length; i++) {
9565 var item = list[i]
9566 item.copy(buf, pos)
9567 pos += item.length
9568 }
9569 return buf
9570 }
9571
9572 function byteLength (string, encoding) {
9573 if (typeof string !== 'string') string = '' + string
9574
9575 var len = string.length
9576 if (len === 0) return 0
9577
9578 // Use a for loop to avoid recursion
9579 var loweredCase = false
9580 for (;;) {
9581 switch (encoding) {
9582 case 'ascii':
9583 case 'binary':
9584 // Deprecated
9585 case 'raw':
9586 case 'raws':
9587 return len
9588 case 'utf8':
9589 case 'utf-8':
9590 return utf8ToBytes(string).length
9591 case 'ucs2':
9592 case 'ucs-2':
9593 case 'utf16le':
9594 case 'utf-16le':
9595 return len * 2
9596 case 'hex':
9597 return len >>> 1
9598 case 'base64':
9599 return base64ToBytes(string).length
9600 default:
9601 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9602 encoding = ('' + encoding).toLowerCase()
9603 loweredCase = true
9604 }
9605 }
9606 }
9607 Buffer.byteLength = byteLength
9608
9609 // pre-set for values that may exist in the future
9610 Buffer.prototype.length = undefined
9611 Buffer.prototype.parent = undefined
9612
9613 function slowToString (encoding, start, end) {
9614 var loweredCase = false
9615
9616 start = start | 0
9617 end = end === undefined || end === Infinity ? this.length : end | 0
9618
9619 if (!encoding) encoding = 'utf8'
9620 if (start < 0) start = 0
9621 if (end > this.length) end = this.length
9622 if (end <= start) return ''
9623
9624 while (true) {
9625 switch (encoding) {
9626 case 'hex':
9627 return hexSlice(this, start, end)
9628
9629 case 'utf8':
9630 case 'utf-8':
9631 return utf8Slice(this, start, end)
9632
9633 case 'ascii':
9634 return asciiSlice(this, start, end)
9635
9636 case 'binary':
9637 return binarySlice(this, start, end)
9638
9639 case 'base64':
9640 return base64Slice(this, start, end)
9641
9642 case 'ucs2':
9643 case 'ucs-2':
9644 case 'utf16le':
9645 case 'utf-16le':
9646 return utf16leSlice(this, start, end)
9647
9648 default:
9649 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9650 encoding = (encoding + '').toLowerCase()
9651 loweredCase = true
9652 }
9653 }
9654 }
9655
9656 Buffer.prototype.toString = function toString () {
9657 var length = this.length | 0
9658 if (length === 0) return ''
9659 if (arguments.length === 0) return utf8Slice(this, 0, length)
9660 return slowToString.apply(this, arguments)
9661 }
9662
9663 Buffer.prototype.equals = function equals (b) {
9664 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9665 if (this === b) return true
9666 return Buffer.compare(this, b) === 0
9667 }
9668
9669 Buffer.prototype.inspect = function inspect () {
9670 var str = ''
9671 var max = exports.INSPECT_MAX_BYTES
9672 if (this.length > 0) {
9673 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9674 if (this.length > max) str += ' ... '
9675 }
9676 return '<Buffer ' + str + '>'
9677 }
9678
9679 Buffer.prototype.compare = function compare (b) {
9680 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9681 if (this === b) return 0
9682 return Buffer.compare(this, b)
9683 }
9684
9685 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9686 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9687 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9688 byteOffset >>= 0
9689
9690 if (this.length === 0) return -1
9691 if (byteOffset >= this.length) return -1
9692
9693 // Negative offsets start from the end of the buffer
9694 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9695
9696 if (typeof val === 'string') {
9697 if (val.length === 0) return -1 // special case: looking for empty string always fails
9698 return String.prototype.indexOf.call(this, val, byteOffset)
9699 }
9700 if (Buffer.isBuffer(val)) {
9701 return arrayIndexOf(this, val, byteOffset)
9702 }
9703 if (typeof val === 'number') {
9704 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9705 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9706 }
9707 return arrayIndexOf(this, [ val ], byteOffset)
9708 }
9709
9710 function arrayIndexOf (arr, val, byteOffset) {
9711 var foundIndex = -1
9712 for (var i = 0; byteOffset + i < arr.length; i++) {
9713 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9714 if (foundIndex === -1) foundIndex = i
9715 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9716 } else {
9717 foundIndex = -1
9718 }
9719 }
9720 return -1
9721 }
9722
9723 throw new TypeError('val must be string, number or Buffer')
9724 }
9725
9726 // `get` is deprecated
9727 Buffer.prototype.get = function get (offset) {
9728 console.log('.get() is deprecated. Access using array indexes instead.')
9729 return this.readUInt8(offset)
9730 }
9731
9732 // `set` is deprecated
9733 Buffer.prototype.set = function set (v, offset) {
9734 console.log('.set() is deprecated. Access using array indexes instead.')
9735 return this.writeUInt8(v, offset)
9736 }
9737
9738 function hexWrite (buf, string, offset, length) {
9739 offset = Number(offset) || 0
9740 var remaining = buf.length - offset
9741 if (!length) {
9742 length = remaining
9743 } else {
9744 length = Number(length)
9745 if (length > remaining) {
9746 length = remaining
9747 }
9748 }
9749
9750 // must be an even number of digits
9751 var strLen = string.length
9752 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9753
9754 if (length > strLen / 2) {
9755 length = strLen / 2
9756 }
9757 for (var i = 0; i < length; i++) {
9758 var parsed = parseInt(string.substr(i * 2, 2), 16)
9759 if (isNaN(parsed)) throw new Error('Invalid hex string')
9760 buf[offset + i] = parsed
9761 }
9762 return i
9763 }
9764
9765 function utf8Write (buf, string, offset, length) {
9766 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9767 }
9768
9769 function asciiWrite (buf, string, offset, length) {
9770 return blitBuffer(asciiToBytes(string), buf, offset, length)
9771 }
9772
9773 function binaryWrite (buf, string, offset, length) {
9774 return asciiWrite(buf, string, offset, length)
9775 }
9776
9777 function base64Write (buf, string, offset, length) {
9778 return blitBuffer(base64ToBytes(string), buf, offset, length)
9779 }
9780
9781 function ucs2Write (buf, string, offset, length) {
9782 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9783 }
9784
9785 Buffer.prototype.write = function write (string, offset, length, encoding) {
9786 // Buffer#write(string)
9787 if (offset === undefined) {
9788 encoding = 'utf8'
9789 length = this.length
9790 offset = 0
9791 // Buffer#write(string, encoding)
9792 } else if (length === undefined && typeof offset === 'string') {
9793 encoding = offset
9794 length = this.length
9795 offset = 0
9796 // Buffer#write(string, offset[, length][, encoding])
9797 } else if (isFinite(offset)) {
9798 offset = offset | 0
9799 if (isFinite(length)) {
9800 length = length | 0
9801 if (encoding === undefined) encoding = 'utf8'
9802 } else {
9803 encoding = length
9804 length = undefined
9805 }
9806 // legacy write(string, encoding, offset, length) - remove in v0.13
9807 } else {
9808 var swap = encoding
9809 encoding = offset
9810 offset = length | 0
9811 length = swap
9812 }
9813
9814 var remaining = this.length - offset
9815 if (length === undefined || length > remaining) length = remaining
9816
9817 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9818 throw new RangeError('attempt to write outside buffer bounds')
9819 }
9820
9821 if (!encoding) encoding = 'utf8'
9822
9823 var loweredCase = false
9824 for (;;) {
9825 switch (encoding) {
9826 case 'hex':
9827 return hexWrite(this, string, offset, length)
9828
9829 case 'utf8':
9830 case 'utf-8':
9831 return utf8Write(this, string, offset, length)
9832
9833 case 'ascii':
9834 return asciiWrite(this, string, offset, length)
9835
9836 case 'binary':
9837 return binaryWrite(this, string, offset, length)
9838
9839 case 'base64':
9840 // Warning: maxLength not taken into account in base64Write
9841 return base64Write(this, string, offset, length)
9842
9843 case 'ucs2':
9844 case 'ucs-2':
9845 case 'utf16le':
9846 case 'utf-16le':
9847 return ucs2Write(this, string, offset, length)
9848
9849 default:
9850 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9851 encoding = ('' + encoding).toLowerCase()
9852 loweredCase = true
9853 }
9854 }
9855 }
9856
9857 Buffer.prototype.toJSON = function toJSON () {
9858 return {
9859 type: 'Buffer',
9860 data: Array.prototype.slice.call(this._arr || this, 0)
9861 }
9862 }
9863
9864 function base64Slice (buf, start, end) {
9865 if (start === 0 && end === buf.length) {
9866 return base64.fromByteArray(buf)
9867 } else {
9868 return base64.fromByteArray(buf.slice(start, end))
9869 }
9870 }
9871
9872 function utf8Slice (buf, start, end) {
9873 end = Math.min(buf.length, end)
9874 var firstByte
9875 var secondByte
9876 var thirdByte
9877 var fourthByte
9878 var bytesPerSequence
9879 var tempCodePoint
9880 var codePoint
9881 var res = []
9882 var i = start
9883
9884 for (; i < end; i += bytesPerSequence) {
9885 firstByte = buf[i]
9886 codePoint = 0xFFFD
9887
9888 if (firstByte > 0xEF) {
9889 bytesPerSequence = 4
9890 } else if (firstByte > 0xDF) {
9891 bytesPerSequence = 3
9892 } else if (firstByte > 0xBF) {
9893 bytesPerSequence = 2
9894 } else {
9895 bytesPerSequence = 1
9896 }
9897
9898 if (i + bytesPerSequence <= end) {
9899 switch (bytesPerSequence) {
9900 case 1:
9901 if (firstByte < 0x80) {
9902 codePoint = firstByte
9903 }
9904 break
9905 case 2:
9906 secondByte = buf[i + 1]
9907 if ((secondByte & 0xC0) === 0x80) {
9908 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9909 if (tempCodePoint > 0x7F) {
9910 codePoint = tempCodePoint
9911 }
9912 }
9913 break
9914 case 3:
9915 secondByte = buf[i + 1]
9916 thirdByte = buf[i + 2]
9917 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9918 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9919 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9920 codePoint = tempCodePoint
9921 }
9922 }
9923 break
9924 case 4:
9925 secondByte = buf[i + 1]
9926 thirdByte = buf[i + 2]
9927 fourthByte = buf[i + 3]
9928 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9929 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9930 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9931 codePoint = tempCodePoint
9932 }
9933 }
9934 }
9935 }
9936
9937 if (codePoint === 0xFFFD) {
9938 // we generated an invalid codePoint so make sure to only advance by 1 byte
9939 bytesPerSequence = 1
9940 } else if (codePoint > 0xFFFF) {
9941 // encode to utf16 (surrogate pair dance)
9942 codePoint -= 0x10000
9943 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9944 codePoint = 0xDC00 | codePoint & 0x3FF
9945 }
9946
9947 res.push(codePoint)
9948 }
9949
9950 return String.fromCharCode.apply(String, res)
9951 }
9952
9953 function asciiSlice (buf, start, end) {
9954 var ret = ''
9955 end = Math.min(buf.length, end)
9956
9957 for (var i = start; i < end; i++) {
9958 ret += String.fromCharCode(buf[i] & 0x7F)
9959 }
9960 return ret
9961 }
9962
9963 function binarySlice (buf, start, end) {
9964 var ret = ''
9965 end = Math.min(buf.length, end)
9966
9967 for (var i = start; i < end; i++) {
9968 ret += String.fromCharCode(buf[i])
9969 }
9970 return ret
9971 }
9972
9973 function hexSlice (buf, start, end) {
9974 var len = buf.length
9975
9976 if (!start || start < 0) start = 0
9977 if (!end || end < 0 || end > len) end = len
9978
9979 var out = ''
9980 for (var i = start; i < end; i++) {
9981 out += toHex(buf[i])
9982 }
9983 return out
9984 }
9985
9986 function utf16leSlice (buf, start, end) {
9987 var bytes = buf.slice(start, end)
9988 var res = ''
9989 for (var i = 0; i < bytes.length; i += 2) {
9990 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9991 }
9992 return res
9993 }
9994
9995 Buffer.prototype.slice = function slice (start, end) {
9996 var len = this.length
9997 start = ~~start
9998 end = end === undefined ? len : ~~end
9999
10000 if (start < 0) {
10001 start += len
10002 if (start < 0) start = 0
10003 } else if (start > len) {
10004 start = len
10005 }
10006
10007 if (end < 0) {
10008 end += len
10009 if (end < 0) end = 0
10010 } else if (end > len) {
10011 end = len
10012 }
10013
10014 if (end < start) end = start
10015
10016 var newBuf
10017 if (Buffer.TYPED_ARRAY_SUPPORT) {
10018 newBuf = Buffer._augment(this.subarray(start, end))
10019 } else {
10020 var sliceLen = end - start
10021 newBuf = new Buffer(sliceLen, undefined)
10022 for (var i = 0; i < sliceLen; i++) {
10023 newBuf[i] = this[i + start]
10024 }
10025 }
10026
10027 if (newBuf.length) newBuf.parent = this.parent || this
10028
10029 return newBuf
10030 }
10031
10032 /*
10033 * Need to make sure that buffer isn't trying to write out of bounds.
10034 */
10035 function checkOffset (offset, ext, length) {
10036 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10037 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10038 }
10039
10040 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10041 offset = offset | 0
10042 byteLength = byteLength | 0
10043 if (!noAssert) checkOffset(offset, byteLength, this.length)
10044
10045 var val = this[offset]
10046 var mul = 1
10047 var i = 0
10048 while (++i < byteLength && (mul *= 0x100)) {
10049 val += this[offset + i] * mul
10050 }
10051
10052 return val
10053 }
10054
10055 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10056 offset = offset | 0
10057 byteLength = byteLength | 0
10058 if (!noAssert) {
10059 checkOffset(offset, byteLength, this.length)
10060 }
10061
10062 var val = this[offset + --byteLength]
10063 var mul = 1
10064 while (byteLength > 0 && (mul *= 0x100)) {
10065 val += this[offset + --byteLength] * mul
10066 }
10067
10068 return val
10069 }
10070
10071 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10072 if (!noAssert) checkOffset(offset, 1, this.length)
10073 return this[offset]
10074 }
10075
10076 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10077 if (!noAssert) checkOffset(offset, 2, this.length)
10078 return this[offset] | (this[offset + 1] << 8)
10079 }
10080
10081 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10082 if (!noAssert) checkOffset(offset, 2, this.length)
10083 return (this[offset] << 8) | this[offset + 1]
10084 }
10085
10086 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10087 if (!noAssert) checkOffset(offset, 4, this.length)
10088
10089 return ((this[offset]) |
10090 (this[offset + 1] << 8) |
10091 (this[offset + 2] << 16)) +
10092 (this[offset + 3] * 0x1000000)
10093 }
10094
10095 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10096 if (!noAssert) checkOffset(offset, 4, this.length)
10097
10098 return (this[offset] * 0x1000000) +
10099 ((this[offset + 1] << 16) |
10100 (this[offset + 2] << 8) |
10101 this[offset + 3])
10102 }
10103
10104 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10105 offset = offset | 0
10106 byteLength = byteLength | 0
10107 if (!noAssert) checkOffset(offset, byteLength, this.length)
10108
10109 var val = this[offset]
10110 var mul = 1
10111 var i = 0
10112 while (++i < byteLength && (mul *= 0x100)) {
10113 val += this[offset + i] * mul
10114 }
10115 mul *= 0x80
10116
10117 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10118
10119 return val
10120 }
10121
10122 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10123 offset = offset | 0
10124 byteLength = byteLength | 0
10125 if (!noAssert) checkOffset(offset, byteLength, this.length)
10126
10127 var i = byteLength
10128 var mul = 1
10129 var val = this[offset + --i]
10130 while (i > 0 && (mul *= 0x100)) {
10131 val += this[offset + --i] * mul
10132 }
10133 mul *= 0x80
10134
10135 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10136
10137 return val
10138 }
10139
10140 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10141 if (!noAssert) checkOffset(offset, 1, this.length)
10142 if (!(this[offset] & 0x80)) return (this[offset])
10143 return ((0xff - this[offset] + 1) * -1)
10144 }
10145
10146 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 2, this.length)
10148 var val = this[offset] | (this[offset + 1] << 8)
10149 return (val & 0x8000) ? val | 0xFFFF0000 : val
10150 }
10151
10152 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset + 1] | (this[offset] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156 }
10157
10158 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 4, this.length)
10160
10161 return (this[offset]) |
10162 (this[offset + 1] << 8) |
10163 (this[offset + 2] << 16) |
10164 (this[offset + 3] << 24)
10165 }
10166
10167 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10168 if (!noAssert) checkOffset(offset, 4, this.length)
10169
10170 return (this[offset] << 24) |
10171 (this[offset + 1] << 16) |
10172 (this[offset + 2] << 8) |
10173 (this[offset + 3])
10174 }
10175
10176 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10177 if (!noAssert) checkOffset(offset, 4, this.length)
10178 return ieee754.read(this, offset, true, 23, 4)
10179 }
10180
10181 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10182 if (!noAssert) checkOffset(offset, 4, this.length)
10183 return ieee754.read(this, offset, false, 23, 4)
10184 }
10185
10186 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10187 if (!noAssert) checkOffset(offset, 8, this.length)
10188 return ieee754.read(this, offset, true, 52, 8)
10189 }
10190
10191 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10192 if (!noAssert) checkOffset(offset, 8, this.length)
10193 return ieee754.read(this, offset, false, 52, 8)
10194 }
10195
10196 function checkInt (buf, value, offset, ext, max, min) {
10197 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10198 if (value > max || value < min) throw new RangeError('value is out of bounds')
10199 if (offset + ext > buf.length) throw new RangeError('index out of range')
10200 }
10201
10202 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10203 value = +value
10204 offset = offset | 0
10205 byteLength = byteLength | 0
10206 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10207
10208 var mul = 1
10209 var i = 0
10210 this[offset] = value & 0xFF
10211 while (++i < byteLength && (mul *= 0x100)) {
10212 this[offset + i] = (value / mul) & 0xFF
10213 }
10214
10215 return offset + byteLength
10216 }
10217
10218 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10219 value = +value
10220 offset = offset | 0
10221 byteLength = byteLength | 0
10222 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10223
10224 var i = byteLength - 1
10225 var mul = 1
10226 this[offset + i] = value & 0xFF
10227 while (--i >= 0 && (mul *= 0x100)) {
10228 this[offset + i] = (value / mul) & 0xFF
10229 }
10230
10231 return offset + byteLength
10232 }
10233
10234 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10235 value = +value
10236 offset = offset | 0
10237 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10238 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10239 this[offset] = value
10240 return offset + 1
10241 }
10242
10243 function objectWriteUInt16 (buf, value, offset, littleEndian) {
10244 if (value < 0) value = 0xffff + value + 1
10245 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10246 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10247 (littleEndian ? i : 1 - i) * 8
10248 }
10249 }
10250
10251 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10252 value = +value
10253 offset = offset | 0
10254 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10255 if (Buffer.TYPED_ARRAY_SUPPORT) {
10256 this[offset] = value
10257 this[offset + 1] = (value >>> 8)
10258 } else {
10259 objectWriteUInt16(this, value, offset, true)
10260 }
10261 return offset + 2
10262 }
10263
10264 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10265 value = +value
10266 offset = offset | 0
10267 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10268 if (Buffer.TYPED_ARRAY_SUPPORT) {
10269 this[offset] = (value >>> 8)
10270 this[offset + 1] = value
10271 } else {
10272 objectWriteUInt16(this, value, offset, false)
10273 }
10274 return offset + 2
10275 }
10276
10277 function objectWriteUInt32 (buf, value, offset, littleEndian) {
10278 if (value < 0) value = 0xffffffff + value + 1
10279 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10280 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10281 }
10282 }
10283
10284 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10285 value = +value
10286 offset = offset | 0
10287 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10288 if (Buffer.TYPED_ARRAY_SUPPORT) {
10289 this[offset + 3] = (value >>> 24)
10290 this[offset + 2] = (value >>> 16)
10291 this[offset + 1] = (value >>> 8)
10292 this[offset] = value
10293 } else {
10294 objectWriteUInt32(this, value, offset, true)
10295 }
10296 return offset + 4
10297 }
10298
10299 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10300 value = +value
10301 offset = offset | 0
10302 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10303 if (Buffer.TYPED_ARRAY_SUPPORT) {
10304 this[offset] = (value >>> 24)
10305 this[offset + 1] = (value >>> 16)
10306 this[offset + 2] = (value >>> 8)
10307 this[offset + 3] = value
10308 } else {
10309 objectWriteUInt32(this, value, offset, false)
10310 }
10311 return offset + 4
10312 }
10313
10314 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10315 value = +value
10316 offset = offset | 0
10317 if (!noAssert) {
10318 var limit = Math.pow(2, 8 * byteLength - 1)
10319
10320 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10321 }
10322
10323 var i = 0
10324 var mul = 1
10325 var sub = value < 0 ? 1 : 0
10326 this[offset] = value & 0xFF
10327 while (++i < byteLength && (mul *= 0x100)) {
10328 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10329 }
10330
10331 return offset + byteLength
10332 }
10333
10334 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10335 value = +value
10336 offset = offset | 0
10337 if (!noAssert) {
10338 var limit = Math.pow(2, 8 * byteLength - 1)
10339
10340 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10341 }
10342
10343 var i = byteLength - 1
10344 var mul = 1
10345 var sub = value < 0 ? 1 : 0
10346 this[offset + i] = value & 0xFF
10347 while (--i >= 0 && (mul *= 0x100)) {
10348 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10349 }
10350
10351 return offset + byteLength
10352 }
10353
10354 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10355 value = +value
10356 offset = offset | 0
10357 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10358 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10359 if (value < 0) value = 0xff + value + 1
10360 this[offset] = value
10361 return offset + 1
10362 }
10363
10364 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10365 value = +value
10366 offset = offset | 0
10367 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10368 if (Buffer.TYPED_ARRAY_SUPPORT) {
10369 this[offset] = value
10370 this[offset + 1] = (value >>> 8)
10371 } else {
10372 objectWriteUInt16(this, value, offset, true)
10373 }
10374 return offset + 2
10375 }
10376
10377 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10378 value = +value
10379 offset = offset | 0
10380 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10381 if (Buffer.TYPED_ARRAY_SUPPORT) {
10382 this[offset] = (value >>> 8)
10383 this[offset + 1] = value
10384 } else {
10385 objectWriteUInt16(this, value, offset, false)
10386 }
10387 return offset + 2
10388 }
10389
10390 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10391 value = +value
10392 offset = offset | 0
10393 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10394 if (Buffer.TYPED_ARRAY_SUPPORT) {
10395 this[offset] = value
10396 this[offset + 1] = (value >>> 8)
10397 this[offset + 2] = (value >>> 16)
10398 this[offset + 3] = (value >>> 24)
10399 } else {
10400 objectWriteUInt32(this, value, offset, true)
10401 }
10402 return offset + 4
10403 }
10404
10405 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10406 value = +value
10407 offset = offset | 0
10408 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10409 if (value < 0) value = 0xffffffff + value + 1
10410 if (Buffer.TYPED_ARRAY_SUPPORT) {
10411 this[offset] = (value >>> 24)
10412 this[offset + 1] = (value >>> 16)
10413 this[offset + 2] = (value >>> 8)
10414 this[offset + 3] = value
10415 } else {
10416 objectWriteUInt32(this, value, offset, false)
10417 }
10418 return offset + 4
10419 }
10420
10421 function checkIEEE754 (buf, value, offset, ext, max, min) {
10422 if (value > max || value < min) throw new RangeError('value is out of bounds')
10423 if (offset + ext > buf.length) throw new RangeError('index out of range')
10424 if (offset < 0) throw new RangeError('index out of range')
10425 }
10426
10427 function writeFloat (buf, value, offset, littleEndian, noAssert) {
10428 if (!noAssert) {
10429 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10430 }
10431 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10432 return offset + 4
10433 }
10434
10435 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10436 return writeFloat(this, value, offset, true, noAssert)
10437 }
10438
10439 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10440 return writeFloat(this, value, offset, false, noAssert)
10441 }
10442
10443 function writeDouble (buf, value, offset, littleEndian, noAssert) {
10444 if (!noAssert) {
10445 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10446 }
10447 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10448 return offset + 8
10449 }
10450
10451 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10452 return writeDouble(this, value, offset, true, noAssert)
10453 }
10454
10455 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10456 return writeDouble(this, value, offset, false, noAssert)
10457 }
10458
10459 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10460 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10461 if (!start) start = 0
10462 if (!end && end !== 0) end = this.length
10463 if (targetStart >= target.length) targetStart = target.length
10464 if (!targetStart) targetStart = 0
10465 if (end > 0 && end < start) end = start
10466
10467 // Copy 0 bytes; we're done
10468 if (end === start) return 0
10469 if (target.length === 0 || this.length === 0) return 0
10470
10471 // Fatal error conditions
10472 if (targetStart < 0) {
10473 throw new RangeError('targetStart out of bounds')
10474 }
10475 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10476 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10477
10478 // Are we oob?
10479 if (end > this.length) end = this.length
10480 if (target.length - targetStart < end - start) {
10481 end = target.length - targetStart + start
10482 }
10483
10484 var len = end - start
10485 var i
10486
10487 if (this === target && start < targetStart && targetStart < end) {
10488 // descending copy from end
10489 for (i = len - 1; i >= 0; i--) {
10490 target[i + targetStart] = this[i + start]
10491 }
10492 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10493 // ascending copy from start
10494 for (i = 0; i < len; i++) {
10495 target[i + targetStart] = this[i + start]
10496 }
10497 } else {
10498 target._set(this.subarray(start, start + len), targetStart)
10499 }
10500
10501 return len
10502 }
10503
10504 // fill(value, start=0, end=buffer.length)
10505 Buffer.prototype.fill = function fill (value, start, end) {
10506 if (!value) value = 0
10507 if (!start) start = 0
10508 if (!end) end = this.length
10509
10510 if (end < start) throw new RangeError('end < start')
10511
10512 // Fill 0 bytes; we're done
10513 if (end === start) return
10514 if (this.length === 0) return
10515
10516 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10517 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10518
10519 var i
10520 if (typeof value === 'number') {
10521 for (i = start; i < end; i++) {
10522 this[i] = value
10523 }
10524 } else {
10525 var bytes = utf8ToBytes(value.toString())
10526 var len = bytes.length
10527 for (i = start; i < end; i++) {
10528 this[i] = bytes[i % len]
10529 }
10530 }
10531
10532 return this
10533 }
10534
10535 /**
10536 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10537 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10538 */
10539 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10540 if (typeof Uint8Array !== 'undefined') {
10541 if (Buffer.TYPED_ARRAY_SUPPORT) {
10542 return (new Buffer(this)).buffer
10543 } else {
10544 var buf = new Uint8Array(this.length)
10545 for (var i = 0, len = buf.length; i < len; i += 1) {
10546 buf[i] = this[i]
10547 }
10548 return buf.buffer
10549 }
10550 } else {
10551 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10552 }
10553 }
10554
10555 // HELPER FUNCTIONS
10556 // ================
10557
10558 var BP = Buffer.prototype
10559
10560 /**
10561 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10562 */
10563 Buffer._augment = function _augment (arr) {
10564 arr.constructor = Buffer
10565 arr._isBuffer = true
10566
10567 // save reference to original Uint8Array set method before overwriting
10568 arr._set = arr.set
10569
10570 // deprecated
10571 arr.get = BP.get
10572 arr.set = BP.set
10573
10574 arr.write = BP.write
10575 arr.toString = BP.toString
10576 arr.toLocaleString = BP.toString
10577 arr.toJSON = BP.toJSON
10578 arr.equals = BP.equals
10579 arr.compare = BP.compare
10580 arr.indexOf = BP.indexOf
10581 arr.copy = BP.copy
10582 arr.slice = BP.slice
10583 arr.readUIntLE = BP.readUIntLE
10584 arr.readUIntBE = BP.readUIntBE
10585 arr.readUInt8 = BP.readUInt8
10586 arr.readUInt16LE = BP.readUInt16LE
10587 arr.readUInt16BE = BP.readUInt16BE
10588 arr.readUInt32LE = BP.readUInt32LE
10589 arr.readUInt32BE = BP.readUInt32BE
10590 arr.readIntLE = BP.readIntLE
10591 arr.readIntBE = BP.readIntBE
10592 arr.readInt8 = BP.readInt8
10593 arr.readInt16LE = BP.readInt16LE
10594 arr.readInt16BE = BP.readInt16BE
10595 arr.readInt32LE = BP.readInt32LE
10596 arr.readInt32BE = BP.readInt32BE
10597 arr.readFloatLE = BP.readFloatLE
10598 arr.readFloatBE = BP.readFloatBE
10599 arr.readDoubleLE = BP.readDoubleLE
10600 arr.readDoubleBE = BP.readDoubleBE
10601 arr.writeUInt8 = BP.writeUInt8
10602 arr.writeUIntLE = BP.writeUIntLE
10603 arr.writeUIntBE = BP.writeUIntBE
10604 arr.writeUInt16LE = BP.writeUInt16LE
10605 arr.writeUInt16BE = BP.writeUInt16BE
10606 arr.writeUInt32LE = BP.writeUInt32LE
10607 arr.writeUInt32BE = BP.writeUInt32BE
10608 arr.writeIntLE = BP.writeIntLE
10609 arr.writeIntBE = BP.writeIntBE
10610 arr.writeInt8 = BP.writeInt8
10611 arr.writeInt16LE = BP.writeInt16LE
10612 arr.writeInt16BE = BP.writeInt16BE
10613 arr.writeInt32LE = BP.writeInt32LE
10614 arr.writeInt32BE = BP.writeInt32BE
10615 arr.writeFloatLE = BP.writeFloatLE
10616 arr.writeFloatBE = BP.writeFloatBE
10617 arr.writeDoubleLE = BP.writeDoubleLE
10618 arr.writeDoubleBE = BP.writeDoubleBE
10619 arr.fill = BP.fill
10620 arr.inspect = BP.inspect
10621 arr.toArrayBuffer = BP.toArrayBuffer
10622
10623 return arr
10624 }
10625
10626 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10627
10628 function base64clean (str) {
10629 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10630 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10631 // Node converts strings with length < 2 to ''
10632 if (str.length < 2) return ''
10633 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10634 while (str.length % 4 !== 0) {
10635 str = str + '='
10636 }
10637 return str
10638 }
10639
10640 function stringtrim (str) {
10641 if (str.trim) return str.trim()
10642 return str.replace(/^\s+|\s+$/g, '')
10643 }
10644
10645 function toHex (n) {
10646 if (n < 16) return '0' + n.toString(16)
10647 return n.toString(16)
10648 }
10649
10650 function utf8ToBytes (string, units) {
10651 units = units || Infinity
10652 var codePoint
10653 var length = string.length
10654 var leadSurrogate = null
10655 var bytes = []
10656
10657 for (var i = 0; i < length; i++) {
10658 codePoint = string.charCodeAt(i)
10659
10660 // is surrogate component
10661 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10662 // last char was a lead
10663 if (!leadSurrogate) {
10664 // no lead yet
10665 if (codePoint > 0xDBFF) {
10666 // unexpected trail
10667 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10668 continue
10669
10670 } else if (i + 1 === length) {
10671 // unpaired lead
10672 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10673 continue
10674 }
10675
10676 // valid lead
10677 leadSurrogate = codePoint
10678
10679 continue
10680 }
10681
10682 // 2 leads in a row
10683 if (codePoint < 0xDC00) {
10684 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10685 leadSurrogate = codePoint
10686 continue
10687 }
10688
10689 // valid surrogate pair
10690 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10691
10692 } else if (leadSurrogate) {
10693 // valid bmp char, but last char was a lead
10694 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10695 }
10696
10697 leadSurrogate = null
10698
10699 // encode utf8
10700 if (codePoint < 0x80) {
10701 if ((units -= 1) < 0) break
10702 bytes.push(codePoint)
10703 } else if (codePoint < 0x800) {
10704 if ((units -= 2) < 0) break
10705 bytes.push(
10706 codePoint >> 0x6 | 0xC0,
10707 codePoint & 0x3F | 0x80
10708 )
10709 } else if (codePoint < 0x10000) {
10710 if ((units -= 3) < 0) break
10711 bytes.push(
10712 codePoint >> 0xC | 0xE0,
10713 codePoint >> 0x6 & 0x3F | 0x80,
10714 codePoint & 0x3F | 0x80
10715 )
10716 } else if (codePoint < 0x110000) {
10717 if ((units -= 4) < 0) break
10718 bytes.push(
10719 codePoint >> 0x12 | 0xF0,
10720 codePoint >> 0xC & 0x3F | 0x80,
10721 codePoint >> 0x6 & 0x3F | 0x80,
10722 codePoint & 0x3F | 0x80
10723 )
10724 } else {
10725 throw new Error('Invalid code point')
10726 }
10727 }
10728
10729 return bytes
10730 }
10731
10732 function asciiToBytes (str) {
10733 var byteArray = []
10734 for (var i = 0; i < str.length; i++) {
10735 // Node's code seems to be doing this and not & 0x7F..
10736 byteArray.push(str.charCodeAt(i) & 0xFF)
10737 }
10738 return byteArray
10739 }
10740
10741 function utf16leToBytes (str, units) {
10742 var c, hi, lo
10743 var byteArray = []
10744 for (var i = 0; i < str.length; i++) {
10745 if ((units -= 2) < 0) break
10746
10747 c = str.charCodeAt(i)
10748 hi = c >> 8
10749 lo = c % 256
10750 byteArray.push(lo)
10751 byteArray.push(hi)
10752 }
10753
10754 return byteArray
10755 }
10756
10757 function base64ToBytes (str) {
10758 return base64.toByteArray(base64clean(str))
10759 }
10760
10761 function blitBuffer (src, dst, offset, length) {
10762 for (var i = 0; i < length; i++) {
10763 if ((i + offset >= dst.length) || (i >= src.length)) break
10764 dst[i + offset] = src[i]
10765 }
10766 return i
10767 }
10768
10769 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10770 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10771
10772 ;(function (exports) {
10773 'use strict';
10774
10775 var Arr = (typeof Uint8Array !== 'undefined')
10776 ? Uint8Array
10777 : Array
10778
10779 var PLUS = '+'.charCodeAt(0)
10780 var SLASH = '/'.charCodeAt(0)
10781 var NUMBER = '0'.charCodeAt(0)
10782 var LOWER = 'a'.charCodeAt(0)
10783 var UPPER = 'A'.charCodeAt(0)
10784 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10785 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10786
10787 function decode (elt) {
10788 var code = elt.charCodeAt(0)
10789 if (code === PLUS ||
10790 code === PLUS_URL_SAFE)
10791 return 62 // '+'
10792 if (code === SLASH ||
10793 code === SLASH_URL_SAFE)
10794 return 63 // '/'
10795 if (code < NUMBER)
10796 return -1 //no match
10797 if (code < NUMBER + 10)
10798 return code - NUMBER + 26 + 26
10799 if (code < UPPER + 26)
10800 return code - UPPER
10801 if (code < LOWER + 26)
10802 return code - LOWER + 26
10803 }
10804
10805 function b64ToByteArray (b64) {
10806 var i, j, l, tmp, placeHolders, arr
10807
10808 if (b64.length % 4 > 0) {
10809 throw new Error('Invalid string. Length must be a multiple of 4')
10810 }
10811
10812 // the number of equal signs (place holders)
10813 // if there are two placeholders, than the two characters before it
10814 // represent one byte
10815 // if there is only one, then the three characters before it represent 2 bytes
10816 // this is just a cheap hack to not do indexOf twice
10817 var len = b64.length
10818 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10819
10820 // base64 is 4/3 + up to two characters of the original data
10821 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10822
10823 // if there are placeholders, only get up to the last complete 4 chars
10824 l = placeHolders > 0 ? b64.length - 4 : b64.length
10825
10826 var L = 0
10827
10828 function push (v) {
10829 arr[L++] = v
10830 }
10831
10832 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10833 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10834 push((tmp & 0xFF0000) >> 16)
10835 push((tmp & 0xFF00) >> 8)
10836 push(tmp & 0xFF)
10837 }
10838
10839 if (placeHolders === 2) {
10840 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10841 push(tmp & 0xFF)
10842 } else if (placeHolders === 1) {
10843 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10844 push((tmp >> 8) & 0xFF)
10845 push(tmp & 0xFF)
10846 }
10847
10848 return arr
10849 }
10850
10851 function uint8ToBase64 (uint8) {
10852 var i,
10853 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10854 output = "",
10855 temp, length
10856
10857 function encode (num) {
10858 return lookup.charAt(num)
10859 }
10860
10861 function tripletToBase64 (num) {
10862 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10863 }
10864
10865 // go through the array every three bytes, we'll deal with trailing stuff later
10866 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10867 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10868 output += tripletToBase64(temp)
10869 }
10870
10871 // pad the end with zeros, but make sure to not forget the extra bytes
10872 switch (extraBytes) {
10873 case 1:
10874 temp = uint8[uint8.length - 1]
10875 output += encode(temp >> 2)
10876 output += encode((temp << 4) & 0x3F)
10877 output += '=='
10878 break
10879 case 2:
10880 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10881 output += encode(temp >> 10)
10882 output += encode((temp >> 4) & 0x3F)
10883 output += encode((temp << 2) & 0x3F)
10884 output += '='
10885 break
10886 }
10887
10888 return output
10889 }
10890
10891 exports.toByteArray = b64ToByteArray
10892 exports.fromByteArray = uint8ToBase64
10893 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10894
10895 },{}],9:[function(require,module,exports){
10896 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10897 var e, m
10898 var eLen = nBytes * 8 - mLen - 1
10899 var eMax = (1 << eLen) - 1
10900 var eBias = eMax >> 1
10901 var nBits = -7
10902 var i = isLE ? (nBytes - 1) : 0
10903 var d = isLE ? -1 : 1
10904 var s = buffer[offset + i]
10905
10906 i += d
10907
10908 e = s & ((1 << (-nBits)) - 1)
10909 s >>= (-nBits)
10910 nBits += eLen
10911 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10912
10913 m = e & ((1 << (-nBits)) - 1)
10914 e >>= (-nBits)
10915 nBits += mLen
10916 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10917
10918 if (e === 0) {
10919 e = 1 - eBias
10920 } else if (e === eMax) {
10921 return m ? NaN : ((s ? -1 : 1) * Infinity)
10922 } else {
10923 m = m + Math.pow(2, mLen)
10924 e = e - eBias
10925 }
10926 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10927 }
10928
10929 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10930 var e, m, c
10931 var eLen = nBytes * 8 - mLen - 1
10932 var eMax = (1 << eLen) - 1
10933 var eBias = eMax >> 1
10934 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10935 var i = isLE ? 0 : (nBytes - 1)
10936 var d = isLE ? 1 : -1
10937 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10938
10939 value = Math.abs(value)
10940
10941 if (isNaN(value) || value === Infinity) {
10942 m = isNaN(value) ? 1 : 0
10943 e = eMax
10944 } else {
10945 e = Math.floor(Math.log(value) / Math.LN2)
10946 if (value * (c = Math.pow(2, -e)) < 1) {
10947 e--
10948 c *= 2
10949 }
10950 if (e + eBias >= 1) {
10951 value += rt / c
10952 } else {
10953 value += rt * Math.pow(2, 1 - eBias)
10954 }
10955 if (value * c >= 2) {
10956 e++
10957 c /= 2
10958 }
10959
10960 if (e + eBias >= eMax) {
10961 m = 0
10962 e = eMax
10963 } else if (e + eBias >= 1) {
10964 m = (value * c - 1) * Math.pow(2, mLen)
10965 e = e + eBias
10966 } else {
10967 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10968 e = 0
10969 }
10970 }
10971
10972 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10973
10974 e = (e << mLen) | m
10975 eLen += mLen
10976 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10977
10978 buffer[offset + i - d] |= s * 128
10979 }
10980
10981 },{}],10:[function(require,module,exports){
10982
10983 /**
10984 * isArray
10985 */
10986
10987 var isArray = Array.isArray;
10988
10989 /**
10990 * toString
10991 */
10992
10993 var str = Object.prototype.toString;
10994
10995 /**
10996 * Whether or not the given `val`
10997 * is an array.
10998 *
10999 * example:
11000 *
11001 * isArray([]);
11002 * // > true
11003 * isArray(arguments);
11004 * // > false
11005 * isArray('');
11006 * // > false
11007 *
11008 * @param {mixed} val
11009 * @return {bool}
11010 */
11011
11012 module.exports = isArray || function (val) {
11013 return !! val && '[object Array]' == str.call(val);
11014 };
11015
11016 },{}],11:[function(require,module,exports){
11017 // Copyright Joyent, Inc. and other Node contributors.
11018 //
11019 // Permission is hereby granted, free of charge, to any person obtaining a
11020 // copy of this software and associated documentation files (the
11021 // "Software"), to deal in the Software without restriction, including
11022 // without limitation the rights to use, copy, modify, merge, publish,
11023 // distribute, sublicense, and/or sell copies of the Software, and to permit
11024 // persons to whom the Software is furnished to do so, subject to the
11025 // following conditions:
11026 //
11027 // The above copyright notice and this permission notice shall be included
11028 // in all copies or substantial portions of the Software.
11029 //
11030 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11031 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11032 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11033 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11034 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11035 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11036 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11037
11038 function EventEmitter() {
11039 this._events = this._events || {};
11040 this._maxListeners = this._maxListeners || undefined;
11041 }
11042 module.exports = EventEmitter;
11043
11044 // Backwards-compat with node 0.10.x
11045 EventEmitter.EventEmitter = EventEmitter;
11046
11047 EventEmitter.prototype._events = undefined;
11048 EventEmitter.prototype._maxListeners = undefined;
11049
11050 // By default EventEmitters will print a warning if more than 10 listeners are
11051 // added to it. This is a useful default which helps finding memory leaks.
11052 EventEmitter.defaultMaxListeners = 10;
11053
11054 // Obviously not all Emitters should be limited to 10. This function allows
11055 // that to be increased. Set to zero for unlimited.
11056 EventEmitter.prototype.setMaxListeners = function(n) {
11057 if (!isNumber(n) || n < 0 || isNaN(n))
11058 throw TypeError('n must be a positive number');
11059 this._maxListeners = n;
11060 return this;
11061 };
11062
11063 EventEmitter.prototype.emit = function(type) {
11064 var er, handler, len, args, i, listeners;
11065
11066 if (!this._events)
11067 this._events = {};
11068
11069 // If there is no 'error' event listener then throw.
11070 if (type === 'error') {
11071 if (!this._events.error ||
11072 (isObject(this._events.error) && !this._events.error.length)) {
11073 er = arguments[1];
11074 if (er instanceof Error) {
11075 throw er; // Unhandled 'error' event
11076 }
11077 throw TypeError('Uncaught, unspecified "error" event.');
11078 }
11079 }
11080
11081 handler = this._events[type];
11082
11083 if (isUndefined(handler))
11084 return false;
11085
11086 if (isFunction(handler)) {
11087 switch (arguments.length) {
11088 // fast cases
11089 case 1:
11090 handler.call(this);
11091 break;
11092 case 2:
11093 handler.call(this, arguments[1]);
11094 break;
11095 case 3:
11096 handler.call(this, arguments[1], arguments[2]);
11097 break;
11098 // slower
11099 default:
11100 len = arguments.length;
11101 args = new Array(len - 1);
11102 for (i = 1; i < len; i++)
11103 args[i - 1] = arguments[i];
11104 handler.apply(this, args);
11105 }
11106 } else if (isObject(handler)) {
11107 len = arguments.length;
11108 args = new Array(len - 1);
11109 for (i = 1; i < len; i++)
11110 args[i - 1] = arguments[i];
11111
11112 listeners = handler.slice();
11113 len = listeners.length;
11114 for (i = 0; i < len; i++)
11115 listeners[i].apply(this, args);
11116 }
11117
11118 return true;
11119 };
11120
11121 EventEmitter.prototype.addListener = function(type, listener) {
11122 var m;
11123
11124 if (!isFunction(listener))
11125 throw TypeError('listener must be a function');
11126
11127 if (!this._events)
11128 this._events = {};
11129
11130 // To avoid recursion in the case that type === "newListener"! Before
11131 // adding it to the listeners, first emit "newListener".
11132 if (this._events.newListener)
11133 this.emit('newListener', type,
11134 isFunction(listener.listener) ?
11135 listener.listener : listener);
11136
11137 if (!this._events[type])
11138 // Optimize the case of one listener. Don't need the extra array object.
11139 this._events[type] = listener;
11140 else if (isObject(this._events[type]))
11141 // If we've already got an array, just append.
11142 this._events[type].push(listener);
11143 else
11144 // Adding the second element, need to change to array.
11145 this._events[type] = [this._events[type], listener];
11146
11147 // Check for listener leak
11148 if (isObject(this._events[type]) && !this._events[type].warned) {
11149 var m;
11150 if (!isUndefined(this._maxListeners)) {
11151 m = this._maxListeners;
11152 } else {
11153 m = EventEmitter.defaultMaxListeners;
11154 }
11155
11156 if (m && m > 0 && this._events[type].length > m) {
11157 this._events[type].warned = true;
11158 console.error('(node) warning: possible EventEmitter memory ' +
11159 'leak detected. %d listeners added. ' +
11160 'Use emitter.setMaxListeners() to increase limit.',
11161 this._events[type].length);
11162 if (typeof console.trace === 'function') {
11163 // not supported in IE 10
11164 console.trace();
11165 }
11166 }
11167 }
11168
11169 return this;
11170 };
11171
11172 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11173
11174 EventEmitter.prototype.once = function(type, listener) {
11175 if (!isFunction(listener))
11176 throw TypeError('listener must be a function');
11177
11178 var fired = false;
11179
11180 function g() {
11181 this.removeListener(type, g);
11182
11183 if (!fired) {
11184 fired = true;
11185 listener.apply(this, arguments);
11186 }
11187 }
11188
11189 g.listener = listener;
11190 this.on(type, g);
11191
11192 return this;
11193 };
11194
11195 // emits a 'removeListener' event iff the listener was removed
11196 EventEmitter.prototype.removeListener = function(type, listener) {
11197 var list, position, length, i;
11198
11199 if (!isFunction(listener))
11200 throw TypeError('listener must be a function');
11201
11202 if (!this._events || !this._events[type])
11203 return this;
11204
11205 list = this._events[type];
11206 length = list.length;
11207 position = -1;
11208
11209 if (list === listener ||
11210 (isFunction(list.listener) && list.listener === listener)) {
11211 delete this._events[type];
11212 if (this._events.removeListener)
11213 this.emit('removeListener', type, listener);
11214
11215 } else if (isObject(list)) {
11216 for (i = length; i-- > 0;) {
11217 if (list[i] === listener ||
11218 (list[i].listener && list[i].listener === listener)) {
11219 position = i;
11220 break;
11221 }
11222 }
11223
11224 if (position < 0)
11225 return this;
11226
11227 if (list.length === 1) {
11228 list.length = 0;
11229 delete this._events[type];
11230 } else {
11231 list.splice(position, 1);
11232 }
11233
11234 if (this._events.removeListener)
11235 this.emit('removeListener', type, listener);
11236 }
11237
11238 return this;
11239 };
11240
11241 EventEmitter.prototype.removeAllListeners = function(type) {
11242 var key, listeners;
11243
11244 if (!this._events)
11245 return this;
11246
11247 // not listening for removeListener, no need to emit
11248 if (!this._events.removeListener) {
11249 if (arguments.length === 0)
11250 this._events = {};
11251 else if (this._events[type])
11252 delete this._events[type];
11253 return this;
11254 }
11255
11256 // emit removeListener for all listeners on all events
11257 if (arguments.length === 0) {
11258 for (key in this._events) {
11259 if (key === 'removeListener') continue;
11260 this.removeAllListeners(key);
11261 }
11262 this.removeAllListeners('removeListener');
11263 this._events = {};
11264 return this;
11265 }
11266
11267 listeners = this._events[type];
11268
11269 if (isFunction(listeners)) {
11270 this.removeListener(type, listeners);
11271 } else {
11272 // LIFO order
11273 while (listeners.length)
11274 this.removeListener(type, listeners[listeners.length - 1]);
11275 }
11276 delete this._events[type];
11277
11278 return this;
11279 };
11280
11281 EventEmitter.prototype.listeners = function(type) {
11282 var ret;
11283 if (!this._events || !this._events[type])
11284 ret = [];
11285 else if (isFunction(this._events[type]))
11286 ret = [this._events[type]];
11287 else
11288 ret = this._events[type].slice();
11289 return ret;
11290 };
11291
11292 EventEmitter.listenerCount = function(emitter, type) {
11293 var ret;
11294 if (!emitter._events || !emitter._events[type])
11295 ret = 0;
11296 else if (isFunction(emitter._events[type]))
11297 ret = 1;
11298 else
11299 ret = emitter._events[type].length;
11300 return ret;
11301 };
11302
11303 function isFunction(arg) {
11304 return typeof arg === 'function';
11305 }
11306
11307 function isNumber(arg) {
11308 return typeof arg === 'number';
11309 }
11310
11311 function isObject(arg) {
11312 return typeof arg === 'object' && arg !== null;
11313 }
11314
11315 function isUndefined(arg) {
11316 return arg === void 0;
11317 }
11318
11319 },{}],12:[function(require,module,exports){
11320 if (typeof Object.create === 'function') {
11321 // implementation from standard node.js 'util' module
11322 module.exports = function inherits(ctor, superCtor) {
11323 ctor.super_ = superCtor
11324 ctor.prototype = Object.create(superCtor.prototype, {
11325 constructor: {
11326 value: ctor,
11327 enumerable: false,
11328 writable: true,
11329 configurable: true
11330 }
11331 });
11332 };
11333 } else {
11334 // old school shim for old browsers
11335 module.exports = function inherits(ctor, superCtor) {
11336 ctor.super_ = superCtor
11337 var TempCtor = function () {}
11338 TempCtor.prototype = superCtor.prototype
11339 ctor.prototype = new TempCtor()
11340 ctor.prototype.constructor = ctor
11341 }
11342 }
11343
11344 },{}],13:[function(require,module,exports){
11345 module.exports = Array.isArray || function (arr) {
11346 return Object.prototype.toString.call(arr) == '[object Array]';
11347 };
11348
11349 },{}],14:[function(require,module,exports){
11350 // shim for using process in browser
11351
11352 var process = module.exports = {};
11353 var queue = [];
11354 var draining = false;
11355 var currentQueue;
11356 var queueIndex = -1;
11357
11358 function cleanUpNextTick() {
11359 draining = false;
11360 if (currentQueue.length) {
11361 queue = currentQueue.concat(queue);
11362 } else {
11363 queueIndex = -1;
11364 }
11365 if (queue.length) {
11366 drainQueue();
11367 }
11368 }
11369
11370 function drainQueue() {
11371 if (draining) {
11372 return;
11373 }
11374 var timeout = setTimeout(cleanUpNextTick);
11375 draining = true;
11376
11377 var len = queue.length;
11378 while(len) {
11379 currentQueue = queue;
11380 queue = [];
11381 while (++queueIndex < len) {
11382 currentQueue[queueIndex].run();
11383 }
11384 queueIndex = -1;
11385 len = queue.length;
11386 }
11387 currentQueue = null;
11388 draining = false;
11389 clearTimeout(timeout);
11390 }
11391
11392 process.nextTick = function (fun) {
11393 var args = new Array(arguments.length - 1);
11394 if (arguments.length > 1) {
11395 for (var i = 1; i < arguments.length; i++) {
11396 args[i - 1] = arguments[i];
11397 }
11398 }
11399 queue.push(new Item(fun, args));
11400 if (queue.length === 1 && !draining) {
11401 setTimeout(drainQueue, 0);
11402 }
11403 };
11404
11405 // v8 likes predictible objects
11406 function Item(fun, array) {
11407 this.fun = fun;
11408 this.array = array;
11409 }
11410 Item.prototype.run = function () {
11411 this.fun.apply(null, this.array);
11412 };
11413 process.title = 'browser';
11414 process.browser = true;
11415 process.env = {};
11416 process.argv = [];
11417 process.version = ''; // empty string to avoid regexp issues
11418 process.versions = {};
11419
11420 function noop() {}
11421
11422 process.on = noop;
11423 process.addListener = noop;
11424 process.once = noop;
11425 process.off = noop;
11426 process.removeListener = noop;
11427 process.removeAllListeners = noop;
11428 process.emit = noop;
11429
11430 process.binding = function (name) {
11431 throw new Error('process.binding is not supported');
11432 };
11433
11434 // TODO(shtylman)
11435 process.cwd = function () { return '/' };
11436 process.chdir = function (dir) {
11437 throw new Error('process.chdir is not supported');
11438 };
11439 process.umask = function() { return 0; };
11440
11441 },{}],15:[function(require,module,exports){
11442 module.exports = require("./lib/_stream_duplex.js")
11443
11444 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11445 (function (process){
11446 // Copyright Joyent, Inc. and other Node contributors.
11447 //
11448 // Permission is hereby granted, free of charge, to any person obtaining a
11449 // copy of this software and associated documentation files (the
11450 // "Software"), to deal in the Software without restriction, including
11451 // without limitation the rights to use, copy, modify, merge, publish,
11452 // distribute, sublicense, and/or sell copies of the Software, and to permit
11453 // persons to whom the Software is furnished to do so, subject to the
11454 // following conditions:
11455 //
11456 // The above copyright notice and this permission notice shall be included
11457 // in all copies or substantial portions of the Software.
11458 //
11459 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11460 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11461 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11462 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11463 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11464 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11465 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11466
11467 // a duplex stream is just a stream that is both readable and writable.
11468 // Since JS doesn't have multiple prototypal inheritance, this class
11469 // prototypally inherits from Readable, and then parasitically from
11470 // Writable.
11471
11472 module.exports = Duplex;
11473
11474 /*<replacement>*/
11475 var objectKeys = Object.keys || function (obj) {
11476 var keys = [];
11477 for (var key in obj) keys.push(key);
11478 return keys;
11479 }
11480 /*</replacement>*/
11481
11482
11483 /*<replacement>*/
11484 var util = require('core-util-is');
11485 util.inherits = require('inherits');
11486 /*</replacement>*/
11487
11488 var Readable = require('./_stream_readable');
11489 var Writable = require('./_stream_writable');
11490
11491 util.inherits(Duplex, Readable);
11492
11493 forEach(objectKeys(Writable.prototype), function(method) {
11494 if (!Duplex.prototype[method])
11495 Duplex.prototype[method] = Writable.prototype[method];
11496 });
11497
11498 function Duplex(options) {
11499 if (!(this instanceof Duplex))
11500 return new Duplex(options);
11501
11502 Readable.call(this, options);
11503 Writable.call(this, options);
11504
11505 if (options && options.readable === false)
11506 this.readable = false;
11507
11508 if (options && options.writable === false)
11509 this.writable = false;
11510
11511 this.allowHalfOpen = true;
11512 if (options && options.allowHalfOpen === false)
11513 this.allowHalfOpen = false;
11514
11515 this.once('end', onend);
11516 }
11517
11518 // the no-half-open enforcer
11519 function onend() {
11520 // if we allow half-open state, or if the writable side ended,
11521 // then we're ok.
11522 if (this.allowHalfOpen || this._writableState.ended)
11523 return;
11524
11525 // no more data can be written.
11526 // But allow more writes to happen in this tick.
11527 process.nextTick(this.end.bind(this));
11528 }
11529
11530 function forEach (xs, f) {
11531 for (var i = 0, l = xs.length; i < l; i++) {
11532 f(xs[i], i);
11533 }
11534 }
11535
11536 }).call(this,require('_process'))
11537 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11538 // Copyright Joyent, Inc. and other Node contributors.
11539 //
11540 // Permission is hereby granted, free of charge, to any person obtaining a
11541 // copy of this software and associated documentation files (the
11542 // "Software"), to deal in the Software without restriction, including
11543 // without limitation the rights to use, copy, modify, merge, publish,
11544 // distribute, sublicense, and/or sell copies of the Software, and to permit
11545 // persons to whom the Software is furnished to do so, subject to the
11546 // following conditions:
11547 //
11548 // The above copyright notice and this permission notice shall be included
11549 // in all copies or substantial portions of the Software.
11550 //
11551 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11552 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11553 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11554 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11555 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11556 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11557 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11558
11559 // a passthrough stream.
11560 // basically just the most minimal sort of Transform stream.
11561 // Every written chunk gets output as-is.
11562
11563 module.exports = PassThrough;
11564
11565 var Transform = require('./_stream_transform');
11566
11567 /*<replacement>*/
11568 var util = require('core-util-is');
11569 util.inherits = require('inherits');
11570 /*</replacement>*/
11571
11572 util.inherits(PassThrough, Transform);
11573
11574 function PassThrough(options) {
11575 if (!(this instanceof PassThrough))
11576 return new PassThrough(options);
11577
11578 Transform.call(this, options);
11579 }
11580
11581 PassThrough.prototype._transform = function(chunk, encoding, cb) {
11582 cb(null, chunk);
11583 };
11584
11585 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11586 (function (process){
11587 // Copyright Joyent, Inc. and other Node contributors.
11588 //
11589 // Permission is hereby granted, free of charge, to any person obtaining a
11590 // copy of this software and associated documentation files (the
11591 // "Software"), to deal in the Software without restriction, including
11592 // without limitation the rights to use, copy, modify, merge, publish,
11593 // distribute, sublicense, and/or sell copies of the Software, and to permit
11594 // persons to whom the Software is furnished to do so, subject to the
11595 // following conditions:
11596 //
11597 // The above copyright notice and this permission notice shall be included
11598 // in all copies or substantial portions of the Software.
11599 //
11600 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11601 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11602 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11603 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11604 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11605 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11606 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11607
11608 module.exports = Readable;
11609
11610 /*<replacement>*/
11611 var isArray = require('isarray');
11612 /*</replacement>*/
11613
11614
11615 /*<replacement>*/
11616 var Buffer = require('buffer').Buffer;
11617 /*</replacement>*/
11618
11619 Readable.ReadableState = ReadableState;
11620
11621 var EE = require('events').EventEmitter;
11622
11623 /*<replacement>*/
11624 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11625 return emitter.listeners(type).length;
11626 };
11627 /*</replacement>*/
11628
11629 var Stream = require('stream');
11630
11631 /*<replacement>*/
11632 var util = require('core-util-is');
11633 util.inherits = require('inherits');
11634 /*</replacement>*/
11635
11636 var StringDecoder;
11637
11638
11639 /*<replacement>*/
11640 var debug = require('util');
11641 if (debug && debug.debuglog) {
11642 debug = debug.debuglog('stream');
11643 } else {
11644 debug = function () {};
11645 }
11646 /*</replacement>*/
11647
11648
11649 util.inherits(Readable, Stream);
11650
11651 function ReadableState(options, stream) {
11652 var Duplex = require('./_stream_duplex');
11653
11654 options = options || {};
11655
11656 // the point at which it stops calling _read() to fill the buffer
11657 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11658 var hwm = options.highWaterMark;
11659 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11660 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11661
11662 // cast to ints.
11663 this.highWaterMark = ~~this.highWaterMark;
11664
11665 this.buffer = [];
11666 this.length = 0;
11667 this.pipes = null;
11668 this.pipesCount = 0;
11669 this.flowing = null;
11670 this.ended = false;
11671 this.endEmitted = false;
11672 this.reading = false;
11673
11674 // a flag to be able to tell if the onwrite cb is called immediately,
11675 // or on a later tick. We set this to true at first, because any
11676 // actions that shouldn't happen until "later" should generally also
11677 // not happen before the first write call.
11678 this.sync = true;
11679
11680 // whenever we return null, then we set a flag to say
11681 // that we're awaiting a 'readable' event emission.
11682 this.needReadable = false;
11683 this.emittedReadable = false;
11684 this.readableListening = false;
11685
11686
11687 // object stream flag. Used to make read(n) ignore n and to
11688 // make all the buffer merging and length checks go away
11689 this.objectMode = !!options.objectMode;
11690
11691 if (stream instanceof Duplex)
11692 this.objectMode = this.objectMode || !!options.readableObjectMode;
11693
11694 // Crypto is kind of old and crusty. Historically, its default string
11695 // encoding is 'binary' so we have to make this configurable.
11696 // Everything else in the universe uses 'utf8', though.
11697 this.defaultEncoding = options.defaultEncoding || 'utf8';
11698
11699 // when piping, we only care about 'readable' events that happen
11700 // after read()ing all the bytes and not getting any pushback.
11701 this.ranOut = false;
11702
11703 // the number of writers that are awaiting a drain event in .pipe()s
11704 this.awaitDrain = 0;
11705
11706 // if true, a maybeReadMore has been scheduled
11707 this.readingMore = false;
11708
11709 this.decoder = null;
11710 this.encoding = null;
11711 if (options.encoding) {
11712 if (!StringDecoder)
11713 StringDecoder = require('string_decoder/').StringDecoder;
11714 this.decoder = new StringDecoder(options.encoding);
11715 this.encoding = options.encoding;
11716 }
11717 }
11718
11719 function Readable(options) {
11720 var Duplex = require('./_stream_duplex');
11721
11722 if (!(this instanceof Readable))
11723 return new Readable(options);
11724
11725 this._readableState = new ReadableState(options, this);
11726
11727 // legacy
11728 this.readable = true;
11729
11730 Stream.call(this);
11731 }
11732
11733 // Manually shove something into the read() buffer.
11734 // This returns true if the highWaterMark has not been hit yet,
11735 // similar to how Writable.write() returns true if you should
11736 // write() some more.
11737 Readable.prototype.push = function(chunk, encoding) {
11738 var state = this._readableState;
11739
11740 if (util.isString(chunk) && !state.objectMode) {
11741 encoding = encoding || state.defaultEncoding;
11742 if (encoding !== state.encoding) {
11743 chunk = new Buffer(chunk, encoding);
11744 encoding = '';
11745 }
11746 }
11747
11748 return readableAddChunk(this, state, chunk, encoding, false);
11749 };
11750
11751 // Unshift should *always* be something directly out of read()
11752 Readable.prototype.unshift = function(chunk) {
11753 var state = this._readableState;
11754 return readableAddChunk(this, state, chunk, '', true);
11755 };
11756
11757 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11758 var er = chunkInvalid(state, chunk);
11759 if (er) {
11760 stream.emit('error', er);
11761 } else if (util.isNullOrUndefined(chunk)) {
11762 state.reading = false;
11763 if (!state.ended)
11764 onEofChunk(stream, state);
11765 } else if (state.objectMode || chunk && chunk.length > 0) {
11766 if (state.ended && !addToFront) {
11767 var e = new Error('stream.push() after EOF');
11768 stream.emit('error', e);
11769 } else if (state.endEmitted && addToFront) {
11770 var e = new Error('stream.unshift() after end event');
11771 stream.emit('error', e);
11772 } else {
11773 if (state.decoder && !addToFront && !encoding)
11774 chunk = state.decoder.write(chunk);
11775
11776 if (!addToFront)
11777 state.reading = false;
11778
11779 // if we want the data now, just emit it.
11780 if (state.flowing && state.length === 0 && !state.sync) {
11781 stream.emit('data', chunk);
11782 stream.read(0);
11783 } else {
11784 // update the buffer info.
11785 state.length += state.objectMode ? 1 : chunk.length;
11786 if (addToFront)
11787 state.buffer.unshift(chunk);
11788 else
11789 state.buffer.push(chunk);
11790
11791 if (state.needReadable)
11792 emitReadable(stream);
11793 }
11794
11795 maybeReadMore(stream, state);
11796 }
11797 } else if (!addToFront) {
11798 state.reading = false;
11799 }
11800
11801 return needMoreData(state);
11802 }
11803
11804
11805
11806 // if it's past the high water mark, we can push in some more.
11807 // Also, if we have no data yet, we can stand some
11808 // more bytes. This is to work around cases where hwm=0,
11809 // such as the repl. Also, if the push() triggered a
11810 // readable event, and the user called read(largeNumber) such that
11811 // needReadable was set, then we ought to push more, so that another
11812 // 'readable' event will be triggered.
11813 function needMoreData(state) {
11814 return !state.ended &&
11815 (state.needReadable ||
11816 state.length < state.highWaterMark ||
11817 state.length === 0);
11818 }
11819
11820 // backwards compatibility.
11821 Readable.prototype.setEncoding = function(enc) {
11822 if (!StringDecoder)
11823 StringDecoder = require('string_decoder/').StringDecoder;
11824 this._readableState.decoder = new StringDecoder(enc);
11825 this._readableState.encoding = enc;
11826 return this;
11827 };
11828
11829 // Don't raise the hwm > 128MB
11830 var MAX_HWM = 0x800000;
11831 function roundUpToNextPowerOf2(n) {
11832 if (n >= MAX_HWM) {
11833 n = MAX_HWM;
11834 } else {
11835 // Get the next highest power of 2
11836 n--;
11837 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11838 n++;
11839 }
11840 return n;
11841 }
11842
11843 function howMuchToRead(n, state) {
11844 if (state.length === 0 && state.ended)
11845 return 0;
11846
11847 if (state.objectMode)
11848 return n === 0 ? 0 : 1;
11849
11850 if (isNaN(n) || util.isNull(n)) {
11851 // only flow one buffer at a time
11852 if (state.flowing && state.buffer.length)
11853 return state.buffer[0].length;
11854 else
11855 return state.length;
11856 }
11857
11858 if (n <= 0)
11859 return 0;
11860
11861 // If we're asking for more than the target buffer level,
11862 // then raise the water mark. Bump up to the next highest
11863 // power of 2, to prevent increasing it excessively in tiny
11864 // amounts.
11865 if (n > state.highWaterMark)
11866 state.highWaterMark = roundUpToNextPowerOf2(n);
11867
11868 // don't have that much. return null, unless we've ended.
11869 if (n > state.length) {
11870 if (!state.ended) {
11871 state.needReadable = true;
11872 return 0;
11873 } else
11874 return state.length;
11875 }
11876
11877 return n;
11878 }
11879
11880 // you can override either this method, or the async _read(n) below.
11881 Readable.prototype.read = function(n) {
11882 debug('read', n);
11883 var state = this._readableState;
11884 var nOrig = n;
11885
11886 if (!util.isNumber(n) || n > 0)
11887 state.emittedReadable = false;
11888
11889 // if we're doing read(0) to trigger a readable event, but we
11890 // already have a bunch of data in the buffer, then just trigger
11891 // the 'readable' event and move on.
11892 if (n === 0 &&
11893 state.needReadable &&
11894 (state.length >= state.highWaterMark || state.ended)) {
11895 debug('read: emitReadable', state.length, state.ended);
11896 if (state.length === 0 && state.ended)
11897 endReadable(this);
11898 else
11899 emitReadable(this);
11900 return null;
11901 }
11902
11903 n = howMuchToRead(n, state);
11904
11905 // if we've ended, and we're now clear, then finish it up.
11906 if (n === 0 && state.ended) {
11907 if (state.length === 0)
11908 endReadable(this);
11909 return null;
11910 }
11911
11912 // All the actual chunk generation logic needs to be
11913 // *below* the call to _read. The reason is that in certain
11914 // synthetic stream cases, such as passthrough streams, _read
11915 // may be a completely synchronous operation which may change
11916 // the state of the read buffer, providing enough data when
11917 // before there was *not* enough.
11918 //
11919 // So, the steps are:
11920 // 1. Figure out what the state of things will be after we do
11921 // a read from the buffer.
11922 //
11923 // 2. If that resulting state will trigger a _read, then call _read.
11924 // Note that this may be asynchronous, or synchronous. Yes, it is
11925 // deeply ugly to write APIs this way, but that still doesn't mean
11926 // that the Readable class should behave improperly, as streams are
11927 // designed to be sync/async agnostic.
11928 // Take note if the _read call is sync or async (ie, if the read call
11929 // has returned yet), so that we know whether or not it's safe to emit
11930 // 'readable' etc.
11931 //
11932 // 3. Actually pull the requested chunks out of the buffer and return.
11933
11934 // if we need a readable event, then we need to do some reading.
11935 var doRead = state.needReadable;
11936 debug('need readable', doRead);
11937
11938 // if we currently have less than the highWaterMark, then also read some
11939 if (state.length === 0 || state.length - n < state.highWaterMark) {
11940 doRead = true;
11941 debug('length less than watermark', doRead);
11942 }
11943
11944 // however, if we've ended, then there's no point, and if we're already
11945 // reading, then it's unnecessary.
11946 if (state.ended || state.reading) {
11947 doRead = false;
11948 debug('reading or ended', doRead);
11949 }
11950
11951 if (doRead) {
11952 debug('do read');
11953 state.reading = true;
11954 state.sync = true;
11955 // if the length is currently zero, then we *need* a readable event.
11956 if (state.length === 0)
11957 state.needReadable = true;
11958 // call internal read method
11959 this._read(state.highWaterMark);
11960 state.sync = false;
11961 }
11962
11963 // If _read pushed data synchronously, then `reading` will be false,
11964 // and we need to re-evaluate how much data we can return to the user.
11965 if (doRead && !state.reading)
11966 n = howMuchToRead(nOrig, state);
11967
11968 var ret;
11969 if (n > 0)
11970 ret = fromList(n, state);
11971 else
11972 ret = null;
11973
11974 if (util.isNull(ret)) {
11975 state.needReadable = true;
11976 n = 0;
11977 }
11978
11979 state.length -= n;
11980
11981 // If we have nothing in the buffer, then we want to know
11982 // as soon as we *do* get something into the buffer.
11983 if (state.length === 0 && !state.ended)
11984 state.needReadable = true;
11985
11986 // If we tried to read() past the EOF, then emit end on the next tick.
11987 if (nOrig !== n && state.ended && state.length === 0)
11988 endReadable(this);
11989
11990 if (!util.isNull(ret))
11991 this.emit('data', ret);
11992
11993 return ret;
11994 };
11995
11996 function chunkInvalid(state, chunk) {
11997 var er = null;
11998 if (!util.isBuffer(chunk) &&
11999 !util.isString(chunk) &&
12000 !util.isNullOrUndefined(chunk) &&
12001 !state.objectMode) {
12002 er = new TypeError('Invalid non-string/buffer chunk');
12003 }
12004 return er;
12005 }
12006
12007
12008 function onEofChunk(stream, state) {
12009 if (state.decoder && !state.ended) {
12010 var chunk = state.decoder.end();
12011 if (chunk && chunk.length) {
12012 state.buffer.push(chunk);
12013 state.length += state.objectMode ? 1 : chunk.length;
12014 }
12015 }
12016 state.ended = true;
12017
12018 // emit 'readable' now to make sure it gets picked up.
12019 emitReadable(stream);
12020 }
12021
12022 // Don't emit readable right away in sync mode, because this can trigger
12023 // another read() call => stack overflow. This way, it might trigger
12024 // a nextTick recursion warning, but that's not so bad.
12025 function emitReadable(stream) {
12026 var state = stream._readableState;
12027 state.needReadable = false;
12028 if (!state.emittedReadable) {
12029 debug('emitReadable', state.flowing);
12030 state.emittedReadable = true;
12031 if (state.sync)
12032 process.nextTick(function() {
12033 emitReadable_(stream);
12034 });
12035 else
12036 emitReadable_(stream);
12037 }
12038 }
12039
12040 function emitReadable_(stream) {
12041 debug('emit readable');
12042 stream.emit('readable');
12043 flow(stream);
12044 }
12045
12046
12047 // at this point, the user has presumably seen the 'readable' event,
12048 // and called read() to consume some data. that may have triggered
12049 // in turn another _read(n) call, in which case reading = true if
12050 // it's in progress.
12051 // However, if we're not ended, or reading, and the length < hwm,
12052 // then go ahead and try to read some more preemptively.
12053 function maybeReadMore(stream, state) {
12054 if (!state.readingMore) {
12055 state.readingMore = true;
12056 process.nextTick(function() {
12057 maybeReadMore_(stream, state);
12058 });
12059 }
12060 }
12061
12062 function maybeReadMore_(stream, state) {
12063 var len = state.length;
12064 while (!state.reading && !state.flowing && !state.ended &&
12065 state.length < state.highWaterMark) {
12066 debug('maybeReadMore read 0');
12067 stream.read(0);
12068 if (len === state.length)
12069 // didn't get any data, stop spinning.
12070 break;
12071 else
12072 len = state.length;
12073 }
12074 state.readingMore = false;
12075 }
12076
12077 // abstract method. to be overridden in specific implementation classes.
12078 // call cb(er, data) where data is <= n in length.
12079 // for virtual (non-string, non-buffer) streams, "length" is somewhat
12080 // arbitrary, and perhaps not very meaningful.
12081 Readable.prototype._read = function(n) {
12082 this.emit('error', new Error('not implemented'));
12083 };
12084
12085 Readable.prototype.pipe = function(dest, pipeOpts) {
12086 var src = this;
12087 var state = this._readableState;
12088
12089 switch (state.pipesCount) {
12090 case 0:
12091 state.pipes = dest;
12092 break;
12093 case 1:
12094 state.pipes = [state.pipes, dest];
12095 break;
12096 default:
12097 state.pipes.push(dest);
12098 break;
12099 }
12100 state.pipesCount += 1;
12101 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12102
12103 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12104 dest !== process.stdout &&
12105 dest !== process.stderr;
12106
12107 var endFn = doEnd ? onend : cleanup;
12108 if (state.endEmitted)
12109 process.nextTick(endFn);
12110 else
12111 src.once('end', endFn);
12112
12113 dest.on('unpipe', onunpipe);
12114 function onunpipe(readable) {
12115 debug('onunpipe');
12116 if (readable === src) {
12117 cleanup();
12118 }
12119 }
12120
12121 function onend() {
12122 debug('onend');
12123 dest.end();
12124 }
12125
12126 // when the dest drains, it reduces the awaitDrain counter
12127 // on the source. This would be more elegant with a .once()
12128 // handler in flow(), but adding and removing repeatedly is
12129 // too slow.
12130 var ondrain = pipeOnDrain(src);
12131 dest.on('drain', ondrain);
12132
12133 function cleanup() {
12134 debug('cleanup');
12135 // cleanup event handlers once the pipe is broken
12136 dest.removeListener('close', onclose);
12137 dest.removeListener('finish', onfinish);
12138 dest.removeListener('drain', ondrain);
12139 dest.removeListener('error', onerror);
12140 dest.removeListener('unpipe', onunpipe);
12141 src.removeListener('end', onend);
12142 src.removeListener('end', cleanup);
12143 src.removeListener('data', ondata);
12144
12145 // if the reader is waiting for a drain event from this
12146 // specific writer, then it would cause it to never start
12147 // flowing again.
12148 // So, if this is awaiting a drain, then we just call it now.
12149 // If we don't know, then assume that we are waiting for one.
12150 if (state.awaitDrain &&
12151 (!dest._writableState || dest._writableState.needDrain))
12152 ondrain();
12153 }
12154
12155 src.on('data', ondata);
12156 function ondata(chunk) {
12157 debug('ondata');
12158 var ret = dest.write(chunk);
12159 if (false === ret) {
12160 debug('false write response, pause',
12161 src._readableState.awaitDrain);
12162 src._readableState.awaitDrain++;
12163 src.pause();
12164 }
12165 }
12166
12167 // if the dest has an error, then stop piping into it.
12168 // however, don't suppress the throwing behavior for this.
12169 function onerror(er) {
12170 debug('onerror', er);
12171 unpipe();
12172 dest.removeListener('error', onerror);
12173 if (EE.listenerCount(dest, 'error') === 0)
12174 dest.emit('error', er);
12175 }
12176 // This is a brutally ugly hack to make sure that our error handler
12177 // is attached before any userland ones. NEVER DO THIS.
12178 if (!dest._events || !dest._events.error)
12179 dest.on('error', onerror);
12180 else if (isArray(dest._events.error))
12181 dest._events.error.unshift(onerror);
12182 else
12183 dest._events.error = [onerror, dest._events.error];
12184
12185
12186
12187 // Both close and finish should trigger unpipe, but only once.
12188 function onclose() {
12189 dest.removeListener('finish', onfinish);
12190 unpipe();
12191 }
12192 dest.once('close', onclose);
12193 function onfinish() {
12194 debug('onfinish');
12195 dest.removeListener('close', onclose);
12196 unpipe();
12197 }
12198 dest.once('finish', onfinish);
12199
12200 function unpipe() {
12201 debug('unpipe');
12202 src.unpipe(dest);
12203 }
12204
12205 // tell the dest that it's being piped to
12206 dest.emit('pipe', src);
12207
12208 // start the flow if it hasn't been started already.
12209 if (!state.flowing) {
12210 debug('pipe resume');
12211 src.resume();
12212 }
12213
12214 return dest;
12215 };
12216
12217 function pipeOnDrain(src) {
12218 return function() {
12219 var state = src._readableState;
12220 debug('pipeOnDrain', state.awaitDrain);
12221 if (state.awaitDrain)
12222 state.awaitDrain--;
12223 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12224 state.flowing = true;
12225 flow(src);
12226 }
12227 };
12228 }
12229
12230
12231 Readable.prototype.unpipe = function(dest) {
12232 var state = this._readableState;
12233
12234 // if we're not piping anywhere, then do nothing.
12235 if (state.pipesCount === 0)
12236 return this;
12237
12238 // just one destination. most common case.
12239 if (state.pipesCount === 1) {
12240 // passed in one, but it's not the right one.
12241 if (dest && dest !== state.pipes)
12242 return this;
12243
12244 if (!dest)
12245 dest = state.pipes;
12246
12247 // got a match.
12248 state.pipes = null;
12249 state.pipesCount = 0;
12250 state.flowing = false;
12251 if (dest)
12252 dest.emit('unpipe', this);
12253 return this;
12254 }
12255
12256 // slow case. multiple pipe destinations.
12257
12258 if (!dest) {
12259 // remove all.
12260 var dests = state.pipes;
12261 var len = state.pipesCount;
12262 state.pipes = null;
12263 state.pipesCount = 0;
12264 state.flowing = false;
12265
12266 for (var i = 0; i < len; i++)
12267 dests[i].emit('unpipe', this);
12268 return this;
12269 }
12270
12271 // try to find the right one.
12272 var i = indexOf(state.pipes, dest);
12273 if (i === -1)
12274 return this;
12275
12276 state.pipes.splice(i, 1);
12277 state.pipesCount -= 1;
12278 if (state.pipesCount === 1)
12279 state.pipes = state.pipes[0];
12280
12281 dest.emit('unpipe', this);
12282
12283 return this;
12284 };
12285
12286 // set up data events if they are asked for
12287 // Ensure readable listeners eventually get something
12288 Readable.prototype.on = function(ev, fn) {
12289 var res = Stream.prototype.on.call(this, ev, fn);
12290
12291 // If listening to data, and it has not explicitly been paused,
12292 // then call resume to start the flow of data on the next tick.
12293 if (ev === 'data' && false !== this._readableState.flowing) {
12294 this.resume();
12295 }
12296
12297 if (ev === 'readable' && this.readable) {
12298 var state = this._readableState;
12299 if (!state.readableListening) {
12300 state.readableListening = true;
12301 state.emittedReadable = false;
12302 state.needReadable = true;
12303 if (!state.reading) {
12304 var self = this;
12305 process.nextTick(function() {
12306 debug('readable nexttick read 0');
12307 self.read(0);
12308 });
12309 } else if (state.length) {
12310 emitReadable(this, state);
12311 }
12312 }
12313 }
12314
12315 return res;
12316 };
12317 Readable.prototype.addListener = Readable.prototype.on;
12318
12319 // pause() and resume() are remnants of the legacy readable stream API
12320 // If the user uses them, then switch into old mode.
12321 Readable.prototype.resume = function() {
12322 var state = this._readableState;
12323 if (!state.flowing) {
12324 debug('resume');
12325 state.flowing = true;
12326 if (!state.reading) {
12327 debug('resume read 0');
12328 this.read(0);
12329 }
12330 resume(this, state);
12331 }
12332 return this;
12333 };
12334
12335 function resume(stream, state) {
12336 if (!state.resumeScheduled) {
12337 state.resumeScheduled = true;
12338 process.nextTick(function() {
12339 resume_(stream, state);
12340 });
12341 }
12342 }
12343
12344 function resume_(stream, state) {
12345 state.resumeScheduled = false;
12346 stream.emit('resume');
12347 flow(stream);
12348 if (state.flowing && !state.reading)
12349 stream.read(0);
12350 }
12351
12352 Readable.prototype.pause = function() {
12353 debug('call pause flowing=%j', this._readableState.flowing);
12354 if (false !== this._readableState.flowing) {
12355 debug('pause');
12356 this._readableState.flowing = false;
12357 this.emit('pause');
12358 }
12359 return this;
12360 };
12361
12362 function flow(stream) {
12363 var state = stream._readableState;
12364 debug('flow', state.flowing);
12365 if (state.flowing) {
12366 do {
12367 var chunk = stream.read();
12368 } while (null !== chunk && state.flowing);
12369 }
12370 }
12371
12372 // wrap an old-style stream as the async data source.
12373 // This is *not* part of the readable stream interface.
12374 // It is an ugly unfortunate mess of history.
12375 Readable.prototype.wrap = function(stream) {
12376 var state = this._readableState;
12377 var paused = false;
12378
12379 var self = this;
12380 stream.on('end', function() {
12381 debug('wrapped end');
12382 if (state.decoder && !state.ended) {
12383 var chunk = state.decoder.end();
12384 if (chunk && chunk.length)
12385 self.push(chunk);
12386 }
12387
12388 self.push(null);
12389 });
12390
12391 stream.on('data', function(chunk) {
12392 debug('wrapped data');
12393 if (state.decoder)
12394 chunk = state.decoder.write(chunk);
12395 if (!chunk || !state.objectMode && !chunk.length)
12396 return;
12397
12398 var ret = self.push(chunk);
12399 if (!ret) {
12400 paused = true;
12401 stream.pause();
12402 }
12403 });
12404
12405 // proxy all the other methods.
12406 // important when wrapping filters and duplexes.
12407 for (var i in stream) {
12408 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12409 this[i] = function(method) { return function() {
12410 return stream[method].apply(stream, arguments);
12411 }}(i);
12412 }
12413 }
12414
12415 // proxy certain important events.
12416 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12417 forEach(events, function(ev) {
12418 stream.on(ev, self.emit.bind(self, ev));
12419 });
12420
12421 // when we try to consume some more bytes, simply unpause the
12422 // underlying stream.
12423 self._read = function(n) {
12424 debug('wrapped _read', n);
12425 if (paused) {
12426 paused = false;
12427 stream.resume();
12428 }
12429 };
12430
12431 return self;
12432 };
12433
12434
12435
12436 // exposed for testing purposes only.
12437 Readable._fromList = fromList;
12438
12439 // Pluck off n bytes from an array of buffers.
12440 // Length is the combined lengths of all the buffers in the list.
12441 function fromList(n, state) {
12442 var list = state.buffer;
12443 var length = state.length;
12444 var stringMode = !!state.decoder;
12445 var objectMode = !!state.objectMode;
12446 var ret;
12447
12448 // nothing in the list, definitely empty.
12449 if (list.length === 0)
12450 return null;
12451
12452 if (length === 0)
12453 ret = null;
12454 else if (objectMode)
12455 ret = list.shift();
12456 else if (!n || n >= length) {
12457 // read it all, truncate the array.
12458 if (stringMode)
12459 ret = list.join('');
12460 else
12461 ret = Buffer.concat(list, length);
12462 list.length = 0;
12463 } else {
12464 // read just some of it.
12465 if (n < list[0].length) {
12466 // just take a part of the first list item.
12467 // slice is the same for buffers and strings.
12468 var buf = list[0];
12469 ret = buf.slice(0, n);
12470 list[0] = buf.slice(n);
12471 } else if (n === list[0].length) {
12472 // first list is a perfect match
12473 ret = list.shift();
12474 } else {
12475 // complex case.
12476 // we have enough to cover it, but it spans past the first buffer.
12477 if (stringMode)
12478 ret = '';
12479 else
12480 ret = new Buffer(n);
12481
12482 var c = 0;
12483 for (var i = 0, l = list.length; i < l && c < n; i++) {
12484 var buf = list[0];
12485 var cpy = Math.min(n - c, buf.length);
12486
12487 if (stringMode)
12488 ret += buf.slice(0, cpy);
12489 else
12490 buf.copy(ret, c, 0, cpy);
12491
12492 if (cpy < buf.length)
12493 list[0] = buf.slice(cpy);
12494 else
12495 list.shift();
12496
12497 c += cpy;
12498 }
12499 }
12500 }
12501
12502 return ret;
12503 }
12504
12505 function endReadable(stream) {
12506 var state = stream._readableState;
12507
12508 // If we get here before consuming all the bytes, then that is a
12509 // bug in node. Should never happen.
12510 if (state.length > 0)
12511 throw new Error('endReadable called on non-empty stream');
12512
12513 if (!state.endEmitted) {
12514 state.ended = true;
12515 process.nextTick(function() {
12516 // Check that we didn't get one last unshift.
12517 if (!state.endEmitted && state.length === 0) {
12518 state.endEmitted = true;
12519 stream.readable = false;
12520 stream.emit('end');
12521 }
12522 });
12523 }
12524 }
12525
12526 function forEach (xs, f) {
12527 for (var i = 0, l = xs.length; i < l; i++) {
12528 f(xs[i], i);
12529 }
12530 }
12531
12532 function indexOf (xs, x) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 if (xs[i] === x) return i;
12535 }
12536 return -1;
12537 }
12538
12539 }).call(this,require('_process'))
12540 },{"./_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){
12541 // Copyright Joyent, Inc. and other Node contributors.
12542 //
12543 // Permission is hereby granted, free of charge, to any person obtaining a
12544 // copy of this software and associated documentation files (the
12545 // "Software"), to deal in the Software without restriction, including
12546 // without limitation the rights to use, copy, modify, merge, publish,
12547 // distribute, sublicense, and/or sell copies of the Software, and to permit
12548 // persons to whom the Software is furnished to do so, subject to the
12549 // following conditions:
12550 //
12551 // The above copyright notice and this permission notice shall be included
12552 // in all copies or substantial portions of the Software.
12553 //
12554 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12555 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12556 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12557 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12558 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12559 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12560 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12561
12562
12563 // a transform stream is a readable/writable stream where you do
12564 // something with the data. Sometimes it's called a "filter",
12565 // but that's not a great name for it, since that implies a thing where
12566 // some bits pass through, and others are simply ignored. (That would
12567 // be a valid example of a transform, of course.)
12568 //
12569 // While the output is causally related to the input, it's not a
12570 // necessarily symmetric or synchronous transformation. For example,
12571 // a zlib stream might take multiple plain-text writes(), and then
12572 // emit a single compressed chunk some time in the future.
12573 //
12574 // Here's how this works:
12575 //
12576 // The Transform stream has all the aspects of the readable and writable
12577 // stream classes. When you write(chunk), that calls _write(chunk,cb)
12578 // internally, and returns false if there's a lot of pending writes
12579 // buffered up. When you call read(), that calls _read(n) until
12580 // there's enough pending readable data buffered up.
12581 //
12582 // In a transform stream, the written data is placed in a buffer. When
12583 // _read(n) is called, it transforms the queued up data, calling the
12584 // buffered _write cb's as it consumes chunks. If consuming a single
12585 // written chunk would result in multiple output chunks, then the first
12586 // outputted bit calls the readcb, and subsequent chunks just go into
12587 // the read buffer, and will cause it to emit 'readable' if necessary.
12588 //
12589 // This way, back-pressure is actually determined by the reading side,
12590 // since _read has to be called to start processing a new chunk. However,
12591 // a pathological inflate type of transform can cause excessive buffering
12592 // here. For example, imagine a stream where every byte of input is
12593 // interpreted as an integer from 0-255, and then results in that many
12594 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12595 // 1kb of data being output. In this case, you could write a very small
12596 // amount of input, and end up with a very large amount of output. In
12597 // such a pathological inflating mechanism, there'd be no way to tell
12598 // the system to stop doing the transform. A single 4MB write could
12599 // cause the system to run out of memory.
12600 //
12601 // However, even in such a pathological case, only a single written chunk
12602 // would be consumed, and then the rest would wait (un-transformed) until
12603 // the results of the previous transformed chunk were consumed.
12604
12605 module.exports = Transform;
12606
12607 var Duplex = require('./_stream_duplex');
12608
12609 /*<replacement>*/
12610 var util = require('core-util-is');
12611 util.inherits = require('inherits');
12612 /*</replacement>*/
12613
12614 util.inherits(Transform, Duplex);
12615
12616
12617 function TransformState(options, stream) {
12618 this.afterTransform = function(er, data) {
12619 return afterTransform(stream, er, data);
12620 };
12621
12622 this.needTransform = false;
12623 this.transforming = false;
12624 this.writecb = null;
12625 this.writechunk = null;
12626 }
12627
12628 function afterTransform(stream, er, data) {
12629 var ts = stream._transformState;
12630 ts.transforming = false;
12631
12632 var cb = ts.writecb;
12633
12634 if (!cb)
12635 return stream.emit('error', new Error('no writecb in Transform class'));
12636
12637 ts.writechunk = null;
12638 ts.writecb = null;
12639
12640 if (!util.isNullOrUndefined(data))
12641 stream.push(data);
12642
12643 if (cb)
12644 cb(er);
12645
12646 var rs = stream._readableState;
12647 rs.reading = false;
12648 if (rs.needReadable || rs.length < rs.highWaterMark) {
12649 stream._read(rs.highWaterMark);
12650 }
12651 }
12652
12653
12654 function Transform(options) {
12655 if (!(this instanceof Transform))
12656 return new Transform(options);
12657
12658 Duplex.call(this, options);
12659
12660 this._transformState = new TransformState(options, this);
12661
12662 // when the writable side finishes, then flush out anything remaining.
12663 var stream = this;
12664
12665 // start out asking for a readable event once data is transformed.
12666 this._readableState.needReadable = true;
12667
12668 // we have implemented the _read method, and done the other things
12669 // that Readable wants before the first _read call, so unset the
12670 // sync guard flag.
12671 this._readableState.sync = false;
12672
12673 this.once('prefinish', function() {
12674 if (util.isFunction(this._flush))
12675 this._flush(function(er) {
12676 done(stream, er);
12677 });
12678 else
12679 done(stream);
12680 });
12681 }
12682
12683 Transform.prototype.push = function(chunk, encoding) {
12684 this._transformState.needTransform = false;
12685 return Duplex.prototype.push.call(this, chunk, encoding);
12686 };
12687
12688 // This is the part where you do stuff!
12689 // override this function in implementation classes.
12690 // 'chunk' is an input chunk.
12691 //
12692 // Call `push(newChunk)` to pass along transformed output
12693 // to the readable side. You may call 'push' zero or more times.
12694 //
12695 // Call `cb(err)` when you are done with this chunk. If you pass
12696 // an error, then that'll put the hurt on the whole operation. If you
12697 // never call cb(), then you'll never get another chunk.
12698 Transform.prototype._transform = function(chunk, encoding, cb) {
12699 throw new Error('not implemented');
12700 };
12701
12702 Transform.prototype._write = function(chunk, encoding, cb) {
12703 var ts = this._transformState;
12704 ts.writecb = cb;
12705 ts.writechunk = chunk;
12706 ts.writeencoding = encoding;
12707 if (!ts.transforming) {
12708 var rs = this._readableState;
12709 if (ts.needTransform ||
12710 rs.needReadable ||
12711 rs.length < rs.highWaterMark)
12712 this._read(rs.highWaterMark);
12713 }
12714 };
12715
12716 // Doesn't matter what the args are here.
12717 // _transform does all the work.
12718 // That we got here means that the readable side wants more data.
12719 Transform.prototype._read = function(n) {
12720 var ts = this._transformState;
12721
12722 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12723 ts.transforming = true;
12724 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12725 } else {
12726 // mark that we need a transform, so that any data that comes in
12727 // will get processed, now that we've asked for it.
12728 ts.needTransform = true;
12729 }
12730 };
12731
12732
12733 function done(stream, er) {
12734 if (er)
12735 return stream.emit('error', er);
12736
12737 // if there's nothing in the write buffer, then that means
12738 // that nothing more will ever be provided
12739 var ws = stream._writableState;
12740 var ts = stream._transformState;
12741
12742 if (ws.length)
12743 throw new Error('calling transform done when ws.length != 0');
12744
12745 if (ts.transforming)
12746 throw new Error('calling transform done when still transforming');
12747
12748 return stream.push(null);
12749 }
12750
12751 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12752 (function (process){
12753 // Copyright Joyent, Inc. and other Node contributors.
12754 //
12755 // Permission is hereby granted, free of charge, to any person obtaining a
12756 // copy of this software and associated documentation files (the
12757 // "Software"), to deal in the Software without restriction, including
12758 // without limitation the rights to use, copy, modify, merge, publish,
12759 // distribute, sublicense, and/or sell copies of the Software, and to permit
12760 // persons to whom the Software is furnished to do so, subject to the
12761 // following conditions:
12762 //
12763 // The above copyright notice and this permission notice shall be included
12764 // in all copies or substantial portions of the Software.
12765 //
12766 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12767 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12768 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12769 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12770 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12771 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12772 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12773
12774 // A bit simpler than readable streams.
12775 // Implement an async ._write(chunk, cb), and it'll handle all
12776 // the drain event emission and buffering.
12777
12778 module.exports = Writable;
12779
12780 /*<replacement>*/
12781 var Buffer = require('buffer').Buffer;
12782 /*</replacement>*/
12783
12784 Writable.WritableState = WritableState;
12785
12786
12787 /*<replacement>*/
12788 var util = require('core-util-is');
12789 util.inherits = require('inherits');
12790 /*</replacement>*/
12791
12792 var Stream = require('stream');
12793
12794 util.inherits(Writable, Stream);
12795
12796 function WriteReq(chunk, encoding, cb) {
12797 this.chunk = chunk;
12798 this.encoding = encoding;
12799 this.callback = cb;
12800 }
12801
12802 function WritableState(options, stream) {
12803 var Duplex = require('./_stream_duplex');
12804
12805 options = options || {};
12806
12807 // the point at which write() starts returning false
12808 // Note: 0 is a valid value, means that we always return false if
12809 // the entire buffer is not flushed immediately on write()
12810 var hwm = options.highWaterMark;
12811 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12812 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12813
12814 // object stream flag to indicate whether or not this stream
12815 // contains buffers or objects.
12816 this.objectMode = !!options.objectMode;
12817
12818 if (stream instanceof Duplex)
12819 this.objectMode = this.objectMode || !!options.writableObjectMode;
12820
12821 // cast to ints.
12822 this.highWaterMark = ~~this.highWaterMark;
12823
12824 this.needDrain = false;
12825 // at the start of calling end()
12826 this.ending = false;
12827 // when end() has been called, and returned
12828 this.ended = false;
12829 // when 'finish' is emitted
12830 this.finished = false;
12831
12832 // should we decode strings into buffers before passing to _write?
12833 // this is here so that some node-core streams can optimize string
12834 // handling at a lower level.
12835 var noDecode = options.decodeStrings === false;
12836 this.decodeStrings = !noDecode;
12837
12838 // Crypto is kind of old and crusty. Historically, its default string
12839 // encoding is 'binary' so we have to make this configurable.
12840 // Everything else in the universe uses 'utf8', though.
12841 this.defaultEncoding = options.defaultEncoding || 'utf8';
12842
12843 // not an actual buffer we keep track of, but a measurement
12844 // of how much we're waiting to get pushed to some underlying
12845 // socket or file.
12846 this.length = 0;
12847
12848 // a flag to see when we're in the middle of a write.
12849 this.writing = false;
12850
12851 // when true all writes will be buffered until .uncork() call
12852 this.corked = 0;
12853
12854 // a flag to be able to tell if the onwrite cb is called immediately,
12855 // or on a later tick. We set this to true at first, because any
12856 // actions that shouldn't happen until "later" should generally also
12857 // not happen before the first write call.
12858 this.sync = true;
12859
12860 // a flag to know if we're processing previously buffered items, which
12861 // may call the _write() callback in the same tick, so that we don't
12862 // end up in an overlapped onwrite situation.
12863 this.bufferProcessing = false;
12864
12865 // the callback that's passed to _write(chunk,cb)
12866 this.onwrite = function(er) {
12867 onwrite(stream, er);
12868 };
12869
12870 // the callback that the user supplies to write(chunk,encoding,cb)
12871 this.writecb = null;
12872
12873 // the amount that is being written when _write is called.
12874 this.writelen = 0;
12875
12876 this.buffer = [];
12877
12878 // number of pending user-supplied write callbacks
12879 // this must be 0 before 'finish' can be emitted
12880 this.pendingcb = 0;
12881
12882 // emit prefinish if the only thing we're waiting for is _write cbs
12883 // This is relevant for synchronous Transform streams
12884 this.prefinished = false;
12885
12886 // True if the error was already emitted and should not be thrown again
12887 this.errorEmitted = false;
12888 }
12889
12890 function Writable(options) {
12891 var Duplex = require('./_stream_duplex');
12892
12893 // Writable ctor is applied to Duplexes, though they're not
12894 // instanceof Writable, they're instanceof Readable.
12895 if (!(this instanceof Writable) && !(this instanceof Duplex))
12896 return new Writable(options);
12897
12898 this._writableState = new WritableState(options, this);
12899
12900 // legacy.
12901 this.writable = true;
12902
12903 Stream.call(this);
12904 }
12905
12906 // Otherwise people can pipe Writable streams, which is just wrong.
12907 Writable.prototype.pipe = function() {
12908 this.emit('error', new Error('Cannot pipe. Not readable.'));
12909 };
12910
12911
12912 function writeAfterEnd(stream, state, cb) {
12913 var er = new Error('write after end');
12914 // TODO: defer error events consistently everywhere, not just the cb
12915 stream.emit('error', er);
12916 process.nextTick(function() {
12917 cb(er);
12918 });
12919 }
12920
12921 // If we get something that is not a buffer, string, null, or undefined,
12922 // and we're not in objectMode, then that's an error.
12923 // Otherwise stream chunks are all considered to be of length=1, and the
12924 // watermarks determine how many objects to keep in the buffer, rather than
12925 // how many bytes or characters.
12926 function validChunk(stream, state, chunk, cb) {
12927 var valid = true;
12928 if (!util.isBuffer(chunk) &&
12929 !util.isString(chunk) &&
12930 !util.isNullOrUndefined(chunk) &&
12931 !state.objectMode) {
12932 var er = new TypeError('Invalid non-string/buffer chunk');
12933 stream.emit('error', er);
12934 process.nextTick(function() {
12935 cb(er);
12936 });
12937 valid = false;
12938 }
12939 return valid;
12940 }
12941
12942 Writable.prototype.write = function(chunk, encoding, cb) {
12943 var state = this._writableState;
12944 var ret = false;
12945
12946 if (util.isFunction(encoding)) {
12947 cb = encoding;
12948 encoding = null;
12949 }
12950
12951 if (util.isBuffer(chunk))
12952 encoding = 'buffer';
12953 else if (!encoding)
12954 encoding = state.defaultEncoding;
12955
12956 if (!util.isFunction(cb))
12957 cb = function() {};
12958
12959 if (state.ended)
12960 writeAfterEnd(this, state, cb);
12961 else if (validChunk(this, state, chunk, cb)) {
12962 state.pendingcb++;
12963 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12964 }
12965
12966 return ret;
12967 };
12968
12969 Writable.prototype.cork = function() {
12970 var state = this._writableState;
12971
12972 state.corked++;
12973 };
12974
12975 Writable.prototype.uncork = function() {
12976 var state = this._writableState;
12977
12978 if (state.corked) {
12979 state.corked--;
12980
12981 if (!state.writing &&
12982 !state.corked &&
12983 !state.finished &&
12984 !state.bufferProcessing &&
12985 state.buffer.length)
12986 clearBuffer(this, state);
12987 }
12988 };
12989
12990 function decodeChunk(state, chunk, encoding) {
12991 if (!state.objectMode &&
12992 state.decodeStrings !== false &&
12993 util.isString(chunk)) {
12994 chunk = new Buffer(chunk, encoding);
12995 }
12996 return chunk;
12997 }
12998
12999 // if we're already writing something, then just put this
13000 // in the queue, and wait our turn. Otherwise, call _write
13001 // If we return false, then we need a drain event, so set that flag.
13002 function writeOrBuffer(stream, state, chunk, encoding, cb) {
13003 chunk = decodeChunk(state, chunk, encoding);
13004 if (util.isBuffer(chunk))
13005 encoding = 'buffer';
13006 var len = state.objectMode ? 1 : chunk.length;
13007
13008 state.length += len;
13009
13010 var ret = state.length < state.highWaterMark;
13011 // we must ensure that previous needDrain will not be reset to false.
13012 if (!ret)
13013 state.needDrain = true;
13014
13015 if (state.writing || state.corked)
13016 state.buffer.push(new WriteReq(chunk, encoding, cb));
13017 else
13018 doWrite(stream, state, false, len, chunk, encoding, cb);
13019
13020 return ret;
13021 }
13022
13023 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13024 state.writelen = len;
13025 state.writecb = cb;
13026 state.writing = true;
13027 state.sync = true;
13028 if (writev)
13029 stream._writev(chunk, state.onwrite);
13030 else
13031 stream._write(chunk, encoding, state.onwrite);
13032 state.sync = false;
13033 }
13034
13035 function onwriteError(stream, state, sync, er, cb) {
13036 if (sync)
13037 process.nextTick(function() {
13038 state.pendingcb--;
13039 cb(er);
13040 });
13041 else {
13042 state.pendingcb--;
13043 cb(er);
13044 }
13045
13046 stream._writableState.errorEmitted = true;
13047 stream.emit('error', er);
13048 }
13049
13050 function onwriteStateUpdate(state) {
13051 state.writing = false;
13052 state.writecb = null;
13053 state.length -= state.writelen;
13054 state.writelen = 0;
13055 }
13056
13057 function onwrite(stream, er) {
13058 var state = stream._writableState;
13059 var sync = state.sync;
13060 var cb = state.writecb;
13061
13062 onwriteStateUpdate(state);
13063
13064 if (er)
13065 onwriteError(stream, state, sync, er, cb);
13066 else {
13067 // Check if we're actually ready to finish, but don't emit yet
13068 var finished = needFinish(stream, state);
13069
13070 if (!finished &&
13071 !state.corked &&
13072 !state.bufferProcessing &&
13073 state.buffer.length) {
13074 clearBuffer(stream, state);
13075 }
13076
13077 if (sync) {
13078 process.nextTick(function() {
13079 afterWrite(stream, state, finished, cb);
13080 });
13081 } else {
13082 afterWrite(stream, state, finished, cb);
13083 }
13084 }
13085 }
13086
13087 function afterWrite(stream, state, finished, cb) {
13088 if (!finished)
13089 onwriteDrain(stream, state);
13090 state.pendingcb--;
13091 cb();
13092 finishMaybe(stream, state);
13093 }
13094
13095 // Must force callback to be called on nextTick, so that we don't
13096 // emit 'drain' before the write() consumer gets the 'false' return
13097 // value, and has a chance to attach a 'drain' listener.
13098 function onwriteDrain(stream, state) {
13099 if (state.length === 0 && state.needDrain) {
13100 state.needDrain = false;
13101 stream.emit('drain');
13102 }
13103 }
13104
13105
13106 // if there's something in the buffer waiting, then process it
13107 function clearBuffer(stream, state) {
13108 state.bufferProcessing = true;
13109
13110 if (stream._writev && state.buffer.length > 1) {
13111 // Fast case, write everything using _writev()
13112 var cbs = [];
13113 for (var c = 0; c < state.buffer.length; c++)
13114 cbs.push(state.buffer[c].callback);
13115
13116 // count the one we are adding, as well.
13117 // TODO(isaacs) clean this up
13118 state.pendingcb++;
13119 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13120 for (var i = 0; i < cbs.length; i++) {
13121 state.pendingcb--;
13122 cbs[i](err);
13123 }
13124 });
13125
13126 // Clear buffer
13127 state.buffer = [];
13128 } else {
13129 // Slow case, write chunks one-by-one
13130 for (var c = 0; c < state.buffer.length; c++) {
13131 var entry = state.buffer[c];
13132 var chunk = entry.chunk;
13133 var encoding = entry.encoding;
13134 var cb = entry.callback;
13135 var len = state.objectMode ? 1 : chunk.length;
13136
13137 doWrite(stream, state, false, len, chunk, encoding, cb);
13138
13139 // if we didn't call the onwrite immediately, then
13140 // it means that we need to wait until it does.
13141 // also, that means that the chunk and cb are currently
13142 // being processed, so move the buffer counter past them.
13143 if (state.writing) {
13144 c++;
13145 break;
13146 }
13147 }
13148
13149 if (c < state.buffer.length)
13150 state.buffer = state.buffer.slice(c);
13151 else
13152 state.buffer.length = 0;
13153 }
13154
13155 state.bufferProcessing = false;
13156 }
13157
13158 Writable.prototype._write = function(chunk, encoding, cb) {
13159 cb(new Error('not implemented'));
13160
13161 };
13162
13163 Writable.prototype._writev = null;
13164
13165 Writable.prototype.end = function(chunk, encoding, cb) {
13166 var state = this._writableState;
13167
13168 if (util.isFunction(chunk)) {
13169 cb = chunk;
13170 chunk = null;
13171 encoding = null;
13172 } else if (util.isFunction(encoding)) {
13173 cb = encoding;
13174 encoding = null;
13175 }
13176
13177 if (!util.isNullOrUndefined(chunk))
13178 this.write(chunk, encoding);
13179
13180 // .end() fully uncorks
13181 if (state.corked) {
13182 state.corked = 1;
13183 this.uncork();
13184 }
13185
13186 // ignore unnecessary end() calls.
13187 if (!state.ending && !state.finished)
13188 endWritable(this, state, cb);
13189 };
13190
13191
13192 function needFinish(stream, state) {
13193 return (state.ending &&
13194 state.length === 0 &&
13195 !state.finished &&
13196 !state.writing);
13197 }
13198
13199 function prefinish(stream, state) {
13200 if (!state.prefinished) {
13201 state.prefinished = true;
13202 stream.emit('prefinish');
13203 }
13204 }
13205
13206 function finishMaybe(stream, state) {
13207 var need = needFinish(stream, state);
13208 if (need) {
13209 if (state.pendingcb === 0) {
13210 prefinish(stream, state);
13211 state.finished = true;
13212 stream.emit('finish');
13213 } else
13214 prefinish(stream, state);
13215 }
13216 return need;
13217 }
13218
13219 function endWritable(stream, state, cb) {
13220 state.ending = true;
13221 finishMaybe(stream, state);
13222 if (cb) {
13223 if (state.finished)
13224 process.nextTick(cb);
13225 else
13226 stream.once('finish', cb);
13227 }
13228 state.ended = true;
13229 }
13230
13231 }).call(this,require('_process'))
13232 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13233 (function (Buffer){
13234 // Copyright Joyent, Inc. and other Node contributors.
13235 //
13236 // Permission is hereby granted, free of charge, to any person obtaining a
13237 // copy of this software and associated documentation files (the
13238 // "Software"), to deal in the Software without restriction, including
13239 // without limitation the rights to use, copy, modify, merge, publish,
13240 // distribute, sublicense, and/or sell copies of the Software, and to permit
13241 // persons to whom the Software is furnished to do so, subject to the
13242 // following conditions:
13243 //
13244 // The above copyright notice and this permission notice shall be included
13245 // in all copies or substantial portions of the Software.
13246 //
13247 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13248 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13249 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13250 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13251 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13252 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13253 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13254
13255 // NOTE: These type checking functions intentionally don't use `instanceof`
13256 // because it is fragile and can be easily faked with `Object.create()`.
13257 function isArray(ar) {
13258 return Array.isArray(ar);
13259 }
13260 exports.isArray = isArray;
13261
13262 function isBoolean(arg) {
13263 return typeof arg === 'boolean';
13264 }
13265 exports.isBoolean = isBoolean;
13266
13267 function isNull(arg) {
13268 return arg === null;
13269 }
13270 exports.isNull = isNull;
13271
13272 function isNullOrUndefined(arg) {
13273 return arg == null;
13274 }
13275 exports.isNullOrUndefined = isNullOrUndefined;
13276
13277 function isNumber(arg) {
13278 return typeof arg === 'number';
13279 }
13280 exports.isNumber = isNumber;
13281
13282 function isString(arg) {
13283 return typeof arg === 'string';
13284 }
13285 exports.isString = isString;
13286
13287 function isSymbol(arg) {
13288 return typeof arg === 'symbol';
13289 }
13290 exports.isSymbol = isSymbol;
13291
13292 function isUndefined(arg) {
13293 return arg === void 0;
13294 }
13295 exports.isUndefined = isUndefined;
13296
13297 function isRegExp(re) {
13298 return isObject(re) && objectToString(re) === '[object RegExp]';
13299 }
13300 exports.isRegExp = isRegExp;
13301
13302 function isObject(arg) {
13303 return typeof arg === 'object' && arg !== null;
13304 }
13305 exports.isObject = isObject;
13306
13307 function isDate(d) {
13308 return isObject(d) && objectToString(d) === '[object Date]';
13309 }
13310 exports.isDate = isDate;
13311
13312 function isError(e) {
13313 return isObject(e) &&
13314 (objectToString(e) === '[object Error]' || e instanceof Error);
13315 }
13316 exports.isError = isError;
13317
13318 function isFunction(arg) {
13319 return typeof arg === 'function';
13320 }
13321 exports.isFunction = isFunction;
13322
13323 function isPrimitive(arg) {
13324 return arg === null ||
13325 typeof arg === 'boolean' ||
13326 typeof arg === 'number' ||
13327 typeof arg === 'string' ||
13328 typeof arg === 'symbol' || // ES6 symbol
13329 typeof arg === 'undefined';
13330 }
13331 exports.isPrimitive = isPrimitive;
13332
13333 function isBuffer(arg) {
13334 return Buffer.isBuffer(arg);
13335 }
13336 exports.isBuffer = isBuffer;
13337
13338 function objectToString(o) {
13339 return Object.prototype.toString.call(o);
13340 }
13341 }).call(this,require("buffer").Buffer)
13342 },{"buffer":7}],22:[function(require,module,exports){
13343 module.exports = require("./lib/_stream_passthrough.js")
13344
13345 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13346 exports = module.exports = require('./lib/_stream_readable.js');
13347 exports.Stream = require('stream');
13348 exports.Readable = exports;
13349 exports.Writable = require('./lib/_stream_writable.js');
13350 exports.Duplex = require('./lib/_stream_duplex.js');
13351 exports.Transform = require('./lib/_stream_transform.js');
13352 exports.PassThrough = require('./lib/_stream_passthrough.js');
13353
13354 },{"./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){
13355 module.exports = require("./lib/_stream_transform.js")
13356
13357 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13358 module.exports = require("./lib/_stream_writable.js")
13359
13360 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13361 // Copyright Joyent, Inc. and other Node contributors.
13362 //
13363 // Permission is hereby granted, free of charge, to any person obtaining a
13364 // copy of this software and associated documentation files (the
13365 // "Software"), to deal in the Software without restriction, including
13366 // without limitation the rights to use, copy, modify, merge, publish,
13367 // distribute, sublicense, and/or sell copies of the Software, and to permit
13368 // persons to whom the Software is furnished to do so, subject to the
13369 // following conditions:
13370 //
13371 // The above copyright notice and this permission notice shall be included
13372 // in all copies or substantial portions of the Software.
13373 //
13374 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13375 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13376 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13377 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13378 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13379 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13380 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13381
13382 module.exports = Stream;
13383
13384 var EE = require('events').EventEmitter;
13385 var inherits = require('inherits');
13386
13387 inherits(Stream, EE);
13388 Stream.Readable = require('readable-stream/readable.js');
13389 Stream.Writable = require('readable-stream/writable.js');
13390 Stream.Duplex = require('readable-stream/duplex.js');
13391 Stream.Transform = require('readable-stream/transform.js');
13392 Stream.PassThrough = require('readable-stream/passthrough.js');
13393
13394 // Backwards-compat with node 0.4.x
13395 Stream.Stream = Stream;
13396
13397
13398
13399 // old-style streams. Note that the pipe method (the only relevant
13400 // part of this class) is overridden in the Readable class.
13401
13402 function Stream() {
13403 EE.call(this);
13404 }
13405
13406 Stream.prototype.pipe = function(dest, options) {
13407 var source = this;
13408
13409 function ondata(chunk) {
13410 if (dest.writable) {
13411 if (false === dest.write(chunk) && source.pause) {
13412 source.pause();
13413 }
13414 }
13415 }
13416
13417 source.on('data', ondata);
13418
13419 function ondrain() {
13420 if (source.readable && source.resume) {
13421 source.resume();
13422 }
13423 }
13424
13425 dest.on('drain', ondrain);
13426
13427 // If the 'end' option is not supplied, dest.end() will be called when
13428 // source gets the 'end' or 'close' events. Only dest.end() once.
13429 if (!dest._isStdio && (!options || options.end !== false)) {
13430 source.on('end', onend);
13431 source.on('close', onclose);
13432 }
13433
13434 var didOnEnd = false;
13435 function onend() {
13436 if (didOnEnd) return;
13437 didOnEnd = true;
13438
13439 dest.end();
13440 }
13441
13442
13443 function onclose() {
13444 if (didOnEnd) return;
13445 didOnEnd = true;
13446
13447 if (typeof dest.destroy === 'function') dest.destroy();
13448 }
13449
13450 // don't leave dangling pipes when there are errors.
13451 function onerror(er) {
13452 cleanup();
13453 if (EE.listenerCount(this, 'error') === 0) {
13454 throw er; // Unhandled stream error in pipe.
13455 }
13456 }
13457
13458 source.on('error', onerror);
13459 dest.on('error', onerror);
13460
13461 // remove all the event listeners that were added.
13462 function cleanup() {
13463 source.removeListener('data', ondata);
13464 dest.removeListener('drain', ondrain);
13465
13466 source.removeListener('end', onend);
13467 source.removeListener('close', onclose);
13468
13469 source.removeListener('error', onerror);
13470 dest.removeListener('error', onerror);
13471
13472 source.removeListener('end', cleanup);
13473 source.removeListener('close', cleanup);
13474
13475 dest.removeListener('close', cleanup);
13476 }
13477
13478 source.on('end', cleanup);
13479 source.on('close', cleanup);
13480
13481 dest.on('close', cleanup);
13482
13483 dest.emit('pipe', source);
13484
13485 // Allow for unix-like usage: A.pipe(B).pipe(C)
13486 return dest;
13487 };
13488
13489 },{"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){
13490 // Copyright Joyent, Inc. and other Node contributors.
13491 //
13492 // Permission is hereby granted, free of charge, to any person obtaining a
13493 // copy of this software and associated documentation files (the
13494 // "Software"), to deal in the Software without restriction, including
13495 // without limitation the rights to use, copy, modify, merge, publish,
13496 // distribute, sublicense, and/or sell copies of the Software, and to permit
13497 // persons to whom the Software is furnished to do so, subject to the
13498 // following conditions:
13499 //
13500 // The above copyright notice and this permission notice shall be included
13501 // in all copies or substantial portions of the Software.
13502 //
13503 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13504 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13505 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13506 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13507 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13508 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13509 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13510
13511 var Buffer = require('buffer').Buffer;
13512
13513 var isBufferEncoding = Buffer.isEncoding
13514 || function(encoding) {
13515 switch (encoding && encoding.toLowerCase()) {
13516 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;
13517 default: return false;
13518 }
13519 }
13520
13521
13522 function assertEncoding(encoding) {
13523 if (encoding && !isBufferEncoding(encoding)) {
13524 throw new Error('Unknown encoding: ' + encoding);
13525 }
13526 }
13527
13528 // StringDecoder provides an interface for efficiently splitting a series of
13529 // buffers into a series of JS strings without breaking apart multi-byte
13530 // characters. CESU-8 is handled as part of the UTF-8 encoding.
13531 //
13532 // @TODO Handling all encodings inside a single object makes it very difficult
13533 // to reason about this code, so it should be split up in the future.
13534 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13535 // points as used by CESU-8.
13536 var StringDecoder = exports.StringDecoder = function(encoding) {
13537 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13538 assertEncoding(encoding);
13539 switch (this.encoding) {
13540 case 'utf8':
13541 // CESU-8 represents each of Surrogate Pair by 3-bytes
13542 this.surrogateSize = 3;
13543 break;
13544 case 'ucs2':
13545 case 'utf16le':
13546 // UTF-16 represents each of Surrogate Pair by 2-bytes
13547 this.surrogateSize = 2;
13548 this.detectIncompleteChar = utf16DetectIncompleteChar;
13549 break;
13550 case 'base64':
13551 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13552 this.surrogateSize = 3;
13553 this.detectIncompleteChar = base64DetectIncompleteChar;
13554 break;
13555 default:
13556 this.write = passThroughWrite;
13557 return;
13558 }
13559
13560 // Enough space to store all bytes of a single character. UTF-8 needs 4
13561 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13562 this.charBuffer = new Buffer(6);
13563 // Number of bytes received for the current incomplete multi-byte character.
13564 this.charReceived = 0;
13565 // Number of bytes expected for the current incomplete multi-byte character.
13566 this.charLength = 0;
13567 };
13568
13569
13570 // write decodes the given buffer and returns it as JS string that is
13571 // guaranteed to not contain any partial multi-byte characters. Any partial
13572 // character found at the end of the buffer is buffered up, and will be
13573 // returned when calling write again with the remaining bytes.
13574 //
13575 // Note: Converting a Buffer containing an orphan surrogate to a String
13576 // currently works, but converting a String to a Buffer (via `new Buffer`, or
13577 // Buffer#write) will replace incomplete surrogates with the unicode
13578 // replacement character. See https://codereview.chromium.org/121173009/ .
13579 StringDecoder.prototype.write = function(buffer) {
13580 var charStr = '';
13581 // if our last write ended with an incomplete multibyte character
13582 while (this.charLength) {
13583 // determine how many remaining bytes this buffer has to offer for this char
13584 var available = (buffer.length >= this.charLength - this.charReceived) ?
13585 this.charLength - this.charReceived :
13586 buffer.length;
13587
13588 // add the new bytes to the char buffer
13589 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13590 this.charReceived += available;
13591
13592 if (this.charReceived < this.charLength) {
13593 // still not enough chars in this buffer? wait for more ...
13594 return '';
13595 }
13596
13597 // remove bytes belonging to the current character from the buffer
13598 buffer = buffer.slice(available, buffer.length);
13599
13600 // get the character that was split
13601 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13602
13603 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13604 var charCode = charStr.charCodeAt(charStr.length - 1);
13605 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13606 this.charLength += this.surrogateSize;
13607 charStr = '';
13608 continue;
13609 }
13610 this.charReceived = this.charLength = 0;
13611
13612 // if there are no more bytes in this buffer, just emit our char
13613 if (buffer.length === 0) {
13614 return charStr;
13615 }
13616 break;
13617 }
13618
13619 // determine and set charLength / charReceived
13620 this.detectIncompleteChar(buffer);
13621
13622 var end = buffer.length;
13623 if (this.charLength) {
13624 // buffer the incomplete character bytes we got
13625 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13626 end -= this.charReceived;
13627 }
13628
13629 charStr += buffer.toString(this.encoding, 0, end);
13630
13631 var end = charStr.length - 1;
13632 var charCode = charStr.charCodeAt(end);
13633 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13634 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13635 var size = this.surrogateSize;
13636 this.charLength += size;
13637 this.charReceived += size;
13638 this.charBuffer.copy(this.charBuffer, size, 0, size);
13639 buffer.copy(this.charBuffer, 0, 0, size);
13640 return charStr.substring(0, end);
13641 }
13642
13643 // or just emit the charStr
13644 return charStr;
13645 };
13646
13647 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
13648 // the end of the given buffer. If so, it sets this.charLength to the byte
13649 // length that character, and sets this.charReceived to the number of bytes
13650 // that are available for this character.
13651 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13652 // determine how many bytes we have to check at the end of this buffer
13653 var i = (buffer.length >= 3) ? 3 : buffer.length;
13654
13655 // Figure out if one of the last i bytes of our buffer announces an
13656 // incomplete char.
13657 for (; i > 0; i--) {
13658 var c = buffer[buffer.length - i];
13659
13660 // See http://en.wikipedia.org/wiki/UTF-8#Description
13661
13662 // 110XXXXX
13663 if (i == 1 && c >> 5 == 0x06) {
13664 this.charLength = 2;
13665 break;
13666 }
13667
13668 // 1110XXXX
13669 if (i <= 2 && c >> 4 == 0x0E) {
13670 this.charLength = 3;
13671 break;
13672 }
13673
13674 // 11110XXX
13675 if (i <= 3 && c >> 3 == 0x1E) {
13676 this.charLength = 4;
13677 break;
13678 }
13679 }
13680 this.charReceived = i;
13681 };
13682
13683 StringDecoder.prototype.end = function(buffer) {
13684 var res = '';
13685 if (buffer && buffer.length)
13686 res = this.write(buffer);
13687
13688 if (this.charReceived) {
13689 var cr = this.charReceived;
13690 var buf = this.charBuffer;
13691 var enc = this.encoding;
13692 res += buf.slice(0, cr).toString(enc);
13693 }
13694
13695 return res;
13696 };
13697
13698 function passThroughWrite(buffer) {
13699 return buffer.toString(this.encoding);
13700 }
13701
13702 function utf16DetectIncompleteChar(buffer) {
13703 this.charReceived = buffer.length % 2;
13704 this.charLength = this.charReceived ? 2 : 0;
13705 }
13706
13707 function base64DetectIncompleteChar(buffer) {
13708 this.charReceived = buffer.length % 3;
13709 this.charLength = this.charReceived ? 3 : 0;
13710 }
13711
13712 },{"buffer":7}],28:[function(require,module,exports){
13713 module.exports = function isBuffer(arg) {
13714 return arg && typeof arg === 'object'
13715 && typeof arg.copy === 'function'
13716 && typeof arg.fill === 'function'
13717 && typeof arg.readUInt8 === 'function';
13718 }
13719 },{}],29:[function(require,module,exports){
13720 (function (process,global){
13721 // Copyright Joyent, Inc. and other Node contributors.
13722 //
13723 // Permission is hereby granted, free of charge, to any person obtaining a
13724 // copy of this software and associated documentation files (the
13725 // "Software"), to deal in the Software without restriction, including
13726 // without limitation the rights to use, copy, modify, merge, publish,
13727 // distribute, sublicense, and/or sell copies of the Software, and to permit
13728 // persons to whom the Software is furnished to do so, subject to the
13729 // following conditions:
13730 //
13731 // The above copyright notice and this permission notice shall be included
13732 // in all copies or substantial portions of the Software.
13733 //
13734 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13735 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13736 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13737 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13738 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13739 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13740 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13741
13742 var formatRegExp = /%[sdj%]/g;
13743 exports.format = function(f) {
13744 if (!isString(f)) {
13745 var objects = [];
13746 for (var i = 0; i < arguments.length; i++) {
13747 objects.push(inspect(arguments[i]));
13748 }
13749 return objects.join(' ');
13750 }
13751
13752 var i = 1;
13753 var args = arguments;
13754 var len = args.length;
13755 var str = String(f).replace(formatRegExp, function(x) {
13756 if (x === '%%') return '%';
13757 if (i >= len) return x;
13758 switch (x) {
13759 case '%s': return String(args[i++]);
13760 case '%d': return Number(args[i++]);
13761 case '%j':
13762 try {
13763 return JSON.stringify(args[i++]);
13764 } catch (_) {
13765 return '[Circular]';
13766 }
13767 default:
13768 return x;
13769 }
13770 });
13771 for (var x = args[i]; i < len; x = args[++i]) {
13772 if (isNull(x) || !isObject(x)) {
13773 str += ' ' + x;
13774 } else {
13775 str += ' ' + inspect(x);
13776 }
13777 }
13778 return str;
13779 };
13780
13781
13782 // Mark that a method should not be used.
13783 // Returns a modified function which warns once by default.
13784 // If --no-deprecation is set, then it is a no-op.
13785 exports.deprecate = function(fn, msg) {
13786 // Allow for deprecating things in the process of starting up.
13787 if (isUndefined(global.process)) {
13788 return function() {
13789 return exports.deprecate(fn, msg).apply(this, arguments);
13790 };
13791 }
13792
13793 if (process.noDeprecation === true) {
13794 return fn;
13795 }
13796
13797 var warned = false;
13798 function deprecated() {
13799 if (!warned) {
13800 if (process.throwDeprecation) {
13801 throw new Error(msg);
13802 } else if (process.traceDeprecation) {
13803 console.trace(msg);
13804 } else {
13805 console.error(msg);
13806 }
13807 warned = true;
13808 }
13809 return fn.apply(this, arguments);
13810 }
13811
13812 return deprecated;
13813 };
13814
13815
13816 var debugs = {};
13817 var debugEnviron;
13818 exports.debuglog = function(set) {
13819 if (isUndefined(debugEnviron))
13820 debugEnviron = process.env.NODE_DEBUG || '';
13821 set = set.toUpperCase();
13822 if (!debugs[set]) {
13823 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13824 var pid = process.pid;
13825 debugs[set] = function() {
13826 var msg = exports.format.apply(exports, arguments);
13827 console.error('%s %d: %s', set, pid, msg);
13828 };
13829 } else {
13830 debugs[set] = function() {};
13831 }
13832 }
13833 return debugs[set];
13834 };
13835
13836
13837 /**
13838 * Echos the value of a value. Trys to print the value out
13839 * in the best way possible given the different types.
13840 *
13841 * @param {Object} obj The object to print out.
13842 * @param {Object} opts Optional options object that alters the output.
13843 */
13844 /* legacy: obj, showHidden, depth, colors*/
13845 function inspect(obj, opts) {
13846 // default options
13847 var ctx = {
13848 seen: [],
13849 stylize: stylizeNoColor
13850 };
13851 // legacy...
13852 if (arguments.length >= 3) ctx.depth = arguments[2];
13853 if (arguments.length >= 4) ctx.colors = arguments[3];
13854 if (isBoolean(opts)) {
13855 // legacy...
13856 ctx.showHidden = opts;
13857 } else if (opts) {
13858 // got an "options" object
13859 exports._extend(ctx, opts);
13860 }
13861 // set default options
13862 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13863 if (isUndefined(ctx.depth)) ctx.depth = 2;
13864 if (isUndefined(ctx.colors)) ctx.colors = false;
13865 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13866 if (ctx.colors) ctx.stylize = stylizeWithColor;
13867 return formatValue(ctx, obj, ctx.depth);
13868 }
13869 exports.inspect = inspect;
13870
13871
13872 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13873 inspect.colors = {
13874 'bold' : [1, 22],
13875 'italic' : [3, 23],
13876 'underline' : [4, 24],
13877 'inverse' : [7, 27],
13878 'white' : [37, 39],
13879 'grey' : [90, 39],
13880 'black' : [30, 39],
13881 'blue' : [34, 39],
13882 'cyan' : [36, 39],
13883 'green' : [32, 39],
13884 'magenta' : [35, 39],
13885 'red' : [31, 39],
13886 'yellow' : [33, 39]
13887 };
13888
13889 // Don't use 'blue' not visible on cmd.exe
13890 inspect.styles = {
13891 'special': 'cyan',
13892 'number': 'yellow',
13893 'boolean': 'yellow',
13894 'undefined': 'grey',
13895 'null': 'bold',
13896 'string': 'green',
13897 'date': 'magenta',
13898 // "name": intentionally not styling
13899 'regexp': 'red'
13900 };
13901
13902
13903 function stylizeWithColor(str, styleType) {
13904 var style = inspect.styles[styleType];
13905
13906 if (style) {
13907 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13908 '\u001b[' + inspect.colors[style][1] + 'm';
13909 } else {
13910 return str;
13911 }
13912 }
13913
13914
13915 function stylizeNoColor(str, styleType) {
13916 return str;
13917 }
13918
13919
13920 function arrayToHash(array) {
13921 var hash = {};
13922
13923 array.forEach(function(val, idx) {
13924 hash[val] = true;
13925 });
13926
13927 return hash;
13928 }
13929
13930
13931 function formatValue(ctx, value, recurseTimes) {
13932 // Provide a hook for user-specified inspect functions.
13933 // Check that value is an object with an inspect function on it
13934 if (ctx.customInspect &&
13935 value &&
13936 isFunction(value.inspect) &&
13937 // Filter out the util module, it's inspect function is special
13938 value.inspect !== exports.inspect &&
13939 // Also filter out any prototype objects using the circular check.
13940 !(value.constructor && value.constructor.prototype === value)) {
13941 var ret = value.inspect(recurseTimes, ctx);
13942 if (!isString(ret)) {
13943 ret = formatValue(ctx, ret, recurseTimes);
13944 }
13945 return ret;
13946 }
13947
13948 // Primitive types cannot have properties
13949 var primitive = formatPrimitive(ctx, value);
13950 if (primitive) {
13951 return primitive;
13952 }
13953
13954 // Look up the keys of the object.
13955 var keys = Object.keys(value);
13956 var visibleKeys = arrayToHash(keys);
13957
13958 if (ctx.showHidden) {
13959 keys = Object.getOwnPropertyNames(value);
13960 }
13961
13962 // IE doesn't make error fields non-enumerable
13963 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13964 if (isError(value)
13965 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13966 return formatError(value);
13967 }
13968
13969 // Some type of object without properties can be shortcutted.
13970 if (keys.length === 0) {
13971 if (isFunction(value)) {
13972 var name = value.name ? ': ' + value.name : '';
13973 return ctx.stylize('[Function' + name + ']', 'special');
13974 }
13975 if (isRegExp(value)) {
13976 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13977 }
13978 if (isDate(value)) {
13979 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13980 }
13981 if (isError(value)) {
13982 return formatError(value);
13983 }
13984 }
13985
13986 var base = '', array = false, braces = ['{', '}'];
13987
13988 // Make Array say that they are Array
13989 if (isArray(value)) {
13990 array = true;
13991 braces = ['[', ']'];
13992 }
13993
13994 // Make functions say that they are functions
13995 if (isFunction(value)) {
13996 var n = value.name ? ': ' + value.name : '';
13997 base = ' [Function' + n + ']';
13998 }
13999
14000 // Make RegExps say that they are RegExps
14001 if (isRegExp(value)) {
14002 base = ' ' + RegExp.prototype.toString.call(value);
14003 }
14004
14005 // Make dates with properties first say the date
14006 if (isDate(value)) {
14007 base = ' ' + Date.prototype.toUTCString.call(value);
14008 }
14009
14010 // Make error with message first say the error
14011 if (isError(value)) {
14012 base = ' ' + formatError(value);
14013 }
14014
14015 if (keys.length === 0 && (!array || value.length == 0)) {
14016 return braces[0] + base + braces[1];
14017 }
14018
14019 if (recurseTimes < 0) {
14020 if (isRegExp(value)) {
14021 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14022 } else {
14023 return ctx.stylize('[Object]', 'special');
14024 }
14025 }
14026
14027 ctx.seen.push(value);
14028
14029 var output;
14030 if (array) {
14031 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14032 } else {
14033 output = keys.map(function(key) {
14034 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14035 });
14036 }
14037
14038 ctx.seen.pop();
14039
14040 return reduceToSingleString(output, base, braces);
14041 }
14042
14043
14044 function formatPrimitive(ctx, value) {
14045 if (isUndefined(value))
14046 return ctx.stylize('undefined', 'undefined');
14047 if (isString(value)) {
14048 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14049 .replace(/'/g, "\\'")
14050 .replace(/\\"/g, '"') + '\'';
14051 return ctx.stylize(simple, 'string');
14052 }
14053 if (isNumber(value))
14054 return ctx.stylize('' + value, 'number');
14055 if (isBoolean(value))
14056 return ctx.stylize('' + value, 'boolean');
14057 // For some reason typeof null is "object", so special case here.
14058 if (isNull(value))
14059 return ctx.stylize('null', 'null');
14060 }
14061
14062
14063 function formatError(value) {
14064 return '[' + Error.prototype.toString.call(value) + ']';
14065 }
14066
14067
14068 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14069 var output = [];
14070 for (var i = 0, l = value.length; i < l; ++i) {
14071 if (hasOwnProperty(value, String(i))) {
14072 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14073 String(i), true));
14074 } else {
14075 output.push('');
14076 }
14077 }
14078 keys.forEach(function(key) {
14079 if (!key.match(/^\d+$/)) {
14080 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14081 key, true));
14082 }
14083 });
14084 return output;
14085 }
14086
14087
14088 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14089 var name, str, desc;
14090 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14091 if (desc.get) {
14092 if (desc.set) {
14093 str = ctx.stylize('[Getter/Setter]', 'special');
14094 } else {
14095 str = ctx.stylize('[Getter]', 'special');
14096 }
14097 } else {
14098 if (desc.set) {
14099 str = ctx.stylize('[Setter]', 'special');
14100 }
14101 }
14102 if (!hasOwnProperty(visibleKeys, key)) {
14103 name = '[' + key + ']';
14104 }
14105 if (!str) {
14106 if (ctx.seen.indexOf(desc.value) < 0) {
14107 if (isNull(recurseTimes)) {
14108 str = formatValue(ctx, desc.value, null);
14109 } else {
14110 str = formatValue(ctx, desc.value, recurseTimes - 1);
14111 }
14112 if (str.indexOf('\n') > -1) {
14113 if (array) {
14114 str = str.split('\n').map(function(line) {
14115 return ' ' + line;
14116 }).join('\n').substr(2);
14117 } else {
14118 str = '\n' + str.split('\n').map(function(line) {
14119 return ' ' + line;
14120 }).join('\n');
14121 }
14122 }
14123 } else {
14124 str = ctx.stylize('[Circular]', 'special');
14125 }
14126 }
14127 if (isUndefined(name)) {
14128 if (array && key.match(/^\d+$/)) {
14129 return str;
14130 }
14131 name = JSON.stringify('' + key);
14132 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14133 name = name.substr(1, name.length - 2);
14134 name = ctx.stylize(name, 'name');
14135 } else {
14136 name = name.replace(/'/g, "\\'")
14137 .replace(/\\"/g, '"')
14138 .replace(/(^"|"$)/g, "'");
14139 name = ctx.stylize(name, 'string');
14140 }
14141 }
14142
14143 return name + ': ' + str;
14144 }
14145
14146
14147 function reduceToSingleString(output, base, braces) {
14148 var numLinesEst = 0;
14149 var length = output.reduce(function(prev, cur) {
14150 numLinesEst++;
14151 if (cur.indexOf('\n') >= 0) numLinesEst++;
14152 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14153 }, 0);
14154
14155 if (length > 60) {
14156 return braces[0] +
14157 (base === '' ? '' : base + '\n ') +
14158 ' ' +
14159 output.join(',\n ') +
14160 ' ' +
14161 braces[1];
14162 }
14163
14164 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14165 }
14166
14167
14168 // NOTE: These type checking functions intentionally don't use `instanceof`
14169 // because it is fragile and can be easily faked with `Object.create()`.
14170 function isArray(ar) {
14171 return Array.isArray(ar);
14172 }
14173 exports.isArray = isArray;
14174
14175 function isBoolean(arg) {
14176 return typeof arg === 'boolean';
14177 }
14178 exports.isBoolean = isBoolean;
14179
14180 function isNull(arg) {
14181 return arg === null;
14182 }
14183 exports.isNull = isNull;
14184
14185 function isNullOrUndefined(arg) {
14186 return arg == null;
14187 }
14188 exports.isNullOrUndefined = isNullOrUndefined;
14189
14190 function isNumber(arg) {
14191 return typeof arg === 'number';
14192 }
14193 exports.isNumber = isNumber;
14194
14195 function isString(arg) {
14196 return typeof arg === 'string';
14197 }
14198 exports.isString = isString;
14199
14200 function isSymbol(arg) {
14201 return typeof arg === 'symbol';
14202 }
14203 exports.isSymbol = isSymbol;
14204
14205 function isUndefined(arg) {
14206 return arg === void 0;
14207 }
14208 exports.isUndefined = isUndefined;
14209
14210 function isRegExp(re) {
14211 return isObject(re) && objectToString(re) === '[object RegExp]';
14212 }
14213 exports.isRegExp = isRegExp;
14214
14215 function isObject(arg) {
14216 return typeof arg === 'object' && arg !== null;
14217 }
14218 exports.isObject = isObject;
14219
14220 function isDate(d) {
14221 return isObject(d) && objectToString(d) === '[object Date]';
14222 }
14223 exports.isDate = isDate;
14224
14225 function isError(e) {
14226 return isObject(e) &&
14227 (objectToString(e) === '[object Error]' || e instanceof Error);
14228 }
14229 exports.isError = isError;
14230
14231 function isFunction(arg) {
14232 return typeof arg === 'function';
14233 }
14234 exports.isFunction = isFunction;
14235
14236 function isPrimitive(arg) {
14237 return arg === null ||
14238 typeof arg === 'boolean' ||
14239 typeof arg === 'number' ||
14240 typeof arg === 'string' ||
14241 typeof arg === 'symbol' || // ES6 symbol
14242 typeof arg === 'undefined';
14243 }
14244 exports.isPrimitive = isPrimitive;
14245
14246 exports.isBuffer = require('./support/isBuffer');
14247
14248 function objectToString(o) {
14249 return Object.prototype.toString.call(o);
14250 }
14251
14252
14253 function pad(n) {
14254 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14255 }
14256
14257
14258 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14259 'Oct', 'Nov', 'Dec'];
14260
14261 // 26 Feb 16:19:34
14262 function timestamp() {
14263 var d = new Date();
14264 var time = [pad(d.getHours()),
14265 pad(d.getMinutes()),
14266 pad(d.getSeconds())].join(':');
14267 return [d.getDate(), months[d.getMonth()], time].join(' ');
14268 }
14269
14270
14271 // log is just a thin wrapper to console.log that prepends a timestamp
14272 exports.log = function() {
14273 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14274 };
14275
14276
14277 /**
14278 * Inherit the prototype methods from one constructor into another.
14279 *
14280 * The Function.prototype.inherits from lang.js rewritten as a standalone
14281 * function (not on Function.prototype). NOTE: If this file is to be loaded
14282 * during bootstrapping this function needs to be rewritten using some native
14283 * functions as prototype setup using normal JavaScript does not work as
14284 * expected during bootstrapping (see mirror.js in r114903).
14285 *
14286 * @param {function} ctor Constructor function which needs to inherit the
14287 * prototype.
14288 * @param {function} superCtor Constructor function to inherit prototype from.
14289 */
14290 exports.inherits = require('inherits');
14291
14292 exports._extend = function(origin, add) {
14293 // Don't do anything if add isn't an object
14294 if (!add || !isObject(add)) return origin;
14295
14296 var keys = Object.keys(add);
14297 var i = keys.length;
14298 while (i--) {
14299 origin[keys[i]] = add[keys[i]];
14300 }
14301 return origin;
14302 };
14303
14304 function hasOwnProperty(obj, prop) {
14305 return Object.prototype.hasOwnProperty.call(obj, prop);
14306 }
14307
14308 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14309 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14310 // Base58 encoding/decoding
14311 // Originally written by Mike Hearn for BitcoinJ
14312 // Copyright (c) 2011 Google Inc
14313 // Ported to JavaScript by Stefan Thomas
14314 // Merged Buffer refactorings from base58-native by Stephen Pair
14315 // Copyright (c) 2013 BitPay Inc
14316
14317 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14318 var ALPHABET_MAP = {}
14319 for(var i = 0; i < ALPHABET.length; i++) {
14320 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14321 }
14322 var BASE = 58
14323
14324 function encode(buffer) {
14325 if (buffer.length === 0) return ''
14326
14327 var i, j, digits = [0]
14328 for (i = 0; i < buffer.length; i++) {
14329 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14330
14331 digits[0] += buffer[i]
14332
14333 var carry = 0
14334 for (j = 0; j < digits.length; ++j) {
14335 digits[j] += carry
14336
14337 carry = (digits[j] / BASE) | 0
14338 digits[j] %= BASE
14339 }
14340
14341 while (carry) {
14342 digits.push(carry % BASE)
14343
14344 carry = (carry / BASE) | 0
14345 }
14346 }
14347
14348 // deal with leading zeros
14349 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14350
14351 // convert digits to a string
14352 var stringOutput = ""
14353 for (var i = digits.length - 1; i >= 0; i--) {
14354 stringOutput = stringOutput + ALPHABET[digits[i]]
14355 }
14356 return stringOutput
14357 }
14358
14359 function decode(string) {
14360 if (string.length === 0) return []
14361
14362 var i, j, bytes = [0]
14363 for (i = 0; i < string.length; i++) {
14364 var c = string[i]
14365 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14366
14367 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14368 bytes[0] += ALPHABET_MAP[c]
14369
14370 var carry = 0
14371 for (j = 0; j < bytes.length; ++j) {
14372 bytes[j] += carry
14373
14374 carry = bytes[j] >> 8
14375 bytes[j] &= 0xff
14376 }
14377
14378 while (carry) {
14379 bytes.push(carry & 0xff)
14380
14381 carry >>= 8
14382 }
14383 }
14384
14385 // deal with leading zeros
14386 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14387
14388 return bytes.reverse()
14389 }
14390
14391 module.exports = {
14392 encode: encode,
14393 decode: decode
14394 }
14395
14396 },{}],31:[function(require,module,exports){
14397 (function (Buffer){
14398 'use strict'
14399
14400 var base58 = require('bs58')
14401 var createHash = require('create-hash')
14402
14403 // SHA256(SHA256(buffer))
14404 function sha256x2 (buffer) {
14405 buffer = createHash('sha256').update(buffer).digest()
14406 return createHash('sha256').update(buffer).digest()
14407 }
14408
14409 // Encode a buffer as a base58-check encoded string
14410 function encode (payload) {
14411 var checksum = sha256x2(payload).slice(0, 4)
14412
14413 return base58.encode(Buffer.concat([
14414 payload,
14415 checksum
14416 ]))
14417 }
14418
14419 // Decode a base58-check encoded string to a buffer
14420 function decode (string) {
14421 var buffer = new Buffer(base58.decode(string))
14422
14423 var payload = buffer.slice(0, -4)
14424 var checksum = buffer.slice(-4)
14425 var newChecksum = sha256x2(payload).slice(0, 4)
14426
14427 for (var i = 0; i < newChecksum.length; ++i) {
14428 if (newChecksum[i] === checksum[i]) continue
14429
14430 throw new Error('Invalid checksum')
14431 }
14432
14433 return payload
14434 }
14435
14436 module.exports = {
14437 encode: encode,
14438 decode: decode
14439 }
14440
14441 }).call(this,require("buffer").Buffer)
14442 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14443 (function (Buffer){
14444 'use strict';
14445 var inherits = require('inherits')
14446 var md5 = require('./md5')
14447 var rmd160 = require('ripemd160')
14448 var sha = require('sha.js')
14449
14450 var Transform = require('stream').Transform
14451
14452 function HashNoConstructor(hash) {
14453 Transform.call(this)
14454
14455 this._hash = hash
14456 this.buffers = []
14457 }
14458
14459 inherits(HashNoConstructor, Transform)
14460
14461 HashNoConstructor.prototype._transform = function (data, _, next) {
14462 this.buffers.push(data)
14463
14464 next()
14465 }
14466
14467 HashNoConstructor.prototype._flush = function (next) {
14468 this.push(this.digest())
14469 next()
14470 }
14471
14472 HashNoConstructor.prototype.update = function (data, enc) {
14473 if (typeof data === 'string') {
14474 data = new Buffer(data, enc)
14475 }
14476
14477 this.buffers.push(data)
14478 return this
14479 }
14480
14481 HashNoConstructor.prototype.digest = function (enc) {
14482 var buf = Buffer.concat(this.buffers)
14483 var r = this._hash(buf)
14484 this.buffers = null
14485
14486 return enc ? r.toString(enc) : r
14487 }
14488
14489 function Hash(hash) {
14490 Transform.call(this)
14491
14492 this._hash = hash
14493 }
14494
14495 inherits(Hash, Transform)
14496
14497 Hash.prototype._transform = function (data, enc, next) {
14498 if (enc) data = new Buffer(data, enc)
14499
14500 this._hash.update(data)
14501
14502 next()
14503 }
14504
14505 Hash.prototype._flush = function (next) {
14506 this.push(this._hash.digest())
14507 this._hash = null
14508
14509 next()
14510 }
14511
14512 Hash.prototype.update = function (data, enc) {
14513 if (typeof data === 'string') {
14514 data = new Buffer(data, enc)
14515 }
14516
14517 this._hash.update(data)
14518 return this
14519 }
14520
14521 Hash.prototype.digest = function (enc) {
14522 var outData = this._hash.digest()
14523
14524 return enc ? outData.toString(enc) : outData
14525 }
14526
14527 module.exports = function createHash (alg) {
14528 if ('md5' === alg) return new HashNoConstructor(md5)
14529 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14530
14531 return new Hash(sha(alg))
14532 }
14533
14534 }).call(this,require("buffer").Buffer)
14535 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14536 (function (Buffer){
14537 'use strict';
14538 var intSize = 4;
14539 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14540 var chrsz = 8;
14541
14542 function toArray(buf, bigEndian) {
14543 if ((buf.length % intSize) !== 0) {
14544 var len = buf.length + (intSize - (buf.length % intSize));
14545 buf = Buffer.concat([buf, zeroBuffer], len);
14546 }
14547
14548 var arr = [];
14549 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14550 for (var i = 0; i < buf.length; i += intSize) {
14551 arr.push(fn.call(buf, i));
14552 }
14553 return arr;
14554 }
14555
14556 function toBuffer(arr, size, bigEndian) {
14557 var buf = new Buffer(size);
14558 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14559 for (var i = 0; i < arr.length; i++) {
14560 fn.call(buf, arr[i], i * 4, true);
14561 }
14562 return buf;
14563 }
14564
14565 function hash(buf, fn, hashSize, bigEndian) {
14566 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14567 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14568 return toBuffer(arr, hashSize, bigEndian);
14569 }
14570 exports.hash = hash;
14571 }).call(this,require("buffer").Buffer)
14572 },{"buffer":7}],34:[function(require,module,exports){
14573 'use strict';
14574 /*
14575 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14576 * Digest Algorithm, as defined in RFC 1321.
14577 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14578 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14579 * Distributed under the BSD License
14580 * See http://pajhome.org.uk/crypt/md5 for more info.
14581 */
14582
14583 var helpers = require('./helpers');
14584
14585 /*
14586 * Calculate the MD5 of an array of little-endian words, and a bit length
14587 */
14588 function core_md5(x, len)
14589 {
14590 /* append padding */
14591 x[len >> 5] |= 0x80 << ((len) % 32);
14592 x[(((len + 64) >>> 9) << 4) + 14] = len;
14593
14594 var a = 1732584193;
14595 var b = -271733879;
14596 var c = -1732584194;
14597 var d = 271733878;
14598
14599 for(var i = 0; i < x.length; i += 16)
14600 {
14601 var olda = a;
14602 var oldb = b;
14603 var oldc = c;
14604 var oldd = d;
14605
14606 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14607 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14608 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14609 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14610 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14611 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14612 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14613 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14614 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14615 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14616 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14617 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14618 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14619 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14620 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14621 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14622
14623 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14624 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14625 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14626 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14627 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14628 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14629 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14630 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14631 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14632 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14633 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14634 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14635 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14636 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14637 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14638 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14639
14640 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14641 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14642 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14643 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14644 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14645 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14646 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14647 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14648 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14649 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14650 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14651 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14652 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14653 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14654 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14655 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14656
14657 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14658 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14659 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14660 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14661 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14662 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14663 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14664 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14665 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14666 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14667 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14668 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14669 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14670 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14671 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14672 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14673
14674 a = safe_add(a, olda);
14675 b = safe_add(b, oldb);
14676 c = safe_add(c, oldc);
14677 d = safe_add(d, oldd);
14678 }
14679 return Array(a, b, c, d);
14680
14681 }
14682
14683 /*
14684 * These functions implement the four basic operations the algorithm uses.
14685 */
14686 function md5_cmn(q, a, b, x, s, t)
14687 {
14688 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14689 }
14690 function md5_ff(a, b, c, d, x, s, t)
14691 {
14692 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14693 }
14694 function md5_gg(a, b, c, d, x, s, t)
14695 {
14696 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14697 }
14698 function md5_hh(a, b, c, d, x, s, t)
14699 {
14700 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14701 }
14702 function md5_ii(a, b, c, d, x, s, t)
14703 {
14704 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14705 }
14706
14707 /*
14708 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14709 * to work around bugs in some JS interpreters.
14710 */
14711 function safe_add(x, y)
14712 {
14713 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14714 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14715 return (msw << 16) | (lsw & 0xFFFF);
14716 }
14717
14718 /*
14719 * Bitwise rotate a 32-bit number to the left.
14720 */
14721 function bit_rol(num, cnt)
14722 {
14723 return (num << cnt) | (num >>> (32 - cnt));
14724 }
14725
14726 module.exports = function md5(buf) {
14727 return helpers.hash(buf, core_md5, 16);
14728 };
14729 },{"./helpers":33}],35:[function(require,module,exports){
14730 arguments[4][12][0].apply(exports,arguments)
14731 },{"dup":12}],36:[function(require,module,exports){
14732 (function (Buffer){
14733 /*
14734 CryptoJS v3.1.2
14735 code.google.com/p/crypto-js
14736 (c) 2009-2013 by Jeff Mott. All rights reserved.
14737 code.google.com/p/crypto-js/wiki/License
14738 */
14739 /** @preserve
14740 (c) 2012 by Cédric Mesnil. All rights reserved.
14741
14742 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14743
14744 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14745 - 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.
14746
14747 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.
14748 */
14749
14750 // constants table
14751 var zl = [
14752 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14753 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14754 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14755 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14756 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14757 ]
14758
14759 var zr = [
14760 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14761 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14762 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14763 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14764 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14765 ]
14766
14767 var sl = [
14768 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14769 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14770 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14771 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14772 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14773 ]
14774
14775 var sr = [
14776 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14777 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14778 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14779 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14780 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14781 ]
14782
14783 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14784 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14785
14786 function bytesToWords (bytes) {
14787 var words = []
14788 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14789 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14790 }
14791 return words
14792 }
14793
14794 function wordsToBytes (words) {
14795 var bytes = []
14796 for (var b = 0; b < words.length * 32; b += 8) {
14797 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14798 }
14799 return bytes
14800 }
14801
14802 function processBlock (H, M, offset) {
14803 // swap endian
14804 for (var i = 0; i < 16; i++) {
14805 var offset_i = offset + i
14806 var M_offset_i = M[offset_i]
14807
14808 // Swap
14809 M[offset_i] = (
14810 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14811 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14812 )
14813 }
14814
14815 // Working variables
14816 var al, bl, cl, dl, el
14817 var ar, br, cr, dr, er
14818
14819 ar = al = H[0]
14820 br = bl = H[1]
14821 cr = cl = H[2]
14822 dr = dl = H[3]
14823 er = el = H[4]
14824
14825 // computation
14826 var t
14827 for (i = 0; i < 80; i += 1) {
14828 t = (al + M[offset + zl[i]]) | 0
14829 if (i < 16) {
14830 t += f1(bl, cl, dl) + hl[0]
14831 } else if (i < 32) {
14832 t += f2(bl, cl, dl) + hl[1]
14833 } else if (i < 48) {
14834 t += f3(bl, cl, dl) + hl[2]
14835 } else if (i < 64) {
14836 t += f4(bl, cl, dl) + hl[3]
14837 } else {// if (i<80) {
14838 t += f5(bl, cl, dl) + hl[4]
14839 }
14840 t = t | 0
14841 t = rotl(t, sl[i])
14842 t = (t + el) | 0
14843 al = el
14844 el = dl
14845 dl = rotl(cl, 10)
14846 cl = bl
14847 bl = t
14848
14849 t = (ar + M[offset + zr[i]]) | 0
14850 if (i < 16) {
14851 t += f5(br, cr, dr) + hr[0]
14852 } else if (i < 32) {
14853 t += f4(br, cr, dr) + hr[1]
14854 } else if (i < 48) {
14855 t += f3(br, cr, dr) + hr[2]
14856 } else if (i < 64) {
14857 t += f2(br, cr, dr) + hr[3]
14858 } else {// if (i<80) {
14859 t += f1(br, cr, dr) + hr[4]
14860 }
14861
14862 t = t | 0
14863 t = rotl(t, sr[i])
14864 t = (t + er) | 0
14865 ar = er
14866 er = dr
14867 dr = rotl(cr, 10)
14868 cr = br
14869 br = t
14870 }
14871
14872 // intermediate hash value
14873 t = (H[1] + cl + dr) | 0
14874 H[1] = (H[2] + dl + er) | 0
14875 H[2] = (H[3] + el + ar) | 0
14876 H[3] = (H[4] + al + br) | 0
14877 H[4] = (H[0] + bl + cr) | 0
14878 H[0] = t
14879 }
14880
14881 function f1 (x, y, z) {
14882 return ((x) ^ (y) ^ (z))
14883 }
14884
14885 function f2 (x, y, z) {
14886 return (((x) & (y)) | ((~x) & (z)))
14887 }
14888
14889 function f3 (x, y, z) {
14890 return (((x) | (~(y))) ^ (z))
14891 }
14892
14893 function f4 (x, y, z) {
14894 return (((x) & (z)) | ((y) & (~(z))))
14895 }
14896
14897 function f5 (x, y, z) {
14898 return ((x) ^ ((y) | (~(z))))
14899 }
14900
14901 function rotl (x, n) {
14902 return (x << n) | (x >>> (32 - n))
14903 }
14904
14905 function ripemd160 (message) {
14906 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14907
14908 if (typeof message === 'string') {
14909 message = new Buffer(message, 'utf8')
14910 }
14911
14912 var m = bytesToWords(message)
14913
14914 var nBitsLeft = message.length * 8
14915 var nBitsTotal = message.length * 8
14916
14917 // Add padding
14918 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14919 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14920 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14921 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14922 )
14923
14924 for (var i = 0; i < m.length; i += 16) {
14925 processBlock(H, m, i)
14926 }
14927
14928 // swap endian
14929 for (i = 0; i < 5; i++) {
14930 // shortcut
14931 var H_i = H[i]
14932
14933 // Swap
14934 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14935 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14936 }
14937
14938 var digestbytes = wordsToBytes(H)
14939 return new Buffer(digestbytes)
14940 }
14941
14942 module.exports = ripemd160
14943
14944 }).call(this,require("buffer").Buffer)
14945 },{"buffer":7}],37:[function(require,module,exports){
14946 (function (Buffer){
14947 // prototype class for hash functions
14948 function Hash (blockSize, finalSize) {
14949 this._block = new Buffer(blockSize)
14950 this._finalSize = finalSize
14951 this._blockSize = blockSize
14952 this._len = 0
14953 this._s = 0
14954 }
14955
14956 Hash.prototype.update = function (data, enc) {
14957 if (typeof data === 'string') {
14958 enc = enc || 'utf8'
14959 data = new Buffer(data, enc)
14960 }
14961
14962 var l = this._len += data.length
14963 var s = this._s || 0
14964 var f = 0
14965 var buffer = this._block
14966
14967 while (s < l) {
14968 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14969 var ch = (t - f)
14970
14971 for (var i = 0; i < ch; i++) {
14972 buffer[(s % this._blockSize) + i] = data[i + f]
14973 }
14974
14975 s += ch
14976 f += ch
14977
14978 if ((s % this._blockSize) === 0) {
14979 this._update(buffer)
14980 }
14981 }
14982 this._s = s
14983
14984 return this
14985 }
14986
14987 Hash.prototype.digest = function (enc) {
14988 // Suppose the length of the message M, in bits, is l
14989 var l = this._len * 8
14990
14991 // Append the bit 1 to the end of the message
14992 this._block[this._len % this._blockSize] = 0x80
14993
14994 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
14995 this._block.fill(0, this._len % this._blockSize + 1)
14996
14997 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
14998 this._update(this._block)
14999 this._block.fill(0)
15000 }
15001
15002 // to this append the block which is equal to the number l written in binary
15003 // TODO: handle case where l is > Math.pow(2, 29)
15004 this._block.writeInt32BE(l, this._blockSize - 4)
15005
15006 var hash = this._update(this._block) || this._hash()
15007
15008 return enc ? hash.toString(enc) : hash
15009 }
15010
15011 Hash.prototype._update = function () {
15012 throw new Error('_update must be implemented by subclass')
15013 }
15014
15015 module.exports = Hash
15016
15017 }).call(this,require("buffer").Buffer)
15018 },{"buffer":7}],38:[function(require,module,exports){
15019 var exports = module.exports = function SHA (algorithm) {
15020 algorithm = algorithm.toLowerCase()
15021
15022 var Algorithm = exports[algorithm]
15023 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15024
15025 return new Algorithm()
15026 }
15027
15028 exports.sha = require('./sha')
15029 exports.sha1 = require('./sha1')
15030 exports.sha224 = require('./sha224')
15031 exports.sha256 = require('./sha256')
15032 exports.sha384 = require('./sha384')
15033 exports.sha512 = require('./sha512')
15034
15035 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15036 (function (Buffer){
15037 /*
15038 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15039 * in FIPS PUB 180-1
15040 * This source code is derived from sha1.js of the same repository.
15041 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15042 * operation was added.
15043 */
15044
15045 var inherits = require('inherits')
15046 var Hash = require('./hash')
15047
15048 var W = new Array(80)
15049
15050 function Sha () {
15051 this.init()
15052 this._w = W
15053
15054 Hash.call(this, 64, 56)
15055 }
15056
15057 inherits(Sha, Hash)
15058
15059 Sha.prototype.init = function () {
15060 this._a = 0x67452301 | 0
15061 this._b = 0xefcdab89 | 0
15062 this._c = 0x98badcfe | 0
15063 this._d = 0x10325476 | 0
15064 this._e = 0xc3d2e1f0 | 0
15065
15066 return this
15067 }
15068
15069 /*
15070 * Bitwise rotate a 32-bit number to the left.
15071 */
15072 function rol (num, cnt) {
15073 return (num << cnt) | (num >>> (32 - cnt))
15074 }
15075
15076 Sha.prototype._update = function (M) {
15077 var W = this._w
15078
15079 var a = this._a
15080 var b = this._b
15081 var c = this._c
15082 var d = this._d
15083 var e = this._e
15084
15085 var j = 0, k
15086
15087 /*
15088 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15089 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15090 */
15091 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15092 function loop (w, f) {
15093 W[j] = w
15094
15095 var t = rol(a, 5) + f + e + w + k
15096
15097 e = d
15098 d = c
15099 c = rol(b, 30)
15100 b = a
15101 a = t
15102 j++
15103 }
15104
15105 k = 1518500249
15106 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15107 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15108 k = 1859775393
15109 while (j < 40) loop(calcW(), b ^ c ^ d)
15110 k = -1894007588
15111 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15112 k = -899497514
15113 while (j < 80) loop(calcW(), b ^ c ^ d)
15114
15115 this._a = (a + this._a) | 0
15116 this._b = (b + this._b) | 0
15117 this._c = (c + this._c) | 0
15118 this._d = (d + this._d) | 0
15119 this._e = (e + this._e) | 0
15120 }
15121
15122 Sha.prototype._hash = function () {
15123 var H = new Buffer(20)
15124
15125 H.writeInt32BE(this._a | 0, 0)
15126 H.writeInt32BE(this._b | 0, 4)
15127 H.writeInt32BE(this._c | 0, 8)
15128 H.writeInt32BE(this._d | 0, 12)
15129 H.writeInt32BE(this._e | 0, 16)
15130
15131 return H
15132 }
15133
15134 module.exports = Sha
15135
15136
15137 }).call(this,require("buffer").Buffer)
15138 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15139 (function (Buffer){
15140 /*
15141 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15142 * in FIPS PUB 180-1
15143 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15144 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15145 * Distributed under the BSD License
15146 * See http://pajhome.org.uk/crypt/md5 for details.
15147 */
15148
15149 var inherits = require('inherits')
15150 var Hash = require('./hash')
15151
15152 var W = new Array(80)
15153
15154 function Sha1 () {
15155 this.init()
15156 this._w = W
15157
15158 Hash.call(this, 64, 56)
15159 }
15160
15161 inherits(Sha1, Hash)
15162
15163 Sha1.prototype.init = function () {
15164 this._a = 0x67452301 | 0
15165 this._b = 0xefcdab89 | 0
15166 this._c = 0x98badcfe | 0
15167 this._d = 0x10325476 | 0
15168 this._e = 0xc3d2e1f0 | 0
15169
15170 return this
15171 }
15172
15173 /*
15174 * Bitwise rotate a 32-bit number to the left.
15175 */
15176 function rol (num, cnt) {
15177 return (num << cnt) | (num >>> (32 - cnt))
15178 }
15179
15180 Sha1.prototype._update = function (M) {
15181 var W = this._w
15182
15183 var a = this._a
15184 var b = this._b
15185 var c = this._c
15186 var d = this._d
15187 var e = this._e
15188
15189 var j = 0, k
15190
15191 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15192 function loop (w, f) {
15193 W[j] = w
15194
15195 var t = rol(a, 5) + f + e + w + k
15196
15197 e = d
15198 d = c
15199 c = rol(b, 30)
15200 b = a
15201 a = t
15202 j++
15203 }
15204
15205 k = 1518500249
15206 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15207 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15208 k = 1859775393
15209 while (j < 40) loop(calcW(), b ^ c ^ d)
15210 k = -1894007588
15211 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15212 k = -899497514
15213 while (j < 80) loop(calcW(), b ^ c ^ d)
15214
15215 this._a = (a + this._a) | 0
15216 this._b = (b + this._b) | 0
15217 this._c = (c + this._c) | 0
15218 this._d = (d + this._d) | 0
15219 this._e = (e + this._e) | 0
15220 }
15221
15222 Sha1.prototype._hash = function () {
15223 var H = new Buffer(20)
15224
15225 H.writeInt32BE(this._a | 0, 0)
15226 H.writeInt32BE(this._b | 0, 4)
15227 H.writeInt32BE(this._c | 0, 8)
15228 H.writeInt32BE(this._d | 0, 12)
15229 H.writeInt32BE(this._e | 0, 16)
15230
15231 return H
15232 }
15233
15234 module.exports = Sha1
15235
15236 }).call(this,require("buffer").Buffer)
15237 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15238 (function (Buffer){
15239 /**
15240 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15241 * in FIPS 180-2
15242 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15243 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15244 *
15245 */
15246
15247 var inherits = require('inherits')
15248 var Sha256 = require('./sha256')
15249 var Hash = require('./hash')
15250
15251 var W = new Array(64)
15252
15253 function Sha224 () {
15254 this.init()
15255
15256 this._w = W // new Array(64)
15257
15258 Hash.call(this, 64, 56)
15259 }
15260
15261 inherits(Sha224, Sha256)
15262
15263 Sha224.prototype.init = function () {
15264 this._a = 0xc1059ed8 | 0
15265 this._b = 0x367cd507 | 0
15266 this._c = 0x3070dd17 | 0
15267 this._d = 0xf70e5939 | 0
15268 this._e = 0xffc00b31 | 0
15269 this._f = 0x68581511 | 0
15270 this._g = 0x64f98fa7 | 0
15271 this._h = 0xbefa4fa4 | 0
15272
15273 return this
15274 }
15275
15276 Sha224.prototype._hash = function () {
15277 var H = new Buffer(28)
15278
15279 H.writeInt32BE(this._a, 0)
15280 H.writeInt32BE(this._b, 4)
15281 H.writeInt32BE(this._c, 8)
15282 H.writeInt32BE(this._d, 12)
15283 H.writeInt32BE(this._e, 16)
15284 H.writeInt32BE(this._f, 20)
15285 H.writeInt32BE(this._g, 24)
15286
15287 return H
15288 }
15289
15290 module.exports = Sha224
15291
15292 }).call(this,require("buffer").Buffer)
15293 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15294 (function (Buffer){
15295 /**
15296 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15297 * in FIPS 180-2
15298 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15299 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15300 *
15301 */
15302
15303 var inherits = require('inherits')
15304 var Hash = require('./hash')
15305
15306 var K = [
15307 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15308 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15309 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15310 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15311 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15312 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15313 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15314 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15315 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15316 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15317 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15318 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15319 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15320 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15321 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15322 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15323 ]
15324
15325 var W = new Array(64)
15326
15327 function Sha256 () {
15328 this.init()
15329
15330 this._w = W // new Array(64)
15331
15332 Hash.call(this, 64, 56)
15333 }
15334
15335 inherits(Sha256, Hash)
15336
15337 Sha256.prototype.init = function () {
15338 this._a = 0x6a09e667 | 0
15339 this._b = 0xbb67ae85 | 0
15340 this._c = 0x3c6ef372 | 0
15341 this._d = 0xa54ff53a | 0
15342 this._e = 0x510e527f | 0
15343 this._f = 0x9b05688c | 0
15344 this._g = 0x1f83d9ab | 0
15345 this._h = 0x5be0cd19 | 0
15346
15347 return this
15348 }
15349
15350 function S (X, n) {
15351 return (X >>> n) | (X << (32 - n))
15352 }
15353
15354 function R (X, n) {
15355 return (X >>> n)
15356 }
15357
15358 function Ch (x, y, z) {
15359 return ((x & y) ^ ((~x) & z))
15360 }
15361
15362 function Maj (x, y, z) {
15363 return ((x & y) ^ (x & z) ^ (y & z))
15364 }
15365
15366 function Sigma0256 (x) {
15367 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15368 }
15369
15370 function Sigma1256 (x) {
15371 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15372 }
15373
15374 function Gamma0256 (x) {
15375 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15376 }
15377
15378 function Gamma1256 (x) {
15379 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15380 }
15381
15382 Sha256.prototype._update = function (M) {
15383 var W = this._w
15384
15385 var a = this._a | 0
15386 var b = this._b | 0
15387 var c = this._c | 0
15388 var d = this._d | 0
15389 var e = this._e | 0
15390 var f = this._f | 0
15391 var g = this._g | 0
15392 var h = this._h | 0
15393
15394 var j = 0
15395
15396 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15397 function loop (w) {
15398 W[j] = w
15399
15400 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15401 var T2 = Sigma0256(a) + Maj(a, b, c)
15402
15403 h = g
15404 g = f
15405 f = e
15406 e = d + T1
15407 d = c
15408 c = b
15409 b = a
15410 a = T1 + T2
15411
15412 j++
15413 }
15414
15415 while (j < 16) loop(M.readInt32BE(j * 4))
15416 while (j < 64) loop(calcW())
15417
15418 this._a = (a + this._a) | 0
15419 this._b = (b + this._b) | 0
15420 this._c = (c + this._c) | 0
15421 this._d = (d + this._d) | 0
15422 this._e = (e + this._e) | 0
15423 this._f = (f + this._f) | 0
15424 this._g = (g + this._g) | 0
15425 this._h = (h + this._h) | 0
15426 }
15427
15428 Sha256.prototype._hash = function () {
15429 var H = new Buffer(32)
15430
15431 H.writeInt32BE(this._a, 0)
15432 H.writeInt32BE(this._b, 4)
15433 H.writeInt32BE(this._c, 8)
15434 H.writeInt32BE(this._d, 12)
15435 H.writeInt32BE(this._e, 16)
15436 H.writeInt32BE(this._f, 20)
15437 H.writeInt32BE(this._g, 24)
15438 H.writeInt32BE(this._h, 28)
15439
15440 return H
15441 }
15442
15443 module.exports = Sha256
15444
15445 }).call(this,require("buffer").Buffer)
15446 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15447 (function (Buffer){
15448 var inherits = require('inherits')
15449 var SHA512 = require('./sha512')
15450 var Hash = require('./hash')
15451
15452 var W = new Array(160)
15453
15454 function Sha384 () {
15455 this.init()
15456 this._w = W
15457
15458 Hash.call(this, 128, 112)
15459 }
15460
15461 inherits(Sha384, SHA512)
15462
15463 Sha384.prototype.init = function () {
15464 this._a = 0xcbbb9d5d | 0
15465 this._b = 0x629a292a | 0
15466 this._c = 0x9159015a | 0
15467 this._d = 0x152fecd8 | 0
15468 this._e = 0x67332667 | 0
15469 this._f = 0x8eb44a87 | 0
15470 this._g = 0xdb0c2e0d | 0
15471 this._h = 0x47b5481d | 0
15472
15473 this._al = 0xc1059ed8 | 0
15474 this._bl = 0x367cd507 | 0
15475 this._cl = 0x3070dd17 | 0
15476 this._dl = 0xf70e5939 | 0
15477 this._el = 0xffc00b31 | 0
15478 this._fl = 0x68581511 | 0
15479 this._gl = 0x64f98fa7 | 0
15480 this._hl = 0xbefa4fa4 | 0
15481
15482 return this
15483 }
15484
15485 Sha384.prototype._hash = function () {
15486 var H = new Buffer(48)
15487
15488 function writeInt64BE (h, l, offset) {
15489 H.writeInt32BE(h, offset)
15490 H.writeInt32BE(l, offset + 4)
15491 }
15492
15493 writeInt64BE(this._a, this._al, 0)
15494 writeInt64BE(this._b, this._bl, 8)
15495 writeInt64BE(this._c, this._cl, 16)
15496 writeInt64BE(this._d, this._dl, 24)
15497 writeInt64BE(this._e, this._el, 32)
15498 writeInt64BE(this._f, this._fl, 40)
15499
15500 return H
15501 }
15502
15503 module.exports = Sha384
15504
15505 }).call(this,require("buffer").Buffer)
15506 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15507 (function (Buffer){
15508 var inherits = require('inherits')
15509 var Hash = require('./hash')
15510
15511 var K = [
15512 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15513 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15514 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15515 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15516 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15517 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15518 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15519 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15520 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15521 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15522 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15523 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15524 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15525 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15526 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15527 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15528 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15529 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15530 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15531 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15532 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15533 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15534 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15535 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15536 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15537 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15538 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15539 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15540 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15541 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15542 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15543 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15544 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15545 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15546 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15547 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15548 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15549 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15550 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15551 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15552 ]
15553
15554 var W = new Array(160)
15555
15556 function Sha512 () {
15557 this.init()
15558 this._w = W
15559
15560 Hash.call(this, 128, 112)
15561 }
15562
15563 inherits(Sha512, Hash)
15564
15565 Sha512.prototype.init = function () {
15566 this._a = 0x6a09e667 | 0
15567 this._b = 0xbb67ae85 | 0
15568 this._c = 0x3c6ef372 | 0
15569 this._d = 0xa54ff53a | 0
15570 this._e = 0x510e527f | 0
15571 this._f = 0x9b05688c | 0
15572 this._g = 0x1f83d9ab | 0
15573 this._h = 0x5be0cd19 | 0
15574
15575 this._al = 0xf3bcc908 | 0
15576 this._bl = 0x84caa73b | 0
15577 this._cl = 0xfe94f82b | 0
15578 this._dl = 0x5f1d36f1 | 0
15579 this._el = 0xade682d1 | 0
15580 this._fl = 0x2b3e6c1f | 0
15581 this._gl = 0xfb41bd6b | 0
15582 this._hl = 0x137e2179 | 0
15583
15584 return this
15585 }
15586
15587 function S (X, Xl, n) {
15588 return (X >>> n) | (Xl << (32 - n))
15589 }
15590
15591 function Ch (x, y, z) {
15592 return ((x & y) ^ ((~x) & z))
15593 }
15594
15595 function Maj (x, y, z) {
15596 return ((x & y) ^ (x & z) ^ (y & z))
15597 }
15598
15599 Sha512.prototype._update = function (M) {
15600 var W = this._w
15601
15602 var a = this._a | 0
15603 var b = this._b | 0
15604 var c = this._c | 0
15605 var d = this._d | 0
15606 var e = this._e | 0
15607 var f = this._f | 0
15608 var g = this._g | 0
15609 var h = this._h | 0
15610
15611 var al = this._al | 0
15612 var bl = this._bl | 0
15613 var cl = this._cl | 0
15614 var dl = this._dl | 0
15615 var el = this._el | 0
15616 var fl = this._fl | 0
15617 var gl = this._gl | 0
15618 var hl = this._hl | 0
15619
15620 var i = 0, j = 0
15621 var Wi, Wil
15622 function calcW () {
15623 var x = W[j - 15 * 2]
15624 var xl = W[j - 15 * 2 + 1]
15625 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15626 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15627
15628 x = W[j - 2 * 2]
15629 xl = W[j - 2 * 2 + 1]
15630 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15631 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15632
15633 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15634 var Wi7 = W[j - 7 * 2]
15635 var Wi7l = W[j - 7 * 2 + 1]
15636
15637 var Wi16 = W[j - 16 * 2]
15638 var Wi16l = W[j - 16 * 2 + 1]
15639
15640 Wil = gamma0l + Wi7l
15641 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15642 Wil = Wil + gamma1l
15643 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15644 Wil = Wil + Wi16l
15645 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15646 }
15647
15648 function loop () {
15649 W[j] = Wi
15650 W[j + 1] = Wil
15651
15652 var maj = Maj(a, b, c)
15653 var majl = Maj(al, bl, cl)
15654
15655 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15656 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15657 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15658 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15659
15660 // t1 = h + sigma1 + ch + K[i] + W[i]
15661 var Ki = K[j]
15662 var Kil = K[j + 1]
15663
15664 var ch = Ch(e, f, g)
15665 var chl = Ch(el, fl, gl)
15666
15667 var t1l = hl + sigma1l
15668 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15669 t1l = t1l + chl
15670 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15671 t1l = t1l + Kil
15672 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15673 t1l = t1l + Wil
15674 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15675
15676 // t2 = sigma0 + maj
15677 var t2l = sigma0l + majl
15678 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15679
15680 h = g
15681 hl = gl
15682 g = f
15683 gl = fl
15684 f = e
15685 fl = el
15686 el = (dl + t1l) | 0
15687 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15688 d = c
15689 dl = cl
15690 c = b
15691 cl = bl
15692 b = a
15693 bl = al
15694 al = (t1l + t2l) | 0
15695 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15696
15697 i++
15698 j += 2
15699 }
15700
15701 while (i < 16) {
15702 Wi = M.readInt32BE(j * 4)
15703 Wil = M.readInt32BE(j * 4 + 4)
15704
15705 loop()
15706 }
15707
15708 while (i < 80) {
15709 calcW()
15710 loop()
15711 }
15712
15713 this._al = (this._al + al) | 0
15714 this._bl = (this._bl + bl) | 0
15715 this._cl = (this._cl + cl) | 0
15716 this._dl = (this._dl + dl) | 0
15717 this._el = (this._el + el) | 0
15718 this._fl = (this._fl + fl) | 0
15719 this._gl = (this._gl + gl) | 0
15720 this._hl = (this._hl + hl) | 0
15721
15722 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15723 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15724 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15725 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15726 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15727 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15728 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15729 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15730 }
15731
15732 Sha512.prototype._hash = function () {
15733 var H = new Buffer(64)
15734
15735 function writeInt64BE (h, l, offset) {
15736 H.writeInt32BE(h, offset)
15737 H.writeInt32BE(l, offset + 4)
15738 }
15739
15740 writeInt64BE(this._a, this._al, 0)
15741 writeInt64BE(this._b, this._bl, 8)
15742 writeInt64BE(this._c, this._cl, 16)
15743 writeInt64BE(this._d, this._dl, 24)
15744 writeInt64BE(this._e, this._el, 32)
15745 writeInt64BE(this._f, this._fl, 40)
15746 writeInt64BE(this._g, this._gl, 48)
15747 writeInt64BE(this._h, this._hl, 56)
15748
15749 return H
15750 }
15751
15752 module.exports = Sha512
15753
15754 }).call(this,require("buffer").Buffer)
15755 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15756 (function (Buffer){
15757 'use strict';
15758 var createHash = require('create-hash/browser');
15759 var inherits = require('inherits')
15760
15761 var Transform = require('stream').Transform
15762
15763 var ZEROS = new Buffer(128)
15764 ZEROS.fill(0)
15765
15766 function Hmac(alg, key) {
15767 Transform.call(this)
15768
15769 if (typeof key === 'string') {
15770 key = new Buffer(key)
15771 }
15772
15773 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15774
15775 this._alg = alg
15776 this._key = key
15777
15778 if (key.length > blocksize) {
15779 key = createHash(alg).update(key).digest()
15780
15781 } else if (key.length < blocksize) {
15782 key = Buffer.concat([key, ZEROS], blocksize)
15783 }
15784
15785 var ipad = this._ipad = new Buffer(blocksize)
15786 var opad = this._opad = new Buffer(blocksize)
15787
15788 for (var i = 0; i < blocksize; i++) {
15789 ipad[i] = key[i] ^ 0x36
15790 opad[i] = key[i] ^ 0x5C
15791 }
15792
15793 this._hash = createHash(alg).update(ipad)
15794 }
15795
15796 inherits(Hmac, Transform)
15797
15798 Hmac.prototype.update = function (data, enc) {
15799 this._hash.update(data, enc)
15800
15801 return this
15802 }
15803
15804 Hmac.prototype._transform = function (data, _, next) {
15805 this._hash.update(data)
15806
15807 next()
15808 }
15809
15810 Hmac.prototype._flush = function (next) {
15811 this.push(this.digest())
15812
15813 next()
15814 }
15815
15816 Hmac.prototype.digest = function (enc) {
15817 var h = this._hash.digest()
15818
15819 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15820 }
15821
15822 module.exports = function createHmac(alg, key) {
15823 return new Hmac(alg, key)
15824 }
15825
15826 }).call(this,require("buffer").Buffer)
15827 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15828 arguments[4][12][0].apply(exports,arguments)
15829 },{"dup":12}],47:[function(require,module,exports){
15830 var assert = require('assert')
15831 var BigInteger = require('bigi')
15832
15833 var Point = require('./point')
15834
15835 function Curve(p, a, b, Gx, Gy, n, h) {
15836 this.p = p
15837 this.a = a
15838 this.b = b
15839 this.G = Point.fromAffine(this, Gx, Gy)
15840 this.n = n
15841 this.h = h
15842
15843 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15844
15845 // result caching
15846 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15847 }
15848
15849 Curve.prototype.pointFromX = function(isOdd, x) {
15850 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15851 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15852
15853 var y = beta
15854 if (beta.isEven() ^ !isOdd) {
15855 y = this.p.subtract(y) // -y % p
15856 }
15857
15858 return Point.fromAffine(this, x, y)
15859 }
15860
15861 Curve.prototype.isInfinity = function(Q) {
15862 if (Q === this.infinity) return true
15863
15864 return Q.z.signum() === 0 && Q.y.signum() !== 0
15865 }
15866
15867 Curve.prototype.isOnCurve = function(Q) {
15868 if (this.isInfinity(Q)) return true
15869
15870 var x = Q.affineX
15871 var y = Q.affineY
15872 var a = this.a
15873 var b = this.b
15874 var p = this.p
15875
15876 // Check that xQ and yQ are integers in the interval [0, p - 1]
15877 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15878 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15879
15880 // and check that y^2 = x^3 + ax + b (mod p)
15881 var lhs = y.square().mod(p)
15882 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15883 return lhs.equals(rhs)
15884 }
15885
15886 /**
15887 * Validate an elliptic curve point.
15888 *
15889 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15890 */
15891 Curve.prototype.validate = function(Q) {
15892 // Check Q != O
15893 assert(!this.isInfinity(Q), 'Point is at infinity')
15894 assert(this.isOnCurve(Q), 'Point is not on the curve')
15895
15896 // Check nQ = O (where Q is a scalar multiple of G)
15897 var nQ = Q.multiply(this.n)
15898 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15899
15900 return true
15901 }
15902
15903 module.exports = Curve
15904
15905 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15906 module.exports={
15907 "secp128r1": {
15908 "p": "fffffffdffffffffffffffffffffffff",
15909 "a": "fffffffdfffffffffffffffffffffffc",
15910 "b": "e87579c11079f43dd824993c2cee5ed3",
15911 "n": "fffffffe0000000075a30d1b9038a115",
15912 "h": "01",
15913 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15914 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15915 },
15916 "secp160k1": {
15917 "p": "fffffffffffffffffffffffffffffffeffffac73",
15918 "a": "00",
15919 "b": "07",
15920 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15921 "h": "01",
15922 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15923 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15924 },
15925 "secp160r1": {
15926 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15927 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15928 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15929 "n": "0100000000000000000001f4c8f927aed3ca752257",
15930 "h": "01",
15931 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15932 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15933 },
15934 "secp192k1": {
15935 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15936 "a": "00",
15937 "b": "03",
15938 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15939 "h": "01",
15940 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15941 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15942 },
15943 "secp192r1": {
15944 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15945 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15946 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15947 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15948 "h": "01",
15949 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15950 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15951 },
15952 "secp256k1": {
15953 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15954 "a": "00",
15955 "b": "07",
15956 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15957 "h": "01",
15958 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15959 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15960 },
15961 "secp256r1": {
15962 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15963 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15964 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15965 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15966 "h": "01",
15967 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15968 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15969 }
15970 }
15971
15972 },{}],49:[function(require,module,exports){
15973 var Point = require('./point')
15974 var Curve = require('./curve')
15975
15976 var getCurveByName = require('./names')
15977
15978 module.exports = {
15979 Curve: Curve,
15980 Point: Point,
15981 getCurveByName: getCurveByName
15982 }
15983
15984 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15985 var BigInteger = require('bigi')
15986
15987 var curves = require('./curves')
15988 var Curve = require('./curve')
15989
15990 function getCurveByName(name) {
15991 var curve = curves[name]
15992 if (!curve) return null
15993
15994 var p = new BigInteger(curve.p, 16)
15995 var a = new BigInteger(curve.a, 16)
15996 var b = new BigInteger(curve.b, 16)
15997 var n = new BigInteger(curve.n, 16)
15998 var h = new BigInteger(curve.h, 16)
15999 var Gx = new BigInteger(curve.Gx, 16)
16000 var Gy = new BigInteger(curve.Gy, 16)
16001
16002 return new Curve(p, a, b, Gx, Gy, n, h)
16003 }
16004
16005 module.exports = getCurveByName
16006
16007 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16008 (function (Buffer){
16009 var assert = require('assert')
16010 var BigInteger = require('bigi')
16011
16012 var THREE = BigInteger.valueOf(3)
16013
16014 function Point(curve, x, y, z) {
16015 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16016
16017 this.curve = curve
16018 this.x = x
16019 this.y = y
16020 this.z = z
16021 this._zInv = null
16022
16023 this.compressed = true
16024 }
16025
16026 Object.defineProperty(Point.prototype, 'zInv', {
16027 get: function() {
16028 if (this._zInv === null) {
16029 this._zInv = this.z.modInverse(this.curve.p)
16030 }
16031
16032 return this._zInv
16033 }
16034 })
16035
16036 Object.defineProperty(Point.prototype, 'affineX', {
16037 get: function() {
16038 return this.x.multiply(this.zInv).mod(this.curve.p)
16039 }
16040 })
16041
16042 Object.defineProperty(Point.prototype, 'affineY', {
16043 get: function() {
16044 return this.y.multiply(this.zInv).mod(this.curve.p)
16045 }
16046 })
16047
16048 Point.fromAffine = function(curve, x, y) {
16049 return new Point(curve, x, y, BigInteger.ONE)
16050 }
16051
16052 Point.prototype.equals = function(other) {
16053 if (other === this) return true
16054 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16055 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16056
16057 // u = Y2 * Z1 - Y1 * Z2
16058 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16059
16060 if (u.signum() !== 0) return false
16061
16062 // v = X2 * Z1 - X1 * Z2
16063 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16064
16065 return v.signum() === 0
16066 }
16067
16068 Point.prototype.negate = function() {
16069 var y = this.curve.p.subtract(this.y)
16070
16071 return new Point(this.curve, this.x, y, this.z)
16072 }
16073
16074 Point.prototype.add = function(b) {
16075 if (this.curve.isInfinity(this)) return b
16076 if (this.curve.isInfinity(b)) return this
16077
16078 var x1 = this.x
16079 var y1 = this.y
16080 var x2 = b.x
16081 var y2 = b.y
16082
16083 // u = Y2 * Z1 - Y1 * Z2
16084 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16085 // v = X2 * Z1 - X1 * Z2
16086 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16087
16088 if (v.signum() === 0) {
16089 if (u.signum() === 0) {
16090 return this.twice() // this == b, so double
16091 }
16092
16093 return this.curve.infinity // this = -b, so infinity
16094 }
16095
16096 var v2 = v.square()
16097 var v3 = v2.multiply(v)
16098 var x1v2 = x1.multiply(v2)
16099 var zu2 = u.square().multiply(this.z)
16100
16101 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16102 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16103 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16104 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)
16105 // z3 = v^3 * z1 * z2
16106 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16107
16108 return new Point(this.curve, x3, y3, z3)
16109 }
16110
16111 Point.prototype.twice = function() {
16112 if (this.curve.isInfinity(this)) return this
16113 if (this.y.signum() === 0) return this.curve.infinity
16114
16115 var x1 = this.x
16116 var y1 = this.y
16117
16118 var y1z1 = y1.multiply(this.z)
16119 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16120 var a = this.curve.a
16121
16122 // w = 3 * x1^2 + a * z1^2
16123 var w = x1.square().multiply(THREE)
16124
16125 if (a.signum() !== 0) {
16126 w = w.add(this.z.square().multiply(a))
16127 }
16128
16129 w = w.mod(this.curve.p)
16130 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16131 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16132 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16133 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16134 // z3 = 8 * (y1 * z1)^3
16135 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16136
16137 return new Point(this.curve, x3, y3, z3)
16138 }
16139
16140 // Simple NAF (Non-Adjacent Form) multiplication algorithm
16141 // TODO: modularize the multiplication algorithm
16142 Point.prototype.multiply = function(k) {
16143 if (this.curve.isInfinity(this)) return this
16144 if (k.signum() === 0) return this.curve.infinity
16145
16146 var e = k
16147 var h = e.multiply(THREE)
16148
16149 var neg = this.negate()
16150 var R = this
16151
16152 for (var i = h.bitLength() - 2; i > 0; --i) {
16153 R = R.twice()
16154
16155 var hBit = h.testBit(i)
16156 var eBit = e.testBit(i)
16157
16158 if (hBit != eBit) {
16159 R = R.add(hBit ? this : neg)
16160 }
16161 }
16162
16163 return R
16164 }
16165
16166 // Compute this*j + x*k (simultaneous multiplication)
16167 Point.prototype.multiplyTwo = function(j, x, k) {
16168 var i
16169
16170 if (j.bitLength() > k.bitLength())
16171 i = j.bitLength() - 1
16172 else
16173 i = k.bitLength() - 1
16174
16175 var R = this.curve.infinity
16176 var both = this.add(x)
16177
16178 while (i >= 0) {
16179 R = R.twice()
16180
16181 var jBit = j.testBit(i)
16182 var kBit = k.testBit(i)
16183
16184 if (jBit) {
16185 if (kBit) {
16186 R = R.add(both)
16187
16188 } else {
16189 R = R.add(this)
16190 }
16191
16192 } else {
16193 if (kBit) {
16194 R = R.add(x)
16195 }
16196 }
16197 --i
16198 }
16199
16200 return R
16201 }
16202
16203 Point.prototype.getEncoded = function(compressed) {
16204 if (compressed == undefined) compressed = this.compressed
16205 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16206
16207 var x = this.affineX
16208 var y = this.affineY
16209
16210 var buffer
16211
16212 // Determine size of q in bytes
16213 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16214
16215 // 0x02/0x03 | X
16216 if (compressed) {
16217 buffer = new Buffer(1 + byteLength)
16218 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16219
16220 // 0x04 | X | Y
16221 } else {
16222 buffer = new Buffer(1 + byteLength + byteLength)
16223 buffer.writeUInt8(0x04, 0)
16224
16225 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16226 }
16227
16228 x.toBuffer(byteLength).copy(buffer, 1)
16229
16230 return buffer
16231 }
16232
16233 Point.decodeFrom = function(curve, buffer) {
16234 var type = buffer.readUInt8(0)
16235 var compressed = (type !== 4)
16236
16237 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16238 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16239
16240 var Q
16241 if (compressed) {
16242 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16243 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16244
16245 var isOdd = (type === 0x03)
16246 Q = curve.pointFromX(isOdd, x)
16247
16248 } else {
16249 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16250
16251 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16252 Q = Point.fromAffine(curve, x, y)
16253 }
16254
16255 Q.compressed = compressed
16256 return Q
16257 }
16258
16259 Point.prototype.toString = function () {
16260 if (this.curve.isInfinity(this)) return '(INFINITY)'
16261
16262 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16263 }
16264
16265 module.exports = Point
16266
16267 }).call(this,require("buffer").Buffer)
16268 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16269 (function (process,global,Buffer){
16270 'use strict';
16271
16272 var crypto = global.crypto || global.msCrypto
16273 if(crypto && crypto.getRandomValues) {
16274 module.exports = randomBytes;
16275 } else {
16276 module.exports = oldBrowser;
16277 }
16278 function randomBytes(size, cb) {
16279 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16280 /* This will not work in older browsers.
16281 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16282 */
16283
16284 crypto.getRandomValues(bytes);
16285 if (typeof cb === 'function') {
16286 return process.nextTick(function () {
16287 cb(null, bytes);
16288 });
16289 }
16290 return bytes;
16291 }
16292 function oldBrowser() {
16293 throw new Error(
16294 'secure random number generation not supported by this browser\n'+
16295 'use chrome, FireFox or Internet Explorer 11'
16296 )
16297 }
16298
16299 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16300 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
16301 (function (Buffer){
16302 'use strict';
16303
16304 function getFunctionName(fn) {
16305 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16306 }
16307
16308 function getTypeTypeName(type) {
16309 if (nativeTypes.Function(type)) {
16310 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16311 }
16312 if (nativeTypes.Object(type)) return JSON.stringify(type);
16313
16314 return type;
16315 }
16316
16317 function getValueTypeName(value) {
16318 if (nativeTypes.Null(value)) return '';
16319
16320 return getFunctionName(value.constructor);
16321 }
16322
16323 function tfErrorString(type, value) {
16324 var typeTypeName = getTypeTypeName(type);
16325 var valueTypeName = getValueTypeName(value);
16326
16327 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16328 }
16329
16330 function tfPropertyErrorString(type, name, value) {
16331 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16332 }
16333
16334 var nativeTypes = {
16335 Array: (function (_Array) {
16336 function Array(_x) {
16337 return _Array.apply(this, arguments);
16338 }
16339
16340 Array.toString = function () {
16341 return _Array.toString();
16342 };
16343
16344 return Array;
16345 })(function (value) {
16346 return value !== null && value !== undefined && value.constructor === Array;
16347 }),
16348 Boolean: function Boolean(value) {
16349 return typeof value === 'boolean';
16350 },
16351 Buffer: (function (_Buffer) {
16352 function Buffer(_x2) {
16353 return _Buffer.apply(this, arguments);
16354 }
16355
16356 Buffer.toString = function () {
16357 return _Buffer.toString();
16358 };
16359
16360 return Buffer;
16361 })(function (value) {
16362 return Buffer.isBuffer(value);
16363 }),
16364 Function: function Function(value) {
16365 return typeof value === 'function';
16366 },
16367 Null: function Null(value) {
16368 return value === undefined || value === null;
16369 },
16370 Number: function Number(value) {
16371 return typeof value === 'number';
16372 },
16373 Object: function Object(value) {
16374 return typeof value === 'object';
16375 },
16376 String: function String(value) {
16377 return typeof value === 'string';
16378 },
16379 '': function _() {
16380 return true;
16381 }
16382 };
16383
16384 function tJSON(type) {
16385 return type && type.toJSON ? type.toJSON() : type;
16386 }
16387
16388 function sJSON(type) {
16389 var json = tJSON(type);
16390 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16391 }
16392
16393 var otherTypes = {
16394 arrayOf: function arrayOf(type) {
16395 function arrayOf(value, strict) {
16396 try {
16397 return nativeTypes.Array(value) && value.every(function (x) {
16398 return typeforce(type, x, strict);
16399 });
16400 } catch (e) {
16401 return false;
16402 }
16403 }
16404 arrayOf.toJSON = function () {
16405 return [tJSON(type)];
16406 };
16407
16408 return arrayOf;
16409 },
16410
16411 maybe: function maybe(type) {
16412 function maybe(value, strict) {
16413 return nativeTypes.Null(value) || typeforce(type, value, strict);
16414 }
16415 maybe.toJSON = function () {
16416 return '?' + sJSON(type);
16417 };
16418
16419 return maybe;
16420 },
16421
16422 object: function object(type) {
16423 function object(value, strict) {
16424 typeforce(nativeTypes.Object, value, strict);
16425
16426 var propertyName, propertyType, propertyValue;
16427
16428 try {
16429 for (propertyName in type) {
16430 propertyType = type[propertyName];
16431 propertyValue = value[propertyName];
16432
16433 typeforce(propertyType, propertyValue, strict);
16434 }
16435 } catch (e) {
16436 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16437 }
16438
16439 if (strict) {
16440 for (propertyName in value) {
16441 if (type[propertyName]) continue;
16442
16443 throw new TypeError('Unexpected property "' + propertyName + '"');
16444 }
16445 }
16446
16447 return true;
16448 }
16449 object.toJSON = function () {
16450 return type;
16451 };
16452
16453 return object;
16454 },
16455
16456 oneOf: function oneOf() {
16457 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16458 types[_key] = arguments[_key];
16459 }
16460
16461 function oneOf(value, strict) {
16462 return types.some(function (type) {
16463 try {
16464 return typeforce(type, value, strict);
16465 } catch (e) {
16466 return false;
16467 }
16468 });
16469 }
16470 oneOf.toJSON = function () {
16471 return types.map(sJSON).join('|');
16472 };
16473
16474 return oneOf;
16475 },
16476
16477 quacksLike: function quacksLike(type) {
16478 function quacksLike(value, strict) {
16479 return type === getValueTypeName(value);
16480 }
16481 quacksLike.toJSON = function () {
16482 return type;
16483 };
16484
16485 return quacksLike;
16486 },
16487
16488 tuple: function tuple() {
16489 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16490 types[_key2] = arguments[_key2];
16491 }
16492
16493 function tuple(value, strict) {
16494 return types.every(function (type, i) {
16495 return typeforce(type, value[i], strict);
16496 });
16497 }
16498 tuple.toJSON = function () {
16499 return '(' + types.map(sJSON).join(', ') + ')';
16500 };
16501
16502 return tuple;
16503 },
16504
16505 value: function value(expected) {
16506 function value(actual) {
16507 return actual === expected;
16508 }
16509 value.toJSON = function () {
16510 return expected;
16511 };
16512
16513 return value;
16514 }
16515 };
16516
16517 function compile(type) {
16518 if (nativeTypes.String(type)) {
16519 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16520
16521 return nativeTypes[type] || otherTypes.quacksLike(type);
16522 } else if (type && nativeTypes.Object(type)) {
16523 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16524
16525 var compiled = {};
16526
16527 for (var propertyName in type) {
16528 compiled[propertyName] = compile(type[propertyName]);
16529 }
16530
16531 return otherTypes.object(compiled);
16532 } else if (nativeTypes.Function(type)) {
16533 return type;
16534 }
16535
16536 return otherTypes.value(type);
16537 }
16538
16539 function typeforce(_x3, _x4, _x5) {
16540 var _again = true;
16541
16542 _function: while (_again) {
16543 var type = _x3,
16544 value = _x4,
16545 strict = _x5;
16546 _again = false;
16547
16548 if (nativeTypes.Function(type)) {
16549 if (type(value, strict)) return true;
16550
16551 throw new TypeError(tfErrorString(type, value));
16552 }
16553
16554 // JIT
16555 _x3 = compile(type);
16556 _x4 = value;
16557 _x5 = strict;
16558 _again = true;
16559 continue _function;
16560 }
16561 }
16562
16563 // assign all types to typeforce function
16564 var typeName;
16565 Object.keys(nativeTypes).forEach(function (typeName) {
16566 var nativeType = nativeTypes[typeName];
16567 nativeType.toJSON = function () {
16568 return typeName;
16569 };
16570
16571 typeforce[typeName] = nativeType;
16572 });
16573
16574 for (typeName in otherTypes) {
16575 typeforce[typeName] = otherTypes[typeName];
16576 }
16577
16578 module.exports = typeforce;
16579 module.exports.compile = compile;
16580 }).call(this,require("buffer").Buffer)
16581 },{"buffer":7}],54:[function(require,module,exports){
16582 (function (Buffer){
16583 var assert = require('assert')
16584 var base58check = require('bs58check')
16585 var typeForce = require('typeforce')
16586 var networks = require('./networks')
16587 var scripts = require('./scripts')
16588
16589 function findScriptTypeByVersion (version) {
16590 for (var networkName in networks) {
16591 var network = networks[networkName]
16592
16593 if (version === network.pubKeyHash) return 'pubkeyhash'
16594 if (version === network.scriptHash) return 'scripthash'
16595 }
16596 }
16597
16598 function Address (hash, version) {
16599 typeForce('Buffer', hash)
16600
16601 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16602 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16603
16604 this.hash = hash
16605 this.version = version
16606 }
16607
16608 Address.fromBase58Check = function (string) {
16609 var payload = base58check.decode(string)
16610 var version = payload.readUInt8(0)
16611 var hash = payload.slice(1)
16612
16613 return new Address(hash, version)
16614 }
16615
16616 Address.fromOutputScript = function (script, network) {
16617 network = network || networks.bitcoin
16618
16619 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16620 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16621
16622 assert(false, script.toASM() + ' has no matching Address')
16623 }
16624
16625 Address.prototype.toBase58Check = function () {
16626 var payload = new Buffer(21)
16627 payload.writeUInt8(this.version, 0)
16628 this.hash.copy(payload, 1)
16629
16630 return base58check.encode(payload)
16631 }
16632
16633 Address.prototype.toOutputScript = function () {
16634 var scriptType = findScriptTypeByVersion(this.version)
16635
16636 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16637 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16638
16639 assert(false, this.toString() + ' has no matching Script')
16640 }
16641
16642 Address.prototype.toString = Address.prototype.toBase58Check
16643
16644 module.exports = Address
16645
16646 }).call(this,require("buffer").Buffer)
16647 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16648 var bs58check = require('bs58check')
16649
16650 function decode () {
16651 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16652
16653 return bs58check.decode.apply(undefined, arguments)
16654 }
16655
16656 function encode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.encode.apply(undefined, arguments)
16660 }
16661
16662 module.exports = {
16663 decode: decode,
16664 encode: encode
16665 }
16666
16667 },{"bs58check":31}],56:[function(require,module,exports){
16668 (function (Buffer){
16669 var assert = require('assert')
16670 var bufferutils = require('./bufferutils')
16671 var crypto = require('./crypto')
16672
16673 var Transaction = require('./transaction')
16674
16675 function Block () {
16676 this.version = 1
16677 this.prevHash = null
16678 this.merkleRoot = null
16679 this.timestamp = 0
16680 this.bits = 0
16681 this.nonce = 0
16682 }
16683
16684 Block.fromBuffer = function (buffer) {
16685 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16686
16687 var offset = 0
16688 function readSlice (n) {
16689 offset += n
16690 return buffer.slice(offset - n, offset)
16691 }
16692
16693 function readUInt32 () {
16694 var i = buffer.readUInt32LE(offset)
16695 offset += 4
16696 return i
16697 }
16698
16699 var block = new Block()
16700 block.version = readUInt32()
16701 block.prevHash = readSlice(32)
16702 block.merkleRoot = readSlice(32)
16703 block.timestamp = readUInt32()
16704 block.bits = readUInt32()
16705 block.nonce = readUInt32()
16706
16707 if (buffer.length === 80) return block
16708
16709 function readVarInt () {
16710 var vi = bufferutils.readVarInt(buffer, offset)
16711 offset += vi.size
16712 return vi.number
16713 }
16714
16715 // FIXME: poor performance
16716 function readTransaction () {
16717 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16718
16719 offset += tx.toBuffer().length
16720 return tx
16721 }
16722
16723 var nTransactions = readVarInt()
16724 block.transactions = []
16725
16726 for (var i = 0; i < nTransactions; ++i) {
16727 var tx = readTransaction()
16728 block.transactions.push(tx)
16729 }
16730
16731 return block
16732 }
16733
16734 Block.fromHex = function (hex) {
16735 return Block.fromBuffer(new Buffer(hex, 'hex'))
16736 }
16737
16738 Block.prototype.getHash = function () {
16739 return crypto.hash256(this.toBuffer(true))
16740 }
16741
16742 Block.prototype.getId = function () {
16743 return bufferutils.reverse(this.getHash()).toString('hex')
16744 }
16745
16746 Block.prototype.getUTCDate = function () {
16747 var date = new Date(0) // epoch
16748 date.setUTCSeconds(this.timestamp)
16749
16750 return date
16751 }
16752
16753 Block.prototype.toBuffer = function (headersOnly) {
16754 var buffer = new Buffer(80)
16755
16756 var offset = 0
16757 function writeSlice (slice) {
16758 slice.copy(buffer, offset)
16759 offset += slice.length
16760 }
16761
16762 function writeUInt32 (i) {
16763 buffer.writeUInt32LE(i, offset)
16764 offset += 4
16765 }
16766
16767 writeUInt32(this.version)
16768 writeSlice(this.prevHash)
16769 writeSlice(this.merkleRoot)
16770 writeUInt32(this.timestamp)
16771 writeUInt32(this.bits)
16772 writeUInt32(this.nonce)
16773
16774 if (headersOnly || !this.transactions) return buffer
16775
16776 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16777 var txBuffers = this.transactions.map(function (tx) {
16778 return tx.toBuffer()
16779 })
16780
16781 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16782 }
16783
16784 Block.prototype.toHex = function (headersOnly) {
16785 return this.toBuffer(headersOnly).toString('hex')
16786 }
16787
16788 module.exports = Block
16789
16790 }).call(this,require("buffer").Buffer)
16791 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16792 (function (Buffer){
16793 var assert = require('assert')
16794 var opcodes = require('./opcodes')
16795
16796 // https://github.com/feross/buffer/blob/master/index.js#L1127
16797 function verifuint (value, max) {
16798 assert(typeof value === 'number', 'cannot write a non-number as a number')
16799 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16800 assert(value <= max, 'value is larger than maximum value for type')
16801 assert(Math.floor(value) === value, 'value has a fractional component')
16802 }
16803
16804 function pushDataSize (i) {
16805 return i < opcodes.OP_PUSHDATA1 ? 1
16806 : i < 0xff ? 2
16807 : i < 0xffff ? 3
16808 : 5
16809 }
16810
16811 function readPushDataInt (buffer, offset) {
16812 var opcode = buffer.readUInt8(offset)
16813 var number, size
16814
16815 // ~6 bit
16816 if (opcode < opcodes.OP_PUSHDATA1) {
16817 number = opcode
16818 size = 1
16819
16820 // 8 bit
16821 } else if (opcode === opcodes.OP_PUSHDATA1) {
16822 if (offset + 2 > buffer.length) return null
16823 number = buffer.readUInt8(offset + 1)
16824 size = 2
16825
16826 // 16 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA2) {
16828 if (offset + 3 > buffer.length) return null
16829 number = buffer.readUInt16LE(offset + 1)
16830 size = 3
16831
16832 // 32 bit
16833 } else {
16834 if (offset + 5 > buffer.length) return null
16835 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16836
16837 number = buffer.readUInt32LE(offset + 1)
16838 size = 5
16839 }
16840
16841 return {
16842 opcode: opcode,
16843 number: number,
16844 size: size
16845 }
16846 }
16847
16848 function readUInt64LE (buffer, offset) {
16849 var a = buffer.readUInt32LE(offset)
16850 var b = buffer.readUInt32LE(offset + 4)
16851 b *= 0x100000000
16852
16853 verifuint(b + a, 0x001fffffffffffff)
16854
16855 return b + a
16856 }
16857
16858 function readVarInt (buffer, offset) {
16859 var t = buffer.readUInt8(offset)
16860 var number, size
16861
16862 // 8 bit
16863 if (t < 253) {
16864 number = t
16865 size = 1
16866
16867 // 16 bit
16868 } else if (t < 254) {
16869 number = buffer.readUInt16LE(offset + 1)
16870 size = 3
16871
16872 // 32 bit
16873 } else if (t < 255) {
16874 number = buffer.readUInt32LE(offset + 1)
16875 size = 5
16876
16877 // 64 bit
16878 } else {
16879 number = readUInt64LE(buffer, offset + 1)
16880 size = 9
16881 }
16882
16883 return {
16884 number: number,
16885 size: size
16886 }
16887 }
16888
16889 function writePushDataInt (buffer, number, offset) {
16890 var size = pushDataSize(number)
16891
16892 // ~6 bit
16893 if (size === 1) {
16894 buffer.writeUInt8(number, offset)
16895
16896 // 8 bit
16897 } else if (size === 2) {
16898 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16899 buffer.writeUInt8(number, offset + 1)
16900
16901 // 16 bit
16902 } else if (size === 3) {
16903 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16904 buffer.writeUInt16LE(number, offset + 1)
16905
16906 // 32 bit
16907 } else {
16908 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16909 buffer.writeUInt32LE(number, offset + 1)
16910 }
16911
16912 return size
16913 }
16914
16915 function writeUInt64LE (buffer, value, offset) {
16916 verifuint(value, 0x001fffffffffffff)
16917
16918 buffer.writeInt32LE(value & -1, offset)
16919 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16920 }
16921
16922 function varIntSize (i) {
16923 return i < 253 ? 1
16924 : i < 0x10000 ? 3
16925 : i < 0x100000000 ? 5
16926 : 9
16927 }
16928
16929 function writeVarInt (buffer, number, offset) {
16930 var size = varIntSize(number)
16931
16932 // 8 bit
16933 if (size === 1) {
16934 buffer.writeUInt8(number, offset)
16935
16936 // 16 bit
16937 } else if (size === 3) {
16938 buffer.writeUInt8(253, offset)
16939 buffer.writeUInt16LE(number, offset + 1)
16940
16941 // 32 bit
16942 } else if (size === 5) {
16943 buffer.writeUInt8(254, offset)
16944 buffer.writeUInt32LE(number, offset + 1)
16945
16946 // 64 bit
16947 } else {
16948 buffer.writeUInt8(255, offset)
16949 writeUInt64LE(buffer, number, offset + 1)
16950 }
16951
16952 return size
16953 }
16954
16955 function varIntBuffer (i) {
16956 var size = varIntSize(i)
16957 var buffer = new Buffer(size)
16958 writeVarInt(buffer, i, 0)
16959
16960 return buffer
16961 }
16962
16963 function reverse (buffer) {
16964 var buffer2 = new Buffer(buffer)
16965 Array.prototype.reverse.call(buffer2)
16966 return buffer2
16967 }
16968
16969 module.exports = {
16970 pushDataSize: pushDataSize,
16971 readPushDataInt: readPushDataInt,
16972 readUInt64LE: readUInt64LE,
16973 readVarInt: readVarInt,
16974 reverse: reverse,
16975 varIntBuffer: varIntBuffer,
16976 varIntSize: varIntSize,
16977 writePushDataInt: writePushDataInt,
16978 writeUInt64LE: writeUInt64LE,
16979 writeVarInt: writeVarInt
16980 }
16981
16982 }).call(this,require("buffer").Buffer)
16983 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16984 var createHash = require('create-hash')
16985
16986 function hash160 (buffer) {
16987 return ripemd160(sha256(buffer))
16988 }
16989
16990 function hash256 (buffer) {
16991 return sha256(sha256(buffer))
16992 }
16993
16994 function ripemd160 (buffer) {
16995 return createHash('rmd160').update(buffer).digest()
16996 }
16997
16998 function sha1 (buffer) {
16999 return createHash('sha1').update(buffer).digest()
17000 }
17001
17002 function sha256 (buffer) {
17003 return createHash('sha256').update(buffer).digest()
17004 }
17005
17006 // FIXME: Name not consistent with others
17007 var createHmac = require('create-hmac')
17008
17009 function HmacSHA256 (buffer, secret) {
17010 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17011 return createHmac('sha256', secret).update(buffer).digest()
17012 }
17013
17014 function HmacSHA512 (buffer, secret) {
17015 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17016 return createHmac('sha512', secret).update(buffer).digest()
17017 }
17018
17019 module.exports = {
17020 ripemd160: ripemd160,
17021 sha1: sha1,
17022 sha256: sha256,
17023 hash160: hash160,
17024 hash256: hash256,
17025 HmacSHA256: HmacSHA256,
17026 HmacSHA512: HmacSHA512
17027 }
17028
17029 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17030 (function (Buffer){
17031 var assert = require('assert')
17032 var createHmac = require('create-hmac')
17033 var typeForce = require('typeforce')
17034
17035 var BigInteger = require('bigi')
17036 var ECSignature = require('./ecsignature')
17037
17038 var ZERO = new Buffer([0])
17039 var ONE = new Buffer([1])
17040
17041 // https://tools.ietf.org/html/rfc6979#section-3.2
17042 function deterministicGenerateK (curve, hash, d, checkSig) {
17043 typeForce('Buffer', hash)
17044 typeForce('BigInteger', d)
17045
17046 // FIXME: remove/uncomment for 2.0.0
17047 // typeForce('Function', checkSig)
17048
17049 if (typeof checkSig !== 'function') {
17050 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17051
17052 checkSig = function (k) {
17053 var G = curve.G
17054 var n = curve.n
17055 var e = BigInteger.fromBuffer(hash)
17056
17057 var Q = G.multiply(k)
17058
17059 if (curve.isInfinity(Q))
17060 return false
17061
17062 var r = Q.affineX.mod(n)
17063 if (r.signum() === 0)
17064 return false
17065
17066 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17067 if (s.signum() === 0)
17068 return false
17069
17070 return true
17071 }
17072 }
17073
17074 // sanity check
17075 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17076
17077 var x = d.toBuffer(32)
17078 var k = new Buffer(32)
17079 var v = new Buffer(32)
17080
17081 // Step A, ignored as hash already provided
17082 // Step B
17083 v.fill(1)
17084
17085 // Step C
17086 k.fill(0)
17087
17088 // Step D
17089 k = createHmac('sha256', k)
17090 .update(v)
17091 .update(ZERO)
17092 .update(x)
17093 .update(hash)
17094 .digest()
17095
17096 // Step E
17097 v = createHmac('sha256', k).update(v).digest()
17098
17099 // Step F
17100 k = createHmac('sha256', k)
17101 .update(v)
17102 .update(ONE)
17103 .update(x)
17104 .update(hash)
17105 .digest()
17106
17107 // Step G
17108 v = createHmac('sha256', k).update(v).digest()
17109
17110 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17111 // Step H2b
17112 v = createHmac('sha256', k).update(v).digest()
17113
17114 var T = BigInteger.fromBuffer(v)
17115
17116 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17117 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17118 k = createHmac('sha256', k)
17119 .update(v)
17120 .update(ZERO)
17121 .digest()
17122
17123 v = createHmac('sha256', k).update(v).digest()
17124
17125 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17126 // Step H2b again
17127 v = createHmac('sha256', k).update(v).digest()
17128 T = BigInteger.fromBuffer(v)
17129 }
17130
17131 return T
17132 }
17133
17134 function sign (curve, hash, d) {
17135 var r, s
17136
17137 var e = BigInteger.fromBuffer(hash)
17138 var n = curve.n
17139 var G = curve.G
17140
17141 deterministicGenerateK(curve, hash, d, function (k) {
17142 var Q = G.multiply(k)
17143
17144 if (curve.isInfinity(Q))
17145 return false
17146
17147 r = Q.affineX.mod(n)
17148 if (r.signum() === 0)
17149 return false
17150
17151 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17152 if (s.signum() === 0)
17153 return false
17154
17155 return true
17156 })
17157
17158 var N_OVER_TWO = n.shiftRight(1)
17159
17160 // enforce low S values, see bip62: 'low s values in signatures'
17161 if (s.compareTo(N_OVER_TWO) > 0) {
17162 s = n.subtract(s)
17163 }
17164
17165 return new ECSignature(r, s)
17166 }
17167
17168 function verifyRaw (curve, e, signature, Q) {
17169 var n = curve.n
17170 var G = curve.G
17171
17172 var r = signature.r
17173 var s = signature.s
17174
17175 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17176 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17177 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17178
17179 // c = s^-1 mod n
17180 var c = s.modInverse(n)
17181
17182 // 1.4.4 Compute u1 = es^−1 mod n
17183 // u2 = rs^−1 mod n
17184 var u1 = e.multiply(c).mod(n)
17185 var u2 = r.multiply(c).mod(n)
17186
17187 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17188 var R = G.multiplyTwo(u1, Q, u2)
17189 var v = R.affineX.mod(n)
17190
17191 // 1.4.5 (cont.) Enforce R is not at infinity
17192 if (curve.isInfinity(R)) return false
17193
17194 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17195 return v.equals(r)
17196 }
17197
17198 function verify (curve, hash, signature, Q) {
17199 // 1.4.2 H = Hash(M), already done by the user
17200 // 1.4.3 e = H
17201 var e = BigInteger.fromBuffer(hash)
17202
17203 return verifyRaw(curve, e, signature, Q)
17204 }
17205
17206 /**
17207 * Recover a public key from a signature.
17208 *
17209 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17210 * Key Recovery Operation".
17211 *
17212 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17213 */
17214 function recoverPubKey (curve, e, signature, i) {
17215 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17216
17217 var n = curve.n
17218 var G = curve.G
17219
17220 var r = signature.r
17221 var s = signature.s
17222
17223 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17224 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17225
17226 // A set LSB signifies that the y-coordinate is odd
17227 var isYOdd = i & 1
17228
17229 // The more significant bit specifies whether we should use the
17230 // first or second candidate key.
17231 var isSecondKey = i >> 1
17232
17233 // 1.1 Let x = r + jn
17234 var x = isSecondKey ? r.add(n) : r
17235 var R = curve.pointFromX(isYOdd, x)
17236
17237 // 1.4 Check that nR is at infinity
17238 var nR = R.multiply(n)
17239 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17240
17241 // Compute -e from e
17242 var eNeg = e.negate().mod(n)
17243
17244 // 1.6.1 Compute Q = r^-1 (sR - eG)
17245 // Q = r^-1 (sR + -eG)
17246 var rInv = r.modInverse(n)
17247
17248 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17249 curve.validate(Q)
17250
17251 return Q
17252 }
17253
17254 /**
17255 * Calculate pubkey extraction parameter.
17256 *
17257 * When extracting a pubkey from a signature, we have to
17258 * distinguish four different cases. Rather than putting this
17259 * burden on the verifier, Bitcoin includes a 2-bit value with the
17260 * signature.
17261 *
17262 * This function simply tries all four cases and returns the value
17263 * that resulted in a successful pubkey recovery.
17264 */
17265 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17266 for (var i = 0; i < 4; i++) {
17267 var Qprime = recoverPubKey(curve, e, signature, i)
17268
17269 // 1.6.2 Verify Q
17270 if (Qprime.equals(Q)) {
17271 return i
17272 }
17273 }
17274
17275 throw new Error('Unable to find valid recovery factor')
17276 }
17277
17278 module.exports = {
17279 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17280 deterministicGenerateK: deterministicGenerateK,
17281 recoverPubKey: recoverPubKey,
17282 sign: sign,
17283 verify: verify,
17284 verifyRaw: verifyRaw
17285 }
17286
17287 }).call(this,require("buffer").Buffer)
17288 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17289 (function (Buffer){
17290 var assert = require('assert')
17291 var base58check = require('bs58check')
17292 var ecdsa = require('./ecdsa')
17293 var networks = require('./networks')
17294 var randomBytes = require('randombytes')
17295 var typeForce = require('typeforce')
17296
17297 var BigInteger = require('bigi')
17298 var ECPubKey = require('./ecpubkey')
17299
17300 var ecurve = require('ecurve')
17301 var secp256k1 = ecurve.getCurveByName('secp256k1')
17302
17303 function ECKey (d, compressed) {
17304 assert(d.signum() > 0, 'Private key must be greater than 0')
17305 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17306
17307 var Q = ECKey.curve.G.multiply(d)
17308
17309 this.d = d
17310 this.pub = new ECPubKey(Q, compressed)
17311 }
17312
17313 // Constants
17314 ECKey.curve = secp256k1
17315
17316 // Static constructors
17317 ECKey.fromWIF = function (string) {
17318 var payload = base58check.decode(string)
17319 var compressed = false
17320
17321 // Ignore the version byte
17322 payload = payload.slice(1)
17323
17324 if (payload.length === 33) {
17325 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17326
17327 // Truncate the compression flag
17328 payload = payload.slice(0, -1)
17329 compressed = true
17330 }
17331
17332 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17333
17334 var d = BigInteger.fromBuffer(payload)
17335 return new ECKey(d, compressed)
17336 }
17337
17338 ECKey.makeRandom = function (compressed, rng) {
17339 rng = rng || randomBytes
17340
17341 var buffer = rng(32)
17342 typeForce('Buffer', buffer)
17343 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17344
17345 var d = BigInteger.fromBuffer(buffer)
17346 d = d.mod(ECKey.curve.n)
17347
17348 return new ECKey(d, compressed)
17349 }
17350
17351 // Export functions
17352 ECKey.prototype.toWIF = function (network) {
17353 network = network || networks.bitcoin
17354
17355 var bufferLen = this.pub.compressed ? 34 : 33
17356 var buffer = new Buffer(bufferLen)
17357
17358 buffer.writeUInt8(network.wif, 0)
17359 this.d.toBuffer(32).copy(buffer, 1)
17360
17361 if (this.pub.compressed) {
17362 buffer.writeUInt8(0x01, 33)
17363 }
17364
17365 return base58check.encode(buffer)
17366 }
17367
17368 // Operations
17369 ECKey.prototype.sign = function (hash) {
17370 return ecdsa.sign(ECKey.curve, hash, this.d)
17371 }
17372
17373 module.exports = ECKey
17374
17375 }).call(this,require("buffer").Buffer)
17376 },{"./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){
17377 (function (Buffer){
17378 var crypto = require('./crypto')
17379 var ecdsa = require('./ecdsa')
17380 var typeForce = require('typeforce')
17381 var networks = require('./networks')
17382
17383 var Address = require('./address')
17384
17385 var ecurve = require('ecurve')
17386 var secp256k1 = ecurve.getCurveByName('secp256k1')
17387
17388 function ECPubKey (Q, compressed) {
17389 if (compressed === undefined) {
17390 compressed = true
17391 }
17392
17393 typeForce('Point', Q)
17394 typeForce('Boolean', compressed)
17395
17396 this.compressed = compressed
17397 this.Q = Q
17398 }
17399
17400 // Constants
17401 ECPubKey.curve = secp256k1
17402
17403 // Static constructors
17404 ECPubKey.fromBuffer = function (buffer) {
17405 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17406 return new ECPubKey(Q, Q.compressed)
17407 }
17408
17409 ECPubKey.fromHex = function (hex) {
17410 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17411 }
17412
17413 // Operations
17414 ECPubKey.prototype.getAddress = function (network) {
17415 network = network || networks.bitcoin
17416
17417 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17418 }
17419
17420 ECPubKey.prototype.verify = function (hash, signature) {
17421 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17422 }
17423
17424 // Export functions
17425 ECPubKey.prototype.toBuffer = function () {
17426 return this.Q.getEncoded(this.compressed)
17427 }
17428
17429 ECPubKey.prototype.toHex = function () {
17430 return this.toBuffer().toString('hex')
17431 }
17432
17433 module.exports = ECPubKey
17434
17435 }).call(this,require("buffer").Buffer)
17436 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17437 (function (Buffer){
17438 var assert = require('assert')
17439 var typeForce = require('typeforce')
17440
17441 var BigInteger = require('bigi')
17442
17443 function ECSignature (r, s) {
17444 typeForce('BigInteger', r)
17445 typeForce('BigInteger', s)
17446
17447 this.r = r
17448 this.s = s
17449 }
17450
17451 ECSignature.parseCompact = function (buffer) {
17452 assert.equal(buffer.length, 65, 'Invalid signature length')
17453 var i = buffer.readUInt8(0) - 27
17454
17455 // At most 3 bits
17456 assert.equal(i, i & 7, 'Invalid signature parameter')
17457 var compressed = !!(i & 4)
17458
17459 // Recovery param only
17460 i = i & 3
17461
17462 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17463 var s = BigInteger.fromBuffer(buffer.slice(33))
17464
17465 return {
17466 compressed: compressed,
17467 i: i,
17468 signature: new ECSignature(r, s)
17469 }
17470 }
17471
17472 ECSignature.fromDER = function (buffer) {
17473 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17474 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17475 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17476
17477 var rLen = buffer.readUInt8(3)
17478 assert(rLen > 0, 'R length is zero')
17479
17480 var offset = 4 + rLen
17481 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17482
17483 var sLen = buffer.readUInt8(offset + 1)
17484 assert(sLen > 0, 'S length is zero')
17485
17486 var rB = buffer.slice(4, offset)
17487 var sB = buffer.slice(offset + 2)
17488 offset += 2 + sLen
17489
17490 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17491 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17492 }
17493
17494 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17495 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17496 }
17497
17498 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17499 var r = BigInteger.fromDERInteger(rB)
17500 var s = BigInteger.fromDERInteger(sB)
17501
17502 assert(r.signum() >= 0, 'R value is negative')
17503 assert(s.signum() >= 0, 'S value is negative')
17504
17505 return new ECSignature(r, s)
17506 }
17507
17508 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17509 ECSignature.parseScriptSignature = function (buffer) {
17510 var hashType = buffer.readUInt8(buffer.length - 1)
17511 var hashTypeMod = hashType & ~0x80
17512
17513 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17514
17515 return {
17516 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17517 hashType: hashType
17518 }
17519 }
17520
17521 ECSignature.prototype.toCompact = function (i, compressed) {
17522 if (compressed) {
17523 i += 4
17524 }
17525
17526 i += 27
17527
17528 var buffer = new Buffer(65)
17529 buffer.writeUInt8(i, 0)
17530
17531 this.r.toBuffer(32).copy(buffer, 1)
17532 this.s.toBuffer(32).copy(buffer, 33)
17533
17534 return buffer
17535 }
17536
17537 ECSignature.prototype.toDER = function () {
17538 var rBa = this.r.toDERInteger()
17539 var sBa = this.s.toDERInteger()
17540
17541 var sequence = []
17542
17543 // INTEGER
17544 sequence.push(0x02, rBa.length)
17545 sequence = sequence.concat(rBa)
17546
17547 // INTEGER
17548 sequence.push(0x02, sBa.length)
17549 sequence = sequence.concat(sBa)
17550
17551 // SEQUENCE
17552 sequence.unshift(0x30, sequence.length)
17553
17554 return new Buffer(sequence)
17555 }
17556
17557 ECSignature.prototype.toScriptSignature = function (hashType) {
17558 var hashTypeMod = hashType & ~0x80
17559 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17560
17561 var hashTypeBuffer = new Buffer(1)
17562 hashTypeBuffer.writeUInt8(hashType, 0)
17563
17564 return Buffer.concat([this.toDER(), hashTypeBuffer])
17565 }
17566
17567 module.exports = ECSignature
17568
17569 }).call(this,require("buffer").Buffer)
17570 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17571 (function (Buffer){
17572 var assert = require('assert')
17573 var base58check = require('bs58check')
17574 var bcrypto = require('./crypto')
17575 var createHmac = require('create-hmac')
17576 var typeForce = require('typeforce')
17577 var networks = require('./networks')
17578
17579 var BigInteger = require('bigi')
17580 var ECKey = require('./eckey')
17581 var ECPubKey = require('./ecpubkey')
17582
17583 var ecurve = require('ecurve')
17584 var curve = ecurve.getCurveByName('secp256k1')
17585
17586 function findBIP32NetworkByVersion (version) {
17587 for (var name in networks) {
17588 var network = networks[name]
17589
17590 if (version === network.bip32.private || version === network.bip32.public) {
17591 return network
17592 }
17593 }
17594
17595 assert(false, 'Could not find network for ' + version.toString(16))
17596 }
17597
17598 function HDNode (K, chainCode, network) {
17599 network = network || networks.bitcoin
17600
17601 typeForce('Buffer', chainCode)
17602
17603 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17604 assert(network.bip32, 'Unknown BIP32 constants for network')
17605
17606 this.chainCode = chainCode
17607 this.depth = 0
17608 this.index = 0
17609 this.parentFingerprint = 0x00000000
17610 this.network = network
17611
17612 if (K instanceof BigInteger) {
17613 this.privKey = new ECKey(K, true)
17614 this.pubKey = this.privKey.pub
17615 } else if (K instanceof ECKey) {
17616 assert(K.pub.compressed, 'ECKey must be compressed')
17617 this.privKey = K
17618 this.pubKey = K.pub
17619 } else if (K instanceof ECPubKey) {
17620 assert(K.compressed, 'ECPubKey must be compressed')
17621 this.pubKey = K
17622 } else {
17623 this.pubKey = new ECPubKey(K, true)
17624 }
17625 }
17626
17627 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17628 HDNode.HIGHEST_BIT = 0x80000000
17629 HDNode.LENGTH = 78
17630
17631 HDNode.fromSeedBuffer = function (seed, network) {
17632 typeForce('Buffer', seed)
17633
17634 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17635 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17636
17637 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17638 var IL = I.slice(0, 32)
17639 var IR = I.slice(32)
17640
17641 // In case IL is 0 or >= n, the master key is invalid
17642 // This is handled by `new ECKey` in the HDNode constructor
17643 var pIL = BigInteger.fromBuffer(IL)
17644
17645 return new HDNode(pIL, IR, network)
17646 }
17647
17648 HDNode.fromSeedHex = function (hex, network) {
17649 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17650 }
17651
17652 HDNode.fromBase58 = function (string, network) {
17653 return HDNode.fromBuffer(base58check.decode(string), network, true)
17654 }
17655
17656 // FIXME: remove in 2.x.y
17657 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17658 if (!__ignoreDeprecation) {
17659 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17660 }
17661
17662 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17663
17664 // 4 byte: version bytes
17665 var version = buffer.readUInt32BE(0)
17666
17667 if (network) {
17668 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17669
17670 // auto-detect
17671 } else {
17672 network = findBIP32NetworkByVersion(version)
17673 }
17674
17675 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17676 var depth = buffer.readUInt8(4)
17677
17678 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17679 var parentFingerprint = buffer.readUInt32BE(5)
17680 if (depth === 0) {
17681 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17682 }
17683
17684 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17685 // This is encoded in MSB order. (0x00000000 if master key)
17686 var index = buffer.readUInt32BE(9)
17687 assert(depth > 0 || index === 0, 'Invalid index')
17688
17689 // 32 bytes: the chain code
17690 var chainCode = buffer.slice(13, 45)
17691 var data, hd
17692
17693 // 33 bytes: private key data (0x00 + k)
17694 if (version === network.bip32.private) {
17695 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17696 data = buffer.slice(46, 78)
17697 var d = BigInteger.fromBuffer(data)
17698 hd = new HDNode(d, chainCode, network)
17699
17700 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17701 } else {
17702 data = buffer.slice(45, 78)
17703 var Q = ecurve.Point.decodeFrom(curve, data)
17704 assert.equal(Q.compressed, true, 'Invalid public key')
17705
17706 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17707 // If not, the extended public key is invalid.
17708 curve.validate(Q)
17709
17710 hd = new HDNode(Q, chainCode, network)
17711 }
17712
17713 hd.depth = depth
17714 hd.index = index
17715 hd.parentFingerprint = parentFingerprint
17716
17717 return hd
17718 }
17719
17720 // FIXME: remove in 2.x.y
17721 HDNode.fromHex = function (hex, network) {
17722 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17723 }
17724
17725 HDNode.prototype.getIdentifier = function () {
17726 return bcrypto.hash160(this.pubKey.toBuffer())
17727 }
17728
17729 HDNode.prototype.getFingerprint = function () {
17730 return this.getIdentifier().slice(0, 4)
17731 }
17732
17733 HDNode.prototype.getAddress = function () {
17734 return this.pubKey.getAddress(this.network)
17735 }
17736
17737 HDNode.prototype.neutered = function () {
17738 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17739 neutered.depth = this.depth
17740 neutered.index = this.index
17741 neutered.parentFingerprint = this.parentFingerprint
17742
17743 return neutered
17744 }
17745
17746 HDNode.prototype.toBase58 = function (isPrivate) {
17747 return base58check.encode(this.toBuffer(isPrivate, true))
17748 }
17749
17750 // FIXME: remove in 2.x.y
17751 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17752 if (isPrivate === undefined) {
17753 isPrivate = !!this.privKey
17754
17755 // FIXME: remove in 2.x.y
17756 } else {
17757 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17758 }
17759
17760 if (!__ignoreDeprecation) {
17761 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17762 }
17763
17764 // Version
17765 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17766 var buffer = new Buffer(HDNode.LENGTH)
17767
17768 // 4 bytes: version bytes
17769 buffer.writeUInt32BE(version, 0)
17770
17771 // Depth
17772 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17773 buffer.writeUInt8(this.depth, 4)
17774
17775 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17776 buffer.writeUInt32BE(this.parentFingerprint, 5)
17777
17778 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17779 // This is encoded in Big endian. (0x00000000 if master key)
17780 buffer.writeUInt32BE(this.index, 9)
17781
17782 // 32 bytes: the chain code
17783 this.chainCode.copy(buffer, 13)
17784
17785 // 33 bytes: the public key or private key data
17786 if (isPrivate) {
17787 // FIXME: remove in 2.x.y
17788 assert(this.privKey, 'Missing private key')
17789
17790 // 0x00 + k for private keys
17791 buffer.writeUInt8(0, 45)
17792 this.privKey.d.toBuffer(32).copy(buffer, 46)
17793 } else {
17794 // X9.62 encoding for public keys
17795 this.pubKey.toBuffer().copy(buffer, 45)
17796 }
17797
17798 return buffer
17799 }
17800
17801 // FIXME: remove in 2.x.y
17802 HDNode.prototype.toHex = function (isPrivate) {
17803 return this.toBuffer(isPrivate).toString('hex')
17804 }
17805
17806 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17807 HDNode.prototype.derive = function (index) {
17808 var isHardened = index >= HDNode.HIGHEST_BIT
17809 var indexBuffer = new Buffer(4)
17810 indexBuffer.writeUInt32BE(index, 0)
17811
17812 var data
17813
17814 // Hardened child
17815 if (isHardened) {
17816 assert(this.privKey, 'Could not derive hardened child key')
17817
17818 // data = 0x00 || ser256(kpar) || ser32(index)
17819 data = Buffer.concat([
17820 this.privKey.d.toBuffer(33),
17821 indexBuffer
17822 ])
17823
17824 // Normal child
17825 } else {
17826 // data = serP(point(kpar)) || ser32(index)
17827 // = serP(Kpar) || ser32(index)
17828 data = Buffer.concat([
17829 this.pubKey.toBuffer(),
17830 indexBuffer
17831 ])
17832 }
17833
17834 var I = createHmac('sha512', this.chainCode).update(data).digest()
17835 var IL = I.slice(0, 32)
17836 var IR = I.slice(32)
17837
17838 var pIL = BigInteger.fromBuffer(IL)
17839
17840 // In case parse256(IL) >= n, proceed with the next value for i
17841 if (pIL.compareTo(curve.n) >= 0) {
17842 return this.derive(index + 1)
17843 }
17844
17845 // Private parent key -> private child key
17846 var hd
17847 if (this.privKey) {
17848 // ki = parse256(IL) + kpar (mod n)
17849 var ki = pIL.add(this.privKey.d).mod(curve.n)
17850
17851 // In case ki == 0, proceed with the next value for i
17852 if (ki.signum() === 0) {
17853 return this.derive(index + 1)
17854 }
17855
17856 hd = new HDNode(ki, IR, this.network)
17857
17858 // Public parent key -> public child key
17859 } else {
17860 // Ki = point(parse256(IL)) + Kpar
17861 // = G*IL + Kpar
17862 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17863
17864 // In case Ki is the point at infinity, proceed with the next value for i
17865 if (curve.isInfinity(Ki)) {
17866 return this.derive(index + 1)
17867 }
17868
17869 hd = new HDNode(Ki, IR, this.network)
17870 }
17871
17872 hd.depth = this.depth + 1
17873 hd.index = index
17874 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17875
17876 return hd
17877 }
17878
17879 HDNode.prototype.deriveHardened = function (index) {
17880 // Only derives hardened private keys by default
17881 return this.derive(index + HDNode.HIGHEST_BIT)
17882 }
17883
17884 HDNode.prototype.toString = HDNode.prototype.toBase58
17885
17886 module.exports = HDNode
17887
17888 }).call(this,require("buffer").Buffer)
17889 },{"./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){
17890 module.exports = {
17891 Address: require('./address'),
17892 base58check: require('./base58check'),
17893 Block: require('./block'),
17894 bufferutils: require('./bufferutils'),
17895 crypto: require('./crypto'),
17896 ecdsa: require('./ecdsa'),
17897 ECKey: require('./eckey'),
17898 ECPubKey: require('./ecpubkey'),
17899 ECSignature: require('./ecsignature'),
17900 Message: require('./message'),
17901 opcodes: require('./opcodes'),
17902 HDNode: require('./hdnode'),
17903 Script: require('./script'),
17904 scripts: require('./scripts'),
17905 Transaction: require('./transaction'),
17906 TransactionBuilder: require('./transaction_builder'),
17907 networks: require('./networks'),
17908 Wallet: require('./wallet')
17909 }
17910
17911 },{"./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){
17912 (function (Buffer){
17913 var bufferutils = require('./bufferutils')
17914 var crypto = require('./crypto')
17915 var ecdsa = require('./ecdsa')
17916 var networks = require('./networks')
17917
17918 var BigInteger = require('bigi')
17919 var ECPubKey = require('./ecpubkey')
17920 var ECSignature = require('./ecsignature')
17921
17922 var ecurve = require('ecurve')
17923 var ecparams = ecurve.getCurveByName('secp256k1')
17924
17925 function magicHash (message, network) {
17926 var magicPrefix = new Buffer(network.magicPrefix)
17927 var messageBuffer = new Buffer(message)
17928 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17929
17930 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17931 return crypto.hash256(buffer)
17932 }
17933
17934 function sign (privKey, message, network) {
17935 network = network || networks.bitcoin
17936
17937 var hash = magicHash(message, network)
17938 var signature = privKey.sign(hash)
17939 var e = BigInteger.fromBuffer(hash)
17940 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17941
17942 return signature.toCompact(i, privKey.pub.compressed)
17943 }
17944
17945 // TODO: network could be implied from address
17946 function verify (address, signature, message, network) {
17947 if (!Buffer.isBuffer(signature)) {
17948 signature = new Buffer(signature, 'base64')
17949 }
17950
17951 network = network || networks.bitcoin
17952
17953 var hash = magicHash(message, network)
17954 var parsed = ECSignature.parseCompact(signature)
17955 var e = BigInteger.fromBuffer(hash)
17956 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17957
17958 var pubKey = new ECPubKey(Q, parsed.compressed)
17959 return pubKey.getAddress(network).toString() === address.toString()
17960 }
17961
17962 module.exports = {
17963 magicHash: magicHash,
17964 sign: sign,
17965 verify: verify
17966 }
17967
17968 }).call(this,require("buffer").Buffer)
17969 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17970 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17971 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17972
17973 var networks = {
17974 bitcoin: {
17975 magicPrefix: '\x18Bitcoin Signed Message:\n',
17976 bip32: {
17977 public: 0x0488b21e,
17978 private: 0x0488ade4
17979 },
17980 pubKeyHash: 0x00,
17981 scriptHash: 0x05,
17982 wif: 0x80,
17983 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17984 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17985 estimateFee: estimateFee('bitcoin')
17986 },
17987 testnet: {
17988 magicPrefix: '\x18Bitcoin Signed Message:\n',
17989 bip32: {
17990 public: 0x043587cf,
17991 private: 0x04358394
17992 },
17993 pubKeyHash: 0x6f,
17994 scriptHash: 0xc4,
17995 wif: 0xef,
17996 dustThreshold: 546,
17997 feePerKb: 10000,
17998 estimateFee: estimateFee('testnet')
17999 },
18000 litecoin: {
18001 magicPrefix: '\x19Litecoin Signed Message:\n',
18002 bip32: {
18003 public: 0x019da462,
18004 private: 0x019d9cfe
18005 },
18006 pubKeyHash: 0x30,
18007 scriptHash: 0x05,
18008 wif: 0xb0,
18009 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18010 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18011 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18012 estimateFee: estimateFee('litecoin')
18013 },
18014 dogecoin: {
18015 magicPrefix: '\x19Dogecoin Signed Message:\n',
18016 bip32: {
18017 public: 0x02facafd,
18018 private: 0x02fac398
18019 },
18020 pubKeyHash: 0x1e,
18021 scriptHash: 0x16,
18022 wif: 0x9e,
18023 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18024 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18025 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18026 estimateFee: estimateFee('dogecoin')
18027 },
18028 viacoin: {
18029 magicPrefix: '\x18Viacoin Signed Message:\n',
18030 bip32: {
18031 public: 0x0488b21e,
18032 private: 0x0488ade4
18033 },
18034 pubKeyHash: 0x47,
18035 scriptHash: 0x21,
18036 wif: 0xc7,
18037 dustThreshold: 560,
18038 dustSoftThreshold: 100000,
18039 feePerKb: 100000, //
18040 estimateFee: estimateFee('viacoin')
18041 },
18042 viacointestnet: {
18043 magicPrefix: '\x18Viacoin Signed Message:\n',
18044 bip32: {
18045 public: 0x043587cf,
18046 private: 0x04358394
18047 },
18048 pubKeyHash: 0x7f,
18049 scriptHash: 0xc4,
18050 wif: 0xff,
18051 dustThreshold: 560,
18052 dustSoftThreshold: 100000,
18053 feePerKb: 100000,
18054 estimateFee: estimateFee('viacointestnet')
18055 },
18056 gamerscoin: {
18057 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18058 bip32: {
18059 public: 0x019da462,
18060 private: 0x019d9cfe
18061 },
18062 pubKeyHash: 0x26,
18063 scriptHash: 0x05,
18064 wif: 0xA6,
18065 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18066 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18067 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18068 estimateFee: estimateFee('gamerscoin')
18069 },
18070 jumbucks: {
18071 magicPrefix: '\x19Jumbucks Signed Message:\n',
18072 bip32: {
18073 public: 0x037a689a,
18074 private: 0x037a6460
18075 },
18076 pubKeyHash: 0x2b,
18077 scriptHash: 0x05,
18078 wif: 0xab,
18079 dustThreshold: 0,
18080 dustSoftThreshold: 10000,
18081 feePerKb: 10000,
18082 estimateFee: estimateFee('jumbucks')
18083 },
18084 zetacoin: {
18085 magicPrefix: '\x18Zetacoin Signed Message:\n',
18086 bip32: {
18087 public: 0x0488b21e,
18088 private: 0x0488ade4
18089 },
18090 pubKeyHash: 0x50,
18091 scriptHash: 0x09,
18092 wif: 0xe0,
18093 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18094 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18095 estimateFee: estimateFee('zetacoin')
18096 }
18097 }
18098
18099 function estimateFee (type) {
18100 return function (tx) {
18101 var network = networks[type]
18102 var baseFee = network.feePerKb
18103 var byteSize = tx.toBuffer().length
18104
18105 var fee = baseFee * Math.ceil(byteSize / 1000)
18106 if (network.dustSoftThreshold === undefined) return fee
18107
18108 tx.outs.forEach(function (e) {
18109 if (e.value < network.dustSoftThreshold) {
18110 fee += baseFee
18111 }
18112 })
18113
18114 return fee
18115 }
18116 }
18117
18118 module.exports = networks
18119
18120 },{}],67:[function(require,module,exports){
18121 module.exports = {
18122 // push value
18123 OP_FALSE: 0,
18124 OP_0: 0,
18125 OP_PUSHDATA1: 76,
18126 OP_PUSHDATA2: 77,
18127 OP_PUSHDATA4: 78,
18128 OP_1NEGATE: 79,
18129 OP_RESERVED: 80,
18130 OP_1: 81,
18131 OP_TRUE: 81,
18132 OP_2: 82,
18133 OP_3: 83,
18134 OP_4: 84,
18135 OP_5: 85,
18136 OP_6: 86,
18137 OP_7: 87,
18138 OP_8: 88,
18139 OP_9: 89,
18140 OP_10: 90,
18141 OP_11: 91,
18142 OP_12: 92,
18143 OP_13: 93,
18144 OP_14: 94,
18145 OP_15: 95,
18146 OP_16: 96,
18147
18148 // control
18149 OP_NOP: 97,
18150 OP_VER: 98,
18151 OP_IF: 99,
18152 OP_NOTIF: 100,
18153 OP_VERIF: 101,
18154 OP_VERNOTIF: 102,
18155 OP_ELSE: 103,
18156 OP_ENDIF: 104,
18157 OP_VERIFY: 105,
18158 OP_RETURN: 106,
18159
18160 // stack ops
18161 OP_TOALTSTACK: 107,
18162 OP_FROMALTSTACK: 108,
18163 OP_2DROP: 109,
18164 OP_2DUP: 110,
18165 OP_3DUP: 111,
18166 OP_2OVER: 112,
18167 OP_2ROT: 113,
18168 OP_2SWAP: 114,
18169 OP_IFDUP: 115,
18170 OP_DEPTH: 116,
18171 OP_DROP: 117,
18172 OP_DUP: 118,
18173 OP_NIP: 119,
18174 OP_OVER: 120,
18175 OP_PICK: 121,
18176 OP_ROLL: 122,
18177 OP_ROT: 123,
18178 OP_SWAP: 124,
18179 OP_TUCK: 125,
18180
18181 // splice ops
18182 OP_CAT: 126,
18183 OP_SUBSTR: 127,
18184 OP_LEFT: 128,
18185 OP_RIGHT: 129,
18186 OP_SIZE: 130,
18187
18188 // bit logic
18189 OP_INVERT: 131,
18190 OP_AND: 132,
18191 OP_OR: 133,
18192 OP_XOR: 134,
18193 OP_EQUAL: 135,
18194 OP_EQUALVERIFY: 136,
18195 OP_RESERVED1: 137,
18196 OP_RESERVED2: 138,
18197
18198 // numeric
18199 OP_1ADD: 139,
18200 OP_1SUB: 140,
18201 OP_2MUL: 141,
18202 OP_2DIV: 142,
18203 OP_NEGATE: 143,
18204 OP_ABS: 144,
18205 OP_NOT: 145,
18206 OP_0NOTEQUAL: 146,
18207
18208 OP_ADD: 147,
18209 OP_SUB: 148,
18210 OP_MUL: 149,
18211 OP_DIV: 150,
18212 OP_MOD: 151,
18213 OP_LSHIFT: 152,
18214 OP_RSHIFT: 153,
18215
18216 OP_BOOLAND: 154,
18217 OP_BOOLOR: 155,
18218 OP_NUMEQUAL: 156,
18219 OP_NUMEQUALVERIFY: 157,
18220 OP_NUMNOTEQUAL: 158,
18221 OP_LESSTHAN: 159,
18222 OP_GREATERTHAN: 160,
18223 OP_LESSTHANOREQUAL: 161,
18224 OP_GREATERTHANOREQUAL: 162,
18225 OP_MIN: 163,
18226 OP_MAX: 164,
18227
18228 OP_WITHIN: 165,
18229
18230 // crypto
18231 OP_RIPEMD160: 166,
18232 OP_SHA1: 167,
18233 OP_SHA256: 168,
18234 OP_HASH160: 169,
18235 OP_HASH256: 170,
18236 OP_CODESEPARATOR: 171,
18237 OP_CHECKSIG: 172,
18238 OP_CHECKSIGVERIFY: 173,
18239 OP_CHECKMULTISIG: 174,
18240 OP_CHECKMULTISIGVERIFY: 175,
18241
18242 // expansion
18243 OP_NOP1: 176,
18244 OP_NOP2: 177,
18245 OP_NOP3: 178,
18246 OP_NOP4: 179,
18247 OP_NOP5: 180,
18248 OP_NOP6: 181,
18249 OP_NOP7: 182,
18250 OP_NOP8: 183,
18251 OP_NOP9: 184,
18252 OP_NOP10: 185,
18253
18254 // template matching params
18255 OP_PUBKEYHASH: 253,
18256 OP_PUBKEY: 254,
18257 OP_INVALIDOPCODE: 255
18258 }
18259
18260 },{}],68:[function(require,module,exports){
18261 (function (Buffer){
18262 var assert = require('assert')
18263 var bufferutils = require('./bufferutils')
18264 var crypto = require('./crypto')
18265 var typeForce = require('typeforce')
18266 var opcodes = require('./opcodes')
18267
18268 function Script (buffer, chunks) {
18269 typeForce('Buffer', buffer)
18270 typeForce('Array', chunks)
18271
18272 this.buffer = buffer
18273 this.chunks = chunks
18274 }
18275
18276 Script.fromASM = function (asm) {
18277 var strChunks = asm.split(' ')
18278 var chunks = strChunks.map(function (strChunk) {
18279 // opcode
18280 if (strChunk in opcodes) {
18281 return opcodes[strChunk]
18282
18283 // data chunk
18284 } else {
18285 return new Buffer(strChunk, 'hex')
18286 }
18287 })
18288
18289 return Script.fromChunks(chunks)
18290 }
18291
18292 Script.fromBuffer = function (buffer) {
18293 var chunks = []
18294 var i = 0
18295
18296 while (i < buffer.length) {
18297 var opcode = buffer.readUInt8(i)
18298
18299 // data chunk
18300 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18301 var d = bufferutils.readPushDataInt(buffer, i)
18302
18303 // did reading a pushDataInt fail? return non-chunked script
18304 if (d === null) return new Script(buffer, [])
18305 i += d.size
18306
18307 // attempt to read too much data?
18308 if (i + d.number > buffer.length) return new Script(buffer, [])
18309
18310 var data = buffer.slice(i, i + d.number)
18311 i += d.number
18312
18313 chunks.push(data)
18314
18315 // opcode
18316 } else {
18317 chunks.push(opcode)
18318
18319 i += 1
18320 }
18321 }
18322
18323 return new Script(buffer, chunks)
18324 }
18325
18326 Script.fromChunks = function (chunks) {
18327 typeForce('Array', chunks)
18328
18329 var bufferSize = chunks.reduce(function (accum, chunk) {
18330 // data chunk
18331 if (Buffer.isBuffer(chunk)) {
18332 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18333 }
18334
18335 // opcode
18336 return accum + 1
18337 }, 0.0)
18338
18339 var buffer = new Buffer(bufferSize)
18340 var offset = 0
18341
18342 chunks.forEach(function (chunk) {
18343 // data chunk
18344 if (Buffer.isBuffer(chunk)) {
18345 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18346
18347 chunk.copy(buffer, offset)
18348 offset += chunk.length
18349
18350 // opcode
18351 } else {
18352 buffer.writeUInt8(chunk, offset)
18353 offset += 1
18354 }
18355 })
18356
18357 assert.equal(offset, buffer.length, 'Could not decode chunks')
18358 return new Script(buffer, chunks)
18359 }
18360
18361 Script.fromHex = function (hex) {
18362 return Script.fromBuffer(new Buffer(hex, 'hex'))
18363 }
18364
18365 Script.EMPTY = Script.fromChunks([])
18366
18367 Script.prototype.getHash = function () {
18368 return crypto.hash160(this.buffer)
18369 }
18370
18371 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18372 Script.prototype.without = function (needle) {
18373 return Script.fromChunks(this.chunks.filter(function (op) {
18374 return op !== needle
18375 }))
18376 }
18377
18378 var reverseOps = []
18379 for (var op in opcodes) {
18380 var code = opcodes[op]
18381 reverseOps[code] = op
18382 }
18383
18384 Script.prototype.toASM = function () {
18385 return this.chunks.map(function (chunk) {
18386 // data chunk
18387 if (Buffer.isBuffer(chunk)) {
18388 return chunk.toString('hex')
18389
18390 // opcode
18391 } else {
18392 return reverseOps[chunk]
18393 }
18394 }).join(' ')
18395 }
18396
18397 Script.prototype.toBuffer = function () {
18398 return this.buffer
18399 }
18400
18401 Script.prototype.toHex = function () {
18402 return this.toBuffer().toString('hex')
18403 }
18404
18405 module.exports = Script
18406
18407 }).call(this,require("buffer").Buffer)
18408 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18409 (function (Buffer){
18410 var assert = require('assert')
18411 var ops = require('./opcodes')
18412 var typeForce = require('typeforce')
18413
18414 var ecurve = require('ecurve')
18415 var curve = ecurve.getCurveByName('secp256k1')
18416
18417 var ECSignature = require('./ecsignature')
18418 var Script = require('./script')
18419
18420 function isCanonicalPubKey (buffer) {
18421 if (!Buffer.isBuffer(buffer)) return false
18422
18423 try {
18424 ecurve.Point.decodeFrom(curve, buffer)
18425 } catch (e) {
18426 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18427 throw e
18428
18429 return false
18430 }
18431
18432 return true
18433 }
18434
18435 function isCanonicalSignature (buffer) {
18436 if (!Buffer.isBuffer(buffer)) return false
18437
18438 try {
18439 ECSignature.parseScriptSignature(buffer)
18440 } catch (e) {
18441 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/))) {
18442 throw e
18443 }
18444
18445 return false
18446 }
18447
18448 return true
18449 }
18450
18451 function isPubKeyHashInput (script) {
18452 return script.chunks.length === 2 &&
18453 isCanonicalSignature(script.chunks[0]) &&
18454 isCanonicalPubKey(script.chunks[1])
18455 }
18456
18457 function isPubKeyHashOutput (script) {
18458 return script.chunks.length === 5 &&
18459 script.chunks[0] === ops.OP_DUP &&
18460 script.chunks[1] === ops.OP_HASH160 &&
18461 Buffer.isBuffer(script.chunks[2]) &&
18462 script.chunks[2].length === 20 &&
18463 script.chunks[3] === ops.OP_EQUALVERIFY &&
18464 script.chunks[4] === ops.OP_CHECKSIG
18465 }
18466
18467 function isPubKeyInput (script) {
18468 return script.chunks.length === 1 &&
18469 isCanonicalSignature(script.chunks[0])
18470 }
18471
18472 function isPubKeyOutput (script) {
18473 return script.chunks.length === 2 &&
18474 isCanonicalPubKey(script.chunks[0]) &&
18475 script.chunks[1] === ops.OP_CHECKSIG
18476 }
18477
18478 function isScriptHashInput (script, allowIncomplete) {
18479 if (script.chunks.length < 2) return false
18480
18481 var lastChunk = script.chunks[script.chunks.length - 1]
18482 if (!Buffer.isBuffer(lastChunk)) return false
18483
18484 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18485 var redeemScript = Script.fromBuffer(lastChunk)
18486
18487 // is redeemScript a valid script?
18488 if (redeemScript.chunks.length === 0) return false
18489
18490 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18491 }
18492
18493 function isScriptHashOutput (script) {
18494 return script.chunks.length === 3 &&
18495 script.chunks[0] === ops.OP_HASH160 &&
18496 Buffer.isBuffer(script.chunks[1]) &&
18497 script.chunks[1].length === 20 &&
18498 script.chunks[2] === ops.OP_EQUAL
18499 }
18500
18501 // allowIncomplete is to account for combining signatures
18502 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18503 function isMultisigInput (script, allowIncomplete) {
18504 if (script.chunks.length < 2) return false
18505 if (script.chunks[0] !== ops.OP_0) return false
18506
18507 if (allowIncomplete) {
18508 return script.chunks.slice(1).every(function (chunk) {
18509 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18510 })
18511 }
18512
18513 return script.chunks.slice(1).every(isCanonicalSignature)
18514 }
18515
18516 function isMultisigOutput (script) {
18517 if (script.chunks.length < 4) return false
18518 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18519
18520 var mOp = script.chunks[0]
18521 if (mOp === ops.OP_0) return false
18522 if (mOp < ops.OP_1) return false
18523 if (mOp > ops.OP_16) return false
18524
18525 var nOp = script.chunks[script.chunks.length - 2]
18526 if (nOp === ops.OP_0) return false
18527 if (nOp < ops.OP_1) return false
18528 if (nOp > ops.OP_16) return false
18529
18530 var m = mOp - (ops.OP_1 - 1)
18531 var n = nOp - (ops.OP_1 - 1)
18532 if (n < m) return false
18533
18534 var pubKeys = script.chunks.slice(1, -2)
18535 if (n < pubKeys.length) return false
18536
18537 return pubKeys.every(isCanonicalPubKey)
18538 }
18539
18540 function isNullDataOutput (script) {
18541 return script.chunks[0] === ops.OP_RETURN
18542 }
18543
18544 function classifyOutput (script) {
18545 typeForce('Script', script)
18546
18547 if (isPubKeyHashOutput(script)) {
18548 return 'pubkeyhash'
18549 } else if (isScriptHashOutput(script)) {
18550 return 'scripthash'
18551 } else if (isMultisigOutput(script)) {
18552 return 'multisig'
18553 } else if (isPubKeyOutput(script)) {
18554 return 'pubkey'
18555 } else if (isNullDataOutput(script)) {
18556 return 'nulldata'
18557 }
18558
18559 return 'nonstandard'
18560 }
18561
18562 function classifyInput (script, allowIncomplete) {
18563 typeForce('Script', script)
18564
18565 if (isPubKeyHashInput(script)) {
18566 return 'pubkeyhash'
18567 } else if (isMultisigInput(script, allowIncomplete)) {
18568 return 'multisig'
18569 } else if (isScriptHashInput(script, allowIncomplete)) {
18570 return 'scripthash'
18571 } else if (isPubKeyInput(script)) {
18572 return 'pubkey'
18573 }
18574
18575 return 'nonstandard'
18576 }
18577
18578 // Standard Script Templates
18579 // {pubKey} OP_CHECKSIG
18580 function pubKeyOutput (pubKey) {
18581 return Script.fromChunks([
18582 pubKey.toBuffer(),
18583 ops.OP_CHECKSIG
18584 ])
18585 }
18586
18587 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18588 function pubKeyHashOutput (hash) {
18589 typeForce('Buffer', hash)
18590
18591 return Script.fromChunks([
18592 ops.OP_DUP,
18593 ops.OP_HASH160,
18594 hash,
18595 ops.OP_EQUALVERIFY,
18596 ops.OP_CHECKSIG
18597 ])
18598 }
18599
18600 // OP_HASH160 {scriptHash} OP_EQUAL
18601 function scriptHashOutput (hash) {
18602 typeForce('Buffer', hash)
18603
18604 return Script.fromChunks([
18605 ops.OP_HASH160,
18606 hash,
18607 ops.OP_EQUAL
18608 ])
18609 }
18610
18611 // m [pubKeys ...] n OP_CHECKMULTISIG
18612 function multisigOutput (m, pubKeys) {
18613 typeForce(['ECPubKey'], pubKeys)
18614
18615 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18616
18617 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18618 return pubKey.toBuffer()
18619 })
18620 var n = pubKeys.length
18621
18622 return Script.fromChunks([].concat(
18623 (ops.OP_1 - 1) + m,
18624 pubKeyBuffers,
18625 (ops.OP_1 - 1) + n,
18626 ops.OP_CHECKMULTISIG
18627 ))
18628 }
18629
18630 // {signature}
18631 function pubKeyInput (signature) {
18632 typeForce('Buffer', signature)
18633
18634 return Script.fromChunks([signature])
18635 }
18636
18637 // {signature} {pubKey}
18638 function pubKeyHashInput (signature, pubKey) {
18639 typeForce('Buffer', signature)
18640
18641 return Script.fromChunks([signature, pubKey.toBuffer()])
18642 }
18643
18644 // <scriptSig> {serialized scriptPubKey script}
18645 function scriptHashInput (scriptSig, scriptPubKey) {
18646 return Script.fromChunks([].concat(
18647 scriptSig.chunks,
18648 scriptPubKey.toBuffer()
18649 ))
18650 }
18651
18652 // OP_0 [signatures ...]
18653 function multisigInput (signatures, scriptPubKey) {
18654 if (scriptPubKey) {
18655 assert(isMultisigOutput(scriptPubKey))
18656
18657 var mOp = scriptPubKey.chunks[0]
18658 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18659 var m = mOp - (ops.OP_1 - 1)
18660 var n = nOp - (ops.OP_1 - 1)
18661
18662 assert(signatures.length >= m, 'Not enough signatures provided')
18663 assert(signatures.length <= n, 'Too many signatures provided')
18664 }
18665
18666 return Script.fromChunks([].concat(ops.OP_0, signatures))
18667 }
18668
18669 function nullDataOutput (data) {
18670 return Script.fromChunks([ops.OP_RETURN, data])
18671 }
18672
18673 module.exports = {
18674 isCanonicalPubKey: isCanonicalPubKey,
18675 isCanonicalSignature: isCanonicalSignature,
18676 isPubKeyHashInput: isPubKeyHashInput,
18677 isPubKeyHashOutput: isPubKeyHashOutput,
18678 isPubKeyInput: isPubKeyInput,
18679 isPubKeyOutput: isPubKeyOutput,
18680 isScriptHashInput: isScriptHashInput,
18681 isScriptHashOutput: isScriptHashOutput,
18682 isMultisigInput: isMultisigInput,
18683 isMultisigOutput: isMultisigOutput,
18684 isNullDataOutput: isNullDataOutput,
18685 classifyOutput: classifyOutput,
18686 classifyInput: classifyInput,
18687 pubKeyOutput: pubKeyOutput,
18688 pubKeyHashOutput: pubKeyHashOutput,
18689 scriptHashOutput: scriptHashOutput,
18690 multisigOutput: multisigOutput,
18691 pubKeyInput: pubKeyInput,
18692 pubKeyHashInput: pubKeyHashInput,
18693 scriptHashInput: scriptHashInput,
18694 multisigInput: multisigInput,
18695 dataOutput: function (data) {
18696 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18697 return nullDataOutput(data)
18698 },
18699 nullDataOutput: nullDataOutput
18700 }
18701
18702 }).call(this,require("buffer").Buffer)
18703 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18704 (function (Buffer){
18705 var assert = require('assert')
18706 var bufferutils = require('./bufferutils')
18707 var crypto = require('./crypto')
18708 var typeForce = require('typeforce')
18709 var opcodes = require('./opcodes')
18710 var scripts = require('./scripts')
18711
18712 var Address = require('./address')
18713 var ECSignature = require('./ecsignature')
18714 var Script = require('./script')
18715
18716 function Transaction () {
18717 this.version = 1
18718 this.locktime = 0
18719 this.ins = []
18720 this.outs = []
18721 }
18722
18723 Transaction.DEFAULT_SEQUENCE = 0xffffffff
18724 Transaction.SIGHASH_ALL = 0x01
18725 Transaction.SIGHASH_NONE = 0x02
18726 Transaction.SIGHASH_SINGLE = 0x03
18727 Transaction.SIGHASH_ANYONECANPAY = 0x80
18728
18729 Transaction.fromBuffer = function (buffer, __disableAssert) {
18730 var offset = 0
18731 function readSlice (n) {
18732 offset += n
18733 return buffer.slice(offset - n, offset)
18734 }
18735
18736 function readUInt32 () {
18737 var i = buffer.readUInt32LE(offset)
18738 offset += 4
18739 return i
18740 }
18741
18742 function readUInt64 () {
18743 var i = bufferutils.readUInt64LE(buffer, offset)
18744 offset += 8
18745 return i
18746 }
18747
18748 function readVarInt () {
18749 var vi = bufferutils.readVarInt(buffer, offset)
18750 offset += vi.size
18751 return vi.number
18752 }
18753
18754 function readScript () {
18755 return Script.fromBuffer(readSlice(readVarInt()))
18756 }
18757
18758 function readGenerationScript () {
18759 return new Script(readSlice(readVarInt()), [])
18760 }
18761
18762 var tx = new Transaction()
18763 tx.version = readUInt32()
18764
18765 var vinLen = readVarInt()
18766 for (var i = 0; i < vinLen; ++i) {
18767 var hash = readSlice(32)
18768
18769 if (Transaction.isCoinbaseHash(hash)) {
18770 tx.ins.push({
18771 hash: hash,
18772 index: readUInt32(),
18773 script: readGenerationScript(),
18774 sequence: readUInt32()
18775 })
18776 } else {
18777 tx.ins.push({
18778 hash: hash,
18779 index: readUInt32(),
18780 script: readScript(),
18781 sequence: readUInt32()
18782 })
18783 }
18784 }
18785
18786 var voutLen = readVarInt()
18787 for (i = 0; i < voutLen; ++i) {
18788 tx.outs.push({
18789 value: readUInt64(),
18790 script: readScript()
18791 })
18792 }
18793
18794 tx.locktime = readUInt32()
18795
18796 if (!__disableAssert) {
18797 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18798 }
18799
18800 return tx
18801 }
18802
18803 Transaction.fromHex = function (hex) {
18804 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18805 }
18806
18807 Transaction.isCoinbaseHash = function (buffer) {
18808 return Array.prototype.every.call(buffer, function (x) {
18809 return x === 0
18810 })
18811 }
18812
18813 /**
18814 * Create a new txIn.
18815 *
18816 * Can be called with any of:
18817 *
18818 * - A transaction and an index
18819 * - A transaction hash and an index
18820 *
18821 * Note that this method does not sign the created input.
18822 */
18823 Transaction.prototype.addInput = function (hash, index, sequence, script) {
18824 if (sequence === undefined || sequence === null) {
18825 sequence = Transaction.DEFAULT_SEQUENCE
18826 }
18827
18828 script = script || Script.EMPTY
18829
18830 if (typeof hash === 'string') {
18831 // TxId hex is big-endian, we need little-endian
18832 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18833 } else if (hash instanceof Transaction) {
18834 hash = hash.getHash()
18835 }
18836
18837 typeForce('Buffer', hash)
18838 typeForce('Number', index)
18839 typeForce('Number', sequence)
18840 typeForce('Script', script)
18841
18842 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18843
18844 // Add the input and return the input's index
18845 return (this.ins.push({
18846 hash: hash,
18847 index: index,
18848 script: script,
18849 sequence: sequence
18850 }) - 1)
18851 }
18852
18853 /**
18854 * Create a new txOut.
18855 *
18856 * Can be called with:
18857 *
18858 * - A base58 address string and a value
18859 * - An Address object and a value
18860 * - A scriptPubKey Script and a value
18861 */
18862 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18863 // Attempt to get a valid address if it's a base58 address string
18864 if (typeof scriptPubKey === 'string') {
18865 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18866 }
18867
18868 // Attempt to get a valid script if it's an Address object
18869 if (scriptPubKey instanceof Address) {
18870 scriptPubKey = scriptPubKey.toOutputScript()
18871 }
18872
18873 typeForce('Script', scriptPubKey)
18874 typeForce('Number', value)
18875
18876 // Add the output and return the output's index
18877 return (this.outs.push({
18878 script: scriptPubKey,
18879 value: value
18880 }) - 1)
18881 }
18882
18883 Transaction.prototype.clone = function () {
18884 var newTx = new Transaction()
18885 newTx.version = this.version
18886 newTx.locktime = this.locktime
18887
18888 newTx.ins = this.ins.map(function (txIn) {
18889 return {
18890 hash: txIn.hash,
18891 index: txIn.index,
18892 script: txIn.script,
18893 sequence: txIn.sequence
18894 }
18895 })
18896
18897 newTx.outs = this.outs.map(function (txOut) {
18898 return {
18899 script: txOut.script,
18900 value: txOut.value
18901 }
18902 })
18903
18904 return newTx
18905 }
18906
18907 /**
18908 * Hash transaction for signing a specific input.
18909 *
18910 * Bitcoin uses a different hash for each signed transaction input. This
18911 * method copies the transaction, makes the necessary changes based on the
18912 * hashType, serializes and finally hashes the result. This hash can then be
18913 * used to sign the transaction input in question.
18914 */
18915 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18916 // FIXME: remove in 2.x.y
18917 if (arguments[0] instanceof Script) {
18918 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18919
18920 // swap the arguments (must be stored in tmp, arguments is special)
18921 var tmp = arguments[0]
18922 inIndex = arguments[1]
18923 prevOutScript = tmp
18924 }
18925
18926 typeForce('Number', inIndex)
18927 typeForce('Script', prevOutScript)
18928 typeForce('Number', hashType)
18929
18930 assert(inIndex >= 0, 'Invalid vin index')
18931 assert(inIndex < this.ins.length, 'Invalid vin index')
18932
18933 var txTmp = this.clone()
18934 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18935
18936 // Blank out other inputs' signatures
18937 txTmp.ins.forEach(function (txIn) {
18938 txIn.script = Script.EMPTY
18939 })
18940 txTmp.ins[inIndex].script = hashScript
18941
18942 var hashTypeModifier = hashType & 0x1f
18943
18944 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18945 assert(false, 'SIGHASH_NONE not yet supported')
18946 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18947 assert(false, 'SIGHASH_SINGLE not yet supported')
18948 }
18949
18950 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18951 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18952 }
18953
18954 var hashTypeBuffer = new Buffer(4)
18955 hashTypeBuffer.writeInt32LE(hashType, 0)
18956
18957 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18958 return crypto.hash256(buffer)
18959 }
18960
18961 Transaction.prototype.getHash = function () {
18962 return crypto.hash256(this.toBuffer())
18963 }
18964
18965 Transaction.prototype.getId = function () {
18966 // TxHash is little-endian, we need big-endian
18967 return bufferutils.reverse(this.getHash()).toString('hex')
18968 }
18969
18970 Transaction.prototype.toBuffer = function () {
18971 function scriptSize (script) {
18972 var length = script.buffer.length
18973
18974 return bufferutils.varIntSize(length) + length
18975 }
18976
18977 var buffer = new Buffer(
18978 8 +
18979 bufferutils.varIntSize(this.ins.length) +
18980 bufferutils.varIntSize(this.outs.length) +
18981 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18982 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18983 )
18984
18985 var offset = 0
18986 function writeSlice (slice) {
18987 slice.copy(buffer, offset)
18988 offset += slice.length
18989 }
18990
18991 function writeUInt32 (i) {
18992 buffer.writeUInt32LE(i, offset)
18993 offset += 4
18994 }
18995
18996 function writeUInt64 (i) {
18997 bufferutils.writeUInt64LE(buffer, i, offset)
18998 offset += 8
18999 }
19000
19001 function writeVarInt (i) {
19002 var n = bufferutils.writeVarInt(buffer, i, offset)
19003 offset += n
19004 }
19005
19006 writeUInt32(this.version)
19007 writeVarInt(this.ins.length)
19008
19009 this.ins.forEach(function (txIn) {
19010 writeSlice(txIn.hash)
19011 writeUInt32(txIn.index)
19012 writeVarInt(txIn.script.buffer.length)
19013 writeSlice(txIn.script.buffer)
19014 writeUInt32(txIn.sequence)
19015 })
19016
19017 writeVarInt(this.outs.length)
19018 this.outs.forEach(function (txOut) {
19019 writeUInt64(txOut.value)
19020 writeVarInt(txOut.script.buffer.length)
19021 writeSlice(txOut.script.buffer)
19022 })
19023
19024 writeUInt32(this.locktime)
19025
19026 return buffer
19027 }
19028
19029 Transaction.prototype.toHex = function () {
19030 return this.toBuffer().toString('hex')
19031 }
19032
19033 Transaction.prototype.setInputScript = function (index, script) {
19034 typeForce('Number', index)
19035 typeForce('Script', script)
19036
19037 this.ins[index].script = script
19038 }
19039
19040 // FIXME: remove in 2.x.y
19041 Transaction.prototype.sign = function (index, privKey, hashType) {
19042 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19043
19044 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19045 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19046
19047 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19048 this.setInputScript(index, scriptSig)
19049 }
19050
19051 // FIXME: remove in 2.x.y
19052 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19053 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19054
19055 hashType = hashType || Transaction.SIGHASH_ALL
19056
19057 var hash = this.hashForSignature(index, prevOutScript, hashType)
19058 var signature = privKey.sign(hash)
19059
19060 return signature.toScriptSignature(hashType)
19061 }
19062
19063 // FIXME: remove in 2.x.y
19064 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19065 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19066
19067 var parsed = ECSignature.parseScriptSignature(buffer)
19068 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19069
19070 return pubKey.verify(hash, parsed.signature)
19071 }
19072
19073 module.exports = Transaction
19074
19075 }).call(this,require("buffer").Buffer)
19076 },{"./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){
19077 (function (Buffer){
19078 var assert = require('assert')
19079 var ops = require('./opcodes')
19080 var scripts = require('./scripts')
19081
19082 var ECPubKey = require('./ecpubkey')
19083 var ECSignature = require('./ecsignature')
19084 var Script = require('./script')
19085 var Transaction = require('./transaction')
19086
19087 function extractInput (txIn) {
19088 var redeemScript
19089 var scriptSig = txIn.script
19090 var prevOutScript
19091 var prevOutType = scripts.classifyInput(scriptSig, true)
19092 var scriptType
19093
19094 // Re-classify if scriptHash
19095 if (prevOutType === 'scripthash') {
19096 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19097 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19098
19099 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19100 scriptType = scripts.classifyInput(scriptSig, true)
19101 } else {
19102 scriptType = prevOutType
19103 }
19104
19105 // Extract hashType, pubKeys and signatures
19106 var hashType, parsed, pubKeys, signatures
19107
19108 switch (scriptType) {
19109 case 'pubkeyhash': {
19110 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19111 hashType = parsed.hashType
19112 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19113 signatures = [parsed.signature]
19114 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19115
19116 break
19117 }
19118
19119 case 'pubkey': {
19120 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19121 hashType = parsed.hashType
19122 signatures = [parsed.signature]
19123
19124 if (redeemScript) {
19125 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19126 }
19127
19128 break
19129 }
19130
19131 case 'multisig': {
19132 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19133 if (chunk === ops.OP_0) return chunk
19134
19135 var parsed = ECSignature.parseScriptSignature(chunk)
19136 hashType = parsed.hashType
19137
19138 return parsed.signature
19139 })
19140
19141 if (redeemScript) {
19142 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19143 }
19144
19145 break
19146 }
19147 }
19148
19149 return {
19150 hashType: hashType,
19151 prevOutScript: prevOutScript,
19152 prevOutType: prevOutType,
19153 pubKeys: pubKeys,
19154 redeemScript: redeemScript,
19155 scriptType: scriptType,
19156 signatures: signatures
19157 }
19158 }
19159
19160 function TransactionBuilder () {
19161 this.prevTxMap = {}
19162 this.prevOutScripts = {}
19163 this.prevOutTypes = {}
19164
19165 this.inputs = []
19166 this.tx = new Transaction()
19167 }
19168
19169 TransactionBuilder.fromTransaction = function (transaction) {
19170 var txb = new TransactionBuilder()
19171
19172 // Copy other transaction fields
19173 txb.tx.version = transaction.version
19174 txb.tx.locktime = transaction.locktime
19175
19176 // Extract/add inputs
19177 transaction.ins.forEach(function (txIn) {
19178 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19179 })
19180
19181 // Extract/add outputs
19182 transaction.outs.forEach(function (txOut) {
19183 txb.addOutput(txOut.script, txOut.value)
19184 })
19185
19186 // Extract/add signatures
19187 txb.inputs = transaction.ins.map(function (txIn) {
19188 // TODO: remove me after testcase added
19189 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19190
19191 // Ignore empty scripts
19192 if (txIn.script.buffer.length === 0) return {}
19193
19194 return extractInput(txIn)
19195 })
19196
19197 return txb
19198 }
19199
19200 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19201 var prevOutHash
19202
19203 // txId
19204 if (typeof prevTx === 'string') {
19205 prevOutHash = new Buffer(prevTx, 'hex')
19206
19207 // TxId hex is big-endian, we want little-endian hash
19208 Array.prototype.reverse.call(prevOutHash)
19209
19210 // Transaction
19211 } else if (prevTx instanceof Transaction) {
19212 prevOutHash = prevTx.getHash()
19213 prevOutScript = prevTx.outs[index].script
19214
19215 // txHash
19216 } else {
19217 prevOutHash = prevTx
19218 }
19219
19220 var input = {}
19221 if (prevOutScript) {
19222 var prevOutType = scripts.classifyOutput(prevOutScript)
19223
19224 // if we can, extract pubKey information
19225 switch (prevOutType) {
19226 case 'multisig': {
19227 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19228 break
19229 }
19230
19231 case 'pubkey': {
19232 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19233 break
19234 }
19235 }
19236
19237 if (prevOutType !== 'scripthash') {
19238 input.scriptType = prevOutType
19239 }
19240
19241 input.prevOutScript = prevOutScript
19242 input.prevOutType = prevOutType
19243 }
19244
19245 assert(this.inputs.every(function (input2) {
19246 if (input2.hashType === undefined) return true
19247
19248 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19249 }), 'No, this would invalidate signatures')
19250
19251 var prevOut = prevOutHash.toString('hex') + ':' + index
19252 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19253
19254 var vin = this.tx.addInput(prevOutHash, index, sequence)
19255 this.inputs[vin] = input
19256 this.prevTxMap[prevOut] = vin
19257
19258 return vin
19259 }
19260
19261 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19262 assert(this.inputs.every(function (input) {
19263 if (input.hashType === undefined) return true
19264
19265 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19266 }), 'No, this would invalidate signatures')
19267
19268 return this.tx.addOutput(scriptPubKey, value)
19269 }
19270
19271 TransactionBuilder.prototype.build = function () {
19272 return this.__build(false)
19273 }
19274 TransactionBuilder.prototype.buildIncomplete = function () {
19275 return this.__build(true)
19276 }
19277
19278 var canSignTypes = {
19279 'pubkeyhash': true,
19280 'multisig': true,
19281 'pubkey': true
19282 }
19283
19284 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19285 if (!allowIncomplete) {
19286 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19287 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19288 }
19289
19290 var tx = this.tx.clone()
19291
19292 // Create script signatures from signature meta-data
19293 this.inputs.forEach(function (input, index) {
19294 var scriptType = input.scriptType
19295 var scriptSig
19296
19297 if (!allowIncomplete) {
19298 assert(!!scriptType, 'Transaction is not complete')
19299 assert(scriptType in canSignTypes, scriptType + ' not supported')
19300 assert(input.signatures, 'Transaction is missing signatures')
19301 }
19302
19303 if (input.signatures) {
19304 switch (scriptType) {
19305 case 'pubkeyhash': {
19306 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19307 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19308 break
19309 }
19310
19311 case 'multisig': {
19312 // Array.prototype.map is sparse-compatible
19313 var msSignatures = input.signatures.map(function (signature) {
19314 return signature && signature.toScriptSignature(input.hashType)
19315 })
19316
19317 // fill in blanks with OP_0
19318 if (allowIncomplete) {
19319 for (var i = 0; i < msSignatures.length; ++i) {
19320 if (msSignatures[i]) continue
19321
19322 msSignatures[i] = ops.OP_0
19323 }
19324 } else {
19325 // Array.prototype.filter returns non-sparse array
19326 msSignatures = msSignatures.filter(function (x) { return x })
19327 }
19328
19329 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19330 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19331 break
19332 }
19333
19334 case 'pubkey': {
19335 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19336 scriptSig = scripts.pubKeyInput(pkSignature)
19337 break
19338 }
19339 }
19340 }
19341
19342 // did we build a scriptSig?
19343 if (scriptSig) {
19344 // wrap as scriptHash if necessary
19345 if (input.prevOutType === 'scripthash') {
19346 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19347 }
19348
19349 tx.setInputScript(index, scriptSig)
19350 }
19351 })
19352
19353 return tx
19354 }
19355
19356 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19357 assert(index in this.inputs, 'No input at index: ' + index)
19358 hashType = hashType || Transaction.SIGHASH_ALL
19359
19360 var input = this.inputs[index]
19361 var canSign = input.hashType &&
19362 input.prevOutScript &&
19363 input.prevOutType &&
19364 input.pubKeys &&
19365 input.scriptType &&
19366 input.signatures
19367
19368 // are we almost ready to sign?
19369 if (canSign) {
19370 // if redeemScript was provided, enforce consistency
19371 if (redeemScript) {
19372 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19373 }
19374
19375 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19376
19377 // no? prepare
19378 } else {
19379 // must be pay-to-scriptHash?
19380 if (redeemScript) {
19381 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19382 if (input.prevOutScript) {
19383 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19384
19385 var scriptHash = input.prevOutScript.chunks[1]
19386 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19387 }
19388
19389 var scriptType = scripts.classifyOutput(redeemScript)
19390 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19391
19392 var pubKeys = []
19393 switch (scriptType) {
19394 case 'multisig': {
19395 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19396 break
19397 }
19398
19399 case 'pubkeyhash': {
19400 var pkh1 = redeemScript.chunks[2]
19401 var pkh2 = privKey.pub.getAddress().hash
19402
19403 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19404 pubKeys = [privKey.pub]
19405 break
19406 }
19407
19408 case 'pubkey': {
19409 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19410 break
19411 }
19412 }
19413
19414 if (!input.prevOutScript) {
19415 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19416 input.prevOutType = 'scripthash'
19417 }
19418
19419 input.pubKeys = pubKeys
19420 input.redeemScript = redeemScript
19421 input.scriptType = scriptType
19422
19423 // cannot be pay-to-scriptHash
19424 } else {
19425 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19426
19427 // can we otherwise sign this?
19428 if (input.scriptType) {
19429 assert(input.pubKeys, input.scriptType + ' not supported')
19430
19431 // we know nothin' Jon Snow, assume pubKeyHash
19432 } else {
19433 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19434 input.prevOutType = 'pubkeyhash'
19435 input.pubKeys = [privKey.pub]
19436 input.scriptType = input.prevOutType
19437 }
19438 }
19439
19440 input.hashType = hashType
19441 input.signatures = input.signatures || []
19442 }
19443
19444 var signatureScript = input.redeemScript || input.prevOutScript
19445 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19446
19447 // enforce signature order matches public keys
19448 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19449 // maintain a local copy of unmatched signatures
19450 var unmatched = input.signatures.slice()
19451
19452 input.signatures = input.pubKeys.map(function (pubKey) {
19453 var match
19454
19455 // check for any matching signatures
19456 unmatched.some(function (signature, i) {
19457 if (!pubKey.verify(signatureHash, signature)) return false
19458 match = signature
19459
19460 // remove matched signature from unmatched
19461 unmatched.splice(i, 1)
19462
19463 return true
19464 })
19465
19466 return match || undefined
19467 })
19468 }
19469
19470 // enforce in order signing of public keys
19471 assert(input.pubKeys.some(function (pubKey, i) {
19472 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19473
19474 assert(!input.signatures[i], 'Signature already exists')
19475 var signature = privKey.sign(signatureHash)
19476 input.signatures[i] = signature
19477
19478 return true
19479 }, this), 'privateKey cannot sign for this input')
19480 }
19481
19482 module.exports = TransactionBuilder
19483
19484 }).call(this,require("buffer").Buffer)
19485 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19486 (function (Buffer){
19487 var assert = require('assert')
19488 var bufferutils = require('./bufferutils')
19489 var typeForce = require('typeforce')
19490 var networks = require('./networks')
19491 var randomBytes = require('randombytes')
19492
19493 var Address = require('./address')
19494 var HDNode = require('./hdnode')
19495 var TransactionBuilder = require('./transaction_builder')
19496 var Script = require('./script')
19497
19498 function Wallet (seed, network) {
19499 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19500
19501 seed = seed || randomBytes(32)
19502 network = network || networks.bitcoin
19503
19504 // Stored in a closure to make accidental serialization less likely
19505 var masterKey = HDNode.fromSeedBuffer(seed, network)
19506
19507 // HD first-level child derivation method should be hardened
19508 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19509 var accountZero = masterKey.deriveHardened(0)
19510 var externalAccount = accountZero.derive(0)
19511 var internalAccount = accountZero.derive(1)
19512
19513 this.addresses = []
19514 this.changeAddresses = []
19515 this.network = network
19516 this.unspents = []
19517
19518 // FIXME: remove in 2.0.0
19519 this.unspentMap = {}
19520
19521 // FIXME: remove in 2.0.0
19522 var me = this
19523 this.newMasterKey = function (seed) {
19524 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19525
19526 seed = seed || randomBytes(32)
19527 masterKey = HDNode.fromSeedBuffer(seed, network)
19528
19529 accountZero = masterKey.deriveHardened(0)
19530 externalAccount = accountZero.derive(0)
19531 internalAccount = accountZero.derive(1)
19532
19533 me.addresses = []
19534 me.changeAddresses = []
19535
19536 me.unspents = []
19537 me.unspentMap = {}
19538 }
19539
19540 this.getMasterKey = function () {
19541 return masterKey
19542 }
19543 this.getAccountZero = function () {
19544 return accountZero
19545 }
19546 this.getExternalAccount = function () {
19547 return externalAccount
19548 }
19549 this.getInternalAccount = function () {
19550 return internalAccount
19551 }
19552 }
19553
19554 Wallet.prototype.createTransaction = function (to, value, options) {
19555 // FIXME: remove in 2.0.0
19556 if (typeof options !== 'object') {
19557 if (options !== undefined) {
19558 console.warn('Non options object parameters are deprecated, use options object instead')
19559
19560 options = {
19561 fixedFee: arguments[2],
19562 changeAddress: arguments[3]
19563 }
19564 }
19565 }
19566
19567 options = options || {}
19568
19569 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19570
19571 var changeAddress = options.changeAddress
19572 var fixedFee = options.fixedFee
19573 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19574
19575 // filter by minConf, then pending and sort by descending value
19576 var unspents = this.unspents.filter(function (unspent) {
19577 return unspent.confirmations >= minConf
19578 }).filter(function (unspent) {
19579 return !unspent.pending
19580 }).sort(function (o1, o2) {
19581 return o2.value - o1.value
19582 })
19583
19584 var accum = 0
19585 var addresses = []
19586 var subTotal = value
19587
19588 var txb = new TransactionBuilder()
19589 txb.addOutput(to, value)
19590
19591 for (var i = 0; i < unspents.length; ++i) {
19592 var unspent = unspents[i]
19593 addresses.push(unspent.address)
19594
19595 txb.addInput(unspent.txHash, unspent.index)
19596
19597 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19598
19599 accum += unspent.value
19600 subTotal = value + fee
19601
19602 if (accum >= subTotal) {
19603 var change = accum - subTotal
19604
19605 if (change > this.network.dustThreshold) {
19606 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19607 }
19608
19609 break
19610 }
19611 }
19612
19613 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19614
19615 return this.signWith(txb, addresses).build()
19616 }
19617
19618 // FIXME: remove in 2.0.0
19619 Wallet.prototype.processPendingTx = function (tx) {
19620 this.__processTx(tx, true)
19621 }
19622
19623 // FIXME: remove in 2.0.0
19624 Wallet.prototype.processConfirmedTx = function (tx) {
19625 this.__processTx(tx, false)
19626 }
19627
19628 // FIXME: remove in 2.0.0
19629 Wallet.prototype.__processTx = function (tx, isPending) {
19630 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19631
19632 var txId = tx.getId()
19633 var txHash = tx.getHash()
19634
19635 tx.outs.forEach(function (txOut, i) {
19636 var address
19637
19638 try {
19639 address = Address.fromOutputScript(txOut.script, this.network).toString()
19640 } catch (e) {
19641 if (!(e.message.match(/has no matching Address/)))
19642 throw e
19643 }
19644
19645 var myAddresses = this.addresses.concat(this.changeAddresses)
19646 if (myAddresses.indexOf(address) > -1) {
19647 var lookup = txId + ':' + i
19648 if (lookup in this.unspentMap) return
19649
19650 // its unique, add it
19651 var unspent = {
19652 address: address,
19653 confirmations: 0, // no way to determine this without more information
19654 index: i,
19655 txHash: txHash,
19656 txId: txId,
19657 value: txOut.value,
19658 pending: isPending
19659 }
19660
19661 this.unspentMap[lookup] = unspent
19662 this.unspents.push(unspent)
19663 }
19664 }, this)
19665
19666 tx.ins.forEach(function (txIn) {
19667 // copy and convert to big-endian hex
19668 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19669
19670 var lookup = txInId + ':' + txIn.index
19671 if (!(lookup in this.unspentMap)) return
19672
19673 var unspent = this.unspentMap[lookup]
19674
19675 if (isPending) {
19676 unspent.pending = true
19677 unspent.spent = true
19678 } else {
19679 delete this.unspentMap[lookup]
19680
19681 this.unspents = this.unspents.filter(function (unspent2) {
19682 return unspent !== unspent2
19683 })
19684 }
19685 }, this)
19686 }
19687
19688 Wallet.prototype.generateAddress = function () {
19689 var k = this.addresses.length
19690 var address = this.getExternalAccount().derive(k).getAddress()
19691
19692 this.addresses.push(address.toString())
19693
19694 return this.getReceiveAddress()
19695 }
19696
19697 Wallet.prototype.generateChangeAddress = function () {
19698 var k = this.changeAddresses.length
19699 var address = this.getInternalAccount().derive(k).getAddress()
19700
19701 this.changeAddresses.push(address.toString())
19702
19703 return this.getChangeAddress()
19704 }
19705
19706 Wallet.prototype.getAddress = function () {
19707 if (this.addresses.length === 0) {
19708 this.generateAddress()
19709 }
19710
19711 return this.addresses[this.addresses.length - 1]
19712 }
19713
19714 Wallet.prototype.getBalance = function (minConf) {
19715 minConf = minConf || 0
19716
19717 return this.unspents.filter(function (unspent) {
19718 return unspent.confirmations >= minConf
19719
19720 // FIXME: remove spent filter in 2.0.0
19721 }).filter(function (unspent) {
19722 return !unspent.spent
19723 }).reduce(function (accum, unspent) {
19724 return accum + unspent.value
19725 }, 0)
19726 }
19727
19728 Wallet.prototype.getChangeAddress = function () {
19729 if (this.changeAddresses.length === 0) {
19730 this.generateChangeAddress()
19731 }
19732
19733 return this.changeAddresses[this.changeAddresses.length - 1]
19734 }
19735
19736 Wallet.prototype.getInternalPrivateKey = function (index) {
19737 return this.getInternalAccount().derive(index).privKey
19738 }
19739
19740 Wallet.prototype.getPrivateKey = function (index) {
19741 return this.getExternalAccount().derive(index).privKey
19742 }
19743
19744 Wallet.prototype.getPrivateKeyForAddress = function (address) {
19745 var index
19746
19747 if ((index = this.addresses.indexOf(address)) > -1) {
19748 return this.getPrivateKey(index)
19749 }
19750
19751 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19752 return this.getInternalPrivateKey(index)
19753 }
19754
19755 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
19756 }
19757
19758 Wallet.prototype.getUnspentOutputs = function (minConf) {
19759 minConf = minConf || 0
19760
19761 return this.unspents.filter(function (unspent) {
19762 return unspent.confirmations >= minConf
19763
19764 // FIXME: remove spent filter in 2.0.0
19765 }).filter(function (unspent) {
19766 return !unspent.spent
19767 }).map(function (unspent) {
19768 return {
19769 address: unspent.address,
19770 confirmations: unspent.confirmations,
19771 index: unspent.index,
19772 txId: unspent.txId,
19773 value: unspent.value,
19774
19775 // FIXME: remove in 2.0.0
19776 hash: unspent.txId,
19777 pending: unspent.pending
19778 }
19779 })
19780 }
19781
19782 Wallet.prototype.setUnspentOutputs = function (unspents) {
19783 this.unspentMap = {}
19784 this.unspents = unspents.map(function (unspent) {
19785 // FIXME: remove unspent.hash in 2.0.0
19786 var txId = unspent.txId || unspent.hash
19787 var index = unspent.index
19788
19789 // FIXME: remove in 2.0.0
19790 if (unspent.hash !== undefined) {
19791 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19792 }
19793
19794 // FIXME: remove in 2.0.0
19795 if (index === undefined) {
19796 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19797 index = unspent.outputIndex
19798 }
19799
19800 typeForce('String', txId)
19801 typeForce('Number', index)
19802 typeForce('Number', unspent.value)
19803
19804 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19805 assert.doesNotThrow(function () {
19806 Address.fromBase58Check(unspent.address)
19807 }, 'Expected Base58 Address, got ' + unspent.address)
19808 assert(isFinite(index), 'Expected finite index, got ' + index)
19809
19810 // FIXME: remove branch in 2.0.0
19811 if (unspent.confirmations !== undefined) {
19812 typeForce('Number', unspent.confirmations)
19813 }
19814
19815 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19816
19817 unspent = {
19818 address: unspent.address,
19819 confirmations: unspent.confirmations || 0,
19820 index: index,
19821 txHash: txHash,
19822 txId: txId,
19823 value: unspent.value,
19824
19825 // FIXME: remove in 2.0.0
19826 pending: unspent.pending || false
19827 }
19828
19829 // FIXME: remove in 2.0.0
19830 this.unspentMap[txId + ':' + index] = unspent
19831
19832 return unspent
19833 }, this)
19834 }
19835
19836 Wallet.prototype.signWith = function (tx, addresses) {
19837 addresses.forEach(function (address, i) {
19838 var privKey = this.getPrivateKeyForAddress(address)
19839
19840 tx.sign(i, privKey)
19841 }, this)
19842
19843 return tx
19844 }
19845
19846 function estimatePaddedFee (tx, network) {
19847 var tmpTx = tx.clone()
19848 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19849
19850 return network.estimateFee(tmpTx)
19851 }
19852
19853 // FIXME: 1.0.0 shims, remove in 2.0.0
19854 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19855 Wallet.prototype.createTx = Wallet.prototype.createTransaction
19856
19857 module.exports = Wallet
19858
19859 }).call(this,require("buffer").Buffer)
19860 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19861 });</script>
19862 <script>bitcoin.networks.shadow = {
19863 magicPrefix: '\x19ShadowCash Signed Message:\n',
19864 bip32: {
19865 public: 0xEE80286A,
19866 private: 0xEE8031E8
19867 },
19868 pubKeyHash: 0x3f,
19869 scriptHash: 0x7d,
19870 wif: 0xbf,
19871 dustThreshold: 0,
19872 feePerKb: 1000,
19873 estimateFee: function() { return "unused in this app" },
19874 };
19875
19876 bitcoin.networks.shadowtn = {
19877 magicPrefix: '\x19ShadowCash Signed Message:\n',
19878 bip32: {
19879 public: 0x76C0FDFB,
19880 private: 0x76C1077A
19881 },
19882 pubKeyHash: 0x7f,
19883 scriptHash: 0xc4,
19884 wif: 0xff,
19885 dustThreshold: 0,
19886 feePerKb: 1000,
19887 estimateFee: function() { return "unused in this app" },
19888 };
19889
19890 bitcoin.networks.clam = {
19891 bip32: {
19892 public: 0xa8c26d64,
19893 private: 0xa8c17826
19894 },
19895 pubKeyHash: 0x89,
19896 wif: 0x85,
19897 };
19898
19899 bitcoin.networks.dash = {
19900 bip32: {
19901 public: 0x0488b21e,
19902 private: 0x0488ade4
19903 },
19904 pubKeyHash: 0x4c,
19905 scriptHash: 0x10,
19906 wif: 0xcc,
19907 };
19908
19909 bitcoin.networks.game = {
19910 bip32: {
19911 public: 0x0488b21e,
19912 private: 0x0488ade4
19913 },
19914 pubKeyHash: 0x26,
19915 scriptHash: 0x05,
19916 wif: 0xa6,
19917 };
19918
19919 bitcoin.networks.namecoin = {
19920 bip32: {
19921 public: 0x0488b21e,
19922 private: 0x0488ade4
19923 },
19924 pubKeyHash: 0x34,
19925 //scriptHash: 0x10,
19926 wif: 0x80,
19927 };
19928
19929 bitcoin.networks.peercoin = {
19930 bip32: {
19931 public: 0x0488b21e,
19932 private: 0x0488ade4
19933 },
19934 pubKeyHash: 0x37,
19935 //scriptHash: 0x10,
19936 wif: 0xb7,
19937 };
19938
19939 </script>
19940 <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){
19941 (function (global){
19942 'use strict';
19943
19944 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19945 // original notice:
19946
19947 /*!
19948 * The buffer module from node.js, for the browser.
19949 *
19950 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19951 * @license MIT
19952 */
19953 function compare(a, b) {
19954 if (a === b) {
19955 return 0;
19956 }
19957
19958 var x = a.length;
19959 var y = b.length;
19960
19961 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
19962 if (a[i] !== b[i]) {
19963 x = a[i];
19964 y = b[i];
19965 break;
19966 }
19967 }
19968
19969 if (x < y) {
19970 return -1;
19971 }
19972 if (y < x) {
19973 return 1;
19974 }
19975 return 0;
19976 }
19977 function isBuffer(b) {
19978 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
19979 return global.Buffer.isBuffer(b);
19980 }
19981 return !!(b != null && b._isBuffer);
19982 }
19983
19984 // based on node assert, original notice:
19985
19986 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
19987 //
19988 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
19989 //
19990 // Originally from narwhal.js (http://narwhaljs.org)
19991 // Copyright (c) 2009 Thomas Robinson <280north.com>
19992 //
19993 // Permission is hereby granted, free of charge, to any person obtaining a copy
19994 // of this software and associated documentation files (the 'Software'), to
19995 // deal in the Software without restriction, including without limitation the
19996 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
19997 // sell copies of the Software, and to permit persons to whom the Software is
19998 // furnished to do so, subject to the following conditions:
19999 //
20000 // The above copyright notice and this permission notice shall be included in
20001 // all copies or substantial portions of the Software.
20002 //
20003 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20004 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20005 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20006 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20007 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20008 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20009
20010 var util = require('util/');
20011 var hasOwn = Object.prototype.hasOwnProperty;
20012 var pSlice = Array.prototype.slice;
20013 var functionsHaveNames = (function () {
20014 return function foo() {}.name === 'foo';
20015 }());
20016 function pToString (obj) {
20017 return Object.prototype.toString.call(obj);
20018 }
20019 function isView(arrbuf) {
20020 if (isBuffer(arrbuf)) {
20021 return false;
20022 }
20023 if (typeof global.ArrayBuffer !== 'function') {
20024 return false;
20025 }
20026 if (typeof ArrayBuffer.isView === 'function') {
20027 return ArrayBuffer.isView(arrbuf);
20028 }
20029 if (!arrbuf) {
20030 return false;
20031 }
20032 if (arrbuf instanceof DataView) {
20033 return true;
20034 }
20035 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20036 return true;
20037 }
20038 return false;
20039 }
20040 // 1. The assert module provides functions that throw
20041 // AssertionError's when particular conditions are not met. The
20042 // assert module must conform to the following interface.
20043
20044 var assert = module.exports = ok;
20045
20046 // 2. The AssertionError is defined in assert.
20047 // new assert.AssertionError({ message: message,
20048 // actual: actual,
20049 // expected: expected })
20050
20051 var regex = /\s*function\s+([^\(\s]*)\s*/;
20052 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20053 function getName(func) {
20054 if (!util.isFunction(func)) {
20055 return;
20056 }
20057 if (functionsHaveNames) {
20058 return func.name;
20059 }
20060 var str = func.toString();
20061 var match = str.match(regex);
20062 return match && match[1];
20063 }
20064 assert.AssertionError = function AssertionError(options) {
20065 this.name = 'AssertionError';
20066 this.actual = options.actual;
20067 this.expected = options.expected;
20068 this.operator = options.operator;
20069 if (options.message) {
20070 this.message = options.message;
20071 this.generatedMessage = false;
20072 } else {
20073 this.message = getMessage(this);
20074 this.generatedMessage = true;
20075 }
20076 var stackStartFunction = options.stackStartFunction || fail;
20077 if (Error.captureStackTrace) {
20078 Error.captureStackTrace(this, stackStartFunction);
20079 } else {
20080 // non v8 browsers so we can have a stacktrace
20081 var err = new Error();
20082 if (err.stack) {
20083 var out = err.stack;
20084
20085 // try to strip useless frames
20086 var fn_name = getName(stackStartFunction);
20087 var idx = out.indexOf('\n' + fn_name);
20088 if (idx >= 0) {
20089 // once we have located the function frame
20090 // we need to strip out everything before it (and its line)
20091 var next_line = out.indexOf('\n', idx + 1);
20092 out = out.substring(next_line + 1);
20093 }
20094
20095 this.stack = out;
20096 }
20097 }
20098 };
20099
20100 // assert.AssertionError instanceof Error
20101 util.inherits(assert.AssertionError, Error);
20102
20103 function truncate(s, n) {
20104 if (typeof s === 'string') {
20105 return s.length < n ? s : s.slice(0, n);
20106 } else {
20107 return s;
20108 }
20109 }
20110 function inspect(something) {
20111 if (functionsHaveNames || !util.isFunction(something)) {
20112 return util.inspect(something);
20113 }
20114 var rawname = getName(something);
20115 var name = rawname ? ': ' + rawname : '';
20116 return '[Function' + name + ']';
20117 }
20118 function getMessage(self) {
20119 return truncate(inspect(self.actual), 128) + ' ' +
20120 self.operator + ' ' +
20121 truncate(inspect(self.expected), 128);
20122 }
20123
20124 // At present only the three keys mentioned above are used and
20125 // understood by the spec. Implementations or sub modules can pass
20126 // other keys to the AssertionError's constructor - they will be
20127 // ignored.
20128
20129 // 3. All of the following functions must throw an AssertionError
20130 // when a corresponding condition is not met, with a message that
20131 // may be undefined if not provided. All assertion methods provide
20132 // both the actual and expected values to the assertion error for
20133 // display purposes.
20134
20135 function fail(actual, expected, message, operator, stackStartFunction) {
20136 throw new assert.AssertionError({
20137 message: message,
20138 actual: actual,
20139 expected: expected,
20140 operator: operator,
20141 stackStartFunction: stackStartFunction
20142 });
20143 }
20144
20145 // EXTENSION! allows for well behaved errors defined elsewhere.
20146 assert.fail = fail;
20147
20148 // 4. Pure assertion tests whether a value is truthy, as determined
20149 // by !!guard.
20150 // assert.ok(guard, message_opt);
20151 // This statement is equivalent to assert.equal(true, !!guard,
20152 // message_opt);. To test strictly for the value true, use
20153 // assert.strictEqual(true, guard, message_opt);.
20154
20155 function ok(value, message) {
20156 if (!value) fail(value, true, message, '==', assert.ok);
20157 }
20158 assert.ok = ok;
20159
20160 // 5. The equality assertion tests shallow, coercive equality with
20161 // ==.
20162 // assert.equal(actual, expected, message_opt);
20163
20164 assert.equal = function equal(actual, expected, message) {
20165 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20166 };
20167
20168 // 6. The non-equality assertion tests for whether two objects are not equal
20169 // with != assert.notEqual(actual, expected, message_opt);
20170
20171 assert.notEqual = function notEqual(actual, expected, message) {
20172 if (actual == expected) {
20173 fail(actual, expected, message, '!=', assert.notEqual);
20174 }
20175 };
20176
20177 // 7. The equivalence assertion tests a deep equality relation.
20178 // assert.deepEqual(actual, expected, message_opt);
20179
20180 assert.deepEqual = function deepEqual(actual, expected, message) {
20181 if (!_deepEqual(actual, expected, false)) {
20182 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
20183 }
20184 };
20185
20186 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20187 if (!_deepEqual(actual, expected, true)) {
20188 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
20189 }
20190 };
20191
20192 function _deepEqual(actual, expected, strict, memos) {
20193 // 7.1. All identical values are equivalent, as determined by ===.
20194 if (actual === expected) {
20195 return true;
20196 } else if (isBuffer(actual) && isBuffer(expected)) {
20197 return compare(actual, expected) === 0;
20198
20199 // 7.2. If the expected value is a Date object, the actual value is
20200 // equivalent if it is also a Date object that refers to the same time.
20201 } else if (util.isDate(actual) && util.isDate(expected)) {
20202 return actual.getTime() === expected.getTime();
20203
20204 // 7.3 If the expected value is a RegExp object, the actual value is
20205 // equivalent if it is also a RegExp object with the same source and
20206 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20207 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20208 return actual.source === expected.source &&
20209 actual.global === expected.global &&
20210 actual.multiline === expected.multiline &&
20211 actual.lastIndex === expected.lastIndex &&
20212 actual.ignoreCase === expected.ignoreCase;
20213
20214 // 7.4. Other pairs that do not both pass typeof value == 'object',
20215 // equivalence is determined by ==.
20216 } else if ((actual === null || typeof actual !== 'object') &&
20217 (expected === null || typeof expected !== 'object')) {
20218 return strict ? actual === expected : actual == expected;
20219
20220 // If both values are instances of typed arrays, wrap their underlying
20221 // ArrayBuffers in a Buffer each to increase performance
20222 // This optimization requires the arrays to have the same type as checked by
20223 // Object.prototype.toString (aka pToString). Never perform binary
20224 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20225 // bit patterns are not identical.
20226 } else if (isView(actual) && isView(expected) &&
20227 pToString(actual) === pToString(expected) &&
20228 !(actual instanceof Float32Array ||
20229 actual instanceof Float64Array)) {
20230 return compare(new Uint8Array(actual.buffer),
20231 new Uint8Array(expected.buffer)) === 0;
20232
20233 // 7.5 For all other Object pairs, including Array objects, equivalence is
20234 // determined by having the same number of owned properties (as verified
20235 // with Object.prototype.hasOwnProperty.call), the same set of keys
20236 // (although not necessarily the same order), equivalent values for every
20237 // corresponding key, and an identical 'prototype' property. Note: this
20238 // accounts for both named and indexed properties on Arrays.
20239 } else if (isBuffer(actual) !== isBuffer(expected)) {
20240 return false;
20241 } else {
20242 memos = memos || {actual: [], expected: []};
20243
20244 var actualIndex = memos.actual.indexOf(actual);
20245 if (actualIndex !== -1) {
20246 if (actualIndex === memos.expected.indexOf(expected)) {
20247 return true;
20248 }
20249 }
20250
20251 memos.actual.push(actual);
20252 memos.expected.push(expected);
20253
20254 return objEquiv(actual, expected, strict, memos);
20255 }
20256 }
20257
20258 function isArguments(object) {
20259 return Object.prototype.toString.call(object) == '[object Arguments]';
20260 }
20261
20262 function objEquiv(a, b, strict, actualVisitedObjects) {
20263 if (a === null || a === undefined || b === null || b === undefined)
20264 return false;
20265 // if one is a primitive, the other must be same
20266 if (util.isPrimitive(a) || util.isPrimitive(b))
20267 return a === b;
20268 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20269 return false;
20270 var aIsArgs = isArguments(a);
20271 var bIsArgs = isArguments(b);
20272 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20273 return false;
20274 if (aIsArgs) {
20275 a = pSlice.call(a);
20276 b = pSlice.call(b);
20277 return _deepEqual(a, b, strict);
20278 }
20279 var ka = objectKeys(a);
20280 var kb = objectKeys(b);
20281 var key, i;
20282 // having the same number of owned properties (keys incorporates
20283 // hasOwnProperty)
20284 if (ka.length !== kb.length)
20285 return false;
20286 //the same set of keys (although not necessarily the same order),
20287 ka.sort();
20288 kb.sort();
20289 //~~~cheap key test
20290 for (i = ka.length - 1; i >= 0; i--) {
20291 if (ka[i] !== kb[i])
20292 return false;
20293 }
20294 //equivalent values for every corresponding key, and
20295 //~~~possibly expensive deep test
20296 for (i = ka.length - 1; i >= 0; i--) {
20297 key = ka[i];
20298 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20299 return false;
20300 }
20301 return true;
20302 }
20303
20304 // 8. The non-equivalence assertion tests for any deep inequality.
20305 // assert.notDeepEqual(actual, expected, message_opt);
20306
20307 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20308 if (_deepEqual(actual, expected, false)) {
20309 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
20310 }
20311 };
20312
20313 assert.notDeepStrictEqual = notDeepStrictEqual;
20314 function notDeepStrictEqual(actual, expected, message) {
20315 if (_deepEqual(actual, expected, true)) {
20316 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20317 }
20318 }
20319
20320
20321 // 9. The strict equality assertion tests strict equality, as determined by ===.
20322 // assert.strictEqual(actual, expected, message_opt);
20323
20324 assert.strictEqual = function strictEqual(actual, expected, message) {
20325 if (actual !== expected) {
20326 fail(actual, expected, message, '===', assert.strictEqual);
20327 }
20328 };
20329
20330 // 10. The strict non-equality assertion tests for strict inequality, as
20331 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
20332
20333 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20334 if (actual === expected) {
20335 fail(actual, expected, message, '!==', assert.notStrictEqual);
20336 }
20337 };
20338
20339 function expectedException(actual, expected) {
20340 if (!actual || !expected) {
20341 return false;
20342 }
20343
20344 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20345 return expected.test(actual);
20346 }
20347
20348 try {
20349 if (actual instanceof expected) {
20350 return true;
20351 }
20352 } catch (e) {
20353 // Ignore. The instanceof check doesn't work for arrow functions.
20354 }
20355
20356 if (Error.isPrototypeOf(expected)) {
20357 return false;
20358 }
20359
20360 return expected.call({}, actual) === true;
20361 }
20362
20363 function _tryBlock(block) {
20364 var error;
20365 try {
20366 block();
20367 } catch (e) {
20368 error = e;
20369 }
20370 return error;
20371 }
20372
20373 function _throws(shouldThrow, block, expected, message) {
20374 var actual;
20375
20376 if (typeof block !== 'function') {
20377 throw new TypeError('"block" argument must be a function');
20378 }
20379
20380 if (typeof expected === 'string') {
20381 message = expected;
20382 expected = null;
20383 }
20384
20385 actual = _tryBlock(block);
20386
20387 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20388 (message ? ' ' + message : '.');
20389
20390 if (shouldThrow && !actual) {
20391 fail(actual, expected, 'Missing expected exception' + message);
20392 }
20393
20394 var userProvidedMessage = typeof message === 'string';
20395 var isUnwantedException = !shouldThrow && util.isError(actual);
20396 var isUnexpectedException = !shouldThrow && actual && !expected;
20397
20398 if ((isUnwantedException &&
20399 userProvidedMessage &&
20400 expectedException(actual, expected)) ||
20401 isUnexpectedException) {
20402 fail(actual, expected, 'Got unwanted exception' + message);
20403 }
20404
20405 if ((shouldThrow && actual && expected &&
20406 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20407 throw actual;
20408 }
20409 }
20410
20411 // 11. Expected to throw an error:
20412 // assert.throws(block, Error_opt, message_opt);
20413
20414 assert.throws = function(block, /*optional*/error, /*optional*/message) {
20415 _throws(true, block, error, message);
20416 };
20417
20418 // EXTENSION! This is annoying to write outside this module.
20419 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20420 _throws(false, block, error, message);
20421 };
20422
20423 assert.ifError = function(err) { if (err) throw err; };
20424
20425 var objectKeys = Object.keys || function (obj) {
20426 var keys = [];
20427 for (var key in obj) {
20428 if (hasOwn.call(obj, key)) keys.push(key);
20429 }
20430 return keys;
20431 };
20432
20433 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20434 },{"util/":30}],2:[function(require,module,exports){
20435 'use strict'
20436
20437 exports.byteLength = byteLength
20438 exports.toByteArray = toByteArray
20439 exports.fromByteArray = fromByteArray
20440
20441 var lookup = []
20442 var revLookup = []
20443 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20444
20445 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20446 for (var i = 0, len = code.length; i < len; ++i) {
20447 lookup[i] = code[i]
20448 revLookup[code.charCodeAt(i)] = i
20449 }
20450
20451 revLookup['-'.charCodeAt(0)] = 62
20452 revLookup['_'.charCodeAt(0)] = 63
20453
20454 function placeHoldersCount (b64) {
20455 var len = b64.length
20456 if (len % 4 > 0) {
20457 throw new Error('Invalid string. Length must be a multiple of 4')
20458 }
20459
20460 // the number of equal signs (place holders)
20461 // if there are two placeholders, than the two characters before it
20462 // represent one byte
20463 // if there is only one, then the three characters before it represent 2 bytes
20464 // this is just a cheap hack to not do indexOf twice
20465 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
20466 }
20467
20468 function byteLength (b64) {
20469 // base64 is 4/3 + up to two characters of the original data
20470 return b64.length * 3 / 4 - placeHoldersCount(b64)
20471 }
20472
20473 function toByteArray (b64) {
20474 var i, j, l, tmp, placeHolders, arr
20475 var len = b64.length
20476 placeHolders = placeHoldersCount(b64)
20477
20478 arr = new Arr(len * 3 / 4 - placeHolders)
20479
20480 // if there are placeholders, only get up to the last complete 4 chars
20481 l = placeHolders > 0 ? len - 4 : len
20482
20483 var L = 0
20484
20485 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20486 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20487 arr[L++] = (tmp >> 16) & 0xFF
20488 arr[L++] = (tmp >> 8) & 0xFF
20489 arr[L++] = tmp & 0xFF
20490 }
20491
20492 if (placeHolders === 2) {
20493 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20494 arr[L++] = tmp & 0xFF
20495 } else if (placeHolders === 1) {
20496 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20497 arr[L++] = (tmp >> 8) & 0xFF
20498 arr[L++] = tmp & 0xFF
20499 }
20500
20501 return arr
20502 }
20503
20504 function tripletToBase64 (num) {
20505 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
20506 }
20507
20508 function encodeChunk (uint8, start, end) {
20509 var tmp
20510 var output = []
20511 for (var i = start; i < end; i += 3) {
20512 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20513 output.push(tripletToBase64(tmp))
20514 }
20515 return output.join('')
20516 }
20517
20518 function fromByteArray (uint8) {
20519 var tmp
20520 var len = uint8.length
20521 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20522 var output = ''
20523 var parts = []
20524 var maxChunkLength = 16383 // must be multiple of 3
20525
20526 // go through the array every three bytes, we'll deal with trailing stuff later
20527 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20528 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20529 }
20530
20531 // pad the end with zeros, but make sure to not forget the extra bytes
20532 if (extraBytes === 1) {
20533 tmp = uint8[len - 1]
20534 output += lookup[tmp >> 2]
20535 output += lookup[(tmp << 4) & 0x3F]
20536 output += '=='
20537 } else if (extraBytes === 2) {
20538 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20539 output += lookup[tmp >> 10]
20540 output += lookup[(tmp >> 4) & 0x3F]
20541 output += lookup[(tmp << 2) & 0x3F]
20542 output += '='
20543 }
20544
20545 parts.push(output)
20546
20547 return parts.join('')
20548 }
20549
20550 },{}],3:[function(require,module,exports){
20551
20552 },{}],4:[function(require,module,exports){
20553 (function (global){
20554 'use strict';
20555
20556 var buffer = require('buffer');
20557 var Buffer = buffer.Buffer;
20558 var SlowBuffer = buffer.SlowBuffer;
20559 var MAX_LEN = buffer.kMaxLength || 2147483647;
20560 exports.alloc = function alloc(size, fill, encoding) {
20561 if (typeof Buffer.alloc === 'function') {
20562 return Buffer.alloc(size, fill, encoding);
20563 }
20564 if (typeof encoding === 'number') {
20565 throw new TypeError('encoding must not be number');
20566 }
20567 if (typeof size !== 'number') {
20568 throw new TypeError('size must be a number');
20569 }
20570 if (size > MAX_LEN) {
20571 throw new RangeError('size is too large');
20572 }
20573 var enc = encoding;
20574 var _fill = fill;
20575 if (_fill === undefined) {
20576 enc = undefined;
20577 _fill = 0;
20578 }
20579 var buf = new Buffer(size);
20580 if (typeof _fill === 'string') {
20581 var fillBuf = new Buffer(_fill, enc);
20582 var flen = fillBuf.length;
20583 var i = -1;
20584 while (++i < size) {
20585 buf[i] = fillBuf[i % flen];
20586 }
20587 } else {
20588 buf.fill(_fill);
20589 }
20590 return buf;
20591 }
20592 exports.allocUnsafe = function allocUnsafe(size) {
20593 if (typeof Buffer.allocUnsafe === 'function') {
20594 return Buffer.allocUnsafe(size);
20595 }
20596 if (typeof size !== 'number') {
20597 throw new TypeError('size must be a number');
20598 }
20599 if (size > MAX_LEN) {
20600 throw new RangeError('size is too large');
20601 }
20602 return new Buffer(size);
20603 }
20604 exports.from = function from(value, encodingOrOffset, length) {
20605 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20606 return Buffer.from(value, encodingOrOffset, length);
20607 }
20608 if (typeof value === 'number') {
20609 throw new TypeError('"value" argument must not be a number');
20610 }
20611 if (typeof value === 'string') {
20612 return new Buffer(value, encodingOrOffset);
20613 }
20614 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20615 var offset = encodingOrOffset;
20616 if (arguments.length === 1) {
20617 return new Buffer(value);
20618 }
20619 if (typeof offset === 'undefined') {
20620 offset = 0;
20621 }
20622 var len = length;
20623 if (typeof len === 'undefined') {
20624 len = value.byteLength - offset;
20625 }
20626 if (offset >= value.byteLength) {
20627 throw new RangeError('\'offset\' is out of bounds');
20628 }
20629 if (len > value.byteLength - offset) {
20630 throw new RangeError('\'length\' is out of bounds');
20631 }
20632 return new Buffer(value.slice(offset, offset + len));
20633 }
20634 if (Buffer.isBuffer(value)) {
20635 var out = new Buffer(value.length);
20636 value.copy(out, 0, 0, value.length);
20637 return out;
20638 }
20639 if (value) {
20640 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20641 return new Buffer(value);
20642 }
20643 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20644 return new Buffer(value.data);
20645 }
20646 }
20647
20648 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
20649 }
20650 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20651 if (typeof Buffer.allocUnsafeSlow === 'function') {
20652 return Buffer.allocUnsafeSlow(size);
20653 }
20654 if (typeof size !== 'number') {
20655 throw new TypeError('size must be a number');
20656 }
20657 if (size >= MAX_LEN) {
20658 throw new RangeError('size is too large');
20659 }
20660 return new SlowBuffer(size);
20661 }
20662
20663 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20664 },{"buffer":5}],5:[function(require,module,exports){
20665 /*!
20666 * The buffer module from node.js, for the browser.
20667 *
20668 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20669 * @license MIT
20670 */
20671 /* eslint-disable no-proto */
20672
20673 'use strict'
20674
20675 var base64 = require('base64-js')
20676 var ieee754 = require('ieee754')
20677
20678 exports.Buffer = Buffer
20679 exports.SlowBuffer = SlowBuffer
20680 exports.INSPECT_MAX_BYTES = 50
20681
20682 var K_MAX_LENGTH = 0x7fffffff
20683 exports.kMaxLength = K_MAX_LENGTH
20684
20685 /**
20686 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20687 * === true Use Uint8Array implementation (fastest)
20688 * === false Print warning and recommend using `buffer` v4.x which has an Object
20689 * implementation (most compatible, even IE6)
20690 *
20691 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20692 * Opera 11.6+, iOS 4.2+.
20693 *
20694 * We report that the browser does not support typed arrays if the are not subclassable
20695 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20696 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20697 * for __proto__ and has a buggy typed array implementation.
20698 */
20699 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20700
20701 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20702 typeof console.error === 'function') {
20703 console.error(
20704 'This browser lacks typed array (Uint8Array) support which is required by ' +
20705 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20706 )
20707 }
20708
20709 function typedArraySupport () {
20710 // Can typed array instances can be augmented?
20711 try {
20712 var arr = new Uint8Array(1)
20713 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20714 return arr.foo() === 42
20715 } catch (e) {
20716 return false
20717 }
20718 }
20719
20720 function createBuffer (length) {
20721 if (length > K_MAX_LENGTH) {
20722 throw new RangeError('Invalid typed array length')
20723 }
20724 // Return an augmented `Uint8Array` instance
20725 var buf = new Uint8Array(length)
20726 buf.__proto__ = Buffer.prototype
20727 return buf
20728 }
20729
20730 /**
20731 * The Buffer constructor returns instances of `Uint8Array` that have their
20732 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20733 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20734 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20735 * returns a single octet.
20736 *
20737 * The `Uint8Array` prototype remains unmodified.
20738 */
20739
20740 function Buffer (arg, encodingOrOffset, length) {
20741 // Common case.
20742 if (typeof arg === 'number') {
20743 if (typeof encodingOrOffset === 'string') {
20744 throw new Error(
20745 'If encoding is specified then the first argument must be a string'
20746 )
20747 }
20748 return allocUnsafe(arg)
20749 }
20750 return from(arg, encodingOrOffset, length)
20751 }
20752
20753 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20754 if (typeof Symbol !== 'undefined' && Symbol.species &&
20755 Buffer[Symbol.species] === Buffer) {
20756 Object.defineProperty(Buffer, Symbol.species, {
20757 value: null,
20758 configurable: true,
20759 enumerable: false,
20760 writable: false
20761 })
20762 }
20763
20764 Buffer.poolSize = 8192 // not used by this implementation
20765
20766 function from (value, encodingOrOffset, length) {
20767 if (typeof value === 'number') {
20768 throw new TypeError('"value" argument must not be a number')
20769 }
20770
20771 if (value instanceof ArrayBuffer) {
20772 return fromArrayBuffer(value, encodingOrOffset, length)
20773 }
20774
20775 if (typeof value === 'string') {
20776 return fromString(value, encodingOrOffset)
20777 }
20778
20779 return fromObject(value)
20780 }
20781
20782 /**
20783 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20784 * if value is a number.
20785 * Buffer.from(str[, encoding])
20786 * Buffer.from(array)
20787 * Buffer.from(buffer)
20788 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20789 **/
20790 Buffer.from = function (value, encodingOrOffset, length) {
20791 return from(value, encodingOrOffset, length)
20792 }
20793
20794 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20795 // https://github.com/feross/buffer/pull/148
20796 Buffer.prototype.__proto__ = Uint8Array.prototype
20797 Buffer.__proto__ = Uint8Array
20798
20799 function assertSize (size) {
20800 if (typeof size !== 'number') {
20801 throw new TypeError('"size" argument must be a number')
20802 } else if (size < 0) {
20803 throw new RangeError('"size" argument must not be negative')
20804 }
20805 }
20806
20807 function alloc (size, fill, encoding) {
20808 assertSize(size)
20809 if (size <= 0) {
20810 return createBuffer(size)
20811 }
20812 if (fill !== undefined) {
20813 // Only pay attention to encoding if it's a string. This
20814 // prevents accidentally sending in a number that would
20815 // be interpretted as a start offset.
20816 return typeof encoding === 'string'
20817 ? createBuffer(size).fill(fill, encoding)
20818 : createBuffer(size).fill(fill)
20819 }
20820 return createBuffer(size)
20821 }
20822
20823 /**
20824 * Creates a new filled Buffer instance.
20825 * alloc(size[, fill[, encoding]])
20826 **/
20827 Buffer.alloc = function (size, fill, encoding) {
20828 return alloc(size, fill, encoding)
20829 }
20830
20831 function allocUnsafe (size) {
20832 assertSize(size)
20833 return createBuffer(size < 0 ? 0 : checked(size) | 0)
20834 }
20835
20836 /**
20837 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20838 * */
20839 Buffer.allocUnsafe = function (size) {
20840 return allocUnsafe(size)
20841 }
20842 /**
20843 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20844 */
20845 Buffer.allocUnsafeSlow = function (size) {
20846 return allocUnsafe(size)
20847 }
20848
20849 function fromString (string, encoding) {
20850 if (typeof encoding !== 'string' || encoding === '') {
20851 encoding = 'utf8'
20852 }
20853
20854 if (!Buffer.isEncoding(encoding)) {
20855 throw new TypeError('"encoding" must be a valid string encoding')
20856 }
20857
20858 var length = byteLength(string, encoding) | 0
20859 var buf = createBuffer(length)
20860
20861 var actual = buf.write(string, encoding)
20862
20863 if (actual !== length) {
20864 // Writing a hex string, for example, that contains invalid characters will
20865 // cause everything after the first invalid character to be ignored. (e.g.
20866 // 'abxxcd' will be treated as 'ab')
20867 buf = buf.slice(0, actual)
20868 }
20869
20870 return buf
20871 }
20872
20873 function fromArrayLike (array) {
20874 var length = array.length < 0 ? 0 : checked(array.length) | 0
20875 var buf = createBuffer(length)
20876 for (var i = 0; i < length; i += 1) {
20877 buf[i] = array[i] & 255
20878 }
20879 return buf
20880 }
20881
20882 function fromArrayBuffer (array, byteOffset, length) {
20883 if (byteOffset < 0 || array.byteLength < byteOffset) {
20884 throw new RangeError('\'offset\' is out of bounds')
20885 }
20886
20887 if (array.byteLength < byteOffset + (length || 0)) {
20888 throw new RangeError('\'length\' is out of bounds')
20889 }
20890
20891 var buf
20892 if (byteOffset === undefined && length === undefined) {
20893 buf = new Uint8Array(array)
20894 } else if (length === undefined) {
20895 buf = new Uint8Array(array, byteOffset)
20896 } else {
20897 buf = new Uint8Array(array, byteOffset, length)
20898 }
20899
20900 // Return an augmented `Uint8Array` instance
20901 buf.__proto__ = Buffer.prototype
20902 return buf
20903 }
20904
20905 function fromObject (obj) {
20906 if (Buffer.isBuffer(obj)) {
20907 var len = checked(obj.length) | 0
20908 var buf = createBuffer(len)
20909
20910 if (buf.length === 0) {
20911 return buf
20912 }
20913
20914 obj.copy(buf, 0, 0, len)
20915 return buf
20916 }
20917
20918 if (obj) {
20919 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20920 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20921 return createBuffer(0)
20922 }
20923 return fromArrayLike(obj)
20924 }
20925
20926 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20927 return fromArrayLike(obj.data)
20928 }
20929 }
20930
20931 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
20932 }
20933
20934 function checked (length) {
20935 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20936 // length is NaN (which is otherwise coerced to zero.)
20937 if (length >= K_MAX_LENGTH) {
20938 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20939 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
20940 }
20941 return length | 0
20942 }
20943
20944 function SlowBuffer (length) {
20945 if (+length != length) { // eslint-disable-line eqeqeq
20946 length = 0
20947 }
20948 return Buffer.alloc(+length)
20949 }
20950
20951 Buffer.isBuffer = function isBuffer (b) {
20952 return b != null && b._isBuffer === true
20953 }
20954
20955 Buffer.compare = function compare (a, b) {
20956 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
20957 throw new TypeError('Arguments must be Buffers')
20958 }
20959
20960 if (a === b) return 0
20961
20962 var x = a.length
20963 var y = b.length
20964
20965 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
20966 if (a[i] !== b[i]) {
20967 x = a[i]
20968 y = b[i]
20969 break
20970 }
20971 }
20972
20973 if (x < y) return -1
20974 if (y < x) return 1
20975 return 0
20976 }
20977
20978 Buffer.isEncoding = function isEncoding (encoding) {
20979 switch (String(encoding).toLowerCase()) {
20980 case 'hex':
20981 case 'utf8':
20982 case 'utf-8':
20983 case 'ascii':
20984 case 'latin1':
20985 case 'binary':
20986 case 'base64':
20987 case 'ucs2':
20988 case 'ucs-2':
20989 case 'utf16le':
20990 case 'utf-16le':
20991 return true
20992 default:
20993 return false
20994 }
20995 }
20996
20997 Buffer.concat = function concat (list, length) {
20998 if (!Array.isArray(list)) {
20999 throw new TypeError('"list" argument must be an Array of Buffers')
21000 }
21001
21002 if (list.length === 0) {
21003 return Buffer.alloc(0)
21004 }
21005
21006 var i
21007 if (length === undefined) {
21008 length = 0
21009 for (i = 0; i < list.length; ++i) {
21010 length += list[i].length
21011 }
21012 }
21013
21014 var buffer = Buffer.allocUnsafe(length)
21015 var pos = 0
21016 for (i = 0; i < list.length; ++i) {
21017 var buf = list[i]
21018 if (!Buffer.isBuffer(buf)) {
21019 throw new TypeError('"list" argument must be an Array of Buffers')
21020 }
21021 buf.copy(buffer, pos)
21022 pos += buf.length
21023 }
21024 return buffer
21025 }
21026
21027 function byteLength (string, encoding) {
21028 if (Buffer.isBuffer(string)) {
21029 return string.length
21030 }
21031 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21032 return string.byteLength
21033 }
21034 if (typeof string !== 'string') {
21035 string = '' + string
21036 }
21037
21038 var len = string.length
21039 if (len === 0) return 0
21040
21041 // Use a for loop to avoid recursion
21042 var loweredCase = false
21043 for (;;) {
21044 switch (encoding) {
21045 case 'ascii':
21046 case 'latin1':
21047 case 'binary':
21048 return len
21049 case 'utf8':
21050 case 'utf-8':
21051 case undefined:
21052 return utf8ToBytes(string).length
21053 case 'ucs2':
21054 case 'ucs-2':
21055 case 'utf16le':
21056 case 'utf-16le':
21057 return len * 2
21058 case 'hex':
21059 return len >>> 1
21060 case 'base64':
21061 return base64ToBytes(string).length
21062 default:
21063 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21064 encoding = ('' + encoding).toLowerCase()
21065 loweredCase = true
21066 }
21067 }
21068 }
21069 Buffer.byteLength = byteLength
21070
21071 function slowToString (encoding, start, end) {
21072 var loweredCase = false
21073
21074 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21075 // property of a typed array.
21076
21077 // This behaves neither like String nor Uint8Array in that we set start/end
21078 // to their upper/lower bounds if the value passed is out of range.
21079 // undefined is handled specially as per ECMA-262 6th Edition,
21080 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21081 if (start === undefined || start < 0) {
21082 start = 0
21083 }
21084 // Return early if start > this.length. Done here to prevent potential uint32
21085 // coercion fail below.
21086 if (start > this.length) {
21087 return ''
21088 }
21089
21090 if (end === undefined || end > this.length) {
21091 end = this.length
21092 }
21093
21094 if (end <= 0) {
21095 return ''
21096 }
21097
21098 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21099 end >>>= 0
21100 start >>>= 0
21101
21102 if (end <= start) {
21103 return ''
21104 }
21105
21106 if (!encoding) encoding = 'utf8'
21107
21108 while (true) {
21109 switch (encoding) {
21110 case 'hex':
21111 return hexSlice(this, start, end)
21112
21113 case 'utf8':
21114 case 'utf-8':
21115 return utf8Slice(this, start, end)
21116
21117 case 'ascii':
21118 return asciiSlice(this, start, end)
21119
21120 case 'latin1':
21121 case 'binary':
21122 return latin1Slice(this, start, end)
21123
21124 case 'base64':
21125 return base64Slice(this, start, end)
21126
21127 case 'ucs2':
21128 case 'ucs-2':
21129 case 'utf16le':
21130 case 'utf-16le':
21131 return utf16leSlice(this, start, end)
21132
21133 default:
21134 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21135 encoding = (encoding + '').toLowerCase()
21136 loweredCase = true
21137 }
21138 }
21139 }
21140
21141 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21142 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21143 // reliably in a browserify context because there could be multiple different
21144 // copies of the 'buffer' package in use. This method works even for Buffer
21145 // instances that were created from another copy of the `buffer` package.
21146 // See: https://github.com/feross/buffer/issues/154
21147 Buffer.prototype._isBuffer = true
21148
21149 function swap (b, n, m) {
21150 var i = b[n]
21151 b[n] = b[m]
21152 b[m] = i
21153 }
21154
21155 Buffer.prototype.swap16 = function swap16 () {
21156 var len = this.length
21157 if (len % 2 !== 0) {
21158 throw new RangeError('Buffer size must be a multiple of 16-bits')
21159 }
21160 for (var i = 0; i < len; i += 2) {
21161 swap(this, i, i + 1)
21162 }
21163 return this
21164 }
21165
21166 Buffer.prototype.swap32 = function swap32 () {
21167 var len = this.length
21168 if (len % 4 !== 0) {
21169 throw new RangeError('Buffer size must be a multiple of 32-bits')
21170 }
21171 for (var i = 0; i < len; i += 4) {
21172 swap(this, i, i + 3)
21173 swap(this, i + 1, i + 2)
21174 }
21175 return this
21176 }
21177
21178 Buffer.prototype.swap64 = function swap64 () {
21179 var len = this.length
21180 if (len % 8 !== 0) {
21181 throw new RangeError('Buffer size must be a multiple of 64-bits')
21182 }
21183 for (var i = 0; i < len; i += 8) {
21184 swap(this, i, i + 7)
21185 swap(this, i + 1, i + 6)
21186 swap(this, i + 2, i + 5)
21187 swap(this, i + 3, i + 4)
21188 }
21189 return this
21190 }
21191
21192 Buffer.prototype.toString = function toString () {
21193 var length = this.length
21194 if (length === 0) return ''
21195 if (arguments.length === 0) return utf8Slice(this, 0, length)
21196 return slowToString.apply(this, arguments)
21197 }
21198
21199 Buffer.prototype.equals = function equals (b) {
21200 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21201 if (this === b) return true
21202 return Buffer.compare(this, b) === 0
21203 }
21204
21205 Buffer.prototype.inspect = function inspect () {
21206 var str = ''
21207 var max = exports.INSPECT_MAX_BYTES
21208 if (this.length > 0) {
21209 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21210 if (this.length > max) str += ' ... '
21211 }
21212 return '<Buffer ' + str + '>'
21213 }
21214
21215 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21216 if (!Buffer.isBuffer(target)) {
21217 throw new TypeError('Argument must be a Buffer')
21218 }
21219
21220 if (start === undefined) {
21221 start = 0
21222 }
21223 if (end === undefined) {
21224 end = target ? target.length : 0
21225 }
21226 if (thisStart === undefined) {
21227 thisStart = 0
21228 }
21229 if (thisEnd === undefined) {
21230 thisEnd = this.length
21231 }
21232
21233 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21234 throw new RangeError('out of range index')
21235 }
21236
21237 if (thisStart >= thisEnd && start >= end) {
21238 return 0
21239 }
21240 if (thisStart >= thisEnd) {
21241 return -1
21242 }
21243 if (start >= end) {
21244 return 1
21245 }
21246
21247 start >>>= 0
21248 end >>>= 0
21249 thisStart >>>= 0
21250 thisEnd >>>= 0
21251
21252 if (this === target) return 0
21253
21254 var x = thisEnd - thisStart
21255 var y = end - start
21256 var len = Math.min(x, y)
21257
21258 var thisCopy = this.slice(thisStart, thisEnd)
21259 var targetCopy = target.slice(start, end)
21260
21261 for (var i = 0; i < len; ++i) {
21262 if (thisCopy[i] !== targetCopy[i]) {
21263 x = thisCopy[i]
21264 y = targetCopy[i]
21265 break
21266 }
21267 }
21268
21269 if (x < y) return -1
21270 if (y < x) return 1
21271 return 0
21272 }
21273
21274 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21275 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
21276 //
21277 // Arguments:
21278 // - buffer - a Buffer to search
21279 // - val - a string, Buffer, or number
21280 // - byteOffset - an index into `buffer`; will be clamped to an int32
21281 // - encoding - an optional encoding, relevant is val is a string
21282 // - dir - true for indexOf, false for lastIndexOf
21283 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21284 // Empty buffer means no match
21285 if (buffer.length === 0) return -1
21286
21287 // Normalize byteOffset
21288 if (typeof byteOffset === 'string') {
21289 encoding = byteOffset
21290 byteOffset = 0
21291 } else if (byteOffset > 0x7fffffff) {
21292 byteOffset = 0x7fffffff
21293 } else if (byteOffset < -0x80000000) {
21294 byteOffset = -0x80000000
21295 }
21296 byteOffset = +byteOffset // Coerce to Number.
21297 if (isNaN(byteOffset)) {
21298 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21299 byteOffset = dir ? 0 : (buffer.length - 1)
21300 }
21301
21302 // Normalize byteOffset: negative offsets start from the end of the buffer
21303 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21304 if (byteOffset >= buffer.length) {
21305 if (dir) return -1
21306 else byteOffset = buffer.length - 1
21307 } else if (byteOffset < 0) {
21308 if (dir) byteOffset = 0
21309 else return -1
21310 }
21311
21312 // Normalize val
21313 if (typeof val === 'string') {
21314 val = Buffer.from(val, encoding)
21315 }
21316
21317 // Finally, search either indexOf (if dir is true) or lastIndexOf
21318 if (Buffer.isBuffer(val)) {
21319 // Special case: looking for empty string/buffer always fails
21320 if (val.length === 0) {
21321 return -1
21322 }
21323 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21324 } else if (typeof val === 'number') {
21325 val = val & 0xFF // Search for a byte value [0-255]
21326 if (typeof Uint8Array.prototype.indexOf === 'function') {
21327 if (dir) {
21328 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21329 } else {
21330 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21331 }
21332 }
21333 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21334 }
21335
21336 throw new TypeError('val must be string, number or Buffer')
21337 }
21338
21339 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21340 var indexSize = 1
21341 var arrLength = arr.length
21342 var valLength = val.length
21343
21344 if (encoding !== undefined) {
21345 encoding = String(encoding).toLowerCase()
21346 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21347 encoding === 'utf16le' || encoding === 'utf-16le') {
21348 if (arr.length < 2 || val.length < 2) {
21349 return -1
21350 }
21351 indexSize = 2
21352 arrLength /= 2
21353 valLength /= 2
21354 byteOffset /= 2
21355 }
21356 }
21357
21358 function read (buf, i) {
21359 if (indexSize === 1) {
21360 return buf[i]
21361 } else {
21362 return buf.readUInt16BE(i * indexSize)
21363 }
21364 }
21365
21366 var i
21367 if (dir) {
21368 var foundIndex = -1
21369 for (i = byteOffset; i < arrLength; i++) {
21370 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21371 if (foundIndex === -1) foundIndex = i
21372 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21373 } else {
21374 if (foundIndex !== -1) i -= i - foundIndex
21375 foundIndex = -1
21376 }
21377 }
21378 } else {
21379 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21380 for (i = byteOffset; i >= 0; i--) {
21381 var found = true
21382 for (var j = 0; j < valLength; j++) {
21383 if (read(arr, i + j) !== read(val, j)) {
21384 found = false
21385 break
21386 }
21387 }
21388 if (found) return i
21389 }
21390 }
21391
21392 return -1
21393 }
21394
21395 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21396 return this.indexOf(val, byteOffset, encoding) !== -1
21397 }
21398
21399 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21400 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21401 }
21402
21403 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21404 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21405 }
21406
21407 function hexWrite (buf, string, offset, length) {
21408 offset = Number(offset) || 0
21409 var remaining = buf.length - offset
21410 if (!length) {
21411 length = remaining
21412 } else {
21413 length = Number(length)
21414 if (length > remaining) {
21415 length = remaining
21416 }
21417 }
21418
21419 // must be an even number of digits
21420 var strLen = string.length
21421 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
21422
21423 if (length > strLen / 2) {
21424 length = strLen / 2
21425 }
21426 for (var i = 0; i < length; ++i) {
21427 var parsed = parseInt(string.substr(i * 2, 2), 16)
21428 if (isNaN(parsed)) return i
21429 buf[offset + i] = parsed
21430 }
21431 return i
21432 }
21433
21434 function utf8Write (buf, string, offset, length) {
21435 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
21436 }
21437
21438 function asciiWrite (buf, string, offset, length) {
21439 return blitBuffer(asciiToBytes(string), buf, offset, length)
21440 }
21441
21442 function latin1Write (buf, string, offset, length) {
21443 return asciiWrite(buf, string, offset, length)
21444 }
21445
21446 function base64Write (buf, string, offset, length) {
21447 return blitBuffer(base64ToBytes(string), buf, offset, length)
21448 }
21449
21450 function ucs2Write (buf, string, offset, length) {
21451 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21452 }
21453
21454 Buffer.prototype.write = function write (string, offset, length, encoding) {
21455 // Buffer#write(string)
21456 if (offset === undefined) {
21457 encoding = 'utf8'
21458 length = this.length
21459 offset = 0
21460 // Buffer#write(string, encoding)
21461 } else if (length === undefined && typeof offset === 'string') {
21462 encoding = offset
21463 length = this.length
21464 offset = 0
21465 // Buffer#write(string, offset[, length][, encoding])
21466 } else if (isFinite(offset)) {
21467 offset = offset >>> 0
21468 if (isFinite(length)) {
21469 length = length >>> 0
21470 if (encoding === undefined) encoding = 'utf8'
21471 } else {
21472 encoding = length
21473 length = undefined
21474 }
21475 } else {
21476 throw new Error(
21477 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21478 )
21479 }
21480
21481 var remaining = this.length - offset
21482 if (length === undefined || length > remaining) length = remaining
21483
21484 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21485 throw new RangeError('Attempt to write outside buffer bounds')
21486 }
21487
21488 if (!encoding) encoding = 'utf8'
21489
21490 var loweredCase = false
21491 for (;;) {
21492 switch (encoding) {
21493 case 'hex':
21494 return hexWrite(this, string, offset, length)
21495
21496 case 'utf8':
21497 case 'utf-8':
21498 return utf8Write(this, string, offset, length)
21499
21500 case 'ascii':
21501 return asciiWrite(this, string, offset, length)
21502
21503 case 'latin1':
21504 case 'binary':
21505 return latin1Write(this, string, offset, length)
21506
21507 case 'base64':
21508 // Warning: maxLength not taken into account in base64Write
21509 return base64Write(this, string, offset, length)
21510
21511 case 'ucs2':
21512 case 'ucs-2':
21513 case 'utf16le':
21514 case 'utf-16le':
21515 return ucs2Write(this, string, offset, length)
21516
21517 default:
21518 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21519 encoding = ('' + encoding).toLowerCase()
21520 loweredCase = true
21521 }
21522 }
21523 }
21524
21525 Buffer.prototype.toJSON = function toJSON () {
21526 return {
21527 type: 'Buffer',
21528 data: Array.prototype.slice.call(this._arr || this, 0)
21529 }
21530 }
21531
21532 function base64Slice (buf, start, end) {
21533 if (start === 0 && end === buf.length) {
21534 return base64.fromByteArray(buf)
21535 } else {
21536 return base64.fromByteArray(buf.slice(start, end))
21537 }
21538 }
21539
21540 function utf8Slice (buf, start, end) {
21541 end = Math.min(buf.length, end)
21542 var res = []
21543
21544 var i = start
21545 while (i < end) {
21546 var firstByte = buf[i]
21547 var codePoint = null
21548 var bytesPerSequence = (firstByte > 0xEF) ? 4
21549 : (firstByte > 0xDF) ? 3
21550 : (firstByte > 0xBF) ? 2
21551 : 1
21552
21553 if (i + bytesPerSequence <= end) {
21554 var secondByte, thirdByte, fourthByte, tempCodePoint
21555
21556 switch (bytesPerSequence) {
21557 case 1:
21558 if (firstByte < 0x80) {
21559 codePoint = firstByte
21560 }
21561 break
21562 case 2:
21563 secondByte = buf[i + 1]
21564 if ((secondByte & 0xC0) === 0x80) {
21565 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21566 if (tempCodePoint > 0x7F) {
21567 codePoint = tempCodePoint
21568 }
21569 }
21570 break
21571 case 3:
21572 secondByte = buf[i + 1]
21573 thirdByte = buf[i + 2]
21574 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21575 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21576 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21577 codePoint = tempCodePoint
21578 }
21579 }
21580 break
21581 case 4:
21582 secondByte = buf[i + 1]
21583 thirdByte = buf[i + 2]
21584 fourthByte = buf[i + 3]
21585 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21586 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21587 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21588 codePoint = tempCodePoint
21589 }
21590 }
21591 }
21592 }
21593
21594 if (codePoint === null) {
21595 // we did not generate a valid codePoint so insert a
21596 // replacement char (U+FFFD) and advance only 1 byte
21597 codePoint = 0xFFFD
21598 bytesPerSequence = 1
21599 } else if (codePoint > 0xFFFF) {
21600 // encode to utf16 (surrogate pair dance)
21601 codePoint -= 0x10000
21602 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21603 codePoint = 0xDC00 | codePoint & 0x3FF
21604 }
21605
21606 res.push(codePoint)
21607 i += bytesPerSequence
21608 }
21609
21610 return decodeCodePointsArray(res)
21611 }
21612
21613 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
21614 // the lowest limit is Chrome, with 0x10000 args.
21615 // We go 1 magnitude less, for safety
21616 var MAX_ARGUMENTS_LENGTH = 0x1000
21617
21618 function decodeCodePointsArray (codePoints) {
21619 var len = codePoints.length
21620 if (len <= MAX_ARGUMENTS_LENGTH) {
21621 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
21622 }
21623
21624 // Decode in chunks to avoid "call stack size exceeded".
21625 var res = ''
21626 var i = 0
21627 while (i < len) {
21628 res += String.fromCharCode.apply(
21629 String,
21630 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21631 )
21632 }
21633 return res
21634 }
21635
21636 function asciiSlice (buf, start, end) {
21637 var ret = ''
21638 end = Math.min(buf.length, end)
21639
21640 for (var i = start; i < end; ++i) {
21641 ret += String.fromCharCode(buf[i] & 0x7F)
21642 }
21643 return ret
21644 }
21645
21646 function latin1Slice (buf, start, end) {
21647 var ret = ''
21648 end = Math.min(buf.length, end)
21649
21650 for (var i = start; i < end; ++i) {
21651 ret += String.fromCharCode(buf[i])
21652 }
21653 return ret
21654 }
21655
21656 function hexSlice (buf, start, end) {
21657 var len = buf.length
21658
21659 if (!start || start < 0) start = 0
21660 if (!end || end < 0 || end > len) end = len
21661
21662 var out = ''
21663 for (var i = start; i < end; ++i) {
21664 out += toHex(buf[i])
21665 }
21666 return out
21667 }
21668
21669 function utf16leSlice (buf, start, end) {
21670 var bytes = buf.slice(start, end)
21671 var res = ''
21672 for (var i = 0; i < bytes.length; i += 2) {
21673 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21674 }
21675 return res
21676 }
21677
21678 Buffer.prototype.slice = function slice (start, end) {
21679 var len = this.length
21680 start = ~~start
21681 end = end === undefined ? len : ~~end
21682
21683 if (start < 0) {
21684 start += len
21685 if (start < 0) start = 0
21686 } else if (start > len) {
21687 start = len
21688 }
21689
21690 if (end < 0) {
21691 end += len
21692 if (end < 0) end = 0
21693 } else if (end > len) {
21694 end = len
21695 }
21696
21697 if (end < start) end = start
21698
21699 var newBuf = this.subarray(start, end)
21700 // Return an augmented `Uint8Array` instance
21701 newBuf.__proto__ = Buffer.prototype
21702 return newBuf
21703 }
21704
21705 /*
21706 * Need to make sure that buffer isn't trying to write out of bounds.
21707 */
21708 function checkOffset (offset, ext, length) {
21709 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21710 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
21711 }
21712
21713 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21714 offset = offset >>> 0
21715 byteLength = byteLength >>> 0
21716 if (!noAssert) checkOffset(offset, byteLength, this.length)
21717
21718 var val = this[offset]
21719 var mul = 1
21720 var i = 0
21721 while (++i < byteLength && (mul *= 0x100)) {
21722 val += this[offset + i] * mul
21723 }
21724
21725 return val
21726 }
21727
21728 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21729 offset = offset >>> 0
21730 byteLength = byteLength >>> 0
21731 if (!noAssert) {
21732 checkOffset(offset, byteLength, this.length)
21733 }
21734
21735 var val = this[offset + --byteLength]
21736 var mul = 1
21737 while (byteLength > 0 && (mul *= 0x100)) {
21738 val += this[offset + --byteLength] * mul
21739 }
21740
21741 return val
21742 }
21743
21744 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21745 offset = offset >>> 0
21746 if (!noAssert) checkOffset(offset, 1, this.length)
21747 return this[offset]
21748 }
21749
21750 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21751 offset = offset >>> 0
21752 if (!noAssert) checkOffset(offset, 2, this.length)
21753 return this[offset] | (this[offset + 1] << 8)
21754 }
21755
21756 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21757 offset = offset >>> 0
21758 if (!noAssert) checkOffset(offset, 2, this.length)
21759 return (this[offset] << 8) | this[offset + 1]
21760 }
21761
21762 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21763 offset = offset >>> 0
21764 if (!noAssert) checkOffset(offset, 4, this.length)
21765
21766 return ((this[offset]) |
21767 (this[offset + 1] << 8) |
21768 (this[offset + 2] << 16)) +
21769 (this[offset + 3] * 0x1000000)
21770 }
21771
21772 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21773 offset = offset >>> 0
21774 if (!noAssert) checkOffset(offset, 4, this.length)
21775
21776 return (this[offset] * 0x1000000) +
21777 ((this[offset + 1] << 16) |
21778 (this[offset + 2] << 8) |
21779 this[offset + 3])
21780 }
21781
21782 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21783 offset = offset >>> 0
21784 byteLength = byteLength >>> 0
21785 if (!noAssert) checkOffset(offset, byteLength, this.length)
21786
21787 var val = this[offset]
21788 var mul = 1
21789 var i = 0
21790 while (++i < byteLength && (mul *= 0x100)) {
21791 val += this[offset + i] * mul
21792 }
21793 mul *= 0x80
21794
21795 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21796
21797 return val
21798 }
21799
21800 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21801 offset = offset >>> 0
21802 byteLength = byteLength >>> 0
21803 if (!noAssert) checkOffset(offset, byteLength, this.length)
21804
21805 var i = byteLength
21806 var mul = 1
21807 var val = this[offset + --i]
21808 while (i > 0 && (mul *= 0x100)) {
21809 val += this[offset + --i] * mul
21810 }
21811 mul *= 0x80
21812
21813 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21814
21815 return val
21816 }
21817
21818 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21819 offset = offset >>> 0
21820 if (!noAssert) checkOffset(offset, 1, this.length)
21821 if (!(this[offset] & 0x80)) return (this[offset])
21822 return ((0xff - this[offset] + 1) * -1)
21823 }
21824
21825 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21826 offset = offset >>> 0
21827 if (!noAssert) checkOffset(offset, 2, this.length)
21828 var val = this[offset] | (this[offset + 1] << 8)
21829 return (val & 0x8000) ? val | 0xFFFF0000 : val
21830 }
21831
21832 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21833 offset = offset >>> 0
21834 if (!noAssert) checkOffset(offset, 2, this.length)
21835 var val = this[offset + 1] | (this[offset] << 8)
21836 return (val & 0x8000) ? val | 0xFFFF0000 : val
21837 }
21838
21839 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21840 offset = offset >>> 0
21841 if (!noAssert) checkOffset(offset, 4, this.length)
21842
21843 return (this[offset]) |
21844 (this[offset + 1] << 8) |
21845 (this[offset + 2] << 16) |
21846 (this[offset + 3] << 24)
21847 }
21848
21849 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21850 offset = offset >>> 0
21851 if (!noAssert) checkOffset(offset, 4, this.length)
21852
21853 return (this[offset] << 24) |
21854 (this[offset + 1] << 16) |
21855 (this[offset + 2] << 8) |
21856 (this[offset + 3])
21857 }
21858
21859 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21860 offset = offset >>> 0
21861 if (!noAssert) checkOffset(offset, 4, this.length)
21862 return ieee754.read(this, offset, true, 23, 4)
21863 }
21864
21865 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21866 offset = offset >>> 0
21867 if (!noAssert) checkOffset(offset, 4, this.length)
21868 return ieee754.read(this, offset, false, 23, 4)
21869 }
21870
21871 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21872 offset = offset >>> 0
21873 if (!noAssert) checkOffset(offset, 8, this.length)
21874 return ieee754.read(this, offset, true, 52, 8)
21875 }
21876
21877 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21878 offset = offset >>> 0
21879 if (!noAssert) checkOffset(offset, 8, this.length)
21880 return ieee754.read(this, offset, false, 52, 8)
21881 }
21882
21883 function checkInt (buf, value, offset, ext, max, min) {
21884 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21885 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21886 if (offset + ext > buf.length) throw new RangeError('Index out of range')
21887 }
21888
21889 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21890 value = +value
21891 offset = offset >>> 0
21892 byteLength = byteLength >>> 0
21893 if (!noAssert) {
21894 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21895 checkInt(this, value, offset, byteLength, maxBytes, 0)
21896 }
21897
21898 var mul = 1
21899 var i = 0
21900 this[offset] = value & 0xFF
21901 while (++i < byteLength && (mul *= 0x100)) {
21902 this[offset + i] = (value / mul) & 0xFF
21903 }
21904
21905 return offset + byteLength
21906 }
21907
21908 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21909 value = +value
21910 offset = offset >>> 0
21911 byteLength = byteLength >>> 0
21912 if (!noAssert) {
21913 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21914 checkInt(this, value, offset, byteLength, maxBytes, 0)
21915 }
21916
21917 var i = byteLength - 1
21918 var mul = 1
21919 this[offset + i] = value & 0xFF
21920 while (--i >= 0 && (mul *= 0x100)) {
21921 this[offset + i] = (value / mul) & 0xFF
21922 }
21923
21924 return offset + byteLength
21925 }
21926
21927 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21928 value = +value
21929 offset = offset >>> 0
21930 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21931 this[offset] = (value & 0xff)
21932 return offset + 1
21933 }
21934
21935 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21936 value = +value
21937 offset = offset >>> 0
21938 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21939 this[offset] = (value & 0xff)
21940 this[offset + 1] = (value >>> 8)
21941 return offset + 2
21942 }
21943
21944 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21945 value = +value
21946 offset = offset >>> 0
21947 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21948 this[offset] = (value >>> 8)
21949 this[offset + 1] = (value & 0xff)
21950 return offset + 2
21951 }
21952
21953 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
21954 value = +value
21955 offset = offset >>> 0
21956 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21957 this[offset + 3] = (value >>> 24)
21958 this[offset + 2] = (value >>> 16)
21959 this[offset + 1] = (value >>> 8)
21960 this[offset] = (value & 0xff)
21961 return offset + 4
21962 }
21963
21964 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
21965 value = +value
21966 offset = offset >>> 0
21967 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21968 this[offset] = (value >>> 24)
21969 this[offset + 1] = (value >>> 16)
21970 this[offset + 2] = (value >>> 8)
21971 this[offset + 3] = (value & 0xff)
21972 return offset + 4
21973 }
21974
21975 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
21976 value = +value
21977 offset = offset >>> 0
21978 if (!noAssert) {
21979 var limit = Math.pow(2, (8 * byteLength) - 1)
21980
21981 checkInt(this, value, offset, byteLength, limit - 1, -limit)
21982 }
21983
21984 var i = 0
21985 var mul = 1
21986 var sub = 0
21987 this[offset] = value & 0xFF
21988 while (++i < byteLength && (mul *= 0x100)) {
21989 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
21990 sub = 1
21991 }
21992 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
21993 }
21994
21995 return offset + byteLength
21996 }
21997
21998 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
21999 value = +value
22000 offset = offset >>> 0
22001 if (!noAssert) {
22002 var limit = Math.pow(2, (8 * byteLength) - 1)
22003
22004 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22005 }
22006
22007 var i = byteLength - 1
22008 var mul = 1
22009 var sub = 0
22010 this[offset + i] = value & 0xFF
22011 while (--i >= 0 && (mul *= 0x100)) {
22012 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22013 sub = 1
22014 }
22015 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22016 }
22017
22018 return offset + byteLength
22019 }
22020
22021 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22022 value = +value
22023 offset = offset >>> 0
22024 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22025 if (value < 0) value = 0xff + value + 1
22026 this[offset] = (value & 0xff)
22027 return offset + 1
22028 }
22029
22030 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22031 value = +value
22032 offset = offset >>> 0
22033 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22034 this[offset] = (value & 0xff)
22035 this[offset + 1] = (value >>> 8)
22036 return offset + 2
22037 }
22038
22039 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22040 value = +value
22041 offset = offset >>> 0
22042 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22043 this[offset] = (value >>> 8)
22044 this[offset + 1] = (value & 0xff)
22045 return offset + 2
22046 }
22047
22048 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22049 value = +value
22050 offset = offset >>> 0
22051 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22052 this[offset] = (value & 0xff)
22053 this[offset + 1] = (value >>> 8)
22054 this[offset + 2] = (value >>> 16)
22055 this[offset + 3] = (value >>> 24)
22056 return offset + 4
22057 }
22058
22059 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22060 value = +value
22061 offset = offset >>> 0
22062 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22063 if (value < 0) value = 0xffffffff + value + 1
22064 this[offset] = (value >>> 24)
22065 this[offset + 1] = (value >>> 16)
22066 this[offset + 2] = (value >>> 8)
22067 this[offset + 3] = (value & 0xff)
22068 return offset + 4
22069 }
22070
22071 function checkIEEE754 (buf, value, offset, ext, max, min) {
22072 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22073 if (offset < 0) throw new RangeError('Index out of range')
22074 }
22075
22076 function writeFloat (buf, value, offset, littleEndian, noAssert) {
22077 value = +value
22078 offset = offset >>> 0
22079 if (!noAssert) {
22080 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
22081 }
22082 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22083 return offset + 4
22084 }
22085
22086 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22087 return writeFloat(this, value, offset, true, noAssert)
22088 }
22089
22090 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22091 return writeFloat(this, value, offset, false, noAssert)
22092 }
22093
22094 function writeDouble (buf, value, offset, littleEndian, noAssert) {
22095 value = +value
22096 offset = offset >>> 0
22097 if (!noAssert) {
22098 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
22099 }
22100 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22101 return offset + 8
22102 }
22103
22104 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22105 return writeDouble(this, value, offset, true, noAssert)
22106 }
22107
22108 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22109 return writeDouble(this, value, offset, false, noAssert)
22110 }
22111
22112 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22113 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22114 if (!start) start = 0
22115 if (!end && end !== 0) end = this.length
22116 if (targetStart >= target.length) targetStart = target.length
22117 if (!targetStart) targetStart = 0
22118 if (end > 0 && end < start) end = start
22119
22120 // Copy 0 bytes; we're done
22121 if (end === start) return 0
22122 if (target.length === 0 || this.length === 0) return 0
22123
22124 // Fatal error conditions
22125 if (targetStart < 0) {
22126 throw new RangeError('targetStart out of bounds')
22127 }
22128 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22129 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22130
22131 // Are we oob?
22132 if (end > this.length) end = this.length
22133 if (target.length - targetStart < end - start) {
22134 end = target.length - targetStart + start
22135 }
22136
22137 var len = end - start
22138 var i
22139
22140 if (this === target && start < targetStart && targetStart < end) {
22141 // descending copy from end
22142 for (i = len - 1; i >= 0; --i) {
22143 target[i + targetStart] = this[i + start]
22144 }
22145 } else if (len < 1000) {
22146 // ascending copy from start
22147 for (i = 0; i < len; ++i) {
22148 target[i + targetStart] = this[i + start]
22149 }
22150 } else {
22151 Uint8Array.prototype.set.call(
22152 target,
22153 this.subarray(start, start + len),
22154 targetStart
22155 )
22156 }
22157
22158 return len
22159 }
22160
22161 // Usage:
22162 // buffer.fill(number[, offset[, end]])
22163 // buffer.fill(buffer[, offset[, end]])
22164 // buffer.fill(string[, offset[, end]][, encoding])
22165 Buffer.prototype.fill = function fill (val, start, end, encoding) {
22166 // Handle string cases:
22167 if (typeof val === 'string') {
22168 if (typeof start === 'string') {
22169 encoding = start
22170 start = 0
22171 end = this.length
22172 } else if (typeof end === 'string') {
22173 encoding = end
22174 end = this.length
22175 }
22176 if (val.length === 1) {
22177 var code = val.charCodeAt(0)
22178 if (code < 256) {
22179 val = code
22180 }
22181 }
22182 if (encoding !== undefined && typeof encoding !== 'string') {
22183 throw new TypeError('encoding must be a string')
22184 }
22185 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22186 throw new TypeError('Unknown encoding: ' + encoding)
22187 }
22188 } else if (typeof val === 'number') {
22189 val = val & 255
22190 }
22191
22192 // Invalid ranges are not set to a default, so can range check early.
22193 if (start < 0 || this.length < start || this.length < end) {
22194 throw new RangeError('Out of range index')
22195 }
22196
22197 if (end <= start) {
22198 return this
22199 }
22200
22201 start = start >>> 0
22202 end = end === undefined ? this.length : end >>> 0
22203
22204 if (!val) val = 0
22205
22206 var i
22207 if (typeof val === 'number') {
22208 for (i = start; i < end; ++i) {
22209 this[i] = val
22210 }
22211 } else {
22212 var bytes = Buffer.isBuffer(val)
22213 ? val
22214 : new Buffer(val, encoding)
22215 var len = bytes.length
22216 for (i = 0; i < end - start; ++i) {
22217 this[i + start] = bytes[i % len]
22218 }
22219 }
22220
22221 return this
22222 }
22223
22224 // HELPER FUNCTIONS
22225 // ================
22226
22227 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22228
22229 function base64clean (str) {
22230 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22231 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22232 // Node converts strings with length < 2 to ''
22233 if (str.length < 2) return ''
22234 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22235 while (str.length % 4 !== 0) {
22236 str = str + '='
22237 }
22238 return str
22239 }
22240
22241 function stringtrim (str) {
22242 if (str.trim) return str.trim()
22243 return str.replace(/^\s+|\s+$/g, '')
22244 }
22245
22246 function toHex (n) {
22247 if (n < 16) return '0' + n.toString(16)
22248 return n.toString(16)
22249 }
22250
22251 function utf8ToBytes (string, units) {
22252 units = units || Infinity
22253 var codePoint
22254 var length = string.length
22255 var leadSurrogate = null
22256 var bytes = []
22257
22258 for (var i = 0; i < length; ++i) {
22259 codePoint = string.charCodeAt(i)
22260
22261 // is surrogate component
22262 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22263 // last char was a lead
22264 if (!leadSurrogate) {
22265 // no lead yet
22266 if (codePoint > 0xDBFF) {
22267 // unexpected trail
22268 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22269 continue
22270 } else if (i + 1 === length) {
22271 // unpaired lead
22272 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22273 continue
22274 }
22275
22276 // valid lead
22277 leadSurrogate = codePoint
22278
22279 continue
22280 }
22281
22282 // 2 leads in a row
22283 if (codePoint < 0xDC00) {
22284 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22285 leadSurrogate = codePoint
22286 continue
22287 }
22288
22289 // valid surrogate pair
22290 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22291 } else if (leadSurrogate) {
22292 // valid bmp char, but last char was a lead
22293 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22294 }
22295
22296 leadSurrogate = null
22297
22298 // encode utf8
22299 if (codePoint < 0x80) {
22300 if ((units -= 1) < 0) break
22301 bytes.push(codePoint)
22302 } else if (codePoint < 0x800) {
22303 if ((units -= 2) < 0) break
22304 bytes.push(
22305 codePoint >> 0x6 | 0xC0,
22306 codePoint & 0x3F | 0x80
22307 )
22308 } else if (codePoint < 0x10000) {
22309 if ((units -= 3) < 0) break
22310 bytes.push(
22311 codePoint >> 0xC | 0xE0,
22312 codePoint >> 0x6 & 0x3F | 0x80,
22313 codePoint & 0x3F | 0x80
22314 )
22315 } else if (codePoint < 0x110000) {
22316 if ((units -= 4) < 0) break
22317 bytes.push(
22318 codePoint >> 0x12 | 0xF0,
22319 codePoint >> 0xC & 0x3F | 0x80,
22320 codePoint >> 0x6 & 0x3F | 0x80,
22321 codePoint & 0x3F | 0x80
22322 )
22323 } else {
22324 throw new Error('Invalid code point')
22325 }
22326 }
22327
22328 return bytes
22329 }
22330
22331 function asciiToBytes (str) {
22332 var byteArray = []
22333 for (var i = 0; i < str.length; ++i) {
22334 // Node's code seems to be doing this and not & 0x7F..
22335 byteArray.push(str.charCodeAt(i) & 0xFF)
22336 }
22337 return byteArray
22338 }
22339
22340 function utf16leToBytes (str, units) {
22341 var c, hi, lo
22342 var byteArray = []
22343 for (var i = 0; i < str.length; ++i) {
22344 if ((units -= 2) < 0) break
22345
22346 c = str.charCodeAt(i)
22347 hi = c >> 8
22348 lo = c % 256
22349 byteArray.push(lo)
22350 byteArray.push(hi)
22351 }
22352
22353 return byteArray
22354 }
22355
22356 function base64ToBytes (str) {
22357 return base64.toByteArray(base64clean(str))
22358 }
22359
22360 function blitBuffer (src, dst, offset, length) {
22361 for (var i = 0; i < length; ++i) {
22362 if ((i + offset >= dst.length) || (i >= src.length)) break
22363 dst[i + offset] = src[i]
22364 }
22365 return i
22366 }
22367
22368 function isnan (val) {
22369 return val !== val // eslint-disable-line no-self-compare
22370 }
22371
22372 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22373 (function (Buffer){
22374 // Copyright Joyent, Inc. and other Node contributors.
22375 //
22376 // Permission is hereby granted, free of charge, to any person obtaining a
22377 // copy of this software and associated documentation files (the
22378 // "Software"), to deal in the Software without restriction, including
22379 // without limitation the rights to use, copy, modify, merge, publish,
22380 // distribute, sublicense, and/or sell copies of the Software, and to permit
22381 // persons to whom the Software is furnished to do so, subject to the
22382 // following conditions:
22383 //
22384 // The above copyright notice and this permission notice shall be included
22385 // in all copies or substantial portions of the Software.
22386 //
22387 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22388 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22389 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22390 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22391 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22392 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22393 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22394
22395 // NOTE: These type checking functions intentionally don't use `instanceof`
22396 // because it is fragile and can be easily faked with `Object.create()`.
22397
22398 function isArray(arg) {
22399 if (Array.isArray) {
22400 return Array.isArray(arg);
22401 }
22402 return objectToString(arg) === '[object Array]';
22403 }
22404 exports.isArray = isArray;
22405
22406 function isBoolean(arg) {
22407 return typeof arg === 'boolean';
22408 }
22409 exports.isBoolean = isBoolean;
22410
22411 function isNull(arg) {
22412 return arg === null;
22413 }
22414 exports.isNull = isNull;
22415
22416 function isNullOrUndefined(arg) {
22417 return arg == null;
22418 }
22419 exports.isNullOrUndefined = isNullOrUndefined;
22420
22421 function isNumber(arg) {
22422 return typeof arg === 'number';
22423 }
22424 exports.isNumber = isNumber;
22425
22426 function isString(arg) {
22427 return typeof arg === 'string';
22428 }
22429 exports.isString = isString;
22430
22431 function isSymbol(arg) {
22432 return typeof arg === 'symbol';
22433 }
22434 exports.isSymbol = isSymbol;
22435
22436 function isUndefined(arg) {
22437 return arg === void 0;
22438 }
22439 exports.isUndefined = isUndefined;
22440
22441 function isRegExp(re) {
22442 return objectToString(re) === '[object RegExp]';
22443 }
22444 exports.isRegExp = isRegExp;
22445
22446 function isObject(arg) {
22447 return typeof arg === 'object' && arg !== null;
22448 }
22449 exports.isObject = isObject;
22450
22451 function isDate(d) {
22452 return objectToString(d) === '[object Date]';
22453 }
22454 exports.isDate = isDate;
22455
22456 function isError(e) {
22457 return (objectToString(e) === '[object Error]' || e instanceof Error);
22458 }
22459 exports.isError = isError;
22460
22461 function isFunction(arg) {
22462 return typeof arg === 'function';
22463 }
22464 exports.isFunction = isFunction;
22465
22466 function isPrimitive(arg) {
22467 return arg === null ||
22468 typeof arg === 'boolean' ||
22469 typeof arg === 'number' ||
22470 typeof arg === 'string' ||
22471 typeof arg === 'symbol' || // ES6 symbol
22472 typeof arg === 'undefined';
22473 }
22474 exports.isPrimitive = isPrimitive;
22475
22476 exports.isBuffer = Buffer.isBuffer;
22477
22478 function objectToString(o) {
22479 return Object.prototype.toString.call(o);
22480 }
22481
22482 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22483 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22484 // Copyright Joyent, Inc. and other Node contributors.
22485 //
22486 // Permission is hereby granted, free of charge, to any person obtaining a
22487 // copy of this software and associated documentation files (the
22488 // "Software"), to deal in the Software without restriction, including
22489 // without limitation the rights to use, copy, modify, merge, publish,
22490 // distribute, sublicense, and/or sell copies of the Software, and to permit
22491 // persons to whom the Software is furnished to do so, subject to the
22492 // following conditions:
22493 //
22494 // The above copyright notice and this permission notice shall be included
22495 // in all copies or substantial portions of the Software.
22496 //
22497 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22498 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22499 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22500 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22501 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22502 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22503 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22504
22505 function EventEmitter() {
22506 this._events = this._events || {};
22507 this._maxListeners = this._maxListeners || undefined;
22508 }
22509 module.exports = EventEmitter;
22510
22511 // Backwards-compat with node 0.10.x
22512 EventEmitter.EventEmitter = EventEmitter;
22513
22514 EventEmitter.prototype._events = undefined;
22515 EventEmitter.prototype._maxListeners = undefined;
22516
22517 // By default EventEmitters will print a warning if more than 10 listeners are
22518 // added to it. This is a useful default which helps finding memory leaks.
22519 EventEmitter.defaultMaxListeners = 10;
22520
22521 // Obviously not all Emitters should be limited to 10. This function allows
22522 // that to be increased. Set to zero for unlimited.
22523 EventEmitter.prototype.setMaxListeners = function(n) {
22524 if (!isNumber(n) || n < 0 || isNaN(n))
22525 throw TypeError('n must be a positive number');
22526 this._maxListeners = n;
22527 return this;
22528 };
22529
22530 EventEmitter.prototype.emit = function(type) {
22531 var er, handler, len, args, i, listeners;
22532
22533 if (!this._events)
22534 this._events = {};
22535
22536 // If there is no 'error' event listener then throw.
22537 if (type === 'error') {
22538 if (!this._events.error ||
22539 (isObject(this._events.error) && !this._events.error.length)) {
22540 er = arguments[1];
22541 if (er instanceof Error) {
22542 throw er; // Unhandled 'error' event
22543 } else {
22544 // At least give some kind of context to the user
22545 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22546 err.context = er;
22547 throw err;
22548 }
22549 }
22550 }
22551
22552 handler = this._events[type];
22553
22554 if (isUndefined(handler))
22555 return false;
22556
22557 if (isFunction(handler)) {
22558 switch (arguments.length) {
22559 // fast cases
22560 case 1:
22561 handler.call(this);
22562 break;
22563 case 2:
22564 handler.call(this, arguments[1]);
22565 break;
22566 case 3:
22567 handler.call(this, arguments[1], arguments[2]);
22568 break;
22569 // slower
22570 default:
22571 args = Array.prototype.slice.call(arguments, 1);
22572 handler.apply(this, args);
22573 }
22574 } else if (isObject(handler)) {
22575 args = Array.prototype.slice.call(arguments, 1);
22576 listeners = handler.slice();
22577 len = listeners.length;
22578 for (i = 0; i < len; i++)
22579 listeners[i].apply(this, args);
22580 }
22581
22582 return true;
22583 };
22584
22585 EventEmitter.prototype.addListener = function(type, listener) {
22586 var m;
22587
22588 if (!isFunction(listener))
22589 throw TypeError('listener must be a function');
22590
22591 if (!this._events)
22592 this._events = {};
22593
22594 // To avoid recursion in the case that type === "newListener"! Before
22595 // adding it to the listeners, first emit "newListener".
22596 if (this._events.newListener)
22597 this.emit('newListener', type,
22598 isFunction(listener.listener) ?
22599 listener.listener : listener);
22600
22601 if (!this._events[type])
22602 // Optimize the case of one listener. Don't need the extra array object.
22603 this._events[type] = listener;
22604 else if (isObject(this._events[type]))
22605 // If we've already got an array, just append.
22606 this._events[type].push(listener);
22607 else
22608 // Adding the second element, need to change to array.
22609 this._events[type] = [this._events[type], listener];
22610
22611 // Check for listener leak
22612 if (isObject(this._events[type]) && !this._events[type].warned) {
22613 if (!isUndefined(this._maxListeners)) {
22614 m = this._maxListeners;
22615 } else {
22616 m = EventEmitter.defaultMaxListeners;
22617 }
22618
22619 if (m && m > 0 && this._events[type].length > m) {
22620 this._events[type].warned = true;
22621 console.error('(node) warning: possible EventEmitter memory ' +
22622 'leak detected. %d listeners added. ' +
22623 'Use emitter.setMaxListeners() to increase limit.',
22624 this._events[type].length);
22625 if (typeof console.trace === 'function') {
22626 // not supported in IE 10
22627 console.trace();
22628 }
22629 }
22630 }
22631
22632 return this;
22633 };
22634
22635 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
22636
22637 EventEmitter.prototype.once = function(type, listener) {
22638 if (!isFunction(listener))
22639 throw TypeError('listener must be a function');
22640
22641 var fired = false;
22642
22643 function g() {
22644 this.removeListener(type, g);
22645
22646 if (!fired) {
22647 fired = true;
22648 listener.apply(this, arguments);
22649 }
22650 }
22651
22652 g.listener = listener;
22653 this.on(type, g);
22654
22655 return this;
22656 };
22657
22658 // emits a 'removeListener' event iff the listener was removed
22659 EventEmitter.prototype.removeListener = function(type, listener) {
22660 var list, position, length, i;
22661
22662 if (!isFunction(listener))
22663 throw TypeError('listener must be a function');
22664
22665 if (!this._events || !this._events[type])
22666 return this;
22667
22668 list = this._events[type];
22669 length = list.length;
22670 position = -1;
22671
22672 if (list === listener ||
22673 (isFunction(list.listener) && list.listener === listener)) {
22674 delete this._events[type];
22675 if (this._events.removeListener)
22676 this.emit('removeListener', type, listener);
22677
22678 } else if (isObject(list)) {
22679 for (i = length; i-- > 0;) {
22680 if (list[i] === listener ||
22681 (list[i].listener && list[i].listener === listener)) {
22682 position = i;
22683 break;
22684 }
22685 }
22686
22687 if (position < 0)
22688 return this;
22689
22690 if (list.length === 1) {
22691 list.length = 0;
22692 delete this._events[type];
22693 } else {
22694 list.splice(position, 1);
22695 }
22696
22697 if (this._events.removeListener)
22698 this.emit('removeListener', type, listener);
22699 }
22700
22701 return this;
22702 };
22703
22704 EventEmitter.prototype.removeAllListeners = function(type) {
22705 var key, listeners;
22706
22707 if (!this._events)
22708 return this;
22709
22710 // not listening for removeListener, no need to emit
22711 if (!this._events.removeListener) {
22712 if (arguments.length === 0)
22713 this._events = {};
22714 else if (this._events[type])
22715 delete this._events[type];
22716 return this;
22717 }
22718
22719 // emit removeListener for all listeners on all events
22720 if (arguments.length === 0) {
22721 for (key in this._events) {
22722 if (key === 'removeListener') continue;
22723 this.removeAllListeners(key);
22724 }
22725 this.removeAllListeners('removeListener');
22726 this._events = {};
22727 return this;
22728 }
22729
22730 listeners = this._events[type];
22731
22732 if (isFunction(listeners)) {
22733 this.removeListener(type, listeners);
22734 } else if (listeners) {
22735 // LIFO order
22736 while (listeners.length)
22737 this.removeListener(type, listeners[listeners.length - 1]);
22738 }
22739 delete this._events[type];
22740
22741 return this;
22742 };
22743
22744 EventEmitter.prototype.listeners = function(type) {
22745 var ret;
22746 if (!this._events || !this._events[type])
22747 ret = [];
22748 else if (isFunction(this._events[type]))
22749 ret = [this._events[type]];
22750 else
22751 ret = this._events[type].slice();
22752 return ret;
22753 };
22754
22755 EventEmitter.prototype.listenerCount = function(type) {
22756 if (this._events) {
22757 var evlistener = this._events[type];
22758
22759 if (isFunction(evlistener))
22760 return 1;
22761 else if (evlistener)
22762 return evlistener.length;
22763 }
22764 return 0;
22765 };
22766
22767 EventEmitter.listenerCount = function(emitter, type) {
22768 return emitter.listenerCount(type);
22769 };
22770
22771 function isFunction(arg) {
22772 return typeof arg === 'function';
22773 }
22774
22775 function isNumber(arg) {
22776 return typeof arg === 'number';
22777 }
22778
22779 function isObject(arg) {
22780 return typeof arg === 'object' && arg !== null;
22781 }
22782
22783 function isUndefined(arg) {
22784 return arg === void 0;
22785 }
22786
22787 },{}],8:[function(require,module,exports){
22788 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22789 var e, m
22790 var eLen = nBytes * 8 - mLen - 1
22791 var eMax = (1 << eLen) - 1
22792 var eBias = eMax >> 1
22793 var nBits = -7
22794 var i = isLE ? (nBytes - 1) : 0
22795 var d = isLE ? -1 : 1
22796 var s = buffer[offset + i]
22797
22798 i += d
22799
22800 e = s & ((1 << (-nBits)) - 1)
22801 s >>= (-nBits)
22802 nBits += eLen
22803 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22804
22805 m = e & ((1 << (-nBits)) - 1)
22806 e >>= (-nBits)
22807 nBits += mLen
22808 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22809
22810 if (e === 0) {
22811 e = 1 - eBias
22812 } else if (e === eMax) {
22813 return m ? NaN : ((s ? -1 : 1) * Infinity)
22814 } else {
22815 m = m + Math.pow(2, mLen)
22816 e = e - eBias
22817 }
22818 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
22819 }
22820
22821 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22822 var e, m, c
22823 var eLen = nBytes * 8 - mLen - 1
22824 var eMax = (1 << eLen) - 1
22825 var eBias = eMax >> 1
22826 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22827 var i = isLE ? 0 : (nBytes - 1)
22828 var d = isLE ? 1 : -1
22829 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
22830
22831 value = Math.abs(value)
22832
22833 if (isNaN(value) || value === Infinity) {
22834 m = isNaN(value) ? 1 : 0
22835 e = eMax
22836 } else {
22837 e = Math.floor(Math.log(value) / Math.LN2)
22838 if (value * (c = Math.pow(2, -e)) < 1) {
22839 e--
22840 c *= 2
22841 }
22842 if (e + eBias >= 1) {
22843 value += rt / c
22844 } else {
22845 value += rt * Math.pow(2, 1 - eBias)
22846 }
22847 if (value * c >= 2) {
22848 e++
22849 c /= 2
22850 }
22851
22852 if (e + eBias >= eMax) {
22853 m = 0
22854 e = eMax
22855 } else if (e + eBias >= 1) {
22856 m = (value * c - 1) * Math.pow(2, mLen)
22857 e = e + eBias
22858 } else {
22859 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22860 e = 0
22861 }
22862 }
22863
22864 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
22865
22866 e = (e << mLen) | m
22867 eLen += mLen
22868 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
22869
22870 buffer[offset + i - d] |= s * 128
22871 }
22872
22873 },{}],9:[function(require,module,exports){
22874 if (typeof Object.create === 'function') {
22875 // implementation from standard node.js 'util' module
22876 module.exports = function inherits(ctor, superCtor) {
22877 ctor.super_ = superCtor
22878 ctor.prototype = Object.create(superCtor.prototype, {
22879 constructor: {
22880 value: ctor,
22881 enumerable: false,
22882 writable: true,
22883 configurable: true
22884 }
22885 });
22886 };
22887 } else {
22888 // old school shim for old browsers
22889 module.exports = function inherits(ctor, superCtor) {
22890 ctor.super_ = superCtor
22891 var TempCtor = function () {}
22892 TempCtor.prototype = superCtor.prototype
22893 ctor.prototype = new TempCtor()
22894 ctor.prototype.constructor = ctor
22895 }
22896 }
22897
22898 },{}],10:[function(require,module,exports){
22899 /*!
22900 * Determine if an object is a Buffer
22901 *
22902 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22903 * @license MIT
22904 */
22905
22906 // The _isBuffer check is for Safari 5-7 support, because it's missing
22907 // Object.prototype.constructor. Remove this eventually
22908 module.exports = function (obj) {
22909 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
22910 }
22911
22912 function isBuffer (obj) {
22913 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22914 }
22915
22916 // For Node v0.10 support. Remove this eventually.
22917 function isSlowBuffer (obj) {
22918 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22919 }
22920
22921 },{}],11:[function(require,module,exports){
22922 var toString = {}.toString;
22923
22924 module.exports = Array.isArray || function (arr) {
22925 return toString.call(arr) == '[object Array]';
22926 };
22927
22928 },{}],12:[function(require,module,exports){
22929 (function (process){
22930 'use strict';
22931
22932 if (!process.version ||
22933 process.version.indexOf('v0.') === 0 ||
22934 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22935 module.exports = nextTick;
22936 } else {
22937 module.exports = process.nextTick;
22938 }
22939
22940 function nextTick(fn, arg1, arg2, arg3) {
22941 if (typeof fn !== 'function') {
22942 throw new TypeError('"callback" argument must be a function');
22943 }
22944 var len = arguments.length;
22945 var args, i;
22946 switch (len) {
22947 case 0:
22948 case 1:
22949 return process.nextTick(fn);
22950 case 2:
22951 return process.nextTick(function afterTickOne() {
22952 fn.call(null, arg1);
22953 });
22954 case 3:
22955 return process.nextTick(function afterTickTwo() {
22956 fn.call(null, arg1, arg2);
22957 });
22958 case 4:
22959 return process.nextTick(function afterTickThree() {
22960 fn.call(null, arg1, arg2, arg3);
22961 });
22962 default:
22963 args = new Array(len - 1);
22964 i = 0;
22965 while (i < args.length) {
22966 args[i++] = arguments[i];
22967 }
22968 return process.nextTick(function afterTick() {
22969 fn.apply(null, args);
22970 });
22971 }
22972 }
22973
22974 }).call(this,require('_process'))
22975 },{"_process":13}],13:[function(require,module,exports){
22976 // shim for using process in browser
22977 var process = module.exports = {};
22978
22979 // cached from whatever global is present so that test runners that stub it
22980 // don't break things. But we need to wrap it in a try catch in case it is
22981 // wrapped in strict mode code which doesn't define any globals. It's inside a
22982 // function because try/catches deoptimize in certain engines.
22983
22984 var cachedSetTimeout;
22985 var cachedClearTimeout;
22986
22987 function defaultSetTimout() {
22988 throw new Error('setTimeout has not been defined');
22989 }
22990 function defaultClearTimeout () {
22991 throw new Error('clearTimeout has not been defined');
22992 }
22993 (function () {
22994 try {
22995 if (typeof setTimeout === 'function') {
22996 cachedSetTimeout = setTimeout;
22997 } else {
22998 cachedSetTimeout = defaultSetTimout;
22999 }
23000 } catch (e) {
23001 cachedSetTimeout = defaultSetTimout;
23002 }
23003 try {
23004 if (typeof clearTimeout === 'function') {
23005 cachedClearTimeout = clearTimeout;
23006 } else {
23007 cachedClearTimeout = defaultClearTimeout;
23008 }
23009 } catch (e) {
23010 cachedClearTimeout = defaultClearTimeout;
23011 }
23012 } ())
23013 function runTimeout(fun) {
23014 if (cachedSetTimeout === setTimeout) {
23015 //normal enviroments in sane situations
23016 return setTimeout(fun, 0);
23017 }
23018 // if setTimeout wasn't available but was latter defined
23019 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23020 cachedSetTimeout = setTimeout;
23021 return setTimeout(fun, 0);
23022 }
23023 try {
23024 // when when somebody has screwed with setTimeout but no I.E. maddness
23025 return cachedSetTimeout(fun, 0);
23026 } catch(e){
23027 try {
23028 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23029 return cachedSetTimeout.call(null, fun, 0);
23030 } catch(e){
23031 // 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
23032 return cachedSetTimeout.call(this, fun, 0);
23033 }
23034 }
23035
23036
23037 }
23038 function runClearTimeout(marker) {
23039 if (cachedClearTimeout === clearTimeout) {
23040 //normal enviroments in sane situations
23041 return clearTimeout(marker);
23042 }
23043 // if clearTimeout wasn't available but was latter defined
23044 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23045 cachedClearTimeout = clearTimeout;
23046 return clearTimeout(marker);
23047 }
23048 try {
23049 // when when somebody has screwed with setTimeout but no I.E. maddness
23050 return cachedClearTimeout(marker);
23051 } catch (e){
23052 try {
23053 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23054 return cachedClearTimeout.call(null, marker);
23055 } catch (e){
23056 // 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.
23057 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23058 return cachedClearTimeout.call(this, marker);
23059 }
23060 }
23061
23062
23063
23064 }
23065 var queue = [];
23066 var draining = false;
23067 var currentQueue;
23068 var queueIndex = -1;
23069
23070 function cleanUpNextTick() {
23071 if (!draining || !currentQueue) {
23072 return;
23073 }
23074 draining = false;
23075 if (currentQueue.length) {
23076 queue = currentQueue.concat(queue);
23077 } else {
23078 queueIndex = -1;
23079 }
23080 if (queue.length) {
23081 drainQueue();
23082 }
23083 }
23084
23085 function drainQueue() {
23086 if (draining) {
23087 return;
23088 }
23089 var timeout = runTimeout(cleanUpNextTick);
23090 draining = true;
23091
23092 var len = queue.length;
23093 while(len) {
23094 currentQueue = queue;
23095 queue = [];
23096 while (++queueIndex < len) {
23097 if (currentQueue) {
23098 currentQueue[queueIndex].run();
23099 }
23100 }
23101 queueIndex = -1;
23102 len = queue.length;
23103 }
23104 currentQueue = null;
23105 draining = false;
23106 runClearTimeout(timeout);
23107 }
23108
23109 process.nextTick = function (fun) {
23110 var args = new Array(arguments.length - 1);
23111 if (arguments.length > 1) {
23112 for (var i = 1; i < arguments.length; i++) {
23113 args[i - 1] = arguments[i];
23114 }
23115 }
23116 queue.push(new Item(fun, args));
23117 if (queue.length === 1 && !draining) {
23118 runTimeout(drainQueue);
23119 }
23120 };
23121
23122 // v8 likes predictible objects
23123 function Item(fun, array) {
23124 this.fun = fun;
23125 this.array = array;
23126 }
23127 Item.prototype.run = function () {
23128 this.fun.apply(null, this.array);
23129 };
23130 process.title = 'browser';
23131 process.browser = true;
23132 process.env = {};
23133 process.argv = [];
23134 process.version = ''; // empty string to avoid regexp issues
23135 process.versions = {};
23136
23137 function noop() {}
23138
23139 process.on = noop;
23140 process.addListener = noop;
23141 process.once = noop;
23142 process.off = noop;
23143 process.removeListener = noop;
23144 process.removeAllListeners = noop;
23145 process.emit = noop;
23146
23147 process.binding = function (name) {
23148 throw new Error('process.binding is not supported');
23149 };
23150
23151 process.cwd = function () { return '/' };
23152 process.chdir = function (dir) {
23153 throw new Error('process.chdir is not supported');
23154 };
23155 process.umask = function() { return 0; };
23156
23157 },{}],14:[function(require,module,exports){
23158 module.exports = require("./lib/_stream_duplex.js")
23159
23160 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23161 // a duplex stream is just a stream that is both readable and writable.
23162 // Since JS doesn't have multiple prototypal inheritance, this class
23163 // prototypally inherits from Readable, and then parasitically from
23164 // Writable.
23165
23166 'use strict';
23167
23168 /*<replacement>*/
23169
23170 var objectKeys = Object.keys || function (obj) {
23171 var keys = [];
23172 for (var key in obj) {
23173 keys.push(key);
23174 }return keys;
23175 };
23176 /*</replacement>*/
23177
23178 module.exports = Duplex;
23179
23180 /*<replacement>*/
23181 var processNextTick = require('process-nextick-args');
23182 /*</replacement>*/
23183
23184 /*<replacement>*/
23185 var util = require('core-util-is');
23186 util.inherits = require('inherits');
23187 /*</replacement>*/
23188
23189 var Readable = require('./_stream_readable');
23190 var Writable = require('./_stream_writable');
23191
23192 util.inherits(Duplex, Readable);
23193
23194 var keys = objectKeys(Writable.prototype);
23195 for (var v = 0; v < keys.length; v++) {
23196 var method = keys[v];
23197 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
23198 }
23199
23200 function Duplex(options) {
23201 if (!(this instanceof Duplex)) return new Duplex(options);
23202
23203 Readable.call(this, options);
23204 Writable.call(this, options);
23205
23206 if (options && options.readable === false) this.readable = false;
23207
23208 if (options && options.writable === false) this.writable = false;
23209
23210 this.allowHalfOpen = true;
23211 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
23212
23213 this.once('end', onend);
23214 }
23215
23216 // the no-half-open enforcer
23217 function onend() {
23218 // if we allow half-open state, or if the writable side ended,
23219 // then we're ok.
23220 if (this.allowHalfOpen || this._writableState.ended) return;
23221
23222 // no more data can be written.
23223 // But allow more writes to happen in this tick.
23224 processNextTick(onEndNT, this);
23225 }
23226
23227 function onEndNT(self) {
23228 self.end();
23229 }
23230
23231 function forEach(xs, f) {
23232 for (var i = 0, l = xs.length; i < l; i++) {
23233 f(xs[i], i);
23234 }
23235 }
23236 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23237 // a passthrough stream.
23238 // basically just the most minimal sort of Transform stream.
23239 // Every written chunk gets output as-is.
23240
23241 'use strict';
23242
23243 module.exports = PassThrough;
23244
23245 var Transform = require('./_stream_transform');
23246
23247 /*<replacement>*/
23248 var util = require('core-util-is');
23249 util.inherits = require('inherits');
23250 /*</replacement>*/
23251
23252 util.inherits(PassThrough, Transform);
23253
23254 function PassThrough(options) {
23255 if (!(this instanceof PassThrough)) return new PassThrough(options);
23256
23257 Transform.call(this, options);
23258 }
23259
23260 PassThrough.prototype._transform = function (chunk, encoding, cb) {
23261 cb(null, chunk);
23262 };
23263 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23264 (function (process){
23265 'use strict';
23266
23267 module.exports = Readable;
23268
23269 /*<replacement>*/
23270 var processNextTick = require('process-nextick-args');
23271 /*</replacement>*/
23272
23273 /*<replacement>*/
23274 var isArray = require('isarray');
23275 /*</replacement>*/
23276
23277 /*<replacement>*/
23278 var Duplex;
23279 /*</replacement>*/
23280
23281 Readable.ReadableState = ReadableState;
23282
23283 /*<replacement>*/
23284 var EE = require('events').EventEmitter;
23285
23286 var EElistenerCount = function (emitter, type) {
23287 return emitter.listeners(type).length;
23288 };
23289 /*</replacement>*/
23290
23291 /*<replacement>*/
23292 var Stream;
23293 (function () {
23294 try {
23295 Stream = require('st' + 'ream');
23296 } catch (_) {} finally {
23297 if (!Stream) Stream = require('events').EventEmitter;
23298 }
23299 })();
23300 /*</replacement>*/
23301
23302 var Buffer = require('buffer').Buffer;
23303 /*<replacement>*/
23304 var bufferShim = require('buffer-shims');
23305 /*</replacement>*/
23306
23307 /*<replacement>*/
23308 var util = require('core-util-is');
23309 util.inherits = require('inherits');
23310 /*</replacement>*/
23311
23312 /*<replacement>*/
23313 var debugUtil = require('util');
23314 var debug = void 0;
23315 if (debugUtil && debugUtil.debuglog) {
23316 debug = debugUtil.debuglog('stream');
23317 } else {
23318 debug = function () {};
23319 }
23320 /*</replacement>*/
23321
23322 var BufferList = require('./internal/streams/BufferList');
23323 var StringDecoder;
23324
23325 util.inherits(Readable, Stream);
23326
23327 function prependListener(emitter, event, fn) {
23328 // Sadly this is not cacheable as some libraries bundle their own
23329 // event emitter implementation with them.
23330 if (typeof emitter.prependListener === 'function') {
23331 return emitter.prependListener(event, fn);
23332 } else {
23333 // This is a hack to make sure that our error handler is attached before any
23334 // userland ones. NEVER DO THIS. This is here only because this code needs
23335 // to continue to work with older versions of Node.js that do not include
23336 // the prependListener() method. The goal is to eventually remove this hack.
23337 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]];
23338 }
23339 }
23340
23341 function ReadableState(options, stream) {
23342 Duplex = Duplex || require('./_stream_duplex');
23343
23344 options = options || {};
23345
23346 // object stream flag. Used to make read(n) ignore n and to
23347 // make all the buffer merging and length checks go away
23348 this.objectMode = !!options.objectMode;
23349
23350 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
23351
23352 // the point at which it stops calling _read() to fill the buffer
23353 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23354 var hwm = options.highWaterMark;
23355 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23356 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
23357
23358 // cast to ints.
23359 this.highWaterMark = ~ ~this.highWaterMark;
23360
23361 // A linked list is used to store data chunks instead of an array because the
23362 // linked list can remove elements from the beginning faster than
23363 // array.shift()
23364 this.buffer = new BufferList();
23365 this.length = 0;
23366 this.pipes = null;
23367 this.pipesCount = 0;
23368 this.flowing = null;
23369 this.ended = false;
23370 this.endEmitted = false;
23371 this.reading = false;
23372
23373 // a flag to be able to tell if the onwrite cb is called immediately,
23374 // or on a later tick. We set this to true at first, because any
23375 // actions that shouldn't happen until "later" should generally also
23376 // not happen before the first write call.
23377 this.sync = true;
23378
23379 // whenever we return null, then we set a flag to say
23380 // that we're awaiting a 'readable' event emission.
23381 this.needReadable = false;
23382 this.emittedReadable = false;
23383 this.readableListening = false;
23384 this.resumeScheduled = false;
23385
23386 // Crypto is kind of old and crusty. Historically, its default string
23387 // encoding is 'binary' so we have to make this configurable.
23388 // Everything else in the universe uses 'utf8', though.
23389 this.defaultEncoding = options.defaultEncoding || 'utf8';
23390
23391 // when piping, we only care about 'readable' events that happen
23392 // after read()ing all the bytes and not getting any pushback.
23393 this.ranOut = false;
23394
23395 // the number of writers that are awaiting a drain event in .pipe()s
23396 this.awaitDrain = 0;
23397
23398 // if true, a maybeReadMore has been scheduled
23399 this.readingMore = false;
23400
23401 this.decoder = null;
23402 this.encoding = null;
23403 if (options.encoding) {
23404 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23405 this.decoder = new StringDecoder(options.encoding);
23406 this.encoding = options.encoding;
23407 }
23408 }
23409
23410 function Readable(options) {
23411 Duplex = Duplex || require('./_stream_duplex');
23412
23413 if (!(this instanceof Readable)) return new Readable(options);
23414
23415 this._readableState = new ReadableState(options, this);
23416
23417 // legacy
23418 this.readable = true;
23419
23420 if (options && typeof options.read === 'function') this._read = options.read;
23421
23422 Stream.call(this);
23423 }
23424
23425 // Manually shove something into the read() buffer.
23426 // This returns true if the highWaterMark has not been hit yet,
23427 // similar to how Writable.write() returns true if you should
23428 // write() some more.
23429 Readable.prototype.push = function (chunk, encoding) {
23430 var state = this._readableState;
23431
23432 if (!state.objectMode && typeof chunk === 'string') {
23433 encoding = encoding || state.defaultEncoding;
23434 if (encoding !== state.encoding) {
23435 chunk = bufferShim.from(chunk, encoding);
23436 encoding = '';
23437 }
23438 }
23439
23440 return readableAddChunk(this, state, chunk, encoding, false);
23441 };
23442
23443 // Unshift should *always* be something directly out of read()
23444 Readable.prototype.unshift = function (chunk) {
23445 var state = this._readableState;
23446 return readableAddChunk(this, state, chunk, '', true);
23447 };
23448
23449 Readable.prototype.isPaused = function () {
23450 return this._readableState.flowing === false;
23451 };
23452
23453 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23454 var er = chunkInvalid(state, chunk);
23455 if (er) {
23456 stream.emit('error', er);
23457 } else if (chunk === null) {
23458 state.reading = false;
23459 onEofChunk(stream, state);
23460 } else if (state.objectMode || chunk && chunk.length > 0) {
23461 if (state.ended && !addToFront) {
23462 var e = new Error('stream.push() after EOF');
23463 stream.emit('error', e);
23464 } else if (state.endEmitted && addToFront) {
23465 var _e = new Error('stream.unshift() after end event');
23466 stream.emit('error', _e);
23467 } else {
23468 var skipAdd;
23469 if (state.decoder && !addToFront && !encoding) {
23470 chunk = state.decoder.write(chunk);
23471 skipAdd = !state.objectMode && chunk.length === 0;
23472 }
23473
23474 if (!addToFront) state.reading = false;
23475
23476 // Don't add to the buffer if we've decoded to an empty string chunk and
23477 // we're not in object mode
23478 if (!skipAdd) {
23479 // if we want the data now, just emit it.
23480 if (state.flowing && state.length === 0 && !state.sync) {
23481 stream.emit('data', chunk);
23482 stream.read(0);
23483 } else {
23484 // update the buffer info.
23485 state.length += state.objectMode ? 1 : chunk.length;
23486 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
23487
23488 if (state.needReadable) emitReadable(stream);
23489 }
23490 }
23491
23492 maybeReadMore(stream, state);
23493 }
23494 } else if (!addToFront) {
23495 state.reading = false;
23496 }
23497
23498 return needMoreData(state);
23499 }
23500
23501 // if it's past the high water mark, we can push in some more.
23502 // Also, if we have no data yet, we can stand some
23503 // more bytes. This is to work around cases where hwm=0,
23504 // such as the repl. Also, if the push() triggered a
23505 // readable event, and the user called read(largeNumber) such that
23506 // needReadable was set, then we ought to push more, so that another
23507 // 'readable' event will be triggered.
23508 function needMoreData(state) {
23509 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23510 }
23511
23512 // backwards compatibility.
23513 Readable.prototype.setEncoding = function (enc) {
23514 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23515 this._readableState.decoder = new StringDecoder(enc);
23516 this._readableState.encoding = enc;
23517 return this;
23518 };
23519
23520 // Don't raise the hwm > 8MB
23521 var MAX_HWM = 0x800000;
23522 function computeNewHighWaterMark(n) {
23523 if (n >= MAX_HWM) {
23524 n = MAX_HWM;
23525 } else {
23526 // Get the next highest power of 2 to prevent increasing hwm excessively in
23527 // tiny amounts
23528 n--;
23529 n |= n >>> 1;
23530 n |= n >>> 2;
23531 n |= n >>> 4;
23532 n |= n >>> 8;
23533 n |= n >>> 16;
23534 n++;
23535 }
23536 return n;
23537 }
23538
23539 // This function is designed to be inlinable, so please take care when making
23540 // changes to the function body.
23541 function howMuchToRead(n, state) {
23542 if (n <= 0 || state.length === 0 && state.ended) return 0;
23543 if (state.objectMode) return 1;
23544 if (n !== n) {
23545 // Only flow one buffer at a time
23546 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23547 }
23548 // If we're asking for more than the current hwm, then raise the hwm.
23549 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23550 if (n <= state.length) return n;
23551 // Don't have enough
23552 if (!state.ended) {
23553 state.needReadable = true;
23554 return 0;
23555 }
23556 return state.length;
23557 }
23558
23559 // you can override either this method, or the async _read(n) below.
23560 Readable.prototype.read = function (n) {
23561 debug('read', n);
23562 n = parseInt(n, 10);
23563 var state = this._readableState;
23564 var nOrig = n;
23565
23566 if (n !== 0) state.emittedReadable = false;
23567
23568 // if we're doing read(0) to trigger a readable event, but we
23569 // already have a bunch of data in the buffer, then just trigger
23570 // the 'readable' event and move on.
23571 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23572 debug('read: emitReadable', state.length, state.ended);
23573 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23574 return null;
23575 }
23576
23577 n = howMuchToRead(n, state);
23578
23579 // if we've ended, and we're now clear, then finish it up.
23580 if (n === 0 && state.ended) {
23581 if (state.length === 0) endReadable(this);
23582 return null;
23583 }
23584
23585 // All the actual chunk generation logic needs to be
23586 // *below* the call to _read. The reason is that in certain
23587 // synthetic stream cases, such as passthrough streams, _read
23588 // may be a completely synchronous operation which may change
23589 // the state of the read buffer, providing enough data when
23590 // before there was *not* enough.
23591 //
23592 // So, the steps are:
23593 // 1. Figure out what the state of things will be after we do
23594 // a read from the buffer.
23595 //
23596 // 2. If that resulting state will trigger a _read, then call _read.
23597 // Note that this may be asynchronous, or synchronous. Yes, it is
23598 // deeply ugly to write APIs this way, but that still doesn't mean
23599 // that the Readable class should behave improperly, as streams are
23600 // designed to be sync/async agnostic.
23601 // Take note if the _read call is sync or async (ie, if the read call
23602 // has returned yet), so that we know whether or not it's safe to emit
23603 // 'readable' etc.
23604 //
23605 // 3. Actually pull the requested chunks out of the buffer and return.
23606
23607 // if we need a readable event, then we need to do some reading.
23608 var doRead = state.needReadable;
23609 debug('need readable', doRead);
23610
23611 // if we currently have less than the highWaterMark, then also read some
23612 if (state.length === 0 || state.length - n < state.highWaterMark) {
23613 doRead = true;
23614 debug('length less than watermark', doRead);
23615 }
23616
23617 // however, if we've ended, then there's no point, and if we're already
23618 // reading, then it's unnecessary.
23619 if (state.ended || state.reading) {
23620 doRead = false;
23621 debug('reading or ended', doRead);
23622 } else if (doRead) {
23623 debug('do read');
23624 state.reading = true;
23625 state.sync = true;
23626 // if the length is currently zero, then we *need* a readable event.
23627 if (state.length === 0) state.needReadable = true;
23628 // call internal read method
23629 this._read(state.highWaterMark);
23630 state.sync = false;
23631 // If _read pushed data synchronously, then `reading` will be false,
23632 // and we need to re-evaluate how much data we can return to the user.
23633 if (!state.reading) n = howMuchToRead(nOrig, state);
23634 }
23635
23636 var ret;
23637 if (n > 0) ret = fromList(n, state);else ret = null;
23638
23639 if (ret === null) {
23640 state.needReadable = true;
23641 n = 0;
23642 } else {
23643 state.length -= n;
23644 }
23645
23646 if (state.length === 0) {
23647 // If we have nothing in the buffer, then we want to know
23648 // as soon as we *do* get something into the buffer.
23649 if (!state.ended) state.needReadable = true;
23650
23651 // If we tried to read() past the EOF, then emit end on the next tick.
23652 if (nOrig !== n && state.ended) endReadable(this);
23653 }
23654
23655 if (ret !== null) this.emit('data', ret);
23656
23657 return ret;
23658 };
23659
23660 function chunkInvalid(state, chunk) {
23661 var er = null;
23662 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23663 er = new TypeError('Invalid non-string/buffer chunk');
23664 }
23665 return er;
23666 }
23667
23668 function onEofChunk(stream, state) {
23669 if (state.ended) return;
23670 if (state.decoder) {
23671 var chunk = state.decoder.end();
23672 if (chunk && chunk.length) {
23673 state.buffer.push(chunk);
23674 state.length += state.objectMode ? 1 : chunk.length;
23675 }
23676 }
23677 state.ended = true;
23678
23679 // emit 'readable' now to make sure it gets picked up.
23680 emitReadable(stream);
23681 }
23682
23683 // Don't emit readable right away in sync mode, because this can trigger
23684 // another read() call => stack overflow. This way, it might trigger
23685 // a nextTick recursion warning, but that's not so bad.
23686 function emitReadable(stream) {
23687 var state = stream._readableState;
23688 state.needReadable = false;
23689 if (!state.emittedReadable) {
23690 debug('emitReadable', state.flowing);
23691 state.emittedReadable = true;
23692 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23693 }
23694 }
23695
23696 function emitReadable_(stream) {
23697 debug('emit readable');
23698 stream.emit('readable');
23699 flow(stream);
23700 }
23701
23702 // at this point, the user has presumably seen the 'readable' event,
23703 // and called read() to consume some data. that may have triggered
23704 // in turn another _read(n) call, in which case reading = true if
23705 // it's in progress.
23706 // However, if we're not ended, or reading, and the length < hwm,
23707 // then go ahead and try to read some more preemptively.
23708 function maybeReadMore(stream, state) {
23709 if (!state.readingMore) {
23710 state.readingMore = true;
23711 processNextTick(maybeReadMore_, stream, state);
23712 }
23713 }
23714
23715 function maybeReadMore_(stream, state) {
23716 var len = state.length;
23717 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23718 debug('maybeReadMore read 0');
23719 stream.read(0);
23720 if (len === state.length)
23721 // didn't get any data, stop spinning.
23722 break;else len = state.length;
23723 }
23724 state.readingMore = false;
23725 }
23726
23727 // abstract method. to be overridden in specific implementation classes.
23728 // call cb(er, data) where data is <= n in length.
23729 // for virtual (non-string, non-buffer) streams, "length" is somewhat
23730 // arbitrary, and perhaps not very meaningful.
23731 Readable.prototype._read = function (n) {
23732 this.emit('error', new Error('_read() is not implemented'));
23733 };
23734
23735 Readable.prototype.pipe = function (dest, pipeOpts) {
23736 var src = this;
23737 var state = this._readableState;
23738
23739 switch (state.pipesCount) {
23740 case 0:
23741 state.pipes = dest;
23742 break;
23743 case 1:
23744 state.pipes = [state.pipes, dest];
23745 break;
23746 default:
23747 state.pipes.push(dest);
23748 break;
23749 }
23750 state.pipesCount += 1;
23751 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
23752
23753 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
23754
23755 var endFn = doEnd ? onend : cleanup;
23756 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
23757
23758 dest.on('unpipe', onunpipe);
23759 function onunpipe(readable) {
23760 debug('onunpipe');
23761 if (readable === src) {
23762 cleanup();
23763 }
23764 }
23765
23766 function onend() {
23767 debug('onend');
23768 dest.end();
23769 }
23770
23771 // when the dest drains, it reduces the awaitDrain counter
23772 // on the source. This would be more elegant with a .once()
23773 // handler in flow(), but adding and removing repeatedly is
23774 // too slow.
23775 var ondrain = pipeOnDrain(src);
23776 dest.on('drain', ondrain);
23777
23778 var cleanedUp = false;
23779 function cleanup() {
23780 debug('cleanup');
23781 // cleanup event handlers once the pipe is broken
23782 dest.removeListener('close', onclose);
23783 dest.removeListener('finish', onfinish);
23784 dest.removeListener('drain', ondrain);
23785 dest.removeListener('error', onerror);
23786 dest.removeListener('unpipe', onunpipe);
23787 src.removeListener('end', onend);
23788 src.removeListener('end', cleanup);
23789 src.removeListener('data', ondata);
23790
23791 cleanedUp = true;
23792
23793 // if the reader is waiting for a drain event from this
23794 // specific writer, then it would cause it to never start
23795 // flowing again.
23796 // So, if this is awaiting a drain, then we just call it now.
23797 // If we don't know, then assume that we are waiting for one.
23798 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23799 }
23800
23801 // If the user pushes more data while we're writing to dest then we'll end up
23802 // in ondata again. However, we only want to increase awaitDrain once because
23803 // dest will only emit one 'drain' event for the multiple writes.
23804 // => Introduce a guard on increasing awaitDrain.
23805 var increasedAwaitDrain = false;
23806 src.on('data', ondata);
23807 function ondata(chunk) {
23808 debug('ondata');
23809 increasedAwaitDrain = false;
23810 var ret = dest.write(chunk);
23811 if (false === ret && !increasedAwaitDrain) {
23812 // If the user unpiped during `dest.write()`, it is possible
23813 // to get stuck in a permanently paused state if that write
23814 // also returned false.
23815 // => Check whether `dest` is still a piping destination.
23816 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23817 debug('false write response, pause', src._readableState.awaitDrain);
23818 src._readableState.awaitDrain++;
23819 increasedAwaitDrain = true;
23820 }
23821 src.pause();
23822 }
23823 }
23824
23825 // if the dest has an error, then stop piping into it.
23826 // however, don't suppress the throwing behavior for this.
23827 function onerror(er) {
23828 debug('onerror', er);
23829 unpipe();
23830 dest.removeListener('error', onerror);
23831 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23832 }
23833
23834 // Make sure our error handler is attached before userland ones.
23835 prependListener(dest, 'error', onerror);
23836
23837 // Both close and finish should trigger unpipe, but only once.
23838 function onclose() {
23839 dest.removeListener('finish', onfinish);
23840 unpipe();
23841 }
23842 dest.once('close', onclose);
23843 function onfinish() {
23844 debug('onfinish');
23845 dest.removeListener('close', onclose);
23846 unpipe();
23847 }
23848 dest.once('finish', onfinish);
23849
23850 function unpipe() {
23851 debug('unpipe');
23852 src.unpipe(dest);
23853 }
23854
23855 // tell the dest that it's being piped to
23856 dest.emit('pipe', src);
23857
23858 // start the flow if it hasn't been started already.
23859 if (!state.flowing) {
23860 debug('pipe resume');
23861 src.resume();
23862 }
23863
23864 return dest;
23865 };
23866
23867 function pipeOnDrain(src) {
23868 return function () {
23869 var state = src._readableState;
23870 debug('pipeOnDrain', state.awaitDrain);
23871 if (state.awaitDrain) state.awaitDrain--;
23872 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23873 state.flowing = true;
23874 flow(src);
23875 }
23876 };
23877 }
23878
23879 Readable.prototype.unpipe = function (dest) {
23880 var state = this._readableState;
23881
23882 // if we're not piping anywhere, then do nothing.
23883 if (state.pipesCount === 0) return this;
23884
23885 // just one destination. most common case.
23886 if (state.pipesCount === 1) {
23887 // passed in one, but it's not the right one.
23888 if (dest && dest !== state.pipes) return this;
23889
23890 if (!dest) dest = state.pipes;
23891
23892 // got a match.
23893 state.pipes = null;
23894 state.pipesCount = 0;
23895 state.flowing = false;
23896 if (dest) dest.emit('unpipe', this);
23897 return this;
23898 }
23899
23900 // slow case. multiple pipe destinations.
23901
23902 if (!dest) {
23903 // remove all.
23904 var dests = state.pipes;
23905 var len = state.pipesCount;
23906 state.pipes = null;
23907 state.pipesCount = 0;
23908 state.flowing = false;
23909
23910 for (var i = 0; i < len; i++) {
23911 dests[i].emit('unpipe', this);
23912 }return this;
23913 }
23914
23915 // try to find the right one.
23916 var index = indexOf(state.pipes, dest);
23917 if (index === -1) return this;
23918
23919 state.pipes.splice(index, 1);
23920 state.pipesCount -= 1;
23921 if (state.pipesCount === 1) state.pipes = state.pipes[0];
23922
23923 dest.emit('unpipe', this);
23924
23925 return this;
23926 };
23927
23928 // set up data events if they are asked for
23929 // Ensure readable listeners eventually get something
23930 Readable.prototype.on = function (ev, fn) {
23931 var res = Stream.prototype.on.call(this, ev, fn);
23932
23933 if (ev === 'data') {
23934 // Start flowing on next tick if stream isn't explicitly paused
23935 if (this._readableState.flowing !== false) this.resume();
23936 } else if (ev === 'readable') {
23937 var state = this._readableState;
23938 if (!state.endEmitted && !state.readableListening) {
23939 state.readableListening = state.needReadable = true;
23940 state.emittedReadable = false;
23941 if (!state.reading) {
23942 processNextTick(nReadingNextTick, this);
23943 } else if (state.length) {
23944 emitReadable(this, state);
23945 }
23946 }
23947 }
23948
23949 return res;
23950 };
23951 Readable.prototype.addListener = Readable.prototype.on;
23952
23953 function nReadingNextTick(self) {
23954 debug('readable nexttick read 0');
23955 self.read(0);
23956 }
23957
23958 // pause() and resume() are remnants of the legacy readable stream API
23959 // If the user uses them, then switch into old mode.
23960 Readable.prototype.resume = function () {
23961 var state = this._readableState;
23962 if (!state.flowing) {
23963 debug('resume');
23964 state.flowing = true;
23965 resume(this, state);
23966 }
23967 return this;
23968 };
23969
23970 function resume(stream, state) {
23971 if (!state.resumeScheduled) {
23972 state.resumeScheduled = true;
23973 processNextTick(resume_, stream, state);
23974 }
23975 }
23976
23977 function resume_(stream, state) {
23978 if (!state.reading) {
23979 debug('resume read 0');
23980 stream.read(0);
23981 }
23982
23983 state.resumeScheduled = false;
23984 state.awaitDrain = 0;
23985 stream.emit('resume');
23986 flow(stream);
23987 if (state.flowing && !state.reading) stream.read(0);
23988 }
23989
23990 Readable.prototype.pause = function () {
23991 debug('call pause flowing=%j', this._readableState.flowing);
23992 if (false !== this._readableState.flowing) {
23993 debug('pause');
23994 this._readableState.flowing = false;
23995 this.emit('pause');
23996 }
23997 return this;
23998 };
23999
24000 function flow(stream) {
24001 var state = stream._readableState;
24002 debug('flow', state.flowing);
24003 while (state.flowing && stream.read() !== null) {}
24004 }
24005
24006 // wrap an old-style stream as the async data source.
24007 // This is *not* part of the readable stream interface.
24008 // It is an ugly unfortunate mess of history.
24009 Readable.prototype.wrap = function (stream) {
24010 var state = this._readableState;
24011 var paused = false;
24012
24013 var self = this;
24014 stream.on('end', function () {
24015 debug('wrapped end');
24016 if (state.decoder && !state.ended) {
24017 var chunk = state.decoder.end();
24018 if (chunk && chunk.length) self.push(chunk);
24019 }
24020
24021 self.push(null);
24022 });
24023
24024 stream.on('data', function (chunk) {
24025 debug('wrapped data');
24026 if (state.decoder) chunk = state.decoder.write(chunk);
24027
24028 // don't skip over falsy values in objectMode
24029 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
24030
24031 var ret = self.push(chunk);
24032 if (!ret) {
24033 paused = true;
24034 stream.pause();
24035 }
24036 });
24037
24038 // proxy all the other methods.
24039 // important when wrapping filters and duplexes.
24040 for (var i in stream) {
24041 if (this[i] === undefined && typeof stream[i] === 'function') {
24042 this[i] = function (method) {
24043 return function () {
24044 return stream[method].apply(stream, arguments);
24045 };
24046 }(i);
24047 }
24048 }
24049
24050 // proxy certain important events.
24051 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24052 forEach(events, function (ev) {
24053 stream.on(ev, self.emit.bind(self, ev));
24054 });
24055
24056 // when we try to consume some more bytes, simply unpause the
24057 // underlying stream.
24058 self._read = function (n) {
24059 debug('wrapped _read', n);
24060 if (paused) {
24061 paused = false;
24062 stream.resume();
24063 }
24064 };
24065
24066 return self;
24067 };
24068
24069 // exposed for testing purposes only.
24070 Readable._fromList = fromList;
24071
24072 // Pluck off n bytes from an array of buffers.
24073 // Length is the combined lengths of all the buffers in the list.
24074 // This function is designed to be inlinable, so please take care when making
24075 // changes to the function body.
24076 function fromList(n, state) {
24077 // nothing buffered
24078 if (state.length === 0) return null;
24079
24080 var ret;
24081 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24082 // read it all, truncate the list
24083 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);
24084 state.buffer.clear();
24085 } else {
24086 // read part of list
24087 ret = fromListPartial(n, state.buffer, state.decoder);
24088 }
24089
24090 return ret;
24091 }
24092
24093 // Extracts only enough buffered data to satisfy the amount requested.
24094 // This function is designed to be inlinable, so please take care when making
24095 // changes to the function body.
24096 function fromListPartial(n, list, hasStrings) {
24097 var ret;
24098 if (n < list.head.data.length) {
24099 // slice is the same for buffers and strings
24100 ret = list.head.data.slice(0, n);
24101 list.head.data = list.head.data.slice(n);
24102 } else if (n === list.head.data.length) {
24103 // first chunk is a perfect match
24104 ret = list.shift();
24105 } else {
24106 // result spans more than one buffer
24107 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24108 }
24109 return ret;
24110 }
24111
24112 // Copies a specified amount of characters from the list of buffered data
24113 // chunks.
24114 // This function is designed to be inlinable, so please take care when making
24115 // changes to the function body.
24116 function copyFromBufferString(n, list) {
24117 var p = list.head;
24118 var c = 1;
24119 var ret = p.data;
24120 n -= ret.length;
24121 while (p = p.next) {
24122 var str = p.data;
24123 var nb = n > str.length ? str.length : n;
24124 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24125 n -= nb;
24126 if (n === 0) {
24127 if (nb === str.length) {
24128 ++c;
24129 if (p.next) list.head = p.next;else list.head = list.tail = null;
24130 } else {
24131 list.head = p;
24132 p.data = str.slice(nb);
24133 }
24134 break;
24135 }
24136 ++c;
24137 }
24138 list.length -= c;
24139 return ret;
24140 }
24141
24142 // Copies a specified amount of bytes from the list of buffered data chunks.
24143 // This function is designed to be inlinable, so please take care when making
24144 // changes to the function body.
24145 function copyFromBuffer(n, list) {
24146 var ret = bufferShim.allocUnsafe(n);
24147 var p = list.head;
24148 var c = 1;
24149 p.data.copy(ret);
24150 n -= p.data.length;
24151 while (p = p.next) {
24152 var buf = p.data;
24153 var nb = n > buf.length ? buf.length : n;
24154 buf.copy(ret, ret.length - n, 0, nb);
24155 n -= nb;
24156 if (n === 0) {
24157 if (nb === buf.length) {
24158 ++c;
24159 if (p.next) list.head = p.next;else list.head = list.tail = null;
24160 } else {
24161 list.head = p;
24162 p.data = buf.slice(nb);
24163 }
24164 break;
24165 }
24166 ++c;
24167 }
24168 list.length -= c;
24169 return ret;
24170 }
24171
24172 function endReadable(stream) {
24173 var state = stream._readableState;
24174
24175 // If we get here before consuming all the bytes, then that is a
24176 // bug in node. Should never happen.
24177 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
24178
24179 if (!state.endEmitted) {
24180 state.ended = true;
24181 processNextTick(endReadableNT, state, stream);
24182 }
24183 }
24184
24185 function endReadableNT(state, stream) {
24186 // Check that we didn't get one last unshift.
24187 if (!state.endEmitted && state.length === 0) {
24188 state.endEmitted = true;
24189 stream.readable = false;
24190 stream.emit('end');
24191 }
24192 }
24193
24194 function forEach(xs, f) {
24195 for (var i = 0, l = xs.length; i < l; i++) {
24196 f(xs[i], i);
24197 }
24198 }
24199
24200 function indexOf(xs, x) {
24201 for (var i = 0, l = xs.length; i < l; i++) {
24202 if (xs[i] === x) return i;
24203 }
24204 return -1;
24205 }
24206 }).call(this,require('_process'))
24207 },{"./_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){
24208 // a transform stream is a readable/writable stream where you do
24209 // something with the data. Sometimes it's called a "filter",
24210 // but that's not a great name for it, since that implies a thing where
24211 // some bits pass through, and others are simply ignored. (That would
24212 // be a valid example of a transform, of course.)
24213 //
24214 // While the output is causally related to the input, it's not a
24215 // necessarily symmetric or synchronous transformation. For example,
24216 // a zlib stream might take multiple plain-text writes(), and then
24217 // emit a single compressed chunk some time in the future.
24218 //
24219 // Here's how this works:
24220 //
24221 // The Transform stream has all the aspects of the readable and writable
24222 // stream classes. When you write(chunk), that calls _write(chunk,cb)
24223 // internally, and returns false if there's a lot of pending writes
24224 // buffered up. When you call read(), that calls _read(n) until
24225 // there's enough pending readable data buffered up.
24226 //
24227 // In a transform stream, the written data is placed in a buffer. When
24228 // _read(n) is called, it transforms the queued up data, calling the
24229 // buffered _write cb's as it consumes chunks. If consuming a single
24230 // written chunk would result in multiple output chunks, then the first
24231 // outputted bit calls the readcb, and subsequent chunks just go into
24232 // the read buffer, and will cause it to emit 'readable' if necessary.
24233 //
24234 // This way, back-pressure is actually determined by the reading side,
24235 // since _read has to be called to start processing a new chunk. However,
24236 // a pathological inflate type of transform can cause excessive buffering
24237 // here. For example, imagine a stream where every byte of input is
24238 // interpreted as an integer from 0-255, and then results in that many
24239 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24240 // 1kb of data being output. In this case, you could write a very small
24241 // amount of input, and end up with a very large amount of output. In
24242 // such a pathological inflating mechanism, there'd be no way to tell
24243 // the system to stop doing the transform. A single 4MB write could
24244 // cause the system to run out of memory.
24245 //
24246 // However, even in such a pathological case, only a single written chunk
24247 // would be consumed, and then the rest would wait (un-transformed) until
24248 // the results of the previous transformed chunk were consumed.
24249
24250 'use strict';
24251
24252 module.exports = Transform;
24253
24254 var Duplex = require('./_stream_duplex');
24255
24256 /*<replacement>*/
24257 var util = require('core-util-is');
24258 util.inherits = require('inherits');
24259 /*</replacement>*/
24260
24261 util.inherits(Transform, Duplex);
24262
24263 function TransformState(stream) {
24264 this.afterTransform = function (er, data) {
24265 return afterTransform(stream, er, data);
24266 };
24267
24268 this.needTransform = false;
24269 this.transforming = false;
24270 this.writecb = null;
24271 this.writechunk = null;
24272 this.writeencoding = null;
24273 }
24274
24275 function afterTransform(stream, er, data) {
24276 var ts = stream._transformState;
24277 ts.transforming = false;
24278
24279 var cb = ts.writecb;
24280
24281 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
24282
24283 ts.writechunk = null;
24284 ts.writecb = null;
24285
24286 if (data !== null && data !== undefined) stream.push(data);
24287
24288 cb(er);
24289
24290 var rs = stream._readableState;
24291 rs.reading = false;
24292 if (rs.needReadable || rs.length < rs.highWaterMark) {
24293 stream._read(rs.highWaterMark);
24294 }
24295 }
24296
24297 function Transform(options) {
24298 if (!(this instanceof Transform)) return new Transform(options);
24299
24300 Duplex.call(this, options);
24301
24302 this._transformState = new TransformState(this);
24303
24304 var stream = this;
24305
24306 // start out asking for a readable event once data is transformed.
24307 this._readableState.needReadable = true;
24308
24309 // we have implemented the _read method, and done the other things
24310 // that Readable wants before the first _read call, so unset the
24311 // sync guard flag.
24312 this._readableState.sync = false;
24313
24314 if (options) {
24315 if (typeof options.transform === 'function') this._transform = options.transform;
24316
24317 if (typeof options.flush === 'function') this._flush = options.flush;
24318 }
24319
24320 // When the writable side finishes, then flush out anything remaining.
24321 this.once('prefinish', function () {
24322 if (typeof this._flush === 'function') this._flush(function (er, data) {
24323 done(stream, er, data);
24324 });else done(stream);
24325 });
24326 }
24327
24328 Transform.prototype.push = function (chunk, encoding) {
24329 this._transformState.needTransform = false;
24330 return Duplex.prototype.push.call(this, chunk, encoding);
24331 };
24332
24333 // This is the part where you do stuff!
24334 // override this function in implementation classes.
24335 // 'chunk' is an input chunk.
24336 //
24337 // Call `push(newChunk)` to pass along transformed output
24338 // to the readable side. You may call 'push' zero or more times.
24339 //
24340 // Call `cb(err)` when you are done with this chunk. If you pass
24341 // an error, then that'll put the hurt on the whole operation. If you
24342 // never call cb(), then you'll never get another chunk.
24343 Transform.prototype._transform = function (chunk, encoding, cb) {
24344 throw new Error('_transform() is not implemented');
24345 };
24346
24347 Transform.prototype._write = function (chunk, encoding, cb) {
24348 var ts = this._transformState;
24349 ts.writecb = cb;
24350 ts.writechunk = chunk;
24351 ts.writeencoding = encoding;
24352 if (!ts.transforming) {
24353 var rs = this._readableState;
24354 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24355 }
24356 };
24357
24358 // Doesn't matter what the args are here.
24359 // _transform does all the work.
24360 // That we got here means that the readable side wants more data.
24361 Transform.prototype._read = function (n) {
24362 var ts = this._transformState;
24363
24364 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24365 ts.transforming = true;
24366 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24367 } else {
24368 // mark that we need a transform, so that any data that comes in
24369 // will get processed, now that we've asked for it.
24370 ts.needTransform = true;
24371 }
24372 };
24373
24374 function done(stream, er, data) {
24375 if (er) return stream.emit('error', er);
24376
24377 if (data !== null && data !== undefined) stream.push(data);
24378
24379 // if there's nothing in the write buffer, then that means
24380 // that nothing more will ever be provided
24381 var ws = stream._writableState;
24382 var ts = stream._transformState;
24383
24384 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
24385
24386 if (ts.transforming) throw new Error('Calling transform done when still transforming');
24387
24388 return stream.push(null);
24389 }
24390 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
24391 (function (process){
24392 // A bit simpler than readable streams.
24393 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
24394 // the drain event emission and buffering.
24395
24396 'use strict';
24397
24398 module.exports = Writable;
24399
24400 /*<replacement>*/
24401 var processNextTick = require('process-nextick-args');
24402 /*</replacement>*/
24403
24404 /*<replacement>*/
24405 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
24406 /*</replacement>*/
24407
24408 /*<replacement>*/
24409 var Duplex;
24410 /*</replacement>*/
24411
24412 Writable.WritableState = WritableState;
24413
24414 /*<replacement>*/
24415 var util = require('core-util-is');
24416 util.inherits = require('inherits');
24417 /*</replacement>*/
24418
24419 /*<replacement>*/
24420 var internalUtil = {
24421 deprecate: require('util-deprecate')
24422 };
24423 /*</replacement>*/
24424
24425 /*<replacement>*/
24426 var Stream;
24427 (function () {
24428 try {
24429 Stream = require('st' + 'ream');
24430 } catch (_) {} finally {
24431 if (!Stream) Stream = require('events').EventEmitter;
24432 }
24433 })();
24434 /*</replacement>*/
24435
24436 var Buffer = require('buffer').Buffer;
24437 /*<replacement>*/
24438 var bufferShim = require('buffer-shims');
24439 /*</replacement>*/
24440
24441 util.inherits(Writable, Stream);
24442
24443 function nop() {}
24444
24445 function WriteReq(chunk, encoding, cb) {
24446 this.chunk = chunk;
24447 this.encoding = encoding;
24448 this.callback = cb;
24449 this.next = null;
24450 }
24451
24452 function WritableState(options, stream) {
24453 Duplex = Duplex || require('./_stream_duplex');
24454
24455 options = options || {};
24456
24457 // object stream flag to indicate whether or not this stream
24458 // contains buffers or objects.
24459 this.objectMode = !!options.objectMode;
24460
24461 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24462
24463 // the point at which write() starts returning false
24464 // Note: 0 is a valid value, means that we always return false if
24465 // the entire buffer is not flushed immediately on write()
24466 var hwm = options.highWaterMark;
24467 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24468 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
24469
24470 // cast to ints.
24471 this.highWaterMark = ~ ~this.highWaterMark;
24472
24473 // drain event flag.
24474 this.needDrain = false;
24475 // at the start of calling end()
24476 this.ending = false;
24477 // when end() has been called, and returned
24478 this.ended = false;
24479 // when 'finish' is emitted
24480 this.finished = false;
24481
24482 // should we decode strings into buffers before passing to _write?
24483 // this is here so that some node-core streams can optimize string
24484 // handling at a lower level.
24485 var noDecode = options.decodeStrings === false;
24486 this.decodeStrings = !noDecode;
24487
24488 // Crypto is kind of old and crusty. Historically, its default string
24489 // encoding is 'binary' so we have to make this configurable.
24490 // Everything else in the universe uses 'utf8', though.
24491 this.defaultEncoding = options.defaultEncoding || 'utf8';
24492
24493 // not an actual buffer we keep track of, but a measurement
24494 // of how much we're waiting to get pushed to some underlying
24495 // socket or file.
24496 this.length = 0;
24497
24498 // a flag to see when we're in the middle of a write.
24499 this.writing = false;
24500
24501 // when true all writes will be buffered until .uncork() call
24502 this.corked = 0;
24503
24504 // a flag to be able to tell if the onwrite cb is called immediately,
24505 // or on a later tick. We set this to true at first, because any
24506 // actions that shouldn't happen until "later" should generally also
24507 // not happen before the first write call.
24508 this.sync = true;
24509
24510 // a flag to know if we're processing previously buffered items, which
24511 // may call the _write() callback in the same tick, so that we don't
24512 // end up in an overlapped onwrite situation.
24513 this.bufferProcessing = false;
24514
24515 // the callback that's passed to _write(chunk,cb)
24516 this.onwrite = function (er) {
24517 onwrite(stream, er);
24518 };
24519
24520 // the callback that the user supplies to write(chunk,encoding,cb)
24521 this.writecb = null;
24522
24523 // the amount that is being written when _write is called.
24524 this.writelen = 0;
24525
24526 this.bufferedRequest = null;
24527 this.lastBufferedRequest = null;
24528
24529 // number of pending user-supplied write callbacks
24530 // this must be 0 before 'finish' can be emitted
24531 this.pendingcb = 0;
24532
24533 // emit prefinish if the only thing we're waiting for is _write cbs
24534 // This is relevant for synchronous Transform streams
24535 this.prefinished = false;
24536
24537 // True if the error was already emitted and should not be thrown again
24538 this.errorEmitted = false;
24539
24540 // count buffered requests
24541 this.bufferedRequestCount = 0;
24542
24543 // allocate the first CorkedRequest, there is always
24544 // one allocated and free to use, and we maintain at most two
24545 this.corkedRequestsFree = new CorkedRequest(this);
24546 }
24547
24548 WritableState.prototype.getBuffer = function getBuffer() {
24549 var current = this.bufferedRequest;
24550 var out = [];
24551 while (current) {
24552 out.push(current);
24553 current = current.next;
24554 }
24555 return out;
24556 };
24557
24558 (function () {
24559 try {
24560 Object.defineProperty(WritableState.prototype, 'buffer', {
24561 get: internalUtil.deprecate(function () {
24562 return this.getBuffer();
24563 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24564 });
24565 } catch (_) {}
24566 })();
24567
24568 // Test _writableState for inheritance to account for Duplex streams,
24569 // whose prototype chain only points to Readable.
24570 var realHasInstance;
24571 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24572 realHasInstance = Function.prototype[Symbol.hasInstance];
24573 Object.defineProperty(Writable, Symbol.hasInstance, {
24574 value: function (object) {
24575 if (realHasInstance.call(this, object)) return true;
24576
24577 return object && object._writableState instanceof WritableState;
24578 }
24579 });
24580 } else {
24581 realHasInstance = function (object) {
24582 return object instanceof this;
24583 };
24584 }
24585
24586 function Writable(options) {
24587 Duplex = Duplex || require('./_stream_duplex');
24588
24589 // Writable ctor is applied to Duplexes, too.
24590 // `realHasInstance` is necessary because using plain `instanceof`
24591 // would return false, as no `_writableState` property is attached.
24592
24593 // Trying to use the custom `instanceof` for Writable here will also break the
24594 // Node.js LazyTransform implementation, which has a non-trivial getter for
24595 // `_writableState` that would lead to infinite recursion.
24596 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24597 return new Writable(options);
24598 }
24599
24600 this._writableState = new WritableState(options, this);
24601
24602 // legacy.
24603 this.writable = true;
24604
24605 if (options) {
24606 if (typeof options.write === 'function') this._write = options.write;
24607
24608 if (typeof options.writev === 'function') this._writev = options.writev;
24609 }
24610
24611 Stream.call(this);
24612 }
24613
24614 // Otherwise people can pipe Writable streams, which is just wrong.
24615 Writable.prototype.pipe = function () {
24616 this.emit('error', new Error('Cannot pipe, not readable'));
24617 };
24618
24619 function writeAfterEnd(stream, cb) {
24620 var er = new Error('write after end');
24621 // TODO: defer error events consistently everywhere, not just the cb
24622 stream.emit('error', er);
24623 processNextTick(cb, er);
24624 }
24625
24626 // If we get something that is not a buffer, string, null, or undefined,
24627 // and we're not in objectMode, then that's an error.
24628 // Otherwise stream chunks are all considered to be of length=1, and the
24629 // watermarks determine how many objects to keep in the buffer, rather than
24630 // how many bytes or characters.
24631 function validChunk(stream, state, chunk, cb) {
24632 var valid = true;
24633 var er = false;
24634 // Always throw error if a null is written
24635 // if we are not in object mode then throw
24636 // if it is not a buffer, string, or undefined.
24637 if (chunk === null) {
24638 er = new TypeError('May not write null values to stream');
24639 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24640 er = new TypeError('Invalid non-string/buffer chunk');
24641 }
24642 if (er) {
24643 stream.emit('error', er);
24644 processNextTick(cb, er);
24645 valid = false;
24646 }
24647 return valid;
24648 }
24649
24650 Writable.prototype.write = function (chunk, encoding, cb) {
24651 var state = this._writableState;
24652 var ret = false;
24653
24654 if (typeof encoding === 'function') {
24655 cb = encoding;
24656 encoding = null;
24657 }
24658
24659 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
24660
24661 if (typeof cb !== 'function') cb = nop;
24662
24663 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24664 state.pendingcb++;
24665 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24666 }
24667
24668 return ret;
24669 };
24670
24671 Writable.prototype.cork = function () {
24672 var state = this._writableState;
24673
24674 state.corked++;
24675 };
24676
24677 Writable.prototype.uncork = function () {
24678 var state = this._writableState;
24679
24680 if (state.corked) {
24681 state.corked--;
24682
24683 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24684 }
24685 };
24686
24687 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24688 // node::ParseEncoding() requires lower case.
24689 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24690 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);
24691 this._writableState.defaultEncoding = encoding;
24692 return this;
24693 };
24694
24695 function decodeChunk(state, chunk, encoding) {
24696 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24697 chunk = bufferShim.from(chunk, encoding);
24698 }
24699 return chunk;
24700 }
24701
24702 // if we're already writing something, then just put this
24703 // in the queue, and wait our turn. Otherwise, call _write
24704 // If we return false, then we need a drain event, so set that flag.
24705 function writeOrBuffer(stream, state, chunk, encoding, cb) {
24706 chunk = decodeChunk(state, chunk, encoding);
24707
24708 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24709 var len = state.objectMode ? 1 : chunk.length;
24710
24711 state.length += len;
24712
24713 var ret = state.length < state.highWaterMark;
24714 // we must ensure that previous needDrain will not be reset to false.
24715 if (!ret) state.needDrain = true;
24716
24717 if (state.writing || state.corked) {
24718 var last = state.lastBufferedRequest;
24719 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24720 if (last) {
24721 last.next = state.lastBufferedRequest;
24722 } else {
24723 state.bufferedRequest = state.lastBufferedRequest;
24724 }
24725 state.bufferedRequestCount += 1;
24726 } else {
24727 doWrite(stream, state, false, len, chunk, encoding, cb);
24728 }
24729
24730 return ret;
24731 }
24732
24733 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24734 state.writelen = len;
24735 state.writecb = cb;
24736 state.writing = true;
24737 state.sync = true;
24738 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24739 state.sync = false;
24740 }
24741
24742 function onwriteError(stream, state, sync, er, cb) {
24743 --state.pendingcb;
24744 if (sync) processNextTick(cb, er);else cb(er);
24745
24746 stream._writableState.errorEmitted = true;
24747 stream.emit('error', er);
24748 }
24749
24750 function onwriteStateUpdate(state) {
24751 state.writing = false;
24752 state.writecb = null;
24753 state.length -= state.writelen;
24754 state.writelen = 0;
24755 }
24756
24757 function onwrite(stream, er) {
24758 var state = stream._writableState;
24759 var sync = state.sync;
24760 var cb = state.writecb;
24761
24762 onwriteStateUpdate(state);
24763
24764 if (er) onwriteError(stream, state, sync, er, cb);else {
24765 // Check if we're actually ready to finish, but don't emit yet
24766 var finished = needFinish(state);
24767
24768 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24769 clearBuffer(stream, state);
24770 }
24771
24772 if (sync) {
24773 /*<replacement>*/
24774 asyncWrite(afterWrite, stream, state, finished, cb);
24775 /*</replacement>*/
24776 } else {
24777 afterWrite(stream, state, finished, cb);
24778 }
24779 }
24780 }
24781
24782 function afterWrite(stream, state, finished, cb) {
24783 if (!finished) onwriteDrain(stream, state);
24784 state.pendingcb--;
24785 cb();
24786 finishMaybe(stream, state);
24787 }
24788
24789 // Must force callback to be called on nextTick, so that we don't
24790 // emit 'drain' before the write() consumer gets the 'false' return
24791 // value, and has a chance to attach a 'drain' listener.
24792 function onwriteDrain(stream, state) {
24793 if (state.length === 0 && state.needDrain) {
24794 state.needDrain = false;
24795 stream.emit('drain');
24796 }
24797 }
24798
24799 // if there's something in the buffer waiting, then process it
24800 function clearBuffer(stream, state) {
24801 state.bufferProcessing = true;
24802 var entry = state.bufferedRequest;
24803
24804 if (stream._writev && entry && entry.next) {
24805 // Fast case, write everything using _writev()
24806 var l = state.bufferedRequestCount;
24807 var buffer = new Array(l);
24808 var holder = state.corkedRequestsFree;
24809 holder.entry = entry;
24810
24811 var count = 0;
24812 while (entry) {
24813 buffer[count] = entry;
24814 entry = entry.next;
24815 count += 1;
24816 }
24817
24818 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
24819
24820 // doWrite is almost always async, defer these to save a bit of time
24821 // as the hot path ends with doWrite
24822 state.pendingcb++;
24823 state.lastBufferedRequest = null;
24824 if (holder.next) {
24825 state.corkedRequestsFree = holder.next;
24826 holder.next = null;
24827 } else {
24828 state.corkedRequestsFree = new CorkedRequest(state);
24829 }
24830 } else {
24831 // Slow case, write chunks one-by-one
24832 while (entry) {
24833 var chunk = entry.chunk;
24834 var encoding = entry.encoding;
24835 var cb = entry.callback;
24836 var len = state.objectMode ? 1 : chunk.length;
24837
24838 doWrite(stream, state, false, len, chunk, encoding, cb);
24839 entry = entry.next;
24840 // if we didn't call the onwrite immediately, then
24841 // it means that we need to wait until it does.
24842 // also, that means that the chunk and cb are currently
24843 // being processed, so move the buffer counter past them.
24844 if (state.writing) {
24845 break;
24846 }
24847 }
24848
24849 if (entry === null) state.lastBufferedRequest = null;
24850 }
24851
24852 state.bufferedRequestCount = 0;
24853 state.bufferedRequest = entry;
24854 state.bufferProcessing = false;
24855 }
24856
24857 Writable.prototype._write = function (chunk, encoding, cb) {
24858 cb(new Error('_write() is not implemented'));
24859 };
24860
24861 Writable.prototype._writev = null;
24862
24863 Writable.prototype.end = function (chunk, encoding, cb) {
24864 var state = this._writableState;
24865
24866 if (typeof chunk === 'function') {
24867 cb = chunk;
24868 chunk = null;
24869 encoding = null;
24870 } else if (typeof encoding === 'function') {
24871 cb = encoding;
24872 encoding = null;
24873 }
24874
24875 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
24876
24877 // .end() fully uncorks
24878 if (state.corked) {
24879 state.corked = 1;
24880 this.uncork();
24881 }
24882
24883 // ignore unnecessary end() calls.
24884 if (!state.ending && !state.finished) endWritable(this, state, cb);
24885 };
24886
24887 function needFinish(state) {
24888 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24889 }
24890
24891 function prefinish(stream, state) {
24892 if (!state.prefinished) {
24893 state.prefinished = true;
24894 stream.emit('prefinish');
24895 }
24896 }
24897
24898 function finishMaybe(stream, state) {
24899 var need = needFinish(state);
24900 if (need) {
24901 if (state.pendingcb === 0) {
24902 prefinish(stream, state);
24903 state.finished = true;
24904 stream.emit('finish');
24905 } else {
24906 prefinish(stream, state);
24907 }
24908 }
24909 return need;
24910 }
24911
24912 function endWritable(stream, state, cb) {
24913 state.ending = true;
24914 finishMaybe(stream, state);
24915 if (cb) {
24916 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
24917 }
24918 state.ended = true;
24919 stream.writable = false;
24920 }
24921
24922 // It seems a linked list but it is not
24923 // there will be only 2 of these for each stream
24924 function CorkedRequest(state) {
24925 var _this = this;
24926
24927 this.next = null;
24928 this.entry = null;
24929
24930 this.finish = function (err) {
24931 var entry = _this.entry;
24932 _this.entry = null;
24933 while (entry) {
24934 var cb = entry.callback;
24935 state.pendingcb--;
24936 cb(err);
24937 entry = entry.next;
24938 }
24939 if (state.corkedRequestsFree) {
24940 state.corkedRequestsFree.next = _this;
24941 } else {
24942 state.corkedRequestsFree = _this;
24943 }
24944 };
24945 }
24946 }).call(this,require('_process'))
24947 },{"./_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){
24948 'use strict';
24949
24950 var Buffer = require('buffer').Buffer;
24951 /*<replacement>*/
24952 var bufferShim = require('buffer-shims');
24953 /*</replacement>*/
24954
24955 module.exports = BufferList;
24956
24957 function BufferList() {
24958 this.head = null;
24959 this.tail = null;
24960 this.length = 0;
24961 }
24962
24963 BufferList.prototype.push = function (v) {
24964 var entry = { data: v, next: null };
24965 if (this.length > 0) this.tail.next = entry;else this.head = entry;
24966 this.tail = entry;
24967 ++this.length;
24968 };
24969
24970 BufferList.prototype.unshift = function (v) {
24971 var entry = { data: v, next: this.head };
24972 if (this.length === 0) this.tail = entry;
24973 this.head = entry;
24974 ++this.length;
24975 };
24976
24977 BufferList.prototype.shift = function () {
24978 if (this.length === 0) return;
24979 var ret = this.head.data;
24980 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
24981 --this.length;
24982 return ret;
24983 };
24984
24985 BufferList.prototype.clear = function () {
24986 this.head = this.tail = null;
24987 this.length = 0;
24988 };
24989
24990 BufferList.prototype.join = function (s) {
24991 if (this.length === 0) return '';
24992 var p = this.head;
24993 var ret = '' + p.data;
24994 while (p = p.next) {
24995 ret += s + p.data;
24996 }return ret;
24997 };
24998
24999 BufferList.prototype.concat = function (n) {
25000 if (this.length === 0) return bufferShim.alloc(0);
25001 if (this.length === 1) return this.head.data;
25002 var ret = bufferShim.allocUnsafe(n >>> 0);
25003 var p = this.head;
25004 var i = 0;
25005 while (p) {
25006 p.data.copy(ret, i);
25007 i += p.data.length;
25008 p = p.next;
25009 }
25010 return ret;
25011 };
25012 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25013 module.exports = require("./lib/_stream_passthrough.js")
25014
25015 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25016 (function (process){
25017 var Stream = (function (){
25018 try {
25019 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25020 } catch(_){}
25021 }());
25022 exports = module.exports = require('./lib/_stream_readable.js');
25023 exports.Stream = Stream || exports;
25024 exports.Readable = exports;
25025 exports.Writable = require('./lib/_stream_writable.js');
25026 exports.Duplex = require('./lib/_stream_duplex.js');
25027 exports.Transform = require('./lib/_stream_transform.js');
25028 exports.PassThrough = require('./lib/_stream_passthrough.js');
25029
25030 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25031 module.exports = Stream;
25032 }
25033
25034 }).call(this,require('_process'))
25035 },{"./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){
25036 module.exports = require("./lib/_stream_transform.js")
25037
25038 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25039 module.exports = require("./lib/_stream_writable.js")
25040
25041 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25042 // Copyright Joyent, Inc. and other Node contributors.
25043 //
25044 // Permission is hereby granted, free of charge, to any person obtaining a
25045 // copy of this software and associated documentation files (the
25046 // "Software"), to deal in the Software without restriction, including
25047 // without limitation the rights to use, copy, modify, merge, publish,
25048 // distribute, sublicense, and/or sell copies of the Software, and to permit
25049 // persons to whom the Software is furnished to do so, subject to the
25050 // following conditions:
25051 //
25052 // The above copyright notice and this permission notice shall be included
25053 // in all copies or substantial portions of the Software.
25054 //
25055 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25056 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25057 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25058 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25059 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25060 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25061 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25062
25063 module.exports = Stream;
25064
25065 var EE = require('events').EventEmitter;
25066 var inherits = require('inherits');
25067
25068 inherits(Stream, EE);
25069 Stream.Readable = require('readable-stream/readable.js');
25070 Stream.Writable = require('readable-stream/writable.js');
25071 Stream.Duplex = require('readable-stream/duplex.js');
25072 Stream.Transform = require('readable-stream/transform.js');
25073 Stream.PassThrough = require('readable-stream/passthrough.js');
25074
25075 // Backwards-compat with node 0.4.x
25076 Stream.Stream = Stream;
25077
25078
25079
25080 // old-style streams. Note that the pipe method (the only relevant
25081 // part of this class) is overridden in the Readable class.
25082
25083 function Stream() {
25084 EE.call(this);
25085 }
25086
25087 Stream.prototype.pipe = function(dest, options) {
25088 var source = this;
25089
25090 function ondata(chunk) {
25091 if (dest.writable) {
25092 if (false === dest.write(chunk) && source.pause) {
25093 source.pause();
25094 }
25095 }
25096 }
25097
25098 source.on('data', ondata);
25099
25100 function ondrain() {
25101 if (source.readable && source.resume) {
25102 source.resume();
25103 }
25104 }
25105
25106 dest.on('drain', ondrain);
25107
25108 // If the 'end' option is not supplied, dest.end() will be called when
25109 // source gets the 'end' or 'close' events. Only dest.end() once.
25110 if (!dest._isStdio && (!options || options.end !== false)) {
25111 source.on('end', onend);
25112 source.on('close', onclose);
25113 }
25114
25115 var didOnEnd = false;
25116 function onend() {
25117 if (didOnEnd) return;
25118 didOnEnd = true;
25119
25120 dest.end();
25121 }
25122
25123
25124 function onclose() {
25125 if (didOnEnd) return;
25126 didOnEnd = true;
25127
25128 if (typeof dest.destroy === 'function') dest.destroy();
25129 }
25130
25131 // don't leave dangling pipes when there are errors.
25132 function onerror(er) {
25133 cleanup();
25134 if (EE.listenerCount(this, 'error') === 0) {
25135 throw er; // Unhandled stream error in pipe.
25136 }
25137 }
25138
25139 source.on('error', onerror);
25140 dest.on('error', onerror);
25141
25142 // remove all the event listeners that were added.
25143 function cleanup() {
25144 source.removeListener('data', ondata);
25145 dest.removeListener('drain', ondrain);
25146
25147 source.removeListener('end', onend);
25148 source.removeListener('close', onclose);
25149
25150 source.removeListener('error', onerror);
25151 dest.removeListener('error', onerror);
25152
25153 source.removeListener('end', cleanup);
25154 source.removeListener('close', cleanup);
25155
25156 dest.removeListener('close', cleanup);
25157 }
25158
25159 source.on('end', cleanup);
25160 source.on('close', cleanup);
25161
25162 dest.on('close', cleanup);
25163
25164 dest.emit('pipe', source);
25165
25166 // Allow for unix-like usage: A.pipe(B).pipe(C)
25167 return dest;
25168 };
25169
25170 },{"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){
25171 // Copyright Joyent, Inc. and other Node contributors.
25172 //
25173 // Permission is hereby granted, free of charge, to any person obtaining a
25174 // copy of this software and associated documentation files (the
25175 // "Software"), to deal in the Software without restriction, including
25176 // without limitation the rights to use, copy, modify, merge, publish,
25177 // distribute, sublicense, and/or sell copies of the Software, and to permit
25178 // persons to whom the Software is furnished to do so, subject to the
25179 // following conditions:
25180 //
25181 // The above copyright notice and this permission notice shall be included
25182 // in all copies or substantial portions of the Software.
25183 //
25184 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25185 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25186 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25187 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25188 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25189 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25190 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25191
25192 var Buffer = require('buffer').Buffer;
25193
25194 var isBufferEncoding = Buffer.isEncoding
25195 || function(encoding) {
25196 switch (encoding && encoding.toLowerCase()) {
25197 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;
25198 default: return false;
25199 }
25200 }
25201
25202
25203 function assertEncoding(encoding) {
25204 if (encoding && !isBufferEncoding(encoding)) {
25205 throw new Error('Unknown encoding: ' + encoding);
25206 }
25207 }
25208
25209 // StringDecoder provides an interface for efficiently splitting a series of
25210 // buffers into a series of JS strings without breaking apart multi-byte
25211 // characters. CESU-8 is handled as part of the UTF-8 encoding.
25212 //
25213 // @TODO Handling all encodings inside a single object makes it very difficult
25214 // to reason about this code, so it should be split up in the future.
25215 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25216 // points as used by CESU-8.
25217 var StringDecoder = exports.StringDecoder = function(encoding) {
25218 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25219 assertEncoding(encoding);
25220 switch (this.encoding) {
25221 case 'utf8':
25222 // CESU-8 represents each of Surrogate Pair by 3-bytes
25223 this.surrogateSize = 3;
25224 break;
25225 case 'ucs2':
25226 case 'utf16le':
25227 // UTF-16 represents each of Surrogate Pair by 2-bytes
25228 this.surrogateSize = 2;
25229 this.detectIncompleteChar = utf16DetectIncompleteChar;
25230 break;
25231 case 'base64':
25232 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25233 this.surrogateSize = 3;
25234 this.detectIncompleteChar = base64DetectIncompleteChar;
25235 break;
25236 default:
25237 this.write = passThroughWrite;
25238 return;
25239 }
25240
25241 // Enough space to store all bytes of a single character. UTF-8 needs 4
25242 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25243 this.charBuffer = new Buffer(6);
25244 // Number of bytes received for the current incomplete multi-byte character.
25245 this.charReceived = 0;
25246 // Number of bytes expected for the current incomplete multi-byte character.
25247 this.charLength = 0;
25248 };
25249
25250
25251 // write decodes the given buffer and returns it as JS string that is
25252 // guaranteed to not contain any partial multi-byte characters. Any partial
25253 // character found at the end of the buffer is buffered up, and will be
25254 // returned when calling write again with the remaining bytes.
25255 //
25256 // Note: Converting a Buffer containing an orphan surrogate to a String
25257 // currently works, but converting a String to a Buffer (via `new Buffer`, or
25258 // Buffer#write) will replace incomplete surrogates with the unicode
25259 // replacement character. See https://codereview.chromium.org/121173009/ .
25260 StringDecoder.prototype.write = function(buffer) {
25261 var charStr = '';
25262 // if our last write ended with an incomplete multibyte character
25263 while (this.charLength) {
25264 // determine how many remaining bytes this buffer has to offer for this char
25265 var available = (buffer.length >= this.charLength - this.charReceived) ?
25266 this.charLength - this.charReceived :
25267 buffer.length;
25268
25269 // add the new bytes to the char buffer
25270 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25271 this.charReceived += available;
25272
25273 if (this.charReceived < this.charLength) {
25274 // still not enough chars in this buffer? wait for more ...
25275 return '';
25276 }
25277
25278 // remove bytes belonging to the current character from the buffer
25279 buffer = buffer.slice(available, buffer.length);
25280
25281 // get the character that was split
25282 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25283
25284 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25285 var charCode = charStr.charCodeAt(charStr.length - 1);
25286 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25287 this.charLength += this.surrogateSize;
25288 charStr = '';
25289 continue;
25290 }
25291 this.charReceived = this.charLength = 0;
25292
25293 // if there are no more bytes in this buffer, just emit our char
25294 if (buffer.length === 0) {
25295 return charStr;
25296 }
25297 break;
25298 }
25299
25300 // determine and set charLength / charReceived
25301 this.detectIncompleteChar(buffer);
25302
25303 var end = buffer.length;
25304 if (this.charLength) {
25305 // buffer the incomplete character bytes we got
25306 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25307 end -= this.charReceived;
25308 }
25309
25310 charStr += buffer.toString(this.encoding, 0, end);
25311
25312 var end = charStr.length - 1;
25313 var charCode = charStr.charCodeAt(end);
25314 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25315 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25316 var size = this.surrogateSize;
25317 this.charLength += size;
25318 this.charReceived += size;
25319 this.charBuffer.copy(this.charBuffer, size, 0, size);
25320 buffer.copy(this.charBuffer, 0, 0, size);
25321 return charStr.substring(0, end);
25322 }
25323
25324 // or just emit the charStr
25325 return charStr;
25326 };
25327
25328 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
25329 // the end of the given buffer. If so, it sets this.charLength to the byte
25330 // length that character, and sets this.charReceived to the number of bytes
25331 // that are available for this character.
25332 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25333 // determine how many bytes we have to check at the end of this buffer
25334 var i = (buffer.length >= 3) ? 3 : buffer.length;
25335
25336 // Figure out if one of the last i bytes of our buffer announces an
25337 // incomplete char.
25338 for (; i > 0; i--) {
25339 var c = buffer[buffer.length - i];
25340
25341 // See http://en.wikipedia.org/wiki/UTF-8#Description
25342
25343 // 110XXXXX
25344 if (i == 1 && c >> 5 == 0x06) {
25345 this.charLength = 2;
25346 break;
25347 }
25348
25349 // 1110XXXX
25350 if (i <= 2 && c >> 4 == 0x0E) {
25351 this.charLength = 3;
25352 break;
25353 }
25354
25355 // 11110XXX
25356 if (i <= 3 && c >> 3 == 0x1E) {
25357 this.charLength = 4;
25358 break;
25359 }
25360 }
25361 this.charReceived = i;
25362 };
25363
25364 StringDecoder.prototype.end = function(buffer) {
25365 var res = '';
25366 if (buffer && buffer.length)
25367 res = this.write(buffer);
25368
25369 if (this.charReceived) {
25370 var cr = this.charReceived;
25371 var buf = this.charBuffer;
25372 var enc = this.encoding;
25373 res += buf.slice(0, cr).toString(enc);
25374 }
25375
25376 return res;
25377 };
25378
25379 function passThroughWrite(buffer) {
25380 return buffer.toString(this.encoding);
25381 }
25382
25383 function utf16DetectIncompleteChar(buffer) {
25384 this.charReceived = buffer.length % 2;
25385 this.charLength = this.charReceived ? 2 : 0;
25386 }
25387
25388 function base64DetectIncompleteChar(buffer) {
25389 this.charReceived = buffer.length % 3;
25390 this.charLength = this.charReceived ? 3 : 0;
25391 }
25392
25393 },{"buffer":5}],27:[function(require,module,exports){
25394 (function (global){
25395
25396 /**
25397 * Module exports.
25398 */
25399
25400 module.exports = deprecate;
25401
25402 /**
25403 * Mark that a method should not be used.
25404 * Returns a modified function which warns once by default.
25405 *
25406 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25407 *
25408 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25409 * will throw an Error when invoked.
25410 *
25411 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25412 * will invoke `console.trace()` instead of `console.error()`.
25413 *
25414 * @param {Function} fn - the function to deprecate
25415 * @param {String} msg - the string to print to the console when `fn` is invoked
25416 * @returns {Function} a new "deprecated" version of `fn`
25417 * @api public
25418 */
25419
25420 function deprecate (fn, msg) {
25421 if (config('noDeprecation')) {
25422 return fn;
25423 }
25424
25425 var warned = false;
25426 function deprecated() {
25427 if (!warned) {
25428 if (config('throwDeprecation')) {
25429 throw new Error(msg);
25430 } else if (config('traceDeprecation')) {
25431 console.trace(msg);
25432 } else {
25433 console.warn(msg);
25434 }
25435 warned = true;
25436 }
25437 return fn.apply(this, arguments);
25438 }
25439
25440 return deprecated;
25441 }
25442
25443 /**
25444 * Checks `localStorage` for boolean values for the given `name`.
25445 *
25446 * @param {String} name
25447 * @returns {Boolean}
25448 * @api private
25449 */
25450
25451 function config (name) {
25452 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25453 try {
25454 if (!global.localStorage) return false;
25455 } catch (_) {
25456 return false;
25457 }
25458 var val = global.localStorage[name];
25459 if (null == val) return false;
25460 return String(val).toLowerCase() === 'true';
25461 }
25462
25463 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25464 },{}],28:[function(require,module,exports){
25465 arguments[4][9][0].apply(exports,arguments)
25466 },{"dup":9}],29:[function(require,module,exports){
25467 module.exports = function isBuffer(arg) {
25468 return arg && typeof arg === 'object'
25469 && typeof arg.copy === 'function'
25470 && typeof arg.fill === 'function'
25471 && typeof arg.readUInt8 === 'function';
25472 }
25473 },{}],30:[function(require,module,exports){
25474 (function (process,global){
25475 // Copyright Joyent, Inc. and other Node contributors.
25476 //
25477 // Permission is hereby granted, free of charge, to any person obtaining a
25478 // copy of this software and associated documentation files (the
25479 // "Software"), to deal in the Software without restriction, including
25480 // without limitation the rights to use, copy, modify, merge, publish,
25481 // distribute, sublicense, and/or sell copies of the Software, and to permit
25482 // persons to whom the Software is furnished to do so, subject to the
25483 // following conditions:
25484 //
25485 // The above copyright notice and this permission notice shall be included
25486 // in all copies or substantial portions of the Software.
25487 //
25488 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25489 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25490 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25491 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25492 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25493 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25494 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25495
25496 var formatRegExp = /%[sdj%]/g;
25497 exports.format = function(f) {
25498 if (!isString(f)) {
25499 var objects = [];
25500 for (var i = 0; i < arguments.length; i++) {
25501 objects.push(inspect(arguments[i]));
25502 }
25503 return objects.join(' ');
25504 }
25505
25506 var i = 1;
25507 var args = arguments;
25508 var len = args.length;
25509 var str = String(f).replace(formatRegExp, function(x) {
25510 if (x === '%%') return '%';
25511 if (i >= len) return x;
25512 switch (x) {
25513 case '%s': return String(args[i++]);
25514 case '%d': return Number(args[i++]);
25515 case '%j':
25516 try {
25517 return JSON.stringify(args[i++]);
25518 } catch (_) {
25519 return '[Circular]';
25520 }
25521 default:
25522 return x;
25523 }
25524 });
25525 for (var x = args[i]; i < len; x = args[++i]) {
25526 if (isNull(x) || !isObject(x)) {
25527 str += ' ' + x;
25528 } else {
25529 str += ' ' + inspect(x);
25530 }
25531 }
25532 return str;
25533 };
25534
25535
25536 // Mark that a method should not be used.
25537 // Returns a modified function which warns once by default.
25538 // If --no-deprecation is set, then it is a no-op.
25539 exports.deprecate = function(fn, msg) {
25540 // Allow for deprecating things in the process of starting up.
25541 if (isUndefined(global.process)) {
25542 return function() {
25543 return exports.deprecate(fn, msg).apply(this, arguments);
25544 };
25545 }
25546
25547 if (process.noDeprecation === true) {
25548 return fn;
25549 }
25550
25551 var warned = false;
25552 function deprecated() {
25553 if (!warned) {
25554 if (process.throwDeprecation) {
25555 throw new Error(msg);
25556 } else if (process.traceDeprecation) {
25557 console.trace(msg);
25558 } else {
25559 console.error(msg);
25560 }
25561 warned = true;
25562 }
25563 return fn.apply(this, arguments);
25564 }
25565
25566 return deprecated;
25567 };
25568
25569
25570 var debugs = {};
25571 var debugEnviron;
25572 exports.debuglog = function(set) {
25573 if (isUndefined(debugEnviron))
25574 debugEnviron = process.env.NODE_DEBUG || '';
25575 set = set.toUpperCase();
25576 if (!debugs[set]) {
25577 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25578 var pid = process.pid;
25579 debugs[set] = function() {
25580 var msg = exports.format.apply(exports, arguments);
25581 console.error('%s %d: %s', set, pid, msg);
25582 };
25583 } else {
25584 debugs[set] = function() {};
25585 }
25586 }
25587 return debugs[set];
25588 };
25589
25590
25591 /**
25592 * Echos the value of a value. Trys to print the value out
25593 * in the best way possible given the different types.
25594 *
25595 * @param {Object} obj The object to print out.
25596 * @param {Object} opts Optional options object that alters the output.
25597 */
25598 /* legacy: obj, showHidden, depth, colors*/
25599 function inspect(obj, opts) {
25600 // default options
25601 var ctx = {
25602 seen: [],
25603 stylize: stylizeNoColor
25604 };
25605 // legacy...
25606 if (arguments.length >= 3) ctx.depth = arguments[2];
25607 if (arguments.length >= 4) ctx.colors = arguments[3];
25608 if (isBoolean(opts)) {
25609 // legacy...
25610 ctx.showHidden = opts;
25611 } else if (opts) {
25612 // got an "options" object
25613 exports._extend(ctx, opts);
25614 }
25615 // set default options
25616 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25617 if (isUndefined(ctx.depth)) ctx.depth = 2;
25618 if (isUndefined(ctx.colors)) ctx.colors = false;
25619 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25620 if (ctx.colors) ctx.stylize = stylizeWithColor;
25621 return formatValue(ctx, obj, ctx.depth);
25622 }
25623 exports.inspect = inspect;
25624
25625
25626 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25627 inspect.colors = {
25628 'bold' : [1, 22],
25629 'italic' : [3, 23],
25630 'underline' : [4, 24],
25631 'inverse' : [7, 27],
25632 'white' : [37, 39],
25633 'grey' : [90, 39],
25634 'black' : [30, 39],
25635 'blue' : [34, 39],
25636 'cyan' : [36, 39],
25637 'green' : [32, 39],
25638 'magenta' : [35, 39],
25639 'red' : [31, 39],
25640 'yellow' : [33, 39]
25641 };
25642
25643 // Don't use 'blue' not visible on cmd.exe
25644 inspect.styles = {
25645 'special': 'cyan',
25646 'number': 'yellow',
25647 'boolean': 'yellow',
25648 'undefined': 'grey',
25649 'null': 'bold',
25650 'string': 'green',
25651 'date': 'magenta',
25652 // "name": intentionally not styling
25653 'regexp': 'red'
25654 };
25655
25656
25657 function stylizeWithColor(str, styleType) {
25658 var style = inspect.styles[styleType];
25659
25660 if (style) {
25661 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25662 '\u001b[' + inspect.colors[style][1] + 'm';
25663 } else {
25664 return str;
25665 }
25666 }
25667
25668
25669 function stylizeNoColor(str, styleType) {
25670 return str;
25671 }
25672
25673
25674 function arrayToHash(array) {
25675 var hash = {};
25676
25677 array.forEach(function(val, idx) {
25678 hash[val] = true;
25679 });
25680
25681 return hash;
25682 }
25683
25684
25685 function formatValue(ctx, value, recurseTimes) {
25686 // Provide a hook for user-specified inspect functions.
25687 // Check that value is an object with an inspect function on it
25688 if (ctx.customInspect &&
25689 value &&
25690 isFunction(value.inspect) &&
25691 // Filter out the util module, it's inspect function is special
25692 value.inspect !== exports.inspect &&
25693 // Also filter out any prototype objects using the circular check.
25694 !(value.constructor && value.constructor.prototype === value)) {
25695 var ret = value.inspect(recurseTimes, ctx);
25696 if (!isString(ret)) {
25697 ret = formatValue(ctx, ret, recurseTimes);
25698 }
25699 return ret;
25700 }
25701
25702 // Primitive types cannot have properties
25703 var primitive = formatPrimitive(ctx, value);
25704 if (primitive) {
25705 return primitive;
25706 }
25707
25708 // Look up the keys of the object.
25709 var keys = Object.keys(value);
25710 var visibleKeys = arrayToHash(keys);
25711
25712 if (ctx.showHidden) {
25713 keys = Object.getOwnPropertyNames(value);
25714 }
25715
25716 // IE doesn't make error fields non-enumerable
25717 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25718 if (isError(value)
25719 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25720 return formatError(value);
25721 }
25722
25723 // Some type of object without properties can be shortcutted.
25724 if (keys.length === 0) {
25725 if (isFunction(value)) {
25726 var name = value.name ? ': ' + value.name : '';
25727 return ctx.stylize('[Function' + name + ']', 'special');
25728 }
25729 if (isRegExp(value)) {
25730 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25731 }
25732 if (isDate(value)) {
25733 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25734 }
25735 if (isError(value)) {
25736 return formatError(value);
25737 }
25738 }
25739
25740 var base = '', array = false, braces = ['{', '}'];
25741
25742 // Make Array say that they are Array
25743 if (isArray(value)) {
25744 array = true;
25745 braces = ['[', ']'];
25746 }
25747
25748 // Make functions say that they are functions
25749 if (isFunction(value)) {
25750 var n = value.name ? ': ' + value.name : '';
25751 base = ' [Function' + n + ']';
25752 }
25753
25754 // Make RegExps say that they are RegExps
25755 if (isRegExp(value)) {
25756 base = ' ' + RegExp.prototype.toString.call(value);
25757 }
25758
25759 // Make dates with properties first say the date
25760 if (isDate(value)) {
25761 base = ' ' + Date.prototype.toUTCString.call(value);
25762 }
25763
25764 // Make error with message first say the error
25765 if (isError(value)) {
25766 base = ' ' + formatError(value);
25767 }
25768
25769 if (keys.length === 0 && (!array || value.length == 0)) {
25770 return braces[0] + base + braces[1];
25771 }
25772
25773 if (recurseTimes < 0) {
25774 if (isRegExp(value)) {
25775 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25776 } else {
25777 return ctx.stylize('[Object]', 'special');
25778 }
25779 }
25780
25781 ctx.seen.push(value);
25782
25783 var output;
25784 if (array) {
25785 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25786 } else {
25787 output = keys.map(function(key) {
25788 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25789 });
25790 }
25791
25792 ctx.seen.pop();
25793
25794 return reduceToSingleString(output, base, braces);
25795 }
25796
25797
25798 function formatPrimitive(ctx, value) {
25799 if (isUndefined(value))
25800 return ctx.stylize('undefined', 'undefined');
25801 if (isString(value)) {
25802 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25803 .replace(/'/g, "\\'")
25804 .replace(/\\"/g, '"') + '\'';
25805 return ctx.stylize(simple, 'string');
25806 }
25807 if (isNumber(value))
25808 return ctx.stylize('' + value, 'number');
25809 if (isBoolean(value))
25810 return ctx.stylize('' + value, 'boolean');
25811 // For some reason typeof null is "object", so special case here.
25812 if (isNull(value))
25813 return ctx.stylize('null', 'null');
25814 }
25815
25816
25817 function formatError(value) {
25818 return '[' + Error.prototype.toString.call(value) + ']';
25819 }
25820
25821
25822 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25823 var output = [];
25824 for (var i = 0, l = value.length; i < l; ++i) {
25825 if (hasOwnProperty(value, String(i))) {
25826 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25827 String(i), true));
25828 } else {
25829 output.push('');
25830 }
25831 }
25832 keys.forEach(function(key) {
25833 if (!key.match(/^\d+$/)) {
25834 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25835 key, true));
25836 }
25837 });
25838 return output;
25839 }
25840
25841
25842 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25843 var name, str, desc;
25844 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25845 if (desc.get) {
25846 if (desc.set) {
25847 str = ctx.stylize('[Getter/Setter]', 'special');
25848 } else {
25849 str = ctx.stylize('[Getter]', 'special');
25850 }
25851 } else {
25852 if (desc.set) {
25853 str = ctx.stylize('[Setter]', 'special');
25854 }
25855 }
25856 if (!hasOwnProperty(visibleKeys, key)) {
25857 name = '[' + key + ']';
25858 }
25859 if (!str) {
25860 if (ctx.seen.indexOf(desc.value) < 0) {
25861 if (isNull(recurseTimes)) {
25862 str = formatValue(ctx, desc.value, null);
25863 } else {
25864 str = formatValue(ctx, desc.value, recurseTimes - 1);
25865 }
25866 if (str.indexOf('\n') > -1) {
25867 if (array) {
25868 str = str.split('\n').map(function(line) {
25869 return ' ' + line;
25870 }).join('\n').substr(2);
25871 } else {
25872 str = '\n' + str.split('\n').map(function(line) {
25873 return ' ' + line;
25874 }).join('\n');
25875 }
25876 }
25877 } else {
25878 str = ctx.stylize('[Circular]', 'special');
25879 }
25880 }
25881 if (isUndefined(name)) {
25882 if (array && key.match(/^\d+$/)) {
25883 return str;
25884 }
25885 name = JSON.stringify('' + key);
25886 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25887 name = name.substr(1, name.length - 2);
25888 name = ctx.stylize(name, 'name');
25889 } else {
25890 name = name.replace(/'/g, "\\'")
25891 .replace(/\\"/g, '"')
25892 .replace(/(^"|"$)/g, "'");
25893 name = ctx.stylize(name, 'string');
25894 }
25895 }
25896
25897 return name + ': ' + str;
25898 }
25899
25900
25901 function reduceToSingleString(output, base, braces) {
25902 var numLinesEst = 0;
25903 var length = output.reduce(function(prev, cur) {
25904 numLinesEst++;
25905 if (cur.indexOf('\n') >= 0) numLinesEst++;
25906 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25907 }, 0);
25908
25909 if (length > 60) {
25910 return braces[0] +
25911 (base === '' ? '' : base + '\n ') +
25912 ' ' +
25913 output.join(',\n ') +
25914 ' ' +
25915 braces[1];
25916 }
25917
25918 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25919 }
25920
25921
25922 // NOTE: These type checking functions intentionally don't use `instanceof`
25923 // because it is fragile and can be easily faked with `Object.create()`.
25924 function isArray(ar) {
25925 return Array.isArray(ar);
25926 }
25927 exports.isArray = isArray;
25928
25929 function isBoolean(arg) {
25930 return typeof arg === 'boolean';
25931 }
25932 exports.isBoolean = isBoolean;
25933
25934 function isNull(arg) {
25935 return arg === null;
25936 }
25937 exports.isNull = isNull;
25938
25939 function isNullOrUndefined(arg) {
25940 return arg == null;
25941 }
25942 exports.isNullOrUndefined = isNullOrUndefined;
25943
25944 function isNumber(arg) {
25945 return typeof arg === 'number';
25946 }
25947 exports.isNumber = isNumber;
25948
25949 function isString(arg) {
25950 return typeof arg === 'string';
25951 }
25952 exports.isString = isString;
25953
25954 function isSymbol(arg) {
25955 return typeof arg === 'symbol';
25956 }
25957 exports.isSymbol = isSymbol;
25958
25959 function isUndefined(arg) {
25960 return arg === void 0;
25961 }
25962 exports.isUndefined = isUndefined;
25963
25964 function isRegExp(re) {
25965 return isObject(re) && objectToString(re) === '[object RegExp]';
25966 }
25967 exports.isRegExp = isRegExp;
25968
25969 function isObject(arg) {
25970 return typeof arg === 'object' && arg !== null;
25971 }
25972 exports.isObject = isObject;
25973
25974 function isDate(d) {
25975 return isObject(d) && objectToString(d) === '[object Date]';
25976 }
25977 exports.isDate = isDate;
25978
25979 function isError(e) {
25980 return isObject(e) &&
25981 (objectToString(e) === '[object Error]' || e instanceof Error);
25982 }
25983 exports.isError = isError;
25984
25985 function isFunction(arg) {
25986 return typeof arg === 'function';
25987 }
25988 exports.isFunction = isFunction;
25989
25990 function isPrimitive(arg) {
25991 return arg === null ||
25992 typeof arg === 'boolean' ||
25993 typeof arg === 'number' ||
25994 typeof arg === 'string' ||
25995 typeof arg === 'symbol' || // ES6 symbol
25996 typeof arg === 'undefined';
25997 }
25998 exports.isPrimitive = isPrimitive;
25999
26000 exports.isBuffer = require('./support/isBuffer');
26001
26002 function objectToString(o) {
26003 return Object.prototype.toString.call(o);
26004 }
26005
26006
26007 function pad(n) {
26008 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26009 }
26010
26011
26012 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26013 'Oct', 'Nov', 'Dec'];
26014
26015 // 26 Feb 16:19:34
26016 function timestamp() {
26017 var d = new Date();
26018 var time = [pad(d.getHours()),
26019 pad(d.getMinutes()),
26020 pad(d.getSeconds())].join(':');
26021 return [d.getDate(), months[d.getMonth()], time].join(' ');
26022 }
26023
26024
26025 // log is just a thin wrapper to console.log that prepends a timestamp
26026 exports.log = function() {
26027 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
26028 };
26029
26030
26031 /**
26032 * Inherit the prototype methods from one constructor into another.
26033 *
26034 * The Function.prototype.inherits from lang.js rewritten as a standalone
26035 * function (not on Function.prototype). NOTE: If this file is to be loaded
26036 * during bootstrapping this function needs to be rewritten using some native
26037 * functions as prototype setup using normal JavaScript does not work as
26038 * expected during bootstrapping (see mirror.js in r114903).
26039 *
26040 * @param {function} ctor Constructor function which needs to inherit the
26041 * prototype.
26042 * @param {function} superCtor Constructor function to inherit prototype from.
26043 */
26044 exports.inherits = require('inherits');
26045
26046 exports._extend = function(origin, add) {
26047 // Don't do anything if add isn't an object
26048 if (!add || !isObject(add)) return origin;
26049
26050 var keys = Object.keys(add);
26051 var i = keys.length;
26052 while (i--) {
26053 origin[keys[i]] = add[keys[i]];
26054 }
26055 return origin;
26056 };
26057
26058 function hasOwnProperty(obj, prop) {
26059 return Object.prototype.hasOwnProperty.call(obj, prop);
26060 }
26061
26062 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26063 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26064 (function (Buffer){
26065 const createKeccakHash = require('keccak')
26066 const secp256k1 = require('secp256k1')
26067 const assert = require('assert')
26068 const rlp = require('rlp')
26069 const BN = require('bn.js')
26070 const createHash = require('create-hash')
26071 Object.assign(exports, require('ethjs-util'))
26072
26073 /**
26074 * the max integer that this VM can handle (a ```BN```)
26075 * @var {BN} MAX_INTEGER
26076 */
26077 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
26078
26079 /**
26080 * 2^256 (a ```BN```)
26081 * @var {BN} TWO_POW256
26082 */
26083 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
26084
26085 /**
26086 * SHA3-256 hash of null (a ```String```)
26087 * @var {String} SHA3_NULL_S
26088 */
26089 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
26090
26091 /**
26092 * SHA3-256 hash of null (a ```Buffer```)
26093 * @var {Buffer} SHA3_NULL
26094 */
26095 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
26096
26097 /**
26098 * SHA3-256 of an RLP of an empty array (a ```String```)
26099 * @var {String} SHA3_RLP_ARRAY_S
26100 */
26101 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
26102
26103 /**
26104 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26105 * @var {Buffer} SHA3_RLP_ARRAY
26106 */
26107 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
26108
26109 /**
26110 * SHA3-256 hash of the RLP of null (a ```String```)
26111 * @var {String} SHA3_RLP_S
26112 */
26113 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
26114
26115 /**
26116 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26117 * @var {Buffer} SHA3_RLP
26118 */
26119 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
26120
26121 /**
26122 * [`BN`](https://github.com/indutny/bn.js)
26123 * @var {Function}
26124 */
26125 exports.BN = BN
26126
26127 /**
26128 * [`rlp`](https://github.com/ethereumjs/rlp)
26129 * @var {Function}
26130 */
26131 exports.rlp = rlp
26132
26133 /**
26134 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26135 * @var {Object}
26136 */
26137 exports.secp256k1 = secp256k1
26138
26139 /**
26140 * Returns a buffer filled with 0s
26141 * @method zeros
26142 * @param {Number} bytes the number of bytes the buffer should be
26143 * @return {Buffer}
26144 */
26145 exports.zeros = function (bytes) {
26146 return Buffer.allocUnsafe(bytes).fill(0)
26147 }
26148
26149 /**
26150 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26151 * Or it truncates the beginning if it exceeds.
26152 * @method lsetLength
26153 * @param {Buffer|Array} msg the value to pad
26154 * @param {Number} length the number of bytes the output should be
26155 * @param {Boolean} [right=false] whether to start padding form the left or right
26156 * @return {Buffer|Array}
26157 */
26158 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26159 var buf = exports.zeros(length)
26160 msg = exports.toBuffer(msg)
26161 if (right) {
26162 if (msg.length < length) {
26163 msg.copy(buf)
26164 return buf
26165 }
26166 return msg.slice(0, length)
26167 } else {
26168 if (msg.length < length) {
26169 msg.copy(buf, length - msg.length)
26170 return buf
26171 }
26172 return msg.slice(-length)
26173 }
26174 }
26175
26176 /**
26177 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26178 * Or it truncates the beginning if it exceeds.
26179 * @param {Buffer|Array} msg the value to pad
26180 * @param {Number} length the number of bytes the output should be
26181 * @return {Buffer|Array}
26182 */
26183 exports.setLengthRight = function (msg, length) {
26184 return exports.setLength(msg, length, true)
26185 }
26186
26187 /**
26188 * Trims leading zeros from a `Buffer` or an `Array`
26189 * @param {Buffer|Array|String} a
26190 * @return {Buffer|Array|String}
26191 */
26192 exports.unpad = exports.stripZeros = function (a) {
26193 a = exports.stripHexPrefix(a)
26194 var first = a[0]
26195 while (a.length > 0 && first.toString() === '0') {
26196 a = a.slice(1)
26197 first = a[0]
26198 }
26199 return a
26200 }
26201 /**
26202 * 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.
26203 * @param {*} v the value
26204 */
26205 exports.toBuffer = function (v) {
26206 if (!Buffer.isBuffer(v)) {
26207 if (Array.isArray(v)) {
26208 v = Buffer.from(v)
26209 } else if (typeof v === 'string') {
26210 if (exports.isHexPrefixed(v)) {
26211 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26212 } else {
26213 v = Buffer.from(v)
26214 }
26215 } else if (typeof v === 'number') {
26216 v = exports.intToBuffer(v)
26217 } else if (v === null || v === undefined) {
26218 v = Buffer.allocUnsafe(0)
26219 } else if (v.toArray) {
26220 // converts a BN to a Buffer
26221 v = Buffer.from(v.toArray())
26222 } else {
26223 throw new Error('invalid type')
26224 }
26225 }
26226 return v
26227 }
26228
26229 /**
26230 * Converts a `Buffer` to a `Number`
26231 * @param {Buffer} buf
26232 * @return {Number}
26233 * @throws If the input number exceeds 53 bits.
26234 */
26235 exports.bufferToInt = function (buf) {
26236 return new BN(exports.toBuffer(buf)).toNumber()
26237 }
26238
26239 /**
26240 * Converts a `Buffer` into a hex `String`
26241 * @param {Buffer} buf
26242 * @return {String}
26243 */
26244 exports.bufferToHex = function (buf) {
26245 buf = exports.toBuffer(buf)
26246 return '0x' + buf.toString('hex')
26247 }
26248
26249 /**
26250 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26251 * @param {Buffer} num
26252 * @return {BN}
26253 */
26254 exports.fromSigned = function (num) {
26255 return new BN(num).fromTwos(256)
26256 }
26257
26258 /**
26259 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26260 * @param {BN} num
26261 * @return {Buffer}
26262 */
26263 exports.toUnsigned = function (num) {
26264 return Buffer.from(num.toTwos(256).toArray())
26265 }
26266
26267 /**
26268 * Creates SHA-3 hash of the input
26269 * @param {Buffer|Array|String|Number} a the input data
26270 * @param {Number} [bits=256] the SHA width
26271 * @return {Buffer}
26272 */
26273 exports.sha3 = function (a, bits) {
26274 a = exports.toBuffer(a)
26275 if (!bits) bits = 256
26276
26277 return createKeccakHash('keccak' + bits).update(a).digest()
26278 }
26279
26280 /**
26281 * Creates SHA256 hash of the input
26282 * @param {Buffer|Array|String|Number} a the input data
26283 * @return {Buffer}
26284 */
26285 exports.sha256 = function (a) {
26286 a = exports.toBuffer(a)
26287 return createHash('sha256').update(a).digest()
26288 }
26289
26290 /**
26291 * Creates RIPEMD160 hash of the input
26292 * @param {Buffer|Array|String|Number} a the input data
26293 * @param {Boolean} padded whether it should be padded to 256 bits or not
26294 * @return {Buffer}
26295 */
26296 exports.ripemd160 = function (a, padded) {
26297 a = exports.toBuffer(a)
26298 var hash = createHash('rmd160').update(a).digest()
26299 if (padded === true) {
26300 return exports.setLength(hash, 32)
26301 } else {
26302 return hash
26303 }
26304 }
26305
26306 /**
26307 * Creates SHA-3 hash of the RLP encoded version of the input
26308 * @param {Buffer|Array|String|Number} a the input data
26309 * @return {Buffer}
26310 */
26311 exports.rlphash = function (a) {
26312 return exports.sha3(rlp.encode(a))
26313 }
26314
26315 /**
26316 * Checks if the private key satisfies the rules of the curve secp256k1.
26317 * @param {Buffer} privateKey
26318 * @return {Boolean}
26319 */
26320 exports.isValidPrivate = function (privateKey) {
26321 return secp256k1.privateKeyVerify(privateKey)
26322 }
26323
26324 /**
26325 * Checks if the public key satisfies the rules of the curve secp256k1
26326 * and the requirements of Ethereum.
26327 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26328 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26329 * @return {Boolean}
26330 */
26331 exports.isValidPublic = function (publicKey, sanitize) {
26332 if (publicKey.length === 64) {
26333 // Convert to SEC1 for secp256k1
26334 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26335 }
26336
26337 if (!sanitize) {
26338 return false
26339 }
26340
26341 return secp256k1.publicKeyVerify(publicKey)
26342 }
26343
26344 /**
26345 * Returns the ethereum address of a given public key.
26346 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26347 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26348 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26349 * @return {Buffer}
26350 */
26351 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26352 pubKey = exports.toBuffer(pubKey)
26353 if (sanitize && (pubKey.length !== 64)) {
26354 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
26355 }
26356 assert(pubKey.length === 64)
26357 // Only take the lower 160bits of the hash
26358 return exports.sha3(pubKey).slice(-20)
26359 }
26360
26361 /**
26362 * Returns the ethereum public key of a given private key
26363 * @param {Buffer} privateKey A private key must be 256 bits wide
26364 * @return {Buffer}
26365 */
26366 var privateToPublic = exports.privateToPublic = function (privateKey) {
26367 privateKey = exports.toBuffer(privateKey)
26368 // skip the type flag and use the X, Y points
26369 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26370 }
26371
26372 /**
26373 * Converts a public key to the Ethereum format.
26374 * @param {Buffer} publicKey
26375 * @return {Buffer}
26376 */
26377 exports.importPublic = function (publicKey) {
26378 publicKey = exports.toBuffer(publicKey)
26379 if (publicKey.length !== 64) {
26380 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
26381 }
26382 return publicKey
26383 }
26384
26385 /**
26386 * ECDSA sign
26387 * @param {Buffer} msgHash
26388 * @param {Buffer} privateKey
26389 * @return {Object}
26390 */
26391 exports.ecsign = function (msgHash, privateKey) {
26392 var sig = secp256k1.sign(msgHash, privateKey)
26393
26394 var ret = {}
26395 ret.r = sig.signature.slice(0, 32)
26396 ret.s = sig.signature.slice(32, 64)
26397 ret.v = sig.recovery + 27
26398 return ret
26399 }
26400
26401 /**
26402 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26403 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26404 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26405 * used to produce the signature.
26406 * @param message
26407 * @returns {Buffer} hash
26408 */
26409 exports.hashPersonalMessage = function (message) {
26410 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26411 return exports.sha3(Buffer.concat([prefix, message]))
26412 }
26413
26414 /**
26415 * ECDSA public key recovery from signature
26416 * @param {Buffer} msgHash
26417 * @param {Number} v
26418 * @param {Buffer} r
26419 * @param {Buffer} s
26420 * @return {Buffer} publicKey
26421 */
26422 exports.ecrecover = function (msgHash, v, r, s) {
26423 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26424 var recovery = v - 27
26425 if (recovery !== 0 && recovery !== 1) {
26426 throw new Error('Invalid signature v value')
26427 }
26428 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26429 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
26430 }
26431
26432 /**
26433 * Convert signature parameters into the format of `eth_sign` RPC method
26434 * @param {Number} v
26435 * @param {Buffer} r
26436 * @param {Buffer} s
26437 * @return {String} sig
26438 */
26439 exports.toRpcSig = function (v, r, s) {
26440 // NOTE: with potential introduction of chainId this might need to be updated
26441 if (v !== 27 && v !== 28) {
26442 throw new Error('Invalid recovery id')
26443 }
26444
26445 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26446 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26447 return exports.bufferToHex(Buffer.concat([
26448 exports.setLengthLeft(r, 32),
26449 exports.setLengthLeft(s, 32),
26450 exports.toBuffer(v - 27)
26451 ]))
26452 }
26453
26454 /**
26455 * Convert signature format of the `eth_sign` RPC method to signature parameters
26456 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26457 * @param {String} sig
26458 * @return {Object}
26459 */
26460 exports.fromRpcSig = function (sig) {
26461 sig = exports.toBuffer(sig)
26462
26463 // NOTE: with potential introduction of chainId this might need to be updated
26464 if (sig.length !== 65) {
26465 throw new Error('Invalid signature length')
26466 }
26467
26468 var v = sig[64]
26469 // support both versions of `eth_sign` responses
26470 if (v < 27) {
26471 v += 27
26472 }
26473
26474 return {
26475 v: v,
26476 r: sig.slice(0, 32),
26477 s: sig.slice(32, 64)
26478 }
26479 }
26480
26481 /**
26482 * Returns the ethereum address of a given private key
26483 * @param {Buffer} privateKey A private key must be 256 bits wide
26484 * @return {Buffer}
26485 */
26486 exports.privateToAddress = function (privateKey) {
26487 return exports.publicToAddress(privateToPublic(privateKey))
26488 }
26489
26490 /**
26491 * Checks if the address is a valid. Accepts checksummed addresses too
26492 * @param {String} address
26493 * @return {Boolean}
26494 */
26495 exports.isValidAddress = function (address) {
26496 return /^0x[0-9a-fA-F]{40}$/i.test(address)
26497 }
26498
26499 /**
26500 * Returns a checksummed address
26501 * @param {String} address
26502 * @return {String}
26503 */
26504 exports.toChecksumAddress = function (address) {
26505 address = exports.stripHexPrefix(address).toLowerCase()
26506 var hash = exports.sha3(address).toString('hex')
26507 var ret = '0x'
26508
26509 for (var i = 0; i < address.length; i++) {
26510 if (parseInt(hash[i], 16) >= 8) {
26511 ret += address[i].toUpperCase()
26512 } else {
26513 ret += address[i]
26514 }
26515 }
26516
26517 return ret
26518 }
26519
26520 /**
26521 * Checks if the address is a valid checksummed address
26522 * @param {Buffer} address
26523 * @return {Boolean}
26524 */
26525 exports.isValidChecksumAddress = function (address) {
26526 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
26527 }
26528
26529 /**
26530 * Generates an address of a newly created contract
26531 * @param {Buffer} from the address which is creating this new address
26532 * @param {Buffer} nonce the nonce of the from account
26533 * @return {Buffer}
26534 */
26535 exports.generateAddress = function (from, nonce) {
26536 from = exports.toBuffer(from)
26537 nonce = new BN(nonce)
26538
26539 if (nonce.isZero()) {
26540 // in RLP we want to encode null in the case of zero nonce
26541 // read the RLP documentation for an answer if you dare
26542 nonce = null
26543 } else {
26544 nonce = Buffer.from(nonce.toArray())
26545 }
26546
26547 // Only take the lower 160bits of the hash
26548 return exports.rlphash([from, nonce]).slice(-20)
26549 }
26550
26551 /**
26552 * Returns true if the supplied address belongs to a precompiled account
26553 * @param {Buffer|String} address
26554 * @return {Boolean}
26555 */
26556 exports.isPrecompiled = function (address) {
26557 var a = exports.unpad(address)
26558 return a.length === 1 && a[0] > 0 && a[0] < 5
26559 }
26560
26561 /**
26562 * Adds "0x" to a given `String` if it does not already start with "0x"
26563 * @param {String} str
26564 * @return {String}
26565 */
26566 exports.addHexPrefix = function (str) {
26567 if (typeof str !== 'string') {
26568 return str
26569 }
26570
26571 return exports.isHexPrefixed(str) ? str : '0x' + str
26572 }
26573
26574 /**
26575 * Validate ECDSA signature
26576 * @method isValidSignature
26577 * @param {Buffer} v
26578 * @param {Buffer} r
26579 * @param {Buffer} s
26580 * @param {Boolean} [homestead=true]
26581 * @return {Boolean}
26582 */
26583
26584 exports.isValidSignature = function (v, r, s, homestead) {
26585 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26586 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26587
26588 if (r.length !== 32 || s.length !== 32) {
26589 return false
26590 }
26591
26592 if (v !== 27 && v !== 28) {
26593 return false
26594 }
26595
26596 r = new BN(r)
26597 s = new BN(s)
26598
26599 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26600 return false
26601 }
26602
26603 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26604 return false
26605 }
26606
26607 return true
26608 }
26609
26610 /**
26611 * Converts a `Buffer` or `Array` to JSON
26612 * @param {Buffer|Array} ba
26613 * @return {Array|String|null}
26614 */
26615 exports.baToJSON = function (ba) {
26616 if (Buffer.isBuffer(ba)) {
26617 return '0x' + ba.toString('hex')
26618 } else if (ba instanceof Array) {
26619 var array = []
26620 for (var i = 0; i < ba.length; i++) {
26621 array.push(exports.baToJSON(ba[i]))
26622 }
26623 return array
26624 }
26625 }
26626
26627 /**
26628 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26629 * @param {Object} self the `Object` to define properties on
26630 * @param {Array} fields an array fields to define. Fields can contain:
26631 * * `name` - the name of the properties
26632 * * `length` - the number of bytes the field can have
26633 * * `allowLess` - if the field can be less than the length
26634 * * `allowEmpty`
26635 * @param {*} data data to be validated against the definitions
26636 */
26637 exports.defineProperties = function (self, fields, data) {
26638 self.raw = []
26639 self._fields = []
26640
26641 // attach the `toJSON`
26642 self.toJSON = function (label) {
26643 if (label) {
26644 var obj = {}
26645 self._fields.forEach(function (field) {
26646 obj[field] = '0x' + self[field].toString('hex')
26647 })
26648 return obj
26649 }
26650 return exports.baToJSON(this.raw)
26651 }
26652
26653 self.serialize = function serialize () {
26654 return rlp.encode(self.raw)
26655 }
26656
26657 fields.forEach(function (field, i) {
26658 self._fields.push(field.name)
26659 function getter () {
26660 return self.raw[i]
26661 }
26662 function setter (v) {
26663 v = exports.toBuffer(v)
26664
26665 if (v.toString('hex') === '00' && !field.allowZero) {
26666 v = Buffer.allocUnsafe(0)
26667 }
26668
26669 if (field.allowLess && field.length) {
26670 v = exports.stripZeros(v)
26671 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26672 } else if (!(field.allowZero && v.length === 0) && field.length) {
26673 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26674 }
26675
26676 self.raw[i] = v
26677 }
26678
26679 Object.defineProperty(self, field.name, {
26680 enumerable: true,
26681 configurable: true,
26682 get: getter,
26683 set: setter
26684 })
26685
26686 if (field.default) {
26687 self[field.name] = field.default
26688 }
26689
26690 // attach alias
26691 if (field.alias) {
26692 Object.defineProperty(self, field.alias, {
26693 enumerable: false,
26694 configurable: true,
26695 set: setter,
26696 get: getter
26697 })
26698 }
26699 })
26700
26701 // if the constuctor is passed data
26702 if (data) {
26703 if (typeof data === 'string') {
26704 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26705 }
26706
26707 if (Buffer.isBuffer(data)) {
26708 data = rlp.decode(data)
26709 }
26710
26711 if (Array.isArray(data)) {
26712 if (data.length > self._fields.length) {
26713 throw (new Error('wrong number of fields in data'))
26714 }
26715
26716 // make sure all the items are buffers
26717 data.forEach(function (d, i) {
26718 self[self._fields[i]] = exports.toBuffer(d)
26719 })
26720 } else if (typeof data === 'object') {
26721 const keys = Object.keys(data)
26722 fields.forEach(function (field) {
26723 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26724 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26725 })
26726 } else {
26727 throw new Error('invalid data')
26728 }
26729 }
26730 }
26731
26732 }).call(this,require("buffer").Buffer)
26733 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26734 (function (Buffer){
26735 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26736 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26737 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
26738
26739 function check (buffer) {
26740 if (buffer.length < 8) return false
26741 if (buffer.length > 72) return false
26742 if (buffer[0] !== 0x30) return false
26743 if (buffer[1] !== buffer.length - 2) return false
26744 if (buffer[2] !== 0x02) return false
26745
26746 var lenR = buffer[3]
26747 if (lenR === 0) return false
26748 if (5 + lenR >= buffer.length) return false
26749 if (buffer[4 + lenR] !== 0x02) return false
26750
26751 var lenS = buffer[5 + lenR]
26752 if (lenS === 0) return false
26753 if ((6 + lenR + lenS) !== buffer.length) return false
26754
26755 if (buffer[4] & 0x80) return false
26756 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26757
26758 if (buffer[lenR + 6] & 0x80) return false
26759 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26760 return true
26761 }
26762
26763 function decode (buffer) {
26764 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26765 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26766 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26767 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26768 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26769
26770 var lenR = buffer[3]
26771 if (lenR === 0) throw new Error('R length is zero')
26772 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26773 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26774
26775 var lenS = buffer[5 + lenR]
26776 if (lenS === 0) throw new Error('S length is zero')
26777 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26778
26779 if (buffer[4] & 0x80) throw new Error('R value is negative')
26780 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26781
26782 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26783 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26784
26785 // non-BIP66 - extract R, S values
26786 return {
26787 r: buffer.slice(4, 4 + lenR),
26788 s: buffer.slice(6 + lenR)
26789 }
26790 }
26791
26792 /*
26793 * Expects r and s to be positive DER integers.
26794 *
26795 * The DER format uses the most significant bit as a sign bit (& 0x80).
26796 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26797 *
26798 * Examples:
26799 *
26800 * 0 => 0x00
26801 * 1 => 0x01
26802 * -1 => 0xff
26803 * 127 => 0x7f
26804 * -127 => 0x81
26805 * 128 => 0x0080
26806 * -128 => 0x80
26807 * 255 => 0x00ff
26808 * -255 => 0xff01
26809 * 16300 => 0x3fac
26810 * -16300 => 0xc054
26811 * 62300 => 0x00f35c
26812 * -62300 => 0xff0ca4
26813 */
26814 function encode (r, s) {
26815 var lenR = r.length
26816 var lenS = s.length
26817 if (lenR === 0) throw new Error('R length is zero')
26818 if (lenS === 0) throw new Error('S length is zero')
26819 if (lenR > 33) throw new Error('R length is too long')
26820 if (lenS > 33) throw new Error('S length is too long')
26821 if (r[0] & 0x80) throw new Error('R value is negative')
26822 if (s[0] & 0x80) throw new Error('S value is negative')
26823 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26824 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26825
26826 var signature = new Buffer(6 + lenR + lenS)
26827
26828 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26829 signature[0] = 0x30
26830 signature[1] = signature.length - 2
26831 signature[2] = 0x02
26832 signature[3] = r.length
26833 r.copy(signature, 4)
26834 signature[4 + lenR] = 0x02
26835 signature[5 + lenR] = s.length
26836 s.copy(signature, 6 + lenR)
26837
26838 return signature
26839 }
26840
26841 module.exports = {
26842 check: check,
26843 decode: decode,
26844 encode: encode
26845 }
26846
26847 }).call(this,require("buffer").Buffer)
26848 },{"buffer":5}],33:[function(require,module,exports){
26849 (function (module, exports) {
26850 'use strict';
26851
26852 // Utils
26853 function assert (val, msg) {
26854 if (!val) throw new Error(msg || 'Assertion failed');
26855 }
26856
26857 // Could use `inherits` module, but don't want to move from single file
26858 // architecture yet.
26859 function inherits (ctor, superCtor) {
26860 ctor.super_ = superCtor;
26861 var TempCtor = function () {};
26862 TempCtor.prototype = superCtor.prototype;
26863 ctor.prototype = new TempCtor();
26864 ctor.prototype.constructor = ctor;
26865 }
26866
26867 // BN
26868
26869 function BN (number, base, endian) {
26870 if (BN.isBN(number)) {
26871 return number;
26872 }
26873
26874 this.negative = 0;
26875 this.words = null;
26876 this.length = 0;
26877
26878 // Reduction context
26879 this.red = null;
26880
26881 if (number !== null) {
26882 if (base === 'le' || base === 'be') {
26883 endian = base;
26884 base = 10;
26885 }
26886
26887 this._init(number || 0, base || 10, endian || 'be');
26888 }
26889 }
26890 if (typeof module === 'object') {
26891 module.exports = BN;
26892 } else {
26893 exports.BN = BN;
26894 }
26895
26896 BN.BN = BN;
26897 BN.wordSize = 26;
26898
26899 var Buffer;
26900 try {
26901 Buffer = require('buf' + 'fer').Buffer;
26902 } catch (e) {
26903 }
26904
26905 BN.isBN = function isBN (num) {
26906 if (num instanceof BN) {
26907 return true;
26908 }
26909
26910 return num !== null && typeof num === 'object' &&
26911 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26912 };
26913
26914 BN.max = function max (left, right) {
26915 if (left.cmp(right) > 0) return left;
26916 return right;
26917 };
26918
26919 BN.min = function min (left, right) {
26920 if (left.cmp(right) < 0) return left;
26921 return right;
26922 };
26923
26924 BN.prototype._init = function init (number, base, endian) {
26925 if (typeof number === 'number') {
26926 return this._initNumber(number, base, endian);
26927 }
26928
26929 if (typeof number === 'object') {
26930 return this._initArray(number, base, endian);
26931 }
26932
26933 if (base === 'hex') {
26934 base = 16;
26935 }
26936 assert(base === (base | 0) && base >= 2 && base <= 36);
26937
26938 number = number.toString().replace(/\s+/g, '');
26939 var start = 0;
26940 if (number[0] === '-') {
26941 start++;
26942 }
26943
26944 if (base === 16) {
26945 this._parseHex(number, start);
26946 } else {
26947 this._parseBase(number, base, start);
26948 }
26949
26950 if (number[0] === '-') {
26951 this.negative = 1;
26952 }
26953
26954 this.strip();
26955
26956 if (endian !== 'le') return;
26957
26958 this._initArray(this.toArray(), base, endian);
26959 };
26960
26961 BN.prototype._initNumber = function _initNumber (number, base, endian) {
26962 if (number < 0) {
26963 this.negative = 1;
26964 number = -number;
26965 }
26966 if (number < 0x4000000) {
26967 this.words = [ number & 0x3ffffff ];
26968 this.length = 1;
26969 } else if (number < 0x10000000000000) {
26970 this.words = [
26971 number & 0x3ffffff,
26972 (number / 0x4000000) & 0x3ffffff
26973 ];
26974 this.length = 2;
26975 } else {
26976 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
26977 this.words = [
26978 number & 0x3ffffff,
26979 (number / 0x4000000) & 0x3ffffff,
26980 1
26981 ];
26982 this.length = 3;
26983 }
26984
26985 if (endian !== 'le') return;
26986
26987 // Reverse the bytes
26988 this._initArray(this.toArray(), base, endian);
26989 };
26990
26991 BN.prototype._initArray = function _initArray (number, base, endian) {
26992 // Perhaps a Uint8Array
26993 assert(typeof number.length === 'number');
26994 if (number.length <= 0) {
26995 this.words = [ 0 ];
26996 this.length = 1;
26997 return this;
26998 }
26999
27000 this.length = Math.ceil(number.length / 3);
27001 this.words = new Array(this.length);
27002 for (var i = 0; i < this.length; i++) {
27003 this.words[i] = 0;
27004 }
27005
27006 var j, w;
27007 var off = 0;
27008 if (endian === 'be') {
27009 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27010 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27011 this.words[j] |= (w << off) & 0x3ffffff;
27012 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27013 off += 24;
27014 if (off >= 26) {
27015 off -= 26;
27016 j++;
27017 }
27018 }
27019 } else if (endian === 'le') {
27020 for (i = 0, j = 0; i < number.length; i += 3) {
27021 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27022 this.words[j] |= (w << off) & 0x3ffffff;
27023 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27024 off += 24;
27025 if (off >= 26) {
27026 off -= 26;
27027 j++;
27028 }
27029 }
27030 }
27031 return this.strip();
27032 };
27033
27034 function parseHex (str, start, end) {
27035 var r = 0;
27036 var len = Math.min(str.length, end);
27037 for (var i = start; i < len; i++) {
27038 var c = str.charCodeAt(i) - 48;
27039
27040 r <<= 4;
27041
27042 // 'a' - 'f'
27043 if (c >= 49 && c <= 54) {
27044 r |= c - 49 + 0xa;
27045
27046 // 'A' - 'F'
27047 } else if (c >= 17 && c <= 22) {
27048 r |= c - 17 + 0xa;
27049
27050 // '0' - '9'
27051 } else {
27052 r |= c & 0xf;
27053 }
27054 }
27055 return r;
27056 }
27057
27058 BN.prototype._parseHex = function _parseHex (number, start) {
27059 // Create possibly bigger array to ensure that it fits the number
27060 this.length = Math.ceil((number.length - start) / 6);
27061 this.words = new Array(this.length);
27062 for (var i = 0; i < this.length; i++) {
27063 this.words[i] = 0;
27064 }
27065
27066 var j, w;
27067 // Scan 24-bit chunks and add them to the number
27068 var off = 0;
27069 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27070 w = parseHex(number, i, i + 6);
27071 this.words[j] |= (w << off) & 0x3ffffff;
27072 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27073 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27074 off += 24;
27075 if (off >= 26) {
27076 off -= 26;
27077 j++;
27078 }
27079 }
27080 if (i + 6 !== start) {
27081 w = parseHex(number, start, i + 6);
27082 this.words[j] |= (w << off) & 0x3ffffff;
27083 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27084 }
27085 this.strip();
27086 };
27087
27088 function parseBase (str, start, end, mul) {
27089 var r = 0;
27090 var len = Math.min(str.length, end);
27091 for (var i = start; i < len; i++) {
27092 var c = str.charCodeAt(i) - 48;
27093
27094 r *= mul;
27095
27096 // 'a'
27097 if (c >= 49) {
27098 r += c - 49 + 0xa;
27099
27100 // 'A'
27101 } else if (c >= 17) {
27102 r += c - 17 + 0xa;
27103
27104 // '0' - '9'
27105 } else {
27106 r += c;
27107 }
27108 }
27109 return r;
27110 }
27111
27112 BN.prototype._parseBase = function _parseBase (number, base, start) {
27113 // Initialize as zero
27114 this.words = [ 0 ];
27115 this.length = 1;
27116
27117 // Find length of limb in base
27118 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27119 limbLen++;
27120 }
27121 limbLen--;
27122 limbPow = (limbPow / base) | 0;
27123
27124 var total = number.length - start;
27125 var mod = total % limbLen;
27126 var end = Math.min(total, total - mod) + start;
27127
27128 var word = 0;
27129 for (var i = start; i < end; i += limbLen) {
27130 word = parseBase(number, i, i + limbLen, base);
27131
27132 this.imuln(limbPow);
27133 if (this.words[0] + word < 0x4000000) {
27134 this.words[0] += word;
27135 } else {
27136 this._iaddn(word);
27137 }
27138 }
27139
27140 if (mod !== 0) {
27141 var pow = 1;
27142 word = parseBase(number, i, number.length, base);
27143
27144 for (i = 0; i < mod; i++) {
27145 pow *= base;
27146 }
27147
27148 this.imuln(pow);
27149 if (this.words[0] + word < 0x4000000) {
27150 this.words[0] += word;
27151 } else {
27152 this._iaddn(word);
27153 }
27154 }
27155 };
27156
27157 BN.prototype.copy = function copy (dest) {
27158 dest.words = new Array(this.length);
27159 for (var i = 0; i < this.length; i++) {
27160 dest.words[i] = this.words[i];
27161 }
27162 dest.length = this.length;
27163 dest.negative = this.negative;
27164 dest.red = this.red;
27165 };
27166
27167 BN.prototype.clone = function clone () {
27168 var r = new BN(null);
27169 this.copy(r);
27170 return r;
27171 };
27172
27173 BN.prototype._expand = function _expand (size) {
27174 while (this.length < size) {
27175 this.words[this.length++] = 0;
27176 }
27177 return this;
27178 };
27179
27180 // Remove leading `0` from `this`
27181 BN.prototype.strip = function strip () {
27182 while (this.length > 1 && this.words[this.length - 1] === 0) {
27183 this.length--;
27184 }
27185 return this._normSign();
27186 };
27187
27188 BN.prototype._normSign = function _normSign () {
27189 // -0 = 0
27190 if (this.length === 1 && this.words[0] === 0) {
27191 this.negative = 0;
27192 }
27193 return this;
27194 };
27195
27196 BN.prototype.inspect = function inspect () {
27197 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27198 };
27199
27200 /*
27201
27202 var zeros = [];
27203 var groupSizes = [];
27204 var groupBases = [];
27205
27206 var s = '';
27207 var i = -1;
27208 while (++i < BN.wordSize) {
27209 zeros[i] = s;
27210 s += '0';
27211 }
27212 groupSizes[0] = 0;
27213 groupSizes[1] = 0;
27214 groupBases[0] = 0;
27215 groupBases[1] = 0;
27216 var base = 2 - 1;
27217 while (++base < 36 + 1) {
27218 var groupSize = 0;
27219 var groupBase = 1;
27220 while (groupBase < (1 << BN.wordSize) / base) {
27221 groupBase *= base;
27222 groupSize += 1;
27223 }
27224 groupSizes[base] = groupSize;
27225 groupBases[base] = groupBase;
27226 }
27227
27228 */
27229
27230 var zeros = [
27231 '',
27232 '0',
27233 '00',
27234 '000',
27235 '0000',
27236 '00000',
27237 '000000',
27238 '0000000',
27239 '00000000',
27240 '000000000',
27241 '0000000000',
27242 '00000000000',
27243 '000000000000',
27244 '0000000000000',
27245 '00000000000000',
27246 '000000000000000',
27247 '0000000000000000',
27248 '00000000000000000',
27249 '000000000000000000',
27250 '0000000000000000000',
27251 '00000000000000000000',
27252 '000000000000000000000',
27253 '0000000000000000000000',
27254 '00000000000000000000000',
27255 '000000000000000000000000',
27256 '0000000000000000000000000'
27257 ];
27258
27259 var groupSizes = [
27260 0, 0,
27261 25, 16, 12, 11, 10, 9, 8,
27262 8, 7, 7, 7, 7, 6, 6,
27263 6, 6, 6, 6, 6, 5, 5,
27264 5, 5, 5, 5, 5, 5, 5,
27265 5, 5, 5, 5, 5, 5, 5
27266 ];
27267
27268 var groupBases = [
27269 0, 0,
27270 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27271 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27272 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27273 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27274 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27275 ];
27276
27277 BN.prototype.toString = function toString (base, padding) {
27278 base = base || 10;
27279 padding = padding | 0 || 1;
27280
27281 var out;
27282 if (base === 16 || base === 'hex') {
27283 out = '';
27284 var off = 0;
27285 var carry = 0;
27286 for (var i = 0; i < this.length; i++) {
27287 var w = this.words[i];
27288 var word = (((w << off) | carry) & 0xffffff).toString(16);
27289 carry = (w >>> (24 - off)) & 0xffffff;
27290 if (carry !== 0 || i !== this.length - 1) {
27291 out = zeros[6 - word.length] + word + out;
27292 } else {
27293 out = word + out;
27294 }
27295 off += 2;
27296 if (off >= 26) {
27297 off -= 26;
27298 i--;
27299 }
27300 }
27301 if (carry !== 0) {
27302 out = carry.toString(16) + out;
27303 }
27304 while (out.length % padding !== 0) {
27305 out = '0' + out;
27306 }
27307 if (this.negative !== 0) {
27308 out = '-' + out;
27309 }
27310 return out;
27311 }
27312
27313 if (base === (base | 0) && base >= 2 && base <= 36) {
27314 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27315 var groupSize = groupSizes[base];
27316 // var groupBase = Math.pow(base, groupSize);
27317 var groupBase = groupBases[base];
27318 out = '';
27319 var c = this.clone();
27320 c.negative = 0;
27321 while (!c.isZero()) {
27322 var r = c.modn(groupBase).toString(base);
27323 c = c.idivn(groupBase);
27324
27325 if (!c.isZero()) {
27326 out = zeros[groupSize - r.length] + r + out;
27327 } else {
27328 out = r + out;
27329 }
27330 }
27331 if (this.isZero()) {
27332 out = '0' + out;
27333 }
27334 while (out.length % padding !== 0) {
27335 out = '0' + out;
27336 }
27337 if (this.negative !== 0) {
27338 out = '-' + out;
27339 }
27340 return out;
27341 }
27342
27343 assert(false, 'Base should be between 2 and 36');
27344 };
27345
27346 BN.prototype.toNumber = function toNumber () {
27347 var ret = this.words[0];
27348 if (this.length === 2) {
27349 ret += this.words[1] * 0x4000000;
27350 } else if (this.length === 3 && this.words[2] === 0x01) {
27351 // NOTE: at this stage it is known that the top bit is set
27352 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27353 } else if (this.length > 2) {
27354 assert(false, 'Number can only safely store up to 53 bits');
27355 }
27356 return (this.negative !== 0) ? -ret : ret;
27357 };
27358
27359 BN.prototype.toJSON = function toJSON () {
27360 return this.toString(16);
27361 };
27362
27363 BN.prototype.toBuffer = function toBuffer (endian, length) {
27364 assert(typeof Buffer !== 'undefined');
27365 return this.toArrayLike(Buffer, endian, length);
27366 };
27367
27368 BN.prototype.toArray = function toArray (endian, length) {
27369 return this.toArrayLike(Array, endian, length);
27370 };
27371
27372 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27373 var byteLength = this.byteLength();
27374 var reqLength = length || Math.max(1, byteLength);
27375 assert(byteLength <= reqLength, 'byte array longer than desired length');
27376 assert(reqLength > 0, 'Requested array length <= 0');
27377
27378 this.strip();
27379 var littleEndian = endian === 'le';
27380 var res = new ArrayType(reqLength);
27381
27382 var b, i;
27383 var q = this.clone();
27384 if (!littleEndian) {
27385 // Assume big-endian
27386 for (i = 0; i < reqLength - byteLength; i++) {
27387 res[i] = 0;
27388 }
27389
27390 for (i = 0; !q.isZero(); i++) {
27391 b = q.andln(0xff);
27392 q.iushrn(8);
27393
27394 res[reqLength - i - 1] = b;
27395 }
27396 } else {
27397 for (i = 0; !q.isZero(); i++) {
27398 b = q.andln(0xff);
27399 q.iushrn(8);
27400
27401 res[i] = b;
27402 }
27403
27404 for (; i < reqLength; i++) {
27405 res[i] = 0;
27406 }
27407 }
27408
27409 return res;
27410 };
27411
27412 if (Math.clz32) {
27413 BN.prototype._countBits = function _countBits (w) {
27414 return 32 - Math.clz32(w);
27415 };
27416 } else {
27417 BN.prototype._countBits = function _countBits (w) {
27418 var t = w;
27419 var r = 0;
27420 if (t >= 0x1000) {
27421 r += 13;
27422 t >>>= 13;
27423 }
27424 if (t >= 0x40) {
27425 r += 7;
27426 t >>>= 7;
27427 }
27428 if (t >= 0x8) {
27429 r += 4;
27430 t >>>= 4;
27431 }
27432 if (t >= 0x02) {
27433 r += 2;
27434 t >>>= 2;
27435 }
27436 return r + t;
27437 };
27438 }
27439
27440 BN.prototype._zeroBits = function _zeroBits (w) {
27441 // Short-cut
27442 if (w === 0) return 26;
27443
27444 var t = w;
27445 var r = 0;
27446 if ((t & 0x1fff) === 0) {
27447 r += 13;
27448 t >>>= 13;
27449 }
27450 if ((t & 0x7f) === 0) {
27451 r += 7;
27452 t >>>= 7;
27453 }
27454 if ((t & 0xf) === 0) {
27455 r += 4;
27456 t >>>= 4;
27457 }
27458 if ((t & 0x3) === 0) {
27459 r += 2;
27460 t >>>= 2;
27461 }
27462 if ((t & 0x1) === 0) {
27463 r++;
27464 }
27465 return r;
27466 };
27467
27468 // Return number of used bits in a BN
27469 BN.prototype.bitLength = function bitLength () {
27470 var w = this.words[this.length - 1];
27471 var hi = this._countBits(w);
27472 return (this.length - 1) * 26 + hi;
27473 };
27474
27475 function toBitArray (num) {
27476 var w = new Array(num.bitLength());
27477
27478 for (var bit = 0; bit < w.length; bit++) {
27479 var off = (bit / 26) | 0;
27480 var wbit = bit % 26;
27481
27482 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
27483 }
27484
27485 return w;
27486 }
27487
27488 // Number of trailing zero bits
27489 BN.prototype.zeroBits = function zeroBits () {
27490 if (this.isZero()) return 0;
27491
27492 var r = 0;
27493 for (var i = 0; i < this.length; i++) {
27494 var b = this._zeroBits(this.words[i]);
27495 r += b;
27496 if (b !== 26) break;
27497 }
27498 return r;
27499 };
27500
27501 BN.prototype.byteLength = function byteLength () {
27502 return Math.ceil(this.bitLength() / 8);
27503 };
27504
27505 BN.prototype.toTwos = function toTwos (width) {
27506 if (this.negative !== 0) {
27507 return this.abs().inotn(width).iaddn(1);
27508 }
27509 return this.clone();
27510 };
27511
27512 BN.prototype.fromTwos = function fromTwos (width) {
27513 if (this.testn(width - 1)) {
27514 return this.notn(width).iaddn(1).ineg();
27515 }
27516 return this.clone();
27517 };
27518
27519 BN.prototype.isNeg = function isNeg () {
27520 return this.negative !== 0;
27521 };
27522
27523 // Return negative clone of `this`
27524 BN.prototype.neg = function neg () {
27525 return this.clone().ineg();
27526 };
27527
27528 BN.prototype.ineg = function ineg () {
27529 if (!this.isZero()) {
27530 this.negative ^= 1;
27531 }
27532
27533 return this;
27534 };
27535
27536 // Or `num` with `this` in-place
27537 BN.prototype.iuor = function iuor (num) {
27538 while (this.length < num.length) {
27539 this.words[this.length++] = 0;
27540 }
27541
27542 for (var i = 0; i < num.length; i++) {
27543 this.words[i] = this.words[i] | num.words[i];
27544 }
27545
27546 return this.strip();
27547 };
27548
27549 BN.prototype.ior = function ior (num) {
27550 assert((this.negative | num.negative) === 0);
27551 return this.iuor(num);
27552 };
27553
27554 // Or `num` with `this`
27555 BN.prototype.or = function or (num) {
27556 if (this.length > num.length) return this.clone().ior(num);
27557 return num.clone().ior(this);
27558 };
27559
27560 BN.prototype.uor = function uor (num) {
27561 if (this.length > num.length) return this.clone().iuor(num);
27562 return num.clone().iuor(this);
27563 };
27564
27565 // And `num` with `this` in-place
27566 BN.prototype.iuand = function iuand (num) {
27567 // b = min-length(num, this)
27568 var b;
27569 if (this.length > num.length) {
27570 b = num;
27571 } else {
27572 b = this;
27573 }
27574
27575 for (var i = 0; i < b.length; i++) {
27576 this.words[i] = this.words[i] & num.words[i];
27577 }
27578
27579 this.length = b.length;
27580
27581 return this.strip();
27582 };
27583
27584 BN.prototype.iand = function iand (num) {
27585 assert((this.negative | num.negative) === 0);
27586 return this.iuand(num);
27587 };
27588
27589 // And `num` with `this`
27590 BN.prototype.and = function and (num) {
27591 if (this.length > num.length) return this.clone().iand(num);
27592 return num.clone().iand(this);
27593 };
27594
27595 BN.prototype.uand = function uand (num) {
27596 if (this.length > num.length) return this.clone().iuand(num);
27597 return num.clone().iuand(this);
27598 };
27599
27600 // Xor `num` with `this` in-place
27601 BN.prototype.iuxor = function iuxor (num) {
27602 // a.length > b.length
27603 var a;
27604 var b;
27605 if (this.length > num.length) {
27606 a = this;
27607 b = num;
27608 } else {
27609 a = num;
27610 b = this;
27611 }
27612
27613 for (var i = 0; i < b.length; i++) {
27614 this.words[i] = a.words[i] ^ b.words[i];
27615 }
27616
27617 if (this !== a) {
27618 for (; i < a.length; i++) {
27619 this.words[i] = a.words[i];
27620 }
27621 }
27622
27623 this.length = a.length;
27624
27625 return this.strip();
27626 };
27627
27628 BN.prototype.ixor = function ixor (num) {
27629 assert((this.negative | num.negative) === 0);
27630 return this.iuxor(num);
27631 };
27632
27633 // Xor `num` with `this`
27634 BN.prototype.xor = function xor (num) {
27635 if (this.length > num.length) return this.clone().ixor(num);
27636 return num.clone().ixor(this);
27637 };
27638
27639 BN.prototype.uxor = function uxor (num) {
27640 if (this.length > num.length) return this.clone().iuxor(num);
27641 return num.clone().iuxor(this);
27642 };
27643
27644 // Not ``this`` with ``width`` bitwidth
27645 BN.prototype.inotn = function inotn (width) {
27646 assert(typeof width === 'number' && width >= 0);
27647
27648 var bytesNeeded = Math.ceil(width / 26) | 0;
27649 var bitsLeft = width % 26;
27650
27651 // Extend the buffer with leading zeroes
27652 this._expand(bytesNeeded);
27653
27654 if (bitsLeft > 0) {
27655 bytesNeeded--;
27656 }
27657
27658 // Handle complete words
27659 for (var i = 0; i < bytesNeeded; i++) {
27660 this.words[i] = ~this.words[i] & 0x3ffffff;
27661 }
27662
27663 // Handle the residue
27664 if (bitsLeft > 0) {
27665 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
27666 }
27667
27668 // And remove leading zeroes
27669 return this.strip();
27670 };
27671
27672 BN.prototype.notn = function notn (width) {
27673 return this.clone().inotn(width);
27674 };
27675
27676 // Set `bit` of `this`
27677 BN.prototype.setn = function setn (bit, val) {
27678 assert(typeof bit === 'number' && bit >= 0);
27679
27680 var off = (bit / 26) | 0;
27681 var wbit = bit % 26;
27682
27683 this._expand(off + 1);
27684
27685 if (val) {
27686 this.words[off] = this.words[off] | (1 << wbit);
27687 } else {
27688 this.words[off] = this.words[off] & ~(1 << wbit);
27689 }
27690
27691 return this.strip();
27692 };
27693
27694 // Add `num` to `this` in-place
27695 BN.prototype.iadd = function iadd (num) {
27696 var r;
27697
27698 // negative + positive
27699 if (this.negative !== 0 && num.negative === 0) {
27700 this.negative = 0;
27701 r = this.isub(num);
27702 this.negative ^= 1;
27703 return this._normSign();
27704
27705 // positive + negative
27706 } else if (this.negative === 0 && num.negative !== 0) {
27707 num.negative = 0;
27708 r = this.isub(num);
27709 num.negative = 1;
27710 return r._normSign();
27711 }
27712
27713 // a.length > b.length
27714 var a, b;
27715 if (this.length > num.length) {
27716 a = this;
27717 b = num;
27718 } else {
27719 a = num;
27720 b = this;
27721 }
27722
27723 var carry = 0;
27724 for (var i = 0; i < b.length; i++) {
27725 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27726 this.words[i] = r & 0x3ffffff;
27727 carry = r >>> 26;
27728 }
27729 for (; carry !== 0 && i < a.length; i++) {
27730 r = (a.words[i] | 0) + carry;
27731 this.words[i] = r & 0x3ffffff;
27732 carry = r >>> 26;
27733 }
27734
27735 this.length = a.length;
27736 if (carry !== 0) {
27737 this.words[this.length] = carry;
27738 this.length++;
27739 // Copy the rest of the words
27740 } else if (a !== this) {
27741 for (; i < a.length; i++) {
27742 this.words[i] = a.words[i];
27743 }
27744 }
27745
27746 return this;
27747 };
27748
27749 // Add `num` to `this`
27750 BN.prototype.add = function add (num) {
27751 var res;
27752 if (num.negative !== 0 && this.negative === 0) {
27753 num.negative = 0;
27754 res = this.sub(num);
27755 num.negative ^= 1;
27756 return res;
27757 } else if (num.negative === 0 && this.negative !== 0) {
27758 this.negative = 0;
27759 res = num.sub(this);
27760 this.negative = 1;
27761 return res;
27762 }
27763
27764 if (this.length > num.length) return this.clone().iadd(num);
27765
27766 return num.clone().iadd(this);
27767 };
27768
27769 // Subtract `num` from `this` in-place
27770 BN.prototype.isub = function isub (num) {
27771 // this - (-num) = this + num
27772 if (num.negative !== 0) {
27773 num.negative = 0;
27774 var r = this.iadd(num);
27775 num.negative = 1;
27776 return r._normSign();
27777
27778 // -this - num = -(this + num)
27779 } else if (this.negative !== 0) {
27780 this.negative = 0;
27781 this.iadd(num);
27782 this.negative = 1;
27783 return this._normSign();
27784 }
27785
27786 // At this point both numbers are positive
27787 var cmp = this.cmp(num);
27788
27789 // Optimization - zeroify
27790 if (cmp === 0) {
27791 this.negative = 0;
27792 this.length = 1;
27793 this.words[0] = 0;
27794 return this;
27795 }
27796
27797 // a > b
27798 var a, b;
27799 if (cmp > 0) {
27800 a = this;
27801 b = num;
27802 } else {
27803 a = num;
27804 b = this;
27805 }
27806
27807 var carry = 0;
27808 for (var i = 0; i < b.length; i++) {
27809 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27810 carry = r >> 26;
27811 this.words[i] = r & 0x3ffffff;
27812 }
27813 for (; carry !== 0 && i < a.length; i++) {
27814 r = (a.words[i] | 0) + carry;
27815 carry = r >> 26;
27816 this.words[i] = r & 0x3ffffff;
27817 }
27818
27819 // Copy rest of the words
27820 if (carry === 0 && i < a.length && a !== this) {
27821 for (; i < a.length; i++) {
27822 this.words[i] = a.words[i];
27823 }
27824 }
27825
27826 this.length = Math.max(this.length, i);
27827
27828 if (a !== this) {
27829 this.negative = 1;
27830 }
27831
27832 return this.strip();
27833 };
27834
27835 // Subtract `num` from `this`
27836 BN.prototype.sub = function sub (num) {
27837 return this.clone().isub(num);
27838 };
27839
27840 function smallMulTo (self, num, out) {
27841 out.negative = num.negative ^ self.negative;
27842 var len = (self.length + num.length) | 0;
27843 out.length = len;
27844 len = (len - 1) | 0;
27845
27846 // Peel one iteration (compiler can't do it, because of code complexity)
27847 var a = self.words[0] | 0;
27848 var b = num.words[0] | 0;
27849 var r = a * b;
27850
27851 var lo = r & 0x3ffffff;
27852 var carry = (r / 0x4000000) | 0;
27853 out.words[0] = lo;
27854
27855 for (var k = 1; k < len; k++) {
27856 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27857 // note that ncarry could be >= 0x3ffffff
27858 var ncarry = carry >>> 26;
27859 var rword = carry & 0x3ffffff;
27860 var maxJ = Math.min(k, num.length - 1);
27861 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27862 var i = (k - j) | 0;
27863 a = self.words[i] | 0;
27864 b = num.words[j] | 0;
27865 r = a * b + rword;
27866 ncarry += (r / 0x4000000) | 0;
27867 rword = r & 0x3ffffff;
27868 }
27869 out.words[k] = rword | 0;
27870 carry = ncarry | 0;
27871 }
27872 if (carry !== 0) {
27873 out.words[k] = carry | 0;
27874 } else {
27875 out.length--;
27876 }
27877
27878 return out.strip();
27879 }
27880
27881 // TODO(indutny): it may be reasonable to omit it for users who don't need
27882 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27883 // multiplication (like elliptic secp256k1).
27884 var comb10MulTo = function comb10MulTo (self, num, out) {
27885 var a = self.words;
27886 var b = num.words;
27887 var o = out.words;
27888 var c = 0;
27889 var lo;
27890 var mid;
27891 var hi;
27892 var a0 = a[0] | 0;
27893 var al0 = a0 & 0x1fff;
27894 var ah0 = a0 >>> 13;
27895 var a1 = a[1] | 0;
27896 var al1 = a1 & 0x1fff;
27897 var ah1 = a1 >>> 13;
27898 var a2 = a[2] | 0;
27899 var al2 = a2 & 0x1fff;
27900 var ah2 = a2 >>> 13;
27901 var a3 = a[3] | 0;
27902 var al3 = a3 & 0x1fff;
27903 var ah3 = a3 >>> 13;
27904 var a4 = a[4] | 0;
27905 var al4 = a4 & 0x1fff;
27906 var ah4 = a4 >>> 13;
27907 var a5 = a[5] | 0;
27908 var al5 = a5 & 0x1fff;
27909 var ah5 = a5 >>> 13;
27910 var a6 = a[6] | 0;
27911 var al6 = a6 & 0x1fff;
27912 var ah6 = a6 >>> 13;
27913 var a7 = a[7] | 0;
27914 var al7 = a7 & 0x1fff;
27915 var ah7 = a7 >>> 13;
27916 var a8 = a[8] | 0;
27917 var al8 = a8 & 0x1fff;
27918 var ah8 = a8 >>> 13;
27919 var a9 = a[9] | 0;
27920 var al9 = a9 & 0x1fff;
27921 var ah9 = a9 >>> 13;
27922 var b0 = b[0] | 0;
27923 var bl0 = b0 & 0x1fff;
27924 var bh0 = b0 >>> 13;
27925 var b1 = b[1] | 0;
27926 var bl1 = b1 & 0x1fff;
27927 var bh1 = b1 >>> 13;
27928 var b2 = b[2] | 0;
27929 var bl2 = b2 & 0x1fff;
27930 var bh2 = b2 >>> 13;
27931 var b3 = b[3] | 0;
27932 var bl3 = b3 & 0x1fff;
27933 var bh3 = b3 >>> 13;
27934 var b4 = b[4] | 0;
27935 var bl4 = b4 & 0x1fff;
27936 var bh4 = b4 >>> 13;
27937 var b5 = b[5] | 0;
27938 var bl5 = b5 & 0x1fff;
27939 var bh5 = b5 >>> 13;
27940 var b6 = b[6] | 0;
27941 var bl6 = b6 & 0x1fff;
27942 var bh6 = b6 >>> 13;
27943 var b7 = b[7] | 0;
27944 var bl7 = b7 & 0x1fff;
27945 var bh7 = b7 >>> 13;
27946 var b8 = b[8] | 0;
27947 var bl8 = b8 & 0x1fff;
27948 var bh8 = b8 >>> 13;
27949 var b9 = b[9] | 0;
27950 var bl9 = b9 & 0x1fff;
27951 var bh9 = b9 >>> 13;
27952
27953 out.negative = self.negative ^ num.negative;
27954 out.length = 19;
27955 /* k = 0 */
27956 lo = Math.imul(al0, bl0);
27957 mid = Math.imul(al0, bh0);
27958 mid = (mid + Math.imul(ah0, bl0)) | 0;
27959 hi = Math.imul(ah0, bh0);
27960 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27961 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
27962 w0 &= 0x3ffffff;
27963 /* k = 1 */
27964 lo = Math.imul(al1, bl0);
27965 mid = Math.imul(al1, bh0);
27966 mid = (mid + Math.imul(ah1, bl0)) | 0;
27967 hi = Math.imul(ah1, bh0);
27968 lo = (lo + Math.imul(al0, bl1)) | 0;
27969 mid = (mid + Math.imul(al0, bh1)) | 0;
27970 mid = (mid + Math.imul(ah0, bl1)) | 0;
27971 hi = (hi + Math.imul(ah0, bh1)) | 0;
27972 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27973 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
27974 w1 &= 0x3ffffff;
27975 /* k = 2 */
27976 lo = Math.imul(al2, bl0);
27977 mid = Math.imul(al2, bh0);
27978 mid = (mid + Math.imul(ah2, bl0)) | 0;
27979 hi = Math.imul(ah2, bh0);
27980 lo = (lo + Math.imul(al1, bl1)) | 0;
27981 mid = (mid + Math.imul(al1, bh1)) | 0;
27982 mid = (mid + Math.imul(ah1, bl1)) | 0;
27983 hi = (hi + Math.imul(ah1, bh1)) | 0;
27984 lo = (lo + Math.imul(al0, bl2)) | 0;
27985 mid = (mid + Math.imul(al0, bh2)) | 0;
27986 mid = (mid + Math.imul(ah0, bl2)) | 0;
27987 hi = (hi + Math.imul(ah0, bh2)) | 0;
27988 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27989 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
27990 w2 &= 0x3ffffff;
27991 /* k = 3 */
27992 lo = Math.imul(al3, bl0);
27993 mid = Math.imul(al3, bh0);
27994 mid = (mid + Math.imul(ah3, bl0)) | 0;
27995 hi = Math.imul(ah3, bh0);
27996 lo = (lo + Math.imul(al2, bl1)) | 0;
27997 mid = (mid + Math.imul(al2, bh1)) | 0;
27998 mid = (mid + Math.imul(ah2, bl1)) | 0;
27999 hi = (hi + Math.imul(ah2, bh1)) | 0;
28000 lo = (lo + Math.imul(al1, bl2)) | 0;
28001 mid = (mid + Math.imul(al1, bh2)) | 0;
28002 mid = (mid + Math.imul(ah1, bl2)) | 0;
28003 hi = (hi + Math.imul(ah1, bh2)) | 0;
28004 lo = (lo + Math.imul(al0, bl3)) | 0;
28005 mid = (mid + Math.imul(al0, bh3)) | 0;
28006 mid = (mid + Math.imul(ah0, bl3)) | 0;
28007 hi = (hi + Math.imul(ah0, bh3)) | 0;
28008 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28009 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28010 w3 &= 0x3ffffff;
28011 /* k = 4 */
28012 lo = Math.imul(al4, bl0);
28013 mid = Math.imul(al4, bh0);
28014 mid = (mid + Math.imul(ah4, bl0)) | 0;
28015 hi = Math.imul(ah4, bh0);
28016 lo = (lo + Math.imul(al3, bl1)) | 0;
28017 mid = (mid + Math.imul(al3, bh1)) | 0;
28018 mid = (mid + Math.imul(ah3, bl1)) | 0;
28019 hi = (hi + Math.imul(ah3, bh1)) | 0;
28020 lo = (lo + Math.imul(al2, bl2)) | 0;
28021 mid = (mid + Math.imul(al2, bh2)) | 0;
28022 mid = (mid + Math.imul(ah2, bl2)) | 0;
28023 hi = (hi + Math.imul(ah2, bh2)) | 0;
28024 lo = (lo + Math.imul(al1, bl3)) | 0;
28025 mid = (mid + Math.imul(al1, bh3)) | 0;
28026 mid = (mid + Math.imul(ah1, bl3)) | 0;
28027 hi = (hi + Math.imul(ah1, bh3)) | 0;
28028 lo = (lo + Math.imul(al0, bl4)) | 0;
28029 mid = (mid + Math.imul(al0, bh4)) | 0;
28030 mid = (mid + Math.imul(ah0, bl4)) | 0;
28031 hi = (hi + Math.imul(ah0, bh4)) | 0;
28032 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28033 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28034 w4 &= 0x3ffffff;
28035 /* k = 5 */
28036 lo = Math.imul(al5, bl0);
28037 mid = Math.imul(al5, bh0);
28038 mid = (mid + Math.imul(ah5, bl0)) | 0;
28039 hi = Math.imul(ah5, bh0);
28040 lo = (lo + Math.imul(al4, bl1)) | 0;
28041 mid = (mid + Math.imul(al4, bh1)) | 0;
28042 mid = (mid + Math.imul(ah4, bl1)) | 0;
28043 hi = (hi + Math.imul(ah4, bh1)) | 0;
28044 lo = (lo + Math.imul(al3, bl2)) | 0;
28045 mid = (mid + Math.imul(al3, bh2)) | 0;
28046 mid = (mid + Math.imul(ah3, bl2)) | 0;
28047 hi = (hi + Math.imul(ah3, bh2)) | 0;
28048 lo = (lo + Math.imul(al2, bl3)) | 0;
28049 mid = (mid + Math.imul(al2, bh3)) | 0;
28050 mid = (mid + Math.imul(ah2, bl3)) | 0;
28051 hi = (hi + Math.imul(ah2, bh3)) | 0;
28052 lo = (lo + Math.imul(al1, bl4)) | 0;
28053 mid = (mid + Math.imul(al1, bh4)) | 0;
28054 mid = (mid + Math.imul(ah1, bl4)) | 0;
28055 hi = (hi + Math.imul(ah1, bh4)) | 0;
28056 lo = (lo + Math.imul(al0, bl5)) | 0;
28057 mid = (mid + Math.imul(al0, bh5)) | 0;
28058 mid = (mid + Math.imul(ah0, bl5)) | 0;
28059 hi = (hi + Math.imul(ah0, bh5)) | 0;
28060 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28061 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28062 w5 &= 0x3ffffff;
28063 /* k = 6 */
28064 lo = Math.imul(al6, bl0);
28065 mid = Math.imul(al6, bh0);
28066 mid = (mid + Math.imul(ah6, bl0)) | 0;
28067 hi = Math.imul(ah6, bh0);
28068 lo = (lo + Math.imul(al5, bl1)) | 0;
28069 mid = (mid + Math.imul(al5, bh1)) | 0;
28070 mid = (mid + Math.imul(ah5, bl1)) | 0;
28071 hi = (hi + Math.imul(ah5, bh1)) | 0;
28072 lo = (lo + Math.imul(al4, bl2)) | 0;
28073 mid = (mid + Math.imul(al4, bh2)) | 0;
28074 mid = (mid + Math.imul(ah4, bl2)) | 0;
28075 hi = (hi + Math.imul(ah4, bh2)) | 0;
28076 lo = (lo + Math.imul(al3, bl3)) | 0;
28077 mid = (mid + Math.imul(al3, bh3)) | 0;
28078 mid = (mid + Math.imul(ah3, bl3)) | 0;
28079 hi = (hi + Math.imul(ah3, bh3)) | 0;
28080 lo = (lo + Math.imul(al2, bl4)) | 0;
28081 mid = (mid + Math.imul(al2, bh4)) | 0;
28082 mid = (mid + Math.imul(ah2, bl4)) | 0;
28083 hi = (hi + Math.imul(ah2, bh4)) | 0;
28084 lo = (lo + Math.imul(al1, bl5)) | 0;
28085 mid = (mid + Math.imul(al1, bh5)) | 0;
28086 mid = (mid + Math.imul(ah1, bl5)) | 0;
28087 hi = (hi + Math.imul(ah1, bh5)) | 0;
28088 lo = (lo + Math.imul(al0, bl6)) | 0;
28089 mid = (mid + Math.imul(al0, bh6)) | 0;
28090 mid = (mid + Math.imul(ah0, bl6)) | 0;
28091 hi = (hi + Math.imul(ah0, bh6)) | 0;
28092 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28093 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28094 w6 &= 0x3ffffff;
28095 /* k = 7 */
28096 lo = Math.imul(al7, bl0);
28097 mid = Math.imul(al7, bh0);
28098 mid = (mid + Math.imul(ah7, bl0)) | 0;
28099 hi = Math.imul(ah7, bh0);
28100 lo = (lo + Math.imul(al6, bl1)) | 0;
28101 mid = (mid + Math.imul(al6, bh1)) | 0;
28102 mid = (mid + Math.imul(ah6, bl1)) | 0;
28103 hi = (hi + Math.imul(ah6, bh1)) | 0;
28104 lo = (lo + Math.imul(al5, bl2)) | 0;
28105 mid = (mid + Math.imul(al5, bh2)) | 0;
28106 mid = (mid + Math.imul(ah5, bl2)) | 0;
28107 hi = (hi + Math.imul(ah5, bh2)) | 0;
28108 lo = (lo + Math.imul(al4, bl3)) | 0;
28109 mid = (mid + Math.imul(al4, bh3)) | 0;
28110 mid = (mid + Math.imul(ah4, bl3)) | 0;
28111 hi = (hi + Math.imul(ah4, bh3)) | 0;
28112 lo = (lo + Math.imul(al3, bl4)) | 0;
28113 mid = (mid + Math.imul(al3, bh4)) | 0;
28114 mid = (mid + Math.imul(ah3, bl4)) | 0;
28115 hi = (hi + Math.imul(ah3, bh4)) | 0;
28116 lo = (lo + Math.imul(al2, bl5)) | 0;
28117 mid = (mid + Math.imul(al2, bh5)) | 0;
28118 mid = (mid + Math.imul(ah2, bl5)) | 0;
28119 hi = (hi + Math.imul(ah2, bh5)) | 0;
28120 lo = (lo + Math.imul(al1, bl6)) | 0;
28121 mid = (mid + Math.imul(al1, bh6)) | 0;
28122 mid = (mid + Math.imul(ah1, bl6)) | 0;
28123 hi = (hi + Math.imul(ah1, bh6)) | 0;
28124 lo = (lo + Math.imul(al0, bl7)) | 0;
28125 mid = (mid + Math.imul(al0, bh7)) | 0;
28126 mid = (mid + Math.imul(ah0, bl7)) | 0;
28127 hi = (hi + Math.imul(ah0, bh7)) | 0;
28128 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28129 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28130 w7 &= 0x3ffffff;
28131 /* k = 8 */
28132 lo = Math.imul(al8, bl0);
28133 mid = Math.imul(al8, bh0);
28134 mid = (mid + Math.imul(ah8, bl0)) | 0;
28135 hi = Math.imul(ah8, bh0);
28136 lo = (lo + Math.imul(al7, bl1)) | 0;
28137 mid = (mid + Math.imul(al7, bh1)) | 0;
28138 mid = (mid + Math.imul(ah7, bl1)) | 0;
28139 hi = (hi + Math.imul(ah7, bh1)) | 0;
28140 lo = (lo + Math.imul(al6, bl2)) | 0;
28141 mid = (mid + Math.imul(al6, bh2)) | 0;
28142 mid = (mid + Math.imul(ah6, bl2)) | 0;
28143 hi = (hi + Math.imul(ah6, bh2)) | 0;
28144 lo = (lo + Math.imul(al5, bl3)) | 0;
28145 mid = (mid + Math.imul(al5, bh3)) | 0;
28146 mid = (mid + Math.imul(ah5, bl3)) | 0;
28147 hi = (hi + Math.imul(ah5, bh3)) | 0;
28148 lo = (lo + Math.imul(al4, bl4)) | 0;
28149 mid = (mid + Math.imul(al4, bh4)) | 0;
28150 mid = (mid + Math.imul(ah4, bl4)) | 0;
28151 hi = (hi + Math.imul(ah4, bh4)) | 0;
28152 lo = (lo + Math.imul(al3, bl5)) | 0;
28153 mid = (mid + Math.imul(al3, bh5)) | 0;
28154 mid = (mid + Math.imul(ah3, bl5)) | 0;
28155 hi = (hi + Math.imul(ah3, bh5)) | 0;
28156 lo = (lo + Math.imul(al2, bl6)) | 0;
28157 mid = (mid + Math.imul(al2, bh6)) | 0;
28158 mid = (mid + Math.imul(ah2, bl6)) | 0;
28159 hi = (hi + Math.imul(ah2, bh6)) | 0;
28160 lo = (lo + Math.imul(al1, bl7)) | 0;
28161 mid = (mid + Math.imul(al1, bh7)) | 0;
28162 mid = (mid + Math.imul(ah1, bl7)) | 0;
28163 hi = (hi + Math.imul(ah1, bh7)) | 0;
28164 lo = (lo + Math.imul(al0, bl8)) | 0;
28165 mid = (mid + Math.imul(al0, bh8)) | 0;
28166 mid = (mid + Math.imul(ah0, bl8)) | 0;
28167 hi = (hi + Math.imul(ah0, bh8)) | 0;
28168 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28169 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28170 w8 &= 0x3ffffff;
28171 /* k = 9 */
28172 lo = Math.imul(al9, bl0);
28173 mid = Math.imul(al9, bh0);
28174 mid = (mid + Math.imul(ah9, bl0)) | 0;
28175 hi = Math.imul(ah9, bh0);
28176 lo = (lo + Math.imul(al8, bl1)) | 0;
28177 mid = (mid + Math.imul(al8, bh1)) | 0;
28178 mid = (mid + Math.imul(ah8, bl1)) | 0;
28179 hi = (hi + Math.imul(ah8, bh1)) | 0;
28180 lo = (lo + Math.imul(al7, bl2)) | 0;
28181 mid = (mid + Math.imul(al7, bh2)) | 0;
28182 mid = (mid + Math.imul(ah7, bl2)) | 0;
28183 hi = (hi + Math.imul(ah7, bh2)) | 0;
28184 lo = (lo + Math.imul(al6, bl3)) | 0;
28185 mid = (mid + Math.imul(al6, bh3)) | 0;
28186 mid = (mid + Math.imul(ah6, bl3)) | 0;
28187 hi = (hi + Math.imul(ah6, bh3)) | 0;
28188 lo = (lo + Math.imul(al5, bl4)) | 0;
28189 mid = (mid + Math.imul(al5, bh4)) | 0;
28190 mid = (mid + Math.imul(ah5, bl4)) | 0;
28191 hi = (hi + Math.imul(ah5, bh4)) | 0;
28192 lo = (lo + Math.imul(al4, bl5)) | 0;
28193 mid = (mid + Math.imul(al4, bh5)) | 0;
28194 mid = (mid + Math.imul(ah4, bl5)) | 0;
28195 hi = (hi + Math.imul(ah4, bh5)) | 0;
28196 lo = (lo + Math.imul(al3, bl6)) | 0;
28197 mid = (mid + Math.imul(al3, bh6)) | 0;
28198 mid = (mid + Math.imul(ah3, bl6)) | 0;
28199 hi = (hi + Math.imul(ah3, bh6)) | 0;
28200 lo = (lo + Math.imul(al2, bl7)) | 0;
28201 mid = (mid + Math.imul(al2, bh7)) | 0;
28202 mid = (mid + Math.imul(ah2, bl7)) | 0;
28203 hi = (hi + Math.imul(ah2, bh7)) | 0;
28204 lo = (lo + Math.imul(al1, bl8)) | 0;
28205 mid = (mid + Math.imul(al1, bh8)) | 0;
28206 mid = (mid + Math.imul(ah1, bl8)) | 0;
28207 hi = (hi + Math.imul(ah1, bh8)) | 0;
28208 lo = (lo + Math.imul(al0, bl9)) | 0;
28209 mid = (mid + Math.imul(al0, bh9)) | 0;
28210 mid = (mid + Math.imul(ah0, bl9)) | 0;
28211 hi = (hi + Math.imul(ah0, bh9)) | 0;
28212 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28213 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28214 w9 &= 0x3ffffff;
28215 /* k = 10 */
28216 lo = Math.imul(al9, bl1);
28217 mid = Math.imul(al9, bh1);
28218 mid = (mid + Math.imul(ah9, bl1)) | 0;
28219 hi = Math.imul(ah9, bh1);
28220 lo = (lo + Math.imul(al8, bl2)) | 0;
28221 mid = (mid + Math.imul(al8, bh2)) | 0;
28222 mid = (mid + Math.imul(ah8, bl2)) | 0;
28223 hi = (hi + Math.imul(ah8, bh2)) | 0;
28224 lo = (lo + Math.imul(al7, bl3)) | 0;
28225 mid = (mid + Math.imul(al7, bh3)) | 0;
28226 mid = (mid + Math.imul(ah7, bl3)) | 0;
28227 hi = (hi + Math.imul(ah7, bh3)) | 0;
28228 lo = (lo + Math.imul(al6, bl4)) | 0;
28229 mid = (mid + Math.imul(al6, bh4)) | 0;
28230 mid = (mid + Math.imul(ah6, bl4)) | 0;
28231 hi = (hi + Math.imul(ah6, bh4)) | 0;
28232 lo = (lo + Math.imul(al5, bl5)) | 0;
28233 mid = (mid + Math.imul(al5, bh5)) | 0;
28234 mid = (mid + Math.imul(ah5, bl5)) | 0;
28235 hi = (hi + Math.imul(ah5, bh5)) | 0;
28236 lo = (lo + Math.imul(al4, bl6)) | 0;
28237 mid = (mid + Math.imul(al4, bh6)) | 0;
28238 mid = (mid + Math.imul(ah4, bl6)) | 0;
28239 hi = (hi + Math.imul(ah4, bh6)) | 0;
28240 lo = (lo + Math.imul(al3, bl7)) | 0;
28241 mid = (mid + Math.imul(al3, bh7)) | 0;
28242 mid = (mid + Math.imul(ah3, bl7)) | 0;
28243 hi = (hi + Math.imul(ah3, bh7)) | 0;
28244 lo = (lo + Math.imul(al2, bl8)) | 0;
28245 mid = (mid + Math.imul(al2, bh8)) | 0;
28246 mid = (mid + Math.imul(ah2, bl8)) | 0;
28247 hi = (hi + Math.imul(ah2, bh8)) | 0;
28248 lo = (lo + Math.imul(al1, bl9)) | 0;
28249 mid = (mid + Math.imul(al1, bh9)) | 0;
28250 mid = (mid + Math.imul(ah1, bl9)) | 0;
28251 hi = (hi + Math.imul(ah1, bh9)) | 0;
28252 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28253 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28254 w10 &= 0x3ffffff;
28255 /* k = 11 */
28256 lo = Math.imul(al9, bl2);
28257 mid = Math.imul(al9, bh2);
28258 mid = (mid + Math.imul(ah9, bl2)) | 0;
28259 hi = Math.imul(ah9, bh2);
28260 lo = (lo + Math.imul(al8, bl3)) | 0;
28261 mid = (mid + Math.imul(al8, bh3)) | 0;
28262 mid = (mid + Math.imul(ah8, bl3)) | 0;
28263 hi = (hi + Math.imul(ah8, bh3)) | 0;
28264 lo = (lo + Math.imul(al7, bl4)) | 0;
28265 mid = (mid + Math.imul(al7, bh4)) | 0;
28266 mid = (mid + Math.imul(ah7, bl4)) | 0;
28267 hi = (hi + Math.imul(ah7, bh4)) | 0;
28268 lo = (lo + Math.imul(al6, bl5)) | 0;
28269 mid = (mid + Math.imul(al6, bh5)) | 0;
28270 mid = (mid + Math.imul(ah6, bl5)) | 0;
28271 hi = (hi + Math.imul(ah6, bh5)) | 0;
28272 lo = (lo + Math.imul(al5, bl6)) | 0;
28273 mid = (mid + Math.imul(al5, bh6)) | 0;
28274 mid = (mid + Math.imul(ah5, bl6)) | 0;
28275 hi = (hi + Math.imul(ah5, bh6)) | 0;
28276 lo = (lo + Math.imul(al4, bl7)) | 0;
28277 mid = (mid + Math.imul(al4, bh7)) | 0;
28278 mid = (mid + Math.imul(ah4, bl7)) | 0;
28279 hi = (hi + Math.imul(ah4, bh7)) | 0;
28280 lo = (lo + Math.imul(al3, bl8)) | 0;
28281 mid = (mid + Math.imul(al3, bh8)) | 0;
28282 mid = (mid + Math.imul(ah3, bl8)) | 0;
28283 hi = (hi + Math.imul(ah3, bh8)) | 0;
28284 lo = (lo + Math.imul(al2, bl9)) | 0;
28285 mid = (mid + Math.imul(al2, bh9)) | 0;
28286 mid = (mid + Math.imul(ah2, bl9)) | 0;
28287 hi = (hi + Math.imul(ah2, bh9)) | 0;
28288 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28289 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28290 w11 &= 0x3ffffff;
28291 /* k = 12 */
28292 lo = Math.imul(al9, bl3);
28293 mid = Math.imul(al9, bh3);
28294 mid = (mid + Math.imul(ah9, bl3)) | 0;
28295 hi = Math.imul(ah9, bh3);
28296 lo = (lo + Math.imul(al8, bl4)) | 0;
28297 mid = (mid + Math.imul(al8, bh4)) | 0;
28298 mid = (mid + Math.imul(ah8, bl4)) | 0;
28299 hi = (hi + Math.imul(ah8, bh4)) | 0;
28300 lo = (lo + Math.imul(al7, bl5)) | 0;
28301 mid = (mid + Math.imul(al7, bh5)) | 0;
28302 mid = (mid + Math.imul(ah7, bl5)) | 0;
28303 hi = (hi + Math.imul(ah7, bh5)) | 0;
28304 lo = (lo + Math.imul(al6, bl6)) | 0;
28305 mid = (mid + Math.imul(al6, bh6)) | 0;
28306 mid = (mid + Math.imul(ah6, bl6)) | 0;
28307 hi = (hi + Math.imul(ah6, bh6)) | 0;
28308 lo = (lo + Math.imul(al5, bl7)) | 0;
28309 mid = (mid + Math.imul(al5, bh7)) | 0;
28310 mid = (mid + Math.imul(ah5, bl7)) | 0;
28311 hi = (hi + Math.imul(ah5, bh7)) | 0;
28312 lo = (lo + Math.imul(al4, bl8)) | 0;
28313 mid = (mid + Math.imul(al4, bh8)) | 0;
28314 mid = (mid + Math.imul(ah4, bl8)) | 0;
28315 hi = (hi + Math.imul(ah4, bh8)) | 0;
28316 lo = (lo + Math.imul(al3, bl9)) | 0;
28317 mid = (mid + Math.imul(al3, bh9)) | 0;
28318 mid = (mid + Math.imul(ah3, bl9)) | 0;
28319 hi = (hi + Math.imul(ah3, bh9)) | 0;
28320 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28321 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28322 w12 &= 0x3ffffff;
28323 /* k = 13 */
28324 lo = Math.imul(al9, bl4);
28325 mid = Math.imul(al9, bh4);
28326 mid = (mid + Math.imul(ah9, bl4)) | 0;
28327 hi = Math.imul(ah9, bh4);
28328 lo = (lo + Math.imul(al8, bl5)) | 0;
28329 mid = (mid + Math.imul(al8, bh5)) | 0;
28330 mid = (mid + Math.imul(ah8, bl5)) | 0;
28331 hi = (hi + Math.imul(ah8, bh5)) | 0;
28332 lo = (lo + Math.imul(al7, bl6)) | 0;
28333 mid = (mid + Math.imul(al7, bh6)) | 0;
28334 mid = (mid + Math.imul(ah7, bl6)) | 0;
28335 hi = (hi + Math.imul(ah7, bh6)) | 0;
28336 lo = (lo + Math.imul(al6, bl7)) | 0;
28337 mid = (mid + Math.imul(al6, bh7)) | 0;
28338 mid = (mid + Math.imul(ah6, bl7)) | 0;
28339 hi = (hi + Math.imul(ah6, bh7)) | 0;
28340 lo = (lo + Math.imul(al5, bl8)) | 0;
28341 mid = (mid + Math.imul(al5, bh8)) | 0;
28342 mid = (mid + Math.imul(ah5, bl8)) | 0;
28343 hi = (hi + Math.imul(ah5, bh8)) | 0;
28344 lo = (lo + Math.imul(al4, bl9)) | 0;
28345 mid = (mid + Math.imul(al4, bh9)) | 0;
28346 mid = (mid + Math.imul(ah4, bl9)) | 0;
28347 hi = (hi + Math.imul(ah4, bh9)) | 0;
28348 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28349 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28350 w13 &= 0x3ffffff;
28351 /* k = 14 */
28352 lo = Math.imul(al9, bl5);
28353 mid = Math.imul(al9, bh5);
28354 mid = (mid + Math.imul(ah9, bl5)) | 0;
28355 hi = Math.imul(ah9, bh5);
28356 lo = (lo + Math.imul(al8, bl6)) | 0;
28357 mid = (mid + Math.imul(al8, bh6)) | 0;
28358 mid = (mid + Math.imul(ah8, bl6)) | 0;
28359 hi = (hi + Math.imul(ah8, bh6)) | 0;
28360 lo = (lo + Math.imul(al7, bl7)) | 0;
28361 mid = (mid + Math.imul(al7, bh7)) | 0;
28362 mid = (mid + Math.imul(ah7, bl7)) | 0;
28363 hi = (hi + Math.imul(ah7, bh7)) | 0;
28364 lo = (lo + Math.imul(al6, bl8)) | 0;
28365 mid = (mid + Math.imul(al6, bh8)) | 0;
28366 mid = (mid + Math.imul(ah6, bl8)) | 0;
28367 hi = (hi + Math.imul(ah6, bh8)) | 0;
28368 lo = (lo + Math.imul(al5, bl9)) | 0;
28369 mid = (mid + Math.imul(al5, bh9)) | 0;
28370 mid = (mid + Math.imul(ah5, bl9)) | 0;
28371 hi = (hi + Math.imul(ah5, bh9)) | 0;
28372 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28373 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28374 w14 &= 0x3ffffff;
28375 /* k = 15 */
28376 lo = Math.imul(al9, bl6);
28377 mid = Math.imul(al9, bh6);
28378 mid = (mid + Math.imul(ah9, bl6)) | 0;
28379 hi = Math.imul(ah9, bh6);
28380 lo = (lo + Math.imul(al8, bl7)) | 0;
28381 mid = (mid + Math.imul(al8, bh7)) | 0;
28382 mid = (mid + Math.imul(ah8, bl7)) | 0;
28383 hi = (hi + Math.imul(ah8, bh7)) | 0;
28384 lo = (lo + Math.imul(al7, bl8)) | 0;
28385 mid = (mid + Math.imul(al7, bh8)) | 0;
28386 mid = (mid + Math.imul(ah7, bl8)) | 0;
28387 hi = (hi + Math.imul(ah7, bh8)) | 0;
28388 lo = (lo + Math.imul(al6, bl9)) | 0;
28389 mid = (mid + Math.imul(al6, bh9)) | 0;
28390 mid = (mid + Math.imul(ah6, bl9)) | 0;
28391 hi = (hi + Math.imul(ah6, bh9)) | 0;
28392 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28393 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28394 w15 &= 0x3ffffff;
28395 /* k = 16 */
28396 lo = Math.imul(al9, bl7);
28397 mid = Math.imul(al9, bh7);
28398 mid = (mid + Math.imul(ah9, bl7)) | 0;
28399 hi = Math.imul(ah9, bh7);
28400 lo = (lo + Math.imul(al8, bl8)) | 0;
28401 mid = (mid + Math.imul(al8, bh8)) | 0;
28402 mid = (mid + Math.imul(ah8, bl8)) | 0;
28403 hi = (hi + Math.imul(ah8, bh8)) | 0;
28404 lo = (lo + Math.imul(al7, bl9)) | 0;
28405 mid = (mid + Math.imul(al7, bh9)) | 0;
28406 mid = (mid + Math.imul(ah7, bl9)) | 0;
28407 hi = (hi + Math.imul(ah7, bh9)) | 0;
28408 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28409 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28410 w16 &= 0x3ffffff;
28411 /* k = 17 */
28412 lo = Math.imul(al9, bl8);
28413 mid = Math.imul(al9, bh8);
28414 mid = (mid + Math.imul(ah9, bl8)) | 0;
28415 hi = Math.imul(ah9, bh8);
28416 lo = (lo + Math.imul(al8, bl9)) | 0;
28417 mid = (mid + Math.imul(al8, bh9)) | 0;
28418 mid = (mid + Math.imul(ah8, bl9)) | 0;
28419 hi = (hi + Math.imul(ah8, bh9)) | 0;
28420 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28421 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28422 w17 &= 0x3ffffff;
28423 /* k = 18 */
28424 lo = Math.imul(al9, bl9);
28425 mid = Math.imul(al9, bh9);
28426 mid = (mid + Math.imul(ah9, bl9)) | 0;
28427 hi = Math.imul(ah9, bh9);
28428 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28429 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28430 w18 &= 0x3ffffff;
28431 o[0] = w0;
28432 o[1] = w1;
28433 o[2] = w2;
28434 o[3] = w3;
28435 o[4] = w4;
28436 o[5] = w5;
28437 o[6] = w6;
28438 o[7] = w7;
28439 o[8] = w8;
28440 o[9] = w9;
28441 o[10] = w10;
28442 o[11] = w11;
28443 o[12] = w12;
28444 o[13] = w13;
28445 o[14] = w14;
28446 o[15] = w15;
28447 o[16] = w16;
28448 o[17] = w17;
28449 o[18] = w18;
28450 if (c !== 0) {
28451 o[19] = c;
28452 out.length++;
28453 }
28454 return out;
28455 };
28456
28457 // Polyfill comb
28458 if (!Math.imul) {
28459 comb10MulTo = smallMulTo;
28460 }
28461
28462 function bigMulTo (self, num, out) {
28463 out.negative = num.negative ^ self.negative;
28464 out.length = self.length + num.length;
28465
28466 var carry = 0;
28467 var hncarry = 0;
28468 for (var k = 0; k < out.length - 1; k++) {
28469 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28470 // note that ncarry could be >= 0x3ffffff
28471 var ncarry = hncarry;
28472 hncarry = 0;
28473 var rword = carry & 0x3ffffff;
28474 var maxJ = Math.min(k, num.length - 1);
28475 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28476 var i = k - j;
28477 var a = self.words[i] | 0;
28478 var b = num.words[j] | 0;
28479 var r = a * b;
28480
28481 var lo = r & 0x3ffffff;
28482 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28483 lo = (lo + rword) | 0;
28484 rword = lo & 0x3ffffff;
28485 ncarry = (ncarry + (lo >>> 26)) | 0;
28486
28487 hncarry += ncarry >>> 26;
28488 ncarry &= 0x3ffffff;
28489 }
28490 out.words[k] = rword;
28491 carry = ncarry;
28492 ncarry = hncarry;
28493 }
28494 if (carry !== 0) {
28495 out.words[k] = carry;
28496 } else {
28497 out.length--;
28498 }
28499
28500 return out.strip();
28501 }
28502
28503 function jumboMulTo (self, num, out) {
28504 var fftm = new FFTM();
28505 return fftm.mulp(self, num, out);
28506 }
28507
28508 BN.prototype.mulTo = function mulTo (num, out) {
28509 var res;
28510 var len = this.length + num.length;
28511 if (this.length === 10 && num.length === 10) {
28512 res = comb10MulTo(this, num, out);
28513 } else if (len < 63) {
28514 res = smallMulTo(this, num, out);
28515 } else if (len < 1024) {
28516 res = bigMulTo(this, num, out);
28517 } else {
28518 res = jumboMulTo(this, num, out);
28519 }
28520
28521 return res;
28522 };
28523
28524 // Cooley-Tukey algorithm for FFT
28525 // slightly revisited to rely on looping instead of recursion
28526
28527 function FFTM (x, y) {
28528 this.x = x;
28529 this.y = y;
28530 }
28531
28532 FFTM.prototype.makeRBT = function makeRBT (N) {
28533 var t = new Array(N);
28534 var l = BN.prototype._countBits(N) - 1;
28535 for (var i = 0; i < N; i++) {
28536 t[i] = this.revBin(i, l, N);
28537 }
28538
28539 return t;
28540 };
28541
28542 // Returns binary-reversed representation of `x`
28543 FFTM.prototype.revBin = function revBin (x, l, N) {
28544 if (x === 0 || x === N - 1) return x;
28545
28546 var rb = 0;
28547 for (var i = 0; i < l; i++) {
28548 rb |= (x & 1) << (l - i - 1);
28549 x >>= 1;
28550 }
28551
28552 return rb;
28553 };
28554
28555 // Performs "tweedling" phase, therefore 'emulating'
28556 // behaviour of the recursive algorithm
28557 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28558 for (var i = 0; i < N; i++) {
28559 rtws[i] = rws[rbt[i]];
28560 itws[i] = iws[rbt[i]];
28561 }
28562 };
28563
28564 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28565 this.permute(rbt, rws, iws, rtws, itws, N);
28566
28567 for (var s = 1; s < N; s <<= 1) {
28568 var l = s << 1;
28569
28570 var rtwdf = Math.cos(2 * Math.PI / l);
28571 var itwdf = Math.sin(2 * Math.PI / l);
28572
28573 for (var p = 0; p < N; p += l) {
28574 var rtwdf_ = rtwdf;
28575 var itwdf_ = itwdf;
28576
28577 for (var j = 0; j < s; j++) {
28578 var re = rtws[p + j];
28579 var ie = itws[p + j];
28580
28581 var ro = rtws[p + j + s];
28582 var io = itws[p + j + s];
28583
28584 var rx = rtwdf_ * ro - itwdf_ * io;
28585
28586 io = rtwdf_ * io + itwdf_ * ro;
28587 ro = rx;
28588
28589 rtws[p + j] = re + ro;
28590 itws[p + j] = ie + io;
28591
28592 rtws[p + j + s] = re - ro;
28593 itws[p + j + s] = ie - io;
28594
28595 /* jshint maxdepth : false */
28596 if (j !== l) {
28597 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28598
28599 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28600 rtwdf_ = rx;
28601 }
28602 }
28603 }
28604 }
28605 };
28606
28607 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28608 var N = Math.max(m, n) | 1;
28609 var odd = N & 1;
28610 var i = 0;
28611 for (N = N / 2 | 0; N; N = N >>> 1) {
28612 i++;
28613 }
28614
28615 return 1 << i + 1 + odd;
28616 };
28617
28618 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28619 if (N <= 1) return;
28620
28621 for (var i = 0; i < N / 2; i++) {
28622 var t = rws[i];
28623
28624 rws[i] = rws[N - i - 1];
28625 rws[N - i - 1] = t;
28626
28627 t = iws[i];
28628
28629 iws[i] = -iws[N - i - 1];
28630 iws[N - i - 1] = -t;
28631 }
28632 };
28633
28634 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28635 var carry = 0;
28636 for (var i = 0; i < N / 2; i++) {
28637 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28638 Math.round(ws[2 * i] / N) +
28639 carry;
28640
28641 ws[i] = w & 0x3ffffff;
28642
28643 if (w < 0x4000000) {
28644 carry = 0;
28645 } else {
28646 carry = w / 0x4000000 | 0;
28647 }
28648 }
28649
28650 return ws;
28651 };
28652
28653 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28654 var carry = 0;
28655 for (var i = 0; i < len; i++) {
28656 carry = carry + (ws[i] | 0);
28657
28658 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28659 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28660 }
28661
28662 // Pad with zeroes
28663 for (i = 2 * len; i < N; ++i) {
28664 rws[i] = 0;
28665 }
28666
28667 assert(carry === 0);
28668 assert((carry & ~0x1fff) === 0);
28669 };
28670
28671 FFTM.prototype.stub = function stub (N) {
28672 var ph = new Array(N);
28673 for (var i = 0; i < N; i++) {
28674 ph[i] = 0;
28675 }
28676
28677 return ph;
28678 };
28679
28680 FFTM.prototype.mulp = function mulp (x, y, out) {
28681 var N = 2 * this.guessLen13b(x.length, y.length);
28682
28683 var rbt = this.makeRBT(N);
28684
28685 var _ = this.stub(N);
28686
28687 var rws = new Array(N);
28688 var rwst = new Array(N);
28689 var iwst = new Array(N);
28690
28691 var nrws = new Array(N);
28692 var nrwst = new Array(N);
28693 var niwst = new Array(N);
28694
28695 var rmws = out.words;
28696 rmws.length = N;
28697
28698 this.convert13b(x.words, x.length, rws, N);
28699 this.convert13b(y.words, y.length, nrws, N);
28700
28701 this.transform(rws, _, rwst, iwst, N, rbt);
28702 this.transform(nrws, _, nrwst, niwst, N, rbt);
28703
28704 for (var i = 0; i < N; i++) {
28705 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28706 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28707 rwst[i] = rx;
28708 }
28709
28710 this.conjugate(rwst, iwst, N);
28711 this.transform(rwst, iwst, rmws, _, N, rbt);
28712 this.conjugate(rmws, _, N);
28713 this.normalize13b(rmws, N);
28714
28715 out.negative = x.negative ^ y.negative;
28716 out.length = x.length + y.length;
28717 return out.strip();
28718 };
28719
28720 // Multiply `this` by `num`
28721 BN.prototype.mul = function mul (num) {
28722 var out = new BN(null);
28723 out.words = new Array(this.length + num.length);
28724 return this.mulTo(num, out);
28725 };
28726
28727 // Multiply employing FFT
28728 BN.prototype.mulf = function mulf (num) {
28729 var out = new BN(null);
28730 out.words = new Array(this.length + num.length);
28731 return jumboMulTo(this, num, out);
28732 };
28733
28734 // In-place Multiplication
28735 BN.prototype.imul = function imul (num) {
28736 return this.clone().mulTo(num, this);
28737 };
28738
28739 BN.prototype.imuln = function imuln (num) {
28740 assert(typeof num === 'number');
28741 assert(num < 0x4000000);
28742
28743 // Carry
28744 var carry = 0;
28745 for (var i = 0; i < this.length; i++) {
28746 var w = (this.words[i] | 0) * num;
28747 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28748 carry >>= 26;
28749 carry += (w / 0x4000000) | 0;
28750 // NOTE: lo is 27bit maximum
28751 carry += lo >>> 26;
28752 this.words[i] = lo & 0x3ffffff;
28753 }
28754
28755 if (carry !== 0) {
28756 this.words[i] = carry;
28757 this.length++;
28758 }
28759
28760 return this;
28761 };
28762
28763 BN.prototype.muln = function muln (num) {
28764 return this.clone().imuln(num);
28765 };
28766
28767 // `this` * `this`
28768 BN.prototype.sqr = function sqr () {
28769 return this.mul(this);
28770 };
28771
28772 // `this` * `this` in-place
28773 BN.prototype.isqr = function isqr () {
28774 return this.imul(this.clone());
28775 };
28776
28777 // Math.pow(`this`, `num`)
28778 BN.prototype.pow = function pow (num) {
28779 var w = toBitArray(num);
28780 if (w.length === 0) return new BN(1);
28781
28782 // Skip leading zeroes
28783 var res = this;
28784 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28785 if (w[i] !== 0) break;
28786 }
28787
28788 if (++i < w.length) {
28789 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28790 if (w[i] === 0) continue;
28791
28792 res = res.mul(q);
28793 }
28794 }
28795
28796 return res;
28797 };
28798
28799 // Shift-left in-place
28800 BN.prototype.iushln = function iushln (bits) {
28801 assert(typeof bits === 'number' && bits >= 0);
28802 var r = bits % 26;
28803 var s = (bits - r) / 26;
28804 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28805 var i;
28806
28807 if (r !== 0) {
28808 var carry = 0;
28809
28810 for (i = 0; i < this.length; i++) {
28811 var newCarry = this.words[i] & carryMask;
28812 var c = ((this.words[i] | 0) - newCarry) << r;
28813 this.words[i] = c | carry;
28814 carry = newCarry >>> (26 - r);
28815 }
28816
28817 if (carry) {
28818 this.words[i] = carry;
28819 this.length++;
28820 }
28821 }
28822
28823 if (s !== 0) {
28824 for (i = this.length - 1; i >= 0; i--) {
28825 this.words[i + s] = this.words[i];
28826 }
28827
28828 for (i = 0; i < s; i++) {
28829 this.words[i] = 0;
28830 }
28831
28832 this.length += s;
28833 }
28834
28835 return this.strip();
28836 };
28837
28838 BN.prototype.ishln = function ishln (bits) {
28839 // TODO(indutny): implement me
28840 assert(this.negative === 0);
28841 return this.iushln(bits);
28842 };
28843
28844 // Shift-right in-place
28845 // NOTE: `hint` is a lowest bit before trailing zeroes
28846 // NOTE: if `extended` is present - it will be filled with destroyed bits
28847 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28848 assert(typeof bits === 'number' && bits >= 0);
28849 var h;
28850 if (hint) {
28851 h = (hint - (hint % 26)) / 26;
28852 } else {
28853 h = 0;
28854 }
28855
28856 var r = bits % 26;
28857 var s = Math.min((bits - r) / 26, this.length);
28858 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28859 var maskedWords = extended;
28860
28861 h -= s;
28862 h = Math.max(0, h);
28863
28864 // Extended mode, copy masked part
28865 if (maskedWords) {
28866 for (var i = 0; i < s; i++) {
28867 maskedWords.words[i] = this.words[i];
28868 }
28869 maskedWords.length = s;
28870 }
28871
28872 if (s === 0) {
28873 // No-op, we should not move anything at all
28874 } else if (this.length > s) {
28875 this.length -= s;
28876 for (i = 0; i < this.length; i++) {
28877 this.words[i] = this.words[i + s];
28878 }
28879 } else {
28880 this.words[0] = 0;
28881 this.length = 1;
28882 }
28883
28884 var carry = 0;
28885 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28886 var word = this.words[i] | 0;
28887 this.words[i] = (carry << (26 - r)) | (word >>> r);
28888 carry = word & mask;
28889 }
28890
28891 // Push carried bits as a mask
28892 if (maskedWords && carry !== 0) {
28893 maskedWords.words[maskedWords.length++] = carry;
28894 }
28895
28896 if (this.length === 0) {
28897 this.words[0] = 0;
28898 this.length = 1;
28899 }
28900
28901 return this.strip();
28902 };
28903
28904 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28905 // TODO(indutny): implement me
28906 assert(this.negative === 0);
28907 return this.iushrn(bits, hint, extended);
28908 };
28909
28910 // Shift-left
28911 BN.prototype.shln = function shln (bits) {
28912 return this.clone().ishln(bits);
28913 };
28914
28915 BN.prototype.ushln = function ushln (bits) {
28916 return this.clone().iushln(bits);
28917 };
28918
28919 // Shift-right
28920 BN.prototype.shrn = function shrn (bits) {
28921 return this.clone().ishrn(bits);
28922 };
28923
28924 BN.prototype.ushrn = function ushrn (bits) {
28925 return this.clone().iushrn(bits);
28926 };
28927
28928 // Test if n bit is set
28929 BN.prototype.testn = function testn (bit) {
28930 assert(typeof bit === 'number' && bit >= 0);
28931 var r = bit % 26;
28932 var s = (bit - r) / 26;
28933 var q = 1 << r;
28934
28935 // Fast case: bit is much higher than all existing words
28936 if (this.length <= s) return false;
28937
28938 // Check bit and return
28939 var w = this.words[s];
28940
28941 return !!(w & q);
28942 };
28943
28944 // Return only lowers bits of number (in-place)
28945 BN.prototype.imaskn = function imaskn (bits) {
28946 assert(typeof bits === 'number' && bits >= 0);
28947 var r = bits % 26;
28948 var s = (bits - r) / 26;
28949
28950 assert(this.negative === 0, 'imaskn works only with positive numbers');
28951
28952 if (this.length <= s) {
28953 return this;
28954 }
28955
28956 if (r !== 0) {
28957 s++;
28958 }
28959 this.length = Math.min(s, this.length);
28960
28961 if (r !== 0) {
28962 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28963 this.words[this.length - 1] &= mask;
28964 }
28965
28966 return this.strip();
28967 };
28968
28969 // Return only lowers bits of number
28970 BN.prototype.maskn = function maskn (bits) {
28971 return this.clone().imaskn(bits);
28972 };
28973
28974 // Add plain number `num` to `this`
28975 BN.prototype.iaddn = function iaddn (num) {
28976 assert(typeof num === 'number');
28977 assert(num < 0x4000000);
28978 if (num < 0) return this.isubn(-num);
28979
28980 // Possible sign change
28981 if (this.negative !== 0) {
28982 if (this.length === 1 && (this.words[0] | 0) < num) {
28983 this.words[0] = num - (this.words[0] | 0);
28984 this.negative = 0;
28985 return this;
28986 }
28987
28988 this.negative = 0;
28989 this.isubn(num);
28990 this.negative = 1;
28991 return this;
28992 }
28993
28994 // Add without checks
28995 return this._iaddn(num);
28996 };
28997
28998 BN.prototype._iaddn = function _iaddn (num) {
28999 this.words[0] += num;
29000
29001 // Carry
29002 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29003 this.words[i] -= 0x4000000;
29004 if (i === this.length - 1) {
29005 this.words[i + 1] = 1;
29006 } else {
29007 this.words[i + 1]++;
29008 }
29009 }
29010 this.length = Math.max(this.length, i + 1);
29011
29012 return this;
29013 };
29014
29015 // Subtract plain number `num` from `this`
29016 BN.prototype.isubn = function isubn (num) {
29017 assert(typeof num === 'number');
29018 assert(num < 0x4000000);
29019 if (num < 0) return this.iaddn(-num);
29020
29021 if (this.negative !== 0) {
29022 this.negative = 0;
29023 this.iaddn(num);
29024 this.negative = 1;
29025 return this;
29026 }
29027
29028 this.words[0] -= num;
29029
29030 if (this.length === 1 && this.words[0] < 0) {
29031 this.words[0] = -this.words[0];
29032 this.negative = 1;
29033 } else {
29034 // Carry
29035 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29036 this.words[i] += 0x4000000;
29037 this.words[i + 1] -= 1;
29038 }
29039 }
29040
29041 return this.strip();
29042 };
29043
29044 BN.prototype.addn = function addn (num) {
29045 return this.clone().iaddn(num);
29046 };
29047
29048 BN.prototype.subn = function subn (num) {
29049 return this.clone().isubn(num);
29050 };
29051
29052 BN.prototype.iabs = function iabs () {
29053 this.negative = 0;
29054
29055 return this;
29056 };
29057
29058 BN.prototype.abs = function abs () {
29059 return this.clone().iabs();
29060 };
29061
29062 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29063 var len = num.length + shift;
29064 var i;
29065
29066 this._expand(len);
29067
29068 var w;
29069 var carry = 0;
29070 for (i = 0; i < num.length; i++) {
29071 w = (this.words[i + shift] | 0) + carry;
29072 var right = (num.words[i] | 0) * mul;
29073 w -= right & 0x3ffffff;
29074 carry = (w >> 26) - ((right / 0x4000000) | 0);
29075 this.words[i + shift] = w & 0x3ffffff;
29076 }
29077 for (; i < this.length - shift; i++) {
29078 w = (this.words[i + shift] | 0) + carry;
29079 carry = w >> 26;
29080 this.words[i + shift] = w & 0x3ffffff;
29081 }
29082
29083 if (carry === 0) return this.strip();
29084
29085 // Subtraction overflow
29086 assert(carry === -1);
29087 carry = 0;
29088 for (i = 0; i < this.length; i++) {
29089 w = -(this.words[i] | 0) + carry;
29090 carry = w >> 26;
29091 this.words[i] = w & 0x3ffffff;
29092 }
29093 this.negative = 1;
29094
29095 return this.strip();
29096 };
29097
29098 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29099 var shift = this.length - num.length;
29100
29101 var a = this.clone();
29102 var b = num;
29103
29104 // Normalize
29105 var bhi = b.words[b.length - 1] | 0;
29106 var bhiBits = this._countBits(bhi);
29107 shift = 26 - bhiBits;
29108 if (shift !== 0) {
29109 b = b.ushln(shift);
29110 a.iushln(shift);
29111 bhi = b.words[b.length - 1] | 0;
29112 }
29113
29114 // Initialize quotient
29115 var m = a.length - b.length;
29116 var q;
29117
29118 if (mode !== 'mod') {
29119 q = new BN(null);
29120 q.length = m + 1;
29121 q.words = new Array(q.length);
29122 for (var i = 0; i < q.length; i++) {
29123 q.words[i] = 0;
29124 }
29125 }
29126
29127 var diff = a.clone()._ishlnsubmul(b, 1, m);
29128 if (diff.negative === 0) {
29129 a = diff;
29130 if (q) {
29131 q.words[m] = 1;
29132 }
29133 }
29134
29135 for (var j = m - 1; j >= 0; j--) {
29136 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29137 (a.words[b.length + j - 1] | 0);
29138
29139 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29140 // (0x7ffffff)
29141 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
29142
29143 a._ishlnsubmul(b, qj, j);
29144 while (a.negative !== 0) {
29145 qj--;
29146 a.negative = 0;
29147 a._ishlnsubmul(b, 1, j);
29148 if (!a.isZero()) {
29149 a.negative ^= 1;
29150 }
29151 }
29152 if (q) {
29153 q.words[j] = qj;
29154 }
29155 }
29156 if (q) {
29157 q.strip();
29158 }
29159 a.strip();
29160
29161 // Denormalize
29162 if (mode !== 'div' && shift !== 0) {
29163 a.iushrn(shift);
29164 }
29165
29166 return {
29167 div: q || null,
29168 mod: a
29169 };
29170 };
29171
29172 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29173 // to `div` to request div only, or be absent to
29174 // request both div & mod
29175 // 2) `positive` is true if unsigned mod is requested
29176 BN.prototype.divmod = function divmod (num, mode, positive) {
29177 assert(!num.isZero());
29178
29179 if (this.isZero()) {
29180 return {
29181 div: new BN(0),
29182 mod: new BN(0)
29183 };
29184 }
29185
29186 var div, mod, res;
29187 if (this.negative !== 0 && num.negative === 0) {
29188 res = this.neg().divmod(num, mode);
29189
29190 if (mode !== 'mod') {
29191 div = res.div.neg();
29192 }
29193
29194 if (mode !== 'div') {
29195 mod = res.mod.neg();
29196 if (positive && mod.negative !== 0) {
29197 mod.iadd(num);
29198 }
29199 }
29200
29201 return {
29202 div: div,
29203 mod: mod
29204 };
29205 }
29206
29207 if (this.negative === 0 && num.negative !== 0) {
29208 res = this.divmod(num.neg(), mode);
29209
29210 if (mode !== 'mod') {
29211 div = res.div.neg();
29212 }
29213
29214 return {
29215 div: div,
29216 mod: res.mod
29217 };
29218 }
29219
29220 if ((this.negative & num.negative) !== 0) {
29221 res = this.neg().divmod(num.neg(), mode);
29222
29223 if (mode !== 'div') {
29224 mod = res.mod.neg();
29225 if (positive && mod.negative !== 0) {
29226 mod.isub(num);
29227 }
29228 }
29229
29230 return {
29231 div: res.div,
29232 mod: mod
29233 };
29234 }
29235
29236 // Both numbers are positive at this point
29237
29238 // Strip both numbers to approximate shift value
29239 if (num.length > this.length || this.cmp(num) < 0) {
29240 return {
29241 div: new BN(0),
29242 mod: this
29243 };
29244 }
29245
29246 // Very short reduction
29247 if (num.length === 1) {
29248 if (mode === 'div') {
29249 return {
29250 div: this.divn(num.words[0]),
29251 mod: null
29252 };
29253 }
29254
29255 if (mode === 'mod') {
29256 return {
29257 div: null,
29258 mod: new BN(this.modn(num.words[0]))
29259 };
29260 }
29261
29262 return {
29263 div: this.divn(num.words[0]),
29264 mod: new BN(this.modn(num.words[0]))
29265 };
29266 }
29267
29268 return this._wordDiv(num, mode);
29269 };
29270
29271 // Find `this` / `num`
29272 BN.prototype.div = function div (num) {
29273 return this.divmod(num, 'div', false).div;
29274 };
29275
29276 // Find `this` % `num`
29277 BN.prototype.mod = function mod (num) {
29278 return this.divmod(num, 'mod', false).mod;
29279 };
29280
29281 BN.prototype.umod = function umod (num) {
29282 return this.divmod(num, 'mod', true).mod;
29283 };
29284
29285 // Find Round(`this` / `num`)
29286 BN.prototype.divRound = function divRound (num) {
29287 var dm = this.divmod(num);
29288
29289 // Fast case - exact division
29290 if (dm.mod.isZero()) return dm.div;
29291
29292 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
29293
29294 var half = num.ushrn(1);
29295 var r2 = num.andln(1);
29296 var cmp = mod.cmp(half);
29297
29298 // Round down
29299 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
29300
29301 // Round up
29302 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29303 };
29304
29305 BN.prototype.modn = function modn (num) {
29306 assert(num <= 0x3ffffff);
29307 var p = (1 << 26) % num;
29308
29309 var acc = 0;
29310 for (var i = this.length - 1; i >= 0; i--) {
29311 acc = (p * acc + (this.words[i] | 0)) % num;
29312 }
29313
29314 return acc;
29315 };
29316
29317 // In-place division by number
29318 BN.prototype.idivn = function idivn (num) {
29319 assert(num <= 0x3ffffff);
29320
29321 var carry = 0;
29322 for (var i = this.length - 1; i >= 0; i--) {
29323 var w = (this.words[i] | 0) + carry * 0x4000000;
29324 this.words[i] = (w / num) | 0;
29325 carry = w % num;
29326 }
29327
29328 return this.strip();
29329 };
29330
29331 BN.prototype.divn = function divn (num) {
29332 return this.clone().idivn(num);
29333 };
29334
29335 BN.prototype.egcd = function egcd (p) {
29336 assert(p.negative === 0);
29337 assert(!p.isZero());
29338
29339 var x = this;
29340 var y = p.clone();
29341
29342 if (x.negative !== 0) {
29343 x = x.umod(p);
29344 } else {
29345 x = x.clone();
29346 }
29347
29348 // A * x + B * y = x
29349 var A = new BN(1);
29350 var B = new BN(0);
29351
29352 // C * x + D * y = y
29353 var C = new BN(0);
29354 var D = new BN(1);
29355
29356 var g = 0;
29357
29358 while (x.isEven() && y.isEven()) {
29359 x.iushrn(1);
29360 y.iushrn(1);
29361 ++g;
29362 }
29363
29364 var yp = y.clone();
29365 var xp = x.clone();
29366
29367 while (!x.isZero()) {
29368 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29369 if (i > 0) {
29370 x.iushrn(i);
29371 while (i-- > 0) {
29372 if (A.isOdd() || B.isOdd()) {
29373 A.iadd(yp);
29374 B.isub(xp);
29375 }
29376
29377 A.iushrn(1);
29378 B.iushrn(1);
29379 }
29380 }
29381
29382 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29383 if (j > 0) {
29384 y.iushrn(j);
29385 while (j-- > 0) {
29386 if (C.isOdd() || D.isOdd()) {
29387 C.iadd(yp);
29388 D.isub(xp);
29389 }
29390
29391 C.iushrn(1);
29392 D.iushrn(1);
29393 }
29394 }
29395
29396 if (x.cmp(y) >= 0) {
29397 x.isub(y);
29398 A.isub(C);
29399 B.isub(D);
29400 } else {
29401 y.isub(x);
29402 C.isub(A);
29403 D.isub(B);
29404 }
29405 }
29406
29407 return {
29408 a: C,
29409 b: D,
29410 gcd: y.iushln(g)
29411 };
29412 };
29413
29414 // This is reduced incarnation of the binary EEA
29415 // above, designated to invert members of the
29416 // _prime_ fields F(p) at a maximal speed
29417 BN.prototype._invmp = function _invmp (p) {
29418 assert(p.negative === 0);
29419 assert(!p.isZero());
29420
29421 var a = this;
29422 var b = p.clone();
29423
29424 if (a.negative !== 0) {
29425 a = a.umod(p);
29426 } else {
29427 a = a.clone();
29428 }
29429
29430 var x1 = new BN(1);
29431 var x2 = new BN(0);
29432
29433 var delta = b.clone();
29434
29435 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29436 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29437 if (i > 0) {
29438 a.iushrn(i);
29439 while (i-- > 0) {
29440 if (x1.isOdd()) {
29441 x1.iadd(delta);
29442 }
29443
29444 x1.iushrn(1);
29445 }
29446 }
29447
29448 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29449 if (j > 0) {
29450 b.iushrn(j);
29451 while (j-- > 0) {
29452 if (x2.isOdd()) {
29453 x2.iadd(delta);
29454 }
29455
29456 x2.iushrn(1);
29457 }
29458 }
29459
29460 if (a.cmp(b) >= 0) {
29461 a.isub(b);
29462 x1.isub(x2);
29463 } else {
29464 b.isub(a);
29465 x2.isub(x1);
29466 }
29467 }
29468
29469 var res;
29470 if (a.cmpn(1) === 0) {
29471 res = x1;
29472 } else {
29473 res = x2;
29474 }
29475
29476 if (res.cmpn(0) < 0) {
29477 res.iadd(p);
29478 }
29479
29480 return res;
29481 };
29482
29483 BN.prototype.gcd = function gcd (num) {
29484 if (this.isZero()) return num.abs();
29485 if (num.isZero()) return this.abs();
29486
29487 var a = this.clone();
29488 var b = num.clone();
29489 a.negative = 0;
29490 b.negative = 0;
29491
29492 // Remove common factor of two
29493 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29494 a.iushrn(1);
29495 b.iushrn(1);
29496 }
29497
29498 do {
29499 while (a.isEven()) {
29500 a.iushrn(1);
29501 }
29502 while (b.isEven()) {
29503 b.iushrn(1);
29504 }
29505
29506 var r = a.cmp(b);
29507 if (r < 0) {
29508 // Swap `a` and `b` to make `a` always bigger than `b`
29509 var t = a;
29510 a = b;
29511 b = t;
29512 } else if (r === 0 || b.cmpn(1) === 0) {
29513 break;
29514 }
29515
29516 a.isub(b);
29517 } while (true);
29518
29519 return b.iushln(shift);
29520 };
29521
29522 // Invert number in the field F(num)
29523 BN.prototype.invm = function invm (num) {
29524 return this.egcd(num).a.umod(num);
29525 };
29526
29527 BN.prototype.isEven = function isEven () {
29528 return (this.words[0] & 1) === 0;
29529 };
29530
29531 BN.prototype.isOdd = function isOdd () {
29532 return (this.words[0] & 1) === 1;
29533 };
29534
29535 // And first word and num
29536 BN.prototype.andln = function andln (num) {
29537 return this.words[0] & num;
29538 };
29539
29540 // Increment at the bit position in-line
29541 BN.prototype.bincn = function bincn (bit) {
29542 assert(typeof bit === 'number');
29543 var r = bit % 26;
29544 var s = (bit - r) / 26;
29545 var q = 1 << r;
29546
29547 // Fast case: bit is much higher than all existing words
29548 if (this.length <= s) {
29549 this._expand(s + 1);
29550 this.words[s] |= q;
29551 return this;
29552 }
29553
29554 // Add bit and propagate, if needed
29555 var carry = q;
29556 for (var i = s; carry !== 0 && i < this.length; i++) {
29557 var w = this.words[i] | 0;
29558 w += carry;
29559 carry = w >>> 26;
29560 w &= 0x3ffffff;
29561 this.words[i] = w;
29562 }
29563 if (carry !== 0) {
29564 this.words[i] = carry;
29565 this.length++;
29566 }
29567 return this;
29568 };
29569
29570 BN.prototype.isZero = function isZero () {
29571 return this.length === 1 && this.words[0] === 0;
29572 };
29573
29574 BN.prototype.cmpn = function cmpn (num) {
29575 var negative = num < 0;
29576
29577 if (this.negative !== 0 && !negative) return -1;
29578 if (this.negative === 0 && negative) return 1;
29579
29580 this.strip();
29581
29582 var res;
29583 if (this.length > 1) {
29584 res = 1;
29585 } else {
29586 if (negative) {
29587 num = -num;
29588 }
29589
29590 assert(num <= 0x3ffffff, 'Number is too big');
29591
29592 var w = this.words[0] | 0;
29593 res = w === num ? 0 : w < num ? -1 : 1;
29594 }
29595 if (this.negative !== 0) return -res | 0;
29596 return res;
29597 };
29598
29599 // Compare two numbers and return:
29600 // 1 - if `this` > `num`
29601 // 0 - if `this` == `num`
29602 // -1 - if `this` < `num`
29603 BN.prototype.cmp = function cmp (num) {
29604 if (this.negative !== 0 && num.negative === 0) return -1;
29605 if (this.negative === 0 && num.negative !== 0) return 1;
29606
29607 var res = this.ucmp(num);
29608 if (this.negative !== 0) return -res | 0;
29609 return res;
29610 };
29611
29612 // Unsigned comparison
29613 BN.prototype.ucmp = function ucmp (num) {
29614 // At this point both numbers have the same sign
29615 if (this.length > num.length) return 1;
29616 if (this.length < num.length) return -1;
29617
29618 var res = 0;
29619 for (var i = this.length - 1; i >= 0; i--) {
29620 var a = this.words[i] | 0;
29621 var b = num.words[i] | 0;
29622
29623 if (a === b) continue;
29624 if (a < b) {
29625 res = -1;
29626 } else if (a > b) {
29627 res = 1;
29628 }
29629 break;
29630 }
29631 return res;
29632 };
29633
29634 BN.prototype.gtn = function gtn (num) {
29635 return this.cmpn(num) === 1;
29636 };
29637
29638 BN.prototype.gt = function gt (num) {
29639 return this.cmp(num) === 1;
29640 };
29641
29642 BN.prototype.gten = function gten (num) {
29643 return this.cmpn(num) >= 0;
29644 };
29645
29646 BN.prototype.gte = function gte (num) {
29647 return this.cmp(num) >= 0;
29648 };
29649
29650 BN.prototype.ltn = function ltn (num) {
29651 return this.cmpn(num) === -1;
29652 };
29653
29654 BN.prototype.lt = function lt (num) {
29655 return this.cmp(num) === -1;
29656 };
29657
29658 BN.prototype.lten = function lten (num) {
29659 return this.cmpn(num) <= 0;
29660 };
29661
29662 BN.prototype.lte = function lte (num) {
29663 return this.cmp(num) <= 0;
29664 };
29665
29666 BN.prototype.eqn = function eqn (num) {
29667 return this.cmpn(num) === 0;
29668 };
29669
29670 BN.prototype.eq = function eq (num) {
29671 return this.cmp(num) === 0;
29672 };
29673
29674 //
29675 // A reduce context, could be using montgomery or something better, depending
29676 // on the `m` itself.
29677 //
29678 BN.red = function red (num) {
29679 return new Red(num);
29680 };
29681
29682 BN.prototype.toRed = function toRed (ctx) {
29683 assert(!this.red, 'Already a number in reduction context');
29684 assert(this.negative === 0, 'red works only with positives');
29685 return ctx.convertTo(this)._forceRed(ctx);
29686 };
29687
29688 BN.prototype.fromRed = function fromRed () {
29689 assert(this.red, 'fromRed works only with numbers in reduction context');
29690 return this.red.convertFrom(this);
29691 };
29692
29693 BN.prototype._forceRed = function _forceRed (ctx) {
29694 this.red = ctx;
29695 return this;
29696 };
29697
29698 BN.prototype.forceRed = function forceRed (ctx) {
29699 assert(!this.red, 'Already a number in reduction context');
29700 return this._forceRed(ctx);
29701 };
29702
29703 BN.prototype.redAdd = function redAdd (num) {
29704 assert(this.red, 'redAdd works only with red numbers');
29705 return this.red.add(this, num);
29706 };
29707
29708 BN.prototype.redIAdd = function redIAdd (num) {
29709 assert(this.red, 'redIAdd works only with red numbers');
29710 return this.red.iadd(this, num);
29711 };
29712
29713 BN.prototype.redSub = function redSub (num) {
29714 assert(this.red, 'redSub works only with red numbers');
29715 return this.red.sub(this, num);
29716 };
29717
29718 BN.prototype.redISub = function redISub (num) {
29719 assert(this.red, 'redISub works only with red numbers');
29720 return this.red.isub(this, num);
29721 };
29722
29723 BN.prototype.redShl = function redShl (num) {
29724 assert(this.red, 'redShl works only with red numbers');
29725 return this.red.shl(this, num);
29726 };
29727
29728 BN.prototype.redMul = function redMul (num) {
29729 assert(this.red, 'redMul works only with red numbers');
29730 this.red._verify2(this, num);
29731 return this.red.mul(this, num);
29732 };
29733
29734 BN.prototype.redIMul = function redIMul (num) {
29735 assert(this.red, 'redMul works only with red numbers');
29736 this.red._verify2(this, num);
29737 return this.red.imul(this, num);
29738 };
29739
29740 BN.prototype.redSqr = function redSqr () {
29741 assert(this.red, 'redSqr works only with red numbers');
29742 this.red._verify1(this);
29743 return this.red.sqr(this);
29744 };
29745
29746 BN.prototype.redISqr = function redISqr () {
29747 assert(this.red, 'redISqr works only with red numbers');
29748 this.red._verify1(this);
29749 return this.red.isqr(this);
29750 };
29751
29752 // Square root over p
29753 BN.prototype.redSqrt = function redSqrt () {
29754 assert(this.red, 'redSqrt works only with red numbers');
29755 this.red._verify1(this);
29756 return this.red.sqrt(this);
29757 };
29758
29759 BN.prototype.redInvm = function redInvm () {
29760 assert(this.red, 'redInvm works only with red numbers');
29761 this.red._verify1(this);
29762 return this.red.invm(this);
29763 };
29764
29765 // Return negative clone of `this` % `red modulo`
29766 BN.prototype.redNeg = function redNeg () {
29767 assert(this.red, 'redNeg works only with red numbers');
29768 this.red._verify1(this);
29769 return this.red.neg(this);
29770 };
29771
29772 BN.prototype.redPow = function redPow (num) {
29773 assert(this.red && !num.red, 'redPow(normalNum)');
29774 this.red._verify1(this);
29775 return this.red.pow(this, num);
29776 };
29777
29778 // Prime numbers with efficient reduction
29779 var primes = {
29780 k256: null,
29781 p224: null,
29782 p192: null,
29783 p25519: null
29784 };
29785
29786 // Pseudo-Mersenne prime
29787 function MPrime (name, p) {
29788 // P = 2 ^ N - K
29789 this.name = name;
29790 this.p = new BN(p, 16);
29791 this.n = this.p.bitLength();
29792 this.k = new BN(1).iushln(this.n).isub(this.p);
29793
29794 this.tmp = this._tmp();
29795 }
29796
29797 MPrime.prototype._tmp = function _tmp () {
29798 var tmp = new BN(null);
29799 tmp.words = new Array(Math.ceil(this.n / 13));
29800 return tmp;
29801 };
29802
29803 MPrime.prototype.ireduce = function ireduce (num) {
29804 // Assumes that `num` is less than `P^2`
29805 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29806 var r = num;
29807 var rlen;
29808
29809 do {
29810 this.split(r, this.tmp);
29811 r = this.imulK(r);
29812 r = r.iadd(this.tmp);
29813 rlen = r.bitLength();
29814 } while (rlen > this.n);
29815
29816 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29817 if (cmp === 0) {
29818 r.words[0] = 0;
29819 r.length = 1;
29820 } else if (cmp > 0) {
29821 r.isub(this.p);
29822 } else {
29823 r.strip();
29824 }
29825
29826 return r;
29827 };
29828
29829 MPrime.prototype.split = function split (input, out) {
29830 input.iushrn(this.n, 0, out);
29831 };
29832
29833 MPrime.prototype.imulK = function imulK (num) {
29834 return num.imul(this.k);
29835 };
29836
29837 function K256 () {
29838 MPrime.call(
29839 this,
29840 'k256',
29841 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29842 }
29843 inherits(K256, MPrime);
29844
29845 K256.prototype.split = function split (input, output) {
29846 // 256 = 9 * 26 + 22
29847 var mask = 0x3fffff;
29848
29849 var outLen = Math.min(input.length, 9);
29850 for (var i = 0; i < outLen; i++) {
29851 output.words[i] = input.words[i];
29852 }
29853 output.length = outLen;
29854
29855 if (input.length <= 9) {
29856 input.words[0] = 0;
29857 input.length = 1;
29858 return;
29859 }
29860
29861 // Shift by 9 limbs
29862 var prev = input.words[9];
29863 output.words[output.length++] = prev & mask;
29864
29865 for (i = 10; i < input.length; i++) {
29866 var next = input.words[i] | 0;
29867 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29868 prev = next;
29869 }
29870 prev >>>= 22;
29871 input.words[i - 10] = prev;
29872 if (prev === 0 && input.length > 10) {
29873 input.length -= 10;
29874 } else {
29875 input.length -= 9;
29876 }
29877 };
29878
29879 K256.prototype.imulK = function imulK (num) {
29880 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29881 num.words[num.length] = 0;
29882 num.words[num.length + 1] = 0;
29883 num.length += 2;
29884
29885 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29886 var lo = 0;
29887 for (var i = 0; i < num.length; i++) {
29888 var w = num.words[i] | 0;
29889 lo += w * 0x3d1;
29890 num.words[i] = lo & 0x3ffffff;
29891 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29892 }
29893
29894 // Fast length reduction
29895 if (num.words[num.length - 1] === 0) {
29896 num.length--;
29897 if (num.words[num.length - 1] === 0) {
29898 num.length--;
29899 }
29900 }
29901 return num;
29902 };
29903
29904 function P224 () {
29905 MPrime.call(
29906 this,
29907 'p224',
29908 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29909 }
29910 inherits(P224, MPrime);
29911
29912 function P192 () {
29913 MPrime.call(
29914 this,
29915 'p192',
29916 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29917 }
29918 inherits(P192, MPrime);
29919
29920 function P25519 () {
29921 // 2 ^ 255 - 19
29922 MPrime.call(
29923 this,
29924 '25519',
29925 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29926 }
29927 inherits(P25519, MPrime);
29928
29929 P25519.prototype.imulK = function imulK (num) {
29930 // K = 0x13
29931 var carry = 0;
29932 for (var i = 0; i < num.length; i++) {
29933 var hi = (num.words[i] | 0) * 0x13 + carry;
29934 var lo = hi & 0x3ffffff;
29935 hi >>>= 26;
29936
29937 num.words[i] = lo;
29938 carry = hi;
29939 }
29940 if (carry !== 0) {
29941 num.words[num.length++] = carry;
29942 }
29943 return num;
29944 };
29945
29946 // Exported mostly for testing purposes, use plain name instead
29947 BN._prime = function prime (name) {
29948 // Cached version of prime
29949 if (primes[name]) return primes[name];
29950
29951 var prime;
29952 if (name === 'k256') {
29953 prime = new K256();
29954 } else if (name === 'p224') {
29955 prime = new P224();
29956 } else if (name === 'p192') {
29957 prime = new P192();
29958 } else if (name === 'p25519') {
29959 prime = new P25519();
29960 } else {
29961 throw new Error('Unknown prime ' + name);
29962 }
29963 primes[name] = prime;
29964
29965 return prime;
29966 };
29967
29968 //
29969 // Base reduction engine
29970 //
29971 function Red (m) {
29972 if (typeof m === 'string') {
29973 var prime = BN._prime(m);
29974 this.m = prime.p;
29975 this.prime = prime;
29976 } else {
29977 assert(m.gtn(1), 'modulus must be greater than 1');
29978 this.m = m;
29979 this.prime = null;
29980 }
29981 }
29982
29983 Red.prototype._verify1 = function _verify1 (a) {
29984 assert(a.negative === 0, 'red works only with positives');
29985 assert(a.red, 'red works only with red numbers');
29986 };
29987
29988 Red.prototype._verify2 = function _verify2 (a, b) {
29989 assert((a.negative | b.negative) === 0, 'red works only with positives');
29990 assert(a.red && a.red === b.red,
29991 'red works only with red numbers');
29992 };
29993
29994 Red.prototype.imod = function imod (a) {
29995 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
29996 return a.umod(this.m)._forceRed(this);
29997 };
29998
29999 Red.prototype.neg = function neg (a) {
30000 if (a.isZero()) {
30001 return a.clone();
30002 }
30003
30004 return this.m.sub(a)._forceRed(this);
30005 };
30006
30007 Red.prototype.add = function add (a, b) {
30008 this._verify2(a, b);
30009
30010 var res = a.add(b);
30011 if (res.cmp(this.m) >= 0) {
30012 res.isub(this.m);
30013 }
30014 return res._forceRed(this);
30015 };
30016
30017 Red.prototype.iadd = function iadd (a, b) {
30018 this._verify2(a, b);
30019
30020 var res = a.iadd(b);
30021 if (res.cmp(this.m) >= 0) {
30022 res.isub(this.m);
30023 }
30024 return res;
30025 };
30026
30027 Red.prototype.sub = function sub (a, b) {
30028 this._verify2(a, b);
30029
30030 var res = a.sub(b);
30031 if (res.cmpn(0) < 0) {
30032 res.iadd(this.m);
30033 }
30034 return res._forceRed(this);
30035 };
30036
30037 Red.prototype.isub = function isub (a, b) {
30038 this._verify2(a, b);
30039
30040 var res = a.isub(b);
30041 if (res.cmpn(0) < 0) {
30042 res.iadd(this.m);
30043 }
30044 return res;
30045 };
30046
30047 Red.prototype.shl = function shl (a, num) {
30048 this._verify1(a);
30049 return this.imod(a.ushln(num));
30050 };
30051
30052 Red.prototype.imul = function imul (a, b) {
30053 this._verify2(a, b);
30054 return this.imod(a.imul(b));
30055 };
30056
30057 Red.prototype.mul = function mul (a, b) {
30058 this._verify2(a, b);
30059 return this.imod(a.mul(b));
30060 };
30061
30062 Red.prototype.isqr = function isqr (a) {
30063 return this.imul(a, a.clone());
30064 };
30065
30066 Red.prototype.sqr = function sqr (a) {
30067 return this.mul(a, a);
30068 };
30069
30070 Red.prototype.sqrt = function sqrt (a) {
30071 if (a.isZero()) return a.clone();
30072
30073 var mod3 = this.m.andln(3);
30074 assert(mod3 % 2 === 1);
30075
30076 // Fast case
30077 if (mod3 === 3) {
30078 var pow = this.m.add(new BN(1)).iushrn(2);
30079 return this.pow(a, pow);
30080 }
30081
30082 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30083 //
30084 // Find Q and S, that Q * 2 ^ S = (P - 1)
30085 var q = this.m.subn(1);
30086 var s = 0;
30087 while (!q.isZero() && q.andln(1) === 0) {
30088 s++;
30089 q.iushrn(1);
30090 }
30091 assert(!q.isZero());
30092
30093 var one = new BN(1).toRed(this);
30094 var nOne = one.redNeg();
30095
30096 // Find quadratic non-residue
30097 // NOTE: Max is such because of generalized Riemann hypothesis.
30098 var lpow = this.m.subn(1).iushrn(1);
30099 var z = this.m.bitLength();
30100 z = new BN(2 * z * z).toRed(this);
30101
30102 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30103 z.redIAdd(nOne);
30104 }
30105
30106 var c = this.pow(z, q);
30107 var r = this.pow(a, q.addn(1).iushrn(1));
30108 var t = this.pow(a, q);
30109 var m = s;
30110 while (t.cmp(one) !== 0) {
30111 var tmp = t;
30112 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30113 tmp = tmp.redSqr();
30114 }
30115 assert(i < m);
30116 var b = this.pow(c, new BN(1).iushln(m - i - 1));
30117
30118 r = r.redMul(b);
30119 c = b.redSqr();
30120 t = t.redMul(c);
30121 m = i;
30122 }
30123
30124 return r;
30125 };
30126
30127 Red.prototype.invm = function invm (a) {
30128 var inv = a._invmp(this.m);
30129 if (inv.negative !== 0) {
30130 inv.negative = 0;
30131 return this.imod(inv).redNeg();
30132 } else {
30133 return this.imod(inv);
30134 }
30135 };
30136
30137 Red.prototype.pow = function pow (a, num) {
30138 if (num.isZero()) return new BN(1);
30139 if (num.cmpn(1) === 0) return a.clone();
30140
30141 var windowSize = 4;
30142 var wnd = new Array(1 << windowSize);
30143 wnd[0] = new BN(1).toRed(this);
30144 wnd[1] = a;
30145 for (var i = 2; i < wnd.length; i++) {
30146 wnd[i] = this.mul(wnd[i - 1], a);
30147 }
30148
30149 var res = wnd[0];
30150 var current = 0;
30151 var currentLen = 0;
30152 var start = num.bitLength() % 26;
30153 if (start === 0) {
30154 start = 26;
30155 }
30156
30157 for (i = num.length - 1; i >= 0; i--) {
30158 var word = num.words[i];
30159 for (var j = start - 1; j >= 0; j--) {
30160 var bit = (word >> j) & 1;
30161 if (res !== wnd[0]) {
30162 res = this.sqr(res);
30163 }
30164
30165 if (bit === 0 && current === 0) {
30166 currentLen = 0;
30167 continue;
30168 }
30169
30170 current <<= 1;
30171 current |= bit;
30172 currentLen++;
30173 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
30174
30175 res = this.mul(res, wnd[current]);
30176 currentLen = 0;
30177 current = 0;
30178 }
30179 start = 26;
30180 }
30181
30182 return res;
30183 };
30184
30185 Red.prototype.convertTo = function convertTo (num) {
30186 var r = num.umod(this.m);
30187
30188 return r === num ? r.clone() : r;
30189 };
30190
30191 Red.prototype.convertFrom = function convertFrom (num) {
30192 var res = num.clone();
30193 res.red = null;
30194 return res;
30195 };
30196
30197 //
30198 // Montgomery method engine
30199 //
30200
30201 BN.mont = function mont (num) {
30202 return new Mont(num);
30203 };
30204
30205 function Mont (m) {
30206 Red.call(this, m);
30207
30208 this.shift = this.m.bitLength();
30209 if (this.shift % 26 !== 0) {
30210 this.shift += 26 - (this.shift % 26);
30211 }
30212
30213 this.r = new BN(1).iushln(this.shift);
30214 this.r2 = this.imod(this.r.sqr());
30215 this.rinv = this.r._invmp(this.m);
30216
30217 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30218 this.minv = this.minv.umod(this.r);
30219 this.minv = this.r.sub(this.minv);
30220 }
30221 inherits(Mont, Red);
30222
30223 Mont.prototype.convertTo = function convertTo (num) {
30224 return this.imod(num.ushln(this.shift));
30225 };
30226
30227 Mont.prototype.convertFrom = function convertFrom (num) {
30228 var r = this.imod(num.mul(this.rinv));
30229 r.red = null;
30230 return r;
30231 };
30232
30233 Mont.prototype.imul = function imul (a, b) {
30234 if (a.isZero() || b.isZero()) {
30235 a.words[0] = 0;
30236 a.length = 1;
30237 return a;
30238 }
30239
30240 var t = a.imul(b);
30241 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30242 var u = t.isub(c).iushrn(this.shift);
30243 var res = u;
30244
30245 if (u.cmp(this.m) >= 0) {
30246 res = u.isub(this.m);
30247 } else if (u.cmpn(0) < 0) {
30248 res = u.iadd(this.m);
30249 }
30250
30251 return res._forceRed(this);
30252 };
30253
30254 Mont.prototype.mul = function mul (a, b) {
30255 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
30256
30257 var t = a.mul(b);
30258 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30259 var u = t.isub(c).iushrn(this.shift);
30260 var res = u;
30261 if (u.cmp(this.m) >= 0) {
30262 res = u.isub(this.m);
30263 } else if (u.cmpn(0) < 0) {
30264 res = u.iadd(this.m);
30265 }
30266
30267 return res._forceRed(this);
30268 };
30269
30270 Mont.prototype.invm = function invm (a) {
30271 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30272 var res = this.imod(a._invmp(this.m).mul(this.r2));
30273 return res._forceRed(this);
30274 };
30275 })(typeof module === 'undefined' || module, this);
30276
30277 },{}],34:[function(require,module,exports){
30278 var r;
30279
30280 module.exports = function rand(len) {
30281 if (!r)
30282 r = new Rand(null);
30283
30284 return r.generate(len);
30285 };
30286
30287 function Rand(rand) {
30288 this.rand = rand;
30289 }
30290 module.exports.Rand = Rand;
30291
30292 Rand.prototype.generate = function generate(len) {
30293 return this._rand(len);
30294 };
30295
30296 if (typeof self === 'object') {
30297 if (self.crypto && self.crypto.getRandomValues) {
30298 // Modern browsers
30299 Rand.prototype._rand = function _rand(n) {
30300 var arr = new Uint8Array(n);
30301 self.crypto.getRandomValues(arr);
30302 return arr;
30303 };
30304 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30305 // IE
30306 Rand.prototype._rand = function _rand(n) {
30307 var arr = new Uint8Array(n);
30308 self.msCrypto.getRandomValues(arr);
30309 return arr;
30310 };
30311 } else {
30312 // Old junk
30313 Rand.prototype._rand = function() {
30314 throw new Error('Not implemented yet');
30315 };
30316 }
30317 } else {
30318 // Node.js or Web worker with no crypto support
30319 try {
30320 var crypto = require('crypto');
30321
30322 Rand.prototype._rand = function _rand(n) {
30323 return crypto.randomBytes(n);
30324 };
30325 } catch (e) {
30326 // Emulate crypto API using randy
30327 Rand.prototype._rand = function _rand(n) {
30328 var res = new Uint8Array(n);
30329 for (var i = 0; i < res.length; i++)
30330 res[i] = this.rand.getByte();
30331 return res;
30332 };
30333 }
30334 }
30335
30336 },{"crypto":3}],35:[function(require,module,exports){
30337 (function (Buffer){
30338 var Transform = require('stream').Transform
30339 var inherits = require('inherits')
30340 var StringDecoder = require('string_decoder').StringDecoder
30341 module.exports = CipherBase
30342 inherits(CipherBase, Transform)
30343 function CipherBase (hashMode) {
30344 Transform.call(this)
30345 this.hashMode = typeof hashMode === 'string'
30346 if (this.hashMode) {
30347 this[hashMode] = this._finalOrDigest
30348 } else {
30349 this.final = this._finalOrDigest
30350 }
30351 this._decoder = null
30352 this._encoding = null
30353 }
30354 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30355 if (typeof data === 'string') {
30356 data = new Buffer(data, inputEnc)
30357 }
30358 var outData = this._update(data)
30359 if (this.hashMode) {
30360 return this
30361 }
30362 if (outputEnc) {
30363 outData = this._toString(outData, outputEnc)
30364 }
30365 return outData
30366 }
30367
30368 CipherBase.prototype.setAutoPadding = function () {}
30369
30370 CipherBase.prototype.getAuthTag = function () {
30371 throw new Error('trying to get auth tag in unsupported state')
30372 }
30373
30374 CipherBase.prototype.setAuthTag = function () {
30375 throw new Error('trying to set auth tag in unsupported state')
30376 }
30377
30378 CipherBase.prototype.setAAD = function () {
30379 throw new Error('trying to set aad in unsupported state')
30380 }
30381
30382 CipherBase.prototype._transform = function (data, _, next) {
30383 var err
30384 try {
30385 if (this.hashMode) {
30386 this._update(data)
30387 } else {
30388 this.push(this._update(data))
30389 }
30390 } catch (e) {
30391 err = e
30392 } finally {
30393 next(err)
30394 }
30395 }
30396 CipherBase.prototype._flush = function (done) {
30397 var err
30398 try {
30399 this.push(this._final())
30400 } catch (e) {
30401 err = e
30402 } finally {
30403 done(err)
30404 }
30405 }
30406 CipherBase.prototype._finalOrDigest = function (outputEnc) {
30407 var outData = this._final() || new Buffer('')
30408 if (outputEnc) {
30409 outData = this._toString(outData, outputEnc, true)
30410 }
30411 return outData
30412 }
30413
30414 CipherBase.prototype._toString = function (value, enc, fin) {
30415 if (!this._decoder) {
30416 this._decoder = new StringDecoder(enc)
30417 this._encoding = enc
30418 }
30419 if (this._encoding !== enc) {
30420 throw new Error('can\'t switch encodings')
30421 }
30422 var out = this._decoder.write(value)
30423 if (fin) {
30424 out += this._decoder.end()
30425 }
30426 return out
30427 }
30428
30429 }).call(this,require("buffer").Buffer)
30430 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30431 (function (Buffer){
30432 'use strict';
30433 var inherits = require('inherits')
30434 var md5 = require('./md5')
30435 var rmd160 = require('ripemd160')
30436 var sha = require('sha.js')
30437
30438 var Base = require('cipher-base')
30439
30440 function HashNoConstructor(hash) {
30441 Base.call(this, 'digest')
30442
30443 this._hash = hash
30444 this.buffers = []
30445 }
30446
30447 inherits(HashNoConstructor, Base)
30448
30449 HashNoConstructor.prototype._update = function (data) {
30450 this.buffers.push(data)
30451 }
30452
30453 HashNoConstructor.prototype._final = function () {
30454 var buf = Buffer.concat(this.buffers)
30455 var r = this._hash(buf)
30456 this.buffers = null
30457
30458 return r
30459 }
30460
30461 function Hash(hash) {
30462 Base.call(this, 'digest')
30463
30464 this._hash = hash
30465 }
30466
30467 inherits(Hash, Base)
30468
30469 Hash.prototype._update = function (data) {
30470 this._hash.update(data)
30471 }
30472
30473 Hash.prototype._final = function () {
30474 return this._hash.digest()
30475 }
30476
30477 module.exports = function createHash (alg) {
30478 alg = alg.toLowerCase()
30479 if ('md5' === alg) return new HashNoConstructor(md5)
30480 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30481
30482 return new Hash(sha(alg))
30483 }
30484
30485 }).call(this,require("buffer").Buffer)
30486 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30487 (function (Buffer){
30488 'use strict';
30489 var intSize = 4;
30490 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30491 var chrsz = 8;
30492
30493 function toArray(buf, bigEndian) {
30494 if ((buf.length % intSize) !== 0) {
30495 var len = buf.length + (intSize - (buf.length % intSize));
30496 buf = Buffer.concat([buf, zeroBuffer], len);
30497 }
30498
30499 var arr = [];
30500 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30501 for (var i = 0; i < buf.length; i += intSize) {
30502 arr.push(fn.call(buf, i));
30503 }
30504 return arr;
30505 }
30506
30507 function toBuffer(arr, size, bigEndian) {
30508 var buf = new Buffer(size);
30509 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30510 for (var i = 0; i < arr.length; i++) {
30511 fn.call(buf, arr[i], i * 4, true);
30512 }
30513 return buf;
30514 }
30515
30516 function hash(buf, fn, hashSize, bigEndian) {
30517 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30518 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30519 return toBuffer(arr, hashSize, bigEndian);
30520 }
30521 exports.hash = hash;
30522 }).call(this,require("buffer").Buffer)
30523 },{"buffer":5}],38:[function(require,module,exports){
30524 'use strict';
30525 /*
30526 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30527 * Digest Algorithm, as defined in RFC 1321.
30528 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30529 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30530 * Distributed under the BSD License
30531 * See http://pajhome.org.uk/crypt/md5 for more info.
30532 */
30533
30534 var helpers = require('./helpers');
30535
30536 /*
30537 * Calculate the MD5 of an array of little-endian words, and a bit length
30538 */
30539 function core_md5(x, len)
30540 {
30541 /* append padding */
30542 x[len >> 5] |= 0x80 << ((len) % 32);
30543 x[(((len + 64) >>> 9) << 4) + 14] = len;
30544
30545 var a = 1732584193;
30546 var b = -271733879;
30547 var c = -1732584194;
30548 var d = 271733878;
30549
30550 for(var i = 0; i < x.length; i += 16)
30551 {
30552 var olda = a;
30553 var oldb = b;
30554 var oldc = c;
30555 var oldd = d;
30556
30557 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30558 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30559 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30560 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30561 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30562 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30563 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30564 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30565 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30566 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30567 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30568 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30569 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30570 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30571 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30572 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
30573
30574 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30575 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30576 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30577 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30578 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30579 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30580 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30581 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30582 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30583 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30584 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30585 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30586 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30587 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30588 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30589 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
30590
30591 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30592 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30593 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30594 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30595 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30596 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30597 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30598 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30599 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30600 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30601 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30602 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30603 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30604 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30605 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30606 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
30607
30608 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30609 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30610 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30611 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30612 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30613 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30614 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30615 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30616 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30617 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30618 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30619 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30620 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30621 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30622 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30623 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
30624
30625 a = safe_add(a, olda);
30626 b = safe_add(b, oldb);
30627 c = safe_add(c, oldc);
30628 d = safe_add(d, oldd);
30629 }
30630 return Array(a, b, c, d);
30631
30632 }
30633
30634 /*
30635 * These functions implement the four basic operations the algorithm uses.
30636 */
30637 function md5_cmn(q, a, b, x, s, t)
30638 {
30639 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
30640 }
30641 function md5_ff(a, b, c, d, x, s, t)
30642 {
30643 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
30644 }
30645 function md5_gg(a, b, c, d, x, s, t)
30646 {
30647 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
30648 }
30649 function md5_hh(a, b, c, d, x, s, t)
30650 {
30651 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30652 }
30653 function md5_ii(a, b, c, d, x, s, t)
30654 {
30655 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
30656 }
30657
30658 /*
30659 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30660 * to work around bugs in some JS interpreters.
30661 */
30662 function safe_add(x, y)
30663 {
30664 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30665 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30666 return (msw << 16) | (lsw & 0xFFFF);
30667 }
30668
30669 /*
30670 * Bitwise rotate a 32-bit number to the left.
30671 */
30672 function bit_rol(num, cnt)
30673 {
30674 return (num << cnt) | (num >>> (32 - cnt));
30675 }
30676
30677 module.exports = function md5(buf) {
30678 return helpers.hash(buf, core_md5, 16);
30679 };
30680 },{"./helpers":37}],39:[function(require,module,exports){
30681 'use strict';
30682
30683 var elliptic = exports;
30684
30685 elliptic.version = require('../package.json').version;
30686 elliptic.utils = require('./elliptic/utils');
30687 elliptic.rand = require('brorand');
30688 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30689 elliptic.curve = require('./elliptic/curve');
30690 elliptic.curves = require('./elliptic/curves');
30691
30692 // Protocols
30693 elliptic.ec = require('./elliptic/ec');
30694 elliptic.eddsa = require('./elliptic/eddsa');
30695
30696 },{"../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){
30697 'use strict';
30698
30699 var BN = require('bn.js');
30700 var elliptic = require('../../elliptic');
30701 var utils = elliptic.utils;
30702 var getNAF = utils.getNAF;
30703 var getJSF = utils.getJSF;
30704 var assert = utils.assert;
30705
30706 function BaseCurve(type, conf) {
30707 this.type = type;
30708 this.p = new BN(conf.p, 16);
30709
30710 // Use Montgomery, when there is no fast reduction for the prime
30711 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30712
30713 // Useful for many curves
30714 this.zero = new BN(0).toRed(this.red);
30715 this.one = new BN(1).toRed(this.red);
30716 this.two = new BN(2).toRed(this.red);
30717
30718 // Curve configuration, optional
30719 this.n = conf.n && new BN(conf.n, 16);
30720 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30721
30722 // Temporary arrays
30723 this._wnafT1 = new Array(4);
30724 this._wnafT2 = new Array(4);
30725 this._wnafT3 = new Array(4);
30726 this._wnafT4 = new Array(4);
30727
30728 // Generalized Greg Maxwell's trick
30729 var adjustCount = this.n && this.p.div(this.n);
30730 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30731 this.redN = null;
30732 } else {
30733 this._maxwellTrick = true;
30734 this.redN = this.n.toRed(this.red);
30735 }
30736 }
30737 module.exports = BaseCurve;
30738
30739 BaseCurve.prototype.point = function point() {
30740 throw new Error('Not implemented');
30741 };
30742
30743 BaseCurve.prototype.validate = function validate() {
30744 throw new Error('Not implemented');
30745 };
30746
30747 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30748 assert(p.precomputed);
30749 var doubles = p._getDoubles();
30750
30751 var naf = getNAF(k, 1);
30752 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30753 I /= 3;
30754
30755 // Translate into more windowed form
30756 var repr = [];
30757 for (var j = 0; j < naf.length; j += doubles.step) {
30758 var nafW = 0;
30759 for (var k = j + doubles.step - 1; k >= j; k--)
30760 nafW = (nafW << 1) + naf[k];
30761 repr.push(nafW);
30762 }
30763
30764 var a = this.jpoint(null, null, null);
30765 var b = this.jpoint(null, null, null);
30766 for (var i = I; i > 0; i--) {
30767 for (var j = 0; j < repr.length; j++) {
30768 var nafW = repr[j];
30769 if (nafW === i)
30770 b = b.mixedAdd(doubles.points[j]);
30771 else if (nafW === -i)
30772 b = b.mixedAdd(doubles.points[j].neg());
30773 }
30774 a = a.add(b);
30775 }
30776 return a.toP();
30777 };
30778
30779 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30780 var w = 4;
30781
30782 // Precompute window
30783 var nafPoints = p._getNAFPoints(w);
30784 w = nafPoints.wnd;
30785 var wnd = nafPoints.points;
30786
30787 // Get NAF form
30788 var naf = getNAF(k, w);
30789
30790 // Add `this`*(N+1) for every w-NAF index
30791 var acc = this.jpoint(null, null, null);
30792 for (var i = naf.length - 1; i >= 0; i--) {
30793 // Count zeroes
30794 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30795 k++;
30796 if (i >= 0)
30797 k++;
30798 acc = acc.dblp(k);
30799
30800 if (i < 0)
30801 break;
30802 var z = naf[i];
30803 assert(z !== 0);
30804 if (p.type === 'affine') {
30805 // J +- P
30806 if (z > 0)
30807 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30808 else
30809 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30810 } else {
30811 // J +- J
30812 if (z > 0)
30813 acc = acc.add(wnd[(z - 1) >> 1]);
30814 else
30815 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30816 }
30817 }
30818 return p.type === 'affine' ? acc.toP() : acc;
30819 };
30820
30821 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30822 points,
30823 coeffs,
30824 len,
30825 jacobianResult) {
30826 var wndWidth = this._wnafT1;
30827 var wnd = this._wnafT2;
30828 var naf = this._wnafT3;
30829
30830 // Fill all arrays
30831 var max = 0;
30832 for (var i = 0; i < len; i++) {
30833 var p = points[i];
30834 var nafPoints = p._getNAFPoints(defW);
30835 wndWidth[i] = nafPoints.wnd;
30836 wnd[i] = nafPoints.points;
30837 }
30838
30839 // Comb small window NAFs
30840 for (var i = len - 1; i >= 1; i -= 2) {
30841 var a = i - 1;
30842 var b = i;
30843 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30844 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30845 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30846 max = Math.max(naf[a].length, max);
30847 max = Math.max(naf[b].length, max);
30848 continue;
30849 }
30850
30851 var comb = [
30852 points[a], /* 1 */
30853 null, /* 3 */
30854 null, /* 5 */
30855 points[b] /* 7 */
30856 ];
30857
30858 // Try to avoid Projective points, if possible
30859 if (points[a].y.cmp(points[b].y) === 0) {
30860 comb[1] = points[a].add(points[b]);
30861 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30862 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30863 comb[1] = points[a].toJ().mixedAdd(points[b]);
30864 comb[2] = points[a].add(points[b].neg());
30865 } else {
30866 comb[1] = points[a].toJ().mixedAdd(points[b]);
30867 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30868 }
30869
30870 var index = [
30871 -3, /* -1 -1 */
30872 -1, /* -1 0 */
30873 -5, /* -1 1 */
30874 -7, /* 0 -1 */
30875 0, /* 0 0 */
30876 7, /* 0 1 */
30877 5, /* 1 -1 */
30878 1, /* 1 0 */
30879 3 /* 1 1 */
30880 ];
30881
30882 var jsf = getJSF(coeffs[a], coeffs[b]);
30883 max = Math.max(jsf[0].length, max);
30884 naf[a] = new Array(max);
30885 naf[b] = new Array(max);
30886 for (var j = 0; j < max; j++) {
30887 var ja = jsf[0][j] | 0;
30888 var jb = jsf[1][j] | 0;
30889
30890 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30891 naf[b][j] = 0;
30892 wnd[a] = comb;
30893 }
30894 }
30895
30896 var acc = this.jpoint(null, null, null);
30897 var tmp = this._wnafT4;
30898 for (var i = max; i >= 0; i--) {
30899 var k = 0;
30900
30901 while (i >= 0) {
30902 var zero = true;
30903 for (var j = 0; j < len; j++) {
30904 tmp[j] = naf[j][i] | 0;
30905 if (tmp[j] !== 0)
30906 zero = false;
30907 }
30908 if (!zero)
30909 break;
30910 k++;
30911 i--;
30912 }
30913 if (i >= 0)
30914 k++;
30915 acc = acc.dblp(k);
30916 if (i < 0)
30917 break;
30918
30919 for (var j = 0; j < len; j++) {
30920 var z = tmp[j];
30921 var p;
30922 if (z === 0)
30923 continue;
30924 else if (z > 0)
30925 p = wnd[j][(z - 1) >> 1];
30926 else if (z < 0)
30927 p = wnd[j][(-z - 1) >> 1].neg();
30928
30929 if (p.type === 'affine')
30930 acc = acc.mixedAdd(p);
30931 else
30932 acc = acc.add(p);
30933 }
30934 }
30935 // Zeroify references
30936 for (var i = 0; i < len; i++)
30937 wnd[i] = null;
30938
30939 if (jacobianResult)
30940 return acc;
30941 else
30942 return acc.toP();
30943 };
30944
30945 function BasePoint(curve, type) {
30946 this.curve = curve;
30947 this.type = type;
30948 this.precomputed = null;
30949 }
30950 BaseCurve.BasePoint = BasePoint;
30951
30952 BasePoint.prototype.eq = function eq(/*other*/) {
30953 throw new Error('Not implemented');
30954 };
30955
30956 BasePoint.prototype.validate = function validate() {
30957 return this.curve.validate(this);
30958 };
30959
30960 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
30961 bytes = utils.toArray(bytes, enc);
30962
30963 var len = this.p.byteLength();
30964
30965 // uncompressed, hybrid-odd, hybrid-even
30966 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
30967 bytes.length - 1 === 2 * len) {
30968 if (bytes[0] === 0x06)
30969 assert(bytes[bytes.length - 1] % 2 === 0);
30970 else if (bytes[0] === 0x07)
30971 assert(bytes[bytes.length - 1] % 2 === 1);
30972
30973 var res = this.point(bytes.slice(1, 1 + len),
30974 bytes.slice(1 + len, 1 + 2 * len));
30975
30976 return res;
30977 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
30978 bytes.length - 1 === len) {
30979 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
30980 }
30981 throw new Error('Unknown point format');
30982 };
30983
30984 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
30985 return this.encode(enc, true);
30986 };
30987
30988 BasePoint.prototype._encode = function _encode(compact) {
30989 var len = this.curve.p.byteLength();
30990 var x = this.getX().toArray('be', len);
30991
30992 if (compact)
30993 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
30994
30995 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
30996 };
30997
30998 BasePoint.prototype.encode = function encode(enc, compact) {
30999 return utils.encode(this._encode(compact), enc);
31000 };
31001
31002 BasePoint.prototype.precompute = function precompute(power) {
31003 if (this.precomputed)
31004 return this;
31005
31006 var precomputed = {
31007 doubles: null,
31008 naf: null,
31009 beta: null
31010 };
31011 precomputed.naf = this._getNAFPoints(8);
31012 precomputed.doubles = this._getDoubles(4, power);
31013 precomputed.beta = this._getBeta();
31014 this.precomputed = precomputed;
31015
31016 return this;
31017 };
31018
31019 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31020 if (!this.precomputed)
31021 return false;
31022
31023 var doubles = this.precomputed.doubles;
31024 if (!doubles)
31025 return false;
31026
31027 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31028 };
31029
31030 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31031 if (this.precomputed && this.precomputed.doubles)
31032 return this.precomputed.doubles;
31033
31034 var doubles = [ this ];
31035 var acc = this;
31036 for (var i = 0; i < power; i += step) {
31037 for (var j = 0; j < step; j++)
31038 acc = acc.dbl();
31039 doubles.push(acc);
31040 }
31041 return {
31042 step: step,
31043 points: doubles
31044 };
31045 };
31046
31047 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31048 if (this.precomputed && this.precomputed.naf)
31049 return this.precomputed.naf;
31050
31051 var res = [ this ];
31052 var max = (1 << wnd) - 1;
31053 var dbl = max === 1 ? null : this.dbl();
31054 for (var i = 1; i < max; i++)
31055 res[i] = res[i - 1].add(dbl);
31056 return {
31057 wnd: wnd,
31058 points: res
31059 };
31060 };
31061
31062 BasePoint.prototype._getBeta = function _getBeta() {
31063 return null;
31064 };
31065
31066 BasePoint.prototype.dblp = function dblp(k) {
31067 var r = this;
31068 for (var i = 0; i < k; i++)
31069 r = r.dbl();
31070 return r;
31071 };
31072
31073 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31074 'use strict';
31075
31076 var curve = require('../curve');
31077 var elliptic = require('../../elliptic');
31078 var BN = require('bn.js');
31079 var inherits = require('inherits');
31080 var Base = curve.base;
31081
31082 var assert = elliptic.utils.assert;
31083
31084 function EdwardsCurve(conf) {
31085 // NOTE: Important as we are creating point in Base.call()
31086 this.twisted = (conf.a | 0) !== 1;
31087 this.mOneA = this.twisted && (conf.a | 0) === -1;
31088 this.extended = this.mOneA;
31089
31090 Base.call(this, 'edwards', conf);
31091
31092 this.a = new BN(conf.a, 16).umod(this.red.m);
31093 this.a = this.a.toRed(this.red);
31094 this.c = new BN(conf.c, 16).toRed(this.red);
31095 this.c2 = this.c.redSqr();
31096 this.d = new BN(conf.d, 16).toRed(this.red);
31097 this.dd = this.d.redAdd(this.d);
31098
31099 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31100 this.oneC = (conf.c | 0) === 1;
31101 }
31102 inherits(EdwardsCurve, Base);
31103 module.exports = EdwardsCurve;
31104
31105 EdwardsCurve.prototype._mulA = function _mulA(num) {
31106 if (this.mOneA)
31107 return num.redNeg();
31108 else
31109 return this.a.redMul(num);
31110 };
31111
31112 EdwardsCurve.prototype._mulC = function _mulC(num) {
31113 if (this.oneC)
31114 return num;
31115 else
31116 return this.c.redMul(num);
31117 };
31118
31119 // Just for compatibility with Short curve
31120 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31121 return this.point(x, y, z, t);
31122 };
31123
31124 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31125 x = new BN(x, 16);
31126 if (!x.red)
31127 x = x.toRed(this.red);
31128
31129 var x2 = x.redSqr();
31130 var rhs = this.c2.redSub(this.a.redMul(x2));
31131 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31132
31133 var y2 = rhs.redMul(lhs.redInvm());
31134 var y = y2.redSqrt();
31135 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31136 throw new Error('invalid point');
31137
31138 var isOdd = y.fromRed().isOdd();
31139 if (odd && !isOdd || !odd && isOdd)
31140 y = y.redNeg();
31141
31142 return this.point(x, y);
31143 };
31144
31145 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31146 y = new BN(y, 16);
31147 if (!y.red)
31148 y = y.toRed(this.red);
31149
31150 // x^2 = (y^2 - 1) / (d y^2 + 1)
31151 var y2 = y.redSqr();
31152 var lhs = y2.redSub(this.one);
31153 var rhs = y2.redMul(this.d).redAdd(this.one);
31154 var x2 = lhs.redMul(rhs.redInvm());
31155
31156 if (x2.cmp(this.zero) === 0) {
31157 if (odd)
31158 throw new Error('invalid point');
31159 else
31160 return this.point(this.zero, y);
31161 }
31162
31163 var x = x2.redSqrt();
31164 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31165 throw new Error('invalid point');
31166
31167 if (x.isOdd() !== odd)
31168 x = x.redNeg();
31169
31170 return this.point(x, y);
31171 };
31172
31173 EdwardsCurve.prototype.validate = function validate(point) {
31174 if (point.isInfinity())
31175 return true;
31176
31177 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31178 point.normalize();
31179
31180 var x2 = point.x.redSqr();
31181 var y2 = point.y.redSqr();
31182 var lhs = x2.redMul(this.a).redAdd(y2);
31183 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
31184
31185 return lhs.cmp(rhs) === 0;
31186 };
31187
31188 function Point(curve, x, y, z, t) {
31189 Base.BasePoint.call(this, curve, 'projective');
31190 if (x === null && y === null && z === null) {
31191 this.x = this.curve.zero;
31192 this.y = this.curve.one;
31193 this.z = this.curve.one;
31194 this.t = this.curve.zero;
31195 this.zOne = true;
31196 } else {
31197 this.x = new BN(x, 16);
31198 this.y = new BN(y, 16);
31199 this.z = z ? new BN(z, 16) : this.curve.one;
31200 this.t = t && new BN(t, 16);
31201 if (!this.x.red)
31202 this.x = this.x.toRed(this.curve.red);
31203 if (!this.y.red)
31204 this.y = this.y.toRed(this.curve.red);
31205 if (!this.z.red)
31206 this.z = this.z.toRed(this.curve.red);
31207 if (this.t && !this.t.red)
31208 this.t = this.t.toRed(this.curve.red);
31209 this.zOne = this.z === this.curve.one;
31210
31211 // Use extended coordinates
31212 if (this.curve.extended && !this.t) {
31213 this.t = this.x.redMul(this.y);
31214 if (!this.zOne)
31215 this.t = this.t.redMul(this.z.redInvm());
31216 }
31217 }
31218 }
31219 inherits(Point, Base.BasePoint);
31220
31221 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31222 return Point.fromJSON(this, obj);
31223 };
31224
31225 EdwardsCurve.prototype.point = function point(x, y, z, t) {
31226 return new Point(this, x, y, z, t);
31227 };
31228
31229 Point.fromJSON = function fromJSON(curve, obj) {
31230 return new Point(curve, obj[0], obj[1], obj[2]);
31231 };
31232
31233 Point.prototype.inspect = function inspect() {
31234 if (this.isInfinity())
31235 return '<EC Point Infinity>';
31236 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31237 ' y: ' + this.y.fromRed().toString(16, 2) +
31238 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31239 };
31240
31241 Point.prototype.isInfinity = function isInfinity() {
31242 // XXX This code assumes that zero is always zero in red
31243 return this.x.cmpn(0) === 0 &&
31244 this.y.cmp(this.z) === 0;
31245 };
31246
31247 Point.prototype._extDbl = function _extDbl() {
31248 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31249 // #doubling-dbl-2008-hwcd
31250 // 4M + 4S
31251
31252 // A = X1^2
31253 var a = this.x.redSqr();
31254 // B = Y1^2
31255 var b = this.y.redSqr();
31256 // C = 2 * Z1^2
31257 var c = this.z.redSqr();
31258 c = c.redIAdd(c);
31259 // D = a * A
31260 var d = this.curve._mulA(a);
31261 // E = (X1 + Y1)^2 - A - B
31262 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31263 // G = D + B
31264 var g = d.redAdd(b);
31265 // F = G - C
31266 var f = g.redSub(c);
31267 // H = D - B
31268 var h = d.redSub(b);
31269 // X3 = E * F
31270 var nx = e.redMul(f);
31271 // Y3 = G * H
31272 var ny = g.redMul(h);
31273 // T3 = E * H
31274 var nt = e.redMul(h);
31275 // Z3 = F * G
31276 var nz = f.redMul(g);
31277 return this.curve.point(nx, ny, nz, nt);
31278 };
31279
31280 Point.prototype._projDbl = function _projDbl() {
31281 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31282 // #doubling-dbl-2008-bbjlp
31283 // #doubling-dbl-2007-bl
31284 // and others
31285 // Generally 3M + 4S or 2M + 4S
31286
31287 // B = (X1 + Y1)^2
31288 var b = this.x.redAdd(this.y).redSqr();
31289 // C = X1^2
31290 var c = this.x.redSqr();
31291 // D = Y1^2
31292 var d = this.y.redSqr();
31293
31294 var nx;
31295 var ny;
31296 var nz;
31297 if (this.curve.twisted) {
31298 // E = a * C
31299 var e = this.curve._mulA(c);
31300 // F = E + D
31301 var f = e.redAdd(d);
31302 if (this.zOne) {
31303 // X3 = (B - C - D) * (F - 2)
31304 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31305 // Y3 = F * (E - D)
31306 ny = f.redMul(e.redSub(d));
31307 // Z3 = F^2 - 2 * F
31308 nz = f.redSqr().redSub(f).redSub(f);
31309 } else {
31310 // H = Z1^2
31311 var h = this.z.redSqr();
31312 // J = F - 2 * H
31313 var j = f.redSub(h).redISub(h);
31314 // X3 = (B-C-D)*J
31315 nx = b.redSub(c).redISub(d).redMul(j);
31316 // Y3 = F * (E - D)
31317 ny = f.redMul(e.redSub(d));
31318 // Z3 = F * J
31319 nz = f.redMul(j);
31320 }
31321 } else {
31322 // E = C + D
31323 var e = c.redAdd(d);
31324 // H = (c * Z1)^2
31325 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31326 // J = E - 2 * H
31327 var j = e.redSub(h).redSub(h);
31328 // X3 = c * (B - E) * J
31329 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31330 // Y3 = c * E * (C - D)
31331 ny = this.curve._mulC(e).redMul(c.redISub(d));
31332 // Z3 = E * J
31333 nz = e.redMul(j);
31334 }
31335 return this.curve.point(nx, ny, nz);
31336 };
31337
31338 Point.prototype.dbl = function dbl() {
31339 if (this.isInfinity())
31340 return this;
31341
31342 // Double in extended coordinates
31343 if (this.curve.extended)
31344 return this._extDbl();
31345 else
31346 return this._projDbl();
31347 };
31348
31349 Point.prototype._extAdd = function _extAdd(p) {
31350 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31351 // #addition-add-2008-hwcd-3
31352 // 8M
31353
31354 // A = (Y1 - X1) * (Y2 - X2)
31355 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31356 // B = (Y1 + X1) * (Y2 + X2)
31357 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31358 // C = T1 * k * T2
31359 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31360 // D = Z1 * 2 * Z2
31361 var d = this.z.redMul(p.z.redAdd(p.z));
31362 // E = B - A
31363 var e = b.redSub(a);
31364 // F = D - C
31365 var f = d.redSub(c);
31366 // G = D + C
31367 var g = d.redAdd(c);
31368 // H = B + A
31369 var h = b.redAdd(a);
31370 // X3 = E * F
31371 var nx = e.redMul(f);
31372 // Y3 = G * H
31373 var ny = g.redMul(h);
31374 // T3 = E * H
31375 var nt = e.redMul(h);
31376 // Z3 = F * G
31377 var nz = f.redMul(g);
31378 return this.curve.point(nx, ny, nz, nt);
31379 };
31380
31381 Point.prototype._projAdd = function _projAdd(p) {
31382 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31383 // #addition-add-2008-bbjlp
31384 // #addition-add-2007-bl
31385 // 10M + 1S
31386
31387 // A = Z1 * Z2
31388 var a = this.z.redMul(p.z);
31389 // B = A^2
31390 var b = a.redSqr();
31391 // C = X1 * X2
31392 var c = this.x.redMul(p.x);
31393 // D = Y1 * Y2
31394 var d = this.y.redMul(p.y);
31395 // E = d * C * D
31396 var e = this.curve.d.redMul(c).redMul(d);
31397 // F = B - E
31398 var f = b.redSub(e);
31399 // G = B + E
31400 var g = b.redAdd(e);
31401 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31402 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31403 var nx = a.redMul(f).redMul(tmp);
31404 var ny;
31405 var nz;
31406 if (this.curve.twisted) {
31407 // Y3 = A * G * (D - a * C)
31408 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31409 // Z3 = F * G
31410 nz = f.redMul(g);
31411 } else {
31412 // Y3 = A * G * (D - C)
31413 ny = a.redMul(g).redMul(d.redSub(c));
31414 // Z3 = c * F * G
31415 nz = this.curve._mulC(f).redMul(g);
31416 }
31417 return this.curve.point(nx, ny, nz);
31418 };
31419
31420 Point.prototype.add = function add(p) {
31421 if (this.isInfinity())
31422 return p;
31423 if (p.isInfinity())
31424 return this;
31425
31426 if (this.curve.extended)
31427 return this._extAdd(p);
31428 else
31429 return this._projAdd(p);
31430 };
31431
31432 Point.prototype.mul = function mul(k) {
31433 if (this._hasDoubles(k))
31434 return this.curve._fixedNafMul(this, k);
31435 else
31436 return this.curve._wnafMul(this, k);
31437 };
31438
31439 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31440 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31441 };
31442
31443 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31444 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31445 };
31446
31447 Point.prototype.normalize = function normalize() {
31448 if (this.zOne)
31449 return this;
31450
31451 // Normalize coordinates
31452 var zi = this.z.redInvm();
31453 this.x = this.x.redMul(zi);
31454 this.y = this.y.redMul(zi);
31455 if (this.t)
31456 this.t = this.t.redMul(zi);
31457 this.z = this.curve.one;
31458 this.zOne = true;
31459 return this;
31460 };
31461
31462 Point.prototype.neg = function neg() {
31463 return this.curve.point(this.x.redNeg(),
31464 this.y,
31465 this.z,
31466 this.t && this.t.redNeg());
31467 };
31468
31469 Point.prototype.getX = function getX() {
31470 this.normalize();
31471 return this.x.fromRed();
31472 };
31473
31474 Point.prototype.getY = function getY() {
31475 this.normalize();
31476 return this.y.fromRed();
31477 };
31478
31479 Point.prototype.eq = function eq(other) {
31480 return this === other ||
31481 this.getX().cmp(other.getX()) === 0 &&
31482 this.getY().cmp(other.getY()) === 0;
31483 };
31484
31485 Point.prototype.eqXToP = function eqXToP(x) {
31486 var rx = x.toRed(this.curve.red).redMul(this.z);
31487 if (this.x.cmp(rx) === 0)
31488 return true;
31489
31490 var xc = x.clone();
31491 var t = this.curve.redN.redMul(this.z);
31492 for (;;) {
31493 xc.iadd(this.curve.n);
31494 if (xc.cmp(this.curve.p) >= 0)
31495 return false;
31496
31497 rx.redIAdd(t);
31498 if (this.x.cmp(rx) === 0)
31499 return true;
31500 }
31501 return false;
31502 };
31503
31504 // Compatibility with BaseCurve
31505 Point.prototype.toP = Point.prototype.normalize;
31506 Point.prototype.mixedAdd = Point.prototype.add;
31507
31508 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31509 'use strict';
31510
31511 var curve = exports;
31512
31513 curve.base = require('./base');
31514 curve.short = require('./short');
31515 curve.mont = require('./mont');
31516 curve.edwards = require('./edwards');
31517
31518 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31519 'use strict';
31520
31521 var curve = require('../curve');
31522 var BN = require('bn.js');
31523 var inherits = require('inherits');
31524 var Base = curve.base;
31525
31526 var elliptic = require('../../elliptic');
31527 var utils = elliptic.utils;
31528
31529 function MontCurve(conf) {
31530 Base.call(this, 'mont', conf);
31531
31532 this.a = new BN(conf.a, 16).toRed(this.red);
31533 this.b = new BN(conf.b, 16).toRed(this.red);
31534 this.i4 = new BN(4).toRed(this.red).redInvm();
31535 this.two = new BN(2).toRed(this.red);
31536 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
31537 }
31538 inherits(MontCurve, Base);
31539 module.exports = MontCurve;
31540
31541 MontCurve.prototype.validate = function validate(point) {
31542 var x = point.normalize().x;
31543 var x2 = x.redSqr();
31544 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31545 var y = rhs.redSqrt();
31546
31547 return y.redSqr().cmp(rhs) === 0;
31548 };
31549
31550 function Point(curve, x, z) {
31551 Base.BasePoint.call(this, curve, 'projective');
31552 if (x === null && z === null) {
31553 this.x = this.curve.one;
31554 this.z = this.curve.zero;
31555 } else {
31556 this.x = new BN(x, 16);
31557 this.z = new BN(z, 16);
31558 if (!this.x.red)
31559 this.x = this.x.toRed(this.curve.red);
31560 if (!this.z.red)
31561 this.z = this.z.toRed(this.curve.red);
31562 }
31563 }
31564 inherits(Point, Base.BasePoint);
31565
31566 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31567 return this.point(utils.toArray(bytes, enc), 1);
31568 };
31569
31570 MontCurve.prototype.point = function point(x, z) {
31571 return new Point(this, x, z);
31572 };
31573
31574 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31575 return Point.fromJSON(this, obj);
31576 };
31577
31578 Point.prototype.precompute = function precompute() {
31579 // No-op
31580 };
31581
31582 Point.prototype._encode = function _encode() {
31583 return this.getX().toArray('be', this.curve.p.byteLength());
31584 };
31585
31586 Point.fromJSON = function fromJSON(curve, obj) {
31587 return new Point(curve, obj[0], obj[1] || curve.one);
31588 };
31589
31590 Point.prototype.inspect = function inspect() {
31591 if (this.isInfinity())
31592 return '<EC Point Infinity>';
31593 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31594 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31595 };
31596
31597 Point.prototype.isInfinity = function isInfinity() {
31598 // XXX This code assumes that zero is always zero in red
31599 return this.z.cmpn(0) === 0;
31600 };
31601
31602 Point.prototype.dbl = function dbl() {
31603 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31604 // 2M + 2S + 4A
31605
31606 // A = X1 + Z1
31607 var a = this.x.redAdd(this.z);
31608 // AA = A^2
31609 var aa = a.redSqr();
31610 // B = X1 - Z1
31611 var b = this.x.redSub(this.z);
31612 // BB = B^2
31613 var bb = b.redSqr();
31614 // C = AA - BB
31615 var c = aa.redSub(bb);
31616 // X3 = AA * BB
31617 var nx = aa.redMul(bb);
31618 // Z3 = C * (BB + A24 * C)
31619 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31620 return this.curve.point(nx, nz);
31621 };
31622
31623 Point.prototype.add = function add() {
31624 throw new Error('Not supported on Montgomery curve');
31625 };
31626
31627 Point.prototype.diffAdd = function diffAdd(p, diff) {
31628 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31629 // 4M + 2S + 6A
31630
31631 // A = X2 + Z2
31632 var a = this.x.redAdd(this.z);
31633 // B = X2 - Z2
31634 var b = this.x.redSub(this.z);
31635 // C = X3 + Z3
31636 var c = p.x.redAdd(p.z);
31637 // D = X3 - Z3
31638 var d = p.x.redSub(p.z);
31639 // DA = D * A
31640 var da = d.redMul(a);
31641 // CB = C * B
31642 var cb = c.redMul(b);
31643 // X5 = Z1 * (DA + CB)^2
31644 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31645 // Z5 = X1 * (DA - CB)^2
31646 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31647 return this.curve.point(nx, nz);
31648 };
31649
31650 Point.prototype.mul = function mul(k) {
31651 var t = k.clone();
31652 var a = this; // (N / 2) * Q + Q
31653 var b = this.curve.point(null, null); // (N / 2) * Q
31654 var c = this; // Q
31655
31656 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31657 bits.push(t.andln(1));
31658
31659 for (var i = bits.length - 1; i >= 0; i--) {
31660 if (bits[i] === 0) {
31661 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31662 a = a.diffAdd(b, c);
31663 // N * Q = 2 * ((N / 2) * Q + Q))
31664 b = b.dbl();
31665 } else {
31666 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31667 b = a.diffAdd(b, c);
31668 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31669 a = a.dbl();
31670 }
31671 }
31672 return b;
31673 };
31674
31675 Point.prototype.mulAdd = function mulAdd() {
31676 throw new Error('Not supported on Montgomery curve');
31677 };
31678
31679 Point.prototype.jumlAdd = function jumlAdd() {
31680 throw new Error('Not supported on Montgomery curve');
31681 };
31682
31683 Point.prototype.eq = function eq(other) {
31684 return this.getX().cmp(other.getX()) === 0;
31685 };
31686
31687 Point.prototype.normalize = function normalize() {
31688 this.x = this.x.redMul(this.z.redInvm());
31689 this.z = this.curve.one;
31690 return this;
31691 };
31692
31693 Point.prototype.getX = function getX() {
31694 // Normalize coordinates
31695 this.normalize();
31696
31697 return this.x.fromRed();
31698 };
31699
31700 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
31701 'use strict';
31702
31703 var curve = require('../curve');
31704 var elliptic = require('../../elliptic');
31705 var BN = require('bn.js');
31706 var inherits = require('inherits');
31707 var Base = curve.base;
31708
31709 var assert = elliptic.utils.assert;
31710
31711 function ShortCurve(conf) {
31712 Base.call(this, 'short', conf);
31713
31714 this.a = new BN(conf.a, 16).toRed(this.red);
31715 this.b = new BN(conf.b, 16).toRed(this.red);
31716 this.tinv = this.two.redInvm();
31717
31718 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31719 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
31720
31721 // If the curve is endomorphic, precalculate beta and lambda
31722 this.endo = this._getEndomorphism(conf);
31723 this._endoWnafT1 = new Array(4);
31724 this._endoWnafT2 = new Array(4);
31725 }
31726 inherits(ShortCurve, Base);
31727 module.exports = ShortCurve;
31728
31729 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31730 // No efficient endomorphism
31731 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31732 return;
31733
31734 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31735 var beta;
31736 var lambda;
31737 if (conf.beta) {
31738 beta = new BN(conf.beta, 16).toRed(this.red);
31739 } else {
31740 var betas = this._getEndoRoots(this.p);
31741 // Choose the smallest beta
31742 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31743 beta = beta.toRed(this.red);
31744 }
31745 if (conf.lambda) {
31746 lambda = new BN(conf.lambda, 16);
31747 } else {
31748 // Choose the lambda that is matching selected beta
31749 var lambdas = this._getEndoRoots(this.n);
31750 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31751 lambda = lambdas[0];
31752 } else {
31753 lambda = lambdas[1];
31754 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31755 }
31756 }
31757
31758 // Get basis vectors, used for balanced length-two representation
31759 var basis;
31760 if (conf.basis) {
31761 basis = conf.basis.map(function(vec) {
31762 return {
31763 a: new BN(vec.a, 16),
31764 b: new BN(vec.b, 16)
31765 };
31766 });
31767 } else {
31768 basis = this._getEndoBasis(lambda);
31769 }
31770
31771 return {
31772 beta: beta,
31773 lambda: lambda,
31774 basis: basis
31775 };
31776 };
31777
31778 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31779 // Find roots of for x^2 + x + 1 in F
31780 // Root = (-1 +- Sqrt(-3)) / 2
31781 //
31782 var red = num === this.p ? this.red : BN.mont(num);
31783 var tinv = new BN(2).toRed(red).redInvm();
31784 var ntinv = tinv.redNeg();
31785
31786 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
31787
31788 var l1 = ntinv.redAdd(s).fromRed();
31789 var l2 = ntinv.redSub(s).fromRed();
31790 return [ l1, l2 ];
31791 };
31792
31793 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31794 // aprxSqrt >= sqrt(this.n)
31795 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31796
31797 // 3.74
31798 // Run EGCD, until r(L + 1) < aprxSqrt
31799 var u = lambda;
31800 var v = this.n.clone();
31801 var x1 = new BN(1);
31802 var y1 = new BN(0);
31803 var x2 = new BN(0);
31804 var y2 = new BN(1);
31805
31806 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31807 var a0;
31808 var b0;
31809 // First vector
31810 var a1;
31811 var b1;
31812 // Second vector
31813 var a2;
31814 var b2;
31815
31816 var prevR;
31817 var i = 0;
31818 var r;
31819 var x;
31820 while (u.cmpn(0) !== 0) {
31821 var q = v.div(u);
31822 r = v.sub(q.mul(u));
31823 x = x2.sub(q.mul(x1));
31824 var y = y2.sub(q.mul(y1));
31825
31826 if (!a1 && r.cmp(aprxSqrt) < 0) {
31827 a0 = prevR.neg();
31828 b0 = x1;
31829 a1 = r.neg();
31830 b1 = x;
31831 } else if (a1 && ++i === 2) {
31832 break;
31833 }
31834 prevR = r;
31835
31836 v = u;
31837 u = r;
31838 x2 = x1;
31839 x1 = x;
31840 y2 = y1;
31841 y1 = y;
31842 }
31843 a2 = r.neg();
31844 b2 = x;
31845
31846 var len1 = a1.sqr().add(b1.sqr());
31847 var len2 = a2.sqr().add(b2.sqr());
31848 if (len2.cmp(len1) >= 0) {
31849 a2 = a0;
31850 b2 = b0;
31851 }
31852
31853 // Normalize signs
31854 if (a1.negative) {
31855 a1 = a1.neg();
31856 b1 = b1.neg();
31857 }
31858 if (a2.negative) {
31859 a2 = a2.neg();
31860 b2 = b2.neg();
31861 }
31862
31863 return [
31864 { a: a1, b: b1 },
31865 { a: a2, b: b2 }
31866 ];
31867 };
31868
31869 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31870 var basis = this.endo.basis;
31871 var v1 = basis[0];
31872 var v2 = basis[1];
31873
31874 var c1 = v2.b.mul(k).divRound(this.n);
31875 var c2 = v1.b.neg().mul(k).divRound(this.n);
31876
31877 var p1 = c1.mul(v1.a);
31878 var p2 = c2.mul(v2.a);
31879 var q1 = c1.mul(v1.b);
31880 var q2 = c2.mul(v2.b);
31881
31882 // Calculate answer
31883 var k1 = k.sub(p1).sub(p2);
31884 var k2 = q1.add(q2).neg();
31885 return { k1: k1, k2: k2 };
31886 };
31887
31888 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31889 x = new BN(x, 16);
31890 if (!x.red)
31891 x = x.toRed(this.red);
31892
31893 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31894 var y = y2.redSqrt();
31895 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31896 throw new Error('invalid point');
31897
31898 // XXX Is there any way to tell if the number is odd without converting it
31899 // to non-red form?
31900 var isOdd = y.fromRed().isOdd();
31901 if (odd && !isOdd || !odd && isOdd)
31902 y = y.redNeg();
31903
31904 return this.point(x, y);
31905 };
31906
31907 ShortCurve.prototype.validate = function validate(point) {
31908 if (point.inf)
31909 return true;
31910
31911 var x = point.x;
31912 var y = point.y;
31913
31914 var ax = this.a.redMul(x);
31915 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31916 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31917 };
31918
31919 ShortCurve.prototype._endoWnafMulAdd =
31920 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31921 var npoints = this._endoWnafT1;
31922 var ncoeffs = this._endoWnafT2;
31923 for (var i = 0; i < points.length; i++) {
31924 var split = this._endoSplit(coeffs[i]);
31925 var p = points[i];
31926 var beta = p._getBeta();
31927
31928 if (split.k1.negative) {
31929 split.k1.ineg();
31930 p = p.neg(true);
31931 }
31932 if (split.k2.negative) {
31933 split.k2.ineg();
31934 beta = beta.neg(true);
31935 }
31936
31937 npoints[i * 2] = p;
31938 npoints[i * 2 + 1] = beta;
31939 ncoeffs[i * 2] = split.k1;
31940 ncoeffs[i * 2 + 1] = split.k2;
31941 }
31942 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
31943
31944 // Clean-up references to points and coefficients
31945 for (var j = 0; j < i * 2; j++) {
31946 npoints[j] = null;
31947 ncoeffs[j] = null;
31948 }
31949 return res;
31950 };
31951
31952 function Point(curve, x, y, isRed) {
31953 Base.BasePoint.call(this, curve, 'affine');
31954 if (x === null && y === null) {
31955 this.x = null;
31956 this.y = null;
31957 this.inf = true;
31958 } else {
31959 this.x = new BN(x, 16);
31960 this.y = new BN(y, 16);
31961 // Force redgomery representation when loading from JSON
31962 if (isRed) {
31963 this.x.forceRed(this.curve.red);
31964 this.y.forceRed(this.curve.red);
31965 }
31966 if (!this.x.red)
31967 this.x = this.x.toRed(this.curve.red);
31968 if (!this.y.red)
31969 this.y = this.y.toRed(this.curve.red);
31970 this.inf = false;
31971 }
31972 }
31973 inherits(Point, Base.BasePoint);
31974
31975 ShortCurve.prototype.point = function point(x, y, isRed) {
31976 return new Point(this, x, y, isRed);
31977 };
31978
31979 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
31980 return Point.fromJSON(this, obj, red);
31981 };
31982
31983 Point.prototype._getBeta = function _getBeta() {
31984 if (!this.curve.endo)
31985 return;
31986
31987 var pre = this.precomputed;
31988 if (pre && pre.beta)
31989 return pre.beta;
31990
31991 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
31992 if (pre) {
31993 var curve = this.curve;
31994 var endoMul = function(p) {
31995 return curve.point(p.x.redMul(curve.endo.beta), p.y);
31996 };
31997 pre.beta = beta;
31998 beta.precomputed = {
31999 beta: null,
32000 naf: pre.naf && {
32001 wnd: pre.naf.wnd,
32002 points: pre.naf.points.map(endoMul)
32003 },
32004 doubles: pre.doubles && {
32005 step: pre.doubles.step,
32006 points: pre.doubles.points.map(endoMul)
32007 }
32008 };
32009 }
32010 return beta;
32011 };
32012
32013 Point.prototype.toJSON = function toJSON() {
32014 if (!this.precomputed)
32015 return [ this.x, this.y ];
32016
32017 return [ this.x, this.y, this.precomputed && {
32018 doubles: this.precomputed.doubles && {
32019 step: this.precomputed.doubles.step,
32020 points: this.precomputed.doubles.points.slice(1)
32021 },
32022 naf: this.precomputed.naf && {
32023 wnd: this.precomputed.naf.wnd,
32024 points: this.precomputed.naf.points.slice(1)
32025 }
32026 } ];
32027 };
32028
32029 Point.fromJSON = function fromJSON(curve, obj, red) {
32030 if (typeof obj === 'string')
32031 obj = JSON.parse(obj);
32032 var res = curve.point(obj[0], obj[1], red);
32033 if (!obj[2])
32034 return res;
32035
32036 function obj2point(obj) {
32037 return curve.point(obj[0], obj[1], red);
32038 }
32039
32040 var pre = obj[2];
32041 res.precomputed = {
32042 beta: null,
32043 doubles: pre.doubles && {
32044 step: pre.doubles.step,
32045 points: [ res ].concat(pre.doubles.points.map(obj2point))
32046 },
32047 naf: pre.naf && {
32048 wnd: pre.naf.wnd,
32049 points: [ res ].concat(pre.naf.points.map(obj2point))
32050 }
32051 };
32052 return res;
32053 };
32054
32055 Point.prototype.inspect = function inspect() {
32056 if (this.isInfinity())
32057 return '<EC Point Infinity>';
32058 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32059 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32060 };
32061
32062 Point.prototype.isInfinity = function isInfinity() {
32063 return this.inf;
32064 };
32065
32066 Point.prototype.add = function add(p) {
32067 // O + P = P
32068 if (this.inf)
32069 return p;
32070
32071 // P + O = P
32072 if (p.inf)
32073 return this;
32074
32075 // P + P = 2P
32076 if (this.eq(p))
32077 return this.dbl();
32078
32079 // P + (-P) = O
32080 if (this.neg().eq(p))
32081 return this.curve.point(null, null);
32082
32083 // P + Q = O
32084 if (this.x.cmp(p.x) === 0)
32085 return this.curve.point(null, null);
32086
32087 var c = this.y.redSub(p.y);
32088 if (c.cmpn(0) !== 0)
32089 c = c.redMul(this.x.redSub(p.x).redInvm());
32090 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32091 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32092 return this.curve.point(nx, ny);
32093 };
32094
32095 Point.prototype.dbl = function dbl() {
32096 if (this.inf)
32097 return this;
32098
32099 // 2P = O
32100 var ys1 = this.y.redAdd(this.y);
32101 if (ys1.cmpn(0) === 0)
32102 return this.curve.point(null, null);
32103
32104 var a = this.curve.a;
32105
32106 var x2 = this.x.redSqr();
32107 var dyinv = ys1.redInvm();
32108 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
32109
32110 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32111 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32112 return this.curve.point(nx, ny);
32113 };
32114
32115 Point.prototype.getX = function getX() {
32116 return this.x.fromRed();
32117 };
32118
32119 Point.prototype.getY = function getY() {
32120 return this.y.fromRed();
32121 };
32122
32123 Point.prototype.mul = function mul(k) {
32124 k = new BN(k, 16);
32125
32126 if (this._hasDoubles(k))
32127 return this.curve._fixedNafMul(this, k);
32128 else if (this.curve.endo)
32129 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32130 else
32131 return this.curve._wnafMul(this, k);
32132 };
32133
32134 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32135 var points = [ this, p2 ];
32136 var coeffs = [ k1, k2 ];
32137 if (this.curve.endo)
32138 return this.curve._endoWnafMulAdd(points, coeffs);
32139 else
32140 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32141 };
32142
32143 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32144 var points = [ this, p2 ];
32145 var coeffs = [ k1, k2 ];
32146 if (this.curve.endo)
32147 return this.curve._endoWnafMulAdd(points, coeffs, true);
32148 else
32149 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32150 };
32151
32152 Point.prototype.eq = function eq(p) {
32153 return this === p ||
32154 this.inf === p.inf &&
32155 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32156 };
32157
32158 Point.prototype.neg = function neg(_precompute) {
32159 if (this.inf)
32160 return this;
32161
32162 var res = this.curve.point(this.x, this.y.redNeg());
32163 if (_precompute && this.precomputed) {
32164 var pre = this.precomputed;
32165 var negate = function(p) {
32166 return p.neg();
32167 };
32168 res.precomputed = {
32169 naf: pre.naf && {
32170 wnd: pre.naf.wnd,
32171 points: pre.naf.points.map(negate)
32172 },
32173 doubles: pre.doubles && {
32174 step: pre.doubles.step,
32175 points: pre.doubles.points.map(negate)
32176 }
32177 };
32178 }
32179 return res;
32180 };
32181
32182 Point.prototype.toJ = function toJ() {
32183 if (this.inf)
32184 return this.curve.jpoint(null, null, null);
32185
32186 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32187 return res;
32188 };
32189
32190 function JPoint(curve, x, y, z) {
32191 Base.BasePoint.call(this, curve, 'jacobian');
32192 if (x === null && y === null && z === null) {
32193 this.x = this.curve.one;
32194 this.y = this.curve.one;
32195 this.z = new BN(0);
32196 } else {
32197 this.x = new BN(x, 16);
32198 this.y = new BN(y, 16);
32199 this.z = new BN(z, 16);
32200 }
32201 if (!this.x.red)
32202 this.x = this.x.toRed(this.curve.red);
32203 if (!this.y.red)
32204 this.y = this.y.toRed(this.curve.red);
32205 if (!this.z.red)
32206 this.z = this.z.toRed(this.curve.red);
32207
32208 this.zOne = this.z === this.curve.one;
32209 }
32210 inherits(JPoint, Base.BasePoint);
32211
32212 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32213 return new JPoint(this, x, y, z);
32214 };
32215
32216 JPoint.prototype.toP = function toP() {
32217 if (this.isInfinity())
32218 return this.curve.point(null, null);
32219
32220 var zinv = this.z.redInvm();
32221 var zinv2 = zinv.redSqr();
32222 var ax = this.x.redMul(zinv2);
32223 var ay = this.y.redMul(zinv2).redMul(zinv);
32224
32225 return this.curve.point(ax, ay);
32226 };
32227
32228 JPoint.prototype.neg = function neg() {
32229 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32230 };
32231
32232 JPoint.prototype.add = function add(p) {
32233 // O + P = P
32234 if (this.isInfinity())
32235 return p;
32236
32237 // P + O = P
32238 if (p.isInfinity())
32239 return this;
32240
32241 // 12M + 4S + 7A
32242 var pz2 = p.z.redSqr();
32243 var z2 = this.z.redSqr();
32244 var u1 = this.x.redMul(pz2);
32245 var u2 = p.x.redMul(z2);
32246 var s1 = this.y.redMul(pz2.redMul(p.z));
32247 var s2 = p.y.redMul(z2.redMul(this.z));
32248
32249 var h = u1.redSub(u2);
32250 var r = s1.redSub(s2);
32251 if (h.cmpn(0) === 0) {
32252 if (r.cmpn(0) !== 0)
32253 return this.curve.jpoint(null, null, null);
32254 else
32255 return this.dbl();
32256 }
32257
32258 var h2 = h.redSqr();
32259 var h3 = h2.redMul(h);
32260 var v = u1.redMul(h2);
32261
32262 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32263 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32264 var nz = this.z.redMul(p.z).redMul(h);
32265
32266 return this.curve.jpoint(nx, ny, nz);
32267 };
32268
32269 JPoint.prototype.mixedAdd = function mixedAdd(p) {
32270 // O + P = P
32271 if (this.isInfinity())
32272 return p.toJ();
32273
32274 // P + O = P
32275 if (p.isInfinity())
32276 return this;
32277
32278 // 8M + 3S + 7A
32279 var z2 = this.z.redSqr();
32280 var u1 = this.x;
32281 var u2 = p.x.redMul(z2);
32282 var s1 = this.y;
32283 var s2 = p.y.redMul(z2).redMul(this.z);
32284
32285 var h = u1.redSub(u2);
32286 var r = s1.redSub(s2);
32287 if (h.cmpn(0) === 0) {
32288 if (r.cmpn(0) !== 0)
32289 return this.curve.jpoint(null, null, null);
32290 else
32291 return this.dbl();
32292 }
32293
32294 var h2 = h.redSqr();
32295 var h3 = h2.redMul(h);
32296 var v = u1.redMul(h2);
32297
32298 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32299 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32300 var nz = this.z.redMul(h);
32301
32302 return this.curve.jpoint(nx, ny, nz);
32303 };
32304
32305 JPoint.prototype.dblp = function dblp(pow) {
32306 if (pow === 0)
32307 return this;
32308 if (this.isInfinity())
32309 return this;
32310 if (!pow)
32311 return this.dbl();
32312
32313 if (this.curve.zeroA || this.curve.threeA) {
32314 var r = this;
32315 for (var i = 0; i < pow; i++)
32316 r = r.dbl();
32317 return r;
32318 }
32319
32320 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32321 // N = 1 => 6M + 6S + 9A
32322 var a = this.curve.a;
32323 var tinv = this.curve.tinv;
32324
32325 var jx = this.x;
32326 var jy = this.y;
32327 var jz = this.z;
32328 var jz4 = jz.redSqr().redSqr();
32329
32330 // Reuse results
32331 var jyd = jy.redAdd(jy);
32332 for (var i = 0; i < pow; i++) {
32333 var jx2 = jx.redSqr();
32334 var jyd2 = jyd.redSqr();
32335 var jyd4 = jyd2.redSqr();
32336 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32337
32338 var t1 = jx.redMul(jyd2);
32339 var nx = c.redSqr().redISub(t1.redAdd(t1));
32340 var t2 = t1.redISub(nx);
32341 var dny = c.redMul(t2);
32342 dny = dny.redIAdd(dny).redISub(jyd4);
32343 var nz = jyd.redMul(jz);
32344 if (i + 1 < pow)
32345 jz4 = jz4.redMul(jyd4);
32346
32347 jx = nx;
32348 jz = nz;
32349 jyd = dny;
32350 }
32351
32352 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32353 };
32354
32355 JPoint.prototype.dbl = function dbl() {
32356 if (this.isInfinity())
32357 return this;
32358
32359 if (this.curve.zeroA)
32360 return this._zeroDbl();
32361 else if (this.curve.threeA)
32362 return this._threeDbl();
32363 else
32364 return this._dbl();
32365 };
32366
32367 JPoint.prototype._zeroDbl = function _zeroDbl() {
32368 var nx;
32369 var ny;
32370 var nz;
32371 // Z = 1
32372 if (this.zOne) {
32373 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32374 // #doubling-mdbl-2007-bl
32375 // 1M + 5S + 14A
32376
32377 // XX = X1^2
32378 var xx = this.x.redSqr();
32379 // YY = Y1^2
32380 var yy = this.y.redSqr();
32381 // YYYY = YY^2
32382 var yyyy = yy.redSqr();
32383 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32384 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32385 s = s.redIAdd(s);
32386 // M = 3 * XX + a; a = 0
32387 var m = xx.redAdd(xx).redIAdd(xx);
32388 // T = M ^ 2 - 2*S
32389 var t = m.redSqr().redISub(s).redISub(s);
32390
32391 // 8 * YYYY
32392 var yyyy8 = yyyy.redIAdd(yyyy);
32393 yyyy8 = yyyy8.redIAdd(yyyy8);
32394 yyyy8 = yyyy8.redIAdd(yyyy8);
32395
32396 // X3 = T
32397 nx = t;
32398 // Y3 = M * (S - T) - 8 * YYYY
32399 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32400 // Z3 = 2*Y1
32401 nz = this.y.redAdd(this.y);
32402 } else {
32403 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32404 // #doubling-dbl-2009-l
32405 // 2M + 5S + 13A
32406
32407 // A = X1^2
32408 var a = this.x.redSqr();
32409 // B = Y1^2
32410 var b = this.y.redSqr();
32411 // C = B^2
32412 var c = b.redSqr();
32413 // D = 2 * ((X1 + B)^2 - A - C)
32414 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32415 d = d.redIAdd(d);
32416 // E = 3 * A
32417 var e = a.redAdd(a).redIAdd(a);
32418 // F = E^2
32419 var f = e.redSqr();
32420
32421 // 8 * C
32422 var c8 = c.redIAdd(c);
32423 c8 = c8.redIAdd(c8);
32424 c8 = c8.redIAdd(c8);
32425
32426 // X3 = F - 2 * D
32427 nx = f.redISub(d).redISub(d);
32428 // Y3 = E * (D - X3) - 8 * C
32429 ny = e.redMul(d.redISub(nx)).redISub(c8);
32430 // Z3 = 2 * Y1 * Z1
32431 nz = this.y.redMul(this.z);
32432 nz = nz.redIAdd(nz);
32433 }
32434
32435 return this.curve.jpoint(nx, ny, nz);
32436 };
32437
32438 JPoint.prototype._threeDbl = function _threeDbl() {
32439 var nx;
32440 var ny;
32441 var nz;
32442 // Z = 1
32443 if (this.zOne) {
32444 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32445 // #doubling-mdbl-2007-bl
32446 // 1M + 5S + 15A
32447
32448 // XX = X1^2
32449 var xx = this.x.redSqr();
32450 // YY = Y1^2
32451 var yy = this.y.redSqr();
32452 // YYYY = YY^2
32453 var yyyy = yy.redSqr();
32454 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32455 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32456 s = s.redIAdd(s);
32457 // M = 3 * XX + a
32458 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32459 // T = M^2 - 2 * S
32460 var t = m.redSqr().redISub(s).redISub(s);
32461 // X3 = T
32462 nx = t;
32463 // Y3 = M * (S - T) - 8 * YYYY
32464 var yyyy8 = yyyy.redIAdd(yyyy);
32465 yyyy8 = yyyy8.redIAdd(yyyy8);
32466 yyyy8 = yyyy8.redIAdd(yyyy8);
32467 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32468 // Z3 = 2 * Y1
32469 nz = this.y.redAdd(this.y);
32470 } else {
32471 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32472 // 3M + 5S
32473
32474 // delta = Z1^2
32475 var delta = this.z.redSqr();
32476 // gamma = Y1^2
32477 var gamma = this.y.redSqr();
32478 // beta = X1 * gamma
32479 var beta = this.x.redMul(gamma);
32480 // alpha = 3 * (X1 - delta) * (X1 + delta)
32481 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32482 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32483 // X3 = alpha^2 - 8 * beta
32484 var beta4 = beta.redIAdd(beta);
32485 beta4 = beta4.redIAdd(beta4);
32486 var beta8 = beta4.redAdd(beta4);
32487 nx = alpha.redSqr().redISub(beta8);
32488 // Z3 = (Y1 + Z1)^2 - gamma - delta
32489 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32490 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32491 var ggamma8 = gamma.redSqr();
32492 ggamma8 = ggamma8.redIAdd(ggamma8);
32493 ggamma8 = ggamma8.redIAdd(ggamma8);
32494 ggamma8 = ggamma8.redIAdd(ggamma8);
32495 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32496 }
32497
32498 return this.curve.jpoint(nx, ny, nz);
32499 };
32500
32501 JPoint.prototype._dbl = function _dbl() {
32502 var a = this.curve.a;
32503
32504 // 4M + 6S + 10A
32505 var jx = this.x;
32506 var jy = this.y;
32507 var jz = this.z;
32508 var jz4 = jz.redSqr().redSqr();
32509
32510 var jx2 = jx.redSqr();
32511 var jy2 = jy.redSqr();
32512
32513 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32514
32515 var jxd4 = jx.redAdd(jx);
32516 jxd4 = jxd4.redIAdd(jxd4);
32517 var t1 = jxd4.redMul(jy2);
32518 var nx = c.redSqr().redISub(t1.redAdd(t1));
32519 var t2 = t1.redISub(nx);
32520
32521 var jyd8 = jy2.redSqr();
32522 jyd8 = jyd8.redIAdd(jyd8);
32523 jyd8 = jyd8.redIAdd(jyd8);
32524 jyd8 = jyd8.redIAdd(jyd8);
32525 var ny = c.redMul(t2).redISub(jyd8);
32526 var nz = jy.redAdd(jy).redMul(jz);
32527
32528 return this.curve.jpoint(nx, ny, nz);
32529 };
32530
32531 JPoint.prototype.trpl = function trpl() {
32532 if (!this.curve.zeroA)
32533 return this.dbl().add(this);
32534
32535 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32536 // 5M + 10S + ...
32537
32538 // XX = X1^2
32539 var xx = this.x.redSqr();
32540 // YY = Y1^2
32541 var yy = this.y.redSqr();
32542 // ZZ = Z1^2
32543 var zz = this.z.redSqr();
32544 // YYYY = YY^2
32545 var yyyy = yy.redSqr();
32546 // M = 3 * XX + a * ZZ2; a = 0
32547 var m = xx.redAdd(xx).redIAdd(xx);
32548 // MM = M^2
32549 var mm = m.redSqr();
32550 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32551 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32552 e = e.redIAdd(e);
32553 e = e.redAdd(e).redIAdd(e);
32554 e = e.redISub(mm);
32555 // EE = E^2
32556 var ee = e.redSqr();
32557 // T = 16*YYYY
32558 var t = yyyy.redIAdd(yyyy);
32559 t = t.redIAdd(t);
32560 t = t.redIAdd(t);
32561 t = t.redIAdd(t);
32562 // U = (M + E)^2 - MM - EE - T
32563 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32564 // X3 = 4 * (X1 * EE - 4 * YY * U)
32565 var yyu4 = yy.redMul(u);
32566 yyu4 = yyu4.redIAdd(yyu4);
32567 yyu4 = yyu4.redIAdd(yyu4);
32568 var nx = this.x.redMul(ee).redISub(yyu4);
32569 nx = nx.redIAdd(nx);
32570 nx = nx.redIAdd(nx);
32571 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32572 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32573 ny = ny.redIAdd(ny);
32574 ny = ny.redIAdd(ny);
32575 ny = ny.redIAdd(ny);
32576 // Z3 = (Z1 + E)^2 - ZZ - EE
32577 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32578
32579 return this.curve.jpoint(nx, ny, nz);
32580 };
32581
32582 JPoint.prototype.mul = function mul(k, kbase) {
32583 k = new BN(k, kbase);
32584
32585 return this.curve._wnafMul(this, k);
32586 };
32587
32588 JPoint.prototype.eq = function eq(p) {
32589 if (p.type === 'affine')
32590 return this.eq(p.toJ());
32591
32592 if (this === p)
32593 return true;
32594
32595 // x1 * z2^2 == x2 * z1^2
32596 var z2 = this.z.redSqr();
32597 var pz2 = p.z.redSqr();
32598 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32599 return false;
32600
32601 // y1 * z2^3 == y2 * z1^3
32602 var z3 = z2.redMul(this.z);
32603 var pz3 = pz2.redMul(p.z);
32604 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32605 };
32606
32607 JPoint.prototype.eqXToP = function eqXToP(x) {
32608 var zs = this.z.redSqr();
32609 var rx = x.toRed(this.curve.red).redMul(zs);
32610 if (this.x.cmp(rx) === 0)
32611 return true;
32612
32613 var xc = x.clone();
32614 var t = this.curve.redN.redMul(zs);
32615 for (;;) {
32616 xc.iadd(this.curve.n);
32617 if (xc.cmp(this.curve.p) >= 0)
32618 return false;
32619
32620 rx.redIAdd(t);
32621 if (this.x.cmp(rx) === 0)
32622 return true;
32623 }
32624 return false;
32625 };
32626
32627 JPoint.prototype.inspect = function inspect() {
32628 if (this.isInfinity())
32629 return '<EC JPoint Infinity>';
32630 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32631 ' y: ' + this.y.toString(16, 2) +
32632 ' z: ' + this.z.toString(16, 2) + '>';
32633 };
32634
32635 JPoint.prototype.isInfinity = function isInfinity() {
32636 // XXX This code assumes that zero is always zero in red
32637 return this.z.cmpn(0) === 0;
32638 };
32639
32640 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32641 'use strict';
32642
32643 var curves = exports;
32644
32645 var hash = require('hash.js');
32646 var elliptic = require('../elliptic');
32647
32648 var assert = elliptic.utils.assert;
32649
32650 function PresetCurve(options) {
32651 if (options.type === 'short')
32652 this.curve = new elliptic.curve.short(options);
32653 else if (options.type === 'edwards')
32654 this.curve = new elliptic.curve.edwards(options);
32655 else
32656 this.curve = new elliptic.curve.mont(options);
32657 this.g = this.curve.g;
32658 this.n = this.curve.n;
32659 this.hash = options.hash;
32660
32661 assert(this.g.validate(), 'Invalid curve');
32662 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32663 }
32664 curves.PresetCurve = PresetCurve;
32665
32666 function defineCurve(name, options) {
32667 Object.defineProperty(curves, name, {
32668 configurable: true,
32669 enumerable: true,
32670 get: function() {
32671 var curve = new PresetCurve(options);
32672 Object.defineProperty(curves, name, {
32673 configurable: true,
32674 enumerable: true,
32675 value: curve
32676 });
32677 return curve;
32678 }
32679 });
32680 }
32681
32682 defineCurve('p192', {
32683 type: 'short',
32684 prime: 'p192',
32685 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32686 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32687 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32688 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32689 hash: hash.sha256,
32690 gRed: false,
32691 g: [
32692 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32693 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32694 ]
32695 });
32696
32697 defineCurve('p224', {
32698 type: 'short',
32699 prime: 'p224',
32700 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32701 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32702 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32703 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32704 hash: hash.sha256,
32705 gRed: false,
32706 g: [
32707 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32708 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32709 ]
32710 });
32711
32712 defineCurve('p256', {
32713 type: 'short',
32714 prime: null,
32715 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32716 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32717 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32718 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32719 hash: hash.sha256,
32720 gRed: false,
32721 g: [
32722 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32723 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32724 ]
32725 });
32726
32727 defineCurve('p384', {
32728 type: 'short',
32729 prime: null,
32730 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32731 'fffffffe ffffffff 00000000 00000000 ffffffff',
32732 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32733 'fffffffe ffffffff 00000000 00000000 fffffffc',
32734 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32735 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32736 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32737 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32738 hash: hash.sha384,
32739 gRed: false,
32740 g: [
32741 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32742 '5502f25d bf55296c 3a545e38 72760ab7',
32743 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32744 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32745 ]
32746 });
32747
32748 defineCurve('p521', {
32749 type: 'short',
32750 prime: null,
32751 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32752 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32753 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32754 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32755 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32756 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32757 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32758 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32759 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32760 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32761 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32762 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32763 hash: hash.sha512,
32764 gRed: false,
32765 g: [
32766 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32767 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32768 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32769 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32770 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32771 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32772 ]
32773 });
32774
32775 defineCurve('curve25519', {
32776 type: 'mont',
32777 prime: 'p25519',
32778 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32779 a: '76d06',
32780 b: '1',
32781 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32782 hash: hash.sha256,
32783 gRed: false,
32784 g: [
32785 '9'
32786 ]
32787 });
32788
32789 defineCurve('ed25519', {
32790 type: 'edwards',
32791 prime: 'p25519',
32792 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32793 a: '-1',
32794 c: '1',
32795 // -121665 * (121666^(-1)) (mod P)
32796 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32797 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32798 hash: hash.sha256,
32799 gRed: false,
32800 g: [
32801 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32802
32803 // 4/5
32804 '6666666666666666666666666666666666666666666666666666666666666658'
32805 ]
32806 });
32807
32808 var pre;
32809 try {
32810 pre = require('./precomputed/secp256k1');
32811 } catch (e) {
32812 pre = undefined;
32813 }
32814
32815 defineCurve('secp256k1', {
32816 type: 'short',
32817 prime: 'k256',
32818 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32819 a: '0',
32820 b: '7',
32821 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32822 h: '1',
32823 hash: hash.sha256,
32824
32825 // Precomputed endomorphism
32826 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32827 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32828 basis: [
32829 {
32830 a: '3086d221a7d46bcde86c90e49284eb15',
32831 b: '-e4437ed6010e88286f547fa90abfe4c3'
32832 },
32833 {
32834 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32835 b: '3086d221a7d46bcde86c90e49284eb15'
32836 }
32837 ],
32838
32839 gRed: false,
32840 g: [
32841 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32842 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32843 pre
32844 ]
32845 });
32846
32847 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32848 'use strict';
32849
32850 var BN = require('bn.js');
32851 var elliptic = require('../../elliptic');
32852 var utils = elliptic.utils;
32853 var assert = utils.assert;
32854
32855 var KeyPair = require('./key');
32856 var Signature = require('./signature');
32857
32858 function EC(options) {
32859 if (!(this instanceof EC))
32860 return new EC(options);
32861
32862 // Shortcut `elliptic.ec(curve-name)`
32863 if (typeof options === 'string') {
32864 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32865
32866 options = elliptic.curves[options];
32867 }
32868
32869 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32870 if (options instanceof elliptic.curves.PresetCurve)
32871 options = { curve: options };
32872
32873 this.curve = options.curve.curve;
32874 this.n = this.curve.n;
32875 this.nh = this.n.ushrn(1);
32876 this.g = this.curve.g;
32877
32878 // Point on curve
32879 this.g = options.curve.g;
32880 this.g.precompute(options.curve.n.bitLength() + 1);
32881
32882 // Hash for function for DRBG
32883 this.hash = options.hash || options.curve.hash;
32884 }
32885 module.exports = EC;
32886
32887 EC.prototype.keyPair = function keyPair(options) {
32888 return new KeyPair(this, options);
32889 };
32890
32891 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32892 return KeyPair.fromPrivate(this, priv, enc);
32893 };
32894
32895 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32896 return KeyPair.fromPublic(this, pub, enc);
32897 };
32898
32899 EC.prototype.genKeyPair = function genKeyPair(options) {
32900 if (!options)
32901 options = {};
32902
32903 // Instantiate Hmac_DRBG
32904 var drbg = new elliptic.hmacDRBG({
32905 hash: this.hash,
32906 pers: options.pers,
32907 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32908 nonce: this.n.toArray()
32909 });
32910
32911 var bytes = this.n.byteLength();
32912 var ns2 = this.n.sub(new BN(2));
32913 do {
32914 var priv = new BN(drbg.generate(bytes));
32915 if (priv.cmp(ns2) > 0)
32916 continue;
32917
32918 priv.iaddn(1);
32919 return this.keyFromPrivate(priv);
32920 } while (true);
32921 };
32922
32923 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32924 var delta = msg.byteLength() * 8 - this.n.bitLength();
32925 if (delta > 0)
32926 msg = msg.ushrn(delta);
32927 if (!truncOnly && msg.cmp(this.n) >= 0)
32928 return msg.sub(this.n);
32929 else
32930 return msg;
32931 };
32932
32933 EC.prototype.sign = function sign(msg, key, enc, options) {
32934 if (typeof enc === 'object') {
32935 options = enc;
32936 enc = null;
32937 }
32938 if (!options)
32939 options = {};
32940
32941 key = this.keyFromPrivate(key, enc);
32942 msg = this._truncateToN(new BN(msg, 16));
32943
32944 // Zero-extend key to provide enough entropy
32945 var bytes = this.n.byteLength();
32946 var bkey = key.getPrivate().toArray('be', bytes);
32947
32948 // Zero-extend nonce to have the same byte size as N
32949 var nonce = msg.toArray('be', bytes);
32950
32951 // Instantiate Hmac_DRBG
32952 var drbg = new elliptic.hmacDRBG({
32953 hash: this.hash,
32954 entropy: bkey,
32955 nonce: nonce,
32956 pers: options.pers,
32957 persEnc: options.persEnc
32958 });
32959
32960 // Number of bytes to generate
32961 var ns1 = this.n.sub(new BN(1));
32962
32963 for (var iter = 0; true; iter++) {
32964 var k = options.k ?
32965 options.k(iter) :
32966 new BN(drbg.generate(this.n.byteLength()));
32967 k = this._truncateToN(k, true);
32968 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
32969 continue;
32970
32971 var kp = this.g.mul(k);
32972 if (kp.isInfinity())
32973 continue;
32974
32975 var kpX = kp.getX();
32976 var r = kpX.umod(this.n);
32977 if (r.cmpn(0) === 0)
32978 continue;
32979
32980 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
32981 s = s.umod(this.n);
32982 if (s.cmpn(0) === 0)
32983 continue;
32984
32985 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
32986 (kpX.cmp(r) !== 0 ? 2 : 0);
32987
32988 // Use complement of `s`, if it is > `n / 2`
32989 if (options.canonical && s.cmp(this.nh) > 0) {
32990 s = this.n.sub(s);
32991 recoveryParam ^= 1;
32992 }
32993
32994 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
32995 }
32996 };
32997
32998 EC.prototype.verify = function verify(msg, signature, key, enc) {
32999 msg = this._truncateToN(new BN(msg, 16));
33000 key = this.keyFromPublic(key, enc);
33001 signature = new Signature(signature, 'hex');
33002
33003 // Perform primitive values validation
33004 var r = signature.r;
33005 var s = signature.s;
33006 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33007 return false;
33008 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33009 return false;
33010
33011 // Validate signature
33012 var sinv = s.invm(this.n);
33013 var u1 = sinv.mul(msg).umod(this.n);
33014 var u2 = sinv.mul(r).umod(this.n);
33015
33016 if (!this.curve._maxwellTrick) {
33017 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33018 if (p.isInfinity())
33019 return false;
33020
33021 return p.getX().umod(this.n).cmp(r) === 0;
33022 }
33023
33024 // NOTE: Greg Maxwell's trick, inspired by:
33025 // https://git.io/vad3K
33026
33027 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33028 if (p.isInfinity())
33029 return false;
33030
33031 // Compare `p.x` of Jacobian point with `r`,
33032 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33033 // inverse of `p.z^2`
33034 return p.eqXToP(r);
33035 };
33036
33037 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33038 assert((3 & j) === j, 'The recovery param is more than two bits');
33039 signature = new Signature(signature, enc);
33040
33041 var n = this.n;
33042 var e = new BN(msg);
33043 var r = signature.r;
33044 var s = signature.s;
33045
33046 // A set LSB signifies that the y-coordinate is odd
33047 var isYOdd = j & 1;
33048 var isSecondKey = j >> 1;
33049 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33050 throw new Error('Unable to find sencond key candinate');
33051
33052 // 1.1. Let x = r + jn.
33053 if (isSecondKey)
33054 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33055 else
33056 r = this.curve.pointFromX(r, isYOdd);
33057
33058 var rInv = signature.r.invm(n);
33059 var s1 = n.sub(e).mul(rInv).umod(n);
33060 var s2 = s.mul(rInv).umod(n);
33061
33062 // 1.6.1 Compute Q = r^-1 (sR - eG)
33063 // Q = r^-1 (sR + -eG)
33064 return this.g.mulAdd(s1, r, s2);
33065 };
33066
33067 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33068 signature = new Signature(signature, enc);
33069 if (signature.recoveryParam !== null)
33070 return signature.recoveryParam;
33071
33072 for (var i = 0; i < 4; i++) {
33073 var Qprime;
33074 try {
33075 Qprime = this.recoverPubKey(e, signature, i);
33076 } catch (e) {
33077 continue;
33078 }
33079
33080 if (Qprime.eq(Q))
33081 return i;
33082 }
33083 throw new Error('Unable to find valid recovery factor');
33084 };
33085
33086 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33087 'use strict';
33088
33089 var BN = require('bn.js');
33090 var elliptic = require('../../elliptic');
33091 var utils = elliptic.utils;
33092 var assert = utils.assert;
33093
33094 function KeyPair(ec, options) {
33095 this.ec = ec;
33096 this.priv = null;
33097 this.pub = null;
33098
33099 // KeyPair(ec, { priv: ..., pub: ... })
33100 if (options.priv)
33101 this._importPrivate(options.priv, options.privEnc);
33102 if (options.pub)
33103 this._importPublic(options.pub, options.pubEnc);
33104 }
33105 module.exports = KeyPair;
33106
33107 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33108 if (pub instanceof KeyPair)
33109 return pub;
33110
33111 return new KeyPair(ec, {
33112 pub: pub,
33113 pubEnc: enc
33114 });
33115 };
33116
33117 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33118 if (priv instanceof KeyPair)
33119 return priv;
33120
33121 return new KeyPair(ec, {
33122 priv: priv,
33123 privEnc: enc
33124 });
33125 };
33126
33127 KeyPair.prototype.validate = function validate() {
33128 var pub = this.getPublic();
33129
33130 if (pub.isInfinity())
33131 return { result: false, reason: 'Invalid public key' };
33132 if (!pub.validate())
33133 return { result: false, reason: 'Public key is not a point' };
33134 if (!pub.mul(this.ec.curve.n).isInfinity())
33135 return { result: false, reason: 'Public key * N != O' };
33136
33137 return { result: true, reason: null };
33138 };
33139
33140 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33141 // compact is optional argument
33142 if (typeof compact === 'string') {
33143 enc = compact;
33144 compact = null;
33145 }
33146
33147 if (!this.pub)
33148 this.pub = this.ec.g.mul(this.priv);
33149
33150 if (!enc)
33151 return this.pub;
33152
33153 return this.pub.encode(enc, compact);
33154 };
33155
33156 KeyPair.prototype.getPrivate = function getPrivate(enc) {
33157 if (enc === 'hex')
33158 return this.priv.toString(16, 2);
33159 else
33160 return this.priv;
33161 };
33162
33163 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33164 this.priv = new BN(key, enc || 16);
33165
33166 // Ensure that the priv won't be bigger than n, otherwise we may fail
33167 // in fixed multiplication method
33168 this.priv = this.priv.umod(this.ec.curve.n);
33169 };
33170
33171 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33172 if (key.x || key.y) {
33173 // Montgomery points only have an `x` coordinate.
33174 // Weierstrass/Edwards points on the other hand have both `x` and
33175 // `y` coordinates.
33176 if (this.ec.curve.type === 'mont') {
33177 assert(key.x, 'Need x coordinate');
33178 } else if (this.ec.curve.type === 'short' ||
33179 this.ec.curve.type === 'edwards') {
33180 assert(key.x && key.y, 'Need both x and y coordinate');
33181 }
33182 this.pub = this.ec.curve.point(key.x, key.y);
33183 return;
33184 }
33185 this.pub = this.ec.curve.decodePoint(key, enc);
33186 };
33187
33188 // ECDH
33189 KeyPair.prototype.derive = function derive(pub) {
33190 return pub.mul(this.priv).getX();
33191 };
33192
33193 // ECDSA
33194 KeyPair.prototype.sign = function sign(msg, enc, options) {
33195 return this.ec.sign(msg, this, enc, options);
33196 };
33197
33198 KeyPair.prototype.verify = function verify(msg, signature) {
33199 return this.ec.verify(msg, signature, this);
33200 };
33201
33202 KeyPair.prototype.inspect = function inspect() {
33203 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33204 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33205 };
33206
33207 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33208 'use strict';
33209
33210 var BN = require('bn.js');
33211
33212 var elliptic = require('../../elliptic');
33213 var utils = elliptic.utils;
33214 var assert = utils.assert;
33215
33216 function Signature(options, enc) {
33217 if (options instanceof Signature)
33218 return options;
33219
33220 if (this._importDER(options, enc))
33221 return;
33222
33223 assert(options.r && options.s, 'Signature without r or s');
33224 this.r = new BN(options.r, 16);
33225 this.s = new BN(options.s, 16);
33226 if (options.recoveryParam === undefined)
33227 this.recoveryParam = null;
33228 else
33229 this.recoveryParam = options.recoveryParam;
33230 }
33231 module.exports = Signature;
33232
33233 function Position() {
33234 this.place = 0;
33235 }
33236
33237 function getLength(buf, p) {
33238 var initial = buf[p.place++];
33239 if (!(initial & 0x80)) {
33240 return initial;
33241 }
33242 var octetLen = initial & 0xf;
33243 var val = 0;
33244 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33245 val <<= 8;
33246 val |= buf[off];
33247 }
33248 p.place = off;
33249 return val;
33250 }
33251
33252 function rmPadding(buf) {
33253 var i = 0;
33254 var len = buf.length - 1;
33255 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33256 i++;
33257 }
33258 if (i === 0) {
33259 return buf;
33260 }
33261 return buf.slice(i);
33262 }
33263
33264 Signature.prototype._importDER = function _importDER(data, enc) {
33265 data = utils.toArray(data, enc);
33266 var p = new Position();
33267 if (data[p.place++] !== 0x30) {
33268 return false;
33269 }
33270 var len = getLength(data, p);
33271 if ((len + p.place) !== data.length) {
33272 return false;
33273 }
33274 if (data[p.place++] !== 0x02) {
33275 return false;
33276 }
33277 var rlen = getLength(data, p);
33278 var r = data.slice(p.place, rlen + p.place);
33279 p.place += rlen;
33280 if (data[p.place++] !== 0x02) {
33281 return false;
33282 }
33283 var slen = getLength(data, p);
33284 if (data.length !== slen + p.place) {
33285 return false;
33286 }
33287 var s = data.slice(p.place, slen + p.place);
33288 if (r[0] === 0 && (r[1] & 0x80)) {
33289 r = r.slice(1);
33290 }
33291 if (s[0] === 0 && (s[1] & 0x80)) {
33292 s = s.slice(1);
33293 }
33294
33295 this.r = new BN(r);
33296 this.s = new BN(s);
33297 this.recoveryParam = null;
33298
33299 return true;
33300 };
33301
33302 function constructLength(arr, len) {
33303 if (len < 0x80) {
33304 arr.push(len);
33305 return;
33306 }
33307 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33308 arr.push(octets | 0x80);
33309 while (--octets) {
33310 arr.push((len >>> (octets << 3)) & 0xff);
33311 }
33312 arr.push(len);
33313 }
33314
33315 Signature.prototype.toDER = function toDER(enc) {
33316 var r = this.r.toArray();
33317 var s = this.s.toArray();
33318
33319 // Pad values
33320 if (r[0] & 0x80)
33321 r = [ 0 ].concat(r);
33322 // Pad values
33323 if (s[0] & 0x80)
33324 s = [ 0 ].concat(s);
33325
33326 r = rmPadding(r);
33327 s = rmPadding(s);
33328
33329 while (!s[0] && !(s[1] & 0x80)) {
33330 s = s.slice(1);
33331 }
33332 var arr = [ 0x02 ];
33333 constructLength(arr, r.length);
33334 arr = arr.concat(r);
33335 arr.push(0x02);
33336 constructLength(arr, s.length);
33337 var backHalf = arr.concat(s);
33338 var res = [ 0x30 ];
33339 constructLength(res, backHalf.length);
33340 res = res.concat(backHalf);
33341 return utils.encode(res, enc);
33342 };
33343
33344 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33345 'use strict';
33346
33347 var hash = require('hash.js');
33348 var elliptic = require('../../elliptic');
33349 var utils = elliptic.utils;
33350 var assert = utils.assert;
33351 var parseBytes = utils.parseBytes;
33352 var KeyPair = require('./key');
33353 var Signature = require('./signature');
33354
33355 function EDDSA(curve) {
33356 assert(curve === 'ed25519', 'only tested with ed25519 so far');
33357
33358 if (!(this instanceof EDDSA))
33359 return new EDDSA(curve);
33360
33361 var curve = elliptic.curves[curve].curve;
33362 this.curve = curve;
33363 this.g = curve.g;
33364 this.g.precompute(curve.n.bitLength() + 1);
33365
33366 this.pointClass = curve.point().constructor;
33367 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33368 this.hash = hash.sha512;
33369 }
33370
33371 module.exports = EDDSA;
33372
33373 /**
33374 * @param {Array|String} message - message bytes
33375 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
33376 * @returns {Signature} - signature
33377 */
33378 EDDSA.prototype.sign = function sign(message, secret) {
33379 message = parseBytes(message);
33380 var key = this.keyFromSecret(secret);
33381 var r = this.hashInt(key.messagePrefix(), message);
33382 var R = this.g.mul(r);
33383 var Rencoded = this.encodePoint(R);
33384 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33385 .mul(key.priv());
33386 var S = r.add(s_).umod(this.curve.n);
33387 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33388 };
33389
33390 /**
33391 * @param {Array} message - message bytes
33392 * @param {Array|String|Signature} sig - sig bytes
33393 * @param {Array|String|Point|KeyPair} pub - public key
33394 * @returns {Boolean} - true if public key matches sig of message
33395 */
33396 EDDSA.prototype.verify = function verify(message, sig, pub) {
33397 message = parseBytes(message);
33398 sig = this.makeSignature(sig);
33399 var key = this.keyFromPublic(pub);
33400 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33401 var SG = this.g.mul(sig.S());
33402 var RplusAh = sig.R().add(key.pub().mul(h));
33403 return RplusAh.eq(SG);
33404 };
33405
33406 EDDSA.prototype.hashInt = function hashInt() {
33407 var hash = this.hash();
33408 for (var i = 0; i < arguments.length; i++)
33409 hash.update(arguments[i]);
33410 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33411 };
33412
33413 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33414 return KeyPair.fromPublic(this, pub);
33415 };
33416
33417 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33418 return KeyPair.fromSecret(this, secret);
33419 };
33420
33421 EDDSA.prototype.makeSignature = function makeSignature(sig) {
33422 if (sig instanceof Signature)
33423 return sig;
33424 return new Signature(this, sig);
33425 };
33426
33427 /**
33428 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33429 *
33430 * EDDSA defines methods for encoding and decoding points and integers. These are
33431 * helper convenience methods, that pass along to utility functions implied
33432 * parameters.
33433 *
33434 */
33435 EDDSA.prototype.encodePoint = function encodePoint(point) {
33436 var enc = point.getY().toArray('le', this.encodingLength);
33437 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33438 return enc;
33439 };
33440
33441 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33442 bytes = utils.parseBytes(bytes);
33443
33444 var lastIx = bytes.length - 1;
33445 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33446 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
33447
33448 var y = utils.intFromLE(normed);
33449 return this.curve.pointFromY(y, xIsOdd);
33450 };
33451
33452 EDDSA.prototype.encodeInt = function encodeInt(num) {
33453 return num.toArray('le', this.encodingLength);
33454 };
33455
33456 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33457 return utils.intFromLE(bytes);
33458 };
33459
33460 EDDSA.prototype.isPoint = function isPoint(val) {
33461 return val instanceof this.pointClass;
33462 };
33463
33464 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33465 'use strict';
33466
33467 var elliptic = require('../../elliptic');
33468 var utils = elliptic.utils;
33469 var assert = utils.assert;
33470 var parseBytes = utils.parseBytes;
33471 var cachedProperty = utils.cachedProperty;
33472
33473 /**
33474 * @param {EDDSA} eddsa - instance
33475 * @param {Object} params - public/private key parameters
33476 *
33477 * @param {Array<Byte>} [params.secret] - secret seed bytes
33478 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33479 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33480 *
33481 */
33482 function KeyPair(eddsa, params) {
33483 this.eddsa = eddsa;
33484 this._secret = parseBytes(params.secret);
33485 if (eddsa.isPoint(params.pub))
33486 this._pub = params.pub;
33487 else
33488 this._pubBytes = parseBytes(params.pub);
33489 }
33490
33491 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33492 if (pub instanceof KeyPair)
33493 return pub;
33494 return new KeyPair(eddsa, { pub: pub });
33495 };
33496
33497 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33498 if (secret instanceof KeyPair)
33499 return secret;
33500 return new KeyPair(eddsa, { secret: secret });
33501 };
33502
33503 KeyPair.prototype.secret = function secret() {
33504 return this._secret;
33505 };
33506
33507 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33508 return this.eddsa.encodePoint(this.pub());
33509 });
33510
33511 cachedProperty(KeyPair, 'pub', function pub() {
33512 if (this._pubBytes)
33513 return this.eddsa.decodePoint(this._pubBytes);
33514 return this.eddsa.g.mul(this.priv());
33515 });
33516
33517 cachedProperty(KeyPair, 'privBytes', function privBytes() {
33518 var eddsa = this.eddsa;
33519 var hash = this.hash();
33520 var lastIx = eddsa.encodingLength - 1;
33521
33522 var a = hash.slice(0, eddsa.encodingLength);
33523 a[0] &= 248;
33524 a[lastIx] &= 127;
33525 a[lastIx] |= 64;
33526
33527 return a;
33528 });
33529
33530 cachedProperty(KeyPair, 'priv', function priv() {
33531 return this.eddsa.decodeInt(this.privBytes());
33532 });
33533
33534 cachedProperty(KeyPair, 'hash', function hash() {
33535 return this.eddsa.hash().update(this.secret()).digest();
33536 });
33537
33538 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33539 return this.hash().slice(this.eddsa.encodingLength);
33540 });
33541
33542 KeyPair.prototype.sign = function sign(message) {
33543 assert(this._secret, 'KeyPair can only verify');
33544 return this.eddsa.sign(message, this);
33545 };
33546
33547 KeyPair.prototype.verify = function verify(message, sig) {
33548 return this.eddsa.verify(message, sig, this);
33549 };
33550
33551 KeyPair.prototype.getSecret = function getSecret(enc) {
33552 assert(this._secret, 'KeyPair is public only');
33553 return utils.encode(this.secret(), enc);
33554 };
33555
33556 KeyPair.prototype.getPublic = function getPublic(enc) {
33557 return utils.encode(this.pubBytes(), enc);
33558 };
33559
33560 module.exports = KeyPair;
33561
33562 },{"../../elliptic":39}],51:[function(require,module,exports){
33563 'use strict';
33564
33565 var BN = require('bn.js');
33566 var elliptic = require('../../elliptic');
33567 var utils = elliptic.utils;
33568 var assert = utils.assert;
33569 var cachedProperty = utils.cachedProperty;
33570 var parseBytes = utils.parseBytes;
33571
33572 /**
33573 * @param {EDDSA} eddsa - eddsa instance
33574 * @param {Array<Bytes>|Object} sig -
33575 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33576 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33577 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33578 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33579 */
33580 function Signature(eddsa, sig) {
33581 this.eddsa = eddsa;
33582
33583 if (typeof sig !== 'object')
33584 sig = parseBytes(sig);
33585
33586 if (Array.isArray(sig)) {
33587 sig = {
33588 R: sig.slice(0, eddsa.encodingLength),
33589 S: sig.slice(eddsa.encodingLength)
33590 };
33591 }
33592
33593 assert(sig.R && sig.S, 'Signature without R or S');
33594
33595 if (eddsa.isPoint(sig.R))
33596 this._R = sig.R;
33597 if (sig.S instanceof BN)
33598 this._S = sig.S;
33599
33600 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33601 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
33602 }
33603
33604 cachedProperty(Signature, 'S', function S() {
33605 return this.eddsa.decodeInt(this.Sencoded());
33606 });
33607
33608 cachedProperty(Signature, 'R', function R() {
33609 return this.eddsa.decodePoint(this.Rencoded());
33610 });
33611
33612 cachedProperty(Signature, 'Rencoded', function Rencoded() {
33613 return this.eddsa.encodePoint(this.R());
33614 });
33615
33616 cachedProperty(Signature, 'Sencoded', function Sencoded() {
33617 return this.eddsa.encodeInt(this.S());
33618 });
33619
33620 Signature.prototype.toBytes = function toBytes() {
33621 return this.Rencoded().concat(this.Sencoded());
33622 };
33623
33624 Signature.prototype.toHex = function toHex() {
33625 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33626 };
33627
33628 module.exports = Signature;
33629
33630 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33631 'use strict';
33632
33633 var hash = require('hash.js');
33634 var elliptic = require('../elliptic');
33635 var utils = elliptic.utils;
33636 var assert = utils.assert;
33637
33638 function HmacDRBG(options) {
33639 if (!(this instanceof HmacDRBG))
33640 return new HmacDRBG(options);
33641 this.hash = options.hash;
33642 this.predResist = !!options.predResist;
33643
33644 this.outLen = this.hash.outSize;
33645 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
33646
33647 this.reseed = null;
33648 this.reseedInterval = null;
33649 this.K = null;
33650 this.V = null;
33651
33652 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33653 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33654 var pers = utils.toArray(options.pers, options.persEnc);
33655 assert(entropy.length >= (this.minEntropy / 8),
33656 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33657 this._init(entropy, nonce, pers);
33658 }
33659 module.exports = HmacDRBG;
33660
33661 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33662 var seed = entropy.concat(nonce).concat(pers);
33663
33664 this.K = new Array(this.outLen / 8);
33665 this.V = new Array(this.outLen / 8);
33666 for (var i = 0; i < this.V.length; i++) {
33667 this.K[i] = 0x00;
33668 this.V[i] = 0x01;
33669 }
33670
33671 this._update(seed);
33672 this.reseed = 1;
33673 this.reseedInterval = 0x1000000000000; // 2^48
33674 };
33675
33676 HmacDRBG.prototype._hmac = function hmac() {
33677 return new hash.hmac(this.hash, this.K);
33678 };
33679
33680 HmacDRBG.prototype._update = function update(seed) {
33681 var kmac = this._hmac()
33682 .update(this.V)
33683 .update([ 0x00 ]);
33684 if (seed)
33685 kmac = kmac.update(seed);
33686 this.K = kmac.digest();
33687 this.V = this._hmac().update(this.V).digest();
33688 if (!seed)
33689 return;
33690
33691 this.K = this._hmac()
33692 .update(this.V)
33693 .update([ 0x01 ])
33694 .update(seed)
33695 .digest();
33696 this.V = this._hmac().update(this.V).digest();
33697 };
33698
33699 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33700 // Optional entropy enc
33701 if (typeof entropyEnc !== 'string') {
33702 addEnc = add;
33703 add = entropyEnc;
33704 entropyEnc = null;
33705 }
33706
33707 entropy = utils.toBuffer(entropy, entropyEnc);
33708 add = utils.toBuffer(add, addEnc);
33709
33710 assert(entropy.length >= (this.minEntropy / 8),
33711 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33712
33713 this._update(entropy.concat(add || []));
33714 this.reseed = 1;
33715 };
33716
33717 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33718 if (this.reseed > this.reseedInterval)
33719 throw new Error('Reseed is required');
33720
33721 // Optional encoding
33722 if (typeof enc !== 'string') {
33723 addEnc = add;
33724 add = enc;
33725 enc = null;
33726 }
33727
33728 // Optional additional data
33729 if (add) {
33730 add = utils.toArray(add, addEnc);
33731 this._update(add);
33732 }
33733
33734 var temp = [];
33735 while (temp.length < len) {
33736 this.V = this._hmac().update(this.V).digest();
33737 temp = temp.concat(this.V);
33738 }
33739
33740 var res = temp.slice(0, len);
33741 this._update(add);
33742 this.reseed++;
33743 return utils.encode(res, enc);
33744 };
33745
33746 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33747 module.exports = {
33748 doubles: {
33749 step: 4,
33750 points: [
33751 [
33752 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33753 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33754 ],
33755 [
33756 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33757 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33758 ],
33759 [
33760 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33761 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33762 ],
33763 [
33764 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33765 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33766 ],
33767 [
33768 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33769 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33770 ],
33771 [
33772 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33773 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33774 ],
33775 [
33776 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33777 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33778 ],
33779 [
33780 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33781 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33782 ],
33783 [
33784 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33785 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33786 ],
33787 [
33788 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33789 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33790 ],
33791 [
33792 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33793 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33794 ],
33795 [
33796 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33797 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33798 ],
33799 [
33800 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33801 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33802 ],
33803 [
33804 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33805 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33806 ],
33807 [
33808 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33809 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33810 ],
33811 [
33812 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33813 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33814 ],
33815 [
33816 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33817 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33818 ],
33819 [
33820 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33821 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33822 ],
33823 [
33824 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33825 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33826 ],
33827 [
33828 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33829 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33830 ],
33831 [
33832 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33833 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33834 ],
33835 [
33836 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33837 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33838 ],
33839 [
33840 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33841 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33842 ],
33843 [
33844 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33845 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33846 ],
33847 [
33848 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33849 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33850 ],
33851 [
33852 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33853 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33854 ],
33855 [
33856 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33857 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33858 ],
33859 [
33860 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33861 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33862 ],
33863 [
33864 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33865 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33866 ],
33867 [
33868 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33869 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33870 ],
33871 [
33872 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33873 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33874 ],
33875 [
33876 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33877 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33878 ],
33879 [
33880 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33881 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33882 ],
33883 [
33884 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33885 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33886 ],
33887 [
33888 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33889 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33890 ],
33891 [
33892 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33893 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33894 ],
33895 [
33896 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33897 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33898 ],
33899 [
33900 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33901 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33902 ],
33903 [
33904 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33905 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33906 ],
33907 [
33908 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33909 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33910 ],
33911 [
33912 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33913 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33914 ],
33915 [
33916 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33917 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33918 ],
33919 [
33920 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33921 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33922 ],
33923 [
33924 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33925 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33926 ],
33927 [
33928 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33929 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33930 ],
33931 [
33932 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33933 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33934 ],
33935 [
33936 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33937 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33938 ],
33939 [
33940 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33941 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33942 ],
33943 [
33944 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33945 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33946 ],
33947 [
33948 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33949 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33950 ],
33951 [
33952 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33953 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
33954 ],
33955 [
33956 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
33957 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
33958 ],
33959 [
33960 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
33961 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
33962 ],
33963 [
33964 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
33965 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
33966 ],
33967 [
33968 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
33969 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
33970 ],
33971 [
33972 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
33973 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
33974 ],
33975 [
33976 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
33977 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
33978 ],
33979 [
33980 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
33981 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
33982 ],
33983 [
33984 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
33985 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
33986 ],
33987 [
33988 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
33989 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
33990 ],
33991 [
33992 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
33993 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
33994 ],
33995 [
33996 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
33997 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
33998 ],
33999 [
34000 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34001 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34002 ],
34003 [
34004 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34005 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34006 ],
34007 [
34008 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34009 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34010 ]
34011 ]
34012 },
34013 naf: {
34014 wnd: 7,
34015 points: [
34016 [
34017 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34018 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34019 ],
34020 [
34021 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34022 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34023 ],
34024 [
34025 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34026 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34027 ],
34028 [
34029 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34030 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34031 ],
34032 [
34033 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34034 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34035 ],
34036 [
34037 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34038 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34039 ],
34040 [
34041 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34042 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34043 ],
34044 [
34045 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34046 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34047 ],
34048 [
34049 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34050 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34051 ],
34052 [
34053 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34054 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34055 ],
34056 [
34057 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34058 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34059 ],
34060 [
34061 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34062 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34063 ],
34064 [
34065 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34066 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34067 ],
34068 [
34069 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34070 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34071 ],
34072 [
34073 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34074 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34075 ],
34076 [
34077 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34078 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34079 ],
34080 [
34081 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34082 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34083 ],
34084 [
34085 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34086 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34087 ],
34088 [
34089 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34090 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34091 ],
34092 [
34093 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34094 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34095 ],
34096 [
34097 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34098 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34099 ],
34100 [
34101 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34102 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34103 ],
34104 [
34105 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34106 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34107 ],
34108 [
34109 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34110 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34111 ],
34112 [
34113 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34114 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34115 ],
34116 [
34117 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34118 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34119 ],
34120 [
34121 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34122 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34123 ],
34124 [
34125 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34126 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34127 ],
34128 [
34129 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34130 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34131 ],
34132 [
34133 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34134 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34135 ],
34136 [
34137 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34138 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34139 ],
34140 [
34141 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34142 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34143 ],
34144 [
34145 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34146 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34147 ],
34148 [
34149 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34150 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34151 ],
34152 [
34153 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34154 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34155 ],
34156 [
34157 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34158 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34159 ],
34160 [
34161 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34162 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34163 ],
34164 [
34165 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34166 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34167 ],
34168 [
34169 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34170 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34171 ],
34172 [
34173 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34174 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34175 ],
34176 [
34177 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34178 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34179 ],
34180 [
34181 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34182 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34183 ],
34184 [
34185 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34186 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34187 ],
34188 [
34189 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34190 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34191 ],
34192 [
34193 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34194 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34195 ],
34196 [
34197 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34198 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34199 ],
34200 [
34201 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34202 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34203 ],
34204 [
34205 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34206 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34207 ],
34208 [
34209 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34210 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34211 ],
34212 [
34213 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34214 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34215 ],
34216 [
34217 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34218 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34219 ],
34220 [
34221 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34222 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34223 ],
34224 [
34225 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34226 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34227 ],
34228 [
34229 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34230 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34231 ],
34232 [
34233 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34234 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34235 ],
34236 [
34237 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34238 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34239 ],
34240 [
34241 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34242 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34243 ],
34244 [
34245 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34246 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34247 ],
34248 [
34249 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34250 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34251 ],
34252 [
34253 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34254 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34255 ],
34256 [
34257 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34258 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34259 ],
34260 [
34261 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34262 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34263 ],
34264 [
34265 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34266 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34267 ],
34268 [
34269 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34270 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34271 ],
34272 [
34273 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34274 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34275 ],
34276 [
34277 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34278 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34279 ],
34280 [
34281 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34282 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34283 ],
34284 [
34285 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34286 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34287 ],
34288 [
34289 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34290 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34291 ],
34292 [
34293 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34294 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34295 ],
34296 [
34297 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34298 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34299 ],
34300 [
34301 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34302 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34303 ],
34304 [
34305 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34306 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34307 ],
34308 [
34309 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34310 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34311 ],
34312 [
34313 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34314 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34315 ],
34316 [
34317 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34318 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34319 ],
34320 [
34321 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34322 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34323 ],
34324 [
34325 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34326 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34327 ],
34328 [
34329 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34330 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34331 ],
34332 [
34333 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34334 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34335 ],
34336 [
34337 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34338 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34339 ],
34340 [
34341 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34342 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34343 ],
34344 [
34345 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34346 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34347 ],
34348 [
34349 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34350 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34351 ],
34352 [
34353 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34354 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34355 ],
34356 [
34357 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34358 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34359 ],
34360 [
34361 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34362 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34363 ],
34364 [
34365 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34366 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34367 ],
34368 [
34369 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34370 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34371 ],
34372 [
34373 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34374 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34375 ],
34376 [
34377 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34378 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34379 ],
34380 [
34381 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34382 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34383 ],
34384 [
34385 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34386 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34387 ],
34388 [
34389 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34390 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34391 ],
34392 [
34393 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34394 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34395 ],
34396 [
34397 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34398 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34399 ],
34400 [
34401 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34402 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34403 ],
34404 [
34405 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34406 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34407 ],
34408 [
34409 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34410 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34411 ],
34412 [
34413 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34414 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34415 ],
34416 [
34417 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34418 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34419 ],
34420 [
34421 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34422 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34423 ],
34424 [
34425 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34426 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34427 ],
34428 [
34429 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34430 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34431 ],
34432 [
34433 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34434 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34435 ],
34436 [
34437 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34438 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34439 ],
34440 [
34441 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34442 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34443 ],
34444 [
34445 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34446 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34447 ],
34448 [
34449 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34450 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34451 ],
34452 [
34453 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34454 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34455 ],
34456 [
34457 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34458 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34459 ],
34460 [
34461 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34462 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34463 ],
34464 [
34465 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34466 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34467 ],
34468 [
34469 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34470 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34471 ],
34472 [
34473 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34474 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34475 ],
34476 [
34477 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34478 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34479 ],
34480 [
34481 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34482 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34483 ],
34484 [
34485 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34486 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34487 ],
34488 [
34489 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34490 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34491 ],
34492 [
34493 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34494 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34495 ],
34496 [
34497 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34498 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34499 ],
34500 [
34501 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34502 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34503 ],
34504 [
34505 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34506 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34507 ],
34508 [
34509 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34510 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34511 ],
34512 [
34513 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34514 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34515 ],
34516 [
34517 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34518 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34519 ],
34520 [
34521 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34522 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34523 ]
34524 ]
34525 }
34526 };
34527
34528 },{}],54:[function(require,module,exports){
34529 'use strict';
34530
34531 var utils = exports;
34532 var BN = require('bn.js');
34533
34534 utils.assert = function assert(val, msg) {
34535 if (!val)
34536 throw new Error(msg || 'Assertion failed');
34537 };
34538
34539 function toArray(msg, enc) {
34540 if (Array.isArray(msg))
34541 return msg.slice();
34542 if (!msg)
34543 return [];
34544 var res = [];
34545 if (typeof msg !== 'string') {
34546 for (var i = 0; i < msg.length; i++)
34547 res[i] = msg[i] | 0;
34548 return res;
34549 }
34550 if (!enc) {
34551 for (var i = 0; i < msg.length; i++) {
34552 var c = msg.charCodeAt(i);
34553 var hi = c >> 8;
34554 var lo = c & 0xff;
34555 if (hi)
34556 res.push(hi, lo);
34557 else
34558 res.push(lo);
34559 }
34560 } else if (enc === 'hex') {
34561 msg = msg.replace(/[^a-z0-9]+/ig, '');
34562 if (msg.length % 2 !== 0)
34563 msg = '0' + msg;
34564 for (var i = 0; i < msg.length; i += 2)
34565 res.push(parseInt(msg[i] + msg[i + 1], 16));
34566 }
34567 return res;
34568 }
34569 utils.toArray = toArray;
34570
34571 function zero2(word) {
34572 if (word.length === 1)
34573 return '0' + word;
34574 else
34575 return word;
34576 }
34577 utils.zero2 = zero2;
34578
34579 function toHex(msg) {
34580 var res = '';
34581 for (var i = 0; i < msg.length; i++)
34582 res += zero2(msg[i].toString(16));
34583 return res;
34584 }
34585 utils.toHex = toHex;
34586
34587 utils.encode = function encode(arr, enc) {
34588 if (enc === 'hex')
34589 return toHex(arr);
34590 else
34591 return arr;
34592 };
34593
34594 // Represent num in a w-NAF form
34595 function getNAF(num, w) {
34596 var naf = [];
34597 var ws = 1 << (w + 1);
34598 var k = num.clone();
34599 while (k.cmpn(1) >= 0) {
34600 var z;
34601 if (k.isOdd()) {
34602 var mod = k.andln(ws - 1);
34603 if (mod > (ws >> 1) - 1)
34604 z = (ws >> 1) - mod;
34605 else
34606 z = mod;
34607 k.isubn(z);
34608 } else {
34609 z = 0;
34610 }
34611 naf.push(z);
34612
34613 // Optimization, shift by word if possible
34614 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34615 for (var i = 1; i < shift; i++)
34616 naf.push(0);
34617 k.iushrn(shift);
34618 }
34619
34620 return naf;
34621 }
34622 utils.getNAF = getNAF;
34623
34624 // Represent k1, k2 in a Joint Sparse Form
34625 function getJSF(k1, k2) {
34626 var jsf = [
34627 [],
34628 []
34629 ];
34630
34631 k1 = k1.clone();
34632 k2 = k2.clone();
34633 var d1 = 0;
34634 var d2 = 0;
34635 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34636
34637 // First phase
34638 var m14 = (k1.andln(3) + d1) & 3;
34639 var m24 = (k2.andln(3) + d2) & 3;
34640 if (m14 === 3)
34641 m14 = -1;
34642 if (m24 === 3)
34643 m24 = -1;
34644 var u1;
34645 if ((m14 & 1) === 0) {
34646 u1 = 0;
34647 } else {
34648 var m8 = (k1.andln(7) + d1) & 7;
34649 if ((m8 === 3 || m8 === 5) && m24 === 2)
34650 u1 = -m14;
34651 else
34652 u1 = m14;
34653 }
34654 jsf[0].push(u1);
34655
34656 var u2;
34657 if ((m24 & 1) === 0) {
34658 u2 = 0;
34659 } else {
34660 var m8 = (k2.andln(7) + d2) & 7;
34661 if ((m8 === 3 || m8 === 5) && m14 === 2)
34662 u2 = -m24;
34663 else
34664 u2 = m24;
34665 }
34666 jsf[1].push(u2);
34667
34668 // Second phase
34669 if (2 * d1 === u1 + 1)
34670 d1 = 1 - d1;
34671 if (2 * d2 === u2 + 1)
34672 d2 = 1 - d2;
34673 k1.iushrn(1);
34674 k2.iushrn(1);
34675 }
34676
34677 return jsf;
34678 }
34679 utils.getJSF = getJSF;
34680
34681 function cachedProperty(obj, name, computer) {
34682 var key = '_' + name;
34683 obj.prototype[name] = function cachedProperty() {
34684 return this[key] !== undefined ? this[key] :
34685 this[key] = computer.call(this);
34686 };
34687 }
34688 utils.cachedProperty = cachedProperty;
34689
34690 function parseBytes(bytes) {
34691 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34692 bytes;
34693 }
34694 utils.parseBytes = parseBytes;
34695
34696 function intFromLE(bytes) {
34697 return new BN(bytes, 'hex', 'le');
34698 }
34699 utils.intFromLE = intFromLE;
34700
34701
34702 },{"bn.js":33}],55:[function(require,module,exports){
34703 module.exports={
34704 "_args": [
34705 [
34706 {
34707 "raw": "elliptic@^6.2.3",
34708 "scope": null,
34709 "escapedName": "elliptic",
34710 "name": "elliptic",
34711 "rawSpec": "^6.2.3",
34712 "spec": ">=6.2.3 <7.0.0",
34713 "type": "range"
34714 },
34715 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34716 ]
34717 ],
34718 "_from": "elliptic@>=6.2.3 <7.0.0",
34719 "_id": "elliptic@6.3.3",
34720 "_inCache": true,
34721 "_location": "/elliptic",
34722 "_nodeVersion": "7.0.0",
34723 "_npmOperationalInternal": {
34724 "host": "packages-18-east.internal.npmjs.com",
34725 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34726 },
34727 "_npmUser": {
34728 "name": "indutny",
34729 "email": "fedor@indutny.com"
34730 },
34731 "_npmVersion": "3.10.8",
34732 "_phantomChildren": {},
34733 "_requested": {
34734 "raw": "elliptic@^6.2.3",
34735 "scope": null,
34736 "escapedName": "elliptic",
34737 "name": "elliptic",
34738 "rawSpec": "^6.2.3",
34739 "spec": ">=6.2.3 <7.0.0",
34740 "type": "range"
34741 },
34742 "_requiredBy": [
34743 "/browserify-sign",
34744 "/create-ecdh",
34745 "/secp256k1"
34746 ],
34747 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34748 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34749 "_shrinkwrap": null,
34750 "_spec": "elliptic@^6.2.3",
34751 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34752 "author": {
34753 "name": "Fedor Indutny",
34754 "email": "fedor@indutny.com"
34755 },
34756 "bugs": {
34757 "url": "https://github.com/indutny/elliptic/issues"
34758 },
34759 "dependencies": {
34760 "bn.js": "^4.4.0",
34761 "brorand": "^1.0.1",
34762 "hash.js": "^1.0.0",
34763 "inherits": "^2.0.1"
34764 },
34765 "description": "EC cryptography",
34766 "devDependencies": {
34767 "brfs": "^1.4.3",
34768 "coveralls": "^2.11.3",
34769 "grunt": "^0.4.5",
34770 "grunt-browserify": "^5.0.0",
34771 "grunt-cli": "^1.2.0",
34772 "grunt-contrib-connect": "^1.0.0",
34773 "grunt-contrib-copy": "^1.0.0",
34774 "grunt-contrib-uglify": "^1.0.1",
34775 "grunt-mocha-istanbul": "^3.0.1",
34776 "grunt-saucelabs": "^8.6.2",
34777 "istanbul": "^0.4.2",
34778 "jscs": "^2.9.0",
34779 "jshint": "^2.6.0",
34780 "mocha": "^2.1.0"
34781 },
34782 "directories": {},
34783 "dist": {
34784 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34785 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34786 },
34787 "files": [
34788 "lib"
34789 ],
34790 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34791 "homepage": "https://github.com/indutny/elliptic",
34792 "keywords": [
34793 "EC",
34794 "Elliptic",
34795 "curve",
34796 "Cryptography"
34797 ],
34798 "license": "MIT",
34799 "main": "lib/elliptic.js",
34800 "maintainers": [
34801 {
34802 "name": "indutny",
34803 "email": "fedor@indutny.com"
34804 }
34805 ],
34806 "name": "elliptic",
34807 "optionalDependencies": {},
34808 "readme": "ERROR: No README data found!",
34809 "repository": {
34810 "type": "git",
34811 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34812 },
34813 "scripts": {
34814 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34815 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34816 "lint": "npm run jscs && npm run jshint",
34817 "test": "npm run lint && npm run unit",
34818 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34819 "version": "grunt dist && git add dist/"
34820 },
34821 "version": "6.3.3"
34822 }
34823
34824 },{}],56:[function(require,module,exports){
34825 (function (Buffer){
34826 'use strict';
34827
34828 var isHexPrefixed = require('is-hex-prefixed');
34829 var stripHexPrefix = require('strip-hex-prefix');
34830
34831 /**
34832 * Pads a `String` to have an even length
34833 * @param {String} value
34834 * @return {String} output
34835 */
34836 function padToEven(value) {
34837 var a = value; // eslint-disable-line
34838
34839 if (typeof a !== 'string') {
34840 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34841 }
34842
34843 if (a.length % 2) {
34844 a = '0' + a;
34845 }
34846
34847 return a;
34848 }
34849
34850 /**
34851 * Converts a `Number` into a hex `String`
34852 * @param {Number} i
34853 * @return {String}
34854 */
34855 function intToHex(i) {
34856 var hex = i.toString(16); // eslint-disable-line
34857
34858 return '0x' + padToEven(hex);
34859 }
34860
34861 /**
34862 * Converts an `Number` to a `Buffer`
34863 * @param {Number} i
34864 * @return {Buffer}
34865 */
34866 function intToBuffer(i) {
34867 var hex = intToHex(i);
34868
34869 return new Buffer(hex.slice(2), 'hex');
34870 }
34871
34872 /**
34873 * Get the binary size of a string
34874 * @param {String} str
34875 * @return {Number}
34876 */
34877 function getBinarySize(str) {
34878 if (typeof str !== 'string') {
34879 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34880 }
34881
34882 return Buffer.byteLength(str, 'utf8');
34883 }
34884
34885 /**
34886 * Returns TRUE if the first specified array contains all elements
34887 * from the second one. FALSE otherwise.
34888 *
34889 * @param {array} superset
34890 * @param {array} subset
34891 *
34892 * @returns {boolean}
34893 */
34894 function arrayContainsArray(superset, subset, some) {
34895 if (Array.isArray(superset) !== true) {
34896 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34897 }
34898 if (Array.isArray(subset) !== true) {
34899 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
34900 }
34901
34902 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34903 return superset.indexOf(value) >= 0;
34904 });
34905 }
34906
34907 /**
34908 * Should be called to get utf8 from it's hex representation
34909 *
34910 * @method toUtf8
34911 * @param {String} string in hex
34912 * @returns {String} ascii string representation of hex value
34913 */
34914 function toUtf8(hex) {
34915 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
34916
34917 return bufferValue.toString('utf8');
34918 }
34919
34920 /**
34921 * Should be called to get ascii from it's hex representation
34922 *
34923 * @method toAscii
34924 * @param {String} string in hex
34925 * @returns {String} ascii string representation of hex value
34926 */
34927 function toAscii(hex) {
34928 var str = ''; // eslint-disable-line
34929 var i = 0,
34930 l = hex.length; // eslint-disable-line
34931
34932 if (hex.substring(0, 2) === '0x') {
34933 i = 2;
34934 }
34935
34936 for (; i < l; i += 2) {
34937 var code = parseInt(hex.substr(i, 2), 16);
34938 str += String.fromCharCode(code);
34939 }
34940
34941 return str;
34942 }
34943
34944 /**
34945 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34946 *
34947 * @method fromUtf8
34948 * @param {String} string
34949 * @param {Number} optional padding
34950 * @returns {String} hex representation of input string
34951 */
34952 function fromUtf8(stringValue) {
34953 var str = new Buffer(stringValue, 'utf8');
34954
34955 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
34956 }
34957
34958 /**
34959 * Should be called to get hex representation (prefixed by 0x) of ascii string
34960 *
34961 * @method fromAscii
34962 * @param {String} string
34963 * @param {Number} optional padding
34964 * @returns {String} hex representation of input string
34965 */
34966 function fromAscii(stringValue) {
34967 var hex = ''; // eslint-disable-line
34968 for (var i = 0; i < stringValue.length; i++) {
34969 // eslint-disable-line
34970 var code = stringValue.charCodeAt(i);
34971 var n = code.toString(16);
34972 hex += n.length < 2 ? '0' + n : n;
34973 }
34974
34975 return '0x' + hex;
34976 }
34977
34978 /**
34979 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
34980 *
34981 * @method getKeys get specific key from inner object array of objects
34982 * @param {String} params
34983 * @param {String} key
34984 * @param {Boolean} allowEmpty
34985 * @returns {Array} output just a simple array of output keys
34986 */
34987 function getKeys(params, key, allowEmpty) {
34988 if (!Array.isArray(params)) {
34989 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
34990 }
34991 if (typeof key !== 'string') {
34992 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
34993 }
34994
34995 var result = []; // eslint-disable-line
34996
34997 for (var i = 0; i < params.length; i++) {
34998 // eslint-disable-line
34999 var value = params[i][key]; // eslint-disable-line
35000 if (allowEmpty && !value) {
35001 value = '';
35002 } else if (typeof value !== 'string') {
35003 throw new Error('invalid abi');
35004 }
35005 result.push(value);
35006 }
35007
35008 return result;
35009 }
35010
35011 /**
35012 * Is the string a hex string.
35013 *
35014 * @method check if string is hex string of specific length
35015 * @param {String} value
35016 * @param {Number} length
35017 * @returns {Boolean} output the string is a hex string
35018 */
35019 function isHexString(value, length) {
35020 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35021 return false;
35022 }
35023
35024 if (length && value.length !== 2 + 2 * length) {
35025 return false;
35026 }
35027
35028 return true;
35029 }
35030
35031 module.exports = {
35032 arrayContainsArray: arrayContainsArray,
35033 intToBuffer: intToBuffer,
35034 getBinarySize: getBinarySize,
35035 isHexPrefixed: isHexPrefixed,
35036 stripHexPrefix: stripHexPrefix,
35037 padToEven: padToEven,
35038 intToHex: intToHex,
35039 fromAscii: fromAscii,
35040 fromUtf8: fromUtf8,
35041 toAscii: toAscii,
35042 toUtf8: toUtf8,
35043 getKeys: getKeys,
35044 isHexString: isHexString
35045 };
35046 }).call(this,require("buffer").Buffer)
35047 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35048 var hash = exports;
35049
35050 hash.utils = require('./hash/utils');
35051 hash.common = require('./hash/common');
35052 hash.sha = require('./hash/sha');
35053 hash.ripemd = require('./hash/ripemd');
35054 hash.hmac = require('./hash/hmac');
35055
35056 // Proxy hash functions to the main object
35057 hash.sha1 = hash.sha.sha1;
35058 hash.sha256 = hash.sha.sha256;
35059 hash.sha224 = hash.sha.sha224;
35060 hash.sha384 = hash.sha.sha384;
35061 hash.sha512 = hash.sha.sha512;
35062 hash.ripemd160 = hash.ripemd.ripemd160;
35063
35064 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35065 var hash = require('../hash');
35066 var utils = hash.utils;
35067 var assert = utils.assert;
35068
35069 function BlockHash() {
35070 this.pending = null;
35071 this.pendingTotal = 0;
35072 this.blockSize = this.constructor.blockSize;
35073 this.outSize = this.constructor.outSize;
35074 this.hmacStrength = this.constructor.hmacStrength;
35075 this.padLength = this.constructor.padLength / 8;
35076 this.endian = 'big';
35077
35078 this._delta8 = this.blockSize / 8;
35079 this._delta32 = this.blockSize / 32;
35080 }
35081 exports.BlockHash = BlockHash;
35082
35083 BlockHash.prototype.update = function update(msg, enc) {
35084 // Convert message to array, pad it, and join into 32bit blocks
35085 msg = utils.toArray(msg, enc);
35086 if (!this.pending)
35087 this.pending = msg;
35088 else
35089 this.pending = this.pending.concat(msg);
35090 this.pendingTotal += msg.length;
35091
35092 // Enough data, try updating
35093 if (this.pending.length >= this._delta8) {
35094 msg = this.pending;
35095
35096 // Process pending data in blocks
35097 var r = msg.length % this._delta8;
35098 this.pending = msg.slice(msg.length - r, msg.length);
35099 if (this.pending.length === 0)
35100 this.pending = null;
35101
35102 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35103 for (var i = 0; i < msg.length; i += this._delta32)
35104 this._update(msg, i, i + this._delta32);
35105 }
35106
35107 return this;
35108 };
35109
35110 BlockHash.prototype.digest = function digest(enc) {
35111 this.update(this._pad());
35112 assert(this.pending === null);
35113
35114 return this._digest(enc);
35115 };
35116
35117 BlockHash.prototype._pad = function pad() {
35118 var len = this.pendingTotal;
35119 var bytes = this._delta8;
35120 var k = bytes - ((len + this.padLength) % bytes);
35121 var res = new Array(k + this.padLength);
35122 res[0] = 0x80;
35123 for (var i = 1; i < k; i++)
35124 res[i] = 0;
35125
35126 // Append length
35127 len <<= 3;
35128 if (this.endian === 'big') {
35129 for (var t = 8; t < this.padLength; t++)
35130 res[i++] = 0;
35131
35132 res[i++] = 0;
35133 res[i++] = 0;
35134 res[i++] = 0;
35135 res[i++] = 0;
35136 res[i++] = (len >>> 24) & 0xff;
35137 res[i++] = (len >>> 16) & 0xff;
35138 res[i++] = (len >>> 8) & 0xff;
35139 res[i++] = len & 0xff;
35140 } else {
35141 res[i++] = len & 0xff;
35142 res[i++] = (len >>> 8) & 0xff;
35143 res[i++] = (len >>> 16) & 0xff;
35144 res[i++] = (len >>> 24) & 0xff;
35145 res[i++] = 0;
35146 res[i++] = 0;
35147 res[i++] = 0;
35148 res[i++] = 0;
35149
35150 for (var t = 8; t < this.padLength; t++)
35151 res[i++] = 0;
35152 }
35153
35154 return res;
35155 };
35156
35157 },{"../hash":57}],59:[function(require,module,exports){
35158 var hmac = exports;
35159
35160 var hash = require('../hash');
35161 var utils = hash.utils;
35162 var assert = utils.assert;
35163
35164 function Hmac(hash, key, enc) {
35165 if (!(this instanceof Hmac))
35166 return new Hmac(hash, key, enc);
35167 this.Hash = hash;
35168 this.blockSize = hash.blockSize / 8;
35169 this.outSize = hash.outSize / 8;
35170 this.inner = null;
35171 this.outer = null;
35172
35173 this._init(utils.toArray(key, enc));
35174 }
35175 module.exports = Hmac;
35176
35177 Hmac.prototype._init = function init(key) {
35178 // Shorten key, if needed
35179 if (key.length > this.blockSize)
35180 key = new this.Hash().update(key).digest();
35181 assert(key.length <= this.blockSize);
35182
35183 // Add padding to key
35184 for (var i = key.length; i < this.blockSize; i++)
35185 key.push(0);
35186
35187 for (var i = 0; i < key.length; i++)
35188 key[i] ^= 0x36;
35189 this.inner = new this.Hash().update(key);
35190
35191 // 0x36 ^ 0x5c = 0x6a
35192 for (var i = 0; i < key.length; i++)
35193 key[i] ^= 0x6a;
35194 this.outer = new this.Hash().update(key);
35195 };
35196
35197 Hmac.prototype.update = function update(msg, enc) {
35198 this.inner.update(msg, enc);
35199 return this;
35200 };
35201
35202 Hmac.prototype.digest = function digest(enc) {
35203 this.outer.update(this.inner.digest());
35204 return this.outer.digest(enc);
35205 };
35206
35207 },{"../hash":57}],60:[function(require,module,exports){
35208 var hash = require('../hash');
35209 var utils = hash.utils;
35210
35211 var rotl32 = utils.rotl32;
35212 var sum32 = utils.sum32;
35213 var sum32_3 = utils.sum32_3;
35214 var sum32_4 = utils.sum32_4;
35215 var BlockHash = hash.common.BlockHash;
35216
35217 function RIPEMD160() {
35218 if (!(this instanceof RIPEMD160))
35219 return new RIPEMD160();
35220
35221 BlockHash.call(this);
35222
35223 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35224 this.endian = 'little';
35225 }
35226 utils.inherits(RIPEMD160, BlockHash);
35227 exports.ripemd160 = RIPEMD160;
35228
35229 RIPEMD160.blockSize = 512;
35230 RIPEMD160.outSize = 160;
35231 RIPEMD160.hmacStrength = 192;
35232 RIPEMD160.padLength = 64;
35233
35234 RIPEMD160.prototype._update = function update(msg, start) {
35235 var A = this.h[0];
35236 var B = this.h[1];
35237 var C = this.h[2];
35238 var D = this.h[3];
35239 var E = this.h[4];
35240 var Ah = A;
35241 var Bh = B;
35242 var Ch = C;
35243 var Dh = D;
35244 var Eh = E;
35245 for (var j = 0; j < 80; j++) {
35246 var T = sum32(
35247 rotl32(
35248 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35249 s[j]),
35250 E);
35251 A = E;
35252 E = D;
35253 D = rotl32(C, 10);
35254 C = B;
35255 B = T;
35256 T = sum32(
35257 rotl32(
35258 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35259 sh[j]),
35260 Eh);
35261 Ah = Eh;
35262 Eh = Dh;
35263 Dh = rotl32(Ch, 10);
35264 Ch = Bh;
35265 Bh = T;
35266 }
35267 T = sum32_3(this.h[1], C, Dh);
35268 this.h[1] = sum32_3(this.h[2], D, Eh);
35269 this.h[2] = sum32_3(this.h[3], E, Ah);
35270 this.h[3] = sum32_3(this.h[4], A, Bh);
35271 this.h[4] = sum32_3(this.h[0], B, Ch);
35272 this.h[0] = T;
35273 };
35274
35275 RIPEMD160.prototype._digest = function digest(enc) {
35276 if (enc === 'hex')
35277 return utils.toHex32(this.h, 'little');
35278 else
35279 return utils.split32(this.h, 'little');
35280 };
35281
35282 function f(j, x, y, z) {
35283 if (j <= 15)
35284 return x ^ y ^ z;
35285 else if (j <= 31)
35286 return (x & y) | ((~x) & z);
35287 else if (j <= 47)
35288 return (x | (~y)) ^ z;
35289 else if (j <= 63)
35290 return (x & z) | (y & (~z));
35291 else
35292 return x ^ (y | (~z));
35293 }
35294
35295 function K(j) {
35296 if (j <= 15)
35297 return 0x00000000;
35298 else if (j <= 31)
35299 return 0x5a827999;
35300 else if (j <= 47)
35301 return 0x6ed9eba1;
35302 else if (j <= 63)
35303 return 0x8f1bbcdc;
35304 else
35305 return 0xa953fd4e;
35306 }
35307
35308 function Kh(j) {
35309 if (j <= 15)
35310 return 0x50a28be6;
35311 else if (j <= 31)
35312 return 0x5c4dd124;
35313 else if (j <= 47)
35314 return 0x6d703ef3;
35315 else if (j <= 63)
35316 return 0x7a6d76e9;
35317 else
35318 return 0x00000000;
35319 }
35320
35321 var r = [
35322 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35323 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35324 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35325 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35326 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35327 ];
35328
35329 var rh = [
35330 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35331 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35332 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35333 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35334 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35335 ];
35336
35337 var s = [
35338 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35339 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35340 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35341 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35342 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35343 ];
35344
35345 var sh = [
35346 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35347 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35348 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35349 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35350 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35351 ];
35352
35353 },{"../hash":57}],61:[function(require,module,exports){
35354 var hash = require('../hash');
35355 var utils = hash.utils;
35356 var assert = utils.assert;
35357
35358 var rotr32 = utils.rotr32;
35359 var rotl32 = utils.rotl32;
35360 var sum32 = utils.sum32;
35361 var sum32_4 = utils.sum32_4;
35362 var sum32_5 = utils.sum32_5;
35363 var rotr64_hi = utils.rotr64_hi;
35364 var rotr64_lo = utils.rotr64_lo;
35365 var shr64_hi = utils.shr64_hi;
35366 var shr64_lo = utils.shr64_lo;
35367 var sum64 = utils.sum64;
35368 var sum64_hi = utils.sum64_hi;
35369 var sum64_lo = utils.sum64_lo;
35370 var sum64_4_hi = utils.sum64_4_hi;
35371 var sum64_4_lo = utils.sum64_4_lo;
35372 var sum64_5_hi = utils.sum64_5_hi;
35373 var sum64_5_lo = utils.sum64_5_lo;
35374 var BlockHash = hash.common.BlockHash;
35375
35376 var sha256_K = [
35377 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35378 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35379 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35380 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35381 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35382 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35383 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35384 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35385 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35386 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35387 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35388 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35389 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35390 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35391 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35392 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35393 ];
35394
35395 var sha512_K = [
35396 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35397 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35398 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35399 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35400 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35401 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35402 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35403 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35404 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35405 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35406 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35407 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35408 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35409 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35410 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35411 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35412 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35413 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35414 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35415 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35416 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35417 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35418 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35419 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35420 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35421 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35422 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35423 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35424 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35425 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35426 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35427 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35428 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35429 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35430 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35431 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35432 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35433 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35434 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35435 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35436 ];
35437
35438 var sha1_K = [
35439 0x5A827999, 0x6ED9EBA1,
35440 0x8F1BBCDC, 0xCA62C1D6
35441 ];
35442
35443 function SHA256() {
35444 if (!(this instanceof SHA256))
35445 return new SHA256();
35446
35447 BlockHash.call(this);
35448 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35449 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35450 this.k = sha256_K;
35451 this.W = new Array(64);
35452 }
35453 utils.inherits(SHA256, BlockHash);
35454 exports.sha256 = SHA256;
35455
35456 SHA256.blockSize = 512;
35457 SHA256.outSize = 256;
35458 SHA256.hmacStrength = 192;
35459 SHA256.padLength = 64;
35460
35461 SHA256.prototype._update = function _update(msg, start) {
35462 var W = this.W;
35463
35464 for (var i = 0; i < 16; i++)
35465 W[i] = msg[start + i];
35466 for (; i < W.length; i++)
35467 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35468
35469 var a = this.h[0];
35470 var b = this.h[1];
35471 var c = this.h[2];
35472 var d = this.h[3];
35473 var e = this.h[4];
35474 var f = this.h[5];
35475 var g = this.h[6];
35476 var h = this.h[7];
35477
35478 assert(this.k.length === W.length);
35479 for (var i = 0; i < W.length; i++) {
35480 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35481 var T2 = sum32(s0_256(a), maj32(a, b, c));
35482 h = g;
35483 g = f;
35484 f = e;
35485 e = sum32(d, T1);
35486 d = c;
35487 c = b;
35488 b = a;
35489 a = sum32(T1, T2);
35490 }
35491
35492 this.h[0] = sum32(this.h[0], a);
35493 this.h[1] = sum32(this.h[1], b);
35494 this.h[2] = sum32(this.h[2], c);
35495 this.h[3] = sum32(this.h[3], d);
35496 this.h[4] = sum32(this.h[4], e);
35497 this.h[5] = sum32(this.h[5], f);
35498 this.h[6] = sum32(this.h[6], g);
35499 this.h[7] = sum32(this.h[7], h);
35500 };
35501
35502 SHA256.prototype._digest = function digest(enc) {
35503 if (enc === 'hex')
35504 return utils.toHex32(this.h, 'big');
35505 else
35506 return utils.split32(this.h, 'big');
35507 };
35508
35509 function SHA224() {
35510 if (!(this instanceof SHA224))
35511 return new SHA224();
35512
35513 SHA256.call(this);
35514 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35515 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35516 }
35517 utils.inherits(SHA224, SHA256);
35518 exports.sha224 = SHA224;
35519
35520 SHA224.blockSize = 512;
35521 SHA224.outSize = 224;
35522 SHA224.hmacStrength = 192;
35523 SHA224.padLength = 64;
35524
35525 SHA224.prototype._digest = function digest(enc) {
35526 // Just truncate output
35527 if (enc === 'hex')
35528 return utils.toHex32(this.h.slice(0, 7), 'big');
35529 else
35530 return utils.split32(this.h.slice(0, 7), 'big');
35531 };
35532
35533 function SHA512() {
35534 if (!(this instanceof SHA512))
35535 return new SHA512();
35536
35537 BlockHash.call(this);
35538 this.h = [ 0x6a09e667, 0xf3bcc908,
35539 0xbb67ae85, 0x84caa73b,
35540 0x3c6ef372, 0xfe94f82b,
35541 0xa54ff53a, 0x5f1d36f1,
35542 0x510e527f, 0xade682d1,
35543 0x9b05688c, 0x2b3e6c1f,
35544 0x1f83d9ab, 0xfb41bd6b,
35545 0x5be0cd19, 0x137e2179 ];
35546 this.k = sha512_K;
35547 this.W = new Array(160);
35548 }
35549 utils.inherits(SHA512, BlockHash);
35550 exports.sha512 = SHA512;
35551
35552 SHA512.blockSize = 1024;
35553 SHA512.outSize = 512;
35554 SHA512.hmacStrength = 192;
35555 SHA512.padLength = 128;
35556
35557 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35558 var W = this.W;
35559
35560 // 32 x 32bit words
35561 for (var i = 0; i < 32; i++)
35562 W[i] = msg[start + i];
35563 for (; i < W.length; i += 2) {
35564 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35565 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35566 var c1_hi = W[i - 14]; // i - 7
35567 var c1_lo = W[i - 13];
35568 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35569 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35570 var c3_hi = W[i - 32]; // i - 16
35571 var c3_lo = W[i - 31];
35572
35573 W[i] = sum64_4_hi(c0_hi, c0_lo,
35574 c1_hi, c1_lo,
35575 c2_hi, c2_lo,
35576 c3_hi, c3_lo);
35577 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35578 c1_hi, c1_lo,
35579 c2_hi, c2_lo,
35580 c3_hi, c3_lo);
35581 }
35582 };
35583
35584 SHA512.prototype._update = function _update(msg, start) {
35585 this._prepareBlock(msg, start);
35586
35587 var W = this.W;
35588
35589 var ah = this.h[0];
35590 var al = this.h[1];
35591 var bh = this.h[2];
35592 var bl = this.h[3];
35593 var ch = this.h[4];
35594 var cl = this.h[5];
35595 var dh = this.h[6];
35596 var dl = this.h[7];
35597 var eh = this.h[8];
35598 var el = this.h[9];
35599 var fh = this.h[10];
35600 var fl = this.h[11];
35601 var gh = this.h[12];
35602 var gl = this.h[13];
35603 var hh = this.h[14];
35604 var hl = this.h[15];
35605
35606 assert(this.k.length === W.length);
35607 for (var i = 0; i < W.length; i += 2) {
35608 var c0_hi = hh;
35609 var c0_lo = hl;
35610 var c1_hi = s1_512_hi(eh, el);
35611 var c1_lo = s1_512_lo(eh, el);
35612 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35613 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35614 var c3_hi = this.k[i];
35615 var c3_lo = this.k[i + 1];
35616 var c4_hi = W[i];
35617 var c4_lo = W[i + 1];
35618
35619 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35620 c1_hi, c1_lo,
35621 c2_hi, c2_lo,
35622 c3_hi, c3_lo,
35623 c4_hi, c4_lo);
35624 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35625 c1_hi, c1_lo,
35626 c2_hi, c2_lo,
35627 c3_hi, c3_lo,
35628 c4_hi, c4_lo);
35629
35630 var c0_hi = s0_512_hi(ah, al);
35631 var c0_lo = s0_512_lo(ah, al);
35632 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35633 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35634
35635 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35636 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35637
35638 hh = gh;
35639 hl = gl;
35640
35641 gh = fh;
35642 gl = fl;
35643
35644 fh = eh;
35645 fl = el;
35646
35647 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35648 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35649
35650 dh = ch;
35651 dl = cl;
35652
35653 ch = bh;
35654 cl = bl;
35655
35656 bh = ah;
35657 bl = al;
35658
35659 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35660 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35661 }
35662
35663 sum64(this.h, 0, ah, al);
35664 sum64(this.h, 2, bh, bl);
35665 sum64(this.h, 4, ch, cl);
35666 sum64(this.h, 6, dh, dl);
35667 sum64(this.h, 8, eh, el);
35668 sum64(this.h, 10, fh, fl);
35669 sum64(this.h, 12, gh, gl);
35670 sum64(this.h, 14, hh, hl);
35671 };
35672
35673 SHA512.prototype._digest = function digest(enc) {
35674 if (enc === 'hex')
35675 return utils.toHex32(this.h, 'big');
35676 else
35677 return utils.split32(this.h, 'big');
35678 };
35679
35680 function SHA384() {
35681 if (!(this instanceof SHA384))
35682 return new SHA384();
35683
35684 SHA512.call(this);
35685 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35686 0x629a292a, 0x367cd507,
35687 0x9159015a, 0x3070dd17,
35688 0x152fecd8, 0xf70e5939,
35689 0x67332667, 0xffc00b31,
35690 0x8eb44a87, 0x68581511,
35691 0xdb0c2e0d, 0x64f98fa7,
35692 0x47b5481d, 0xbefa4fa4 ];
35693 }
35694 utils.inherits(SHA384, SHA512);
35695 exports.sha384 = SHA384;
35696
35697 SHA384.blockSize = 1024;
35698 SHA384.outSize = 384;
35699 SHA384.hmacStrength = 192;
35700 SHA384.padLength = 128;
35701
35702 SHA384.prototype._digest = function digest(enc) {
35703 if (enc === 'hex')
35704 return utils.toHex32(this.h.slice(0, 12), 'big');
35705 else
35706 return utils.split32(this.h.slice(0, 12), 'big');
35707 };
35708
35709 function SHA1() {
35710 if (!(this instanceof SHA1))
35711 return new SHA1();
35712
35713 BlockHash.call(this);
35714 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35715 0x10325476, 0xc3d2e1f0 ];
35716 this.W = new Array(80);
35717 }
35718
35719 utils.inherits(SHA1, BlockHash);
35720 exports.sha1 = SHA1;
35721
35722 SHA1.blockSize = 512;
35723 SHA1.outSize = 160;
35724 SHA1.hmacStrength = 80;
35725 SHA1.padLength = 64;
35726
35727 SHA1.prototype._update = function _update(msg, start) {
35728 var W = this.W;
35729
35730 for (var i = 0; i < 16; i++)
35731 W[i] = msg[start + i];
35732
35733 for(; i < W.length; i++)
35734 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
35735
35736 var a = this.h[0];
35737 var b = this.h[1];
35738 var c = this.h[2];
35739 var d = this.h[3];
35740 var e = this.h[4];
35741
35742 for (var i = 0; i < W.length; i++) {
35743 var s = ~~(i / 20);
35744 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35745 e = d;
35746 d = c;
35747 c = rotl32(b, 30);
35748 b = a;
35749 a = t;
35750 }
35751
35752 this.h[0] = sum32(this.h[0], a);
35753 this.h[1] = sum32(this.h[1], b);
35754 this.h[2] = sum32(this.h[2], c);
35755 this.h[3] = sum32(this.h[3], d);
35756 this.h[4] = sum32(this.h[4], e);
35757 };
35758
35759 SHA1.prototype._digest = function digest(enc) {
35760 if (enc === 'hex')
35761 return utils.toHex32(this.h, 'big');
35762 else
35763 return utils.split32(this.h, 'big');
35764 };
35765
35766 function ch32(x, y, z) {
35767 return (x & y) ^ ((~x) & z);
35768 }
35769
35770 function maj32(x, y, z) {
35771 return (x & y) ^ (x & z) ^ (y & z);
35772 }
35773
35774 function p32(x, y, z) {
35775 return x ^ y ^ z;
35776 }
35777
35778 function s0_256(x) {
35779 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35780 }
35781
35782 function s1_256(x) {
35783 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
35784 }
35785
35786 function g0_256(x) {
35787 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35788 }
35789
35790 function g1_256(x) {
35791 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35792 }
35793
35794 function ft_1(s, x, y, z) {
35795 if (s === 0)
35796 return ch32(x, y, z);
35797 if (s === 1 || s === 3)
35798 return p32(x, y, z);
35799 if (s === 2)
35800 return maj32(x, y, z);
35801 }
35802
35803 function ch64_hi(xh, xl, yh, yl, zh, zl) {
35804 var r = (xh & yh) ^ ((~xh) & zh);
35805 if (r < 0)
35806 r += 0x100000000;
35807 return r;
35808 }
35809
35810 function ch64_lo(xh, xl, yh, yl, zh, zl) {
35811 var r = (xl & yl) ^ ((~xl) & zl);
35812 if (r < 0)
35813 r += 0x100000000;
35814 return r;
35815 }
35816
35817 function maj64_hi(xh, xl, yh, yl, zh, zl) {
35818 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35819 if (r < 0)
35820 r += 0x100000000;
35821 return r;
35822 }
35823
35824 function maj64_lo(xh, xl, yh, yl, zh, zl) {
35825 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35826 if (r < 0)
35827 r += 0x100000000;
35828 return r;
35829 }
35830
35831 function s0_512_hi(xh, xl) {
35832 var c0_hi = rotr64_hi(xh, xl, 28);
35833 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35834 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35835
35836 var r = c0_hi ^ c1_hi ^ c2_hi;
35837 if (r < 0)
35838 r += 0x100000000;
35839 return r;
35840 }
35841
35842 function s0_512_lo(xh, xl) {
35843 var c0_lo = rotr64_lo(xh, xl, 28);
35844 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35845 var c2_lo = rotr64_lo(xl, xh, 7); // 39
35846
35847 var r = c0_lo ^ c1_lo ^ c2_lo;
35848 if (r < 0)
35849 r += 0x100000000;
35850 return r;
35851 }
35852
35853 function s1_512_hi(xh, xl) {
35854 var c0_hi = rotr64_hi(xh, xl, 14);
35855 var c1_hi = rotr64_hi(xh, xl, 18);
35856 var c2_hi = rotr64_hi(xl, xh, 9); // 41
35857
35858 var r = c0_hi ^ c1_hi ^ c2_hi;
35859 if (r < 0)
35860 r += 0x100000000;
35861 return r;
35862 }
35863
35864 function s1_512_lo(xh, xl) {
35865 var c0_lo = rotr64_lo(xh, xl, 14);
35866 var c1_lo = rotr64_lo(xh, xl, 18);
35867 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35868
35869 var r = c0_lo ^ c1_lo ^ c2_lo;
35870 if (r < 0)
35871 r += 0x100000000;
35872 return r;
35873 }
35874
35875 function g0_512_hi(xh, xl) {
35876 var c0_hi = rotr64_hi(xh, xl, 1);
35877 var c1_hi = rotr64_hi(xh, xl, 8);
35878 var c2_hi = shr64_hi(xh, xl, 7);
35879
35880 var r = c0_hi ^ c1_hi ^ c2_hi;
35881 if (r < 0)
35882 r += 0x100000000;
35883 return r;
35884 }
35885
35886 function g0_512_lo(xh, xl) {
35887 var c0_lo = rotr64_lo(xh, xl, 1);
35888 var c1_lo = rotr64_lo(xh, xl, 8);
35889 var c2_lo = shr64_lo(xh, xl, 7);
35890
35891 var r = c0_lo ^ c1_lo ^ c2_lo;
35892 if (r < 0)
35893 r += 0x100000000;
35894 return r;
35895 }
35896
35897 function g1_512_hi(xh, xl) {
35898 var c0_hi = rotr64_hi(xh, xl, 19);
35899 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35900 var c2_hi = shr64_hi(xh, xl, 6);
35901
35902 var r = c0_hi ^ c1_hi ^ c2_hi;
35903 if (r < 0)
35904 r += 0x100000000;
35905 return r;
35906 }
35907
35908 function g1_512_lo(xh, xl) {
35909 var c0_lo = rotr64_lo(xh, xl, 19);
35910 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35911 var c2_lo = shr64_lo(xh, xl, 6);
35912
35913 var r = c0_lo ^ c1_lo ^ c2_lo;
35914 if (r < 0)
35915 r += 0x100000000;
35916 return r;
35917 }
35918
35919 },{"../hash":57}],62:[function(require,module,exports){
35920 var utils = exports;
35921 var inherits = require('inherits');
35922
35923 function toArray(msg, enc) {
35924 if (Array.isArray(msg))
35925 return msg.slice();
35926 if (!msg)
35927 return [];
35928 var res = [];
35929 if (typeof msg === 'string') {
35930 if (!enc) {
35931 for (var i = 0; i < msg.length; i++) {
35932 var c = msg.charCodeAt(i);
35933 var hi = c >> 8;
35934 var lo = c & 0xff;
35935 if (hi)
35936 res.push(hi, lo);
35937 else
35938 res.push(lo);
35939 }
35940 } else if (enc === 'hex') {
35941 msg = msg.replace(/[^a-z0-9]+/ig, '');
35942 if (msg.length % 2 !== 0)
35943 msg = '0' + msg;
35944 for (var i = 0; i < msg.length; i += 2)
35945 res.push(parseInt(msg[i] + msg[i + 1], 16));
35946 }
35947 } else {
35948 for (var i = 0; i < msg.length; i++)
35949 res[i] = msg[i] | 0;
35950 }
35951 return res;
35952 }
35953 utils.toArray = toArray;
35954
35955 function toHex(msg) {
35956 var res = '';
35957 for (var i = 0; i < msg.length; i++)
35958 res += zero2(msg[i].toString(16));
35959 return res;
35960 }
35961 utils.toHex = toHex;
35962
35963 function htonl(w) {
35964 var res = (w >>> 24) |
35965 ((w >>> 8) & 0xff00) |
35966 ((w << 8) & 0xff0000) |
35967 ((w & 0xff) << 24);
35968 return res >>> 0;
35969 }
35970 utils.htonl = htonl;
35971
35972 function toHex32(msg, endian) {
35973 var res = '';
35974 for (var i = 0; i < msg.length; i++) {
35975 var w = msg[i];
35976 if (endian === 'little')
35977 w = htonl(w);
35978 res += zero8(w.toString(16));
35979 }
35980 return res;
35981 }
35982 utils.toHex32 = toHex32;
35983
35984 function zero2(word) {
35985 if (word.length === 1)
35986 return '0' + word;
35987 else
35988 return word;
35989 }
35990 utils.zero2 = zero2;
35991
35992 function zero8(word) {
35993 if (word.length === 7)
35994 return '0' + word;
35995 else if (word.length === 6)
35996 return '00' + word;
35997 else if (word.length === 5)
35998 return '000' + word;
35999 else if (word.length === 4)
36000 return '0000' + word;
36001 else if (word.length === 3)
36002 return '00000' + word;
36003 else if (word.length === 2)
36004 return '000000' + word;
36005 else if (word.length === 1)
36006 return '0000000' + word;
36007 else
36008 return word;
36009 }
36010 utils.zero8 = zero8;
36011
36012 function join32(msg, start, end, endian) {
36013 var len = end - start;
36014 assert(len % 4 === 0);
36015 var res = new Array(len / 4);
36016 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36017 var w;
36018 if (endian === 'big')
36019 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36020 else
36021 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36022 res[i] = w >>> 0;
36023 }
36024 return res;
36025 }
36026 utils.join32 = join32;
36027
36028 function split32(msg, endian) {
36029 var res = new Array(msg.length * 4);
36030 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36031 var m = msg[i];
36032 if (endian === 'big') {
36033 res[k] = m >>> 24;
36034 res[k + 1] = (m >>> 16) & 0xff;
36035 res[k + 2] = (m >>> 8) & 0xff;
36036 res[k + 3] = m & 0xff;
36037 } else {
36038 res[k + 3] = m >>> 24;
36039 res[k + 2] = (m >>> 16) & 0xff;
36040 res[k + 1] = (m >>> 8) & 0xff;
36041 res[k] = m & 0xff;
36042 }
36043 }
36044 return res;
36045 }
36046 utils.split32 = split32;
36047
36048 function rotr32(w, b) {
36049 return (w >>> b) | (w << (32 - b));
36050 }
36051 utils.rotr32 = rotr32;
36052
36053 function rotl32(w, b) {
36054 return (w << b) | (w >>> (32 - b));
36055 }
36056 utils.rotl32 = rotl32;
36057
36058 function sum32(a, b) {
36059 return (a + b) >>> 0;
36060 }
36061 utils.sum32 = sum32;
36062
36063 function sum32_3(a, b, c) {
36064 return (a + b + c) >>> 0;
36065 }
36066 utils.sum32_3 = sum32_3;
36067
36068 function sum32_4(a, b, c, d) {
36069 return (a + b + c + d) >>> 0;
36070 }
36071 utils.sum32_4 = sum32_4;
36072
36073 function sum32_5(a, b, c, d, e) {
36074 return (a + b + c + d + e) >>> 0;
36075 }
36076 utils.sum32_5 = sum32_5;
36077
36078 function assert(cond, msg) {
36079 if (!cond)
36080 throw new Error(msg || 'Assertion failed');
36081 }
36082 utils.assert = assert;
36083
36084 utils.inherits = inherits;
36085
36086 function sum64(buf, pos, ah, al) {
36087 var bh = buf[pos];
36088 var bl = buf[pos + 1];
36089
36090 var lo = (al + bl) >>> 0;
36091 var hi = (lo < al ? 1 : 0) + ah + bh;
36092 buf[pos] = hi >>> 0;
36093 buf[pos + 1] = lo;
36094 }
36095 exports.sum64 = sum64;
36096
36097 function sum64_hi(ah, al, bh, bl) {
36098 var lo = (al + bl) >>> 0;
36099 var hi = (lo < al ? 1 : 0) + ah + bh;
36100 return hi >>> 0;
36101 };
36102 exports.sum64_hi = sum64_hi;
36103
36104 function sum64_lo(ah, al, bh, bl) {
36105 var lo = al + bl;
36106 return lo >>> 0;
36107 };
36108 exports.sum64_lo = sum64_lo;
36109
36110 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36111 var carry = 0;
36112 var lo = al;
36113 lo = (lo + bl) >>> 0;
36114 carry += lo < al ? 1 : 0;
36115 lo = (lo + cl) >>> 0;
36116 carry += lo < cl ? 1 : 0;
36117 lo = (lo + dl) >>> 0;
36118 carry += lo < dl ? 1 : 0;
36119
36120 var hi = ah + bh + ch + dh + carry;
36121 return hi >>> 0;
36122 };
36123 exports.sum64_4_hi = sum64_4_hi;
36124
36125 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36126 var lo = al + bl + cl + dl;
36127 return lo >>> 0;
36128 };
36129 exports.sum64_4_lo = sum64_4_lo;
36130
36131 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36132 var carry = 0;
36133 var lo = al;
36134 lo = (lo + bl) >>> 0;
36135 carry += lo < al ? 1 : 0;
36136 lo = (lo + cl) >>> 0;
36137 carry += lo < cl ? 1 : 0;
36138 lo = (lo + dl) >>> 0;
36139 carry += lo < dl ? 1 : 0;
36140 lo = (lo + el) >>> 0;
36141 carry += lo < el ? 1 : 0;
36142
36143 var hi = ah + bh + ch + dh + eh + carry;
36144 return hi >>> 0;
36145 };
36146 exports.sum64_5_hi = sum64_5_hi;
36147
36148 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36149 var lo = al + bl + cl + dl + el;
36150
36151 return lo >>> 0;
36152 };
36153 exports.sum64_5_lo = sum64_5_lo;
36154
36155 function rotr64_hi(ah, al, num) {
36156 var r = (al << (32 - num)) | (ah >>> num);
36157 return r >>> 0;
36158 };
36159 exports.rotr64_hi = rotr64_hi;
36160
36161 function rotr64_lo(ah, al, num) {
36162 var r = (ah << (32 - num)) | (al >>> num);
36163 return r >>> 0;
36164 };
36165 exports.rotr64_lo = rotr64_lo;
36166
36167 function shr64_hi(ah, al, num) {
36168 return ah >>> num;
36169 };
36170 exports.shr64_hi = shr64_hi;
36171
36172 function shr64_lo(ah, al, num) {
36173 var r = (ah << (32 - num)) | (al >>> num);
36174 return r >>> 0;
36175 };
36176 exports.shr64_lo = shr64_lo;
36177
36178 },{"inherits":63}],63:[function(require,module,exports){
36179 arguments[4][9][0].apply(exports,arguments)
36180 },{"dup":9}],64:[function(require,module,exports){
36181 /**
36182 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36183 * @param {String} str the string input value
36184 * @return {Boolean} a boolean if it is or is not hex prefixed
36185 * @throws if the str input is not a string
36186 */
36187 module.exports = function isHexPrefixed(str) {
36188 if (typeof str !== 'string') {
36189 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36190 }
36191
36192 return str.slice(0, 2) === '0x';
36193 }
36194
36195 },{}],65:[function(require,module,exports){
36196 'use strict'
36197 module.exports = require('./lib/api')(require('./lib/keccak'))
36198
36199 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36200 'use strict'
36201 var createKeccak = require('./keccak')
36202 var createShake = require('./shake')
36203
36204 module.exports = function (KeccakState) {
36205 var Keccak = createKeccak(KeccakState)
36206 var Shake = createShake(KeccakState)
36207
36208 return function (algorithm, options) {
36209 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36210 switch (hash) {
36211 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36212 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36213 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36214 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36215
36216 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36217 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36218 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36219 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36220
36221 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36222 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36223
36224 default: throw new Error('Invald algorithm: ' + algorithm)
36225 }
36226 }
36227 }
36228
36229 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
36230 (function (Buffer){
36231 'use strict'
36232 var Transform = require('stream').Transform
36233 var inherits = require('inherits')
36234
36235 module.exports = function (KeccakState) {
36236 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36237 Transform.call(this, options)
36238
36239 this._rate = rate
36240 this._capacity = capacity
36241 this._delimitedSuffix = delimitedSuffix
36242 this._hashBitLength = hashBitLength
36243 this._options = options
36244
36245 this._state = new KeccakState()
36246 this._state.initialize(rate, capacity)
36247 this._finalized = false
36248 }
36249
36250 inherits(Keccak, Transform)
36251
36252 Keccak.prototype._transform = function (chunk, encoding, callback) {
36253 var error = null
36254 try {
36255 this.update(chunk, encoding)
36256 } catch (err) {
36257 error = err
36258 }
36259
36260 callback(error)
36261 }
36262
36263 Keccak.prototype._flush = function (callback) {
36264 var error = null
36265 try {
36266 this.push(this.digest())
36267 } catch (err) {
36268 error = err
36269 }
36270
36271 callback(error)
36272 }
36273
36274 Keccak.prototype.update = function (data, encoding) {
36275 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36276 if (this._finalized) throw new Error('Digest already called')
36277 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36278
36279 this._state.absorb(data)
36280
36281 return this
36282 }
36283
36284 Keccak.prototype.digest = function (encoding) {
36285 if (this._finalized) throw new Error('Digest already called')
36286 this._finalized = true
36287
36288 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36289 var digest = this._state.squeeze(this._hashBitLength / 8)
36290 if (encoding !== undefined) digest = digest.toString(encoding)
36291
36292 this._resetState()
36293
36294 return digest
36295 }
36296
36297 // remove result from memory
36298 Keccak.prototype._resetState = function () {
36299 this._state.initialize(this._rate, this._capacity)
36300 return this
36301 }
36302
36303 // because sometimes we need hash right now and little later
36304 Keccak.prototype._clone = function () {
36305 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36306 this._state.copy(clone._state)
36307 clone._finalized = this._finalized
36308
36309 return clone
36310 }
36311
36312 return Keccak
36313 }
36314
36315 }).call(this,require("buffer").Buffer)
36316 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36317 (function (Buffer){
36318 'use strict'
36319 var Transform = require('stream').Transform
36320 var inherits = require('inherits')
36321
36322 module.exports = function (KeccakState) {
36323 function Shake (rate, capacity, delimitedSuffix, options) {
36324 Transform.call(this, options)
36325
36326 this._rate = rate
36327 this._capacity = capacity
36328 this._delimitedSuffix = delimitedSuffix
36329 this._options = options
36330
36331 this._state = new KeccakState()
36332 this._state.initialize(rate, capacity)
36333 this._finalized = false
36334 }
36335
36336 inherits(Shake, Transform)
36337
36338 Shake.prototype._transform = function (chunk, encoding, callback) {
36339 var error = null
36340 try {
36341 this.update(chunk, encoding)
36342 } catch (err) {
36343 error = err
36344 }
36345
36346 callback(error)
36347 }
36348
36349 Shake.prototype._flush = function () {}
36350
36351 Shake.prototype._read = function (size) {
36352 this.push(this.squeeze(size))
36353 }
36354
36355 Shake.prototype.update = function (data, encoding) {
36356 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36357 if (this._finalized) throw new Error('Squeeze already called')
36358 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36359
36360 this._state.absorb(data)
36361
36362 return this
36363 }
36364
36365 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36366 if (!this._finalized) {
36367 this._finalized = true
36368 this._state.absorbLastFewBits(this._delimitedSuffix)
36369 }
36370
36371 var data = this._state.squeeze(dataByteLength)
36372 if (encoding !== undefined) data = data.toString(encoding)
36373
36374 return data
36375 }
36376
36377 Shake.prototype._resetState = function () {
36378 this._state.initialize(this._rate, this._capacity)
36379 return this
36380 }
36381
36382 Shake.prototype._clone = function () {
36383 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36384 this._state.copy(clone._state)
36385 clone._finalized = this._finalized
36386
36387 return clone
36388 }
36389
36390 return Shake
36391 }
36392
36393 }).call(this,require("buffer").Buffer)
36394 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36395 'use strict'
36396 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]
36397
36398 exports.p1600 = function (s) {
36399 for (var round = 0; round < 24; ++round) {
36400 // theta
36401 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36402 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36403 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36404 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36405 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36406 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36407 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36408 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36409 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36410 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36411
36412 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36413 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36414 var t1slo0 = s[0] ^ lo
36415 var t1shi0 = s[1] ^ hi
36416 var t1slo5 = s[10] ^ lo
36417 var t1shi5 = s[11] ^ hi
36418 var t1slo10 = s[20] ^ lo
36419 var t1shi10 = s[21] ^ hi
36420 var t1slo15 = s[30] ^ lo
36421 var t1shi15 = s[31] ^ hi
36422 var t1slo20 = s[40] ^ lo
36423 var t1shi20 = s[41] ^ hi
36424 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36425 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36426 var t1slo1 = s[2] ^ lo
36427 var t1shi1 = s[3] ^ hi
36428 var t1slo6 = s[12] ^ lo
36429 var t1shi6 = s[13] ^ hi
36430 var t1slo11 = s[22] ^ lo
36431 var t1shi11 = s[23] ^ hi
36432 var t1slo16 = s[32] ^ lo
36433 var t1shi16 = s[33] ^ hi
36434 var t1slo21 = s[42] ^ lo
36435 var t1shi21 = s[43] ^ hi
36436 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36437 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36438 var t1slo2 = s[4] ^ lo
36439 var t1shi2 = s[5] ^ hi
36440 var t1slo7 = s[14] ^ lo
36441 var t1shi7 = s[15] ^ hi
36442 var t1slo12 = s[24] ^ lo
36443 var t1shi12 = s[25] ^ hi
36444 var t1slo17 = s[34] ^ lo
36445 var t1shi17 = s[35] ^ hi
36446 var t1slo22 = s[44] ^ lo
36447 var t1shi22 = s[45] ^ hi
36448 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36449 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36450 var t1slo3 = s[6] ^ lo
36451 var t1shi3 = s[7] ^ hi
36452 var t1slo8 = s[16] ^ lo
36453 var t1shi8 = s[17] ^ hi
36454 var t1slo13 = s[26] ^ lo
36455 var t1shi13 = s[27] ^ hi
36456 var t1slo18 = s[36] ^ lo
36457 var t1shi18 = s[37] ^ hi
36458 var t1slo23 = s[46] ^ lo
36459 var t1shi23 = s[47] ^ hi
36460 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36461 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36462 var t1slo4 = s[8] ^ lo
36463 var t1shi4 = s[9] ^ hi
36464 var t1slo9 = s[18] ^ lo
36465 var t1shi9 = s[19] ^ hi
36466 var t1slo14 = s[28] ^ lo
36467 var t1shi14 = s[29] ^ hi
36468 var t1slo19 = s[38] ^ lo
36469 var t1shi19 = s[39] ^ hi
36470 var t1slo24 = s[48] ^ lo
36471 var t1shi24 = s[49] ^ hi
36472
36473 // rho & pi
36474 var t2slo0 = t1slo0
36475 var t2shi0 = t1shi0
36476 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36477 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36478 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36479 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36480 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36481 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36482 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36483 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36484 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36485 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36486 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36487 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36488 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36489 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36490 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36491 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36492 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36493 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36494 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36495 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36496 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36497 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36498 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36499 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36500 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36501 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36502 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36503 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36504 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36505 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36506 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36507 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36508 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36509 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36510 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36511 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36512 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36513 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36514 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36515 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36516 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36517 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36518 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36519 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36520 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36521 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36522 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36523 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36524
36525 // chi
36526 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36527 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36528 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36529 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36530 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36531 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36532 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36533 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36534 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36535 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36536 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36537 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36538 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36539 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36540 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36541 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36542 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36543 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36544 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36545 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36546 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36547 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36548 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36549 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36550 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36551 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36552 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36553 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36554 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36555 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36556 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36557 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36558 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36559 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36560 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36561 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36562 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36563 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36564 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36565 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36566 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36567 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36568 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36569 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36570 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36571 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36572 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36573 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36574 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36575 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36576
36577 // iota
36578 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36579 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36580 }
36581 }
36582
36583 },{}],70:[function(require,module,exports){
36584 (function (Buffer){
36585 'use strict'
36586 var keccakState = require('./keccak-state-unroll')
36587
36588 function Keccak () {
36589 // much faster than `new Array(50)`
36590 this.state = [
36591 0, 0, 0, 0, 0,
36592 0, 0, 0, 0, 0,
36593 0, 0, 0, 0, 0,
36594 0, 0, 0, 0, 0,
36595 0, 0, 0, 0, 0
36596 ]
36597
36598 this.blockSize = null
36599 this.count = 0
36600 this.squeezing = false
36601 }
36602
36603 Keccak.prototype.initialize = function (rate, capacity) {
36604 for (var i = 0; i < 50; ++i) this.state[i] = 0
36605 this.blockSize = rate / 8
36606 this.count = 0
36607 this.squeezing = false
36608 }
36609
36610 Keccak.prototype.absorb = function (data) {
36611 for (var i = 0; i < data.length; ++i) {
36612 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36613 this.count += 1
36614 if (this.count === this.blockSize) {
36615 keccakState.p1600(this.state)
36616 this.count = 0
36617 }
36618 }
36619 }
36620
36621 Keccak.prototype.absorbLastFewBits = function (bits) {
36622 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36623 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36624 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36625 keccakState.p1600(this.state)
36626 this.count = 0
36627 this.squeezing = true
36628 }
36629
36630 Keccak.prototype.squeeze = function (length) {
36631 if (!this.squeezing) this.absorbLastFewBits(0x01)
36632
36633 var output = Buffer.allocUnsafe(length)
36634 for (var i = 0; i < length; ++i) {
36635 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36636 this.count += 1
36637 if (this.count === this.blockSize) {
36638 keccakState.p1600(this.state)
36639 this.count = 0
36640 }
36641 }
36642
36643 return output
36644 }
36645
36646 Keccak.prototype.copy = function (dest) {
36647 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36648 dest.blockSize = this.blockSize
36649 dest.count = this.count
36650 dest.squeezing = this.squeezing
36651 }
36652
36653 module.exports = Keccak
36654
36655 }).call(this,require("buffer").Buffer)
36656 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36657 (function (Buffer){
36658 /*
36659 CryptoJS v3.1.2
36660 code.google.com/p/crypto-js
36661 (c) 2009-2013 by Jeff Mott. All rights reserved.
36662 code.google.com/p/crypto-js/wiki/License
36663 */
36664 /** @preserve
36665 (c) 2012 by Cédric Mesnil. All rights reserved.
36666
36667 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
36668
36669 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36670 - 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.
36671
36672 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.
36673 */
36674
36675 // constants table
36676 var zl = [
36677 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36678 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36679 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36680 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36681 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36682 ]
36683
36684 var zr = [
36685 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36686 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36687 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36688 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36689 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36690 ]
36691
36692 var sl = [
36693 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36694 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36695 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36696 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36697 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36698 ]
36699
36700 var sr = [
36701 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36702 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36703 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36704 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36705 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36706 ]
36707
36708 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36709 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36710
36711 function bytesToWords (bytes) {
36712 var words = []
36713 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36714 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36715 }
36716 return words
36717 }
36718
36719 function wordsToBytes (words) {
36720 var bytes = []
36721 for (var b = 0; b < words.length * 32; b += 8) {
36722 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36723 }
36724 return bytes
36725 }
36726
36727 function processBlock (H, M, offset) {
36728 // swap endian
36729 for (var i = 0; i < 16; i++) {
36730 var offset_i = offset + i
36731 var M_offset_i = M[offset_i]
36732
36733 // Swap
36734 M[offset_i] = (
36735 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36736 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36737 )
36738 }
36739
36740 // Working variables
36741 var al, bl, cl, dl, el
36742 var ar, br, cr, dr, er
36743
36744 ar = al = H[0]
36745 br = bl = H[1]
36746 cr = cl = H[2]
36747 dr = dl = H[3]
36748 er = el = H[4]
36749
36750 // computation
36751 var t
36752 for (i = 0; i < 80; i += 1) {
36753 t = (al + M[offset + zl[i]]) | 0
36754 if (i < 16) {
36755 t += f1(bl, cl, dl) + hl[0]
36756 } else if (i < 32) {
36757 t += f2(bl, cl, dl) + hl[1]
36758 } else if (i < 48) {
36759 t += f3(bl, cl, dl) + hl[2]
36760 } else if (i < 64) {
36761 t += f4(bl, cl, dl) + hl[3]
36762 } else {// if (i<80) {
36763 t += f5(bl, cl, dl) + hl[4]
36764 }
36765 t = t | 0
36766 t = rotl(t, sl[i])
36767 t = (t + el) | 0
36768 al = el
36769 el = dl
36770 dl = rotl(cl, 10)
36771 cl = bl
36772 bl = t
36773
36774 t = (ar + M[offset + zr[i]]) | 0
36775 if (i < 16) {
36776 t += f5(br, cr, dr) + hr[0]
36777 } else if (i < 32) {
36778 t += f4(br, cr, dr) + hr[1]
36779 } else if (i < 48) {
36780 t += f3(br, cr, dr) + hr[2]
36781 } else if (i < 64) {
36782 t += f2(br, cr, dr) + hr[3]
36783 } else {// if (i<80) {
36784 t += f1(br, cr, dr) + hr[4]
36785 }
36786
36787 t = t | 0
36788 t = rotl(t, sr[i])
36789 t = (t + er) | 0
36790 ar = er
36791 er = dr
36792 dr = rotl(cr, 10)
36793 cr = br
36794 br = t
36795 }
36796
36797 // intermediate hash value
36798 t = (H[1] + cl + dr) | 0
36799 H[1] = (H[2] + dl + er) | 0
36800 H[2] = (H[3] + el + ar) | 0
36801 H[3] = (H[4] + al + br) | 0
36802 H[4] = (H[0] + bl + cr) | 0
36803 H[0] = t
36804 }
36805
36806 function f1 (x, y, z) {
36807 return ((x) ^ (y) ^ (z))
36808 }
36809
36810 function f2 (x, y, z) {
36811 return (((x) & (y)) | ((~x) & (z)))
36812 }
36813
36814 function f3 (x, y, z) {
36815 return (((x) | (~(y))) ^ (z))
36816 }
36817
36818 function f4 (x, y, z) {
36819 return (((x) & (z)) | ((y) & (~(z))))
36820 }
36821
36822 function f5 (x, y, z) {
36823 return ((x) ^ ((y) | (~(z))))
36824 }
36825
36826 function rotl (x, n) {
36827 return (x << n) | (x >>> (32 - n))
36828 }
36829
36830 function ripemd160 (message) {
36831 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
36832
36833 if (typeof message === 'string') {
36834 message = new Buffer(message, 'utf8')
36835 }
36836
36837 var m = bytesToWords(message)
36838
36839 var nBitsLeft = message.length * 8
36840 var nBitsTotal = message.length * 8
36841
36842 // Add padding
36843 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36844 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36845 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36846 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36847 )
36848
36849 for (var i = 0; i < m.length; i += 16) {
36850 processBlock(H, m, i)
36851 }
36852
36853 // swap endian
36854 for (i = 0; i < 5; i++) {
36855 // shortcut
36856 var H_i = H[i]
36857
36858 // Swap
36859 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36860 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
36861 }
36862
36863 var digestbytes = wordsToBytes(H)
36864 return new Buffer(digestbytes)
36865 }
36866
36867 module.exports = ripemd160
36868
36869 }).call(this,require("buffer").Buffer)
36870 },{"buffer":5}],72:[function(require,module,exports){
36871 (function (Buffer){
36872 const assert = require('assert')
36873 /**
36874 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36875 * This function takes in a data, convert it to buffer if not, and a length for recursion
36876 *
36877 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36878 * @returns {Buffer} - returns buffer of encoded data
36879 **/
36880 exports.encode = function (input) {
36881 if (input instanceof Array) {
36882 var output = []
36883 for (var i = 0; i < input.length; i++) {
36884 output.push(exports.encode(input[i]))
36885 }
36886 var buf = Buffer.concat(output)
36887 return Buffer.concat([encodeLength(buf.length, 192), buf])
36888 } else {
36889 input = toBuffer(input)
36890 if (input.length === 1 && input[0] < 128) {
36891 return input
36892 } else {
36893 return Buffer.concat([encodeLength(input.length, 128), input])
36894 }
36895 }
36896 }
36897
36898 function safeParseInt (v, base) {
36899 if (v.slice(0, 2) === '00') {
36900 throw (new Error('invalid RLP: extra zeros'))
36901 }
36902
36903 return parseInt(v, base)
36904 }
36905
36906 function encodeLength (len, offset) {
36907 if (len < 56) {
36908 return new Buffer([len + offset])
36909 } else {
36910 var hexLength = intToHex(len)
36911 var lLength = hexLength.length / 2
36912 var firstByte = intToHex(offset + 55 + lLength)
36913 return new Buffer(firstByte + hexLength, 'hex')
36914 }
36915 }
36916
36917 /**
36918 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36919 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36920 * @returns {Array} - returns decode Array of Buffers containg the original message
36921 **/
36922 exports.decode = function (input, stream) {
36923 if (!input || input.length === 0) {
36924 return new Buffer([])
36925 }
36926
36927 input = toBuffer(input)
36928 var decoded = _decode(input)
36929
36930 if (stream) {
36931 return decoded
36932 }
36933
36934 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36935 return decoded.data
36936 }
36937
36938 exports.getLength = function (input) {
36939 if (!input || input.length === 0) {
36940 return new Buffer([])
36941 }
36942
36943 input = toBuffer(input)
36944 var firstByte = input[0]
36945 if (firstByte <= 0x7f) {
36946 return input.length
36947 } else if (firstByte <= 0xb7) {
36948 return firstByte - 0x7f
36949 } else if (firstByte <= 0xbf) {
36950 return firstByte - 0xb6
36951 } else if (firstByte <= 0xf7) {
36952 // a list between 0-55 bytes long
36953 return firstByte - 0xbf
36954 } else {
36955 // a list over 55 bytes long
36956 var llength = firstByte - 0xf6
36957 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36958 return llength + length
36959 }
36960 }
36961
36962 function _decode (input) {
36963 var length, llength, data, innerRemainder, d
36964 var decoded = []
36965 var firstByte = input[0]
36966
36967 if (firstByte <= 0x7f) {
36968 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
36969 return {
36970 data: input.slice(0, 1),
36971 remainder: input.slice(1)
36972 }
36973 } else if (firstByte <= 0xb7) {
36974 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
36975 // The range of the first byte is [0x80, 0xb7]
36976 length = firstByte - 0x7f
36977
36978 // set 0x80 null to 0
36979 if (firstByte === 0x80) {
36980 data = new Buffer([])
36981 } else {
36982 data = input.slice(1, length)
36983 }
36984
36985 if (length === 2 && data[0] < 0x80) {
36986 throw new Error('invalid rlp encoding: byte must be less 0x80')
36987 }
36988
36989 return {
36990 data: data,
36991 remainder: input.slice(length)
36992 }
36993 } else if (firstByte <= 0xbf) {
36994 llength = firstByte - 0xb6
36995 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36996 data = input.slice(llength, length + llength)
36997 if (data.length < length) {
36998 throw (new Error('invalid RLP'))
36999 }
37000
37001 return {
37002 data: data,
37003 remainder: input.slice(length + llength)
37004 }
37005 } else if (firstByte <= 0xf7) {
37006 // a list between 0-55 bytes long
37007 length = firstByte - 0xbf
37008 innerRemainder = input.slice(1, length)
37009 while (innerRemainder.length) {
37010 d = _decode(innerRemainder)
37011 decoded.push(d.data)
37012 innerRemainder = d.remainder
37013 }
37014
37015 return {
37016 data: decoded,
37017 remainder: input.slice(length)
37018 }
37019 } else {
37020 // a list over 55 bytes long
37021 llength = firstByte - 0xf6
37022 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37023 var totalLength = llength + length
37024 if (totalLength > input.length) {
37025 throw new Error('invalid rlp: total length is larger than the data')
37026 }
37027
37028 innerRemainder = input.slice(llength, totalLength)
37029 if (innerRemainder.length === 0) {
37030 throw new Error('invalid rlp, List has a invalid length')
37031 }
37032
37033 while (innerRemainder.length) {
37034 d = _decode(innerRemainder)
37035 decoded.push(d.data)
37036 innerRemainder = d.remainder
37037 }
37038 return {
37039 data: decoded,
37040 remainder: input.slice(totalLength)
37041 }
37042 }
37043 }
37044
37045 function isHexPrefixed (str) {
37046 return str.slice(0, 2) === '0x'
37047 }
37048
37049 // Removes 0x from a given String
37050 function stripHexPrefix (str) {
37051 if (typeof str !== 'string') {
37052 return str
37053 }
37054 return isHexPrefixed(str) ? str.slice(2) : str
37055 }
37056
37057 function intToHex (i) {
37058 var hex = i.toString(16)
37059 if (hex.length % 2) {
37060 hex = '0' + hex
37061 }
37062
37063 return hex
37064 }
37065
37066 function padToEven (a) {
37067 if (a.length % 2) a = '0' + a
37068 return a
37069 }
37070
37071 function intToBuffer (i) {
37072 var hex = intToHex(i)
37073 return new Buffer(hex, 'hex')
37074 }
37075
37076 function toBuffer (v) {
37077 if (!Buffer.isBuffer(v)) {
37078 if (typeof v === 'string') {
37079 if (isHexPrefixed(v)) {
37080 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37081 } else {
37082 v = new Buffer(v)
37083 }
37084 } else if (typeof v === 'number') {
37085 if (!v) {
37086 v = new Buffer([])
37087 } else {
37088 v = intToBuffer(v)
37089 }
37090 } else if (v === null || v === undefined) {
37091 v = new Buffer([])
37092 } else if (v.toArray) {
37093 // converts a BN to a Buffer
37094 v = new Buffer(v.toArray())
37095 } else {
37096 throw new Error('invalid type')
37097 }
37098 }
37099 return v
37100 }
37101
37102 }).call(this,require("buffer").Buffer)
37103 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
37104 'use strict'
37105 module.exports = require('./lib')(require('./lib/elliptic'))
37106
37107 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37108 (function (Buffer){
37109 'use strict'
37110 var toString = Object.prototype.toString
37111
37112 // TypeError
37113 exports.isArray = function (value, message) {
37114 if (!Array.isArray(value)) throw TypeError(message)
37115 }
37116
37117 exports.isBoolean = function (value, message) {
37118 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37119 }
37120
37121 exports.isBuffer = function (value, message) {
37122 if (!Buffer.isBuffer(value)) throw TypeError(message)
37123 }
37124
37125 exports.isFunction = function (value, message) {
37126 if (toString.call(value) !== '[object Function]') throw TypeError(message)
37127 }
37128
37129 exports.isNumber = function (value, message) {
37130 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37131 }
37132
37133 exports.isObject = function (value, message) {
37134 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37135 }
37136
37137 // RangeError
37138 exports.isBufferLength = function (buffer, length, message) {
37139 if (buffer.length !== length) throw RangeError(message)
37140 }
37141
37142 exports.isBufferLength2 = function (buffer, length1, length2, message) {
37143 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
37144 }
37145
37146 exports.isLengthGTZero = function (value, message) {
37147 if (value.length === 0) throw RangeError(message)
37148 }
37149
37150 exports.isNumberInInterval = function (number, x, y, message) {
37151 if (number <= x || number >= y) throw RangeError(message)
37152 }
37153
37154 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37155 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
37156 (function (Buffer){
37157 'use strict'
37158 var bip66 = require('bip66')
37159
37160 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37161 // begin
37162 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37163 // private key
37164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37166 // middle
37167 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37168 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37169 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37170 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37171 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37172 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37173 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37174 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37175 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37176 // public key
37177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37179 0x00
37180 ])
37181
37182 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37183 // begin
37184 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37185 // private key
37186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37188 // middle
37189 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37190 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37191 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37192 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37193 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37194 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37195 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37196 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37197 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37198 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37199 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37200 // public key
37201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37205 0x00
37206 ])
37207
37208 var ZERO_BUFFER_32 = new Buffer([
37209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37211 ])
37212
37213 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37214 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37215 privateKey.copy(result, compressed ? 8 : 9)
37216 publicKey.copy(result, compressed ? 181 : 214)
37217 return result
37218 }
37219
37220 exports.privateKeyImport = function (privateKey) {
37221 var length = privateKey.length
37222
37223 // sequence header
37224 var index = 0
37225 if (length < index + 1 || privateKey[index] !== 0x30) return
37226 index += 1
37227
37228 // sequence length constructor
37229 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37230
37231 var lenb = privateKey[index] & 0x7f
37232 index += 1
37233 if (lenb < 1 || lenb > 2) return
37234 if (length < index + lenb) return
37235
37236 // sequence length
37237 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37238 index += lenb
37239 if (length < index + len) return
37240
37241 // sequence element 0: version number (=1)
37242 if (length < index + 3 ||
37243 privateKey[index] !== 0x02 ||
37244 privateKey[index + 1] !== 0x01 ||
37245 privateKey[index + 2] !== 0x01) {
37246 return
37247 }
37248 index += 3
37249
37250 // sequence element 1: octet string, up to 32 bytes
37251 if (length < index + 2 ||
37252 privateKey[index] !== 0x04 ||
37253 privateKey[index + 1] > 0x20 ||
37254 length < index + 2 + privateKey[index + 1]) {
37255 return
37256 }
37257
37258 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
37259 }
37260
37261 exports.signatureExport = function (sigObj) {
37262 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37263 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
37264
37265 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37266 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
37267
37268 return bip66.encode(r.slice(posR), s.slice(posS))
37269 }
37270
37271 exports.signatureImport = function (sig) {
37272 var r = new Buffer(ZERO_BUFFER_32)
37273 var s = new Buffer(ZERO_BUFFER_32)
37274
37275 try {
37276 var sigObj = bip66.decode(sig)
37277 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37278 if (sigObj.r.length > 32) throw new Error('R length is too long')
37279 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37280 if (sigObj.s.length > 32) throw new Error('S length is too long')
37281 } catch (err) {
37282 return
37283 }
37284
37285 sigObj.r.copy(r, 32 - sigObj.r.length)
37286 sigObj.s.copy(s, 32 - sigObj.s.length)
37287
37288 return { r: r, s: s }
37289 }
37290
37291 exports.signatureImportLax = function (sig) {
37292 var r = new Buffer(ZERO_BUFFER_32)
37293 var s = new Buffer(ZERO_BUFFER_32)
37294
37295 var length = sig.length
37296 var index = 0
37297
37298 // sequence tag byte
37299 if (sig[index++] !== 0x30) return
37300
37301 // sequence length byte
37302 var lenbyte = sig[index++]
37303 if (lenbyte & 0x80) {
37304 index += lenbyte - 0x80
37305 if (index > length) return
37306 }
37307
37308 // sequence tag byte for r
37309 if (sig[index++] !== 0x02) return
37310
37311 // length for r
37312 var rlen = sig[index++]
37313 if (rlen & 0x80) {
37314 lenbyte = rlen - 0x80
37315 if (index + lenbyte > length) return
37316 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37317 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
37318 }
37319 if (rlen > length - index) return
37320 var rindex = index
37321 index += rlen
37322
37323 // sequence tag byte for s
37324 if (sig[index++] !== 0x02) return
37325
37326 // length for s
37327 var slen = sig[index++]
37328 if (slen & 0x80) {
37329 lenbyte = slen - 0x80
37330 if (index + lenbyte > length) return
37331 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37332 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
37333 }
37334 if (slen > length - index) return
37335 var sindex = index
37336 index += slen
37337
37338 // ignore leading zeros in r
37339 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37340 // copy r value
37341 if (rlen > 32) return
37342 var rvalue = sig.slice(rindex, rindex + rlen)
37343 rvalue.copy(r, 32 - rvalue.length)
37344
37345 // ignore leading zeros in s
37346 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37347 // copy s value
37348 if (slen > 32) return
37349 var svalue = sig.slice(sindex, sindex + slen)
37350 svalue.copy(s, 32 - svalue.length)
37351
37352 return { r: r, s: s }
37353 }
37354
37355 }).call(this,require("buffer").Buffer)
37356 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37357 (function (Buffer){
37358 'use strict'
37359 var createHash = require('create-hash')
37360 var BN = require('bn.js')
37361 var EC = require('elliptic').ec
37362
37363 var messages = require('../messages.json')
37364
37365 var ec = new EC('secp256k1')
37366 var ecparams = ec.curve
37367
37368 function loadCompressedPublicKey (first, xBuffer) {
37369 var x = new BN(xBuffer)
37370
37371 // overflow
37372 if (x.cmp(ecparams.p) >= 0) return null
37373 x = x.toRed(ecparams.red)
37374
37375 // compute corresponding Y
37376 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37377 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37378
37379 return ec.keyPair({ pub: { x: x, y: y } })
37380 }
37381
37382 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37383 var x = new BN(xBuffer)
37384 var y = new BN(yBuffer)
37385
37386 // overflow
37387 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
37388
37389 x = x.toRed(ecparams.red)
37390 y = y.toRed(ecparams.red)
37391
37392 // is odd flag
37393 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
37394
37395 // x*x*x + b = y*y
37396 var x3 = x.redSqr().redIMul(x)
37397 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
37398
37399 return ec.keyPair({ pub: { x: x, y: y } })
37400 }
37401
37402 function loadPublicKey (publicKey) {
37403 var first = publicKey[0]
37404 switch (first) {
37405 case 0x02:
37406 case 0x03:
37407 if (publicKey.length !== 33) return null
37408 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37409 case 0x04:
37410 case 0x06:
37411 case 0x07:
37412 if (publicKey.length !== 65) return null
37413 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37414 default:
37415 return null
37416 }
37417 }
37418
37419 exports.privateKeyVerify = function (privateKey) {
37420 var bn = new BN(privateKey)
37421 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37422 }
37423
37424 exports.privateKeyExport = function (privateKey, compressed) {
37425 var d = new BN(privateKey)
37426 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
37427
37428 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37429 }
37430
37431 exports.privateKeyTweakAdd = function (privateKey, tweak) {
37432 var bn = new BN(tweak)
37433 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37434
37435 bn.iadd(new BN(privateKey))
37436 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37437 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37438
37439 return bn.toArrayLike(Buffer, 'be', 32)
37440 }
37441
37442 exports.privateKeyTweakMul = function (privateKey, tweak) {
37443 var bn = new BN(tweak)
37444 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37445
37446 bn.imul(new BN(privateKey))
37447 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37448
37449 return bn.toArrayLike(Buffer, 'be', 32)
37450 }
37451
37452 exports.publicKeyCreate = function (privateKey, compressed) {
37453 var d = new BN(privateKey)
37454 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37455
37456 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37457 }
37458
37459 exports.publicKeyConvert = function (publicKey, compressed) {
37460 var pair = loadPublicKey(publicKey)
37461 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37462
37463 return new Buffer(pair.getPublic(compressed, true))
37464 }
37465
37466 exports.publicKeyVerify = function (publicKey) {
37467 return loadPublicKey(publicKey) !== null
37468 }
37469
37470 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37471 var pair = loadPublicKey(publicKey)
37472 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37473
37474 tweak = new BN(tweak)
37475 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
37476
37477 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37478 }
37479
37480 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37481 var pair = loadPublicKey(publicKey)
37482 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37483
37484 tweak = new BN(tweak)
37485 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
37486
37487 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37488 }
37489
37490 exports.publicKeyCombine = function (publicKeys, compressed) {
37491 var pairs = new Array(publicKeys.length)
37492 for (var i = 0; i < publicKeys.length; ++i) {
37493 pairs[i] = loadPublicKey(publicKeys[i])
37494 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37495 }
37496
37497 var point = pairs[0].pub
37498 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37499 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
37500
37501 return new Buffer(point.encode(true, compressed))
37502 }
37503
37504 exports.signatureNormalize = function (signature) {
37505 var r = new BN(signature.slice(0, 32))
37506 var s = new BN(signature.slice(32, 64))
37507 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37508
37509 var result = new Buffer(signature)
37510 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37511
37512 return result
37513 }
37514
37515 exports.signatureExport = function (signature) {
37516 var r = signature.slice(0, 32)
37517 var s = signature.slice(32, 64)
37518 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37519
37520 return { r: r, s: s }
37521 }
37522
37523 exports.signatureImport = function (sigObj) {
37524 var r = new BN(sigObj.r)
37525 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37526
37527 var s = new BN(sigObj.s)
37528 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37529
37530 return Buffer.concat([
37531 r.toArrayLike(Buffer, 'be', 32),
37532 s.toArrayLike(Buffer, 'be', 32)
37533 ])
37534 }
37535
37536 exports.sign = function (message, privateKey, noncefn, data) {
37537 if (typeof noncefn === 'function') {
37538 var getNonce = noncefn
37539 noncefn = function (counter) {
37540 var nonce = getNonce(message, privateKey, null, data, counter)
37541 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
37542
37543 return new BN(nonce)
37544 }
37545 }
37546
37547 var d = new BN(privateKey)
37548 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
37549
37550 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37551 return {
37552 signature: Buffer.concat([
37553 result.r.toArrayLike(Buffer, 'be', 32),
37554 result.s.toArrayLike(Buffer, 'be', 32)
37555 ]),
37556 recovery: result.recoveryParam
37557 }
37558 }
37559
37560 exports.verify = function (message, signature, publicKey) {
37561 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37562
37563 var sigr = new BN(sigObj.r)
37564 var sigs = new BN(sigObj.s)
37565 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37566 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
37567
37568 var pair = loadPublicKey(publicKey)
37569 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37570
37571 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37572 }
37573
37574 exports.recover = function (message, signature, recovery, compressed) {
37575 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37576
37577 var sigr = new BN(sigObj.r)
37578 var sigs = new BN(sigObj.s)
37579 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37580
37581 try {
37582 if (sigr.isZero() || sigs.isZero()) throw new Error()
37583
37584 var point = ec.recoverPubKey(message, sigObj, recovery)
37585 return new Buffer(point.encode(true, compressed))
37586 } catch (err) {
37587 throw new Error(messages.ECDSA_RECOVER_FAIL)
37588 }
37589 }
37590
37591 exports.ecdh = function (publicKey, privateKey) {
37592 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37593 return createHash('sha256').update(shared).digest()
37594 }
37595
37596 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37597 var pair = loadPublicKey(publicKey)
37598 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37599
37600 var scalar = new BN(privateKey)
37601 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37602
37603 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
37604 }
37605
37606 }).call(this,require("buffer").Buffer)
37607 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37608 'use strict'
37609 var assert = require('./assert')
37610 var der = require('./der')
37611 var messages = require('./messages.json')
37612
37613 function initCompressedValue (value, defaultValue) {
37614 if (value === undefined) return defaultValue
37615
37616 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37617 return value
37618 }
37619
37620 module.exports = function (secp256k1) {
37621 return {
37622 privateKeyVerify: function (privateKey) {
37623 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37624 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37625 },
37626
37627 privateKeyExport: function (privateKey, compressed) {
37628 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37629 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37630
37631 compressed = initCompressedValue(compressed, true)
37632 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
37633
37634 return der.privateKeyExport(privateKey, publicKey, compressed)
37635 },
37636
37637 privateKeyImport: function (privateKey) {
37638 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37639
37640 privateKey = der.privateKeyImport(privateKey)
37641 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
37642
37643 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37644 },
37645
37646 privateKeyTweakAdd: function (privateKey, tweak) {
37647 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37648 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37649
37650 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37651 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37652
37653 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37654 },
37655
37656 privateKeyTweakMul: function (privateKey, tweak) {
37657 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37658 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37659
37660 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37661 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37662
37663 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37664 },
37665
37666 publicKeyCreate: function (privateKey, compressed) {
37667 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37668 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37669
37670 compressed = initCompressedValue(compressed, true)
37671
37672 return secp256k1.publicKeyCreate(privateKey, compressed)
37673 },
37674
37675 publicKeyConvert: function (publicKey, compressed) {
37676 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37677 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37678
37679 compressed = initCompressedValue(compressed, true)
37680
37681 return secp256k1.publicKeyConvert(publicKey, compressed)
37682 },
37683
37684 publicKeyVerify: function (publicKey) {
37685 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37686 return secp256k1.publicKeyVerify(publicKey)
37687 },
37688
37689 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37690 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37691 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37692
37693 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37694 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37695
37696 compressed = initCompressedValue(compressed, true)
37697
37698 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37699 },
37700
37701 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37702 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37703 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37704
37705 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37706 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37707
37708 compressed = initCompressedValue(compressed, true)
37709
37710 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37711 },
37712
37713 publicKeyCombine: function (publicKeys, compressed) {
37714 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37715 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37716 for (var i = 0; i < publicKeys.length; ++i) {
37717 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37718 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37719 }
37720
37721 compressed = initCompressedValue(compressed, true)
37722
37723 return secp256k1.publicKeyCombine(publicKeys, compressed)
37724 },
37725
37726 signatureNormalize: function (signature) {
37727 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37728 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37729
37730 return secp256k1.signatureNormalize(signature)
37731 },
37732
37733 signatureExport: function (signature) {
37734 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37735 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37736
37737 var sigObj = secp256k1.signatureExport(signature)
37738 return der.signatureExport(sigObj)
37739 },
37740
37741 signatureImport: function (sig) {
37742 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37743 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37744
37745 var sigObj = der.signatureImport(sig)
37746 if (sigObj) return secp256k1.signatureImport(sigObj)
37747
37748 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37749 },
37750
37751 signatureImportLax: function (sig) {
37752 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37753 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37754
37755 var sigObj = der.signatureImportLax(sig)
37756 if (sigObj) return secp256k1.signatureImport(sigObj)
37757
37758 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37759 },
37760
37761 sign: function (message, privateKey, options) {
37762 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37763 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37764
37765 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37766 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37767
37768 var data = null
37769 var noncefn = null
37770 if (options !== undefined) {
37771 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37772
37773 if (options.data !== undefined) {
37774 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37775 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37776 data = options.data
37777 }
37778
37779 if (options.noncefn !== undefined) {
37780 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37781 noncefn = options.noncefn
37782 }
37783 }
37784
37785 return secp256k1.sign(message, privateKey, noncefn, data)
37786 },
37787
37788 verify: function (message, signature, publicKey) {
37789 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37790 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37791
37792 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37793 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37794
37795 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37796 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37797
37798 return secp256k1.verify(message, signature, publicKey)
37799 },
37800
37801 recover: function (message, signature, recovery, compressed) {
37802 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37803 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37804
37805 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37806 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37807
37808 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37809 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
37810
37811 compressed = initCompressedValue(compressed, true)
37812
37813 return secp256k1.recover(message, signature, recovery, compressed)
37814 },
37815
37816 ecdh: function (publicKey, privateKey) {
37817 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37818 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37819
37820 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37821 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37822
37823 return secp256k1.ecdh(publicKey, privateKey)
37824 },
37825
37826 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37827 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37828 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37829
37830 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37831 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37832
37833 compressed = initCompressedValue(compressed, true)
37834
37835 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37836 }
37837 }
37838 }
37839
37840 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37841 module.exports={
37842 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37843 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37844 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37845 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37846 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37847 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37848 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37849 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37850 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37851 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37852 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37853 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37854 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37855 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37856 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37857 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37858 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37859 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37860 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37861 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37862 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37863 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37864 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37865 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37866 "MSG32_TYPE_INVALID": "message should be a Buffer",
37867 "MSG32_LENGTH_INVALID": "message length is invalid",
37868 "OPTIONS_TYPE_INVALID": "options should be an Object",
37869 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37870 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37871 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37872 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37873 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37874 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37875 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37876 }
37877
37878 },{}],79:[function(require,module,exports){
37879 (function (Buffer){
37880 // prototype class for hash functions
37881 function Hash (blockSize, finalSize) {
37882 this._block = new Buffer(blockSize)
37883 this._finalSize = finalSize
37884 this._blockSize = blockSize
37885 this._len = 0
37886 this._s = 0
37887 }
37888
37889 Hash.prototype.update = function (data, enc) {
37890 if (typeof data === 'string') {
37891 enc = enc || 'utf8'
37892 data = new Buffer(data, enc)
37893 }
37894
37895 var l = this._len += data.length
37896 var s = this._s || 0
37897 var f = 0
37898 var buffer = this._block
37899
37900 while (s < l) {
37901 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37902 var ch = (t - f)
37903
37904 for (var i = 0; i < ch; i++) {
37905 buffer[(s % this._blockSize) + i] = data[i + f]
37906 }
37907
37908 s += ch
37909 f += ch
37910
37911 if ((s % this._blockSize) === 0) {
37912 this._update(buffer)
37913 }
37914 }
37915 this._s = s
37916
37917 return this
37918 }
37919
37920 Hash.prototype.digest = function (enc) {
37921 // Suppose the length of the message M, in bits, is l
37922 var l = this._len * 8
37923
37924 // Append the bit 1 to the end of the message
37925 this._block[this._len % this._blockSize] = 0x80
37926
37927 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37928 this._block.fill(0, this._len % this._blockSize + 1)
37929
37930 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37931 this._update(this._block)
37932 this._block.fill(0)
37933 }
37934
37935 // to this append the block which is equal to the number l written in binary
37936 // TODO: handle case where l is > Math.pow(2, 29)
37937 this._block.writeInt32BE(l, this._blockSize - 4)
37938
37939 var hash = this._update(this._block) || this._hash()
37940
37941 return enc ? hash.toString(enc) : hash
37942 }
37943
37944 Hash.prototype._update = function () {
37945 throw new Error('_update must be implemented by subclass')
37946 }
37947
37948 module.exports = Hash
37949
37950 }).call(this,require("buffer").Buffer)
37951 },{"buffer":5}],80:[function(require,module,exports){
37952 var exports = module.exports = function SHA (algorithm) {
37953 algorithm = algorithm.toLowerCase()
37954
37955 var Algorithm = exports[algorithm]
37956 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
37957
37958 return new Algorithm()
37959 }
37960
37961 exports.sha = require('./sha')
37962 exports.sha1 = require('./sha1')
37963 exports.sha224 = require('./sha224')
37964 exports.sha256 = require('./sha256')
37965 exports.sha384 = require('./sha384')
37966 exports.sha512 = require('./sha512')
37967
37968 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
37969 (function (Buffer){
37970 /*
37971 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
37972 * in FIPS PUB 180-1
37973 * This source code is derived from sha1.js of the same repository.
37974 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
37975 * operation was added.
37976 */
37977
37978 var inherits = require('inherits')
37979 var Hash = require('./hash')
37980
37981 var K = [
37982 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
37983 ]
37984
37985 var W = new Array(80)
37986
37987 function Sha () {
37988 this.init()
37989 this._w = W
37990
37991 Hash.call(this, 64, 56)
37992 }
37993
37994 inherits(Sha, Hash)
37995
37996 Sha.prototype.init = function () {
37997 this._a = 0x67452301
37998 this._b = 0xefcdab89
37999 this._c = 0x98badcfe
38000 this._d = 0x10325476
38001 this._e = 0xc3d2e1f0
38002
38003 return this
38004 }
38005
38006 function rotl5 (num) {
38007 return (num << 5) | (num >>> 27)
38008 }
38009
38010 function rotl30 (num) {
38011 return (num << 30) | (num >>> 2)
38012 }
38013
38014 function ft (s, b, c, d) {
38015 if (s === 0) return (b & c) | ((~b) & d)
38016 if (s === 2) return (b & c) | (b & d) | (c & d)
38017 return b ^ c ^ d
38018 }
38019
38020 Sha.prototype._update = function (M) {
38021 var W = this._w
38022
38023 var a = this._a | 0
38024 var b = this._b | 0
38025 var c = this._c | 0
38026 var d = this._d | 0
38027 var e = this._e | 0
38028
38029 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38030 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
38031
38032 for (var j = 0; j < 80; ++j) {
38033 var s = ~~(j / 20)
38034 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38035
38036 e = d
38037 d = c
38038 c = rotl30(b)
38039 b = a
38040 a = t
38041 }
38042
38043 this._a = (a + this._a) | 0
38044 this._b = (b + this._b) | 0
38045 this._c = (c + this._c) | 0
38046 this._d = (d + this._d) | 0
38047 this._e = (e + this._e) | 0
38048 }
38049
38050 Sha.prototype._hash = function () {
38051 var H = new Buffer(20)
38052
38053 H.writeInt32BE(this._a | 0, 0)
38054 H.writeInt32BE(this._b | 0, 4)
38055 H.writeInt32BE(this._c | 0, 8)
38056 H.writeInt32BE(this._d | 0, 12)
38057 H.writeInt32BE(this._e | 0, 16)
38058
38059 return H
38060 }
38061
38062 module.exports = Sha
38063
38064 }).call(this,require("buffer").Buffer)
38065 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38066 (function (Buffer){
38067 /*
38068 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38069 * in FIPS PUB 180-1
38070 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38071 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38072 * Distributed under the BSD License
38073 * See http://pajhome.org.uk/crypt/md5 for details.
38074 */
38075
38076 var inherits = require('inherits')
38077 var Hash = require('./hash')
38078
38079 var K = [
38080 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38081 ]
38082
38083 var W = new Array(80)
38084
38085 function Sha1 () {
38086 this.init()
38087 this._w = W
38088
38089 Hash.call(this, 64, 56)
38090 }
38091
38092 inherits(Sha1, Hash)
38093
38094 Sha1.prototype.init = function () {
38095 this._a = 0x67452301
38096 this._b = 0xefcdab89
38097 this._c = 0x98badcfe
38098 this._d = 0x10325476
38099 this._e = 0xc3d2e1f0
38100
38101 return this
38102 }
38103
38104 function rotl1 (num) {
38105 return (num << 1) | (num >>> 31)
38106 }
38107
38108 function rotl5 (num) {
38109 return (num << 5) | (num >>> 27)
38110 }
38111
38112 function rotl30 (num) {
38113 return (num << 30) | (num >>> 2)
38114 }
38115
38116 function ft (s, b, c, d) {
38117 if (s === 0) return (b & c) | ((~b) & d)
38118 if (s === 2) return (b & c) | (b & d) | (c & d)
38119 return b ^ c ^ d
38120 }
38121
38122 Sha1.prototype._update = function (M) {
38123 var W = this._w
38124
38125 var a = this._a | 0
38126 var b = this._b | 0
38127 var c = this._c | 0
38128 var d = this._d | 0
38129 var e = this._e | 0
38130
38131 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38132 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38133
38134 for (var j = 0; j < 80; ++j) {
38135 var s = ~~(j / 20)
38136 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38137
38138 e = d
38139 d = c
38140 c = rotl30(b)
38141 b = a
38142 a = t
38143 }
38144
38145 this._a = (a + this._a) | 0
38146 this._b = (b + this._b) | 0
38147 this._c = (c + this._c) | 0
38148 this._d = (d + this._d) | 0
38149 this._e = (e + this._e) | 0
38150 }
38151
38152 Sha1.prototype._hash = function () {
38153 var H = new Buffer(20)
38154
38155 H.writeInt32BE(this._a | 0, 0)
38156 H.writeInt32BE(this._b | 0, 4)
38157 H.writeInt32BE(this._c | 0, 8)
38158 H.writeInt32BE(this._d | 0, 12)
38159 H.writeInt32BE(this._e | 0, 16)
38160
38161 return H
38162 }
38163
38164 module.exports = Sha1
38165
38166 }).call(this,require("buffer").Buffer)
38167 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38168 (function (Buffer){
38169 /**
38170 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38171 * in FIPS 180-2
38172 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38173 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38174 *
38175 */
38176
38177 var inherits = require('inherits')
38178 var Sha256 = require('./sha256')
38179 var Hash = require('./hash')
38180
38181 var W = new Array(64)
38182
38183 function Sha224 () {
38184 this.init()
38185
38186 this._w = W // new Array(64)
38187
38188 Hash.call(this, 64, 56)
38189 }
38190
38191 inherits(Sha224, Sha256)
38192
38193 Sha224.prototype.init = function () {
38194 this._a = 0xc1059ed8
38195 this._b = 0x367cd507
38196 this._c = 0x3070dd17
38197 this._d = 0xf70e5939
38198 this._e = 0xffc00b31
38199 this._f = 0x68581511
38200 this._g = 0x64f98fa7
38201 this._h = 0xbefa4fa4
38202
38203 return this
38204 }
38205
38206 Sha224.prototype._hash = function () {
38207 var H = new Buffer(28)
38208
38209 H.writeInt32BE(this._a, 0)
38210 H.writeInt32BE(this._b, 4)
38211 H.writeInt32BE(this._c, 8)
38212 H.writeInt32BE(this._d, 12)
38213 H.writeInt32BE(this._e, 16)
38214 H.writeInt32BE(this._f, 20)
38215 H.writeInt32BE(this._g, 24)
38216
38217 return H
38218 }
38219
38220 module.exports = Sha224
38221
38222 }).call(this,require("buffer").Buffer)
38223 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38224 (function (Buffer){
38225 /**
38226 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38227 * in FIPS 180-2
38228 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38229 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38230 *
38231 */
38232
38233 var inherits = require('inherits')
38234 var Hash = require('./hash')
38235
38236 var K = [
38237 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38238 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38239 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38240 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38241 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38242 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38243 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38244 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38245 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38246 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38247 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38248 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38249 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38250 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38251 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38252 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38253 ]
38254
38255 var W = new Array(64)
38256
38257 function Sha256 () {
38258 this.init()
38259
38260 this._w = W // new Array(64)
38261
38262 Hash.call(this, 64, 56)
38263 }
38264
38265 inherits(Sha256, Hash)
38266
38267 Sha256.prototype.init = function () {
38268 this._a = 0x6a09e667
38269 this._b = 0xbb67ae85
38270 this._c = 0x3c6ef372
38271 this._d = 0xa54ff53a
38272 this._e = 0x510e527f
38273 this._f = 0x9b05688c
38274 this._g = 0x1f83d9ab
38275 this._h = 0x5be0cd19
38276
38277 return this
38278 }
38279
38280 function ch (x, y, z) {
38281 return z ^ (x & (y ^ z))
38282 }
38283
38284 function maj (x, y, z) {
38285 return (x & y) | (z & (x | y))
38286 }
38287
38288 function sigma0 (x) {
38289 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38290 }
38291
38292 function sigma1 (x) {
38293 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38294 }
38295
38296 function gamma0 (x) {
38297 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38298 }
38299
38300 function gamma1 (x) {
38301 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38302 }
38303
38304 Sha256.prototype._update = function (M) {
38305 var W = this._w
38306
38307 var a = this._a | 0
38308 var b = this._b | 0
38309 var c = this._c | 0
38310 var d = this._d | 0
38311 var e = this._e | 0
38312 var f = this._f | 0
38313 var g = this._g | 0
38314 var h = this._h | 0
38315
38316 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38317 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
38318
38319 for (var j = 0; j < 64; ++j) {
38320 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38321 var T2 = (sigma0(a) + maj(a, b, c)) | 0
38322
38323 h = g
38324 g = f
38325 f = e
38326 e = (d + T1) | 0
38327 d = c
38328 c = b
38329 b = a
38330 a = (T1 + T2) | 0
38331 }
38332
38333 this._a = (a + this._a) | 0
38334 this._b = (b + this._b) | 0
38335 this._c = (c + this._c) | 0
38336 this._d = (d + this._d) | 0
38337 this._e = (e + this._e) | 0
38338 this._f = (f + this._f) | 0
38339 this._g = (g + this._g) | 0
38340 this._h = (h + this._h) | 0
38341 }
38342
38343 Sha256.prototype._hash = function () {
38344 var H = new Buffer(32)
38345
38346 H.writeInt32BE(this._a, 0)
38347 H.writeInt32BE(this._b, 4)
38348 H.writeInt32BE(this._c, 8)
38349 H.writeInt32BE(this._d, 12)
38350 H.writeInt32BE(this._e, 16)
38351 H.writeInt32BE(this._f, 20)
38352 H.writeInt32BE(this._g, 24)
38353 H.writeInt32BE(this._h, 28)
38354
38355 return H
38356 }
38357
38358 module.exports = Sha256
38359
38360 }).call(this,require("buffer").Buffer)
38361 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38362 (function (Buffer){
38363 var inherits = require('inherits')
38364 var SHA512 = require('./sha512')
38365 var Hash = require('./hash')
38366
38367 var W = new Array(160)
38368
38369 function Sha384 () {
38370 this.init()
38371 this._w = W
38372
38373 Hash.call(this, 128, 112)
38374 }
38375
38376 inherits(Sha384, SHA512)
38377
38378 Sha384.prototype.init = function () {
38379 this._ah = 0xcbbb9d5d
38380 this._bh = 0x629a292a
38381 this._ch = 0x9159015a
38382 this._dh = 0x152fecd8
38383 this._eh = 0x67332667
38384 this._fh = 0x8eb44a87
38385 this._gh = 0xdb0c2e0d
38386 this._hh = 0x47b5481d
38387
38388 this._al = 0xc1059ed8
38389 this._bl = 0x367cd507
38390 this._cl = 0x3070dd17
38391 this._dl = 0xf70e5939
38392 this._el = 0xffc00b31
38393 this._fl = 0x68581511
38394 this._gl = 0x64f98fa7
38395 this._hl = 0xbefa4fa4
38396
38397 return this
38398 }
38399
38400 Sha384.prototype._hash = function () {
38401 var H = new Buffer(48)
38402
38403 function writeInt64BE (h, l, offset) {
38404 H.writeInt32BE(h, offset)
38405 H.writeInt32BE(l, offset + 4)
38406 }
38407
38408 writeInt64BE(this._ah, this._al, 0)
38409 writeInt64BE(this._bh, this._bl, 8)
38410 writeInt64BE(this._ch, this._cl, 16)
38411 writeInt64BE(this._dh, this._dl, 24)
38412 writeInt64BE(this._eh, this._el, 32)
38413 writeInt64BE(this._fh, this._fl, 40)
38414
38415 return H
38416 }
38417
38418 module.exports = Sha384
38419
38420 }).call(this,require("buffer").Buffer)
38421 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38422 (function (Buffer){
38423 var inherits = require('inherits')
38424 var Hash = require('./hash')
38425
38426 var K = [
38427 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38428 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38429 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38430 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38431 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38432 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38433 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38434 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38435 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38436 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38437 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38438 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38439 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38440 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38441 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38442 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38443 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38444 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38445 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38446 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38447 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38448 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38449 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38450 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38451 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38452 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38453 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38454 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38455 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38456 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38457 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38458 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38459 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38460 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38461 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38462 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38463 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38464 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38465 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38466 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38467 ]
38468
38469 var W = new Array(160)
38470
38471 function Sha512 () {
38472 this.init()
38473 this._w = W
38474
38475 Hash.call(this, 128, 112)
38476 }
38477
38478 inherits(Sha512, Hash)
38479
38480 Sha512.prototype.init = function () {
38481 this._ah = 0x6a09e667
38482 this._bh = 0xbb67ae85
38483 this._ch = 0x3c6ef372
38484 this._dh = 0xa54ff53a
38485 this._eh = 0x510e527f
38486 this._fh = 0x9b05688c
38487 this._gh = 0x1f83d9ab
38488 this._hh = 0x5be0cd19
38489
38490 this._al = 0xf3bcc908
38491 this._bl = 0x84caa73b
38492 this._cl = 0xfe94f82b
38493 this._dl = 0x5f1d36f1
38494 this._el = 0xade682d1
38495 this._fl = 0x2b3e6c1f
38496 this._gl = 0xfb41bd6b
38497 this._hl = 0x137e2179
38498
38499 return this
38500 }
38501
38502 function Ch (x, y, z) {
38503 return z ^ (x & (y ^ z))
38504 }
38505
38506 function maj (x, y, z) {
38507 return (x & y) | (z & (x | y))
38508 }
38509
38510 function sigma0 (x, xl) {
38511 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38512 }
38513
38514 function sigma1 (x, xl) {
38515 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38516 }
38517
38518 function Gamma0 (x, xl) {
38519 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
38520 }
38521
38522 function Gamma0l (x, xl) {
38523 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38524 }
38525
38526 function Gamma1 (x, xl) {
38527 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
38528 }
38529
38530 function Gamma1l (x, xl) {
38531 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
38532 }
38533
38534 function getCarry (a, b) {
38535 return (a >>> 0) < (b >>> 0) ? 1 : 0
38536 }
38537
38538 Sha512.prototype._update = function (M) {
38539 var W = this._w
38540
38541 var ah = this._ah | 0
38542 var bh = this._bh | 0
38543 var ch = this._ch | 0
38544 var dh = this._dh | 0
38545 var eh = this._eh | 0
38546 var fh = this._fh | 0
38547 var gh = this._gh | 0
38548 var hh = this._hh | 0
38549
38550 var al = this._al | 0
38551 var bl = this._bl | 0
38552 var cl = this._cl | 0
38553 var dl = this._dl | 0
38554 var el = this._el | 0
38555 var fl = this._fl | 0
38556 var gl = this._gl | 0
38557 var hl = this._hl | 0
38558
38559 for (var i = 0; i < 32; i += 2) {
38560 W[i] = M.readInt32BE(i * 4)
38561 W[i + 1] = M.readInt32BE(i * 4 + 4)
38562 }
38563 for (; i < 160; i += 2) {
38564 var xh = W[i - 15 * 2]
38565 var xl = W[i - 15 * 2 + 1]
38566 var gamma0 = Gamma0(xh, xl)
38567 var gamma0l = Gamma0l(xl, xh)
38568
38569 xh = W[i - 2 * 2]
38570 xl = W[i - 2 * 2 + 1]
38571 var gamma1 = Gamma1(xh, xl)
38572 var gamma1l = Gamma1l(xl, xh)
38573
38574 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38575 var Wi7h = W[i - 7 * 2]
38576 var Wi7l = W[i - 7 * 2 + 1]
38577
38578 var Wi16h = W[i - 16 * 2]
38579 var Wi16l = W[i - 16 * 2 + 1]
38580
38581 var Wil = (gamma0l + Wi7l) | 0
38582 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38583 Wil = (Wil + gamma1l) | 0
38584 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38585 Wil = (Wil + Wi16l) | 0
38586 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
38587
38588 W[i] = Wih
38589 W[i + 1] = Wil
38590 }
38591
38592 for (var j = 0; j < 160; j += 2) {
38593 Wih = W[j]
38594 Wil = W[j + 1]
38595
38596 var majh = maj(ah, bh, ch)
38597 var majl = maj(al, bl, cl)
38598
38599 var sigma0h = sigma0(ah, al)
38600 var sigma0l = sigma0(al, ah)
38601 var sigma1h = sigma1(eh, el)
38602 var sigma1l = sigma1(el, eh)
38603
38604 // t1 = h + sigma1 + ch + K[j] + W[j]
38605 var Kih = K[j]
38606 var Kil = K[j + 1]
38607
38608 var chh = Ch(eh, fh, gh)
38609 var chl = Ch(el, fl, gl)
38610
38611 var t1l = (hl + sigma1l) | 0
38612 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38613 t1l = (t1l + chl) | 0
38614 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38615 t1l = (t1l + Kil) | 0
38616 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38617 t1l = (t1l + Wil) | 0
38618 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
38619
38620 // t2 = sigma0 + maj
38621 var t2l = (sigma0l + majl) | 0
38622 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
38623
38624 hh = gh
38625 hl = gl
38626 gh = fh
38627 gl = fl
38628 fh = eh
38629 fl = el
38630 el = (dl + t1l) | 0
38631 eh = (dh + t1h + getCarry(el, dl)) | 0
38632 dh = ch
38633 dl = cl
38634 ch = bh
38635 cl = bl
38636 bh = ah
38637 bl = al
38638 al = (t1l + t2l) | 0
38639 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38640 }
38641
38642 this._al = (this._al + al) | 0
38643 this._bl = (this._bl + bl) | 0
38644 this._cl = (this._cl + cl) | 0
38645 this._dl = (this._dl + dl) | 0
38646 this._el = (this._el + el) | 0
38647 this._fl = (this._fl + fl) | 0
38648 this._gl = (this._gl + gl) | 0
38649 this._hl = (this._hl + hl) | 0
38650
38651 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38652 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38653 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38654 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38655 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38656 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38657 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38658 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
38659 }
38660
38661 Sha512.prototype._hash = function () {
38662 var H = new Buffer(64)
38663
38664 function writeInt64BE (h, l, offset) {
38665 H.writeInt32BE(h, offset)
38666 H.writeInt32BE(l, offset + 4)
38667 }
38668
38669 writeInt64BE(this._ah, this._al, 0)
38670 writeInt64BE(this._bh, this._bl, 8)
38671 writeInt64BE(this._ch, this._cl, 16)
38672 writeInt64BE(this._dh, this._dl, 24)
38673 writeInt64BE(this._eh, this._el, 32)
38674 writeInt64BE(this._fh, this._fl, 40)
38675 writeInt64BE(this._gh, this._gl, 48)
38676 writeInt64BE(this._hh, this._hl, 56)
38677
38678 return H
38679 }
38680
38681 module.exports = Sha512
38682
38683 }).call(this,require("buffer").Buffer)
38684 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38685 var isHexPrefixed = require('is-hex-prefixed');
38686
38687 /**
38688 * Removes '0x' from a given `String` is present
38689 * @param {String} str the string value
38690 * @return {String|Optional} a string by pass if necessary
38691 */
38692 module.exports = function stripHexPrefix(str) {
38693 if (typeof str !== 'string') {
38694 return str;
38695 }
38696
38697 return isHexPrefixed(str) ? str.slice(2) : str;
38698 }
38699
38700 },{"is-hex-prefixed":64}]},{},[31])(31)
38701 });</script>
38702 <script>function convertRippleAdrr(address) {
38703 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38704 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38705 )
38706 }
38707
38708 function convertRipplePriv(priv) {
38709 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2)
38710 }
38711
38712 </script>
38713 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
38714
38715 //// base.js
38716
38717 /** @fileOverview Javascript cryptography implementation.
38718 *
38719 * Crush to remove comments, shorten variable names and
38720 * generally reduce transmission size.
38721 *
38722 * @author Emily Stark
38723 * @author Mike Hamburg
38724 * @author Dan Boneh
38725 */
38726
38727 "use strict";
38728 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38729 /*global document, window, escape, unescape, module, require, Uint32Array */
38730
38731 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38732 var sjcl = {
38733 /** @namespace Symmetric ciphers. */
38734 cipher: {},
38735
38736 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38737 hash: {},
38738
38739 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38740 keyexchange: {},
38741
38742 /** @namespace Block cipher modes of operation. */
38743 mode: {},
38744
38745 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38746 misc: {},
38747
38748 /**
38749 * @namespace Bit array encoders and decoders.
38750 *
38751 * @description
38752 * The members of this namespace are functions which translate between
38753 * SJCL's bitArrays and other objects (usually strings). Because it
38754 * isn't always clear which direction is encoding and which is decoding,
38755 * the method names are "fromBits" and "toBits".
38756 */
38757 codec: {},
38758
38759 /** @namespace Exceptions. */
38760 exception: {
38761 /** @constructor Ciphertext is corrupt. */
38762 corrupt: function(message) {
38763 this.toString = function() { return "CORRUPT: "+this.message; };
38764 this.message = message;
38765 },
38766
38767 /** @constructor Invalid parameter. */
38768 invalid: function(message) {
38769 this.toString = function() { return "INVALID: "+this.message; };
38770 this.message = message;
38771 },
38772
38773 /** @constructor Bug or missing feature in SJCL. @constructor */
38774 bug: function(message) {
38775 this.toString = function() { return "BUG: "+this.message; };
38776 this.message = message;
38777 },
38778
38779 /** @constructor Something isn't ready. */
38780 notReady: function(message) {
38781 this.toString = function() { return "NOT READY: "+this.message; };
38782 this.message = message;
38783 }
38784 }
38785 };
38786
38787 if(typeof module !== 'undefined' && module.exports){
38788 module.exports = sjcl;
38789 }
38790 if (typeof define === "function") {
38791 define([], function () {
38792 return sjcl;
38793 });
38794 }
38795
38796
38797 //// bitArray.js
38798
38799 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38800 *
38801 * @author Emily Stark
38802 * @author Mike Hamburg
38803 * @author Dan Boneh
38804 */
38805
38806 /** @namespace Arrays of bits, encoded as arrays of Numbers.
38807 *
38808 * @description
38809 * <p>
38810 * These objects are the currency accepted by SJCL's crypto functions.
38811 * </p>
38812 *
38813 * <p>
38814 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38815 * but many of them can take arguments that are not a multiple of 4 bytes.
38816 * This library encodes arrays of bits (whose size need not be a multiple of 8
38817 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38818 * array of words, 32 bits at a time. Since the words are double-precision
38819 * floating point numbers, they fit some extra data. We use this (in a private,
38820 * possibly-changing manner) to encode the number of bits actually present
38821 * in the last word of the array.
38822 * </p>
38823 *
38824 * <p>
38825 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38826 * to ciphers like AES which want arrays of words.
38827 * </p>
38828 */
38829 sjcl.bitArray = {
38830 /**
38831 * Array slices in units of bits.
38832 * @param {bitArray} a The array to slice.
38833 * @param {Number} bstart The offset to the start of the slice, in bits.
38834 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38835 * slice until the end of the array.
38836 * @return {bitArray} The requested slice.
38837 */
38838 bitSlice: function (a, bstart, bend) {
38839 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38840 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38841 },
38842
38843 /**
38844 * Extract a number packed into a bit array.
38845 * @param {bitArray} a The array to slice.
38846 * @param {Number} bstart The offset to the start of the slice, in bits.
38847 * @param {Number} length The length of the number to extract.
38848 * @return {Number} The requested slice.
38849 */
38850 extract: function(a, bstart, blength) {
38851 // FIXME: this Math.floor is not necessary at all, but for some reason
38852 // seems to suppress a bug in the Chromium JIT.
38853 var x, sh = Math.floor((-bstart-blength) & 31);
38854 if ((bstart + blength - 1 ^ bstart) & -32) {
38855 // it crosses a boundary
38856 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38857 } else {
38858 // within a single word
38859 x = a[bstart/32|0] >>> sh;
38860 }
38861 return x & ((1<<blength) - 1);
38862 },
38863
38864 /**
38865 * Concatenate two bit arrays.
38866 * @param {bitArray} a1 The first array.
38867 * @param {bitArray} a2 The second array.
38868 * @return {bitArray} The concatenation of a1 and a2.
38869 */
38870 concat: function (a1, a2) {
38871 if (a1.length === 0 || a2.length === 0) {
38872 return a1.concat(a2);
38873 }
38874
38875 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38876 if (shift === 32) {
38877 return a1.concat(a2);
38878 } else {
38879 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
38880 }
38881 },
38882
38883 /**
38884 * Find the length of an array of bits.
38885 * @param {bitArray} a The array.
38886 * @return {Number} The length of a, in bits.
38887 */
38888 bitLength: function (a) {
38889 var l = a.length, x;
38890 if (l === 0) { return 0; }
38891 x = a[l - 1];
38892 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38893 },
38894
38895 /**
38896 * Truncate an array.
38897 * @param {bitArray} a The array.
38898 * @param {Number} len The length to truncate to, in bits.
38899 * @return {bitArray} A new array, truncated to len bits.
38900 */
38901 clamp: function (a, len) {
38902 if (a.length * 32 < len) { return a; }
38903 a = a.slice(0, Math.ceil(len / 32));
38904 var l = a.length;
38905 len = len & 31;
38906 if (l > 0 && len) {
38907 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38908 }
38909 return a;
38910 },
38911
38912 /**
38913 * Make a partial word for a bit array.
38914 * @param {Number} len The number of bits in the word.
38915 * @param {Number} x The bits.
38916 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38917 * @return {Number} The partial word.
38918 */
38919 partial: function (len, x, _end) {
38920 if (len === 32) { return x; }
38921 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38922 },
38923
38924 /**
38925 * Get the number of bits used by a partial word.
38926 * @param {Number} x The partial word.
38927 * @return {Number} The number of bits used by the partial word.
38928 */
38929 getPartial: function (x) {
38930 return Math.round(x/0x10000000000) || 32;
38931 },
38932
38933 /**
38934 * Compare two arrays for equality in a predictable amount of time.
38935 * @param {bitArray} a The first array.
38936 * @param {bitArray} b The second array.
38937 * @return {boolean} true if a == b; false otherwise.
38938 */
38939 equal: function (a, b) {
38940 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38941 return false;
38942 }
38943 var x = 0, i;
38944 for (i=0; i<a.length; i++) {
38945 x |= a[i]^b[i];
38946 }
38947 return (x === 0);
38948 },
38949
38950 /** Shift an array right.
38951 * @param {bitArray} a The array to shift.
38952 * @param {Number} shift The number of bits to shift.
38953 * @param {Number} [carry=0] A byte to carry in
38954 * @param {bitArray} [out=[]] An array to prepend to the output.
38955 * @private
38956 */
38957 _shiftRight: function (a, shift, carry, out) {
38958 var i, last2=0, shift2;
38959 if (out === undefined) { out = []; }
38960
38961 for (; shift >= 32; shift -= 32) {
38962 out.push(carry);
38963 carry = 0;
38964 }
38965 if (shift === 0) {
38966 return out.concat(a);
38967 }
38968
38969 for (i=0; i<a.length; i++) {
38970 out.push(carry | a[i]>>>shift);
38971 carry = a[i] << (32-shift);
38972 }
38973 last2 = a.length ? a[a.length-1] : 0;
38974 shift2 = sjcl.bitArray.getPartial(last2);
38975 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
38976 return out;
38977 },
38978
38979 /** xor a block of 4 words together.
38980 * @private
38981 */
38982 _xor4: function(x,y) {
38983 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
38984 },
38985
38986 /** byteswap a word array inplace.
38987 * (does not handle partial words)
38988 * @param {sjcl.bitArray} a word array
38989 * @return {sjcl.bitArray} byteswapped array
38990 */
38991 byteswapM: function(a) {
38992 var i, v, m = 0xff00;
38993 for (i = 0; i < a.length; ++i) {
38994 v = a[i];
38995 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
38996 }
38997 return a;
38998 }
38999 };
39000
39001
39002 //// codecString.js
39003
39004 /** @fileOverview Bit array codec implementations.
39005 *
39006 * @author Emily Stark
39007 * @author Mike Hamburg
39008 * @author Dan Boneh
39009 */
39010
39011 /** @namespace UTF-8 strings */
39012 sjcl.codec.utf8String = {
39013 /** Convert from a bitArray to a UTF-8 string. */
39014 fromBits: function (arr) {
39015 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39016 for (i=0; i<bl/8; i++) {
39017 if ((i&3) === 0) {
39018 tmp = arr[i/4];
39019 }
39020 out += String.fromCharCode(tmp >>> 24);
39021 tmp <<= 8;
39022 }
39023 return decodeURIComponent(escape(out));
39024 },
39025
39026 /** Convert from a UTF-8 string to a bitArray. */
39027 toBits: function (str) {
39028 str = unescape(encodeURIComponent(str));
39029 var out = [], i, tmp=0;
39030 for (i=0; i<str.length; i++) {
39031 tmp = tmp << 8 | str.charCodeAt(i);
39032 if ((i&3) === 3) {
39033 out.push(tmp);
39034 tmp = 0;
39035 }
39036 }
39037 if (i&3) {
39038 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
39039 }
39040 return out;
39041 }
39042 };
39043
39044
39045 //// codecHex.js
39046
39047 /** @fileOverview Bit array codec implementations.
39048 *
39049 * @author Emily Stark
39050 * @author Mike Hamburg
39051 * @author Dan Boneh
39052 */
39053
39054 /** @namespace Hexadecimal */
39055 sjcl.codec.hex = {
39056 /** Convert from a bitArray to a hex string. */
39057 fromBits: function (arr) {
39058 var out = "", i;
39059 for (i=0; i<arr.length; i++) {
39060 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
39061 }
39062 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39063 },
39064 /** Convert from a hex string to a bitArray. */
39065 toBits: function (str) {
39066 var i, out=[], len;
39067 str = str.replace(/\s|0x/g, "");
39068 len = str.length;
39069 str = str + "00000000";
39070 for (i=0; i<str.length; i+=8) {
39071 out.push(parseInt(str.substr(i,8),16)^0);
39072 }
39073 return sjcl.bitArray.clamp(out, len*4);
39074 }
39075 };
39076
39077
39078 //// sha512.js
39079
39080 /** @fileOverview Javascript SHA-512 implementation.
39081 *
39082 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39083 * SJCL by Stefan Thomas.
39084 *
39085 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
39086 * Released with New BSD License
39087 *
39088 * @author Emily Stark
39089 * @author Mike Hamburg
39090 * @author Dan Boneh
39091 * @author Jeff Mott
39092 * @author Stefan Thomas
39093 */
39094
39095 /**
39096 * Context for a SHA-512 operation in progress.
39097 * @constructor
39098 * @class Secure Hash Algorithm, 512 bits.
39099 */
39100 sjcl.hash.sha512 = function (hash) {
39101 if (!this._key[0]) { this._precompute(); }
39102 if (hash) {
39103 this._h = hash._h.slice(0);
39104 this._buffer = hash._buffer.slice(0);
39105 this._length = hash._length;
39106 } else {
39107 this.reset();
39108 }
39109 };
39110
39111 /**
39112 * Hash a string or an array of words.
39113 * @static
39114 * @param {bitArray|String} data the data to hash.
39115 * @return {bitArray} The hash value, an array of 16 big-endian words.
39116 */
39117 sjcl.hash.sha512.hash = function (data) {
39118 return (new sjcl.hash.sha512()).update(data).finalize();
39119 };
39120
39121 sjcl.hash.sha512.prototype = {
39122 /**
39123 * The hash's block size, in bits.
39124 * @constant
39125 */
39126 blockSize: 1024,
39127
39128 /**
39129 * Reset the hash state.
39130 * @return this
39131 */
39132 reset:function () {
39133 this._h = this._init.slice(0);
39134 this._buffer = [];
39135 this._length = 0;
39136 return this;
39137 },
39138
39139 /**
39140 * Input several words to the hash.
39141 * @param {bitArray|String} data the data to hash.
39142 * @return this
39143 */
39144 update: function (data) {
39145 if (typeof data === "string") {
39146 data = sjcl.codec.utf8String.toBits(data);
39147 }
39148 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39149 ol = this._length,
39150 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39151 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39152 this._block(b.splice(0,32));
39153 }
39154 return this;
39155 },
39156
39157 /**
39158 * Complete hashing and output the hash value.
39159 * @return {bitArray} The hash value, an array of 16 big-endian words.
39160 */
39161 finalize:function () {
39162 var i, b = this._buffer, h = this._h;
39163
39164 // Round out and push the buffer
39165 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39166
39167 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39168 for (i = b.length + 4; i & 31; i++) {
39169 b.push(0);
39170 }
39171
39172 // append the length
39173 b.push(0);
39174 b.push(0);
39175 b.push(Math.floor(this._length / 0x100000000));
39176 b.push(this._length | 0);
39177
39178 while (b.length) {
39179 this._block(b.splice(0,32));
39180 }
39181
39182 this.reset();
39183 return h;
39184 },
39185
39186 /**
39187 * The SHA-512 initialization vector, to be precomputed.
39188 * @private
39189 */
39190 _init:[],
39191
39192 /**
39193 * Least significant 24 bits of SHA512 initialization values.
39194 *
39195 * Javascript only has 53 bits of precision, so we compute the 40 most
39196 * significant bits and add the remaining 24 bits as constants.
39197 *
39198 * @private
39199 */
39200 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39201
39202 /*
39203 _init:
39204 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39205 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39206 */
39207
39208 /**
39209 * The SHA-512 hash key, to be precomputed.
39210 * @private
39211 */
39212 _key:[],
39213
39214 /**
39215 * Least significant 24 bits of SHA512 key values.
39216 * @private
39217 */
39218 _keyr:
39219 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39220 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39221 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39222 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39223 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39224 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39225 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39226 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39227 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39228 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39229
39230 /*
39231 _key:
39232 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39233 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39234 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39235 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39236 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39237 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39238 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39239 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39240 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39241 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39242 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39243 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39244 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39245 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39246 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39247 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39248 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39249 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39250 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39251 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39252 */
39253
39254 /**
39255 * Function to precompute _init and _key.
39256 * @private
39257 */
39258 _precompute: function () {
39259 // XXX: This code is for precomputing the SHA256 constants, change for
39260 // SHA512 and re-enable.
39261 var i = 0, prime = 2, factor;
39262
39263 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39264 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39265
39266 outer: for (; i<80; prime++) {
39267 for (factor=2; factor*factor <= prime; factor++) {
39268 if (prime % factor === 0) {
39269 // not a prime
39270 continue outer;
39271 }
39272 }
39273
39274 if (i<8) {
39275 this._init[i*2] = frac(Math.pow(prime, 1/2));
39276 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39277 }
39278 this._key[i*2] = frac(Math.pow(prime, 1/3));
39279 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39280 i++;
39281 }
39282 },
39283
39284 /**
39285 * Perform one cycle of SHA-512.
39286 * @param {bitArray} words one block of words.
39287 * @private
39288 */
39289 _block:function (words) {
39290 var i, wrh, wrl,
39291 w = words.slice(0),
39292 h = this._h,
39293 k = this._key,
39294 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39295 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39296 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39297 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39298
39299 // Working variables
39300 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39301 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39302 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39303 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39304
39305 for (i=0; i<80; i++) {
39306 // load up the input word for this round
39307 if (i<16) {
39308 wrh = w[i * 2];
39309 wrl = w[i * 2 + 1];
39310 } else {
39311 // Gamma0
39312 var gamma0xh = w[(i-15) * 2];
39313 var gamma0xl = w[(i-15) * 2 + 1];
39314 var gamma0h =
39315 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39316 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39317 (gamma0xh >>> 7);
39318 var gamma0l =
39319 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39320 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39321 ((gamma0xh << 25) | (gamma0xl >>> 7));
39322
39323 // Gamma1
39324 var gamma1xh = w[(i-2) * 2];
39325 var gamma1xl = w[(i-2) * 2 + 1];
39326 var gamma1h =
39327 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39328 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39329 (gamma1xh >>> 6);
39330 var gamma1l =
39331 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39332 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39333 ((gamma1xh << 26) | (gamma1xl >>> 6));
39334
39335 // Shortcuts
39336 var wr7h = w[(i-7) * 2];
39337 var wr7l = w[(i-7) * 2 + 1];
39338
39339 var wr16h = w[(i-16) * 2];
39340 var wr16l = w[(i-16) * 2 + 1];
39341
39342 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39343 wrl = gamma0l + wr7l;
39344 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39345 wrl += gamma1l;
39346 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39347 wrl += wr16l;
39348 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39349 }
39350
39351 w[i*2] = wrh |= 0;
39352 w[i*2 + 1] = wrl |= 0;
39353
39354 // Ch
39355 var chh = (eh & fh) ^ (~eh & gh);
39356 var chl = (el & fl) ^ (~el & gl);
39357
39358 // Maj
39359 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39360 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39361
39362 // Sigma0
39363 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39364 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39365
39366 // Sigma1
39367 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39368 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39369
39370 // K(round)
39371 var krh = k[i*2];
39372 var krl = k[i*2+1];
39373
39374 // t1 = h + sigma1 + ch + K(round) + W(round)
39375 var t1l = hl + sigma1l;
39376 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39377 t1l += chl;
39378 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39379 t1l += krl;
39380 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39381 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39382 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39383
39384 // t2 = sigma0 + maj
39385 var t2l = sigma0l + majl;
39386 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39387
39388 // Update working variables
39389 hh = gh;
39390 hl = gl;
39391 gh = fh;
39392 gl = fl;
39393 fh = eh;
39394 fl = el;
39395 el = (dl + t1l) | 0;
39396 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39397 dh = ch;
39398 dl = cl;
39399 ch = bh;
39400 cl = bl;
39401 bh = ah;
39402 bl = al;
39403 al = (t1l + t2l) | 0;
39404 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39405 }
39406
39407 // Intermediate hash
39408 h0l = h[1] = (h0l + al) | 0;
39409 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39410 h1l = h[3] = (h1l + bl) | 0;
39411 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39412 h2l = h[5] = (h2l + cl) | 0;
39413 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39414 h3l = h[7] = (h3l + dl) | 0;
39415 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39416 h4l = h[9] = (h4l + el) | 0;
39417 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39418 h5l = h[11] = (h5l + fl) | 0;
39419 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39420 h6l = h[13] = (h6l + gl) | 0;
39421 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39422 h7l = h[15] = (h7l + hl) | 0;
39423 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39424 }
39425 };
39426
39427
39428 //// hmac.js
39429
39430 /** @fileOverview HMAC implementation.
39431 *
39432 * @author Emily Stark
39433 * @author Mike Hamburg
39434 * @author Dan Boneh
39435 */
39436
39437 /** HMAC with the specified hash function.
39438 * @constructor
39439 * @param {bitArray} key the key for HMAC.
39440 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39441 */
39442 sjcl.misc.hmac = function (key, Hash) {
39443 this._hash = Hash = Hash || sjcl.hash.sha256;
39444 var exKey = [[],[]], i,
39445 bs = Hash.prototype.blockSize / 32;
39446 this._baseHash = [new Hash(), new Hash()];
39447
39448 if (key.length > bs) {
39449 key = Hash.hash(key);
39450 }
39451
39452 for (i=0; i<bs; i++) {
39453 exKey[0][i] = key[i]^0x36363636;
39454 exKey[1][i] = key[i]^0x5C5C5C5C;
39455 }
39456
39457 this._baseHash[0].update(exKey[0]);
39458 this._baseHash[1].update(exKey[1]);
39459 this._resultHash = new Hash(this._baseHash[0]);
39460 };
39461
39462 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
39463 * @param {bitArray|String} data The data to mac.
39464 */
39465 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39466 if (!this._updated) {
39467 this.update(data);
39468 return this.digest(data);
39469 } else {
39470 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39471 }
39472 };
39473
39474 sjcl.misc.hmac.prototype.reset = function () {
39475 this._resultHash = new this._hash(this._baseHash[0]);
39476 this._updated = false;
39477 };
39478
39479 sjcl.misc.hmac.prototype.update = function (data) {
39480 this._updated = true;
39481 this._resultHash.update(data);
39482 };
39483
39484 sjcl.misc.hmac.prototype.digest = function () {
39485 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39486
39487 this.reset();
39488
39489 return result;
39490 };
39491
39492
39493 //// pbkdf2.js
39494
39495
39496 /** @fileOverview Password-based key-derivation function, version 2.0.
39497 *
39498 * @author Emily Stark
39499 * @author Mike Hamburg
39500 * @author Dan Boneh
39501 */
39502
39503 /** Password-Based Key-Derivation Function, version 2.0.
39504 *
39505 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39506 *
39507 * This is the method specified by RSA's PKCS #5 standard.
39508 *
39509 * @param {bitArray|String} password The password.
39510 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39511 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39512 * @param {Number} [length] The length of the derived key. Defaults to the
39513 output size of the hash function.
39514 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39515 * @return {bitArray} the derived key.
39516 */
39517 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39518 count = count || 1000;
39519
39520 if (length < 0 || count < 0) {
39521 throw sjcl.exception.invalid("invalid params to pbkdf2");
39522 }
39523
39524 if (typeof password === "string") {
39525 password = sjcl.codec.utf8String.toBits(password);
39526 }
39527
39528 if (typeof salt === "string") {
39529 salt = sjcl.codec.utf8String.toBits(salt);
39530 }
39531
39532 Prff = Prff || sjcl.misc.hmac;
39533
39534 var prf = new Prff(password),
39535 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39536
39537 for (k = 1; 32 * out.length < (length || 1); k++) {
39538 u = ui = prf.encrypt(b.concat(salt,[k]));
39539
39540 for (i=1; i<count; i++) {
39541 ui = prf.encrypt(ui);
39542 for (j=0; j<ui.length; j++) {
39543 u[j] ^= ui[j];
39544 }
39545 }
39546
39547 out = out.concat(u);
39548 }
39549
39550 if (length) { out = b.clamp(out, length); }
39551
39552 return out;
39553 };
39554
39555
39556 //// sha256.js
39557
39558 /** @fileOverview Javascript SHA-256 implementation.
39559 *
39560 * An older version of this implementation is available in the public
39561 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39562 * Stanford University 2008-2010 and BSD-licensed for liability
39563 * reasons.
39564 *
39565 * Special thanks to Aldo Cortesi for pointing out several bugs in
39566 * this code.
39567 *
39568 * @author Emily Stark
39569 * @author Mike Hamburg
39570 * @author Dan Boneh
39571 */
39572
39573 /**
39574 * Context for a SHA-256 operation in progress.
39575 * @constructor
39576 * @class Secure Hash Algorithm, 256 bits.
39577 */
39578 sjcl.hash.sha256 = function (hash) {
39579 if (!this._key[0]) { this._precompute(); }
39580 if (hash) {
39581 this._h = hash._h.slice(0);
39582 this._buffer = hash._buffer.slice(0);
39583 this._length = hash._length;
39584 } else {
39585 this.reset();
39586 }
39587 };
39588
39589 /**
39590 * Hash a string or an array of words.
39591 * @static
39592 * @param {bitArray|String} data the data to hash.
39593 * @return {bitArray} The hash value, an array of 16 big-endian words.
39594 */
39595 sjcl.hash.sha256.hash = function (data) {
39596 return (new sjcl.hash.sha256()).update(data).finalize();
39597 };
39598
39599 sjcl.hash.sha256.prototype = {
39600 /**
39601 * The hash's block size, in bits.
39602 * @constant
39603 */
39604 blockSize: 512,
39605
39606 /**
39607 * Reset the hash state.
39608 * @return this
39609 */
39610 reset:function () {
39611 this._h = this._init.slice(0);
39612 this._buffer = [];
39613 this._length = 0;
39614 return this;
39615 },
39616
39617 /**
39618 * Input several words to the hash.
39619 * @param {bitArray|String} data the data to hash.
39620 * @return this
39621 */
39622 update: function (data) {
39623 if (typeof data === "string") {
39624 data = sjcl.codec.utf8String.toBits(data);
39625 }
39626 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39627 ol = this._length,
39628 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39629 for (i = 512+ol & -512; i <= nl; i+= 512) {
39630 this._block(b.splice(0,16));
39631 }
39632 return this;
39633 },
39634
39635 /**
39636 * Complete hashing and output the hash value.
39637 * @return {bitArray} The hash value, an array of 8 big-endian words.
39638 */
39639 finalize:function () {
39640 var i, b = this._buffer, h = this._h;
39641
39642 // Round out and push the buffer
39643 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39644
39645 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39646 for (i = b.length + 2; i & 15; i++) {
39647 b.push(0);
39648 }
39649
39650 // append the length
39651 b.push(Math.floor(this._length / 0x100000000));
39652 b.push(this._length | 0);
39653
39654 while (b.length) {
39655 this._block(b.splice(0,16));
39656 }
39657
39658 this.reset();
39659 return h;
39660 },
39661
39662 /**
39663 * The SHA-256 initialization vector, to be precomputed.
39664 * @private
39665 */
39666 _init:[],
39667 /*
39668 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39669 */
39670
39671 /**
39672 * The SHA-256 hash key, to be precomputed.
39673 * @private
39674 */
39675 _key:[],
39676 /*
39677 _key:
39678 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39679 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39680 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39681 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39682 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39683 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39684 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39685 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39686 */
39687
39688
39689 /**
39690 * Function to precompute _init and _key.
39691 * @private
39692 */
39693 _precompute: function () {
39694 var i = 0, prime = 2, factor;
39695
39696 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39697
39698 outer: for (; i<64; prime++) {
39699 for (factor=2; factor*factor <= prime; factor++) {
39700 if (prime % factor === 0) {
39701 // not a prime
39702 continue outer;
39703 }
39704 }
39705
39706 if (i<8) {
39707 this._init[i] = frac(Math.pow(prime, 1/2));
39708 }
39709 this._key[i] = frac(Math.pow(prime, 1/3));
39710 i++;
39711 }
39712 },
39713
39714 /**
39715 * Perform one cycle of SHA-256.
39716 * @param {bitArray} words one block of words.
39717 * @private
39718 */
39719 _block:function (words) {
39720 var i, tmp, a, b,
39721 w = words.slice(0),
39722 h = this._h,
39723 k = this._key,
39724 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39725 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39726
39727 /* Rationale for placement of |0 :
39728 * If a value can overflow is original 32 bits by a factor of more than a few
39729 * million (2^23 ish), there is a possibility that it might overflow the
39730 * 53-bit mantissa and lose precision.
39731 *
39732 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39733 * propagates around the loop, and on the hash state h[]. I don't believe
39734 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39735 * (for h4 anyway), and better safe than sorry.
39736 *
39737 * The clamps on h[] are necessary for the output to be correct even in the
39738 * common case and for short inputs.
39739 */
39740 for (i=0; i<64; i++) {
39741 // load up the input word for this round
39742 if (i<16) {
39743 tmp = w[i];
39744 } else {
39745 a = w[(i+1 ) & 15];
39746 b = w[(i+14) & 15];
39747 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39748 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39749 w[i&15] + w[(i+9) & 15]) | 0;
39750 }
39751
39752 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39753
39754 // shift register
39755 h7 = h6; h6 = h5; h5 = h4;
39756 h4 = h3 + tmp | 0;
39757 h3 = h2; h2 = h1; h1 = h0;
39758
39759 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39760 }
39761
39762 h[0] = h[0]+h0 | 0;
39763 h[1] = h[1]+h1 | 0;
39764 h[2] = h[2]+h2 | 0;
39765 h[3] = h[3]+h3 | 0;
39766 h[4] = h[4]+h4 | 0;
39767 h[5] = h[5]+h5 | 0;
39768 h[6] = h[6]+h6 | 0;
39769 h[7] = h[7]+h7 | 0;
39770 }
39771 };
39772 </script>
39773 <script>// An extremely basic translation library
39774 //
39775 // Example usage:
39776 //
39777 // Set some html to be translated. Do this using the 'data-translate' attribute:
39778 //
39779 // <div data-translate>Test</div>
39780 // <div data-translate-html><em>keep em tag</em></div>
39781 // <input data-translate-placeholder placeholder="Example placeholder">
39782 // <span data-translate-title title="Example title"></span>
39783 //
39784 // Obtain all the phrases to be translated via js debug console:
39785 //
39786 // Translate.phrasesAsJson();
39787 //
39788 // Use that template to translate the phrases into another language.
39789 // Leave the key the same. Change the value to the new language.
39790 //
39791 // Create a js file to load the new phrases. In this example for Spanish,
39792 // es.js will contain the following code:
39793 //
39794 // Translate.loadForeignPhrases("es", {
39795 // "Test": "Test in Spanish",
39796 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
39797 // "Example placeholder": "Example placeholder in Spanish"
39798 // "Example title": "Example title in Spanish"
39799 // });
39800 //
39801 // In your UI put a listener for clicking on the Spanish button:
39802 //
39803 // mySpanishButton.addEventListener("click", function() {
39804 // Translate.setLanguage("es");
39805 // });
39806 // myEnglishButton.addEventListener("click", function() {
39807 // Translate.setLanguage("en");
39808 // });
39809
39810 Translate = new (function() {
39811
39812 var defaultLanguage = "en";
39813
39814 var allPhrases = {};
39815 allPhrases[defaultLanguage] = {};
39816
39817 // Node types
39818
39819 var text = {
39820 selector: "[data-translate]",
39821 getKey: function() {
39822 return this.textContent.trim().replace(/\s+/g, " ");
39823 },
39824 setPhrase: function(p) {
39825 this.textContent = p;
39826 },
39827 }
39828
39829 var html = {
39830 selector: "[data-translate-html]",
39831 getKey: function() {
39832 return this.innerHTML.trim().replace(/\s+/g, " ");
39833 },
39834 setPhrase: function(p) {
39835 this.innerHTML = p;
39836 },
39837 }
39838
39839 var placeholder = {
39840 selector: "[data-translate-placeholder]",
39841 getKey: function() {
39842 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39843 },
39844 setPhrase: function(p) {
39845 this.setAttribute("placeholder", p);
39846 },
39847 }
39848
39849 var title = {
39850 selector: "[data-translate-title]",
39851 getKey: function() {
39852 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39853 },
39854 setPhrase: function(p) {
39855 this.setAttribute("title", p);
39856 },
39857 }
39858
39859 // Get elements to be translated
39860 var allEls = getEls(text)
39861 .concat(getEls(html))
39862 .concat(getEls(placeholder))
39863 .concat(getEls(title));
39864
39865 // Provides access to phrases from a non-default language.
39866 // See phrases_en.js for example usage.
39867 this.loadForeignPhrases = function(language, phrases) {
39868 allPhrases[language] = phrases;
39869 }
39870
39871 // Displays a different language, eg "en" or "fr"
39872 this.setLanguage = function(language) {
39873 for (var i=0; i<allEls.length; i++) {
39874 var el = allEls[i];
39875 var key = el.key;
39876 if (!(language in allPhrases)) {
39877 console.log(language + " not in allPhrases");
39878 return;
39879 }
39880 if (!(key in allPhrases[language])) {
39881 console.log(language + " does not contain phrase: " + key);
39882 return;
39883 }
39884 var phrase = allPhrases[language][key];
39885 el.setPhrase(phrase);
39886 }
39887 }
39888
39889 // Converts the phrases to a key-pair json file.
39890 // This is a good way to export phrases for use in translation tools.
39891 this.phrasesAsJson = function(language) {
39892 var keys = [];
39893 for (var i=0; i<allEls.length; i++) {
39894 var el = allEls[i];
39895 var key = el.key;
39896 keys.push(key);
39897 }
39898 keys.sort();
39899 var output = {};
39900 for (var i=0; i<keys.length; i++) {
39901 var key = keys[i];
39902 var translated = "";
39903 if (language in allPhrases && key in allPhrases[language]) {
39904 translated = allPhrases[language][key];
39905 }
39906 output[key] = translated;
39907 }
39908 return JSON.stringify(output, null, 2);
39909 }
39910
39911 function getEls(nodeType) {
39912 var nodes = document.querySelectorAll(nodeType.selector);
39913 var els = [];
39914 for (var i=0; i<nodes.length; i++) {
39915 var node = nodes[i];
39916 node.getKey = nodeType.getKey;
39917 node.setPhrase = nodeType.setPhrase;
39918 node.key = node.getKey();
39919 allPhrases[defaultLanguage][node.key] = node.key;
39920 els.push(node);
39921 }
39922 return els;
39923 }
39924
39925 })();
39926 </script>
39927 <script>Translate.loadForeignPhrases("en",
39928 {
39929 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39930 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39931 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39932 "<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).",
39933 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39934 "Account": "Account",
39935 "Address": "Address",
39936 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39937 "BIP32 Derivation Path": "BIP32 Derivation Path",
39938 "BIP32 Extended Key": "BIP32 Extended Key",
39939 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39940 "BIP32 Root Key": "BIP32 Root Key",
39941 "BIP39 Mnemonic": "BIP39 Mnemonic",
39942 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39943 "BIP39 Seed": "BIP39 Seed",
39944 "Base 10": "Base 10",
39945 "Base 6": "Base 6",
39946 "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.",
39947 "Binary": "Binary",
39948 "Bitcoin Core": "Bitcoin Core",
39949 "Bits Per Event": "Bits Per Event",
39950 "Block Explorers": "Block Explorers",
39951 "Can be used with": "Can be used with",
39952 "Card": "Card",
39953 "Coin": "Coin",
39954 "Dice": "Dice",
39955 "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.",
39956 "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.",
39957 "Entropy": "Entropy",
39958 "Entropy Type": "Entropy Type",
39959 "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.",
39960 "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>.",
39961 "Event Count": "Event Count",
39962 "External / Internal": "External / Internal",
39963 "Filtered Entropy": "Filtered Entropy",
39964 "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>",
39965 "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>.",
39966 "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>.",
39967 "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>",
39968 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
39969 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
39970 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
39971 "Get the source code from the repository": "Get the source code from the repository",
39972 "Hex": "Hex",
39973 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
39974 "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.",
39975 "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.",
39976 "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.",
39977 "Libraries": "Libraries",
39978 "Mnemonic Language": "Mnemonic Language",
39979 "Mnemonic Length": "Mnemonic Length",
39980 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
39981 "More info": "More info",
39982 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
39983 "Mycelium Wallet": "Mycelium Wallet",
39984 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
39985 "Offline Usage": "Offline Usage",
39986 "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.",
39987 "Path": "Path",
39988 "Private Key": "Private Key",
39989 "Private Keys": "Private Keys",
39990 "Public Key": "Public Key",
39991 "Purpose": "Purpose",
39992 "Raw Binary": "Raw Binary",
39993 "Read more": "Read more",
39994 "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>",
39995 "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>",
39996 "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>",
39997 "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>",
39998 "Show": "Show",
39999 "Show more rows": "Show more rows",
40000 "Strength": "Strength",
40001 "Supply my own source of entropy": "Supply my own source of entropy",
40002 "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.",
40003 "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>.",
40004 "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.",
40005 "This project is 100% open-source code": "This project is 100% open-source code",
40006 "Toggle": "Toggle",
40007 "Total Bits": "Total Bits",
40008 "Use hardened addresses": "Use hardened addresses",
40009 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40010 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40011 "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>.",
40012 "Valid entropy values include:": "Valid entropy values include:",
40013 "Warning": "Warning",
40014 "Word Count": "Word Count",
40015 "You are not a good source of entropy.": "You are not a good source of entropy.",
40016 "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).",
40017 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40018 "words": "words"
40019 }
40020 );
40021 </script>
40022 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40023 WORDLISTS["english"] = [
40024 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40025 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40026 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40027 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40028 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40029 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40030 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40031 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40032 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40033 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40034 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40035 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40036 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40037 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40038 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40039 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40040 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40041 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40042 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40043 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40044 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40045 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40046 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40047 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40048 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40049 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40050 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40051 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40052 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40053 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40054 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40055 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40056 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40057 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40058 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40059 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40060 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40061 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40062 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40063 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40064 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40065 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40066 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40067 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40068 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40069 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40070 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40071 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40072 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40073 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40074 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40075 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40076 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40077 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40078 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40079 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40080 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40081 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40082 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40083 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40084 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40085 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40086 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40087 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40088 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40089 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40090 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40091 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40092 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40093 "film","filter","final","find","fine","finger","finish","fire","firm","first",
40094 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40095 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40096 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40097 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40098 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40099 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40100 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40101 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40102 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40103 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40104 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40105 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40106 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40107 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40108 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40109 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40110 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40111 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40112 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40113 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40114 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40115 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40116 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40117 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40118 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40119 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40120 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40121 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40122 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40123 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40124 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40125 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40126 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40127 "liar","liberty","library","license","life","lift","light","like","limb","limit",
40128 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40129 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40130 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40131 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40132 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40133 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40134 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40135 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40136 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40137 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40138 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40139 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40140 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40141 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40142 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40143 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
40144 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40145 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40146 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40147 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
40148 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40149 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40150 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40151 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40152 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40153 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40154 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40155 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40156 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40157 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40158 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
40159 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40160 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40161 "prize","problem","process","produce","profit","program","project","promote","proof","property",
40162 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40163 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40164 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40165 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40166 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40167 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40168 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40169 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40170 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40171 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40172 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40173 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40174 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40175 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40176 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40177 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40178 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40179 "scrub","sea","search","season","seat","second","secret","section","security","seed",
40180 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40181 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40182 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40183 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40184 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40185 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40186 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40187 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40188 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40189 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40190 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40191 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40192 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40193 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40194 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40195 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40196 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40197 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40198 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40199 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40200 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40201 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40202 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40203 "thank","that","theme","then","theory","there","they","thing","this","thought",
40204 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40205 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40206 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40207 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40208 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40209 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40210 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40211 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40212 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40213 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40214 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40215 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40216 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40217 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40218 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40219 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40220 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40221 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40222 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40223 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40224 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40225 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40226 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40227 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40228 "yellow","you","young","youth","zebra","zero","zone","zoo"]
40229 </script>
40230 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40231 WORDLISTS["japanese"] = [
40232 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
40233 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
40234 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
40235 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
40236 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
40237 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
40238 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
40239 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
40240 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
40241 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
40242 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
40243 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
40244 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
40245 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
40246 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
40247 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
40248 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
40249 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
40250 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
40251 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
40252 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
40253 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
40254 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
40255 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
40256 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
40257 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
40258 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
40259 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
40260 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
40261 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
40262 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
40263 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
40264 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
40265 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
40266 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
40267 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
40268 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
40269 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
40270 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
40271 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
40272 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
40273 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
40274 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
40275 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
40276 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
40277 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
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 </script>
40438 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40439 WORDLISTS["spanish"] = [
40440 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40441 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40442 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40443 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40444 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40445 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40446 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40447 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40448 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40449 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40450 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40451 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40452 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40453 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40454 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40455 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40456 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40457 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40458 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40459 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40460 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40461 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40462 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40463 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40464 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40465 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40466 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40467 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40468 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40469 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40470 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40471 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40472 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40473 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40474 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40475 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40476 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40477 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40478 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40479 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40480 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40481 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40482 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40483 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40484 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40485 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40486 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40487 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40488 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40489 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40490 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40491 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40492 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40493 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40494 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40495 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40496 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40497 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40498 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40499 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40500 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40501 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40502 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40503 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40504 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40505 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40506 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40507 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40508 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40509 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40510 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40511 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40512 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40513 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40514 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40515 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40516 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40517 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40518 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40519 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40520 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40521 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40522 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40523 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40524 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40525 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40526 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40527 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40528 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40529 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40530 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40531 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40532 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40533 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40534 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40535 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40536 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40537 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40538 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40539 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40540 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40541 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40542 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40543 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40544 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40545 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40546 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40547 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40548 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40549 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40550 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40551 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40552 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40553 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40554 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40555 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40556 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40557 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40558 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40559 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40560 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40561 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40562 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40563 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40564 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40565 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40566 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40567 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40568 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40569 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40570 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40571 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40572 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40573 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40574 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40575 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40576 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40577 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40578 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40579 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40580 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40581 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40582 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40583 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40584 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40585 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40586 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40587 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40588 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40589 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40590 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40591 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40592 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40593 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40594 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40595 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40596 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40597 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40598 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40599 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40600 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40601 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40602 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40603 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40604 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40605 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40606 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40607 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40608 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40609 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40610 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40611 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40612 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40613 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40614 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40615 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40616 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40617 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40618 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40619 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40620 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40621 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40622 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40623 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40624 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40625 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40626 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40627 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40628 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40629 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40630 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40631 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40632 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40633 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40634 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40635 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40636 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40637 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40638 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40639 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40640 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40641 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40642 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40643 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40644 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40645 </script>
40646 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40647 WORDLISTS["chinese_simplified"] = [
40648 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
40649 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
40650 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
40651 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
40652 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
40653 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
40654 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
40655 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
40656 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
40657 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
40658 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
40659 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40660 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
40661 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
40662 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
40663 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
40664 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
40665 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
40666 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
40667 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
40668 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
40669 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
40670 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
40671 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
40672 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
40673 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
40674 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
40675 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
40676 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
40677 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
40678 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
40679 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
40680 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
40681 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
40682 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
40683 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
40684 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
40685 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
40686 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
40687 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
40688 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
40689 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
40690 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
40691 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
40692 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
40693 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
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 </script>
40854 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40855 WORDLISTS["chinese_traditional"] = [
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 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
40900 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
40901 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
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 </script>
41062 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41063 WORDLISTS["french"] = [
41064 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41065 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41066 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41067 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41068 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41069 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41070 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41071 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41072 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41073 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41074 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41075 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41076 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41077 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41078 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41079 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41080 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41081 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41082 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41083 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41084 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41085 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41086 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41087 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41088 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41089 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41090 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41091 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41092 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41093 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41094 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41095 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41096 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41097 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41098 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41099 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41100 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41101 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41102 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41103 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41104 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41105 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41106 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41107 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41108 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41109 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41110 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41111 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41112 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41113 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41114 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41115 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41116 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41117 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41118 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41119 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41120 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41121 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41122 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41123 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41124 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41125 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41126 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41127 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41128 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41129 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41130 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41131 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41132 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41133 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41134 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41135 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41136 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41137 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41138 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41139 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41140 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41141 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41142 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41143 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41144 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41145 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41146 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41147 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41148 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41149 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41150 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41151 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41152 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41153 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41154 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41155 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41156 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41157 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41158 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41159 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41160 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41161 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41162 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41163 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41164 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41165 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41166 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41167 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41168 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41169 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41170 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41171 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41172 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41173 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41174 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41175 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41176 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41177 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41178 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41179 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41180 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41181 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41182 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41183 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41184 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41185 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41186 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41187 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41188 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41189 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41190 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41191 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41192 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41193 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41194 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41195 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41196 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41197 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41198 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41199 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41200 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41201 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41202 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41203 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41204 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41205 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41206 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41207 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41208 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41209 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41210 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41211 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41212 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41213 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41214 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41215 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41216 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41217 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41218 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41219 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41220 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41221 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41222 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41223 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41224 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41225 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41226 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41227 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41228 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41229 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41230 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41231 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41232 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41233 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41234 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41235 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41236 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41237 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41238 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41239 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41240 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41241 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41242 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41243 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41244 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41245 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41246 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41247 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41248 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41249 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41250 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41251 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41252 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41253 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41254 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41255 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41256 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41257 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41258 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41259 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41260 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41261 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41262 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41263 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41264 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41265 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41266 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41267 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41268 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41269 </script>
41270 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41271 WORDLISTS["italian"] = [
41272 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41273 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41274 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41275 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41276 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41277 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41278 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41279 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41280 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41281 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41282 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41283 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41284 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41285 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41286 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41287 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41288 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41289 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41290 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41291 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41292 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41293 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41294 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41295 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41296 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41297 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41298 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41299 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41300 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41301 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41302 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41303 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41304 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41305 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41306 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41307 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41308 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41309 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41310 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41311 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41312 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41313 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41314 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41315 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41316 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41317 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41318 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41319 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41320 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41321 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41322 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41323 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41324 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41325 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41326 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41327 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41328 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41329 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41330 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41331 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41332 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41333 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41334 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41335 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41336 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41337 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41338 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41339 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41340 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41341 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41342 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41343 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41344 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41345 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41346 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41347 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41348 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41349 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41350 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41351 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41352 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41353 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41354 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41355 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41356 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41357 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41358 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41359 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41360 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41361 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41362 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41363 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41364 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41365 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41366 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41367 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41368 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41369 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41370 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41371 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41372 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41373 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41374 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41375 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41376 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41377 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41378 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41379 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41380 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41381 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41382 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41383 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41384 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41385 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41386 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41387 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41388 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41389 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41390 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41391 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41392 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41393 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41394 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41395 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41396 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41397 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41398 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41399 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41400 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41401 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41402 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41403 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41404 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41405 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41406 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41407 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41408 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41409 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41410 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41411 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41412 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41413 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41414 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41415 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41416 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41417 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41418 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41419 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41420 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41421 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41422 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41423 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41424 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41425 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41426 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41427 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41428 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41429 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41430 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41431 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41432 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41433 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41434 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41435 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41436 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41437 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41438 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41439 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41440 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41441 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41442 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41443 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41444 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41445 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41446 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41447 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41448 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41449 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41450 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41451 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41452 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41453 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41454 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41455 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41456 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41457 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41458 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41459 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41460 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41461 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41462 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41463 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41464 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41465 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41466 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41467 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41468 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41469 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41470 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41471 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41472 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41473 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41474 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41475 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41476 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
41477 </script>
41478 <script>/*
41479 * Copyright (c) 2013 Pavol Rusnak
41480 *
41481 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41482 * this software and associated documentation files (the "Software"), to deal in
41483 * the Software without restriction, including without limitation the rights to
41484 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41485 * of the Software, and to permit persons to whom the Software is furnished to do
41486 * so, subject to the following conditions:
41487 *
41488 * The above copyright notice and this permission notice shall be included in all
41489 * copies or substantial portions of the Software.
41490 *
41491 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41492 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41493 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41494 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41495 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41496 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41497 */
41498
41499 /*
41500 * Javascript port from python by Ian Coleman
41501 *
41502 * Requires code from sjcl
41503 * https://github.com/bitwiseshiftleft/sjcl
41504 */
41505
41506 var Mnemonic = function(language) {
41507
41508 var PBKDF2_ROUNDS = 2048;
41509 var RADIX = 2048;
41510
41511 var self = this;
41512 var wordlist = [];
41513
41514 var hmacSHA512 = function(key) {
41515 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41516 this.encrypt = function() {
41517 return hasher.encrypt.apply(hasher, arguments);
41518 };
41519 };
41520
41521 function init() {
41522 wordlist = WORDLISTS[language];
41523 if (wordlist.length != RADIX) {
41524 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41525 throw err;
41526 }
41527 }
41528
41529 self.generate = function(strength) {
41530 strength = strength || 128;
41531 var r = strength % 32;
41532 if (r > 0) {
41533 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41534 }
41535 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41536 if (!hasStrongCrypto) {
41537 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41538 }
41539 var buffer = new Uint8Array(strength / 8);
41540 var data = crypto.getRandomValues(buffer);
41541 return self.toMnemonic(data);
41542 }
41543
41544 self.toMnemonic = function(byteArray) {
41545 if (byteArray.length % 4 > 0) {
41546 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
41547 }
41548
41549 //h = hashlib.sha256(data).hexdigest()
41550 var data = byteArrayToWordArray(byteArray);
41551 var hash = sjcl.hash.sha256.hash(data);
41552 var h = sjcl.codec.hex.fromBits(hash);
41553
41554 // b is a binary string, eg '00111010101100...'
41555 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41556 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41557 //
41558 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41559 // c = bin(int(h, 16))[2:].zfill(256)
41560 // d = c[:len(data) * 8 / 32]
41561 var a = byteArrayToBinaryString(byteArray);
41562 var c = zfill(hexStringToBinaryString(h), 256);
41563 var d = c.substring(0, byteArray.length * 8 / 32);
41564 // b = line1 + line2
41565 var b = a + d;
41566
41567 var result = [];
41568 var blen = b.length / 11;
41569 for (var i=0; i<blen; i++) {
41570 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41571 result.push(wordlist[idx]);
41572 }
41573 return self.joinWords(result);
41574 }
41575
41576 self.check = function(mnemonic) {
41577 var mnemonic = self.splitWords(mnemonic);
41578 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
41579 return false
41580 }
41581 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41582 var idx = [];
41583 for (var i=0; i<mnemonic.length; i++) {
41584 var word = mnemonic[i];
41585 var wordIndex = wordlist.indexOf(word);
41586 if (wordIndex == -1) {
41587 return false;
41588 }
41589 var binaryIndex = zfill(wordIndex.toString(2), 11);
41590 idx.push(binaryIndex);
41591 }
41592 var b = idx.join('');
41593 var l = b.length;
41594 //d = b[:l / 33 * 32]
41595 //h = b[-l / 33:]
41596 var d = b.substring(0, l / 33 * 32);
41597 var h = b.substring(l - l / 33, l);
41598 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
41599 var nd = binaryStringToWordArray(d);
41600 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
41601 var ndHash = sjcl.hash.sha256.hash(nd);
41602 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41603 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
41604 var nh = ndBstr.substring(0,l/33);
41605 return h == nh;
41606 }
41607
41608 self.toSeed = function(mnemonic, passphrase) {
41609 passphrase = passphrase || '';
41610 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41611 var mnemonicNormalized = self.normalizeString(mnemonic);
41612 passphrase = self.normalizeString(passphrase)
41613 passphrase = "mnemonic" + passphrase;
41614 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
41615 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41616 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41617 var hashHex = sjcl.codec.hex.fromBits(result);
41618 return hashHex;
41619 }
41620
41621 self.splitWords = function(mnemonic) {
41622 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41623 }
41624
41625 self.joinWords = function(words) {
41626 // Set space correctly depending on the language
41627 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41628 var space = " ";
41629 if (language == "japanese") {
41630 space = "\u3000"; // ideographic space
41631 }
41632 return words.join(space);
41633 }
41634
41635 self.normalizeString = function(str) {
41636 if (typeof str.normalize == "function") {
41637 return str.normalize("NFKD");
41638 }
41639 else {
41640 // TODO decide how to handle this in the future.
41641 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41642 return str;
41643 }
41644 }
41645
41646 function byteArrayToWordArray(data) {
41647 var a = [];
41648 for (var i=0; i<data.length/4; i++) {
41649 v = 0;
41650 v += data[i*4 + 0] << 8 * 3;
41651 v += data[i*4 + 1] << 8 * 2;
41652 v += data[i*4 + 2] << 8 * 1;
41653 v += data[i*4 + 3] << 8 * 0;
41654 a.push(v);
41655 }
41656 return a;
41657 }
41658
41659 function byteArrayToBinaryString(data) {
41660 var bin = "";
41661 for (var i=0; i<data.length; i++) {
41662 bin += zfill(data[i].toString(2), 8);
41663 }
41664 return bin;
41665 }
41666
41667 function hexStringToBinaryString(hexString) {
41668 binaryString = "";
41669 for (var i=0; i<hexString.length; i++) {
41670 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41671 }
41672 return binaryString;
41673 }
41674
41675 function binaryStringToWordArray(binary) {
41676 var aLen = binary.length / 32;
41677 var a = [];
41678 for (var i=0; i<aLen; i++) {
41679 var valueStr = binary.substring(0,32);
41680 var value = parseInt(valueStr, 2);
41681 a.push(value);
41682 binary = binary.slice(32);
41683 }
41684 return a;
41685 }
41686
41687 // Pad a numeric string on the left with zero digits until the given width
41688 // is reached.
41689 // Note this differs to the python implementation because it does not
41690 // handle numbers starting with a sign.
41691 function zfill(source, length) {
41692 source = source.toString();
41693 while (source.length < length) {
41694 source = '0' + source;
41695 }
41696 return source;
41697 }
41698
41699 init();
41700
41701 }
41702 </script>
41703 <script>/*
41704 JavaScript BigInteger library version 0.9.1
41705 http://silentmatt.com/biginteger/
41706
41707 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41708 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41709 Licensed under the MIT license.
41710
41711 Support for arbitrary internal representation base was added by
41712 Vitaly Magerya.
41713 */
41714
41715 /*
41716 File: biginteger.js
41717
41718 Exports:
41719
41720 <BigInteger>
41721 */
41722 (function(exports) {
41723 "use strict";
41724 /*
41725 Class: BigInteger
41726 An arbitrarily-large integer.
41727
41728 <BigInteger> objects should be considered immutable. None of the "built-in"
41729 methods modify *this* or their arguments. All properties should be
41730 considered private.
41731
41732 All the methods of <BigInteger> instances can be called "statically". The
41733 static versions are convenient if you don't already have a <BigInteger>
41734 object.
41735
41736 As an example, these calls are equivalent.
41737
41738 > BigInteger(4).multiply(5); // returns BigInteger(20);
41739 > BigInteger.multiply(4, 5); // returns BigInteger(20);
41740
41741 > var a = 42;
41742 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41743 */
41744
41745 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
41746
41747 /*
41748 Constructor: BigInteger()
41749 Convert a value to a <BigInteger>.
41750
41751 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41752 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41753 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41754 without a radix argument.
41755
41756 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41757 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41758 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41759 > var n3 = BigInteger(n2); // Return n2, unchanged
41760
41761 The constructor form only takes an array and a sign. *n* must be an
41762 array of numbers in little-endian order, where each digit is between 0
41763 and BigInteger.base. The second parameter sets the sign: -1 for
41764 negative, +1 for positive, or 0 for zero. The array is *not copied and
41765 may be modified*. If the array contains only zeros, the sign parameter
41766 is ignored and is forced to zero.
41767
41768 > new BigInteger([5], -1): create a new BigInteger with value -5
41769
41770 Parameters:
41771
41772 n - Value to convert to a <BigInteger>.
41773
41774 Returns:
41775
41776 A <BigInteger> value.
41777
41778 See Also:
41779
41780 <parse>, <BigInteger>
41781 */
41782 function BigInteger(n, s, token) {
41783 if (token !== CONSTRUCT) {
41784 if (n instanceof BigInteger) {
41785 return n;
41786 }
41787 else if (typeof n === "undefined") {
41788 return ZERO;
41789 }
41790 return BigInteger.parse(n);
41791 }
41792
41793 n = n || []; // Provide the nullary constructor for subclasses.
41794 while (n.length && !n[n.length - 1]) {
41795 --n.length;
41796 }
41797 this._d = n;
41798 this._s = n.length ? (s || 1) : 0;
41799 }
41800
41801 BigInteger._construct = function(n, s) {
41802 return new BigInteger(n, s, CONSTRUCT);
41803 };
41804
41805 // Base-10 speedup hacks in parse, toString, exp10 and log functions
41806 // require base to be a power of 10. 10^7 is the largest such power
41807 // that won't cause a precision loss when digits are multiplied.
41808 var BigInteger_base = 10000000;
41809 var BigInteger_base_log10 = 7;
41810
41811 BigInteger.base = BigInteger_base;
41812 BigInteger.base_log10 = BigInteger_base_log10;
41813
41814 var ZERO = new BigInteger([], 0, CONSTRUCT);
41815 // Constant: ZERO
41816 // <BigInteger> 0.
41817 BigInteger.ZERO = ZERO;
41818
41819 var ONE = new BigInteger([1], 1, CONSTRUCT);
41820 // Constant: ONE
41821 // <BigInteger> 1.
41822 BigInteger.ONE = ONE;
41823
41824 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41825 // Constant: M_ONE
41826 // <BigInteger> -1.
41827 BigInteger.M_ONE = M_ONE;
41828
41829 // Constant: _0
41830 // Shortcut for <ZERO>.
41831 BigInteger._0 = ZERO;
41832
41833 // Constant: _1
41834 // Shortcut for <ONE>.
41835 BigInteger._1 = ONE;
41836
41837 /*
41838 Constant: small
41839 Array of <BigIntegers> from 0 to 36.
41840
41841 These are used internally for parsing, but useful when you need a "small"
41842 <BigInteger>.
41843
41844 See Also:
41845
41846 <ZERO>, <ONE>, <_0>, <_1>
41847 */
41848 BigInteger.small = [
41849 ZERO,
41850 ONE,
41851 /* Assuming BigInteger_base > 36 */
41852 new BigInteger( [2], 1, CONSTRUCT),
41853 new BigInteger( [3], 1, CONSTRUCT),
41854 new BigInteger( [4], 1, CONSTRUCT),
41855 new BigInteger( [5], 1, CONSTRUCT),
41856 new BigInteger( [6], 1, CONSTRUCT),
41857 new BigInteger( [7], 1, CONSTRUCT),
41858 new BigInteger( [8], 1, CONSTRUCT),
41859 new BigInteger( [9], 1, CONSTRUCT),
41860 new BigInteger([10], 1, CONSTRUCT),
41861 new BigInteger([11], 1, CONSTRUCT),
41862 new BigInteger([12], 1, CONSTRUCT),
41863 new BigInteger([13], 1, CONSTRUCT),
41864 new BigInteger([14], 1, CONSTRUCT),
41865 new BigInteger([15], 1, CONSTRUCT),
41866 new BigInteger([16], 1, CONSTRUCT),
41867 new BigInteger([17], 1, CONSTRUCT),
41868 new BigInteger([18], 1, CONSTRUCT),
41869 new BigInteger([19], 1, CONSTRUCT),
41870 new BigInteger([20], 1, CONSTRUCT),
41871 new BigInteger([21], 1, CONSTRUCT),
41872 new BigInteger([22], 1, CONSTRUCT),
41873 new BigInteger([23], 1, CONSTRUCT),
41874 new BigInteger([24], 1, CONSTRUCT),
41875 new BigInteger([25], 1, CONSTRUCT),
41876 new BigInteger([26], 1, CONSTRUCT),
41877 new BigInteger([27], 1, CONSTRUCT),
41878 new BigInteger([28], 1, CONSTRUCT),
41879 new BigInteger([29], 1, CONSTRUCT),
41880 new BigInteger([30], 1, CONSTRUCT),
41881 new BigInteger([31], 1, CONSTRUCT),
41882 new BigInteger([32], 1, CONSTRUCT),
41883 new BigInteger([33], 1, CONSTRUCT),
41884 new BigInteger([34], 1, CONSTRUCT),
41885 new BigInteger([35], 1, CONSTRUCT),
41886 new BigInteger([36], 1, CONSTRUCT)
41887 ];
41888
41889 // Used for parsing/radix conversion
41890 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41891
41892 /*
41893 Method: toString
41894 Convert a <BigInteger> to a string.
41895
41896 When *base* is greater than 10, letters are upper case.
41897
41898 Parameters:
41899
41900 base - Optional base to represent the number in (default is base 10).
41901 Must be between 2 and 36 inclusive, or an Error will be thrown.
41902
41903 Returns:
41904
41905 The string representation of the <BigInteger>.
41906 */
41907 BigInteger.prototype.toString = function(base) {
41908 base = +base || 10;
41909 if (base < 2 || base > 36) {
41910 throw new Error("illegal radix " + base + ".");
41911 }
41912 if (this._s === 0) {
41913 return "0";
41914 }
41915 if (base === 10) {
41916 var str = this._s < 0 ? "-" : "";
41917 str += this._d[this._d.length - 1].toString();
41918 for (var i = this._d.length - 2; i >= 0; i--) {
41919 var group = this._d[i].toString();
41920 while (group.length < BigInteger_base_log10) group = '0' + group;
41921 str += group;
41922 }
41923 return str;
41924 }
41925 else {
41926 var numerals = BigInteger.digits;
41927 base = BigInteger.small[base];
41928 var sign = this._s;
41929
41930 var n = this.abs();
41931 var digits = [];
41932 var digit;
41933
41934 while (n._s !== 0) {
41935 var divmod = n.divRem(base);
41936 n = divmod[0];
41937 digit = divmod[1];
41938 // TODO: This could be changed to unshift instead of reversing at the end.
41939 // Benchmark both to compare speeds.
41940 digits.push(numerals[digit.valueOf()]);
41941 }
41942 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41943 }
41944 };
41945
41946 // Verify strings for parsing
41947 BigInteger.radixRegex = [
41948 /^$/,
41949 /^$/,
41950 /^[01]*$/,
41951 /^[012]*$/,
41952 /^[0-3]*$/,
41953 /^[0-4]*$/,
41954 /^[0-5]*$/,
41955 /^[0-6]*$/,
41956 /^[0-7]*$/,
41957 /^[0-8]*$/,
41958 /^[0-9]*$/,
41959 /^[0-9aA]*$/,
41960 /^[0-9abAB]*$/,
41961 /^[0-9abcABC]*$/,
41962 /^[0-9a-dA-D]*$/,
41963 /^[0-9a-eA-E]*$/,
41964 /^[0-9a-fA-F]*$/,
41965 /^[0-9a-gA-G]*$/,
41966 /^[0-9a-hA-H]*$/,
41967 /^[0-9a-iA-I]*$/,
41968 /^[0-9a-jA-J]*$/,
41969 /^[0-9a-kA-K]*$/,
41970 /^[0-9a-lA-L]*$/,
41971 /^[0-9a-mA-M]*$/,
41972 /^[0-9a-nA-N]*$/,
41973 /^[0-9a-oA-O]*$/,
41974 /^[0-9a-pA-P]*$/,
41975 /^[0-9a-qA-Q]*$/,
41976 /^[0-9a-rA-R]*$/,
41977 /^[0-9a-sA-S]*$/,
41978 /^[0-9a-tA-T]*$/,
41979 /^[0-9a-uA-U]*$/,
41980 /^[0-9a-vA-V]*$/,
41981 /^[0-9a-wA-W]*$/,
41982 /^[0-9a-xA-X]*$/,
41983 /^[0-9a-yA-Y]*$/,
41984 /^[0-9a-zA-Z]*$/
41985 ];
41986
41987 /*
41988 Function: parse
41989 Parse a string into a <BigInteger>.
41990
41991 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
41992 *base* is not provided, it will be guessed based on the leading characters
41993 of *s* as follows:
41994
41995 - "0x" or "0X": *base* = 16
41996 - "0c" or "0C": *base* = 8
41997 - "0b" or "0B": *base* = 2
41998 - else: *base* = 10
41999
42000 If no base is provided, or *base* is 10, the number can be in exponential
42001 form. For example, these are all valid:
42002
42003 > BigInteger.parse("1e9"); // Same as "1000000000"
42004 > BigInteger.parse("1.234*10^3"); // Same as 1234
42005 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42006
42007 If any characters fall outside the range defined by the radix, an exception
42008 will be thrown.
42009
42010 Parameters:
42011
42012 s - The string to parse.
42013 base - Optional radix (default is to guess based on *s*).
42014
42015 Returns:
42016
42017 a <BigInteger> instance.
42018 */
42019 BigInteger.parse = function(s, base) {
42020 // Expands a number in exponential form to decimal form.
42021 // expandExponential("-13.441*10^5") === "1344100";
42022 // expandExponential("1.12300e-1") === "0.112300";
42023 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42024 function expandExponential(str) {
42025 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42026
42027 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42028 c = +c;
42029 var l = c < 0;
42030 var i = n.length + c;
42031 x = (l ? n : f).length;
42032 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42033 var z = (new Array(c + 1)).join("0");
42034 var r = n + f;
42035 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42036 });
42037 }
42038
42039 s = s.toString();
42040 if (typeof base === "undefined" || +base === 10) {
42041 s = expandExponential(s);
42042 }
42043
42044 var prefixRE;
42045 if (typeof base === "undefined") {
42046 prefixRE = '0[xcb]';
42047 }
42048 else if (base == 16) {
42049 prefixRE = '0x';
42050 }
42051 else if (base == 8) {
42052 prefixRE = '0c';
42053 }
42054 else if (base == 2) {
42055 prefixRE = '0b';
42056 }
42057 else {
42058 prefixRE = '';
42059 }
42060 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42061 if (parts) {
42062 var sign = parts[1] || "+";
42063 var baseSection = parts[2] || "";
42064 var digits = parts[3] || "";
42065
42066 if (typeof base === "undefined") {
42067 // Guess base
42068 if (baseSection === "0x" || baseSection === "0X") { // Hex
42069 base = 16;
42070 }
42071 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42072 base = 8;
42073 }
42074 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42075 base = 2;
42076 }
42077 else {
42078 base = 10;
42079 }
42080 }
42081 else if (base < 2 || base > 36) {
42082 throw new Error("Illegal radix " + base + ".");
42083 }
42084
42085 base = +base;
42086
42087 // Check for digits outside the range
42088 if (!(BigInteger.radixRegex[base].test(digits))) {
42089 throw new Error("Bad digit for radix " + base);
42090 }
42091
42092 // Strip leading zeros, and convert to array
42093 digits = digits.replace(/^0+/, "").split("");
42094 if (digits.length === 0) {
42095 return ZERO;
42096 }
42097
42098 // Get the sign (we know it's not zero)
42099 sign = (sign === "-") ? -1 : 1;
42100
42101 // Optimize 10
42102 if (base == 10) {
42103 var d = [];
42104 while (digits.length >= BigInteger_base_log10) {
42105 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42106 }
42107 d.push(parseInt(digits.join(''), 10));
42108 return new BigInteger(d, sign, CONSTRUCT);
42109 }
42110
42111 // Do the conversion
42112 var d = ZERO;
42113 base = BigInteger.small[base];
42114 var small = BigInteger.small;
42115 for (var i = 0; i < digits.length; i++) {
42116 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42117 }
42118 return new BigInteger(d._d, sign, CONSTRUCT);
42119 }
42120 else {
42121 throw new Error("Invalid BigInteger format: " + s);
42122 }
42123 };
42124
42125 /*
42126 Function: add
42127 Add two <BigIntegers>.
42128
42129 Parameters:
42130
42131 n - The number to add to *this*. Will be converted to a <BigInteger>.
42132
42133 Returns:
42134
42135 The numbers added together.
42136
42137 See Also:
42138
42139 <subtract>, <multiply>, <quotient>, <next>
42140 */
42141 BigInteger.prototype.add = function(n) {
42142 if (this._s === 0) {
42143 return BigInteger(n);
42144 }
42145
42146 n = BigInteger(n);
42147 if (n._s === 0) {
42148 return this;
42149 }
42150 if (this._s !== n._s) {
42151 n = n.negate();
42152 return this.subtract(n);
42153 }
42154
42155 var a = this._d;
42156 var b = n._d;
42157 var al = a.length;
42158 var bl = b.length;
42159 var sum = new Array(Math.max(al, bl) + 1);
42160 var size = Math.min(al, bl);
42161 var carry = 0;
42162 var digit;
42163
42164 for (var i = 0; i < size; i++) {
42165 digit = a[i] + b[i] + carry;
42166 sum[i] = digit % BigInteger_base;
42167 carry = (digit / BigInteger_base) | 0;
42168 }
42169 if (bl > al) {
42170 a = b;
42171 al = bl;
42172 }
42173 for (i = size; carry && i < al; i++) {
42174 digit = a[i] + carry;
42175 sum[i] = digit % BigInteger_base;
42176 carry = (digit / BigInteger_base) | 0;
42177 }
42178 if (carry) {
42179 sum[i] = carry;
42180 }
42181
42182 for ( ; i < al; i++) {
42183 sum[i] = a[i];
42184 }
42185
42186 return new BigInteger(sum, this._s, CONSTRUCT);
42187 };
42188
42189 /*
42190 Function: negate
42191 Get the additive inverse of a <BigInteger>.
42192
42193 Returns:
42194
42195 A <BigInteger> with the same magnatude, but with the opposite sign.
42196
42197 See Also:
42198
42199 <abs>
42200 */
42201 BigInteger.prototype.negate = function() {
42202 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42203 };
42204
42205 /*
42206 Function: abs
42207 Get the absolute value of a <BigInteger>.
42208
42209 Returns:
42210
42211 A <BigInteger> with the same magnatude, but always positive (or zero).
42212
42213 See Also:
42214
42215 <negate>
42216 */
42217 BigInteger.prototype.abs = function() {
42218 return (this._s < 0) ? this.negate() : this;
42219 };
42220
42221 /*
42222 Function: subtract
42223 Subtract two <BigIntegers>.
42224
42225 Parameters:
42226
42227 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42228
42229 Returns:
42230
42231 The *n* subtracted from *this*.
42232
42233 See Also:
42234
42235 <add>, <multiply>, <quotient>, <prev>
42236 */
42237 BigInteger.prototype.subtract = function(n) {
42238 if (this._s === 0) {
42239 return BigInteger(n).negate();
42240 }
42241
42242 n = BigInteger(n);
42243 if (n._s === 0) {
42244 return this;
42245 }
42246 if (this._s !== n._s) {
42247 n = n.negate();
42248 return this.add(n);
42249 }
42250
42251 var m = this;
42252 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42253 if (this._s < 0) {
42254 m = new BigInteger(n._d, 1, CONSTRUCT);
42255 n = new BigInteger(this._d, 1, CONSTRUCT);
42256 }
42257
42258 // Both are positive => a - b
42259 var sign = m.compareAbs(n);
42260 if (sign === 0) {
42261 return ZERO;
42262 }
42263 else if (sign < 0) {
42264 // swap m and n
42265 var t = n;
42266 n = m;
42267 m = t;
42268 }
42269
42270 // a > b
42271 var a = m._d;
42272 var b = n._d;
42273 var al = a.length;
42274 var bl = b.length;
42275 var diff = new Array(al); // al >= bl since a > b
42276 var borrow = 0;
42277 var i;
42278 var digit;
42279
42280 for (i = 0; i < bl; i++) {
42281 digit = a[i] - borrow - b[i];
42282 if (digit < 0) {
42283 digit += BigInteger_base;
42284 borrow = 1;
42285 }
42286 else {
42287 borrow = 0;
42288 }
42289 diff[i] = digit;
42290 }
42291 for (i = bl; i < al; i++) {
42292 digit = a[i] - borrow;
42293 if (digit < 0) {
42294 digit += BigInteger_base;
42295 }
42296 else {
42297 diff[i++] = digit;
42298 break;
42299 }
42300 diff[i] = digit;
42301 }
42302 for ( ; i < al; i++) {
42303 diff[i] = a[i];
42304 }
42305
42306 return new BigInteger(diff, sign, CONSTRUCT);
42307 };
42308
42309 (function() {
42310 function addOne(n, sign) {
42311 var a = n._d;
42312 var sum = a.slice();
42313 var carry = true;
42314 var i = 0;
42315
42316 while (true) {
42317 var digit = (a[i] || 0) + 1;
42318 sum[i] = digit % BigInteger_base;
42319 if (digit <= BigInteger_base - 1) {
42320 break;
42321 }
42322 ++i;
42323 }
42324
42325 return new BigInteger(sum, sign, CONSTRUCT);
42326 }
42327
42328 function subtractOne(n, sign) {
42329 var a = n._d;
42330 var sum = a.slice();
42331 var borrow = true;
42332 var i = 0;
42333
42334 while (true) {
42335 var digit = (a[i] || 0) - 1;
42336 if (digit < 0) {
42337 sum[i] = digit + BigInteger_base;
42338 }
42339 else {
42340 sum[i] = digit;
42341 break;
42342 }
42343 ++i;
42344 }
42345
42346 return new BigInteger(sum, sign, CONSTRUCT);
42347 }
42348
42349 /*
42350 Function: next
42351 Get the next <BigInteger> (add one).
42352
42353 Returns:
42354
42355 *this* + 1.
42356
42357 See Also:
42358
42359 <add>, <prev>
42360 */
42361 BigInteger.prototype.next = function() {
42362 switch (this._s) {
42363 case 0:
42364 return ONE;
42365 case -1:
42366 return subtractOne(this, -1);
42367 // case 1:
42368 default:
42369 return addOne(this, 1);
42370 }
42371 };
42372
42373 /*
42374 Function: prev
42375 Get the previous <BigInteger> (subtract one).
42376
42377 Returns:
42378
42379 *this* - 1.
42380
42381 See Also:
42382
42383 <next>, <subtract>
42384 */
42385 BigInteger.prototype.prev = function() {
42386 switch (this._s) {
42387 case 0:
42388 return M_ONE;
42389 case -1:
42390 return addOne(this, -1);
42391 // case 1:
42392 default:
42393 return subtractOne(this, 1);
42394 }
42395 };
42396 })();
42397
42398 /*
42399 Function: compareAbs
42400 Compare the absolute value of two <BigIntegers>.
42401
42402 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42403
42404 Parameters:
42405
42406 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42407
42408 Returns:
42409
42410 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42411
42412 See Also:
42413
42414 <compare>, <abs>
42415 */
42416 BigInteger.prototype.compareAbs = function(n) {
42417 if (this === n) {
42418 return 0;
42419 }
42420
42421 if (!(n instanceof BigInteger)) {
42422 if (!isFinite(n)) {
42423 return(isNaN(n) ? n : -1);
42424 }
42425 n = BigInteger(n);
42426 }
42427
42428 if (this._s === 0) {
42429 return (n._s !== 0) ? -1 : 0;
42430 }
42431 if (n._s === 0) {
42432 return 1;
42433 }
42434
42435 var l = this._d.length;
42436 var nl = n._d.length;
42437 if (l < nl) {
42438 return -1;
42439 }
42440 else if (l > nl) {
42441 return 1;
42442 }
42443
42444 var a = this._d;
42445 var b = n._d;
42446 for (var i = l-1; i >= 0; i--) {
42447 if (a[i] !== b[i]) {
42448 return a[i] < b[i] ? -1 : 1;
42449 }
42450 }
42451
42452 return 0;
42453 };
42454
42455 /*
42456 Function: compare
42457 Compare two <BigIntegers>.
42458
42459 Parameters:
42460
42461 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42462
42463 Returns:
42464
42465 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42466
42467 See Also:
42468
42469 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42470 */
42471 BigInteger.prototype.compare = function(n) {
42472 if (this === n) {
42473 return 0;
42474 }
42475
42476 n = BigInteger(n);
42477
42478 if (this._s === 0) {
42479 return -n._s;
42480 }
42481
42482 if (this._s === n._s) { // both positive or both negative
42483 var cmp = this.compareAbs(n);
42484 return cmp * this._s;
42485 }
42486 else {
42487 return this._s;
42488 }
42489 };
42490
42491 /*
42492 Function: isUnit
42493 Return true iff *this* is either 1 or -1.
42494
42495 Returns:
42496
42497 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42498
42499 See Also:
42500
42501 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42502 <BigInteger.ONE>, <BigInteger.M_ONE>
42503 */
42504 BigInteger.prototype.isUnit = function() {
42505 return this === ONE ||
42506 this === M_ONE ||
42507 (this._d.length === 1 && this._d[0] === 1);
42508 };
42509
42510 /*
42511 Function: multiply
42512 Multiply two <BigIntegers>.
42513
42514 Parameters:
42515
42516 n - The number to multiply *this* by. Will be converted to a
42517 <BigInteger>.
42518
42519 Returns:
42520
42521 The numbers multiplied together.
42522
42523 See Also:
42524
42525 <add>, <subtract>, <quotient>, <square>
42526 */
42527 BigInteger.prototype.multiply = function(n) {
42528 // TODO: Consider adding Karatsuba multiplication for large numbers
42529 if (this._s === 0) {
42530 return ZERO;
42531 }
42532
42533 n = BigInteger(n);
42534 if (n._s === 0) {
42535 return ZERO;
42536 }
42537 if (this.isUnit()) {
42538 if (this._s < 0) {
42539 return n.negate();
42540 }
42541 return n;
42542 }
42543 if (n.isUnit()) {
42544 if (n._s < 0) {
42545 return this.negate();
42546 }
42547 return this;
42548 }
42549 if (this === n) {
42550 return this.square();
42551 }
42552
42553 var r = (this._d.length >= n._d.length);
42554 var a = (r ? this : n)._d; // a will be longer than b
42555 var b = (r ? n : this)._d;
42556 var al = a.length;
42557 var bl = b.length;
42558
42559 var pl = al + bl;
42560 var partial = new Array(pl);
42561 var i;
42562 for (i = 0; i < pl; i++) {
42563 partial[i] = 0;
42564 }
42565
42566 for (i = 0; i < bl; i++) {
42567 var carry = 0;
42568 var bi = b[i];
42569 var jlimit = al + i;
42570 var digit;
42571 for (var j = i; j < jlimit; j++) {
42572 digit = partial[j] + bi * a[j - i] + carry;
42573 carry = (digit / BigInteger_base) | 0;
42574 partial[j] = (digit % BigInteger_base) | 0;
42575 }
42576 if (carry) {
42577 digit = partial[j] + carry;
42578 carry = (digit / BigInteger_base) | 0;
42579 partial[j] = digit % BigInteger_base;
42580 }
42581 }
42582 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42583 };
42584
42585 // Multiply a BigInteger by a single-digit native number
42586 // Assumes that this and n are >= 0
42587 // This is not really intended to be used outside the library itself
42588 BigInteger.prototype.multiplySingleDigit = function(n) {
42589 if (n === 0 || this._s === 0) {
42590 return ZERO;
42591 }
42592 if (n === 1) {
42593 return this;
42594 }
42595
42596 var digit;
42597 if (this._d.length === 1) {
42598 digit = this._d[0] * n;
42599 if (digit >= BigInteger_base) {
42600 return new BigInteger([(digit % BigInteger_base)|0,
42601 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42602 }
42603 return new BigInteger([digit], 1, CONSTRUCT);
42604 }
42605
42606 if (n === 2) {
42607 return this.add(this);
42608 }
42609 if (this.isUnit()) {
42610 return new BigInteger([n], 1, CONSTRUCT);
42611 }
42612
42613 var a = this._d;
42614 var al = a.length;
42615
42616 var pl = al + 1;
42617 var partial = new Array(pl);
42618 for (var i = 0; i < pl; i++) {
42619 partial[i] = 0;
42620 }
42621
42622 var carry = 0;
42623 for (var j = 0; j < al; j++) {
42624 digit = n * a[j] + carry;
42625 carry = (digit / BigInteger_base) | 0;
42626 partial[j] = (digit % BigInteger_base) | 0;
42627 }
42628 if (carry) {
42629 partial[j] = carry;
42630 }
42631
42632 return new BigInteger(partial, 1, CONSTRUCT);
42633 };
42634
42635 /*
42636 Function: square
42637 Multiply a <BigInteger> by itself.
42638
42639 This is slightly faster than regular multiplication, since it removes the
42640 duplicated multiplcations.
42641
42642 Returns:
42643
42644 > this.multiply(this)
42645
42646 See Also:
42647 <multiply>
42648 */
42649 BigInteger.prototype.square = function() {
42650 // Normally, squaring a 10-digit number would take 100 multiplications.
42651 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42652 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42653 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42654
42655 if (this._s === 0) {
42656 return ZERO;
42657 }
42658 if (this.isUnit()) {
42659 return ONE;
42660 }
42661
42662 var digits = this._d;
42663 var length = digits.length;
42664 var imult1 = new Array(length + length + 1);
42665 var product, carry, k;
42666 var i;
42667
42668 // Calculate diagonal
42669 for (i = 0; i < length; i++) {
42670 k = i * 2;
42671 product = digits[i] * digits[i];
42672 carry = (product / BigInteger_base) | 0;
42673 imult1[k] = product % BigInteger_base;
42674 imult1[k + 1] = carry;
42675 }
42676
42677 // Calculate repeating part
42678 for (i = 0; i < length; i++) {
42679 carry = 0;
42680 k = i * 2 + 1;
42681 for (var j = i + 1; j < length; j++, k++) {
42682 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42683 carry = (product / BigInteger_base) | 0;
42684 imult1[k] = product % BigInteger_base;
42685 }
42686 k = length + i;
42687 var digit = carry + imult1[k];
42688 carry = (digit / BigInteger_base) | 0;
42689 imult1[k] = digit % BigInteger_base;
42690 imult1[k + 1] += carry;
42691 }
42692
42693 return new BigInteger(imult1, 1, CONSTRUCT);
42694 };
42695
42696 /*
42697 Function: quotient
42698 Divide two <BigIntegers> and truncate towards zero.
42699
42700 <quotient> throws an exception if *n* is zero.
42701
42702 Parameters:
42703
42704 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42705
42706 Returns:
42707
42708 The *this* / *n*, truncated to an integer.
42709
42710 See Also:
42711
42712 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42713 */
42714 BigInteger.prototype.quotient = function(n) {
42715 return this.divRem(n)[0];
42716 };
42717
42718 /*
42719 Function: divide
42720 Deprecated synonym for <quotient>.
42721 */
42722 BigInteger.prototype.divide = BigInteger.prototype.quotient;
42723
42724 /*
42725 Function: remainder
42726 Calculate the remainder of two <BigIntegers>.
42727
42728 <remainder> throws an exception if *n* is zero.
42729
42730 Parameters:
42731
42732 n - The remainder after *this* is divided *this* by *n*. Will be
42733 converted to a <BigInteger>.
42734
42735 Returns:
42736
42737 *this* % *n*.
42738
42739 See Also:
42740
42741 <divRem>, <quotient>
42742 */
42743 BigInteger.prototype.remainder = function(n) {
42744 return this.divRem(n)[1];
42745 };
42746
42747 /*
42748 Function: divRem
42749 Calculate the integer quotient and remainder of two <BigIntegers>.
42750
42751 <divRem> throws an exception if *n* is zero.
42752
42753 Parameters:
42754
42755 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42756
42757 Returns:
42758
42759 A two-element array containing the quotient and the remainder.
42760
42761 > a.divRem(b)
42762
42763 is exactly equivalent to
42764
42765 > [a.quotient(b), a.remainder(b)]
42766
42767 except it is faster, because they are calculated at the same time.
42768
42769 See Also:
42770
42771 <quotient>, <remainder>
42772 */
42773 BigInteger.prototype.divRem = function(n) {
42774 n = BigInteger(n);
42775 if (n._s === 0) {
42776 throw new Error("Divide by zero");
42777 }
42778 if (this._s === 0) {
42779 return [ZERO, ZERO];
42780 }
42781 if (n._d.length === 1) {
42782 return this.divRemSmall(n._s * n._d[0]);
42783 }
42784
42785 // Test for easy cases -- |n1| <= |n2|
42786 switch (this.compareAbs(n)) {
42787 case 0: // n1 == n2
42788 return [this._s === n._s ? ONE : M_ONE, ZERO];
42789 case -1: // |n1| < |n2|
42790 return [ZERO, this];
42791 }
42792
42793 var sign = this._s * n._s;
42794 var a = n.abs();
42795 var b_digits = this._d;
42796 var b_index = b_digits.length;
42797 var digits = n._d.length;
42798 var quot = [];
42799 var guess;
42800
42801 var part = new BigInteger([], 0, CONSTRUCT);
42802
42803 while (b_index) {
42804 part._d.unshift(b_digits[--b_index]);
42805 part = new BigInteger(part._d, 1, CONSTRUCT);
42806
42807 if (part.compareAbs(n) < 0) {
42808 quot.push(0);
42809 continue;
42810 }
42811 if (part._s === 0) {
42812 guess = 0;
42813 }
42814 else {
42815 var xlen = part._d.length, ylen = a._d.length;
42816 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42817 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42818 if (part._d.length > a._d.length) {
42819 // The length of part._d can either match a._d length,
42820 // or exceed it by one.
42821 highx = (highx+1)*BigInteger_base;
42822 }
42823 guess = Math.ceil(highx/highy);
42824 }
42825 do {
42826 var check = a.multiplySingleDigit(guess);
42827 if (check.compareAbs(part) <= 0) {
42828 break;
42829 }
42830 guess--;
42831 } while (guess);
42832
42833 quot.push(guess);
42834 if (!guess) {
42835 continue;
42836 }
42837 var diff = part.subtract(check);
42838 part._d = diff._d.slice();
42839 }
42840
42841 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42842 new BigInteger(part._d, this._s, CONSTRUCT)];
42843 };
42844
42845 // Throws an exception if n is outside of (-BigInteger.base, -1] or
42846 // [1, BigInteger.base). It's not necessary to call this, since the
42847 // other division functions will call it if they are able to.
42848 BigInteger.prototype.divRemSmall = function(n) {
42849 var r;
42850 n = +n;
42851 if (n === 0) {
42852 throw new Error("Divide by zero");
42853 }
42854
42855 var n_s = n < 0 ? -1 : 1;
42856 var sign = this._s * n_s;
42857 n = Math.abs(n);
42858
42859 if (n < 1 || n >= BigInteger_base) {
42860 throw new Error("Argument out of range");
42861 }
42862
42863 if (this._s === 0) {
42864 return [ZERO, ZERO];
42865 }
42866
42867 if (n === 1 || n === -1) {
42868 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42869 }
42870
42871 // 2 <= n < BigInteger_base
42872
42873 // divide a single digit by a single digit
42874 if (this._d.length === 1) {
42875 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42876 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42877 if (sign < 0) {
42878 q = q.negate();
42879 }
42880 if (this._s < 0) {
42881 r = r.negate();
42882 }
42883 return [q, r];
42884 }
42885
42886 var digits = this._d.slice();
42887 var quot = new Array(digits.length);
42888 var part = 0;
42889 var diff = 0;
42890 var i = 0;
42891 var guess;
42892
42893 while (digits.length) {
42894 part = part * BigInteger_base + digits[digits.length - 1];
42895 if (part < n) {
42896 quot[i++] = 0;
42897 digits.pop();
42898 diff = BigInteger_base * diff + part;
42899 continue;
42900 }
42901 if (part === 0) {
42902 guess = 0;
42903 }
42904 else {
42905 guess = (part / n) | 0;
42906 }
42907
42908 var check = n * guess;
42909 diff = part - check;
42910 quot[i++] = guess;
42911 if (!guess) {
42912 digits.pop();
42913 continue;
42914 }
42915
42916 digits.pop();
42917 part = diff;
42918 }
42919
42920 r = new BigInteger([diff], 1, CONSTRUCT);
42921 if (this._s < 0) {
42922 r = r.negate();
42923 }
42924 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42925 };
42926
42927 /*
42928 Function: isEven
42929 Return true iff *this* is divisible by two.
42930
42931 Note that <BigInteger.ZERO> is even.
42932
42933 Returns:
42934
42935 true if *this* is even, false otherwise.
42936
42937 See Also:
42938
42939 <isOdd>
42940 */
42941 BigInteger.prototype.isEven = function() {
42942 var digits = this._d;
42943 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42944 };
42945
42946 /*
42947 Function: isOdd
42948 Return true iff *this* is not divisible by two.
42949
42950 Returns:
42951
42952 true if *this* is odd, false otherwise.
42953
42954 See Also:
42955
42956 <isEven>
42957 */
42958 BigInteger.prototype.isOdd = function() {
42959 return !this.isEven();
42960 };
42961
42962 /*
42963 Function: sign
42964 Get the sign of a <BigInteger>.
42965
42966 Returns:
42967
42968 * -1 if *this* < 0
42969 * 0 if *this* == 0
42970 * +1 if *this* > 0
42971
42972 See Also:
42973
42974 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
42975 */
42976 BigInteger.prototype.sign = function() {
42977 return this._s;
42978 };
42979
42980 /*
42981 Function: isPositive
42982 Return true iff *this* > 0.
42983
42984 Returns:
42985
42986 true if *this*.compare(<BigInteger.ZERO>) == 1.
42987
42988 See Also:
42989
42990 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
42991 */
42992 BigInteger.prototype.isPositive = function() {
42993 return this._s > 0;
42994 };
42995
42996 /*
42997 Function: isNegative
42998 Return true iff *this* < 0.
42999
43000 Returns:
43001
43002 true if *this*.compare(<BigInteger.ZERO>) == -1.
43003
43004 See Also:
43005
43006 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43007 */
43008 BigInteger.prototype.isNegative = function() {
43009 return this._s < 0;
43010 };
43011
43012 /*
43013 Function: isZero
43014 Return true iff *this* == 0.
43015
43016 Returns:
43017
43018 true if *this*.compare(<BigInteger.ZERO>) == 0.
43019
43020 See Also:
43021
43022 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43023 */
43024 BigInteger.prototype.isZero = function() {
43025 return this._s === 0;
43026 };
43027
43028 /*
43029 Function: exp10
43030 Multiply a <BigInteger> by a power of 10.
43031
43032 This is equivalent to, but faster than
43033
43034 > if (n >= 0) {
43035 > return this.multiply(BigInteger("1e" + n));
43036 > }
43037 > else { // n <= 0
43038 > return this.quotient(BigInteger("1e" + -n));
43039 > }
43040
43041 Parameters:
43042
43043 n - The power of 10 to multiply *this* by. *n* is converted to a
43044 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43045 (0x7FFFFFFF), or an exception will be thrown.
43046
43047 Returns:
43048
43049 *this* * (10 ** *n*), truncated to an integer if necessary.
43050
43051 See Also:
43052
43053 <pow>, <multiply>
43054 */
43055 BigInteger.prototype.exp10 = function(n) {
43056 n = +n;
43057 if (n === 0) {
43058 return this;
43059 }
43060 if (Math.abs(n) > Number(MAX_EXP)) {
43061 throw new Error("exponent too large in BigInteger.exp10");
43062 }
43063 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43064 if (this._s === 0) {
43065 return ZERO;
43066 }
43067 if (n > 0) {
43068 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43069
43070 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43071 k._d.unshift(0);
43072 }
43073 if (n == 0)
43074 return k;
43075 k._s = 1;
43076 k = k.multiplySingleDigit(Math.pow(10, n));
43077 return (this._s < 0 ? k.negate() : k);
43078 } else if (-n >= this._d.length*BigInteger_base_log10) {
43079 return ZERO;
43080 } else {
43081 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43082
43083 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43084 k._d.shift();
43085 }
43086 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43087 }
43088 };
43089
43090 /*
43091 Function: pow
43092 Raise a <BigInteger> to a power.
43093
43094 In this implementation, 0**0 is 1.
43095
43096 Parameters:
43097
43098 n - The exponent to raise *this* by. *n* must be no greater than
43099 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43100
43101 Returns:
43102
43103 *this* raised to the *nth* power.
43104
43105 See Also:
43106
43107 <modPow>
43108 */
43109 BigInteger.prototype.pow = function(n) {
43110 if (this.isUnit()) {
43111 if (this._s > 0) {
43112 return this;
43113 }
43114 else {
43115 return BigInteger(n).isOdd() ? this : this.negate();
43116 }
43117 }
43118
43119 n = BigInteger(n);
43120 if (n._s === 0) {
43121 return ONE;
43122 }
43123 else if (n._s < 0) {
43124 if (this._s === 0) {
43125 throw new Error("Divide by zero");
43126 }
43127 else {
43128 return ZERO;
43129 }
43130 }
43131 if (this._s === 0) {
43132 return ZERO;
43133 }
43134 if (n.isUnit()) {
43135 return this;
43136 }
43137
43138 if (n.compareAbs(MAX_EXP) > 0) {
43139 throw new Error("exponent too large in BigInteger.pow");
43140 }
43141 var x = this;
43142 var aux = ONE;
43143 var two = BigInteger.small[2];
43144
43145 while (n.isPositive()) {
43146 if (n.isOdd()) {
43147 aux = aux.multiply(x);
43148 if (n.isUnit()) {
43149 return aux;
43150 }
43151 }
43152 x = x.square();
43153 n = n.quotient(two);
43154 }
43155
43156 return aux;
43157 };
43158
43159 /*
43160 Function: modPow
43161 Raise a <BigInteger> to a power (mod m).
43162
43163 Because it is reduced by a modulus, <modPow> is not limited by
43164 <BigInteger.MAX_EXP> like <pow>.
43165
43166 Parameters:
43167
43168 exponent - The exponent to raise *this* by. Must be positive.
43169 modulus - The modulus.
43170
43171 Returns:
43172
43173 *this* ^ *exponent* (mod *modulus*).
43174
43175 See Also:
43176
43177 <pow>, <mod>
43178 */
43179 BigInteger.prototype.modPow = function(exponent, modulus) {
43180 var result = ONE;
43181 var base = this;
43182
43183 while (exponent.isPositive()) {
43184 if (exponent.isOdd()) {
43185 result = result.multiply(base).remainder(modulus);
43186 }
43187
43188 exponent = exponent.quotient(BigInteger.small[2]);
43189 if (exponent.isPositive()) {
43190 base = base.square().remainder(modulus);
43191 }
43192 }
43193
43194 return result;
43195 };
43196
43197 /*
43198 Function: log
43199 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43200
43201 This is equivalent to
43202
43203 > Math.log(this.toJSValue())
43204
43205 but handles values outside of the native number range.
43206
43207 Returns:
43208
43209 log( *this* )
43210
43211 See Also:
43212
43213 <toJSValue>
43214 */
43215 BigInteger.prototype.log = function() {
43216 switch (this._s) {
43217 case 0: return -Infinity;
43218 case -1: return NaN;
43219 default: // Fall through.
43220 }
43221
43222 var l = this._d.length;
43223
43224 if (l*BigInteger_base_log10 < 30) {
43225 return Math.log(this.valueOf());
43226 }
43227
43228 var N = Math.ceil(30/BigInteger_base_log10);
43229 var firstNdigits = this._d.slice(l - N);
43230 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43231 };
43232
43233 /*
43234 Function: valueOf
43235 Convert a <BigInteger> to a native JavaScript integer.
43236
43237 This is called automatically by JavaScipt to convert a <BigInteger> to a
43238 native value.
43239
43240 Returns:
43241
43242 > parseInt(this.toString(), 10)
43243
43244 See Also:
43245
43246 <toString>, <toJSValue>
43247 */
43248 BigInteger.prototype.valueOf = function() {
43249 return parseInt(this.toString(), 10);
43250 };
43251
43252 /*
43253 Function: toJSValue
43254 Convert a <BigInteger> to a native JavaScript integer.
43255
43256 This is the same as valueOf, but more explicitly named.
43257
43258 Returns:
43259
43260 > parseInt(this.toString(), 10)
43261
43262 See Also:
43263
43264 <toString>, <valueOf>
43265 */
43266 BigInteger.prototype.toJSValue = function() {
43267 return parseInt(this.toString(), 10);
43268 };
43269
43270 var MAX_EXP = BigInteger(0x7FFFFFFF);
43271 // Constant: MAX_EXP
43272 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43273 BigInteger.MAX_EXP = MAX_EXP;
43274
43275 (function() {
43276 function makeUnary(fn) {
43277 return function(a) {
43278 return fn.call(BigInteger(a));
43279 };
43280 }
43281
43282 function makeBinary(fn) {
43283 return function(a, b) {
43284 return fn.call(BigInteger(a), BigInteger(b));
43285 };
43286 }
43287
43288 function makeTrinary(fn) {
43289 return function(a, b, c) {
43290 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43291 };
43292 }
43293
43294 (function() {
43295 var i, fn;
43296 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43297 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43298 var trinary = ["modPow"];
43299
43300 for (i = 0; i < unary.length; i++) {
43301 fn = unary[i];
43302 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43303 }
43304
43305 for (i = 0; i < binary.length; i++) {
43306 fn = binary[i];
43307 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43308 }
43309
43310 for (i = 0; i < trinary.length; i++) {
43311 fn = trinary[i];
43312 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43313 }
43314
43315 BigInteger.exp10 = function(x, n) {
43316 return BigInteger(x).exp10(n);
43317 };
43318 })();
43319 })();
43320
43321 exports.BigInteger = BigInteger;
43322 })(typeof exports !== 'undefined' ? exports : this);
43323 </script>
43324 <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){
43325 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;
43326
43327 },{}],2:[function(require,module,exports){
43328 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;
43329
43330 },{"./scoring":6}],3:[function(require,module,exports){
43331 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(","),
43332 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(","),
43333 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(","),
43334 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(","),
43335 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;
43336
43337 },{}],4:[function(require,module,exports){
43338 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;
43339
43340 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43341 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;
43342
43343 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43344 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;
43345
43346 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
43347 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;
43348
43349 },{}]},{},[4])(4)
43350 });
43351 //# sourceMappingURL=zxcvbn.js.map
43352 </script>
43353 <script>/*
43354 * Detects entropy from a string.
43355 *
43356 * Formats include:
43357 * binary [0-1]
43358 * base 6 [0-5]
43359 * dice 6 [1-6]
43360 * decimal [0-9]
43361 * hexadecimal [0-9A-F]
43362 * card [A2-9TJQK][CDHS]
43363 *
43364 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43365 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43366 * entropy.
43367 */
43368
43369 window.Entropy = new (function() {
43370
43371 var TWO = new BigInteger(2);
43372
43373 // matchers returns an array of the matched events for each type of entropy.
43374 // eg
43375 // matchers.binary("010") returns ["0", "1", "0"]
43376 // matchers.binary("a10") returns ["1", "0"]
43377 // matchers.hex("a10") returns ["a", "1", "0"]
43378 var matchers = {
43379 binary: function(str) {
43380 return str.match(/[0-1]/gi) || [];
43381 },
43382 base6: function(str) {
43383 return str.match(/[0-5]/gi) || [];
43384 },
43385 dice: function(str) {
43386 return str.match(/[1-6]/gi) || []; // ie dice numbers
43387 },
43388 base10: function(str) {
43389 return str.match(/[0-9]/gi) || [];
43390 },
43391 hex: function(str) {
43392 return str.match(/[0-9A-F]/gi) || [];
43393 },
43394 card: function(str) {
43395 // Format is NumberSuit, eg
43396 // AH ace of hearts
43397 // 8C eight of clubs
43398 // TD ten of diamonds
43399 // JS jack of spades
43400 // QH queen of hearts
43401 // KC king of clubs
43402 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43403 }
43404 }
43405
43406 // Convert array of cards from ["ac", "4d", "ks"]
43407 // to numbers between 0 and 51 [0, 16, 51]
43408 function convertCardsToInts(cards) {
43409 var ints = [];
43410 var values = "a23456789tjqk";
43411 var suits = "cdhs";
43412 for (var i=0; i<cards.length; i++) {
43413 var card = cards[i].toLowerCase();
43414 var value = card[0];
43415 var suit = card[1];
43416 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43417 ints.push(asInt);
43418 }
43419 return ints;
43420 }
43421
43422 this.fromString = function(rawEntropyStr) {
43423 // Find type of entropy being used (binary, hex, dice etc)
43424 var base = getBase(rawEntropyStr);
43425 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43426 // This is done by changing all 6s to 0s
43427 if (base.str == "dice") {
43428 var newParts = [];
43429 var newInts = [];
43430 for (var i=0; i<base.parts.length; i++) {
43431 var c = base.parts[i];
43432 if ("12345".indexOf(c) > -1) {
43433 newParts[i] = base.parts[i];
43434 newInts[i] = base.ints[i];
43435 }
43436 else {
43437 newParts[i] = "0";
43438 newInts[i] = 0;
43439 }
43440 }
43441 base.str = "base 6 (dice)";
43442 base.ints = newInts;
43443 base.parts = newParts;
43444 base.matcher = matchers.base6;
43445 }
43446 // Detect empty entropy
43447 if (base.parts.length == 0) {
43448 return {
43449 binaryStr: "",
43450 cleanStr: "",
43451 cleanHtml: "",
43452 base: base,
43453 };
43454 }
43455 // Convert base.ints to BigInteger.
43456 // Due to using unusual bases, eg cards of base52, this is not as simple as
43457 // using BigInteger.parse()
43458 var entropyInt = BigInteger.ZERO;
43459 for (var i=base.ints.length-1; i>=0; i--) {
43460 var thisInt = BigInteger.parse(base.ints[i]);
43461 var power = (base.ints.length - 1) - i;
43462 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43463 entropyInt = entropyInt.add(additionalEntropy);
43464 }
43465 // Convert entropy to binary
43466 var entropyBin = entropyInt.toString(2);
43467 // If the first integer is small, it must be padded with zeros.
43468 // Otherwise the chance of the first bit being 1 is 100%, which is
43469 // obviously incorrect.
43470 // This is not perfect for non-2^n bases.
43471 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43472 while (entropyBin.length < expectedBits) {
43473 entropyBin = "0" + entropyBin;
43474 }
43475 // Calculate the number of bits per event
43476 var bitsPerEvent = Math.log2(base.asInt);
43477 // Cards binary must be handled differently, since they're not replaced
43478 if (base.asInt == 52) {
43479 var cardEntropy = processCardEntropy(base.parts);
43480 entropyBin = cardEntropy.binaryStr;
43481 bitsPerEvent = cardEntropy.bitsPerEvent;
43482 }
43483 // Supply a 'filtered' entropy string for display purposes
43484 var entropyClean = base.parts.join("");
43485 var entropyHtml = base.parts.join("");
43486 if (base.asInt == 52) {
43487 entropyClean = base.parts.join(" ").toUpperCase();
43488 entropyClean = entropyClean.replace(/C/g, "\u2663");
43489 entropyClean = entropyClean.replace(/D/g, "\u2666");
43490 entropyClean = entropyClean.replace(/H/g, "\u2665");
43491 entropyClean = entropyClean.replace(/S/g, "\u2660");
43492 entropyHtml = base.parts.join(" ").toUpperCase();
43493 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43494 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43495 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43496 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43497 }
43498 // Return the result
43499 var e = {
43500 binaryStr: entropyBin,
43501 cleanStr: entropyClean,
43502 cleanHtml: entropyHtml,
43503 bitsPerEvent: bitsPerEvent,
43504 base: base,
43505 }
43506 return e;
43507 }
43508
43509 function getSortedDeck() {
43510 var s = [];
43511 var suits = "CDHS";
43512 var values = "A23456789TJQK";
43513 for (var i=0; i<suits.length; i++) {
43514 for (var j=0; j<values.length; j++) {
43515 s.push(values[j]+suits[i]);
43516 }
43517 }
43518 return s;
43519 }
43520
43521 function getBase(str) {
43522 // Need to get the lowest base for the supplied entropy.
43523 // This prevents interpreting, say, dice rolls as hexadecimal.
43524 var binaryMatches = matchers.binary(str);
43525 var hexMatches = matchers.hex(str);
43526 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43527 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43528 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43529 return {
43530 ints: ints,
43531 parts: binaryMatches,
43532 matcher: matchers.binary,
43533 asInt: 2,
43534 str: "binary",
43535 }
43536 }
43537 var cardMatches = matchers.card(str);
43538 if (cardMatches.length >= hexMatches.length / 2) {
43539 var ints = convertCardsToInts(cardMatches);
43540 return {
43541 ints: ints,
43542 parts: cardMatches,
43543 matcher: matchers.card,
43544 asInt: 52,
43545 str: "card",
43546 }
43547 }
43548 var diceMatches = matchers.dice(str);
43549 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43550 var ints = diceMatches.map(function(i) { return parseInt(i) });
43551 return {
43552 ints: ints,
43553 parts: diceMatches,
43554 matcher: matchers.dice,
43555 asInt: 6,
43556 str: "dice",
43557 }
43558 }
43559 var base6Matches = matchers.base6(str);
43560 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43561 var ints = base6Matches.map(function(i) { return parseInt(i) });
43562 return {
43563 ints: ints,
43564 parts: base6Matches,
43565 matcher: matchers.base6,
43566 asInt: 6,
43567 str: "base 6",
43568 }
43569 }
43570 var base10Matches = matchers.base10(str);
43571 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43572 var ints = base10Matches.map(function(i) { return parseInt(i) });
43573 return {
43574 ints: ints,
43575 parts: base10Matches,
43576 matcher: matchers.base10,
43577 asInt: 10,
43578 str: "base 10",
43579 }
43580 }
43581 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43582 return {
43583 ints: ints,
43584 parts: hexMatches,
43585 matcher: matchers.hex,
43586 asInt: 16,
43587 str: "hexadecimal",
43588 }
43589 }
43590
43591 // Assume cards are NOT replaced.
43592 // Additional entropy decreases as more cards are used. This means
43593 // total possible entropy is measured using n!, not base^n.
43594 // eg the second last card can be only one of two, not one of fifty two
43595 // so the added entropy for that card is only one bit at most
43596 function processCardEntropy(cards) {
43597 // Track how many instances of each card have been used, and thus
43598 // how many decks are in use.
43599 var cardCounts = {};
43600 var numberOfDecks = 0;
43601 // Work out number of decks by max(duplicates)
43602 for (var i=0; i<cards.length; i++) {
43603 // Get the card that was drawn
43604 var cardLower = cards[i];
43605 var card = cardLower.toUpperCase();
43606 // Initialize the count for this card if needed
43607 if (!(card in cardCounts)) {
43608 cardCounts[card] = 0;
43609 }
43610 cardCounts[card] += 1;
43611 // See if this is max(duplicates)
43612 if (cardCounts[card] > numberOfDecks) {
43613 numberOfDecks = cardCounts[card];
43614 }
43615 }
43616 // Work out the total number of bits for this many decks
43617 // See http://crypto.stackexchange.com/q/41886
43618 var gainedBits = 0;
43619 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43620 // which becomes infinity for numberOfDecks > 4
43621 for (var i=1; i<=52*numberOfDecks; i++) {
43622 gainedBits = gainedBits + Math.log2(i);
43623 }
43624 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43625 var maxBits = gainedBits - lostBits;
43626 // Convert the drawn cards to a binary representation.
43627 // The exact technique for doing this is unclear.
43628 // See
43629 // http://crypto.stackexchange.com/a/41896
43630 // "I even doubt that this is well defined (only the average entropy
43631 // is, I believe)."
43632 // See
43633 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43634 // "The binary representation can be the first log(permutations,2) bits
43635 // of the sha-2 hash of the normalized deck string."
43636 //
43637 // In this specific implementation, the first N bits of the hash of the
43638 // normalized cards string is being used. Uppercase, no spaces; eg
43639 // sha256("AH8DQSTC2H")
43640 var totalCards = numberOfDecks * 52;
43641 var percentUsed = cards.length / totalCards;
43642 // Calculate the average number of bits of entropy for the number of
43643 // cards drawn.
43644 var numberOfBits = Math.floor(maxBits * percentUsed);
43645 // Create a normalized string of the selected cards
43646 var normalizedCards = cards.join("").toUpperCase();
43647 // Convert to binary using the SHA256 hash of the normalized cards.
43648 // If the number of bits is more than 256, multiple hashes
43649 // are used until the required number of bits is reached.
43650 var entropyBin = "";
43651 var iterations = 0;
43652 while (entropyBin.length < numberOfBits) {
43653 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
43654 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43655 for (var i=0; i<hashHex.length; i++) {
43656 var decimal = parseInt(hashHex[i], 16);
43657 var binary = decimal.toString(2);
43658 while (binary.length < 4) {
43659 binary = "0" + binary;
43660 }
43661 entropyBin = entropyBin + binary;
43662 }
43663 iterations = iterations + 1;
43664 }
43665 // Truncate to the appropriate number of bits.
43666 entropyBin = entropyBin.substring(0, numberOfBits);
43667 // Get the number of bits per event
43668 bitsPerEvent = maxBits / totalCards;
43669 return {
43670 binaryStr: entropyBin,
43671 bitsPerEvent: bitsPerEvent,
43672 }
43673 }
43674
43675 // Polyfill for Math.log2
43676 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43677 Math.log2 = Math.log2 || function(x) {
43678 // The polyfill isn't good enough because of the poor accuracy of
43679 // Math.LOG2E
43680 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43681 // So instead use the BigInteger library to get it right.
43682 return BigInteger.log(x) / BigInteger.log(2);
43683 };
43684
43685 // Depends on BigInteger
43686 function factorial(n) {
43687 if (n == 0) {
43688 return 1;
43689 }
43690 f = BigInteger.ONE;
43691 for (var i=1; i<=n; i++) {
43692 f = f.multiply(new BigInteger(i));
43693 }
43694 return f;
43695 }
43696
43697 })();
43698 </script>
43699 <script>(function() {
43700
43701 // mnemonics is populated as required by getLanguage
43702 var mnemonics = { "english": new Mnemonic("english") };
43703 var mnemonic = mnemonics["english"];
43704 var seed = null;
43705 var bip32RootKey = null;
43706 var bip32ExtendedKey = null;
43707 var network = bitcoin.networks.bitcoin;
43708 var addressRowTemplate = $("#address-row-template");
43709
43710 var showIndex = true;
43711 var showAddress = true;
43712 var showPubKey = true;
43713 var showPrivKey = true;
43714 var showQr = false;
43715
43716 var entropyChangeTimeoutEvent = null;
43717 var phraseChangeTimeoutEvent = null;
43718 var rootKeyChangedTimeoutEvent = null;
43719
43720 var generationProcesses = [];
43721
43722 var DOM = {};
43723 DOM.network = $(".network");
43724 DOM.bip32Client = $("#bip32-client");
43725 DOM.phraseNetwork = $("#network-phrase");
43726 DOM.useEntropy = $(".use-entropy");
43727 DOM.entropyContainer = $(".entropy-container");
43728 DOM.entropy = $(".entropy");
43729 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43730 DOM.entropyType = DOM.entropyContainer.find(".type");
43731 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
43732 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43733 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43734 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43735 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43736 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43737 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43738 DOM.phrase = $(".phrase");
43739 DOM.passphrase = $(".passphrase");
43740 DOM.generateContainer = $(".generate-container");
43741 DOM.generate = $(".generate");
43742 DOM.seed = $(".seed");
43743 DOM.rootKey = $(".root-key");
43744 DOM.extendedPrivKey = $(".extended-priv-key");
43745 DOM.extendedPubKey = $(".extended-pub-key");
43746 DOM.bip32tab = $("#bip32-tab");
43747 DOM.bip44tab = $("#bip44-tab");
43748 DOM.bip32panel = $("#bip32");
43749 DOM.bip44panel = $("#bip44");
43750 DOM.bip32path = $("#bip32-path");
43751 DOM.bip44path = $("#bip44-path");
43752 DOM.bip44purpose = $("#bip44 .purpose");
43753 DOM.bip44coin = $("#bip44 .coin");
43754 DOM.bip44account = $("#bip44 .account");
43755 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43756 DOM.bip44accountXpub = $("#bip44 .account-xpub");
43757 DOM.bip44change = $("#bip44 .change");
43758 DOM.generatedStrength = $(".generate-container .strength");
43759 DOM.hardenedAddresses = $(".hardened-addresses");
43760 DOM.addresses = $(".addresses");
43761 DOM.rowsToAdd = $(".rows-to-add");
43762 DOM.more = $(".more");
43763 DOM.feedback = $(".feedback");
43764 DOM.tab = $(".derivation-type a");
43765 DOM.indexToggle = $(".index-toggle");
43766 DOM.addressToggle = $(".address-toggle");
43767 DOM.publicKeyToggle = $(".public-key-toggle");
43768 DOM.privateKeyToggle = $(".private-key-toggle");
43769 DOM.languages = $(".languages a");
43770 DOM.qrContainer = $(".qr-container");
43771 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
43772 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43773 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43774 DOM.showQrEls = $("[data-show-qr]");
43775
43776 function init() {
43777 // Events
43778 DOM.network.on("change", networkChanged);
43779 DOM.bip32Client.on("change", bip32ClientChanged);
43780 DOM.useEntropy.on("change", setEntropyVisibility);
43781 DOM.entropy.on("input", delayedEntropyChanged);
43782 DOM.entropyMnemonicLength.on("change", entropyChanged);
43783 DOM.phrase.on("input", delayedPhraseChanged);
43784 DOM.passphrase.on("input", delayedPhraseChanged);
43785 DOM.generate.on("click", generateClicked);
43786 DOM.more.on("click", showMore);
43787 DOM.rootKey.on("input", delayedRootKeyChanged);
43788 DOM.bip32path.on("input", calcForDerivationPath);
43789 DOM.bip44purpose.on("input", calcForDerivationPath);
43790 DOM.bip44coin.on("input", calcForDerivationPath);
43791 DOM.bip44account.on("input", calcForDerivationPath);
43792 DOM.bip44change.on("input", calcForDerivationPath);
43793 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43794 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43795 DOM.indexToggle.on("click", toggleIndexes);
43796 DOM.addressToggle.on("click", toggleAddresses);
43797 DOM.publicKeyToggle.on("click", togglePublicKeys);
43798 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43799 DOM.languages.on("click", languageChanged);
43800 setQrEvents(DOM.showQrEls);
43801 disableForms();
43802 hidePending();
43803 hideValidationError();
43804 populateNetworkSelect();
43805 populateClientSelect();
43806 }
43807
43808 // Event handlers
43809
43810 function networkChanged(e) {
43811 var networkIndex = e.target.value;
43812 networks[networkIndex].onSelect();
43813 if (seed != null) {
43814 phraseChanged();
43815 }
43816 else {
43817 rootKeyChanged();
43818 }
43819 }
43820
43821 function bip32ClientChanged(e) {
43822 var clientIndex = DOM.bip32Client.val();
43823 if (clientIndex == "custom") {
43824 DOM.bip32path.prop("readonly", false);
43825 }
43826 else {
43827 DOM.bip32path.prop("readonly", true);
43828 clients[clientIndex].onSelect();
43829 if (seed != null) {
43830 phraseChanged();
43831 }
43832 else {
43833 rootKeyChanged();
43834 }
43835 }
43836 }
43837
43838 function setEntropyVisibility() {
43839 if (isUsingOwnEntropy()) {
43840 DOM.entropyContainer.removeClass("hidden");
43841 DOM.generateContainer.addClass("hidden");
43842 DOM.phrase.prop("readonly", true);
43843 DOM.entropy.focus();
43844 entropyChanged();
43845 }
43846 else {
43847 DOM.entropyContainer.addClass("hidden");
43848 DOM.generateContainer.removeClass("hidden");
43849 DOM.phrase.prop("readonly", false);
43850 hidePending();
43851 }
43852 }
43853
43854 function delayedPhraseChanged() {
43855 hideValidationError();
43856 showPending();
43857 if (phraseChangeTimeoutEvent != null) {
43858 clearTimeout(phraseChangeTimeoutEvent);
43859 }
43860 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43861 }
43862
43863 function phraseChanged() {
43864 showPending();
43865 hideValidationError();
43866 setMnemonicLanguage();
43867 // Get the mnemonic phrase
43868 var phrase = DOM.phrase.val();
43869 var errorText = findPhraseErrors(phrase);
43870 if (errorText) {
43871 showValidationError(errorText);
43872 return;
43873 }
43874 // Calculate and display
43875 var passphrase = DOM.passphrase.val();
43876 calcBip32RootKeyFromSeed(phrase, passphrase);
43877 calcForDerivationPath();
43878 hidePending();
43879 }
43880
43881 function delayedEntropyChanged() {
43882 hideValidationError();
43883 showPending();
43884 if (entropyChangeTimeoutEvent != null) {
43885 clearTimeout(entropyChangeTimeoutEvent);
43886 }
43887 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43888 }
43889
43890 function entropyChanged() {
43891 // If blank entropy, clear mnemonic, addresses, errors
43892 if (DOM.entropy.val().trim().length == 0) {
43893 clearDisplay();
43894 clearEntropyFeedback();
43895 DOM.phrase.val("");
43896 showValidationError("Blank entropy");
43897 return;
43898 }
43899 // Get the current phrase to detect changes
43900 var phrase = DOM.phrase.val();
43901 // Set the phrase from the entropy
43902 setMnemonicFromEntropy();
43903 // Recalc addresses if the phrase has changed
43904 var newPhrase = DOM.phrase.val();
43905 if (newPhrase != phrase) {
43906 if (newPhrase.length == 0) {
43907 clearDisplay();
43908 }
43909 else {
43910 phraseChanged();
43911 }
43912 }
43913 else {
43914 hidePending();
43915 }
43916 }
43917
43918 function delayedRootKeyChanged() {
43919 // Warn if there is an existing mnemonic or passphrase.
43920 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43921 if (!confirm("This will clear existing mnemonic and passphrase")) {
43922 DOM.rootKey.val(bip32RootKey);
43923 return
43924 }
43925 }
43926 hideValidationError();
43927 showPending();
43928 // Clear existing mnemonic and passphrase
43929 DOM.phrase.val("");
43930 DOM.passphrase.val("");
43931 seed = null;
43932 if (rootKeyChangedTimeoutEvent != null) {
43933 clearTimeout(rootKeyChangedTimeoutEvent);
43934 }
43935 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43936 }
43937
43938 function rootKeyChanged() {
43939 showPending();
43940 hideValidationError();
43941 // Validate the root key TODO
43942 var rootKeyBase58 = DOM.rootKey.val();
43943 var errorText = validateRootKey(rootKeyBase58);
43944 if (errorText) {
43945 showValidationError(errorText);
43946 return;
43947 }
43948 // Calculate and display
43949 calcBip32RootKeyFromBase58(rootKeyBase58);
43950 calcForDerivationPath();
43951 }
43952
43953 function calcForDerivationPath() {
43954 showPending();
43955 clearAddressesList();
43956 hideValidationError();
43957 // Get the derivation path
43958 var derivationPath = getDerivationPath();
43959 var errorText = findDerivationPathErrors(derivationPath);
43960 if (errorText) {
43961 showValidationError(errorText);
43962 return;
43963 }
43964 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
43965 if (bip44TabSelected()) {
43966 displayBip44Info();
43967 }
43968 displayBip32Info();
43969 hidePending();
43970 }
43971
43972 function generateClicked() {
43973 if (isUsingOwnEntropy()) {
43974 return;
43975 }
43976 clearDisplay();
43977 showPending();
43978 setTimeout(function() {
43979 setMnemonicLanguage();
43980 var phrase = generateRandomPhrase();
43981 if (!phrase) {
43982 return;
43983 }
43984 phraseChanged();
43985 }, 50);
43986 }
43987
43988 function languageChanged() {
43989 setTimeout(function() {
43990 setMnemonicLanguage();
43991 if (DOM.phrase.val().length > 0) {
43992 var newPhrase = convertPhraseToNewLanguage();
43993 DOM.phrase.val(newPhrase);
43994 phraseChanged();
43995 }
43996 else {
43997 DOM.generate.trigger("click");
43998 }
43999 }, 50);
44000 }
44001
44002 function toggleIndexes() {
44003 showIndex = !showIndex;
44004 $("td.index span").toggleClass("invisible");
44005 }
44006
44007 function toggleAddresses() {
44008 showAddress = !showAddress;
44009 $("td.address span").toggleClass("invisible");
44010 }
44011
44012 function togglePublicKeys() {
44013 showPubKey = !showPubKey;
44014 $("td.pubkey span").toggleClass("invisible");
44015 }
44016
44017 function togglePrivateKeys() {
44018 showPrivKey = !showPrivKey;
44019 $("td.privkey span").toggleClass("invisible");
44020 }
44021
44022 // Private methods
44023
44024 function generateRandomPhrase() {
44025 if (!hasStrongRandom()) {
44026 var errorText = "This browser does not support strong randomness";
44027 showValidationError(errorText);
44028 return;
44029 }
44030 var numWords = parseInt(DOM.generatedStrength.val());
44031 var strength = numWords / 3 * 32;
44032 var words = mnemonic.generate(strength);
44033 DOM.phrase.val(words);
44034 return words;
44035 }
44036
44037 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44038 seed = mnemonic.toSeed(phrase, passphrase);
44039 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44040 }
44041
44042 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44043 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44044 }
44045
44046 function calcBip32ExtendedKey(path) {
44047 // Check there's a root key to derive from
44048 if (!bip32RootKey) {
44049 return bip32RootKey;
44050 }
44051 var extendedKey = bip32RootKey;
44052 // Derive the key from the path
44053 var pathBits = path.split("/");
44054 for (var i=0; i<pathBits.length; i++) {
44055 var bit = pathBits[i];
44056 var index = parseInt(bit);
44057 if (isNaN(index)) {
44058 continue;
44059 }
44060 var hardened = bit[bit.length-1] == "'";
44061 var isPriv = "privKey" in extendedKey;
44062 var invalidDerivationPath = hardened && !isPriv;
44063 if (invalidDerivationPath) {
44064 extendedKey = null;
44065 }
44066 else if (hardened) {
44067 extendedKey = extendedKey.deriveHardened(index);
44068 }
44069 else {
44070 extendedKey = extendedKey.derive(index);
44071 }
44072 }
44073 return extendedKey
44074 }
44075
44076 function showValidationError(errorText) {
44077 DOM.feedback
44078 .text(errorText)
44079 .show();
44080 }
44081
44082 function hideValidationError() {
44083 DOM.feedback
44084 .text("")
44085 .hide();
44086 }
44087
44088 function findPhraseErrors(phrase) {
44089 // Preprocess the words
44090 phrase = mnemonic.normalizeString(phrase);
44091 var words = phraseToWordArray(phrase);
44092 // Detect blank phrase
44093 if (words.length == 0) {
44094 return "Blank mnemonic";
44095 }
44096 // Check each word
44097 for (var i=0; i<words.length; i++) {
44098 var word = words[i];
44099 var language = getLanguage();
44100 if (WORDLISTS[language].indexOf(word) == -1) {
44101 console.log("Finding closest match to " + word);
44102 var nearestWord = findNearestWord(word);
44103 return word + " not in wordlist, did you mean " + nearestWord + "?";
44104 }
44105 }
44106 // Check the words are valid
44107 var properPhrase = wordArrayToPhrase(words);
44108 var isValid = mnemonic.check(properPhrase);
44109 if (!isValid) {
44110 return "Invalid mnemonic";
44111 }
44112 return false;
44113 }
44114
44115 function validateRootKey(rootKeyBase58) {
44116 try {
44117 bitcoin.HDNode.fromBase58(rootKeyBase58);
44118 }
44119 catch (e) {
44120 return "Invalid root key";
44121 }
44122 return "";
44123 }
44124
44125 function getDerivationPath() {
44126 if (bip44TabSelected()) {
44127 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44128 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44129 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44130 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44131 var path = "m/";
44132 path += purpose + "'/";
44133 path += coin + "'/";
44134 path += account + "'/";
44135 path += change;
44136 DOM.bip44path.val(path);
44137 var derivationPath = DOM.bip44path.val();
44138 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44139 return derivationPath;
44140 }
44141 else if (bip32TabSelected()) {
44142 var derivationPath = DOM.bip32path.val();
44143 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44144 return derivationPath;
44145 }
44146 else {
44147 console.log("Unknown derivation path");
44148 }
44149 }
44150
44151 function findDerivationPathErrors(path) {
44152 // TODO is not perfect but is better than nothing
44153 // Inspired by
44154 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44155 // and
44156 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44157 var maxDepth = 255; // TODO verify this!!
44158 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44159 if (path[0] != "m") {
44160 return "First character must be 'm'";
44161 }
44162 if (path.length > 1) {
44163 if (path[1] != "/") {
44164 return "Separator must be '/'";
44165 }
44166 var indexes = path.split("/");
44167 if (indexes.length > maxDepth) {
44168 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44169 }
44170 for (var depth = 1; depth<indexes.length; depth++) {
44171 var index = indexes[depth];
44172 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44173 if (invalidChars.length > 0) {
44174 return "Invalid characters " + invalidChars + " found at depth " + depth;
44175 }
44176 var indexValue = parseInt(index.replace("'", ""));
44177 if (isNaN(depth)) {
44178 return "Invalid number at depth " + depth;
44179 }
44180 if (indexValue > maxIndexValue) {
44181 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44182 }
44183 }
44184 }
44185 // Check root key exists or else derivation path is useless!
44186 if (!bip32RootKey) {
44187 return "No root key";
44188 }
44189 // Check no hardened derivation path when using xpub keys
44190 var hardened = path.indexOf("'") > -1;
44191 var isXpubkey = !("privKey" in bip32RootKey);
44192 if (hardened && isXpubkey) {
44193 return "Hardened derivation path is invalid with xpub key";
44194 }
44195 return false;
44196 }
44197
44198 function displayBip44Info() {
44199 // Get the derivation path for the account
44200 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44201 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44202 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44203 var path = "m/";
44204 path += purpose + "'/";
44205 path += coin + "'/";
44206 path += account + "'/";
44207 // Calculate the account extended keys
44208 var accountExtendedKey = calcBip32ExtendedKey(path);
44209 var accountXprv = accountExtendedKey.toBase58();
44210 var accountXpub = accountExtendedKey.toBase58(false);
44211 // Display the extended keys
44212 DOM.bip44accountXprv.val(accountXprv);
44213 DOM.bip44accountXpub.val(accountXpub);
44214 }
44215
44216 function displayBip32Info() {
44217 // Display the key
44218 DOM.seed.val(seed);
44219 var rootKey = bip32RootKey.toBase58();
44220 DOM.rootKey.val(rootKey);
44221 var xprvkeyB58 = "NA";
44222 if (bip32ExtendedKey.privKey) {
44223 xprvkeyB58 = bip32ExtendedKey.toBase58();
44224 }
44225 var extendedPrivKey = xprvkeyB58;
44226 DOM.extendedPrivKey.val(extendedPrivKey);
44227 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44228 DOM.extendedPubKey.val(extendedPubKey);
44229 // Display the addresses and privkeys
44230 clearAddressesList();
44231 displayAddresses(0, 20);
44232 }
44233
44234 function displayAddresses(start, total) {
44235 generationProcesses.push(new (function() {
44236
44237 var rows = [];
44238
44239 this.stop = function() {
44240 for (var i=0; i<rows.length; i++) {
44241 rows[i].shouldGenerate = false;
44242 }
44243 }
44244
44245 for (var i=0; i<total; i++) {
44246 var index = i + start;
44247 rows.push(new TableRow(index));
44248 }
44249
44250 })());
44251 }
44252
44253 function TableRow(index) {
44254
44255 var self = this;
44256 this.shouldGenerate = true;
44257 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44258
44259 function init() {
44260 calculateValues();
44261 }
44262
44263 function calculateValues() {
44264 setTimeout(function() {
44265 if (!self.shouldGenerate) {
44266 return;
44267 }
44268 var key = "";
44269 if (useHardenedAddresses) {
44270 key = bip32ExtendedKey.deriveHardened(index);
44271 }
44272 else {
44273 key = bip32ExtendedKey.derive(index);
44274 }
44275 var address = key.getAddress().toString();
44276 var privkey = "NA";
44277 if (key.privKey) {
44278 privkey = key.privKey.toWIF(network);
44279 }
44280 var pubkey = key.pubKey.toHex();
44281 var indexText = getDerivationPath() + "/" + index;
44282 if (useHardenedAddresses) {
44283 indexText = indexText + "'";
44284 }
44285 // Ethereum values are different
44286 if (networks[DOM.network.val()].name == "Ethereum") {
44287 var privKeyBuffer = key.privKey.d.toBuffer();
44288 privkey = privKeyBuffer.toString('hex');
44289 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
44290 var hexAddress = addressBuffer.toString('hex');
44291 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44292 address = ethUtil.addHexPrefix(checksumAddress);
44293 }
44294 // Ripple values are different
44295 if (networks[DOM.network.val()].name == "Ripple") {
44296 privkey = convertRipplePriv(privkey);
44297 address = convertRippleAdrr(address);
44298 }
44299 addAddressToList(indexText, address, pubkey, privkey);
44300 }, 50)
44301 }
44302
44303 init();
44304
44305 }
44306
44307 function showMore() {
44308 var start = DOM.addresses.children().length;
44309 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44310 if (isNaN(rowsToAdd)) {
44311 rowsToAdd = 20;
44312 DOM.rowsToAdd.val("20");
44313 }
44314 if (rowsToAdd > 200) {
44315 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44316 msg += "Do you want to continue?";
44317 if (!confirm(msg)) {
44318 return;
44319 }
44320 }
44321 displayAddresses(start, rowsToAdd);
44322 }
44323
44324 function clearDisplay() {
44325 clearAddressesList();
44326 clearKey();
44327 hideValidationError();
44328 }
44329
44330 function clearAddressesList() {
44331 DOM.addresses.empty();
44332 stopGenerating();
44333 }
44334
44335 function stopGenerating() {
44336 while (generationProcesses.length > 0) {
44337 var generation = generationProcesses.shift();
44338 generation.stop();
44339 }
44340 }
44341
44342 function clearKey() {
44343 DOM.rootKey.val("");
44344 DOM.extendedPrivKey.val("");
44345 DOM.extendedPubKey.val("");
44346 }
44347
44348 function addAddressToList(indexText, address, pubkey, privkey) {
44349 var row = $(addressRowTemplate.html());
44350 // Elements
44351 var indexCell = row.find(".index span");
44352 var addressCell = row.find(".address span");
44353 var pubkeyCell = row.find(".pubkey span");
44354 var privkeyCell = row.find(".privkey span");
44355 // Content
44356 indexCell.text(indexText);
44357 addressCell.text(address);
44358 pubkeyCell.text(pubkey);
44359 privkeyCell.text(privkey);
44360 // Visibility
44361 if (!showIndex) {
44362 indexCell.addClass("invisible");
44363 }
44364 if (!showAddress) {
44365 addressCell.addClass("invisible");
44366 }
44367 if (!showPubKey) {
44368 pubkeyCell.addClass("invisible");
44369 }
44370 if (!showPrivKey) {
44371 privkeyCell.addClass("invisible");
44372 }
44373 DOM.addresses.append(row);
44374 var rowShowQrEls = row.find("[data-show-qr]");
44375 setQrEvents(rowShowQrEls);
44376 }
44377
44378 function hasStrongRandom() {
44379 return 'crypto' in window && window['crypto'] !== null;
44380 }
44381
44382 function disableForms() {
44383 $("form").on("submit", function(e) {
44384 e.preventDefault();
44385 });
44386 }
44387
44388 function parseIntNoNaN(val, defaultVal) {
44389 var v = parseInt(val);
44390 if (isNaN(v)) {
44391 return defaultVal;
44392 }
44393 return v;
44394 }
44395
44396 function showPending() {
44397 DOM.feedback
44398 .text("Calculating...")
44399 .show();
44400 }
44401
44402 function findNearestWord(word) {
44403 var language = getLanguage();
44404 var words = WORDLISTS[language];
44405 var minDistance = 99;
44406 var closestWord = words[0];
44407 for (var i=0; i<words.length; i++) {
44408 var comparedTo = words[i];
44409 if (comparedTo.indexOf(word) == 0) {
44410 return comparedTo;
44411 }
44412 var distance = Levenshtein.get(word, comparedTo);
44413 if (distance < minDistance) {
44414 closestWord = comparedTo;
44415 minDistance = distance;
44416 }
44417 }
44418 return closestWord;
44419 }
44420
44421 function hidePending() {
44422 DOM.feedback
44423 .text("")
44424 .hide();
44425 }
44426
44427 function populateNetworkSelect() {
44428 for (var i=0; i<networks.length; i++) {
44429 var network = networks[i];
44430 var option = $("<option>");
44431 option.attr("value", i);
44432 option.text(network.name);
44433 DOM.phraseNetwork.append(option);
44434 }
44435 }
44436
44437 function populateClientSelect() {
44438 for (var i=0; i<clients.length; i++) {
44439 var client = clients[i];
44440 var option = $("<option>");
44441 option.attr("value", i);
44442 option.text(client.name);
44443 DOM.bip32Client.append(option);
44444 }
44445 }
44446
44447 function getLanguage() {
44448 var defaultLanguage = "english";
44449 // Try to get from existing phrase
44450 var language = getLanguageFromPhrase();
44451 // Try to get from url if not from phrase
44452 if (language.length == 0) {
44453 language = getLanguageFromUrl();
44454 }
44455 // Default to English if no other option
44456 if (language.length == 0) {
44457 language = defaultLanguage;
44458 }
44459 return language;
44460 }
44461
44462 function getLanguageFromPhrase(phrase) {
44463 // Check if how many words from existing phrase match a language.
44464 var language = "";
44465 if (!phrase) {
44466 phrase = DOM.phrase.val();
44467 }
44468 if (phrase.length > 0) {
44469 var words = phraseToWordArray(phrase);
44470 var languageMatches = {};
44471 for (l in WORDLISTS) {
44472 // Track how many words match in this language
44473 languageMatches[l] = 0;
44474 for (var i=0; i<words.length; i++) {
44475 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44476 if (wordInLanguage) {
44477 languageMatches[l]++;
44478 }
44479 }
44480 // Find languages with most word matches.
44481 // This is made difficult due to commonalities between Chinese
44482 // simplified vs traditional.
44483 var mostMatches = 0;
44484 var mostMatchedLanguages = [];
44485 for (var l in languageMatches) {
44486 var numMatches = languageMatches[l];
44487 if (numMatches > mostMatches) {
44488 mostMatches = numMatches;
44489 mostMatchedLanguages = [l];
44490 }
44491 else if (numMatches == mostMatches) {
44492 mostMatchedLanguages.push(l);
44493 }
44494 }
44495 }
44496 if (mostMatchedLanguages.length > 0) {
44497 // Use first language and warn if multiple detected
44498 language = mostMatchedLanguages[0];
44499 if (mostMatchedLanguages.length > 1) {
44500 console.warn("Multiple possible languages");
44501 console.warn(mostMatchedLanguages);
44502 }
44503 }
44504 }
44505 return language;
44506 }
44507
44508 function getLanguageFromUrl() {
44509 for (var language in WORDLISTS) {
44510 if (window.location.hash.indexOf(language) > -1) {
44511 return language;
44512 }
44513 }
44514 return "";
44515 }
44516
44517 function setMnemonicLanguage() {
44518 var language = getLanguage();
44519 // Load the bip39 mnemonic generator for this language if required
44520 if (!(language in mnemonics)) {
44521 mnemonics[language] = new Mnemonic(language);
44522 }
44523 mnemonic = mnemonics[language];
44524 }
44525
44526 function convertPhraseToNewLanguage() {
44527 var oldLanguage = getLanguageFromPhrase();
44528 var newLanguage = getLanguageFromUrl();
44529 var oldPhrase = DOM.phrase.val();
44530 var oldWords = phraseToWordArray(oldPhrase);
44531 var newWords = [];
44532 for (var i=0; i<oldWords.length; i++) {
44533 var oldWord = oldWords[i];
44534 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44535 var newWord = WORDLISTS[newLanguage][index];
44536 newWords.push(newWord);
44537 }
44538 newPhrase = wordArrayToPhrase(newWords);
44539 return newPhrase;
44540 }
44541
44542 // TODO look at jsbip39 - mnemonic.splitWords
44543 function phraseToWordArray(phrase) {
44544 var words = phrase.split(/\s/g);
44545 var noBlanks = [];
44546 for (var i=0; i<words.length; i++) {
44547 var word = words[i];
44548 if (word.length > 0) {
44549 noBlanks.push(word);
44550 }
44551 }
44552 return noBlanks;
44553 }
44554
44555 // TODO look at jsbip39 - mnemonic.joinWords
44556 function wordArrayToPhrase(words) {
44557 var phrase = words.join(" ");
44558 var language = getLanguageFromPhrase(phrase);
44559 if (language == "japanese") {
44560 phrase = words.join("\u3000");
44561 }
44562 return phrase;
44563 }
44564
44565 function isUsingOwnEntropy() {
44566 return DOM.useEntropy.prop("checked");
44567 }
44568
44569 function setMnemonicFromEntropy() {
44570 clearEntropyFeedback();
44571 // Get entropy value
44572 var entropyStr = DOM.entropy.val();
44573 // Work out minimum base for entropy
44574 var entropy = Entropy.fromString(entropyStr);
44575 if (entropy.binaryStr.length == 0) {
44576 return;
44577 }
44578 // Show entropy details
44579 showEntropyFeedback(entropy);
44580 // Use entropy hash if not using raw entropy
44581 var bits = entropy.binaryStr;
44582 var mnemonicLength = DOM.entropyMnemonicLength.val();
44583 if (mnemonicLength != "raw") {
44584 // Get bits by hashing entropy with SHA256
44585 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44586 var hex = sjcl.codec.hex.fromBits(hash);
44587 bits = BigInteger.parse(hex, 16).toString(2);
44588 while (bits.length % 256 != 0) {
44589 bits = "0" + bits;
44590 }
44591 // Truncate hash to suit number of words
44592 mnemonicLength = parseInt(mnemonicLength);
44593 var numberOfBits = 32 * mnemonicLength / 3;
44594 bits = bits.substring(0, numberOfBits);
44595 }
44596 // Discard trailing entropy
44597 var bitsToUse = Math.floor(bits.length / 32) * 32;
44598 var start = bits.length - bitsToUse;
44599 var binaryStr = bits.substring(start);
44600 // Convert entropy string to numeric array
44601 var entropyArr = [];
44602 for (var i=0; i<binaryStr.length / 8; i++) {
44603 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44604 var entropyByte = parseInt(byteAsBits, 2);
44605 entropyArr.push(entropyByte)
44606 }
44607 // Convert entropy array to mnemonic
44608 var phrase = mnemonic.toMnemonic(entropyArr);
44609 // Set the mnemonic in the UI
44610 DOM.phrase.val(phrase);
44611 }
44612
44613 function clearEntropyFeedback() {
44614 DOM.entropyStrength.text("...");
44615 DOM.entropyType.text("");
44616 DOM.entropyWordCount.text("0");
44617 DOM.entropyEventCount.text("0");
44618 DOM.entropyBitsPerEvent.text("0");
44619 DOM.entropyBits.text("0");
44620 DOM.entropyFiltered.html("&nbsp;");
44621 DOM.entropyBinary.html("&nbsp;");
44622 }
44623
44624 function showEntropyFeedback(entropy) {
44625 var numberOfBits = entropy.binaryStr.length;
44626 var strength = "extremely weak";
44627 if (numberOfBits >= 64) {
44628 strength = "very weak";
44629 }
44630 if (numberOfBits >= 96) {
44631 strength = "weak";
44632 }
44633 if (numberOfBits >= 128) {
44634 strength = "strong";
44635 }
44636 if (numberOfBits >= 160) {
44637 strength = "very strong";
44638 }
44639 if (numberOfBits >= 192) {
44640 strength = "extremely strong";
44641 }
44642 // If time to crack is less than one day, and password is considered
44643 // strong or better based on the number of bits, rename strength to
44644 // 'easily cracked'.
44645 try {
44646 var z = zxcvbn(entropy.base.parts.join(""));
44647 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
44648 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
44649 strength = "easily cracked";
44650 if (z.feedback.warning != "") {
44651 strength = strength + " - " + z.feedback.warning;
44652 };
44653 }
44654 }
44655 catch (e) {
44656 strength = "unknown";
44657 console.log("Error detecting entropy strength with zxcvbn:");
44658 console.log(e);
44659 }
44660 var entropyTypeStr = getEntropyTypeStr(entropy);
44661 var wordCount = Math.floor(numberOfBits / 32) * 3;
44662 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
44663 DOM.entropyFiltered.html(entropy.cleanHtml);
44664 DOM.entropyType.text(entropyTypeStr);
44665 DOM.entropyStrength.text(strength);
44666 DOM.entropyEventCount.text(entropy.base.ints.length);
44667 DOM.entropyBits.text(numberOfBits);
44668 DOM.entropyWordCount.text(wordCount);
44669 DOM.entropyBinary.text(entropy.binaryStr);
44670 DOM.entropyBitsPerEvent.text(bitsPerEvent);
44671 }
44672
44673 function getEntropyTypeStr(entropy) {
44674 var typeStr = entropy.base.str;
44675 // Add some detail if these are cards
44676 if (entropy.base.asInt == 52) {
44677 var cardDetail = []; // array of message strings
44678 // Detect duplicates
44679 var dupes = [];
44680 var dupeTracker = {};
44681 for (var i=0; i<entropy.base.parts.length; i++) {
44682 var card = entropy.base.parts[i];
44683 var cardUpper = card.toUpperCase();
44684 if (cardUpper in dupeTracker) {
44685 dupes.push(card);
44686 }
44687 dupeTracker[cardUpper] = true;
44688 }
44689 if (dupes.length > 0) {
44690 var dupeWord = "duplicates";
44691 if (dupes.length == 1) {
44692 dupeWord = "duplicate";
44693 }
44694 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44695 if (dupes.length > 3) {
44696 msg += "...";
44697 }
44698 cardDetail.push(msg);
44699 }
44700 // Detect full deck
44701 var uniqueCards = [];
44702 for (var uniqueCard in dupeTracker) {
44703 uniqueCards.push(uniqueCard);
44704 }
44705 if (uniqueCards.length == 52) {
44706 cardDetail.unshift("full deck");
44707 }
44708 // Detect missing cards
44709 var values = "A23456789TJQK";
44710 var suits = "CDHS";
44711 var missingCards = [];
44712 for (var i=0; i<suits.length; i++) {
44713 for (var j=0; j<values.length; j++) {
44714 var card = values[j] + suits[i];
44715 if (!(card in dupeTracker)) {
44716 missingCards.push(card);
44717 }
44718 }
44719 }
44720 // Display missing cards if six or less, ie clearly going for full deck
44721 if (missingCards.length > 0 && missingCards.length <= 6) {
44722 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44723 if (missingCards.length > 3) {
44724 msg += "...";
44725 }
44726 cardDetail.push(msg);
44727 }
44728 // Add card details to typeStr
44729 if (cardDetail.length > 0) {
44730 typeStr += " (" + cardDetail.join(", ") + ")";
44731 }
44732 }
44733 return typeStr;
44734 }
44735
44736 function setQrEvents(els) {
44737 els.on("mouseenter", createQr);
44738 els.on("mouseleave", destroyQr);
44739 els.on("click", toggleQr);
44740 }
44741
44742 function createQr(e) {
44743 var content = e.target.textContent || e.target.value;
44744 if (content) {
44745 var size = 130;
44746 DOM.qrImage.qrcode({width: size, height: size, text: content});
44747 if (!showQr) {
44748 DOM.qrHider.addClass("hidden");
44749 }
44750 else {
44751 DOM.qrHider.removeClass("hidden");
44752 }
44753 DOM.qrContainer.removeClass("hidden");
44754 }
44755 }
44756
44757 function destroyQr() {
44758 DOM.qrImage.text("");
44759 DOM.qrContainer.addClass("hidden");
44760 }
44761
44762 function toggleQr() {
44763 showQr = !showQr;
44764 DOM.qrHider.toggleClass("hidden");
44765 DOM.qrHint.toggleClass("hidden");
44766 }
44767
44768 function bip44TabSelected() {
44769 return DOM.bip44tab.hasClass("active");
44770 }
44771
44772 function bip32TabSelected() {
44773 return DOM.bip32tab.hasClass("active");
44774 }
44775
44776 var networks = [
44777 {
44778 name: "Bitcoin",
44779 onSelect: function() {
44780 network = bitcoin.networks.bitcoin;
44781 DOM.bip44coin.val(0);
44782 },
44783 },
44784 {
44785 name: "Bitcoin Testnet",
44786 onSelect: function() {
44787 network = bitcoin.networks.testnet;
44788 DOM.bip44coin.val(1);
44789 },
44790 },
44791 {
44792 name: "CLAM",
44793 onSelect: function() {
44794 network = bitcoin.networks.clam;
44795 DOM.bip44coin.val(23);
44796 },
44797 },
44798 {
44799 name: "Dogecoin",
44800 onSelect: function() {
44801 network = bitcoin.networks.dogecoin;
44802 DOM.bip44coin.val(3);
44803 },
44804 },
44805 {
44806 name: "DASH",
44807 onSelect: function() {
44808 network = bitcoin.networks.dash;
44809 DOM.bip44coin.val(5);
44810 },
44811 },
44812 {
44813 name: "Ethereum",
44814 onSelect: function() {
44815 network = bitcoin.networks.bitcoin;
44816 DOM.bip44coin.val(60);
44817 },
44818 },
44819 {
44820 name: "GAME",
44821 onSelect: function() {
44822 network = bitcoin.networks.game;
44823 DOM.bip44coin.val(101);
44824 },
44825 },
44826 {
44827 name: "Jumbucks",
44828 onSelect: function() {
44829 network = bitcoin.networks.jumbucks;
44830 DOM.bip44coin.val(26);
44831 },
44832 },
44833 {
44834 name: "Litecoin",
44835 onSelect: function() {
44836 network = bitcoin.networks.litecoin;
44837 DOM.bip44coin.val(2);
44838 },
44839 },
44840 {
44841 name: "Namecoin",
44842 onSelect: function() {
44843 network = bitcoin.networks.namecoin;
44844 DOM.bip44coin.val(7);
44845 },
44846 },
44847 {
44848 name: "Peercoin",
44849 onSelect: function() {
44850 network = bitcoin.networks.peercoin;
44851 DOM.bip44coin.val(6);
44852 },
44853 },
44854 {
44855 name: "Ripple",
44856 onSelect: function() {
44857 network = bitcoin.networks.bitcoin;
44858 DOM.bip44coin.val(144);
44859 },
44860 },
44861 {
44862 name: "ShadowCash",
44863 onSelect: function() {
44864 network = bitcoin.networks.shadow;
44865 DOM.bip44coin.val(35);
44866 },
44867 },
44868 {
44869 name: "ShadowCash Testnet",
44870 onSelect: function() {
44871 network = bitcoin.networks.shadowtn;
44872 DOM.bip44coin.val(1);
44873 },
44874 },
44875 {
44876 name: "Viacoin",
44877 onSelect: function() {
44878 network = bitcoin.networks.viacoin;
44879 DOM.bip44coin.val(14);
44880 },
44881 },
44882 {
44883 name: "Viacoin Testnet",
44884 onSelect: function() {
44885 network = bitcoin.networks.viacointestnet;
44886 DOM.bip44coin.val(1);
44887 },
44888 },
44889 ]
44890
44891 var clients = [
44892 {
44893 name: "Bitcoin Core",
44894 onSelect: function() {
44895 DOM.bip32path.val("m/0'/0'");
44896 DOM.hardenedAddresses.prop('checked', true);
44897 },
44898 },
44899 {
44900 name: "blockchain.info",
44901 onSelect: function() {
44902 DOM.bip32path.val("m/44'/0'/0'");
44903 DOM.hardenedAddresses.prop('checked', false);
44904 },
44905 },
44906 {
44907 name: "MultiBit HD",
44908 onSelect: function() {
44909 DOM.bip32path.val("m/0'/0");
44910 DOM.hardenedAddresses.prop('checked', false);
44911 },
44912 }
44913 ]
44914
44915 init();
44916
44917 })();
44918 </script>
44919 </body>
44920 </html>