]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
d3a8d339f6f7ae3bbfb570b0f617a9320edea910
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.1.1</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 </form>
274 </div>
275 </div>
276
277 <hr>
278
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
283 <li id="bip44-tab" class="active">
284 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
285 </li>
286 <li id="bip32-tab">
287 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
288 </li>
289 </ul>
290 <div class="derivation-type tab-content">
291 <div id="bip44" class="tab-pane active">
292 <form class="form-horizontal" role="form">
293 <br>
294 <div class="col-sm-2"></div>
295 <div class="col-sm-10">
296 <p data-translate-html>
297 For more info see the
298 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
299 </p>
300 </div>
301 <div class="form-group">
302 <label for="purpose" class="col-sm-2 control-label">
303 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
304 </label>
305 <div class="col-sm-10">
306 <input id="purpose" type="text" class="purpose form-control" value="44">
307 </div>
308 </div>
309 <div class="form-group">
310 <label for="coin" class="col-sm-2 control-label">
311 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
312 </label>
313 <div class="col-sm-10">
314 <input id="coin" type="text" class="coin form-control" value="0">
315 </div>
316 </div>
317 <div class="form-group">
318 <label for="account" class="col-sm-2 control-label">
319 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
320 </label>
321 <div class="col-sm-10">
322 <input id="account" type="text" class="account form-control" value="0">
323 </div>
324 </div>
325 <div class="form-group">
326 <label for="change" class="col-sm-2 control-label">
327 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
328 </label>
329 <div class="col-sm-10">
330 <input id="change" type="text" class="change form-control" value="0">
331 </div>
332 </div>
333 <div class="form-group">
334 <label class="col-sm-2 control-label">
335 </label>
336 <div class="col-sm-10">
337 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
338 </div>
339 </div>
340 <div class="form-group">
341 <label for="account-xprv" class="col-sm-2 control-label">
342 <span data-translate>Account Extended Private Key</span>
343 </label>
344 <div class="col-sm-10">
345 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
346 </div>
347 </div>
348 <div class="form-group">
349 <label for="account-xpub" class="col-sm-2 control-label">
350 <span data-translate>Account Extended Public Key</span>
351 </label>
352 <div class="col-sm-10">
353 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
354 </div>
355 </div>
356 <div class="form-group">
357 <label class="col-sm-2 control-label">
358 </label>
359 <div class="col-sm-10">
360 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
361 </div>
362 </div>
363 <div class="form-group">
364 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
365 <div class="col-sm-10">
366 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
367 </div>
368 </div>
369 </form>
370 </div>
371 <div id="bip32" class="tab-pane">
372 <form class="form-horizontal" role="form">
373 <br>
374 <div class="col-sm-2"></div>
375 <div class="col-sm-10">
376 <p data-translate>
377 For more info see the
378 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
379 </p>
380 </div>
381 <div class="form-group">
382 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
383 <div class="col-sm-10">
384 <select id="bip32-client" class="client form-control">
385 <option value="custom">Custom derivation path</option>
386 <!-- populated by javascript -->
387 </select>
388 </div>
389 </div>
390 <div class="form-group">
391 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
392 <div class="col-sm-10">
393 <input id="bip32-path" type="text" class="path form-control" value="m/0">
394 </div>
395 </div>
396 <div class="form-group">
397 <div class="col-sm-2"></div>
398 <label class="col-sm-10">
399 <input class="hardened-addresses" type="checkbox">
400 <span data-translate>Use hardened addresses</span>
401 </label>
402 </div>
403 <div class="form-group">
404 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
405 <div class="col-sm-10">
406 <p class="form-control no-border" data-translate-html>
407 Use path <code>m/0'/0'</code> with hardened addresses.
408 </p>
409 <p class="form-control no-border" data-translate-html>
410 For more info see the
411 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
412 </p>
413 </div>
414 </div>
415 <div class="form-group">
416 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
417 <div class="col-sm-10">
418 <p class="form-control no-border">
419 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
420 </p>
421 <p class="form-control no-border">
422 <span data-translate>For more info see</span>
423 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
424 </p>
425 </div>
426 </div>
427 <div class="form-group">
428 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
429 <div class="col-sm-10">
430 <p class="form-control no-border">
431 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
432 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
433 </p>
434 <p class="form-control no-border">
435 <span data-translate>Can be used with</span>:
436 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
437 </p>
438 </div>
439 </div>
440 </form>
441 </div>
442 </div>
443 <form class="form-horizontal" role="form">
444 <div class="form-group">
445 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
446 <div class="col-sm-10">
447 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
448 </div>
449 </div>
450 <div class="form-group">
451 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
452 <div class="col-sm-10">
453 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
454 </div>
455 </div>
456 </form>
457 </div>
458 </div>
459
460 <hr>
461
462 <div class="row">
463 <div class="col-md-12">
464 <h2>Derived Addresses</h2>
465 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
466 <table class="table table-striped">
467 <thead>
468 <th>
469 <div class="input-group">
470 <span data-translate>Path</span>&nbsp;&nbsp;
471 <button class="index-toggle" data-translate>Toggle</button>
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
476 <span data-translate>Address</span>&nbsp;&nbsp;
477 <button class="address-toggle" data-translate>Toggle</button>
478 </div>
479 </th>
480 <th>
481 <div class="input-group">
482 <span data-translate>Public Key</span>&nbsp;&nbsp;
483 <button class="public-key-toggle" data-translate>Toggle</button>
484 </div>
485 </th>
486 <th>
487 <div class="input-group">
488 <span data-translate>Private Key</span>&nbsp;&nbsp;
489 <button class="private-key-toggle" data-translate>Toggle</button>
490 </div>
491 </th>
492 </thead>
493 <tbody class="addresses monospace">
494 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
495 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
496 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
497 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
498 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
499 </tbody>
500 </table>
501 </div>
502 </div>
503 <span data-translate>Show more rows</span>:
504 <input type="number" class="rows-to-add" value="20">
505 <button class="more" data-translate>Show</button>
506
507 <hr>
508
509 <div class="row">
510 <div class="col-md-12">
511 <h2 data-translate>More info</h2>
512 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
513 <p data-translate-html>
514 Read more at the
515 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
516 </p>
517 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
518 <p data-translate-html>
519 Read more at the
520 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
521 </p>
522 <p data-translate-html>
523 See the demo at
524 <a href="http://bip32.org/" target="_blank">bip32.org</a>
525 </p>
526 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
527 <p data-translate-html>
528 Read more at the
529 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
530 </p>
531 <h3 data-translate>Private Keys</h3>
532 <p>
533 <span data-translate-html>
534 Use private keys at
535 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
536 </span>
537 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
538 </p>
539 <h3 id="entropy-notes" data-translate>Entropy</h3>
540 <p>
541 <span data-translate-html>
542 Entropy values must be sourced from a
543 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
544 </span>
545 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
546 <span data-translate-html>
547 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
548 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
549 random enough for the needs of this tool.
550 </span>
551 </p>
552 <p>
553 <strong><span data-translate>Do not store entropy.</span></strong>
554 </p>
555 <p>
556 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
557 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
558 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
559 </p>
560 <p>
561 <span data-translate-html>
562 The random mnemonic generator on this page uses a
563 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
564 </span>
565 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
566 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
567 <span data-translate>In that case you might choose to use your own source of entropy.</span>
568 </p>
569 <p>
570 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
571 </p>
572 <h3 data-translate>License</h3>
573 <p>
574 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
575 </span>
576 </p>
577 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
578 </div>
579 </div>
580
581 <hr>
582
583 <div class="row">
584 <div class="col-md-12">
585
586 <h2 data-translate>Offline Usage</h2>
587
588 <p data-translate>
589 You can use this tool without having to be online.
590 </p>
591 <p data-translate>
592 In your browser, select file save-as, and save this page
593 as a file.
594 </p>
595 <p data-translate>
596 Double-click that file to open it in a browser
597 on any offline computer.
598 </p>
599 <p>
600 <span data-translate>Alternatively, download the file from the repository</span>
601 -
602 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
603 </p>
604
605 </div>
606 </div>
607
608 <hr>
609
610 <div class="row">
611 <div class="col-md-12">
612
613 <h2 data-translate>This project is 100% open-source code</h2>
614
615 <p>
616 <span data-translate>Get the source code from the repository</span>
617 -
618 <a href="https://github.com/iancoleman/bip39" target="_blank">
619 https://github.com/iancoleman/bip39
620 </a>
621 </p>
622
623 <h3 data-translate>Libraries</h3>
624
625 <p>
626 <span>BitcoinJS - </span>
627 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
628 https://github.com/bitcoinjs/bitcoinjs-lib
629 </a>
630 </p>
631
632 <p>
633 <span>jsBIP39 - </span>
634 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
635 https://github.com/iancoleman/jsbip39
636 </a>
637 </p>
638
639 <p>
640 <span>sjcl - </span>
641 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
642 https://github.com/bitwiseshiftleft/sjcl
643 </a>
644 </p>
645
646 <p>
647 <span>jQuery - </span>
648 <a href="https://jquery.com/" target="_blank">
649 https://jquery.com/
650 </a>
651 </p>
652
653 <p>
654 <span>Twitter Bootstrap - </span>
655 <a href="http://getbootstrap.com/" target="_blank">
656 http://getbootstrap.com/
657 </a>
658 </p>
659
660 </div>
661 </div>
662
663 </div>
664
665 <div class="qr-container hidden">
666 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
667 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
668 <div class="qr-hider hidden">
669 <div class="qr-image"></div>
670 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
671 </div>
672 </div>
673
674 <div class="feedback-container">
675 <div class="feedback">Loading...</div>
676 </div>
677
678 <script type="text/template" id="address-row-template">
679 <tr>
680 <td class="index"><span></span></td>
681 <td class="address"><span data-show-qr></span></td>
682 <td class="pubkey"><span data-show-qr></span></td>
683 <td class="privkey"><span data-show-qr></span></td>
684 </tr>
685 </script>
686 <script>// From
687 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
688 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
689 // but is not required in any modern browsers.
690 // For more information, see
691 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
692
693 //----------------------------------------------------------------------
694 //
695 // ECMAScript 2015 Polyfills
696 //
697 //----------------------------------------------------------------------
698
699 (function (global) {
700 "use strict";
701
702 // Set this to always override native implementations, for testing
703 // the polyfill in browsers with partial/full ES2015 support.
704 var OVERRIDE_NATIVE_FOR_TESTING = false;
705
706 var undefined = (void 0); // Paranoia
707
708 // Helpers
709
710 function strict(o) {
711 return o === global ? undefined : o;
712 }
713
714 function hook(o, p, f) {
715 var op = o[p];
716 console.assert(typeof op === 'function', 'Hooking a non-function');
717 o[p] = function() {
718 var o = strict(this);
719 var r = f.apply(o, arguments);
720 return r !== undefined ? r : op.apply(o, arguments);
721 };
722 }
723
724 function isSymbol(s) {
725 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
726 }
727
728 function getPropertyDescriptor(target, name) {
729 var desc = Object.getOwnPropertyDescriptor(target, name);
730 var proto = Object.getPrototypeOf(target);
731 while (!desc && proto) {
732 desc = Object.getOwnPropertyDescriptor(proto, name);
733 proto = Object.getPrototypeOf(proto);
734 }
735 return desc;
736 }
737
738 var enqueue = (function(nativePromise, nativeSetImmediate) {
739 if (nativePromise)
740 return function(job) { nativePromise.resolve().then(function() { job(); }); };
741 if (nativeSetImmediate)
742 return function(job) { nativeSetImmediate(job); };
743 return function(job) { setTimeout(job, 0); };
744 }(global['Promise'], global['setImmediate']));
745
746 function define(o, p, v, override) {
747 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
748 return;
749
750 if (typeof v === 'function') {
751 // Sanity check that functions are appropriately named (where possible)
752 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
753 Object.defineProperty(o, p, {
754 value: v,
755 configurable: true,
756 enumerable: false,
757 writable: true
758 });
759 } else {
760 Object.defineProperty(o, p, {
761 value: v,
762 configurable: false,
763 enumerable: false,
764 writable: false
765 });
766 }
767 }
768
769 function set_internal(o, p, v) {
770 Object.defineProperty(o, p, {
771 value: v,
772 configurable: false,
773 enumerable: false,
774 writable: true
775 });
776 }
777
778 // Snapshot intrinsic functions
779 var $isNaN = global.isNaN,
780 $parseInt = global.parseInt,
781 $parseFloat = global.parseFloat;
782
783 var E = Math.E,
784 LOG10E = Math.LOG10E,
785 LOG2E = Math.LOG2E,
786 abs = Math.abs,
787 ceil = Math.ceil,
788 exp = Math.exp,
789 floor = Math.floor,
790 log = Math.log,
791 max = Math.max,
792 min = Math.min,
793 pow = Math.pow,
794 random = Math.random,
795 sqrt = Math.sqrt;
796
797 var orig_match = String.prototype.match,
798 orig_replace = String.prototype.replace,
799 orig_search = String.prototype.search,
800 orig_split = String.prototype.split;
801
802 // These are used for implementing the polyfills, but not exported.
803
804 // Inspired by https://gist.github.com/1638059
805 /** @constructor */
806 function EphemeronTable() {
807 var secretKey = ObjectCreate(null);
808
809 function conceal(o) {
810 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
811 Object.defineProperty(o, 'valueOf', {
812 value: (function(secretKey) {
813 return function (k) {
814 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
815 };
816 }(secretKey)),
817 configurable: true,
818 writeable: true,
819 enumerable: false
820 });
821 return secrets;
822 }
823
824 function reveal(o) {
825 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
826 return v === o ? null : v;
827 }
828
829 return {
830 clear: function() {
831 secretKey = ObjectCreate(null);
832 },
833 remove: function(key) {
834 var secrets = reveal(key);
835 if (secrets && HasOwnProperty(secrets, 'value')) {
836 delete secrets.value;
837 return true;
838 }
839 return false;
840 },
841 get: function(key, defaultValue) {
842 var secrets = reveal(key);
843 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
844 },
845 has: function(key) {
846 var secrets = reveal(key);
847 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
848 },
849 set: function(key, value) {
850 var secrets = reveal(key) || conceal(key);
851 secrets.value = value;
852 }
853 };
854 }
855
856 var empty = Object.create(null);
857
858 //----------------------------------------------------------------------
859 //
860 // ECMAScript 2015
861 // http://www.ecma-international.org/ecma-262/6.0/
862 //
863 //----------------------------------------------------------------------
864
865 // ---------------------------------------
866 // 19.4 Symbol Objects
867 // ---------------------------------------
868
869 // NOTE: Symbols are defined here - out of spec order - since we need the
870 // properties and prototype to be populated for other polyfills.
871
872 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
873
874 var symbolForKey;
875 (function() {
876 var secret = Object.create(null);
877 var symbolMap = {};
878 symbolForKey = function(k) {
879 return symbolMap[k];
880 };
881
882 var GlobalSymbolRegistry = [];
883
884 function unique(bits) {
885 return Array(bits + 1).join('x').replace(/x/g, function() {
886 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
887 });
888 }
889
890 // 19.4.1 The Symbol Constructor
891 // 19.4.1.1 Symbol ( description=undefined )
892 function Symbol(description) {
893 if (!(this instanceof Symbol)) return new Symbol(description, secret);
894 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
895
896 var descString = description === undefined ? undefined : String(description);
897
898 set_internal(this, '[[SymbolData]]', unique(128));
899 set_internal(this, '[[Description]]', descString);
900
901 symbolMap[this] = this;
902 return this;
903 }
904
905 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
906 global.Symbol = Symbol;
907
908 // 19.4.2 Properties of the Symbol Constructor
909
910 // 19.4.2.1 Symbol.for (key)
911 define(Symbol, 'for', function for_(key) {
912 var stringKey = String(key);
913 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
914 var e = GlobalSymbolRegistry[i];
915 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
916 }
917 var newSymbol = Symbol(key);
918 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
919 return newSymbol;
920 });
921
922 // 19.4.2.2 Symbol.hasInstance
923 // 19.4.2.3 Symbol.isConcatSpreadable
924
925 // 19.4.2.4 Symbol.iterator
926 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
927
928 // 19.4.2.5 Symbol.keyFor (sym)
929 define(Symbol, 'keyFor', function keyFor(sym) {
930 if (!(sym instanceof Symbol)) throw TypeError();
931 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
932 var e = GlobalSymbolRegistry[i];
933 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
934 }
935 return undefined;
936 });
937
938 // 19.4.2.6 Symbol.match
939 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
940
941 // 19.4.2.7 Symbol.prototype
942
943 // 19.4.2.8 Symbol.replace
944 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
945
946 // 19.4.2.9 Symbol.search
947 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
948
949 // 19.4.2.10 Symbol.species
950
951 // 19.4.2.11 Symbol.search
952 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
953
954 // 19.4.2.12 Symbol.toPrimitive
955
956 // 19.4.2.13 Symbol.toStringTag
957 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
958
959 // 19.4.2.14 Symbol.unscopables
960
961 // 19.4.3 Properties of the Symbol Prototype Object
962 // 19.4.3.1 Symbol.prototype.constructor
963
964 // 19.4.3.2 Symbol.prototype.toString ( )
965 Object.defineProperty(Symbol.prototype, 'toString', {
966 value: function toString() {
967 var s = strict(this);
968 var desc = s['[[Description]]'];
969 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
970 },
971 configurable: true, writeable: true, enumerable: false });
972
973 // 19.4.3.3 Symbol.prototype.valueOf ( )
974 Object.defineProperty(Symbol.prototype, 'valueOf', {
975 value: function valueOf() {
976 // To prevent automatic string conversion:
977 throw TypeError();
978
979 // Spec has approximately the following:
980 //var s = strict(this);
981 //if (Type(s) === 'symbol') return s;
982 //if (Type(s) !== 'object') throw TypeError();
983 //if (!('[[SymbolData]]' in s)) throw TypeError();
984 //return s['[[SymbolData]]'];
985 },
986 configurable: true, writeable: true, enumerable: false });
987
988 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
989 // (Done later to polyfill partial implementations)
990
991 // 19.4.4 Properties of Symbol Instances
992 }());
993
994 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
995
996 // Defined here so that other prototypes can reference it
997 // 25.1.2 The %IteratorPrototype% Object
998 var $IteratorPrototype$ = {};
999
1000 //----------------------------------------
1001 // 6 ECMAScript Data Types and Values
1002 //----------------------------------------
1003
1004 // 6.1 ECMAScript Language Types
1005
1006 // "Type(x)" is used as shorthand for "the type of x"...
1007 function Type(v) {
1008 switch (typeof v) {
1009 case 'undefined': return 'undefined';
1010 case 'boolean': return 'boolean';
1011 case 'number': return 'number';
1012 case 'string': return 'string';
1013 case 'symbol': return 'symbol';
1014 default:
1015 if (v === null) return 'null';
1016 if (v instanceof global.Symbol) return 'symbol';
1017 return 'object';
1018 }
1019 }
1020
1021 // 6.1.5.1 Well-Known Symbols
1022 var $$iterator = global.Symbol.iterator,
1023 $$match = global.Symbol.match,
1024 $$replace = global.Symbol.replace,
1025 $$search = global.Symbol.search,
1026 $$split = global.Symbol.split,
1027 $$toStringTag = global.Symbol.toStringTag;
1028
1029 //----------------------------------------
1030 // 7 Abstract Operations
1031 //----------------------------------------
1032
1033 //----------------------------------------
1034 // 7.1 Type Conversion
1035 //----------------------------------------
1036
1037 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1038 // just use valueOf()
1039
1040 // 7.1.2 ToBoolean ( argument )
1041 // just use Boolean()
1042
1043 // 7.1.3 ToNumber ( argument )
1044 // just use Number()
1045
1046 // 7.1.4 ToInteger ( argument )
1047 function ToInteger(n) {
1048 n = Number(n);
1049 if ($isNaN(n)) return 0;
1050 if (n === 0 || n === Infinity || n === -Infinity) return n;
1051 return ((n < 0) ? -1 : 1) * floor(abs(n));
1052 }
1053
1054 // 7.1.5 ToInt32 ( argument )
1055 function ToInt32(v) { return v >> 0; }
1056
1057 // 7.1.6 ToUint32 ( argument )
1058 function ToUint32(v) { return v >>> 0; }
1059
1060 // 7.1.7 ToInt16 ( argument )
1061 function ToInt16(v) { return (v << 16) >> 16; }
1062
1063 // 7.1.8 ToUint16 ( argument )
1064 function ToUint16(v) { return v & 0xFFFF; }
1065
1066 // 7.1.9 ToInt8 ( argument )
1067 function ToInt8(v) { return (v << 24) >> 24; }
1068
1069 // 7.1.10 ToUint8 ( argument )
1070 function ToUint8(v) { return v & 0xFF; }
1071
1072 // 7.1.11 ToUint8Clamp ( argument )
1073 function ToUint8Clamp(argument) {
1074 var number = Number(argument);
1075 if ($isNaN(number)) return 0;
1076 if (number <= 0) return 0;
1077 if (number >= 255) return 255;
1078 var f = floor(number);
1079 if ((f + 0.5) < number) return f + 1;
1080 if (number < (f + 0.5)) return f;
1081 if (f % 2) return f + 1;
1082 return f;
1083 }
1084
1085 // 7.1.12 ToString ( argument )
1086 // just use String()
1087
1088 // 7.1.13 ToObject ( argument )
1089 function ToObject(v) {
1090 if (v === null || v === undefined) throw TypeError();
1091 return Object(v);
1092 }
1093
1094 // 7.1.14 ToPropertyKey ( argument )
1095 function ToPropertyKey(v) {
1096 return String(v);
1097 }
1098
1099 // 7.1.15 ToLength ( argument )
1100 function ToLength(v) {
1101 var len = ToInteger(v);
1102 if (len <= 0) return 0;
1103 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1104 return min(len, 0x20000000000000 - 1); // 2^53-1
1105 }
1106
1107 // 7.1.16 CanonicalNumericIndexString ( argument )
1108
1109 //----------------------------------------
1110 // 7.2 Testing and Comparison Operations
1111 //----------------------------------------
1112
1113 // 7.2.1 RequireObjectCoercible ( argument )
1114 // 7.2.2 IsArray ( argument )
1115
1116 // 7.2.3 IsCallable ( argument )
1117 function IsCallable(o) { return typeof o === 'function'; }
1118
1119 // 7.2.4 IsConstructor ( argument )
1120 function IsConstructor(o) {
1121 // Hacks for Safari 7 TypedArray XXXConstructor objects
1122 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1123 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1124 // TODO: Can this be improved on?
1125 return typeof o === 'function';
1126 }
1127
1128 // 7.2.5 IsExtensible (O)
1129 // 7.2.6 IsInteger ( argument )
1130
1131 // 7.2.7 IsPropertyKey ( argument )
1132 function IsPropertyKey(argument) {
1133 if (Type(argument) === 'string') return true;
1134 if (Type(argument) === 'symbol') return true;
1135 return false;
1136 }
1137
1138 // 7.2.8 IsRegExp ( argument )
1139 // 7.2.5 IsConstructor ( argument )
1140
1141 // 7.2.9 SameValue(x, y)
1142 function SameValue(x, y) {
1143 if (typeof x !== typeof y) return false;
1144 switch (typeof x) {
1145 case 'undefined':
1146 return true;
1147 case 'number':
1148 if (x !== x && y !== y) return true;
1149 if (x === 0 && y === 0) return 1/x === 1/y;
1150 return x === y;
1151 case 'boolean':
1152 case 'string':
1153 case 'object':
1154 default:
1155 return x === y;
1156 }
1157 }
1158
1159 // 7.2.10 SameValueZero(x, y)
1160 function SameValueZero(x, y) {
1161 if (typeof x !== typeof y) return false;
1162 switch (typeof x) {
1163 case 'undefined':
1164 return true;
1165 case 'number':
1166 if (x !== x && y !== y) return true;
1167 return x === y;
1168 case 'boolean':
1169 case 'string':
1170 case 'object':
1171 default:
1172 return x === y;
1173 }
1174 }
1175
1176 //----------------------------------------
1177 // 7.3 Operations on Objects
1178 //----------------------------------------
1179
1180 // 7.3.1 Get (O, P)
1181 // - just use o.p or o[p]
1182
1183 // 7.3.2 GetV (V, P)
1184 function GetV(v, p) {
1185 var o = ToObject(v);
1186 return o[p];
1187 }
1188
1189 // 7.3.3 Set (O, P, V, Throw)
1190 // - just use o.p = v or o[p] = v
1191
1192
1193
1194
1195 // 7.3.9 GetMethod (O, P)
1196 function GetMethod(o, p) {
1197 var func = GetV(o, p);
1198 if (func === undefined || func === null) return undefined;
1199 if (!IsCallable(func)) throw TypeError();
1200 return func;
1201 }
1202
1203 // 7.3.10 HasProperty (O, P)
1204 function HasProperty(o, p) {
1205 while (o) {
1206 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1207 if (Type(o) !== 'object') return false;
1208 o = Object.getPrototypeOf(o);
1209 }
1210 return false;
1211 }
1212
1213 // 7.3.11 HasOwnProperty (O, P)
1214 function HasOwnProperty(o, p) {
1215 return Object.prototype.hasOwnProperty.call(o, p);
1216 }
1217
1218 //----------------------------------------
1219 // 7.4 Operations on Iterator Objects
1220 //----------------------------------------
1221
1222 // 7.4.1 GetIterator ( obj, method )
1223 function GetIterator(obj, method) {
1224 if (arguments.length < 2)
1225 method = GetMethod(obj, $$iterator);
1226 var iterator = method.call(obj);
1227 if (Type(iterator) !== 'object') throw TypeError();
1228 return iterator;
1229 }
1230
1231 // 7.4.2 IteratorNext ( iterator, value )
1232 function IteratorNext(iterator, value) {
1233 if (arguments.length < 2)
1234 var result = iterator.next();
1235 else
1236 result = iterator.next(value);
1237 if (Type(result) !== 'object') throw TypeError();
1238 return result;
1239 }
1240
1241 // 7.4.3 IteratorComplete ( iterResult )
1242 function IteratorComplete(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return Boolean(iterResult.done);
1245 }
1246
1247 // 7.4.4 IteratorValue ( iterResult )
1248 function IteratorValue(iterResult) {
1249 console.assert(Type(iterResult) === 'object');
1250 return iterResult.value;
1251 }
1252
1253 // 7.4.5 IteratorStep ( iterator )
1254 function IteratorStep( iterator, value ) {
1255 var result = IteratorNext(iterator, value);
1256 var done = result['done'];
1257 if (Boolean(done) === true) return false;
1258 return result;
1259 }
1260
1261 // 7.4.6 IteratorClose( iterator, completion )
1262 function IteratorClose( iterator, completion ) {
1263 console.assert(Type(iterator) === 'object');
1264 var _return = GetMethod(iterator, 'return');
1265 if (_return === undefined) return completion;
1266 try {
1267 var innerResult = _return[iterator]();
1268 } catch (result) {
1269 // TODO: If completion.[[type]] is throw, return completion
1270 return result;
1271 }
1272 if (Type(innerResult) !== 'object') throw TypeError();
1273 return completion;
1274 }
1275
1276 // 7.4.7 CreateIterResultObject (value, done)
1277 function CreateIterResultObject(value, done) {
1278 console.assert(Type(done) === 'boolean');
1279 var obj = {};
1280 obj["value"] = value;
1281 obj["done"] = done;
1282 return obj;
1283 }
1284
1285 // 7.4.8 CreateListIterator (list)
1286 // 7.4.8.1 ListIterator next( )
1287 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1288 // 7.4.9.1 CompoundIterator next( )
1289
1290 //----------------------------------------
1291 // 8 Executable Code and Execution Contexts
1292 //----------------------------------------
1293
1294 //----------------------------------------
1295 // 8.4 Jobs and Job Queues
1296 //----------------------------------------
1297
1298 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1299 function EnqueueJob(queueName, job, args) {
1300 var fn = function() { job.apply(undefined, args); };
1301 enqueue(fn);
1302 }
1303
1304 // 8.4.2 NextJob result
1305 function NextJob(result) {
1306 // no-op
1307 }
1308
1309 //----------------------------------------
1310 // 9 Ordinary and Exotic Objects Behaviors
1311 //----------------------------------------
1312
1313 // 9.1.11 [[Enumerate]] ()
1314 function Enumerate(obj) {
1315 var e = [];
1316 if (Object(obj) !== obj) return e;
1317 var visited = new Set;
1318 while (obj !== null) {
1319 Object.getOwnPropertyNames(obj).forEach(function(name) {
1320 if (!visited.has(name)) {
1321 var desc = Object.getOwnPropertyDescriptor(obj, name);
1322 if (desc) {
1323 visited.add(name);
1324 if (desc.enumerable) e.push(name);
1325 }
1326 }
1327 });
1328 obj = Object.getPrototypeOf(obj);
1329 }
1330 return e[$$iterator]();
1331 }
1332
1333 // 9.1.12 [[OwnPropertyKeys]] ( )
1334 function OwnPropertyKeys(o) {
1335 return Object.getOwnPropertyNames(o);
1336 }
1337
1338 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1339 function ObjectCreate(proto, internalSlotsList) {
1340 return Object.create(proto, internalSlotsList);
1341 }
1342
1343 // ---------------------------------------
1344 // 19 Fundamental Objects
1345 // ---------------------------------------
1346
1347 // ---------------------------------------
1348 // 19.1 Object Objects
1349 // ---------------------------------------
1350
1351 // 19.1.1 The Object Constructor
1352 // 19.1.1.1 Object ( [ value ] )
1353 // 19.1.2 Properties of the Object Constructor
1354 // 19.1.2.1 Object.assign ( target, ...sources )
1355 define(
1356 Object, 'assign',
1357 function assign(target, /*...*/sources) {
1358 var to = ToObject(target);
1359 if (arguments.length < 2) return to;
1360
1361 var sourcesIndex = 1;
1362 while (sourcesIndex < arguments.length) {
1363 var nextSource = arguments[sourcesIndex++];
1364 if (nextSource === undefined || nextSource === null) {
1365 var keys = [];
1366 } else {
1367 var from = ToObject(nextSource);
1368 keys = OwnPropertyKeys(from);
1369 }
1370 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1371 var nextKey = keys[keysIndex];
1372 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1373 if (desc !== undefined && desc.enumerable) {
1374 var propValue = from[nextKey];
1375 to[nextKey] = propValue;
1376 }
1377 }
1378 }
1379 return to;
1380 });
1381
1382 // 19.1.2.2 Object.create ( O [ , Properties ] )
1383 // 19.1.2.3 Object.defineProperties ( O, Properties )
1384 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1385 // 19.1.2.5 Object.freeze ( O )
1386 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1387
1388 (function() {
1389 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1390 $getOwnPropertyNames = Object.getOwnPropertyNames,
1391 $keys = Object.keys,
1392 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1393
1394 function isStringKey(k) { return !symbolForKey(k); }
1395
1396 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1397 define(
1398 Object, 'getOwnPropertyNames',
1399 function getOwnPropertyNames(o) {
1400 if (Object.prototype.toString.call(o) === '[object Window]') {
1401 // Workaround for cross-realm calling by IE itself.
1402 // https://github.com/inexorabletash/polyfill/issues/96
1403 try {
1404 return $getOwnPropertyNames(o).filter(isStringKey);
1405 } catch (_) {
1406 return $window_names.slice();
1407 }
1408 }
1409 return $getOwnPropertyNames(o).filter(isStringKey);
1410 }, !nativeSymbols);
1411
1412 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1413 define(
1414 Object, 'getOwnPropertySymbols',
1415 function getOwnPropertySymbols(o) {
1416 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1417 }, !nativeSymbols);
1418
1419 // 19.1.2.14 Object.keys ( O )
1420 define(
1421 Object, 'keys',
1422 function keys(o) {
1423 return $keys(o).filter(isStringKey);
1424 }, !nativeSymbols);
1425 }());
1426
1427 // 19.1.2.9 Object.getPrototypeOf ( O )
1428 // 19.1.2.10 Object.is ( value1, value2 )
1429 define(
1430 Object, 'is',
1431 function is(value1, value2) {
1432 return SameValue(value1, value2);
1433 });
1434
1435 // 19.1.2.11 Object.isExtensible ( O )
1436 // 19.1.2.12 Object.isFrozen ( O )
1437 // 19.1.2.13 Object.isSealed ( O )
1438
1439 // 19.1.2.14 Object.keys ( O )
1440 // see above
1441
1442 // 19.1.2.15 Object.preventExtensions ( O )
1443 // 19.1.2.16 Object.prototype
1444 // 19.1.2.17 Object.seal ( O )
1445
1446 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1447 define(
1448 Object, 'setPrototypeOf',
1449 function setPrototypeOf(o, proto) {
1450 if (Type(o) !== 'object') throw TypeError();
1451 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1452 o.__proto__ = proto;
1453 return o;
1454 }
1455 );
1456
1457 // 19.1.3 Properties of the Object Prototype Object
1458 // 19.1.3.1 Object.prototype.constructor
1459 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1460 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1461 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1462 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1463 // 19.1.3.6 Object.prototype.toString ( )
1464 hook(Object.prototype, 'toString',
1465 function() {
1466 var o = strict(this);
1467 if (o === Object(o) && $$toStringTag in o) {
1468 return '[object ' + o[$$toStringTag] + ']';
1469 }
1470 return undefined;
1471 });
1472
1473 // 19.1.3.7 Object.prototype.valueOf ( )
1474 // 19.1.4 Properties of Object Instances
1475
1476 // ---------------------------------------
1477 // 19.2 Function Objects
1478 // ---------------------------------------
1479
1480 // 19.2.1 The Function Constructor
1481 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1482 // 19.2.2 Properties of the Function Constructor
1483 // 19.2.2.1 Function.length
1484 // 19.2.2.2 Function.prototype
1485 // 19.2.3 Properties of the Function Prototype Object
1486 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1487 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1488 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1489 // 19.2.3.4 Function.prototype.constructor
1490 // 19.2.3.5 Function.prototype.toString ( )
1491 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1492 // 19.2.4 Function Instances
1493 // 19.2.4.1 length
1494 // 19.2.4.2 name
1495 // 19.2.4.3 prototype
1496
1497 // (No polyfillable changes from ES5)
1498
1499 // ---------------------------------------
1500 // 19.3 Boolean Objects
1501 // ---------------------------------------
1502
1503 // 19.3.1 The Boolean Constructor
1504 // 19.3.1.1 Boolean ( value )
1505 // 19.3.2 Properties of the Boolean Constructor
1506 // 19.3.2.1 Boolean.prototype
1507 // 19.3.3 Properties of the Boolean Prototype Object
1508 // 19.3.3.1 Boolean.prototype.constructor
1509 // 19.3.3.2 Boolean.prototype.toString ( )
1510 // 19.3.3.3 Boolean.prototype.valueOf ( )
1511 // 19.3.4 Properties of Boolean Instances
1512
1513 // (No polyfillable changes from ES5)
1514
1515 // ---------------------------------------
1516 // 19.4 Symbol Objects
1517 // ---------------------------------------
1518
1519 // Moved earlier in this script, so that other polyfills can depend on them.
1520
1521 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1522 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1523
1524 // ---------------------------------------
1525 // 19.5 Error Objects
1526 // ---------------------------------------
1527
1528 // 19.5.1 The Error Constructor
1529 // 19.5.1.1 Error ( message )
1530 // 19.5.1.2 new Error( ...argumentsList )
1531 // 19.5.2 Properties of the Error Constructor
1532 // 19.5.2.1 Error.prototype
1533 // 19.5.3 Properties of the Error Prototype Object
1534 // 19.5.3.1 Error.prototype.constructor
1535 // 19.5.3.2 Error.prototype.message
1536 // 19.5.3.3 Error.prototype.name
1537 // 19.5.3.4 Error.prototype.toString ( )
1538 // 19.5.4 Properties of Error Instances
1539 // 19.5.5 Native Error Types Used in This Standard
1540 // 19.5.5.1 EvalError
1541 // 19.5.5.2 RangeError
1542 // 19.5.5.3 ReferenceError
1543 // 19.5.5.4 SyntaxError
1544 // 19.5.5.5 TypeError
1545 // 19.5.5.6 URIError
1546 // 19.5.6 NativeError Object Structure
1547 // 19.5.6.1 NativeError Constructors
1548 // 19.5.6.1.1 NativeError ( message )
1549 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1550 // 19.5.6.2 Properties of the NativeError Constructors
1551 // 19.5.6.2.1 NativeError.prototype
1552 // 19.5.6.3 Properties of the NativeError Prototype Objects
1553 // 19.5.6.4 Properties of NativeError Instances
1554
1555 // (No polyfillable changes from ES5)
1556
1557 // ---------------------------------------
1558 // 20 Numbers and Dates
1559 // ---------------------------------------
1560
1561 // ---------------------------------------
1562 // 20.1 Number Objects
1563 // ---------------------------------------
1564
1565 // 20.1.1 The Number Constructor
1566 // 20.1.1.1 Number ( [ value ] )
1567 // 20.1.1.2 new Number ( ...argumentsList )
1568 // 20.1.2 Properties of the Number Constructor
1569
1570 // 20.1.2.1 Number.EPSILON
1571 define(
1572 Number, 'EPSILON',
1573 (function () {
1574 var next, result;
1575 for (next = 1; 1 + next !== 1; next = next / 2)
1576 result = next;
1577 return result;
1578 }()));
1579
1580 // 20.1.2.2 Number.isFinite ( number )
1581 define(
1582 Number, 'isFinite',
1583 function isFinite(number) {
1584 if (Type(number) !== 'number') return false;
1585 if (number !== number || number === +Infinity || number === -Infinity) return false;
1586 return true;
1587 });
1588
1589 // 20.1.2.3 Number.isInteger ( number )
1590 define(
1591 Number, 'isInteger',
1592 function isInteger(number) {
1593 if (Type(number) !== 'number') return false;
1594 if (number !== number || number === +Infinity || number === -Infinity) return false;
1595 var integer = ToInteger(number);
1596 if (integer !== number) return false;
1597 return true;
1598 });
1599
1600 // 20.1.2.4 Number.isNaN ( number )
1601 define(
1602 Number, 'isNaN',
1603 function isNaN(number) {
1604 if (Type(number) !== 'number') return false;
1605 if (number !== number) return true;
1606 return false;
1607 });
1608
1609 // 20.1.2.5 Number.isSafeInteger ( number )
1610 define(
1611 Number, 'isSafeInteger',
1612 function isSafeInteger(number) {
1613 if (Type(number) !== 'number') return false;
1614 if (number !== number || number === +Infinity || number === -Infinity) return false;
1615 var integer = ToInteger(number);
1616 if (integer !== number) return false;
1617 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1618 return true;
1619 return false;
1620 });
1621
1622 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1623 define(
1624 Number, 'MAX_SAFE_INTEGER',
1625 9007199254740991); // 2^53-1
1626
1627 // 20.1.2.7 Number.MAX_VALUE
1628
1629 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1630 define(
1631 Number, 'MIN_SAFE_INTEGER',
1632 -9007199254740991); // -2^53+1
1633
1634 // 20.1.2.9 Number.MIN_VALUE
1635 // 20.1.2.10 Number.NaN
1636 // 20.1.2.11 Number.NEGATIVE_INFINITY
1637
1638 // 20.1.2.12 Number.parseFloat ( string )
1639 define(Number, 'parseFloat', $parseFloat);
1640
1641 // 20.1.2.13 Number.parseInt ( string, radix )
1642 define(Number, 'parseInt', $parseInt);
1643
1644 // 20.1.2.14 Number.POSITIVE_INFINITY
1645 // 20.1.2.15 Number.prototype
1646
1647 // 20.1.3 Properties of the Number Prototype Object
1648 // 20.1.3.1 Number.prototype.constructor
1649 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1650 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1651 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1652 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1653 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1654 // 20.1.3.7 Number.prototype.valueOf ( )
1655 // 20.1.4 Properties of Number Instances
1656
1657 // ---------------------------------------
1658 // 20.2 The Math Object
1659 // ---------------------------------------
1660
1661 // 20.2.1 Value Properties of the Math Object
1662 // 20.2.1.1 Math.E
1663 // 20.2.1.2 Math.LN10
1664 // 20.2.1.3 Math.LN2
1665 // 20.2.1.4 Math.LOG10E
1666 // 20.2.1.5 Math.LOG2E
1667 // 20.2.1.6 Math.PI
1668 // 20.2.1.7 Math.SQRT1_2
1669 // 20.2.1.8 Math.SQRT2
1670
1671 // 20.2.1.9 Math [ @@toStringTag ]
1672 define(Math, $$toStringTag, 'Math');
1673
1674 // 20.2.2 Function Properties of the Math Object
1675 // 20.2.2.1 Math.abs ( x )
1676 // 20.2.2.2 Math.acos ( x )
1677
1678 // 20.2.2.3 Math.acosh(x)
1679 define(
1680 Math, 'acosh',
1681 function acosh(x) {
1682 x = Number(x);
1683 return log(x + sqrt(x * x - 1));
1684 });
1685
1686 // 20.2.2.4 Math.asin ( x )
1687
1688 // 20.2.2.5 Math.asinh( x )
1689 define(
1690 Math, 'asinh',
1691 function asinh(x) {
1692 x = Number(x);
1693 if (SameValue(x, -0)) {
1694 return x;
1695 }
1696 var s = sqrt(x * x + 1);
1697 return (s === -x) ? log(0) : log(x + s);
1698 });
1699
1700 // 20.2.2.6 Math.atan ( x )
1701
1702 // 20.2.2.7 Math.atanh( x )
1703 define(
1704 Math, 'atanh',
1705 function atanh(x) {
1706 x = Number(x);
1707 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1708 });
1709
1710 // 20.2.2.8 Math.atan2 ( y, x )
1711
1712 // 20.2.2.9 Math.cbrt ( x )
1713 define(
1714 Math, 'cbrt',
1715 function cbrt(x) {
1716 x = Number(x);
1717 if ($isNaN(x/x)) {
1718 return x;
1719 }
1720 var r = pow(abs(x), 1/3);
1721 var t = x/r/r;
1722 return r + (r * (t-r) / (2*r + t));
1723 });
1724
1725 // 20.2.2.10 Math.ceil ( x )
1726
1727 // 20.2.2.11 Math.clz32 ( x )
1728 define(
1729 Math, 'clz32',
1730 function clz32(x) {
1731 function clz8(x) {
1732 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1733 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1734 }
1735 x = ToUint32(x);
1736 return x & 0xff000000 ? clz8(x >> 24) :
1737 x & 0xff0000 ? clz8(x >> 16) + 8 :
1738 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1739 });
1740
1741
1742
1743 // 20.2.2.12 Math.cos ( x )
1744
1745 // 20.2.2.13 Math.cosh ( x )
1746 define(
1747 Math, 'cosh',
1748 function cosh(x) {
1749 x = Number(x);
1750 return (pow(E, x) + pow(E, -x)) / 2;
1751 });
1752
1753 // 20.2.2.14 Math.exp ( x )
1754
1755 // 20.2.2.15 Math.expm1 ( x )
1756 define(
1757 Math, 'expm1',
1758 function expm1(x) {
1759 x = Number(x);
1760 // from: http://www.johndcook.com/cpp_log1p.html
1761 if (SameValue(x, -0)) {
1762 return -0;
1763 } else if (abs(x) < 1e-5) {
1764 return x + 0.5 * x * x; // two terms of Taylor expansion
1765 } else {
1766 return exp(x) - 1;
1767 }
1768 });
1769
1770 // 20.2.2.16 Math.floor ( x )
1771
1772 // 20.2.2.17 Math.fround ( x )
1773 define(
1774 Math, 'fround',
1775 function fround(x) {
1776 if ($isNaN(x)) {
1777 return NaN;
1778 }
1779 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1780 return x;
1781 }
1782 return (new Float32Array([x]))[0];
1783 });
1784
1785 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1786 define(
1787 Math, 'hypot',
1788 function hypot() {
1789 var values = [];
1790 var m = 0, sawNaN = false;
1791 for (var i = 0; i < arguments.length; ++i) {
1792 var n = abs(Number(arguments[i]));
1793 if (n === Infinity) return n;
1794 if (n !== n) sawNaN = true;
1795 if (n > m) m = n;
1796 values[i] = n;
1797 }
1798 if (sawNaN) return NaN;
1799 if (m === 0) return +0;
1800 var sum = +0;
1801 for (i = 0; i < values.length; ++i) {
1802 var r = values[i] / m;
1803 sum = sum + r * r;
1804 }
1805 return m * sqrt(sum);
1806 });
1807
1808 // 20.2.2.19 Math.imul ( x, y )
1809 define(
1810 Math, 'imul',
1811 function imul(x, y) {
1812 var a = ToUint32(x);
1813 var b = ToUint32(y);
1814 // (slow but accurate)
1815 var ah = (a >>> 16) & 0xffff;
1816 var al = a & 0xffff;
1817 var bh = (b >>> 16) & 0xffff;
1818 var bl = b & 0xffff;
1819 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1820 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1821 );
1822
1823 // 20.2.2.20 Math.log ( x )
1824
1825 // 20.2.2.21 Math.log1p ( x )
1826 define(
1827 Math, 'log1p',
1828 function log1p(x) {
1829 x = Number(x);
1830 // from: http://www.johndcook.com/cpp_expm1.html
1831 if (x < -1) {
1832 return NaN;
1833 } else if (SameValue(x, -0)) {
1834 return -0;
1835 } else if (abs(x) > 1e-4) {
1836 return log(1 + x);
1837 } else {
1838 return (-0.5 * x + 1) * x;
1839 }
1840 });
1841
1842 // 20.2.2.22 Math.log10 ( x )
1843 define(
1844 Math, 'log10',
1845 function log10(x) {
1846 x = Number(x);
1847 return log(x) * LOG10E;
1848 });
1849
1850 // 20.2.2.23 Math.log2 ( x )
1851 define(
1852 Math, 'log2',
1853 function log2(x) {
1854 x = Number(x);
1855 return log(x) * LOG2E;
1856 });
1857
1858 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1859 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1860 // 20.2.2.26 Math.pow ( x, y )
1861 // 20.2.2.27 Math.random ( )
1862 // 20.2.2.28 Math.round ( x )
1863
1864 // 20.2.2.29 Math.sign(x)
1865 define(
1866 Math, 'sign',
1867 function sign(x) {
1868 x = Number(x);
1869 return x < 0 ? -1 : x > 0 ? 1 : x;
1870 });
1871
1872 // 20.2.2.30 Math.sin ( x )
1873
1874 // 20.2.2.31 Math.sinh( x )
1875 define(
1876 Math, 'sinh',
1877 function sinh(x) {
1878 x = Number(x);
1879 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1880 });
1881
1882 // 20.2.2.32 Math.sqrt ( x )
1883 // 20.2.2.33 Math.tan ( x )
1884
1885 // 20.2.2.34 Math.tanh ( x )
1886 define(
1887 Math, 'tanh',
1888 function tanh(x) {
1889 x = Number(x);
1890 var n = pow(E, 2 * x) - 1,
1891 d = pow(E, 2 * x) + 1;
1892 if (SameValue(x, -0))
1893 return x;
1894 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1895 });
1896
1897 // 20.2.2.35 Math.trunc ( x )
1898 define(
1899 Math, 'trunc',
1900 function trunc(x) {
1901 x = Number(x);
1902 return $isNaN(x) ? NaN :
1903 x < 0 ? ceil(x) : floor(x);
1904 });
1905
1906 // ---------------------------------------
1907 // 20.3 Date Objects
1908 // ---------------------------------------
1909
1910 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1911 // 20.3.1.1 Time Values and Time Range
1912 // 20.3.1.2 Day Number and Time within Day
1913 // 20.3.1.3 Year Number
1914 // 20.3.1.4 Month Number
1915 // 20.3.1.5 Date Number
1916 // 20.3.1.6 Week Day
1917 // 20.3.1.7 Local Time Zone Adjustment
1918 // 20.3.1.8 Daylight Saving Time Adjustment
1919 // 20.3.1.9 Local Time
1920 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1921 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1922 // 20.3.1.12 MakeDay (year, month, date)
1923 // 20.3.1.13 MakeDate (day, time)
1924 // 20.3.1.14 TimeClip (time)
1925 // 20.3.1.15 Date Time String Format
1926 // 20.3.1.15.1 Extended years
1927 // 20.3.2 The Date Constructor
1928 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1929 // 20.3.2.2 Date ( value )
1930 // 20.3.2.3 Date ( )
1931 // 20.3.3 Properties of the Date Constructor
1932 // 20.3.3.1 Date.now ( )
1933 // 20.3.3.2 Date.parse (string)
1934 // 20.3.3.3 Date.prototype
1935 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1936 // 20.3.4 Properties of the Date Prototype Object
1937 // 20.3.4.1 Date.prototype.constructor
1938 // 20.3.4.2 Date.prototype.getDate ( )
1939 // 20.3.4.3 Date.prototype.getDay ( )
1940 // 20.3.4.4 Date.prototype.getFullYear ( )
1941 // 20.3.4.5 Date.prototype.getHours ( )
1942 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1943 // 20.3.4.7 Date.prototype.getMinutes ( )
1944 // 20.3.4.8 Date.prototype.getMonth ( )
1945 // 20.3.4.9 Date.prototype.getSeconds ( )
1946 // 20.3.4.10 Date.prototype.getTime ( )
1947 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1948 // 20.3.4.12 Date.prototype.getUTCDate ( )
1949 // 20.3.4.13 Date.prototype.getUTCDay ( )
1950 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1951 // 20.3.4.15 Date.prototype.getUTCHours ( )
1952 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1953 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1954 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1955 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1956 // 20.3.4.20 Date.prototype.setDate ( date )
1957 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1958 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1959 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1960 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1961 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1962 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1963 // 20.3.4.27 Date.prototype.setTime ( time )
1964 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1965 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1966 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1967 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1968 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1969 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1970 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1971 // 20.3.4.35 Date.prototype.toDateString ( )
1972 // 20.3.4.36 Date.prototype.toISOString ( )
1973 // 20.3.4.37 Date.prototype.toJSON ( key )
1974 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1975 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1976 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1977 // 20.3.4.41 Date.prototype.toString ( )
1978 // 20.3.4.42 Date.prototype.toTimeString ( )
1979 // 20.3.4.43 Date.prototype.toUTCString ( )
1980 // 20.3.4.44 Date.prototype.valueOf ( )
1981 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1982 // 20.3.5 Properties of Date Instances
1983
1984 // (No polyfillable changes from ES5)
1985
1986 // ---------------------------------------
1987 // 21 Text Processing
1988 // ---------------------------------------
1989
1990 var string_regexp_dispatch = (function() {
1991 var faux = {}, secret = Symbol();
1992 faux[Symbol.match] = function() { return secret; };
1993 return ("").match(faux) === secret;
1994 }());
1995
1996 // 21.1 String Objects
1997 // 21.1.1 The String Constructor
1998 // 21.1.1.1 String ( value )
1999 // 21.1.2 Properties of the String Constructor
2000 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2001
2002 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2003 define(
2004 String, 'fromCodePoint',
2005 function fromCodePoint(/*...codePoints*/) {
2006 var codePoints = arguments,
2007 length = codePoints.length,
2008 elements = [],
2009 nextIndex = 0;
2010 while (nextIndex < length) {
2011 var next = codePoints[nextIndex];
2012 var nextCP = Number(next);
2013 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2014 nextCP < 0 || nextCP > 0x10FFFF) {
2015 throw RangeError('Invalid code point ' + nextCP);
2016 }
2017 if (nextCP < 0x10000) {
2018 elements.push(String.fromCharCode(nextCP));
2019 } else {
2020 nextCP -= 0x10000;
2021 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2022 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2023 }
2024 nextIndex += 1;
2025 }
2026 return elements.join('');
2027 });
2028
2029 // 21.1.2.3 String.prototype
2030
2031 // 21.1.2.4 String.raw ( template , ...substitutions )
2032 define(
2033 String, 'raw',
2034 function raw(template /*, ...substitutions*/) {
2035 var substitutions = [].slice.call(arguments, 1);
2036
2037 var cooked = Object(template);
2038 var rawValue = cooked['raw'];
2039 var raw = Object(rawValue);
2040 var len = raw['length'];
2041 var literalSegments = ToLength(len);
2042 if (literalSegments <= 0) return '';
2043 var stringElements = [];
2044 var nextIndex = 0;
2045 while (true) {
2046 var next = raw[nextIndex];
2047 var nextSeg = String(next);
2048 stringElements.push(nextSeg);
2049 if (nextIndex + 1 === literalSegments)
2050 return stringElements.join('');
2051 next = substitutions[nextIndex];
2052 var nextSub = String(next);
2053 stringElements.push(nextSub);
2054 nextIndex = nextIndex + 1;
2055 }
2056 });
2057
2058 // See https://githib.com/inexorabletash/uate for a more useful version.
2059
2060 // 21.1.3 Properties of the String Prototype Object
2061 // 21.1.3.1 String.prototype.charAt ( pos )
2062 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2063
2064 // 21.1.3.3 String.prototype.codePointAt ( pos )
2065 define(
2066 String.prototype, 'codePointAt',
2067 function codePointAt(pos) {
2068 var o = strict(this);
2069 var s = String(o);
2070 var position = ToInteger(pos);
2071 var size = s.length;
2072 if (position < 0 || position >= size) return undefined;
2073 var first = s.charCodeAt(position);
2074 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2075 var second = s.charCodeAt(position + 1);
2076 if (second < 0xDC00 || second > 0xDFFF) return first;
2077 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2078 });
2079
2080 // 21.1.3.4 String.prototype.concat ( ...args )
2081 // 21.1.3.5 String.prototype.constructor
2082
2083 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2084 define(
2085 String.prototype, 'endsWith',
2086 function endsWith(searchString) {
2087 var endPosition = arguments[1];
2088
2089 var o = strict(this);
2090 var s = String(o);
2091 var searchStr = String(searchString);
2092 var len = s.length;
2093 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2094 var end = min(max(pos, 0), len);
2095 var searchLength = searchStr.length;
2096 var start = end - searchLength;
2097 if (start < 0) return false;
2098 if (s.substring(start, start + searchLength) === searchStr) return true;
2099 return false;
2100 });
2101
2102 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2103 define(
2104 String.prototype, 'includes',
2105 function includes(searchString) {
2106 var position = arguments[1];
2107
2108 var o = strict(this);
2109 var s = String(o);
2110 var searchStr = String(searchString);
2111 var pos = ToInteger(position);
2112 var len = s.length;
2113 var start = min(max(pos, 0), len);
2114 return s.indexOf(searchStr, start) !== -1;
2115 });
2116
2117 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2118 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2119 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2120 // 21.1.3.11 String.prototype.match ( regexp )
2121 define(
2122 String.prototype, 'match',
2123 function match(regexp) {
2124 var o = strict(this);
2125 var s = String(o);
2126 if (HasProperty(regexp, $$match)) var rx = regexp;
2127 else rx = new RegExp(regexp);
2128 return rx[$$match](s);
2129 }, !string_regexp_dispatch);
2130
2131 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2132
2133 // Not practical due to table sizes; if needed, pull in:
2134 // https://github.com/walling/unorm/
2135
2136 // 21.1.3.13 String.prototype.repeat ( count )
2137 define(
2138 String.prototype, 'repeat',
2139 function repeat(count) {
2140 var o = strict(this);
2141 var s = String(o);
2142 var n = ToInteger(count);
2143 if (n < 0) throw RangeError();
2144 if (n === Infinity) throw RangeError();
2145 var t = new Array(n + 1).join(s);
2146 return t;
2147 });
2148
2149 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2150 define(
2151 String.prototype, 'replace',
2152 function replace(searchValue, replaceValue) {
2153 var o = strict(this);
2154 if (HasProperty(searchValue, $$replace))
2155 return searchValue[$$replace](o, replaceValue);
2156 return orig_replace.call(o, searchValue, replaceValue);
2157 }, !string_regexp_dispatch);
2158
2159 // 21.1.3.15 String.prototype.search ( regexp )
2160 define(
2161 String.prototype, 'search',
2162 function search(regexp) {
2163 var o = strict(this);
2164 var string = String(o);
2165 if (HasProperty(regexp, $$search)) var rx = regexp;
2166 else rx = new RegExp(regexp);
2167 return rx[$$search](string);
2168 }, !string_regexp_dispatch);
2169
2170 // 21.1.3.16 String.prototype.slice ( start, end )
2171 // 21.1.3.17 String.prototype.split ( separator, limit )
2172 define(
2173 String.prototype, 'split',
2174 function split(separator, limit) {
2175 var o = strict(this);
2176 if (HasProperty(separator, $$split))
2177 return separator[$$split](o, limit);
2178 return orig_split.call(o, separator, limit);
2179 }, !string_regexp_dispatch);
2180
2181 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2182 define(
2183 String.prototype, 'startsWith',
2184 function startsWith(searchString) {
2185 var position = arguments[1];
2186
2187 var o = strict(this);
2188 var s = String(o);
2189 var searchStr = String(searchString);
2190 var pos = ToInteger(position);
2191 var len = s.length;
2192 var start = min(max(pos, 0), len);
2193 var searchLength = searchStr.length;
2194 if (searchLength + start > len) return false;
2195 if (s.substring(start, start + searchLength) === searchStr) return true;
2196 return false;
2197 });
2198
2199 // 21.1.3.19 String.prototype.substring ( start, end )
2200 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2201 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2202 // 21.1.3.22 String.prototype.toLowerCase ( )
2203 // 21.1.3.23 String.prototype.toString ( )
2204 // 21.1.3.24 String.prototype.toUpperCase ( )
2205 // 21.1.3.25 String.prototype.trim ( )
2206 // 21.1.3.26 String.prototype.valueOf ( )
2207
2208 // 21.1.3.27 String.prototype [ @@iterator ]( )
2209 define(
2210 String.prototype, $$iterator,
2211 function entries() {
2212 return CreateStringIterator(this, 'value');
2213 });
2214
2215 // 21.1.4 Properties of String Instances
2216 // 21.1.4.1 length
2217
2218 // 21.1.5 String Iterator Objects
2219 /** @constructor */
2220 function StringIterator() {}
2221
2222 // 21.1.5.1 CreateStringIterator Abstract Operation
2223 function CreateStringIterator(string, kind) {
2224 var s = String(string);
2225 var iterator = new StringIterator;
2226 set_internal(iterator, '[[IteratedString]]', s);
2227 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2228 set_internal(iterator, '[[StringIterationKind]]', kind);
2229 return iterator;
2230 }
2231
2232 // 21.1.5.2 The %StringIteratorPrototype% Object
2233 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2234 StringIterator.prototype = $StringIteratorPrototype$;
2235
2236 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2237 define(
2238 $StringIteratorPrototype$, 'next',
2239 function next() {
2240 var o = ToObject(this);
2241 var s = String(o['[[IteratedString]]']),
2242 index = o['[[StringIteratorNextIndex]]'],
2243 len = s.length;
2244 if (index >= len) {
2245 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2246 return CreateIterResultObject(undefined, true);
2247 }
2248 var cp = s.codePointAt(index);
2249 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2250 return CreateIterResultObject(String.fromCodePoint(cp), false);
2251 });
2252
2253 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2254 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2255
2256 // 21.1.5.3 Properties of String Iterator Instances
2257
2258 // ---------------------------------------
2259 // 21.2 RegExp (Regular Expression) Objects
2260 // ---------------------------------------
2261
2262 // 21.2.1 Patterns
2263 // 21.2.2 Pattern Semantics
2264 // 21.2.2.1 Notation
2265 // 21.2.2.2 Pattern
2266 // 21.2.2.3 Disjunction
2267 // 21.2.2.4 Alternative
2268 // 21.2.2.5 Term
2269 // 21.2.2.6 Assertion
2270 // 21.2.2.7 Quantifier
2271 // 21.2.2.8 Atom
2272 // 21.2.2.9 AtomEscape
2273 // 21.2.2.10 CharacterEscape
2274 // 21.2.2.11 DecimalEscape
2275 // 21.2.2.12 CharacterClassEscape
2276 // 21.2.2.13 CharacterClass
2277 // 21.2.2.14 ClassRanges
2278 // 21.2.2.15 NonemptyClassRanges
2279 // 21.2.2.16 NonemptyClassRangesNoDash
2280 // 21.2.2.17 ClassAtom
2281 // 21.2.2.18 ClassAtomNoDash
2282 // 21.2.2.19 ClassEscape
2283 // 21.2.3 The RegExp Constructor
2284 // 21.2.3.1 RegExp ( pattern, flags )
2285 // 21.2.3.2 new RegExp( ...argumentsList )
2286 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2287 // 21.2.4 Properties of the RegExp Constructor
2288 // 21.2.4.1 RegExp.prototype
2289 // 21.2.5 Properties of the RegExp Prototype Object
2290 // 21.2.5.1 RegExp.prototype.constructor
2291 // 21.2.5.2 RegExp.prototype.exec ( string )
2292
2293 // 21.2.5.3 get RegExp.prototype.flags
2294 if (!('flags' in RegExp.prototype)) {
2295 Object.defineProperty(
2296 RegExp.prototype, 'flags', {
2297 get: function() {
2298 var s = String(this);
2299 return s.substring(s.lastIndexOf('/') + 1);
2300 }
2301 });
2302 }
2303
2304 // 21.2.5.4 get RegExp.prototype.global
2305 // 21.2.5.5 get RegExp.prototype.ignoreCase
2306
2307 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2308 define(RegExp.prototype, $$match, function(string) {
2309 var o = strict(this);
2310 return orig_match.call(string, o);
2311 });
2312
2313 // 21.2.5.7 get RegExp.prototype.multiline
2314
2315 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2316 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2317 var o = strict(this);
2318 return orig_replace.call(string, o, replaceValue);
2319 });
2320
2321 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2322 define(RegExp.prototype, $$search, function(string) {
2323 var o = strict(this);
2324 return orig_search.call(string, o);
2325 });
2326
2327 // 21.2.5.10 get RegExp.prototype.source
2328
2329 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2330 define(RegExp.prototype, $$split, function(string, limit) {
2331 var o = strict(this);
2332 return orig_split.call(string, o, limit);
2333 });
2334
2335 // 21.2.5.12 get RegExp.prototype.sticky
2336 // 21.2.5.13 RegExp.prototype.test( S )
2337 // 21.2.5.14 RegExp.prototype.toString ( )
2338 // 21.2.5.15 get RegExp.prototype.unicode
2339
2340 // 21.2.6 Properties of RegExp Instances
2341 // 21.2.6.1 lastIndex
2342
2343 // (No polyfillable changes from ES5)
2344
2345 // ---------------------------------------
2346 // 22 Indexed Collections
2347 // ---------------------------------------
2348
2349 // ---------------------------------------
2350 // 22.1 Array Objects
2351 // ---------------------------------------
2352
2353 // 22.1.1 The Array Constructor
2354 // 22.1.1.1 Array ( )
2355 // 22.1.1.2 Array (len)
2356 // 22.1.1.3 Array (...items )
2357
2358 // 22.1.2 Properties of the Array Constructor
2359
2360 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2361 define(
2362 Array, 'from',
2363 function from(items) {
2364 var mapfn = arguments[1];
2365 var thisArg = arguments[2];
2366
2367 var c = strict(this);
2368 if (mapfn === undefined) {
2369 var mapping = false;
2370 } else {
2371 if (!IsCallable(mapfn)) throw TypeError();
2372 var t = thisArg;
2373 mapping = true;
2374 }
2375 var usingIterator = GetMethod(items, $$iterator);
2376 if (usingIterator !== undefined) {
2377 if (IsConstructor(c)) {
2378 var a = new c();
2379 } else {
2380 a = new Array(0);
2381 }
2382 var iterator = GetIterator(items, usingIterator);
2383 var k = 0;
2384 while (true) {
2385 var next = IteratorStep(iterator);
2386 if (next === false) {
2387 a.length = k;
2388 return a;
2389 }
2390 var nextValue = IteratorValue(next);
2391 if (mapping)
2392 var mappedValue = mapfn.call(t, nextValue);
2393 else
2394 mappedValue = nextValue;
2395 a[k] = mappedValue;
2396 k += 1;
2397 }
2398 }
2399 var arrayLike = ToObject(items);
2400 var lenValue = arrayLike.length;
2401 var len = ToLength(lenValue);
2402 if (IsConstructor(c)) {
2403 a = new c(len);
2404 } else {
2405 a = new Array(len);
2406 }
2407 k = 0;
2408 while (k < len) {
2409 var kValue = arrayLike[k];
2410 if (mapping)
2411 mappedValue = mapfn.call(t, kValue, k);
2412 else
2413 mappedValue = kValue;
2414 a[k] = mappedValue;
2415 k += 1;
2416 }
2417 a.length = len;
2418 return a;
2419 });
2420
2421 // 22.1.2.2 Array.isArray ( arg )
2422
2423 // 22.1.2.3 Array.of ( ...items )
2424 define(
2425 Array, 'of',
2426 function of() {
2427 var items = arguments;
2428
2429 var lenValue = items.length;
2430 var len = ToUint32(lenValue);
2431 var c = strict(this), a;
2432 if (IsConstructor(c)) {
2433 a = new c(len);
2434 a = ToObject(a);
2435 } else {
2436 a = new Array(len);
2437 }
2438 var k = 0;
2439 while (k < len) {
2440 a[k] = items[k];
2441 k += 1;
2442 }
2443 a.length = len;
2444 return a;
2445 });
2446
2447 // 22.1.2.4 Array.prototype
2448 // 22.1.2.5 get Array [ @@species ]
2449 // 22.1.3 Properties of the Array Prototype Object
2450 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2451 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2452 // 22.1.3.2 Array.prototype.constructor
2453 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2454 define(
2455 Array.prototype, 'copyWithin',
2456 function copyWithin(target, start/*, end*/) {
2457 var end = arguments[2];
2458
2459 var o = ToObject(this);
2460 var lenVal = o.length;
2461 var len = ToLength(lenVal);
2462 len = max(len, 0);
2463 var relativeTarget = ToInteger(target);
2464 var to;
2465 if (relativeTarget < 0)
2466 to = max(len + relativeTarget, 0);
2467 else
2468 to = min(relativeTarget, len);
2469 var relativeStart = ToInteger(start);
2470 var from;
2471 if (relativeStart < 0)
2472 from = max(len + relativeStart, 0);
2473 else
2474 from = min(relativeStart, len);
2475 var relativeEnd;
2476 if (end === undefined)
2477 relativeEnd = len;
2478 else
2479 relativeEnd = ToInteger(end);
2480 var final;
2481 if (relativeEnd < 0)
2482 final = max(len + relativeEnd, 0);
2483 else
2484 final = min(relativeEnd, len);
2485 var count = min(final - from, len - to);
2486 var direction;
2487 if (from < to && to < from + count) {
2488 direction = -1;
2489 from = from + count - 1;
2490 to = to + count - 1;
2491 } else {
2492 direction = 1;
2493 }
2494 while (count > 0) {
2495 var fromKey = String(from);
2496 var toKey = String(to);
2497 var fromPresent = HasProperty(o, fromKey);
2498 if (fromPresent) {
2499 var fromVal = o[fromKey];
2500 o[toKey] = fromVal;
2501 } else {
2502 delete o[toKey];
2503 }
2504 from = from + direction;
2505 to = to + direction;
2506 count = count - 1;
2507 }
2508 return o;
2509 });
2510
2511 // 22.1.3.4 Array.prototype.entries ( )
2512 var nativeArrayIteratorMethods =
2513 ('entries' in Array.prototype && 'next' in [].entries());
2514
2515 define(
2516 Array.prototype, 'entries',
2517 function entries() {
2518 return CreateArrayIterator(this, 'key+value');
2519 }, !nativeArrayIteratorMethods);
2520
2521 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2522
2523 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2524 define(
2525 Array.prototype, 'fill',
2526 function fill(value/*, start, end*/) {
2527 var start = arguments[1],
2528 end = arguments[2];
2529
2530 var o = ToObject(this);
2531 var lenVal = o.length;
2532 var len = ToLength(lenVal);
2533 len = max(len, 0);
2534 var relativeStart = ToInteger(start);
2535 var k;
2536 if (relativeStart < 0)
2537 k = max((len + relativeStart), 0);
2538 else
2539 k = min(relativeStart, len);
2540 var relativeEnd;
2541 if (end === undefined)
2542 relativeEnd = len;
2543 else
2544 relativeEnd = ToInteger(end);
2545 var final;
2546 if (relativeEnd < 0)
2547 final = max((len + relativeEnd), 0);
2548 else
2549 final = min(relativeEnd, len);
2550 while (k < final) {
2551 var pk = String(k);
2552 o[pk] = value;
2553 k += 1;
2554 }
2555 return o;
2556 });
2557
2558 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2559
2560 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2561 define(
2562 Array.prototype, 'find',
2563 function find(predicate) {
2564 var o = ToObject(this);
2565 var lenValue = o.length;
2566 var len = ToInteger(lenValue);
2567 if (!IsCallable(predicate)) throw TypeError();
2568 var t = arguments.length > 1 ? arguments[1] : undefined;
2569 var k = 0;
2570 while (k < len) {
2571 var pk = String(k);
2572 var kPresent = HasProperty(o, pk);
2573 if (kPresent) {
2574 var kValue = o[pk];
2575 var testResult = predicate.call(t, kValue, k, o);
2576 if (Boolean(testResult)) {
2577 return kValue;
2578 }
2579 }
2580 ++k;
2581 }
2582 return undefined;
2583 });
2584
2585 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2586 define(
2587 Array.prototype, 'findIndex',
2588 function findIndex(predicate) {
2589 var o = ToObject(this);
2590 var lenValue = o.length;
2591 var len = ToLength(lenValue);
2592 if (!IsCallable(predicate)) throw TypeError();
2593 var t = arguments.length > 1 ? arguments[1] : undefined;
2594 var k = 0;
2595 while (k < len) {
2596 var pk = String(k);
2597 var kPresent = HasProperty(o, pk);
2598 if (kPresent) {
2599 var kValue = o[pk];
2600 var testResult = predicate.call(t, kValue, k, o);
2601 if (Boolean(testResult)) {
2602 return k;
2603 }
2604 }
2605 ++k;
2606 }
2607 return -1;
2608 });
2609
2610 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2611 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2612 // 22.1.3.12 Array.prototype.join (separator)
2613
2614 // 22.1.3.13 Array.prototype.keys ( )
2615 define(
2616 Array.prototype, 'keys',
2617 function keys() {
2618 return CreateArrayIterator(this, 'key');
2619 }, !nativeArrayIteratorMethods);
2620
2621 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2622 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2623 // 22.1.3.16 Array.prototype.pop ( )
2624 // 22.1.3.17 Array.prototype.push ( ...items )
2625 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2626 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2627 // 22.1.3.20 Array.prototype.reverse ( )
2628 // 22.1.3.21 Array.prototype.shift ( )
2629 // 22.1.3.22 Array.prototype.slice (start, end)
2630 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2631 // 22.1.3.24 Array.prototype.sort (comparefn)
2632 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2633 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2634 // 22.1.3.27 Array.prototype.toString ( )
2635 // 22.1.3.28 Array.prototype.unshift ( ...items )
2636
2637 // 22.1.3.29 Array.prototype.values ( )
2638 define(
2639 Array.prototype, 'values',
2640 function values() {
2641 return CreateArrayIterator(this, 'value');
2642 }, !nativeArrayIteratorMethods);
2643
2644 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2645 define(
2646 Array.prototype, $$iterator,
2647 Array.prototype.values
2648 );
2649
2650 // 22.1.3.31 Array.prototype [ @@unscopables ]
2651 // 22.1.4 Properties of Array Instances
2652 // 22.1.4.1 length
2653
2654 // 22.1.5 Array Iterator Objects
2655 function ArrayIterator() {}
2656
2657 // 22.1.5.1 CreateArrayIterator Abstract Operation
2658 function CreateArrayIterator(array, kind) {
2659 var o = ToObject(array);
2660 var iterator = new ArrayIterator;
2661 set_internal(iterator, '[[IteratedObject]]', o);
2662 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2663 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2664 return iterator;
2665 }
2666
2667 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2668 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2669 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2670
2671 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2672 define(
2673 $ArrayIteratorPrototype$, 'next',
2674 function next() {
2675 var o = strict(this);
2676 if (Type(o) !== 'object') throw TypeError();
2677 var a = o['[[IteratedObject]]'],
2678 index = o['[[ArrayIteratorNextIndex]]'],
2679 itemKind = o['[[ArrayIterationKind]]'],
2680 lenValue = a.length,
2681 len = ToUint32(lenValue),
2682 elementKey,
2683 elementValue;
2684 if (itemKind.indexOf('sparse') !== -1) {
2685 var found = false;
2686 while (!found && index < len) {
2687 elementKey = String(index);
2688 found = HasProperty(a, elementKey);
2689 if (!found) {
2690 index += 1;
2691 }
2692 }
2693 }
2694 if (index >= len) {
2695 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2696 return CreateIterResultObject(undefined, true);
2697 }
2698 elementKey = index;
2699 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2700 if (itemKind.indexOf('value') !== -1)
2701 elementValue = a[elementKey];
2702 if (itemKind.indexOf('key+value') !== -1)
2703 return CreateIterResultObject([elementKey, elementValue], false);
2704 if (itemKind.indexOf('key') !== -1)
2705 return CreateIterResultObject(elementKey, false);
2706 if (itemKind === 'value')
2707 return CreateIterResultObject(elementValue, false);
2708 throw Error('Internal error');
2709 });
2710
2711 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2712 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2713
2714 // 22.1.5.3 Properties of Array Iterator Instances
2715
2716
2717 // ---------------------------------------
2718 // 22.2 TypedArray Objects
2719 // ---------------------------------------
2720
2721 // See typedarray.js for TypedArray polyfill
2722
2723 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2724 'Int16Array', 'Uint16Array',
2725 'Int32Array', 'Uint32Array',
2726 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2727 if (!($TypedArrayName$ in global))
2728 return;
2729 var $TypedArray$ = global[$TypedArrayName$];
2730
2731 // 22.2.1 The %TypedArray% Intrinsic Object
2732 // 22.2.1.1 %TypedArray% ( length )
2733 // 22.2.1.2 %TypedArray% ( typedArray )
2734 // 22.2.1.3 %TypedArray% ( object )
2735 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2736 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2737 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2738
2739 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2740 define(
2741 $TypedArray$, 'from',
2742 function from(source) {
2743 var mapfn = arguments[1];
2744 var thisArg = arguments[2];
2745
2746 var c = strict(this);
2747 if (!IsConstructor(c)) throw TypeError();
2748 if (mapfn === undefined) {
2749 var mapping = false;
2750 } else {
2751 if (IsCallable(mapfn)) throw TypeError();
2752 var t = thisArg;
2753 mapping = true;
2754 }
2755 var usingIterator = GetMethod(source, $$iterator);
2756 if (usingIterator !== undefined) {
2757 var iterator = GetIterator(source, usingIterator);
2758 var values = [];
2759 var next = true;
2760 while (next !== false) {
2761 next = IteratorStep(iterator);
2762 if (next !== false) {
2763 var nextValue = IteratorValue(next);
2764 values.push(nextValue);
2765 }
2766 }
2767 var len = values.length;
2768 var newObj = new c(len);
2769 var k = 0;
2770 while (k < len) {
2771 var kValue = values.shift();
2772 if (mapping) {
2773 var mappedValue = mapfn.call(t, kValue);
2774 } else {
2775 mappedValue = kValue;
2776 }
2777 newObj[k] = mappedValue;
2778 ++k;
2779 }
2780 console.assert(values.length === 0);
2781 return newObj;
2782 }
2783 var arrayLike = ToObject(source);
2784 var lenValue = arrayLike.length;
2785 len = ToLength(lenValue);
2786 newObj = new c(len);
2787 k = 0;
2788 while (k < len) {
2789 kValue = arrayLike[k];
2790 if (mapping) {
2791 mappedValue = mapfn.call(t, kValue, k);
2792 } else {
2793 mappedValue = kValue;
2794 }
2795 newObj[k] = mappedValue;
2796 ++k;
2797 }
2798 return newObj;
2799 });
2800
2801 // 22.2.2.2 %TypedArray%.of ( ...items )
2802 define(
2803 $TypedArray$, 'of',
2804 function of() {
2805 var items = arguments;
2806
2807 var len = items.length;
2808 var c = strict(this);
2809 var newObj = new c(len);
2810 var k = 0;
2811 while (k < len) {
2812 newObj[k] = items[k];
2813 ++k;
2814 }
2815 return newObj;
2816 });
2817
2818 // 22.2.2.3 %TypedArray%.prototype
2819 // 22.2.2.4 get %TypedArray% [ @@species ]
2820 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2821 // 22.2.3.1 get %TypedArray%.prototype.buffer
2822 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2823 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2824 // 22.2.3.4 %TypedArray%.prototype.constructor
2825
2826 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2827 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2828
2829 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2830 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2831
2832 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2833 define($TypedArray$.prototype, 'every', Array.prototype.every);
2834
2835 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2836 define(
2837 $TypedArray$.prototype, 'fill',
2838 //Array.prototype.fill // Doesn't work in Safari 7
2839 function fill(value/*, start, end*/) {
2840 var start = arguments[1],
2841 end = arguments[2];
2842
2843 var o = ToObject(this);
2844 var lenVal = o.length;
2845 var len = ToLength(lenVal);
2846 len = max(len, 0);
2847 var relativeStart = ToInteger(start);
2848 var k;
2849 if (relativeStart < 0) k = max((len + relativeStart), 0);
2850 else k = min(relativeStart, len);
2851 var relativeEnd;
2852 if (end === undefined) relativeEnd = len;
2853 else relativeEnd = ToInteger(end);
2854 var final;
2855 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2856 else final = min(relativeEnd, len);
2857 while (k < final) {
2858 var pk = String(k);
2859 o[pk] = value;
2860 k += 1;
2861 }
2862 return o;
2863 });
2864
2865 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2866 define(
2867 $TypedArray$.prototype, 'filter',
2868 function filter(callbackfn) {
2869 var thisArg = arguments[1];
2870
2871 var o = ToObject(this);
2872 var lenVal = o.length;
2873 var len = ToLength(lenVal);
2874 if (!IsCallable(callbackfn)) throw TypeError();
2875 var t = thisArg;
2876 var c = o.constructor;
2877 var kept = [];
2878 var k = 0;
2879 var captured = 0;
2880 while (k < len) {
2881 var kValue = o[k];
2882 var selected = callbackfn.call(t, kValue, k, o);
2883 if (selected) {
2884 kept.push(kValue);
2885 ++captured;
2886 }
2887 ++k;
2888 }
2889 var a = new c(captured);
2890 var n = 0;
2891 for (var i = 0; i < kept.length; ++i) {
2892 var e = kept[i];
2893 a[n] = e;
2894 ++n;
2895 }
2896 return a;
2897 });
2898
2899 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2900 define($TypedArray$.prototype, 'find', Array.prototype.find);
2901
2902 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2903 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2904
2905 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2906 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2907
2908 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2909 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2910
2911 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2912 define($TypedArray$.prototype, 'join', Array.prototype.join);
2913
2914 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2915 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2916
2917 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2918 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2919
2920 // 22.2.3.17 get %TypedArray%.prototype.length
2921
2922 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2923 define(
2924 $TypedArray$.prototype, 'map',
2925 function map(callbackfn) {
2926 var thisArg = arguments[1];
2927
2928 var o = ToObject(this);
2929 var lenValue = o.length;
2930 var len = ToLength(lenValue);
2931 if (!IsCallable(callbackfn)) throw TypeError();
2932 var t = thisArg;
2933 var a = undefined;
2934 var c = o.constructor;
2935 if (IsConstructor(c))
2936 a = new c(len);
2937 if (a === undefined)
2938 a = new Array(len);
2939 var k = 0;
2940 while (k < len) {
2941 var kPresent = HasProperty(o, k);
2942 if (kPresent) {
2943 var kValue = o[k];
2944 var mappedValue = callbackfn.call(t, kValue, k, o);
2945 a[k] = mappedValue;
2946 }
2947 ++k;
2948 }
2949 return a;
2950 });
2951
2952 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2953 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2954
2955 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2956 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2957
2958 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2959 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2960
2961 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2962 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2963 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2964
2965 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2966 define(
2967 $TypedArray$.prototype, 'slice',
2968 function slice(start, end) {
2969 var o = ToObject(this);
2970 var lenVal = o.length;
2971 var len = ToLength(lenVal);
2972 var relativeStart = ToInteger(start);
2973 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2974 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2975 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2976 var count = final - k;
2977 var c = o.constructor;
2978 if (IsConstructor(c)) {
2979 var a = new c(count);
2980 } else {
2981 throw TypeError();
2982 }
2983 var n = 0;
2984 while (k < final) {
2985 var kValue = o[k];
2986 a[n] = kValue;
2987 ++k;
2988 ++n;
2989 }
2990 return a;
2991 });
2992
2993 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2994 define($TypedArray$.prototype, 'some', Array.prototype.some);
2995
2996 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2997 define(
2998 $TypedArray$.prototype, 'sort',
2999 function sort() {
3000 var comparefn = arguments[0];
3001
3002 function sortCompare(x, y) {
3003 console.assert(Type(x) === 'number' && Type(y) === 'number');
3004 if (x !== x && y !== y) return +0;
3005 if (x !== x) return 1;
3006 if (y !== y) return -1;
3007 if (comparefn !== undefined) {
3008 return comparefn(x, y);
3009 }
3010 if (x < y) return -1;
3011 if (x > y) return 1;
3012 return +0;
3013 }
3014 return Array.prototype.sort.call(this, sortCompare);
3015 });
3016
3017 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3018 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3019 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3020
3021 // 22.2.3.29 %TypedArray%.prototype.values ( )
3022 define($TypedArray$.prototype, 'values', Array.prototype.values);
3023
3024 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3025 define(
3026 $TypedArray$.prototype, $$iterator,
3027 $TypedArray$.prototype.values
3028 );
3029
3030 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3031 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3032
3033 // 22.2.4 The TypedArray Constructors
3034 // 22.2.4.1TypedArray( ... argumentsList)
3035 // 22.2.5 Properties of the TypedArray Constructors
3036 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3037 // 22.2.5.2 TypedArray.prototype
3038 // 22.2.6 Properties of TypedArray Prototype Objects
3039 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3040 // 22.2.6.2 TypedArray.prototype.constructor
3041 // 22.2.7 Properties of TypedArray Instances
3042 });
3043
3044 // ---------------------------------------
3045 // 23 Keyed Collection
3046 // ---------------------------------------
3047
3048 // ---------------------------------------
3049 // 23.1 Map Objects
3050 // ---------------------------------------
3051
3052 (function() {
3053 // 23.1.1 The Map Constructor
3054
3055 // 23.1.1.1 Map ( [ iterable ] )
3056 /** @constructor */
3057 function Map(/*iterable*/) {
3058 var map = strict(this);
3059 var iterable = arguments[0];
3060
3061 if (Type(map) !== 'object') throw TypeError();
3062 if ('[[MapData]]' in map) throw TypeError();
3063
3064 if (iterable !== undefined) {
3065 var adder = map['set'];
3066 if (!IsCallable(adder)) throw TypeError();
3067 var iter = GetIterator(ToObject(iterable));
3068 }
3069 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3070 if (iter === undefined) return map;
3071 while (true) {
3072 var next = IteratorStep(iter);
3073 if (next === false)
3074 return map;
3075 var nextItem = IteratorValue(next);
3076 if (Type(nextItem) !== 'object') throw TypeError();
3077 var k = nextItem[0];
3078 var v = nextItem[1];
3079 adder.call(map, k, v);
3080 }
3081
3082 return map;
3083 }
3084
3085 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3086 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3087 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3088 (new global.Map([['a', 1]]).size !== 1))
3089 global.Map = Map;
3090
3091
3092 function MapDataIndexOf(mapData, key) {
3093 var i;
3094 if (key === key) return mapData.keys.indexOf(key);
3095 // Slow case for NaN
3096 for (i = 0; i < mapData.keys.length; i += 1)
3097 if (SameValueZero(mapData.keys[i], key)) return i;
3098 return -1;
3099 }
3100
3101 // 23.1.1.2 new Map ( ... argumentsList )
3102 // 23.1.2 Properties of the Map Constructor
3103 // 23.1.2.1 Map.prototype
3104 var $MapPrototype$ = {};
3105 Map.prototype = $MapPrototype$;
3106
3107 // 23.1.2.2 get Map [ @@species ]
3108
3109 // 23.1.3 Properties of the Map Prototype Object
3110 // 23.1.3.1 Map.prototype.clear ()
3111 define(
3112 Map.prototype, 'clear',
3113 function clear() {
3114 var m = strict(this);
3115 if (Type(m) !== 'object') throw TypeError();
3116 if (!('[[MapData]]' in m)) throw TypeError();
3117 if (m['[[MapData]]'] === undefined) throw TypeError();
3118 var entries = m['[[MapData]]'];
3119 entries.keys.length = 0;
3120 entries.values.length = 0;
3121 return undefined;
3122 });
3123
3124 // 23.1.3.2 Map.prototype.constructor
3125
3126 // 23.1.3.3 Map.prototype.delete ( key )
3127 define(
3128 Map.prototype, 'delete',
3129 function delete_(key) {
3130 var m = strict(this);
3131 if (Type(m) !== 'object') throw TypeError();
3132 if (!('[[MapData]]' in m)) throw TypeError();
3133 if (m['[[MapData]]'] === undefined) throw TypeError();
3134 var entries = m['[[MapData]]'];
3135 var i = MapDataIndexOf(entries, key);
3136 if (i < 0) return false;
3137 entries.keys[i] = empty;
3138 entries.values[i] = empty;
3139 return true;
3140 });
3141
3142 // 23.1.3.4 Map.prototype.entries ( )
3143 define(
3144 Map.prototype, 'entries',
3145 function entries() {
3146 var m = strict(this);
3147 if (Type(m) !== 'object') throw TypeError();
3148 return CreateMapIterator(m, 'key+value');
3149 });
3150
3151 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3152 define(
3153 Map.prototype, 'forEach',
3154 function forEach(callbackfn /*, thisArg*/) {
3155 var thisArg = arguments[1];
3156
3157 var m = strict(this);
3158 if (Type(m) !== 'object') throw TypeError();
3159 if (!('[[MapData]]' in m)) throw TypeError();
3160 if (m['[[MapData]]'] === undefined) throw TypeError();
3161 var entries = m['[[MapData]]'];
3162
3163 if (!IsCallable(callbackfn)) {
3164 throw TypeError('First argument to forEach is not callable.');
3165 }
3166 for (var i = 0; i < entries.keys.length; ++i) {
3167 if (entries.keys[i] !== empty) {
3168 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3169 }
3170 }
3171 return undefined;
3172 });
3173
3174 // 23.1.3.6 Map.prototype.get ( key )
3175 define(
3176 Map.prototype, 'get',
3177 function get(key) {
3178 var m = strict(this);
3179 if (Type(m) !== 'object') throw TypeError();
3180 if (!('[[MapData]]' in m)) throw TypeError();
3181 if (m['[[MapData]]'] === undefined) throw TypeError();
3182 var entries = m['[[MapData]]'];
3183 var i = MapDataIndexOf(entries, key);
3184 if (i >= 0) return entries.values[i];
3185 return undefined;
3186 });
3187
3188 // 23.1.3.7 Map.prototype.has ( key )
3189 define(
3190 Map.prototype, 'has',
3191 function has(key) {
3192 var m = strict(this);
3193 if (Type(m) !== 'object') throw TypeError();
3194 if (!('[[MapData]]' in m)) throw TypeError();
3195 if (m['[[MapData]]'] === undefined) throw TypeError();
3196 var entries = m['[[MapData]]'];
3197 if (MapDataIndexOf(entries, key) >= 0) return true;
3198 return false;
3199 });
3200
3201 // 23.1.3.8 Map.prototype.keys ( )
3202 define(
3203 Map.prototype, 'keys',
3204 function keys() {
3205 var m = strict(this);
3206 if (Type(m) !== 'object') throw TypeError();
3207 return CreateMapIterator(m, 'key');
3208 });
3209
3210 // 23.1.3.9 Map.prototype.set ( key , value )
3211 define(
3212 Map.prototype, 'set',
3213 function set(key, value) {
3214 var m = strict(this);
3215 if (Type(m) !== 'object') throw TypeError();
3216 if (!('[[MapData]]' in m)) throw TypeError();
3217 if (m['[[MapData]]'] === undefined) throw TypeError();
3218 var entries = m['[[MapData]]'];
3219 var i = MapDataIndexOf(entries, key);
3220 if (i < 0) i = entries.keys.length;
3221 if (SameValue(key, -0)) key = 0;
3222 entries.keys[i] = key;
3223 entries.values[i] = value;
3224 return m;
3225 });
3226
3227 // 23.1.3.10 get Map.prototype.size
3228 Object.defineProperty(
3229 Map.prototype, 'size', {
3230 get: function() {
3231 var m = strict(this);
3232 if (Type(m) !== 'object') throw TypeError();
3233 if (!('[[MapData]]' in m)) throw TypeError();
3234 if (m['[[MapData]]'] === undefined) throw TypeError();
3235 var entries = m['[[MapData]]'];
3236 var count = 0;
3237 for (var i = 0; i < entries.keys.length; ++i) {
3238 if (entries.keys[i] !== empty)
3239 count = count + 1;
3240 }
3241 return count;
3242 }
3243 });
3244
3245 // 23.1.3.11 Map.prototype.values ( )
3246 define(
3247 Map.prototype, 'values',
3248 function values() {
3249 var m = strict(this);
3250 if (Type(m) !== 'object') throw TypeError();
3251 return CreateMapIterator(m, 'value');
3252 });
3253
3254 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3255 define(
3256 Map.prototype, $$iterator,
3257 function() {
3258 var m = strict(this);
3259 if (Type(m) !== 'object') throw TypeError();
3260 return CreateMapIterator(m, 'key+value');
3261 });
3262
3263 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3264 define(global.Map.prototype, $$toStringTag, 'Map');
3265
3266 // 23.1.4 Properties of Map Instances
3267 // 23.1.5 Map Iterator Objects
3268
3269 /** @constructor */
3270 function MapIterator() {}
3271
3272 // 23.1.5.1 CreateMapIterator Abstract Operation
3273 function CreateMapIterator(map, kind) {
3274 if (Type(map) !== 'object') throw TypeError();
3275 if (!('[[MapData]]' in map)) throw TypeError();
3276 if (map['[[MapData]]'] === undefined) throw TypeError();
3277 var iterator = new MapIterator;
3278 set_internal(iterator, '[[Map]]', map);
3279 set_internal(iterator, '[[MapNextIndex]]', 0);
3280 set_internal(iterator, '[[MapIterationKind]]', kind);
3281 return iterator;
3282 }
3283
3284 // 23.1.5.2 The %MapIteratorPrototype% Object
3285 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3286 MapIterator.prototype = $MapIteratorPrototype$;
3287
3288 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3289 define(
3290 $MapIteratorPrototype$, 'next',
3291 function next() {
3292 var o = strict(this);
3293 if (Type(o) !== 'object') throw TypeError();
3294 var m = o['[[Map]]'],
3295 index = o['[[MapNextIndex]]'],
3296 itemKind = o['[[MapIterationKind]]'],
3297 entries = m['[[MapData]]'];
3298 while (index < entries.keys.length) {
3299 var e = {key: entries.keys[index], value: entries.values[index]};
3300 index = index += 1;
3301 set_internal(o, '[[MapNextIndex]]', index);
3302 if (e.key !== empty) {
3303 if (itemKind === 'key') {
3304 return CreateIterResultObject(e.key, false);
3305 } else if (itemKind === 'value') {
3306 return CreateIterResultObject(e.value, false);
3307 } else {
3308 return CreateIterResultObject([e.key, e.value], false);
3309 }
3310 }
3311 }
3312 return CreateIterResultObject(undefined, true);
3313 });
3314
3315 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3316 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3317
3318 // 23.1.5.3 Properties of Map Iterator Instances
3319 }());
3320
3321 // ---------------------------------------
3322 // 23.2 Set Objects
3323 // ---------------------------------------
3324
3325 (function() {
3326 // 23.2.1 The Set Constructor
3327 // 23.2.1.1 Set ( [ iterable ] )
3328
3329 /** @constructor */
3330 function Set(/*iterable*/) {
3331 var set = strict(this);
3332 var iterable = arguments[0];
3333
3334 if (Type(set) !== 'object') throw TypeError();
3335 if ('[[SetData]]' in set) throw TypeError();
3336
3337 if (iterable !== undefined) {
3338 var adder = set['add'];
3339 if (!IsCallable(adder)) throw TypeError();
3340 var iter = GetIterator(ToObject(iterable));
3341 }
3342 set_internal(set, '[[SetData]]', []);
3343 if (iter === undefined) return set;
3344 while (true) {
3345 var next = IteratorStep(iter);
3346 if (next === false)
3347 return set;
3348 var nextValue = IteratorValue(next);
3349 adder.call(set, nextValue);
3350 }
3351
3352 return set;
3353 }
3354
3355 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3356 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3357 (new global.Set([1]).size !== 1))
3358 global.Set = Set;
3359
3360 function SetDataIndexOf(setData, key) {
3361 var i;
3362 if (key === key)
3363 return setData.indexOf(key);
3364 // Slow case for NaN
3365 for (i = 0; i < setData.length; i += 1)
3366 if (SameValueZero(setData[i], key)) return i;
3367 return -1;
3368 }
3369
3370 // 23.2.1.2 new Set ( ...argumentsList )
3371 // 23.2.2 Properties of the Set Constructor
3372
3373 // 23.2.2.1 Set.prototype
3374 var $SetPrototype$ = {};
3375 Set.prototype = $SetPrototype$;
3376
3377 // 23.2.2.2 get Set [ @@species ]
3378 // 23.2.3 Properties of the Set Prototype Object
3379
3380 // 23.2.3.1 Set.prototype.add (value )
3381 define(
3382 Set.prototype, 'add',
3383 function add(value) {
3384 var s = strict(this);
3385 if (Type(s) !== 'object') throw TypeError();
3386 if (!('[[SetData]]' in s)) throw TypeError();
3387 if (s['[[SetData]]'] === undefined) throw TypeError();
3388 if (SameValue(value, -0)) value = 0;
3389 var entries = s['[[SetData]]'];
3390 var i = SetDataIndexOf(entries, value);
3391 if (i < 0) i = s['[[SetData]]'].length;
3392 s['[[SetData]]'][i] = value;
3393
3394 return s;
3395 });
3396
3397 // 23.2.3.2 Set.prototype.clear ()
3398 define(
3399 Set.prototype, 'clear',
3400 function clear() {
3401 var s = strict(this);
3402 if (Type(s) !== 'object') throw TypeError();
3403 if (!('[[SetData]]' in s)) throw TypeError();
3404 if (s['[[SetData]]'] === undefined) throw TypeError();
3405 var entries = s['[[SetData]]'];
3406 entries.length = 0;
3407 return undefined;
3408 });
3409
3410 // 23.2.3.3 Set.prototype.constructor
3411 // 23.2.3.4 Set.prototype.delete ( value )
3412 define(
3413 Set.prototype, 'delete',
3414 function delete_(value) {
3415 var s = strict(this);
3416 if (Type(s) !== 'object') throw TypeError();
3417 if (!('[[SetData]]' in s)) throw TypeError();
3418 if (s['[[SetData]]'] === undefined) throw TypeError();
3419 var entries = s['[[SetData]]'];
3420 var i = SetDataIndexOf(entries, value);
3421 if (i < 0) return false;
3422 entries[i] = empty;
3423 return true;
3424 });
3425
3426 // 23.2.3.5 Set.prototype.entries ( )
3427 define(
3428 Set.prototype, 'entries',
3429 function entries() {
3430 var s = strict(this);
3431 if (Type(s) !== 'object') throw TypeError();
3432 return CreateSetIterator(s, 'key+value');
3433 });
3434
3435 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3436 define(
3437 Set.prototype, 'forEach',
3438 function forEach(callbackfn/*, thisArg*/) {
3439 var thisArg = arguments[1];
3440
3441 var s = strict(this);
3442 if (Type(s) !== 'object') throw TypeError();
3443 if (!('[[SetData]]' in s)) throw TypeError();
3444 if (s['[[SetData]]'] === undefined) throw TypeError();
3445 var entries = s['[[SetData]]'];
3446
3447 if (!IsCallable(callbackfn)) {
3448 throw TypeError('First argument to forEach is not callable.');
3449 }
3450 for (var i = 0; i < entries.length; ++i) {
3451 if (entries[i] !== empty) {
3452 callbackfn.call(thisArg, entries[i], entries[i], s);
3453 }
3454 }
3455 });
3456
3457 // 23.2.3.7 Set.prototype.has ( value )
3458 define(
3459 Set.prototype, 'has',
3460 function has(key) {
3461 var s = strict(this);
3462 if (Type(s) !== 'object') throw TypeError();
3463 if (!('[[SetData]]' in s)) throw TypeError();
3464 if (s['[[SetData]]'] === undefined) throw TypeError();
3465 var entries = s['[[SetData]]'];
3466 return SetDataIndexOf(entries, key) !== -1;
3467 });
3468
3469 // 23.2.3.8 Set.prototype.keys ( )
3470 // See Set.prototype.values
3471
3472 // 23.2.3.9 get Set.prototype.size
3473 Object.defineProperty(
3474 Set.prototype, 'size', {
3475 get: function() {
3476 var s = strict(this);
3477 if (Type(s) !== 'object') throw TypeError();
3478 if (!('[[SetData]]' in s)) throw TypeError();
3479 if (s['[[SetData]]'] === undefined) throw TypeError();
3480 var entries = s['[[SetData]]'];
3481 var count = 0;
3482 for (var i = 0; i < entries.length; ++i) {
3483 if (entries[i] !== empty)
3484 count = count + 1;
3485 }
3486 return count;
3487 }
3488 });
3489
3490 // 23.2.3.10 Set.prototype.values ( )
3491 define(
3492 Set.prototype, 'values',
3493 function values() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 return CreateSetIterator(s, 'value');
3497 });
3498 // NOTE: function name is still 'values':
3499 Set.prototype.keys = Set.prototype.values;
3500
3501 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3502 define(
3503 Set.prototype, $$iterator,
3504 function() {
3505 var s = strict(this);
3506 if (Type(s) !== 'object') throw TypeError();
3507 return CreateSetIterator(s);
3508 });
3509
3510 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3511 define(global.Set.prototype, $$toStringTag, 'Set');
3512
3513 // 23.2.4 Properties of Set Instances
3514 // 23.2.5 Set Iterator Objects
3515 /** @constructor */
3516 function SetIterator() {}
3517
3518 // 23.2.5.1 CreateSetIterator Abstract Operation
3519 function CreateSetIterator(set, kind) {
3520 if (Type(set) !== 'object') throw TypeError();
3521 if (!('[[SetData]]' in set)) throw TypeError();
3522 if (set['[[SetData]]'] === undefined) throw TypeError();
3523 var iterator = new SetIterator;
3524 set_internal(iterator, '[[IteratedSet]]', set);
3525 set_internal(iterator, '[[SetNextIndex]]', 0);
3526 set_internal(iterator, '[[SetIterationKind]]', kind);
3527 return iterator;
3528 }
3529
3530 // 23.2.5.2 The %SetIteratorPrototype% Object
3531 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3532 SetIterator.prototype = $SetIteratorPrototype$;
3533
3534 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3535 define(
3536 $SetIteratorPrototype$, 'next',
3537 function next() {
3538 var o = strict(this);
3539 if (Type(o) !== 'object') throw TypeError();
3540 var s = o['[[IteratedSet]]'],
3541 index = o['[[SetNextIndex]]'],
3542 itemKind = o['[[SetIterationKind]]'],
3543 entries = s['[[SetData]]'];
3544 while (index < entries.length) {
3545 var e = entries[index];
3546 index = index += 1;
3547 set_internal(o, '[[SetNextIndex]]', index);
3548 if (e !== empty) {
3549 if (itemKind === 'key+value')
3550 return CreateIterResultObject([e, e], false);
3551 return CreateIterResultObject(e, false);
3552 }
3553 }
3554 return CreateIterResultObject(undefined, true);
3555 });
3556
3557 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3558 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3559
3560 // 23.2.5.3 Properties of Set Iterator Instances
3561
3562 }());
3563
3564 // ---------------------------------------
3565 // 23.3 WeakMap Objects
3566 // ---------------------------------------
3567
3568 (function() {
3569 // 23.3.1 The WeakMap Constructor
3570 // 23.3.1.1 WeakMap ( [ iterable ] )
3571 /** @constructor */
3572 function WeakMap(/*iterable*/) {
3573 var map = strict(this);
3574 var iterable = arguments[0];
3575
3576 if (Type(map) !== 'object') throw TypeError();
3577 if ('[[WeakMapData]]' in map) throw TypeError();
3578
3579 if (iterable !== undefined) {
3580 var adder = map['set'];
3581 if (!IsCallable(adder)) throw TypeError();
3582 var iter = GetIterator(ToObject(iterable));
3583 }
3584 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3585 if (iter === undefined) return map;
3586 while (true) {
3587 var next = IteratorStep(iter);
3588 if (next === false)
3589 return map;
3590 var nextValue = IteratorValue(next);
3591 if (Type(nextValue) !== 'object') throw TypeError();
3592 var k = nextValue[0];
3593 var v = nextValue[1];
3594 adder.call(map, k, v);
3595 }
3596
3597 return map;
3598 }
3599
3600 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3601 global.WeakMap = WeakMap;
3602
3603 // 23.3.2 Properties of the WeakMap Constructor
3604 // 23.3.2.1 WeakMap.prototype
3605 var $WeakMapPrototype$ = {};
3606 WeakMap.prototype = $WeakMapPrototype$;
3607
3608
3609
3610 // 23.3.2.2 WeakMap[ @@create ] ( )
3611 // 23.3.3 Properties of the WeakMap Prototype Object
3612
3613 // 23.3.3.1 WeakMap.prototype.constructor
3614
3615 // 23.3.3.2 WeakMap.prototype.delete ( key )
3616 define(
3617 WeakMap.prototype, 'delete',
3618 function delete_(key) {
3619 var M = strict(this);
3620 if (Type(M) !== 'object') throw TypeError();
3621 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3622 if (Type(key) !== 'object') throw TypeError('Expected object');
3623 return M['[[WeakMapData]]'].remove(key);
3624 });
3625
3626 // 23.3.3.3 WeakMap.prototype.get ( key )
3627 define(
3628 WeakMap.prototype, 'get',
3629 function get(key, defaultValue) {
3630 var M = strict(this);
3631 if (Type(M) !== 'object') throw TypeError();
3632 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3633 if (Type(key) !== 'object') throw TypeError('Expected object');
3634 return M['[[WeakMapData]]'].get(key, defaultValue);
3635 });
3636
3637 // 23.3.3.4 WeakMap.prototype.has ( key )
3638 define(
3639 WeakMap.prototype, 'has',
3640 function has(key) {
3641 var M = strict(this);
3642 if (Type(M) !== 'object') throw TypeError();
3643 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3644 if (Type(key) !== 'object') throw TypeError('Expected object');
3645 return M['[[WeakMapData]]'].has(key);
3646 });
3647
3648 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3649 define(
3650 WeakMap.prototype, 'set',
3651 function set(key, value) {
3652 var M = strict(this);
3653 if (Type(M) !== 'object') throw TypeError();
3654 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3655 if (Type(key) !== 'object') throw TypeError('Expected object');
3656 M['[[WeakMapData]]'].set(key, value);
3657 return M;
3658 });
3659
3660 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3661 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3662
3663 // 23.3.4 Properties of WeakMap Instances
3664
3665 // Polyfills for incomplete native implementations:
3666 (function() {
3667 var wm = new global.WeakMap();
3668 var orig = global.WeakMap.prototype.set;
3669 define(global.WeakMap.prototype, 'set', function set() {
3670 orig.apply(this, arguments);
3671 return this;
3672 }, wm.set({}, 0) !== wm);
3673 }());
3674 }());
3675
3676 // ---------------------------------------
3677 // 23.4 WeakSet Objects
3678 // ---------------------------------------
3679
3680 (function() {
3681 // 23.4.1 The WeakSet Constructor
3682 // 23.4.1.1 WeakSet ( [ iterable ] )
3683 /** @constructor */
3684 function WeakSet(/*iterable*/) {
3685 var set = strict(this);
3686 var iterable = arguments[0];
3687
3688 if (Type(set) !== 'object') throw TypeError();
3689 if ('[[WeakSetData]]' in set) throw TypeError();
3690
3691 if (iterable !== undefined) {
3692 var adder = set['add'];
3693 if (!IsCallable(adder)) throw TypeError();
3694 var iter = GetIterator(ToObject(iterable));
3695 }
3696 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3697 if (iter === undefined) return set;
3698 while (true) {
3699 var next = IteratorStep(iter);
3700 if (next === false)
3701 return set;
3702 var nextValue = IteratorValue(next);
3703 adder.call(set, nextValue);
3704 }
3705
3706 return set;
3707 }
3708
3709 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3710 global.WeakSet = WeakSet;
3711
3712 // 23.4.2 Properties of the WeakSet Constructor
3713 // 23.4.2.1 WeakSet.prototype
3714 var $WeakSetPrototype$ = {};
3715 WeakSet.prototype = $WeakSetPrototype$;
3716
3717 // 23.4.3 Properties of the WeakSet Prototype Object
3718 // 23.4.3.1 WeakSet.prototype.add (value )
3719 define(
3720 WeakSet.prototype, 'add',
3721 function add(value) {
3722 var S = strict(this);
3723 if (Type(S) !== 'object') throw TypeError();
3724 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3725 if (Type(value) !== 'object') throw TypeError('Expected object');
3726 S['[[WeakSetData]]'].set(value, true);
3727 return S;
3728 });
3729
3730 // 23.4.3.2 WeakSet.prototype.constructor
3731 // 23.4.3.3 WeakSet.prototype.delete ( value )
3732 define(
3733 WeakSet.prototype, 'delete',
3734 function delete_(value) {
3735 var S = strict(this);
3736 if (Type(S) !== 'object') throw TypeError();
3737 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3738 if (Type(value) !== 'object') throw TypeError('Expected object');
3739 return S['[[WeakSetData]]'].remove(value);
3740 });
3741
3742 // 23.4.3.4 WeakSet.prototype.has ( value )
3743 define(
3744 WeakSet.prototype, 'has',
3745 function has(key) {
3746 var S = strict(this);
3747 if (Type(S) !== 'object') throw TypeError();
3748 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3749 if (Type(key) !== 'object') throw TypeError('Expected object');
3750 return S['[[WeakSetData]]'].has(key);
3751 });
3752
3753 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3754 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3755
3756 // 23.4.4 Properties of WeakSet Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var ws = new global.WeakSet();
3761 var orig = global.WeakSet.prototype.add;
3762 define(global.WeakSet.prototype, 'add', function add() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, ws.add({}) !== ws);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 24 Structured Data
3771 // ---------------------------------------
3772
3773 // ---------------------------------------
3774 // 24.1 ArrayBuffer Objects
3775 // ---------------------------------------
3776
3777 // See typedarray.js for TypedArray polyfill
3778
3779 (function() {
3780 if (!('ArrayBuffer' in global))
3781 return;
3782
3783 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3784 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3785 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3786 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3787 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3788 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3789 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3790 // 24.1.2 The ArrayBuffer Constructor
3791 // 24.1.2.1 ArrayBuffer( length )
3792 // 24.1.3 Properties of the ArrayBuffer Constructor
3793
3794 // 24.1.3.1 ArrayBuffer.isView ( arg )
3795 define(
3796 ArrayBuffer, 'isView',
3797 function isView(arg) {
3798 if (Type(arg) !== 'object') return false;
3799 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3800 return false;
3801 });
3802
3803 // 24.1.3.2 ArrayBuffer.prototype
3804 // 24.1.3.3 get ArrayBuffer [ @@species ]
3805 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3806 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3807 // 24.1.4.2 ArrayBuffer.prototype.constructor
3808 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3809
3810 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3811 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3812
3813 // 24.1.5 Properties of the ArrayBuffer Instances
3814 }());
3815
3816 // ---------------------------------------
3817 // 24.2 DataView Objects
3818 // ---------------------------------------
3819
3820 // See typedarray.js for TypedArray polyfill
3821
3822 (function() {
3823 if (!('DataView' in global))
3824 return;
3825
3826 // 24.2.1 Abstract Operations For DataView Objects
3827 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3828 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3829 // 24.2.2 The DataView Constructor
3830 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3831 // 24.2.3 Properties of the DataView Constructor
3832 // 24.2.3.1 DataView.prototype
3833 // 24.2.4 Properties of the DataView Prototype Object
3834 // 24.2.4.1 get DataView.prototype.buffer
3835 // 24.2.4.2 get DataView.prototype.byteLength
3836 // 24.2.4.3 get DataView.prototype.byteOffset
3837 // 24.2.4.4 DataView.prototype.constructor
3838 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3841 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3842 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3843 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3844 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3845 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3846 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3848 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3849 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3850 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3851 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3852 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3853 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3854
3855 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3856 define(DataView.prototype, $$toStringTag, 'DataView');
3857
3858 // 24.2.5 Properties of DataView Instances
3859 }());
3860
3861 // ---------------------------------------
3862 // 24.3 The JSON Object
3863 // ---------------------------------------
3864
3865 // 24.3.1 JSON.parse ( text [ , reviver ] )
3866 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3867 // 24.3.3 JSON [ @@toStringTag ]
3868 define(JSON, $$toStringTag, 'JSON');
3869
3870 // ---------------------------------------
3871 // 25.1 Iteration
3872 // ---------------------------------------
3873
3874 // 25.1.1 Common Iteration Interfaces
3875 // 25.1.1.1 The Iterable Interface
3876 // 25.1.1.2 The Iterator Interface
3877 // 25.1.1.3 The IteratorResult Interface
3878
3879 // 25.1.2 The %IteratorPrototype% Object
3880 // Defined earlier, so other prototypes can reference it.
3881 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3882 define($IteratorPrototype$, $$iterator, function() {
3883 return this;
3884 });
3885
3886
3887 // ---------------------------------------
3888 // 25.4 Promise Objects
3889 // ---------------------------------------
3890
3891 (function() {
3892 // 25.4 Promise Objects
3893
3894 // 25.4.1 Promise Abstract Operations
3895
3896 // 25.4.1.1 PromiseCapability Records
3897 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3898
3899 function IfAbruptRejectPromise(value, capability) {
3900 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3901 return capability['[[Promise]]'];
3902 }
3903
3904 // 25.4.1.2 PromiseReaction Records
3905
3906 // 25.4.1.3 CreateResolvingFunctions ( promise )
3907
3908 function CreateResolvingFunctions(promise) {
3909 var alreadyResolved = {'[[value]]': false};
3910 var resolve = PromiseResolveFunction();
3911 set_internal(resolve, '[[Promise]]', promise);
3912 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3913 var reject = PromiseRejectFunction();
3914 set_internal(reject, '[[Promise]]', promise);
3915 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3916 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3917 }
3918
3919 // 25.4.1.3.1 Promise Reject Functions
3920
3921 function PromiseRejectFunction() {
3922 var F = function(reason) {
3923 console.assert(Type(F['[[Promise]]']) === 'object');
3924 var promise = F['[[Promise]]'];
3925 var alreadyResolved = F['[[AlreadyResolved]]'];
3926 if (alreadyResolved['[[value]]']) return undefined;
3927 set_internal(alreadyResolved, '[[value]]', true);
3928 return RejectPromise(promise, reason);
3929 };
3930 return F;
3931 }
3932
3933 // 25.4.1.3.2 Promise Resolve Functions
3934
3935 function PromiseResolveFunction() {
3936 var F = function(resolution) {
3937 console.assert(Type(F['[[Promise]]']) === 'object');
3938 var promise = F['[[Promise]]'];
3939 var alreadyResolved = F['[[AlreadyResolved]]'];
3940 if (alreadyResolved['[[value]]']) return undefined;
3941 set_internal(alreadyResolved, '[[value]]', true);
3942
3943 if (SameValue(resolution, promise)) {
3944 var selfResolutionError = TypeError();
3945 return RejectPromise(promise, selfResolutionError);
3946 }
3947 if (Type(resolution) !== 'object')
3948 return FulfillPromise(promise, resolution);
3949 try {
3950 var then = resolution['then'];
3951 } catch(then) {
3952 return RejectPromise(promise, then);
3953 }
3954 if (!IsCallable(then))
3955 return FulfillPromise(promise, resolution);
3956 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3957 return undefined;
3958 };
3959 return F;
3960 }
3961
3962 // 25.4.1.4 FulfillPromise ( promise, value )
3963
3964 function FulfillPromise(promise, value) {
3965 console.assert(promise['[[PromiseState]]'] === 'pending');
3966 var reactions = promise['[[PromiseFulfillReactions]]'];
3967 set_internal(promise, '[[PromiseResult]]', value);
3968 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3969 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3970 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3971 return TriggerPromiseReactions(reactions, value);
3972 }
3973
3974 // 25.4.1.5 NewPromiseCapability ( C )
3975
3976 function NewPromiseCapability(c) {
3977 // To keep Promise hermetic, this doesn't look much like the spec.
3978 return CreatePromiseCapabilityRecord(undefined, c);
3979 }
3980
3981 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3982
3983 function CreatePromiseCapabilityRecord(promise, constructor) {
3984 // To keep Promise hermetic, this doesn't look much like the spec.
3985 console.assert(IsConstructor(constructor));
3986 var promiseCapability = {};
3987 set_internal(promiseCapability, '[[Promise]]', promise);
3988 set_internal(promiseCapability, '[[Resolve]]', undefined);
3989 set_internal(promiseCapability, '[[Reject]]', undefined);
3990 var executor = GetCapabilitiesExecutor();
3991 set_internal(executor, '[[Capability]]', promiseCapability);
3992
3993 // NOTE: Differs from spec; object is constructed here
3994 var constructorResult = promise = new constructor(executor);
3995 set_internal(promiseCapability, '[[Promise]]', promise);
3996
3997 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3998 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3999 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4000 return promiseCapability;
4001 }
4002
4003 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4004
4005 function GetCapabilitiesExecutor() {
4006 var F = function(resolve, reject) {
4007 console.assert(F['[[Capability]]']);
4008 var promiseCapability = F['[[Capability]]'];
4009 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4010 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4011 set_internal(promiseCapability, '[[Resolve]]', resolve);
4012 set_internal(promiseCapability, '[[Reject]]', reject);
4013 return undefined;
4014 };
4015 return F;
4016 }
4017
4018 // 25.4.1.6 IsPromise ( x )
4019
4020 function IsPromise(x) {
4021 if (Type(x) !== 'object') return false;
4022 if (!('[[PromiseState]]' in x)) return false;
4023 if (x['[[PromiseState]]'] === undefined) return false;
4024 return true;
4025 }
4026
4027 // 25.4.1.7 RejectPromise ( promise, reason )
4028
4029 function RejectPromise(promise, reason) {
4030 console.assert(promise['[[PromiseState]]'] === 'pending');
4031 var reactions = promise['[[PromiseRejectReactions]]'];
4032 set_internal(promise, '[[PromiseResult]]', reason);
4033 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4034 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4035 set_internal(promise, '[[PromiseState]]', 'rejected');
4036 return TriggerPromiseReactions(reactions, reason);
4037 }
4038
4039 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4040
4041 function TriggerPromiseReactions(reactions, argument) {
4042 for (var i = 0, len = reactions.length; i < len; ++i)
4043 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4044 return undefined;
4045 }
4046
4047 // 25.4.2 Promise Jobs
4048
4049 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4050
4051 function PromiseReactionJob(reaction, argument) {
4052 var promiseCapability = reaction['[[Capabilities]]'];
4053 var handler = reaction['[[Handler]]'];
4054 var handlerResult, status;
4055 try {
4056 if (handler === 'Identity') handlerResult = argument;
4057 else if (handler === 'Thrower') throw argument;
4058 else handlerResult = handler.call(undefined, argument);
4059 } catch (handlerResult) {
4060 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4061 NextJob(status); return;
4062 }
4063 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4064 NextJob(status);
4065 }
4066
4067 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4068
4069 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4070 // SPEC BUG: promise vs. promiseToResolve
4071 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4072 try {
4073 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4074 resolvingFunctions['[[Reject]]']);
4075 } catch (thenCallResult) {
4076 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4077 NextJob(status); return;
4078 }
4079 NextJob(thenCallResult);
4080 }
4081
4082 // 25.4.3 The Promise Constructor
4083
4084 // 25.4.3.1 Promise ( executor )
4085
4086 function Promise(executor) {
4087 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4088 Object.defineProperty(this, '[[PromiseState]]', config);
4089 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4090 Object.defineProperty(this, '[[PromiseResult]]', config);
4091 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4092 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4093
4094 var promise = this;
4095 if (Type(promise) !== 'object') throw new TypeError();
4096 if (!('[[PromiseState]]' in promise)) throw TypeError();
4097 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4098 if (!IsCallable(executor)) throw TypeError();
4099
4100 set_internal(promise, '[[PromiseConstructor]]', Promise);
4101
4102 return InitializePromise(promise, executor);
4103 }
4104
4105 // 25.4.3.1.1 InitializePromise ( promise, executor )
4106
4107 function InitializePromise(promise, executor) {
4108 console.assert('[[PromiseState]]' in promise);
4109 console.assert(IsCallable(executor));
4110 set_internal(promise, '[[PromiseState]]', 'pending');
4111 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4112 set_internal(promise, '[[PromiseRejectReactions]]', []);
4113 var resolvingFunctions = CreateResolvingFunctions(promise);
4114 try {
4115 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4116 resolvingFunctions['[[Reject]]']);
4117 } catch (completion) {
4118 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4119 }
4120 return promise;
4121 }
4122
4123 // 25.4.4 Properties of the Promise Constructor
4124 // 25.4.4.1 Promise.all ( iterable )
4125
4126 define(Promise, 'all', function all(iterable) {
4127 var c = strict(this);
4128 var promiseCapability = NewPromiseCapability(c);
4129 try {
4130 var iterator = GetIterator(iterable);
4131 } catch (value) {
4132 promiseCapability['[[Reject]]'].call(undefined, value);
4133 return promiseCapability['[[Promise]]'];
4134 }
4135 var values = [];
4136 var remainingElementsCount = { value: 1 };
4137 var index = 0;
4138 while (true) {
4139 try {
4140 var next = IteratorStep(iterator);
4141 } catch (value) {
4142 promiseCapability['[[Reject]]'].call(undefined, value);
4143 return promiseCapability['[[Promise]]'];
4144 }
4145 if (!next) {
4146 remainingElementsCount.value -= 1;
4147 if (remainingElementsCount.value === 0) {
4148 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4149
4150
4151 }
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextValue = IteratorValue(next);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 try {
4161 var nextPromise = c.resolve(nextValue);
4162 } catch (value) {
4163 promiseCapability['[[Reject]]'].call(undefined, value);
4164 return promiseCapability['[[Promise]]'];
4165 }
4166 var resolveElement = PromiseAllResolveElementFunction();
4167 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4168 set_internal(resolveElement, '[[Index]]', index);
4169 set_internal(resolveElement, '[[Values]]', values);
4170 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4171 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4172 remainingElementsCount.value += 1;
4173 try {
4174 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4175 } catch (value) {
4176 promiseCapability['[[Reject]]'].call(undefined, value);
4177 return promiseCapability['[[Promise]]'];
4178 }
4179 index += 1;
4180 }
4181 });
4182
4183 // 25.4.4.1.1 Promise.all Resolve Element Functions
4184
4185 function PromiseAllResolveElementFunction() {
4186 var F = function(x) {
4187 var alreadyCalled = F['[[AlreadyCalled]]'];
4188 if (alreadyCalled.value) return undefined;
4189 alreadyCalled.value = true;
4190 var index = F['[[Index]]'];
4191 var values = F['[[Values]]'];
4192 var promiseCapability = F['[[Capabilities]]'];
4193 var remainingElementsCount = F['[[RemainingElements]]'];
4194 try {
4195 values[index] = x;
4196 } catch (result) {
4197 promiseCapability['[[Reject]]'].call(undefined, result);
4198 return promiseCapability['[[Promise]]'];
4199 }
4200 remainingElementsCount.value -= 1;
4201 if (remainingElementsCount.value === 0)
4202 return promiseCapability['[[Resolve]]'].call(undefined, values);
4203 return undefined;
4204 };
4205 return F;
4206 }
4207
4208 // 25.4.4.2 Promise.prototype
4209
4210 Promise.prototype = {};
4211
4212 // 25.4.4.3 Promise.race ( iterable )
4213
4214 define(Promise, 'race', function race(iterable) {
4215 var c = strict(this);
4216 var promiseCapability = NewPromiseCapability(c);
4217 try {
4218 var iterator = GetIterator(iterable);
4219 } catch (value) {
4220 promiseCapability['[[Reject]]'].call(undefined, value);
4221 return promiseCapability['[[Promise]]'];
4222 }
4223 while (true) {
4224 try {
4225 var next = IteratorStep(iterator);
4226 } catch (value) {
4227 promiseCapability['[[Reject]]'].call(undefined, value);
4228 return promiseCapability['[[Promise]]'];
4229 }
4230 if (!next) return promiseCapability['[[Promise]]'];
4231 try {
4232 var nextValue = IteratorValue(next);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 var nextPromise = c.resolve(nextValue);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 try {
4244 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4245 } catch (value) {
4246 promiseCapability['[[Reject]]'].call(undefined, value);
4247 return promiseCapability['[[Promise]]'];
4248 }
4249 }
4250 });
4251
4252 // 25.4.4.4 Promise.reject ( r )
4253
4254 define(Promise, 'reject', function reject(r) {
4255 var c = strict(this);
4256 var promiseCapability = NewPromiseCapability(c);
4257 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4258 return promiseCapability['[[Promise]]'];
4259 });
4260
4261 // 25.4.4.5 Promise.resolve ( x )
4262
4263 define(Promise, 'resolve', function resolve(x) {
4264 var c = strict(this);
4265 if (IsPromise(x)) {
4266 var constructor = x['[[PromiseConstructor]]'];
4267 if (SameValue(constructor, c)) return x;
4268 }
4269 var promiseCapability = NewPromiseCapability(c);
4270 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4271 return promiseCapability['[[Promise]]'];
4272 });
4273
4274 // 25.4.4.6 Promise [ @@create ] ( )
4275 // 25.4.4.6.1 AllocatePromise ( constructor )
4276 // 25.4.5 Properties of the Promise Prototype Object
4277 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4278
4279 define(Promise.prototype, 'catch', function catch_(onRejected) {
4280 var promise = this;
4281 return promise.then(undefined, onRejected);
4282 });
4283
4284 // 25.4.5.2 Promise.prototype.constructor
4285
4286 Promise.prototype.constructor = Promise;
4287
4288 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4289
4290 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4291 var promise = this;
4292 if (!IsPromise(promise)) throw TypeError();
4293 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4294 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4295 var c = promise.constructor;
4296 var promiseCapability = NewPromiseCapability(c);
4297 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4298 '[[Handler]]': onFulfilled };
4299 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4300 '[[Handler]]': onRejected };
4301 if (promise['[[PromiseState]]'] === 'pending') {
4302 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4303 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4304 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4305 var value = promise['[[PromiseResult]]'];
4306 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4307 } else if (promise['[[PromiseState]]'] === 'rejected') {
4308 var reason = promise['[[PromiseResult]]'];
4309 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4310 }
4311 return promiseCapability['[[Promise]]'];
4312 });
4313
4314 // 25.4.6 Properties of Promise Instances
4315
4316 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4317 global.Promise = Promise;
4318
4319 // Patch early Promise.cast vs. Promise.resolve implementations
4320 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4321 }());
4322
4323 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4324 define(Promise.prototype, $$toStringTag, 'Promise');
4325
4326 // ---------------------------------------
4327 // 26 Reflection
4328 // ---------------------------------------
4329
4330 (function() {
4331 // 26.1 The Reflect Object
4332 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4333 global.Reflect = {};
4334
4335 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4336 define(
4337 Reflect, 'apply',
4338 function apply(target, thisArgument, argumentsList) {
4339 if (!IsCallable(target)) throw TypeError();
4340 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4341 });
4342
4343 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4344 define(
4345 Reflect, 'construct',
4346 function construct(target, argumentsList) {
4347 return __cons(target, argumentsList);
4348 });
4349
4350 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4351 define(
4352 Reflect, 'defineProperty',
4353 function defineProperty(target, propertyKey, attributes) {
4354 try {
4355 Object.defineProperty(target, propertyKey, attributes);
4356 return true;
4357 } catch (_) {
4358 return false;
4359 }
4360 });
4361
4362 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4363 define(
4364 Reflect, 'deleteProperty',
4365 function deleteProperty(target,name) {
4366 try {
4367 delete target[name];
4368 return !HasOwnProperty(target, name);
4369 } catch (_) {
4370 return false;
4371 }
4372 });
4373
4374 // 26.1.5 Reflect.enumerate ( target )
4375 define(
4376 Reflect, 'enumerate',
4377 function enumerate(target) {
4378 target = ToObject(target);
4379 var iterator = Enumerate(target);
4380 return iterator;
4381 });
4382
4383 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4384 define(
4385 Reflect, 'get',
4386 function get(target, name, receiver) {
4387 target = ToObject(target);
4388 name = String(name);
4389 receiver = (receiver === undefined) ? target : ToObject(receiver);
4390 var desc = getPropertyDescriptor(target, name);
4391 if (desc && 'get' in desc)
4392 return Function.prototype.call.call(desc['get'], receiver);
4393 return target[name];
4394 });
4395
4396 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4397 define(
4398 Reflect, 'getOwnPropertyDescriptor',
4399 Object.getOwnPropertyDescriptor);
4400
4401 // 26.1.8 Reflect.getPrototypeOf ( target )
4402 define(
4403 Reflect, 'getPrototypeOf',
4404 Object.getPrototypeOf);
4405
4406 // 26.1.9 Reflect.has ( target, propertyKey )
4407 define(
4408 Reflect, 'has',
4409 function has(target,name) {
4410 return String(name) in ToObject(target);
4411 });
4412
4413 // 26.1.10 Reflect.isExtensible (target)
4414 define(
4415 Reflect, 'isExtensible',
4416 Object.isExtensible);
4417
4418 // 26.1.11 Reflect.ownKeys ( target )
4419 define(
4420 Reflect, 'ownKeys',
4421 function ownKeys(target) {
4422 var obj = ToObject(target);
4423 return Object.getOwnPropertyNames(obj);
4424 });
4425
4426 // 26.1.12 Reflect.preventExtensions ( target )
4427 define(
4428 Reflect, 'preventExtensions',
4429 function preventExtensions(target) {
4430 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4431 });
4432
4433 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4434 define(
4435 Reflect, 'set',
4436 function set(target, name, value, receiver) {
4437 target = ToObject(target);
4438 name = String(name);
4439 receiver = (receiver === undefined) ? target : ToObject(receiver);
4440 var desc = getPropertyDescriptor(target, name);
4441 try {
4442 if (desc && 'set' in desc)
4443 Function.prototype.call.call(desc['set'], receiver, value);
4444 else
4445 target[name] = value;
4446 return true;
4447 } catch (_) {
4448 return false;
4449 }
4450 });
4451
4452 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4453 define(
4454 Reflect, 'setPrototypeOf',
4455 function setPrototypeOf(target, proto) {
4456 try {
4457 target.__proto__ = proto;
4458 return Reflect.getPrototypeOf(target) === proto;
4459 } catch(_) {
4460 return false;
4461 }
4462 });
4463
4464 }());
4465
4466 // ---------------------------------------
4467 // 26.2 Proxy Objects
4468 // ---------------------------------------
4469
4470 // Not polyfillable.
4471
4472 }(self));
4473
4474 // This helper is defined outside the main scope so that the use of
4475 // 'eval' does not taint the scope for minifiers.
4476 function __cons(t, a) {
4477 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4478 }
4479 </script>
4480 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
4481 'use strict'
4482
4483 exports.byteLength = byteLength
4484 exports.toByteArray = toByteArray
4485 exports.fromByteArray = fromByteArray
4486
4487 var lookup = []
4488 var revLookup = []
4489 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4490
4491 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4492 for (var i = 0, len = code.length; i < len; ++i) {
4493 lookup[i] = code[i]
4494 revLookup[code.charCodeAt(i)] = i
4495 }
4496
4497 revLookup['-'.charCodeAt(0)] = 62
4498 revLookup['_'.charCodeAt(0)] = 63
4499
4500 function placeHoldersCount (b64) {
4501 var len = b64.length
4502 if (len % 4 > 0) {
4503 throw new Error('Invalid string. Length must be a multiple of 4')
4504 }
4505
4506 // the number of equal signs (place holders)
4507 // if there are two placeholders, than the two characters before it
4508 // represent one byte
4509 // if there is only one, then the three characters before it represent 2 bytes
4510 // this is just a cheap hack to not do indexOf twice
4511 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4512 }
4513
4514 function byteLength (b64) {
4515 // base64 is 4/3 + up to two characters of the original data
4516 return b64.length * 3 / 4 - placeHoldersCount(b64)
4517 }
4518
4519 function toByteArray (b64) {
4520 var i, j, l, tmp, placeHolders, arr
4521 var len = b64.length
4522 placeHolders = placeHoldersCount(b64)
4523
4524 arr = new Arr(len * 3 / 4 - placeHolders)
4525
4526 // if there are placeholders, only get up to the last complete 4 chars
4527 l = placeHolders > 0 ? len - 4 : len
4528
4529 var L = 0
4530
4531 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4532 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4533 arr[L++] = (tmp >> 16) & 0xFF
4534 arr[L++] = (tmp >> 8) & 0xFF
4535 arr[L++] = tmp & 0xFF
4536 }
4537
4538 if (placeHolders === 2) {
4539 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4540 arr[L++] = tmp & 0xFF
4541 } else if (placeHolders === 1) {
4542 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4543 arr[L++] = (tmp >> 8) & 0xFF
4544 arr[L++] = tmp & 0xFF
4545 }
4546
4547 return arr
4548 }
4549
4550 function tripletToBase64 (num) {
4551 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4552 }
4553
4554 function encodeChunk (uint8, start, end) {
4555 var tmp
4556 var output = []
4557 for (var i = start; i < end; i += 3) {
4558 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4559 output.push(tripletToBase64(tmp))
4560 }
4561 return output.join('')
4562 }
4563
4564 function fromByteArray (uint8) {
4565 var tmp
4566 var len = uint8.length
4567 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4568 var output = ''
4569 var parts = []
4570 var maxChunkLength = 16383 // must be multiple of 3
4571
4572 // go through the array every three bytes, we'll deal with trailing stuff later
4573 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4574 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4575 }
4576
4577 // pad the end with zeros, but make sure to not forget the extra bytes
4578 if (extraBytes === 1) {
4579 tmp = uint8[len - 1]
4580 output += lookup[tmp >> 2]
4581 output += lookup[(tmp << 4) & 0x3F]
4582 output += '=='
4583 } else if (extraBytes === 2) {
4584 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4585 output += lookup[tmp >> 10]
4586 output += lookup[(tmp >> 4) & 0x3F]
4587 output += lookup[(tmp << 2) & 0x3F]
4588 output += '='
4589 }
4590
4591 parts.push(output)
4592
4593 return parts.join('')
4594 }
4595
4596 },{}],2:[function(require,module,exports){
4597 /*!
4598 * The buffer module from node.js, for the browser.
4599 *
4600 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4601 * @license MIT
4602 */
4603 /* eslint-disable no-proto */
4604
4605 'use strict'
4606
4607 var base64 = require('base64-js')
4608 var ieee754 = require('ieee754')
4609
4610 exports.Buffer = Buffer
4611 exports.SlowBuffer = SlowBuffer
4612 exports.INSPECT_MAX_BYTES = 50
4613
4614 var K_MAX_LENGTH = 0x7fffffff
4615 exports.kMaxLength = K_MAX_LENGTH
4616
4617 /**
4618 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4619 * === true Use Uint8Array implementation (fastest)
4620 * === false Print warning and recommend using `buffer` v4.x which has an Object
4621 * implementation (most compatible, even IE6)
4622 *
4623 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4624 * Opera 11.6+, iOS 4.2+.
4625 *
4626 * We report that the browser does not support typed arrays if the are not subclassable
4627 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4628 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4629 * for __proto__ and has a buggy typed array implementation.
4630 */
4631 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4632
4633 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4634 typeof console.error === 'function') {
4635 console.error(
4636 'This browser lacks typed array (Uint8Array) support which is required by ' +
4637 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4638 )
4639 }
4640
4641 function typedArraySupport () {
4642 // Can typed array instances can be augmented?
4643 try {
4644 var arr = new Uint8Array(1)
4645 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4646 return arr.foo() === 42
4647 } catch (e) {
4648 return false
4649 }
4650 }
4651
4652 function createBuffer (length) {
4653 if (length > K_MAX_LENGTH) {
4654 throw new RangeError('Invalid typed array length')
4655 }
4656 // Return an augmented `Uint8Array` instance
4657 var buf = new Uint8Array(length)
4658 buf.__proto__ = Buffer.prototype
4659 return buf
4660 }
4661
4662 /**
4663 * The Buffer constructor returns instances of `Uint8Array` that have their
4664 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4665 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4666 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4667 * returns a single octet.
4668 *
4669 * The `Uint8Array` prototype remains unmodified.
4670 */
4671
4672 function Buffer (arg, encodingOrOffset, length) {
4673 // Common case.
4674 if (typeof arg === 'number') {
4675 if (typeof encodingOrOffset === 'string') {
4676 throw new Error(
4677 'If encoding is specified then the first argument must be a string'
4678 )
4679 }
4680 return allocUnsafe(arg)
4681 }
4682 return from(arg, encodingOrOffset, length)
4683 }
4684
4685 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4686 if (typeof Symbol !== 'undefined' && Symbol.species &&
4687 Buffer[Symbol.species] === Buffer) {
4688 Object.defineProperty(Buffer, Symbol.species, {
4689 value: null,
4690 configurable: true,
4691 enumerable: false,
4692 writable: false
4693 })
4694 }
4695
4696 Buffer.poolSize = 8192 // not used by this implementation
4697
4698 function from (value, encodingOrOffset, length) {
4699 if (typeof value === 'number') {
4700 throw new TypeError('"value" argument must not be a number')
4701 }
4702
4703 if (value instanceof ArrayBuffer) {
4704 return fromArrayBuffer(value, encodingOrOffset, length)
4705 }
4706
4707 if (typeof value === 'string') {
4708 return fromString(value, encodingOrOffset)
4709 }
4710
4711 return fromObject(value)
4712 }
4713
4714 /**
4715 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4716 * if value is a number.
4717 * Buffer.from(str[, encoding])
4718 * Buffer.from(array)
4719 * Buffer.from(buffer)
4720 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4721 **/
4722 Buffer.from = function (value, encodingOrOffset, length) {
4723 return from(value, encodingOrOffset, length)
4724 }
4725
4726 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4727 // https://github.com/feross/buffer/pull/148
4728 Buffer.prototype.__proto__ = Uint8Array.prototype
4729 Buffer.__proto__ = Uint8Array
4730
4731 function assertSize (size) {
4732 if (typeof size !== 'number') {
4733 throw new TypeError('"size" argument must be a number')
4734 } else if (size < 0) {
4735 throw new RangeError('"size" argument must not be negative')
4736 }
4737 }
4738
4739 function alloc (size, fill, encoding) {
4740 assertSize(size)
4741 if (size <= 0) {
4742 return createBuffer(size)
4743 }
4744 if (fill !== undefined) {
4745 // Only pay attention to encoding if it's a string. This
4746 // prevents accidentally sending in a number that would
4747 // be interpretted as a start offset.
4748 return typeof encoding === 'string'
4749 ? createBuffer(size).fill(fill, encoding)
4750 : createBuffer(size).fill(fill)
4751 }
4752 return createBuffer(size)
4753 }
4754
4755 /**
4756 * Creates a new filled Buffer instance.
4757 * alloc(size[, fill[, encoding]])
4758 **/
4759 Buffer.alloc = function (size, fill, encoding) {
4760 return alloc(size, fill, encoding)
4761 }
4762
4763 function allocUnsafe (size) {
4764 assertSize(size)
4765 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4766 }
4767
4768 /**
4769 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4770 * */
4771 Buffer.allocUnsafe = function (size) {
4772 return allocUnsafe(size)
4773 }
4774 /**
4775 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4776 */
4777 Buffer.allocUnsafeSlow = function (size) {
4778 return allocUnsafe(size)
4779 }
4780
4781 function fromString (string, encoding) {
4782 if (typeof encoding !== 'string' || encoding === '') {
4783 encoding = 'utf8'
4784 }
4785
4786 if (!Buffer.isEncoding(encoding)) {
4787 throw new TypeError('"encoding" must be a valid string encoding')
4788 }
4789
4790 var length = byteLength(string, encoding) | 0
4791 var buf = createBuffer(length)
4792
4793 var actual = buf.write(string, encoding)
4794
4795 if (actual !== length) {
4796 // Writing a hex string, for example, that contains invalid characters will
4797 // cause everything after the first invalid character to be ignored. (e.g.
4798 // 'abxxcd' will be treated as 'ab')
4799 buf = buf.slice(0, actual)
4800 }
4801
4802 return buf
4803 }
4804
4805 function fromArrayLike (array) {
4806 var length = array.length < 0 ? 0 : checked(array.length) | 0
4807 var buf = createBuffer(length)
4808 for (var i = 0; i < length; i += 1) {
4809 buf[i] = array[i] & 255
4810 }
4811 return buf
4812 }
4813
4814 function fromArrayBuffer (array, byteOffset, length) {
4815 if (byteOffset < 0 || array.byteLength < byteOffset) {
4816 throw new RangeError('\'offset\' is out of bounds')
4817 }
4818
4819 if (array.byteLength < byteOffset + (length || 0)) {
4820 throw new RangeError('\'length\' is out of bounds')
4821 }
4822
4823 var buf
4824 if (byteOffset === undefined && length === undefined) {
4825 buf = new Uint8Array(array)
4826 } else if (length === undefined) {
4827 buf = new Uint8Array(array, byteOffset)
4828 } else {
4829 buf = new Uint8Array(array, byteOffset, length)
4830 }
4831
4832 // Return an augmented `Uint8Array` instance
4833 buf.__proto__ = Buffer.prototype
4834 return buf
4835 }
4836
4837 function fromObject (obj) {
4838 if (Buffer.isBuffer(obj)) {
4839 var len = checked(obj.length) | 0
4840 var buf = createBuffer(len)
4841
4842 if (buf.length === 0) {
4843 return buf
4844 }
4845
4846 obj.copy(buf, 0, 0, len)
4847 return buf
4848 }
4849
4850 if (obj) {
4851 if (isArrayBufferView(obj) || 'length' in obj) {
4852 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4853 return createBuffer(0)
4854 }
4855 return fromArrayLike(obj)
4856 }
4857
4858 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4859 return fromArrayLike(obj.data)
4860 }
4861 }
4862
4863 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4864 }
4865
4866 function checked (length) {
4867 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4868 // length is NaN (which is otherwise coerced to zero.)
4869 if (length >= K_MAX_LENGTH) {
4870 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4871 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4872 }
4873 return length | 0
4874 }
4875
4876 function SlowBuffer (length) {
4877 if (+length != length) { // eslint-disable-line eqeqeq
4878 length = 0
4879 }
4880 return Buffer.alloc(+length)
4881 }
4882
4883 Buffer.isBuffer = function isBuffer (b) {
4884 return b != null && b._isBuffer === true
4885 }
4886
4887 Buffer.compare = function compare (a, b) {
4888 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4889 throw new TypeError('Arguments must be Buffers')
4890 }
4891
4892 if (a === b) return 0
4893
4894 var x = a.length
4895 var y = b.length
4896
4897 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4898 if (a[i] !== b[i]) {
4899 x = a[i]
4900 y = b[i]
4901 break
4902 }
4903 }
4904
4905 if (x < y) return -1
4906 if (y < x) return 1
4907 return 0
4908 }
4909
4910 Buffer.isEncoding = function isEncoding (encoding) {
4911 switch (String(encoding).toLowerCase()) {
4912 case 'hex':
4913 case 'utf8':
4914 case 'utf-8':
4915 case 'ascii':
4916 case 'latin1':
4917 case 'binary':
4918 case 'base64':
4919 case 'ucs2':
4920 case 'ucs-2':
4921 case 'utf16le':
4922 case 'utf-16le':
4923 return true
4924 default:
4925 return false
4926 }
4927 }
4928
4929 Buffer.concat = function concat (list, length) {
4930 if (!Array.isArray(list)) {
4931 throw new TypeError('"list" argument must be an Array of Buffers')
4932 }
4933
4934 if (list.length === 0) {
4935 return Buffer.alloc(0)
4936 }
4937
4938 var i
4939 if (length === undefined) {
4940 length = 0
4941 for (i = 0; i < list.length; ++i) {
4942 length += list[i].length
4943 }
4944 }
4945
4946 var buffer = Buffer.allocUnsafe(length)
4947 var pos = 0
4948 for (i = 0; i < list.length; ++i) {
4949 var buf = list[i]
4950 if (!Buffer.isBuffer(buf)) {
4951 throw new TypeError('"list" argument must be an Array of Buffers')
4952 }
4953 buf.copy(buffer, pos)
4954 pos += buf.length
4955 }
4956 return buffer
4957 }
4958
4959 function byteLength (string, encoding) {
4960 if (Buffer.isBuffer(string)) {
4961 return string.length
4962 }
4963 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4964 return string.byteLength
4965 }
4966 if (typeof string !== 'string') {
4967 string = '' + string
4968 }
4969
4970 var len = string.length
4971 if (len === 0) return 0
4972
4973 // Use a for loop to avoid recursion
4974 var loweredCase = false
4975 for (;;) {
4976 switch (encoding) {
4977 case 'ascii':
4978 case 'latin1':
4979 case 'binary':
4980 return len
4981 case 'utf8':
4982 case 'utf-8':
4983 case undefined:
4984 return utf8ToBytes(string).length
4985 case 'ucs2':
4986 case 'ucs-2':
4987 case 'utf16le':
4988 case 'utf-16le':
4989 return len * 2
4990 case 'hex':
4991 return len >>> 1
4992 case 'base64':
4993 return base64ToBytes(string).length
4994 default:
4995 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4996 encoding = ('' + encoding).toLowerCase()
4997 loweredCase = true
4998 }
4999 }
5000 }
5001 Buffer.byteLength = byteLength
5002
5003 function slowToString (encoding, start, end) {
5004 var loweredCase = false
5005
5006 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5007 // property of a typed array.
5008
5009 // This behaves neither like String nor Uint8Array in that we set start/end
5010 // to their upper/lower bounds if the value passed is out of range.
5011 // undefined is handled specially as per ECMA-262 6th Edition,
5012 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5013 if (start === undefined || start < 0) {
5014 start = 0
5015 }
5016 // Return early if start > this.length. Done here to prevent potential uint32
5017 // coercion fail below.
5018 if (start > this.length) {
5019 return ''
5020 }
5021
5022 if (end === undefined || end > this.length) {
5023 end = this.length
5024 }
5025
5026 if (end <= 0) {
5027 return ''
5028 }
5029
5030 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5031 end >>>= 0
5032 start >>>= 0
5033
5034 if (end <= start) {
5035 return ''
5036 }
5037
5038 if (!encoding) encoding = 'utf8'
5039
5040 while (true) {
5041 switch (encoding) {
5042 case 'hex':
5043 return hexSlice(this, start, end)
5044
5045 case 'utf8':
5046 case 'utf-8':
5047 return utf8Slice(this, start, end)
5048
5049 case 'ascii':
5050 return asciiSlice(this, start, end)
5051
5052 case 'latin1':
5053 case 'binary':
5054 return latin1Slice(this, start, end)
5055
5056 case 'base64':
5057 return base64Slice(this, start, end)
5058
5059 case 'ucs2':
5060 case 'ucs-2':
5061 case 'utf16le':
5062 case 'utf-16le':
5063 return utf16leSlice(this, start, end)
5064
5065 default:
5066 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5067 encoding = (encoding + '').toLowerCase()
5068 loweredCase = true
5069 }
5070 }
5071 }
5072
5073 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5074 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5075 // reliably in a browserify context because there could be multiple different
5076 // copies of the 'buffer' package in use. This method works even for Buffer
5077 // instances that were created from another copy of the `buffer` package.
5078 // See: https://github.com/feross/buffer/issues/154
5079 Buffer.prototype._isBuffer = true
5080
5081 function swap (b, n, m) {
5082 var i = b[n]
5083 b[n] = b[m]
5084 b[m] = i
5085 }
5086
5087 Buffer.prototype.swap16 = function swap16 () {
5088 var len = this.length
5089 if (len % 2 !== 0) {
5090 throw new RangeError('Buffer size must be a multiple of 16-bits')
5091 }
5092 for (var i = 0; i < len; i += 2) {
5093 swap(this, i, i + 1)
5094 }
5095 return this
5096 }
5097
5098 Buffer.prototype.swap32 = function swap32 () {
5099 var len = this.length
5100 if (len % 4 !== 0) {
5101 throw new RangeError('Buffer size must be a multiple of 32-bits')
5102 }
5103 for (var i = 0; i < len; i += 4) {
5104 swap(this, i, i + 3)
5105 swap(this, i + 1, i + 2)
5106 }
5107 return this
5108 }
5109
5110 Buffer.prototype.swap64 = function swap64 () {
5111 var len = this.length
5112 if (len % 8 !== 0) {
5113 throw new RangeError('Buffer size must be a multiple of 64-bits')
5114 }
5115 for (var i = 0; i < len; i += 8) {
5116 swap(this, i, i + 7)
5117 swap(this, i + 1, i + 6)
5118 swap(this, i + 2, i + 5)
5119 swap(this, i + 3, i + 4)
5120 }
5121 return this
5122 }
5123
5124 Buffer.prototype.toString = function toString () {
5125 var length = this.length
5126 if (length === 0) return ''
5127 if (arguments.length === 0) return utf8Slice(this, 0, length)
5128 return slowToString.apply(this, arguments)
5129 }
5130
5131 Buffer.prototype.equals = function equals (b) {
5132 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5133 if (this === b) return true
5134 return Buffer.compare(this, b) === 0
5135 }
5136
5137 Buffer.prototype.inspect = function inspect () {
5138 var str = ''
5139 var max = exports.INSPECT_MAX_BYTES
5140 if (this.length > 0) {
5141 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5142 if (this.length > max) str += ' ... '
5143 }
5144 return '<Buffer ' + str + '>'
5145 }
5146
5147 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5148 if (!Buffer.isBuffer(target)) {
5149 throw new TypeError('Argument must be a Buffer')
5150 }
5151
5152 if (start === undefined) {
5153 start = 0
5154 }
5155 if (end === undefined) {
5156 end = target ? target.length : 0
5157 }
5158 if (thisStart === undefined) {
5159 thisStart = 0
5160 }
5161 if (thisEnd === undefined) {
5162 thisEnd = this.length
5163 }
5164
5165 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5166 throw new RangeError('out of range index')
5167 }
5168
5169 if (thisStart >= thisEnd && start >= end) {
5170 return 0
5171 }
5172 if (thisStart >= thisEnd) {
5173 return -1
5174 }
5175 if (start >= end) {
5176 return 1
5177 }
5178
5179 start >>>= 0
5180 end >>>= 0
5181 thisStart >>>= 0
5182 thisEnd >>>= 0
5183
5184 if (this === target) return 0
5185
5186 var x = thisEnd - thisStart
5187 var y = end - start
5188 var len = Math.min(x, y)
5189
5190 var thisCopy = this.slice(thisStart, thisEnd)
5191 var targetCopy = target.slice(start, end)
5192
5193 for (var i = 0; i < len; ++i) {
5194 if (thisCopy[i] !== targetCopy[i]) {
5195 x = thisCopy[i]
5196 y = targetCopy[i]
5197 break
5198 }
5199 }
5200
5201 if (x < y) return -1
5202 if (y < x) return 1
5203 return 0
5204 }
5205
5206 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5207 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5208 //
5209 // Arguments:
5210 // - buffer - a Buffer to search
5211 // - val - a string, Buffer, or number
5212 // - byteOffset - an index into `buffer`; will be clamped to an int32
5213 // - encoding - an optional encoding, relevant is val is a string
5214 // - dir - true for indexOf, false for lastIndexOf
5215 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5216 // Empty buffer means no match
5217 if (buffer.length === 0) return -1
5218
5219 // Normalize byteOffset
5220 if (typeof byteOffset === 'string') {
5221 encoding = byteOffset
5222 byteOffset = 0
5223 } else if (byteOffset > 0x7fffffff) {
5224 byteOffset = 0x7fffffff
5225 } else if (byteOffset < -0x80000000) {
5226 byteOffset = -0x80000000
5227 }
5228 byteOffset = +byteOffset // Coerce to Number.
5229 if (numberIsNaN(byteOffset)) {
5230 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5231 byteOffset = dir ? 0 : (buffer.length - 1)
5232 }
5233
5234 // Normalize byteOffset: negative offsets start from the end of the buffer
5235 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5236 if (byteOffset >= buffer.length) {
5237 if (dir) return -1
5238 else byteOffset = buffer.length - 1
5239 } else if (byteOffset < 0) {
5240 if (dir) byteOffset = 0
5241 else return -1
5242 }
5243
5244 // Normalize val
5245 if (typeof val === 'string') {
5246 val = Buffer.from(val, encoding)
5247 }
5248
5249 // Finally, search either indexOf (if dir is true) or lastIndexOf
5250 if (Buffer.isBuffer(val)) {
5251 // Special case: looking for empty string/buffer always fails
5252 if (val.length === 0) {
5253 return -1
5254 }
5255 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5256 } else if (typeof val === 'number') {
5257 val = val & 0xFF // Search for a byte value [0-255]
5258 if (typeof Uint8Array.prototype.indexOf === 'function') {
5259 if (dir) {
5260 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5261 } else {
5262 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5263 }
5264 }
5265 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5266 }
5267
5268 throw new TypeError('val must be string, number or Buffer')
5269 }
5270
5271 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5272 var indexSize = 1
5273 var arrLength = arr.length
5274 var valLength = val.length
5275
5276 if (encoding !== undefined) {
5277 encoding = String(encoding).toLowerCase()
5278 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5279 encoding === 'utf16le' || encoding === 'utf-16le') {
5280 if (arr.length < 2 || val.length < 2) {
5281 return -1
5282 }
5283 indexSize = 2
5284 arrLength /= 2
5285 valLength /= 2
5286 byteOffset /= 2
5287 }
5288 }
5289
5290 function read (buf, i) {
5291 if (indexSize === 1) {
5292 return buf[i]
5293 } else {
5294 return buf.readUInt16BE(i * indexSize)
5295 }
5296 }
5297
5298 var i
5299 if (dir) {
5300 var foundIndex = -1
5301 for (i = byteOffset; i < arrLength; i++) {
5302 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5303 if (foundIndex === -1) foundIndex = i
5304 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5305 } else {
5306 if (foundIndex !== -1) i -= i - foundIndex
5307 foundIndex = -1
5308 }
5309 }
5310 } else {
5311 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5312 for (i = byteOffset; i >= 0; i--) {
5313 var found = true
5314 for (var j = 0; j < valLength; j++) {
5315 if (read(arr, i + j) !== read(val, j)) {
5316 found = false
5317 break
5318 }
5319 }
5320 if (found) return i
5321 }
5322 }
5323
5324 return -1
5325 }
5326
5327 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5328 return this.indexOf(val, byteOffset, encoding) !== -1
5329 }
5330
5331 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5332 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5333 }
5334
5335 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5336 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5337 }
5338
5339 function hexWrite (buf, string, offset, length) {
5340 offset = Number(offset) || 0
5341 var remaining = buf.length - offset
5342 if (!length) {
5343 length = remaining
5344 } else {
5345 length = Number(length)
5346 if (length > remaining) {
5347 length = remaining
5348 }
5349 }
5350
5351 // must be an even number of digits
5352 var strLen = string.length
5353 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5354
5355 if (length > strLen / 2) {
5356 length = strLen / 2
5357 }
5358 for (var i = 0; i < length; ++i) {
5359 var parsed = parseInt(string.substr(i * 2, 2), 16)
5360 if (numberIsNaN(parsed)) return i
5361 buf[offset + i] = parsed
5362 }
5363 return i
5364 }
5365
5366 function utf8Write (buf, string, offset, length) {
5367 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5368 }
5369
5370 function asciiWrite (buf, string, offset, length) {
5371 return blitBuffer(asciiToBytes(string), buf, offset, length)
5372 }
5373
5374 function latin1Write (buf, string, offset, length) {
5375 return asciiWrite(buf, string, offset, length)
5376 }
5377
5378 function base64Write (buf, string, offset, length) {
5379 return blitBuffer(base64ToBytes(string), buf, offset, length)
5380 }
5381
5382 function ucs2Write (buf, string, offset, length) {
5383 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5384 }
5385
5386 Buffer.prototype.write = function write (string, offset, length, encoding) {
5387 // Buffer#write(string)
5388 if (offset === undefined) {
5389 encoding = 'utf8'
5390 length = this.length
5391 offset = 0
5392 // Buffer#write(string, encoding)
5393 } else if (length === undefined && typeof offset === 'string') {
5394 encoding = offset
5395 length = this.length
5396 offset = 0
5397 // Buffer#write(string, offset[, length][, encoding])
5398 } else if (isFinite(offset)) {
5399 offset = offset >>> 0
5400 if (isFinite(length)) {
5401 length = length >>> 0
5402 if (encoding === undefined) encoding = 'utf8'
5403 } else {
5404 encoding = length
5405 length = undefined
5406 }
5407 } else {
5408 throw new Error(
5409 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5410 )
5411 }
5412
5413 var remaining = this.length - offset
5414 if (length === undefined || length > remaining) length = remaining
5415
5416 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5417 throw new RangeError('Attempt to write outside buffer bounds')
5418 }
5419
5420 if (!encoding) encoding = 'utf8'
5421
5422 var loweredCase = false
5423 for (;;) {
5424 switch (encoding) {
5425 case 'hex':
5426 return hexWrite(this, string, offset, length)
5427
5428 case 'utf8':
5429 case 'utf-8':
5430 return utf8Write(this, string, offset, length)
5431
5432 case 'ascii':
5433 return asciiWrite(this, string, offset, length)
5434
5435 case 'latin1':
5436 case 'binary':
5437 return latin1Write(this, string, offset, length)
5438
5439 case 'base64':
5440 // Warning: maxLength not taken into account in base64Write
5441 return base64Write(this, string, offset, length)
5442
5443 case 'ucs2':
5444 case 'ucs-2':
5445 case 'utf16le':
5446 case 'utf-16le':
5447 return ucs2Write(this, string, offset, length)
5448
5449 default:
5450 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5451 encoding = ('' + encoding).toLowerCase()
5452 loweredCase = true
5453 }
5454 }
5455 }
5456
5457 Buffer.prototype.toJSON = function toJSON () {
5458 return {
5459 type: 'Buffer',
5460 data: Array.prototype.slice.call(this._arr || this, 0)
5461 }
5462 }
5463
5464 function base64Slice (buf, start, end) {
5465 if (start === 0 && end === buf.length) {
5466 return base64.fromByteArray(buf)
5467 } else {
5468 return base64.fromByteArray(buf.slice(start, end))
5469 }
5470 }
5471
5472 function utf8Slice (buf, start, end) {
5473 end = Math.min(buf.length, end)
5474 var res = []
5475
5476 var i = start
5477 while (i < end) {
5478 var firstByte = buf[i]
5479 var codePoint = null
5480 var bytesPerSequence = (firstByte > 0xEF) ? 4
5481 : (firstByte > 0xDF) ? 3
5482 : (firstByte > 0xBF) ? 2
5483 : 1
5484
5485 if (i + bytesPerSequence <= end) {
5486 var secondByte, thirdByte, fourthByte, tempCodePoint
5487
5488 switch (bytesPerSequence) {
5489 case 1:
5490 if (firstByte < 0x80) {
5491 codePoint = firstByte
5492 }
5493 break
5494 case 2:
5495 secondByte = buf[i + 1]
5496 if ((secondByte & 0xC0) === 0x80) {
5497 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5498 if (tempCodePoint > 0x7F) {
5499 codePoint = tempCodePoint
5500 }
5501 }
5502 break
5503 case 3:
5504 secondByte = buf[i + 1]
5505 thirdByte = buf[i + 2]
5506 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5507 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5508 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5509 codePoint = tempCodePoint
5510 }
5511 }
5512 break
5513 case 4:
5514 secondByte = buf[i + 1]
5515 thirdByte = buf[i + 2]
5516 fourthByte = buf[i + 3]
5517 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5518 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5519 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5520 codePoint = tempCodePoint
5521 }
5522 }
5523 }
5524 }
5525
5526 if (codePoint === null) {
5527 // we did not generate a valid codePoint so insert a
5528 // replacement char (U+FFFD) and advance only 1 byte
5529 codePoint = 0xFFFD
5530 bytesPerSequence = 1
5531 } else if (codePoint > 0xFFFF) {
5532 // encode to utf16 (surrogate pair dance)
5533 codePoint -= 0x10000
5534 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5535 codePoint = 0xDC00 | codePoint & 0x3FF
5536 }
5537
5538 res.push(codePoint)
5539 i += bytesPerSequence
5540 }
5541
5542 return decodeCodePointsArray(res)
5543 }
5544
5545 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5546 // the lowest limit is Chrome, with 0x10000 args.
5547 // We go 1 magnitude less, for safety
5548 var MAX_ARGUMENTS_LENGTH = 0x1000
5549
5550 function decodeCodePointsArray (codePoints) {
5551 var len = codePoints.length
5552 if (len <= MAX_ARGUMENTS_LENGTH) {
5553 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5554 }
5555
5556 // Decode in chunks to avoid "call stack size exceeded".
5557 var res = ''
5558 var i = 0
5559 while (i < len) {
5560 res += String.fromCharCode.apply(
5561 String,
5562 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5563 )
5564 }
5565 return res
5566 }
5567
5568 function asciiSlice (buf, start, end) {
5569 var ret = ''
5570 end = Math.min(buf.length, end)
5571
5572 for (var i = start; i < end; ++i) {
5573 ret += String.fromCharCode(buf[i] & 0x7F)
5574 }
5575 return ret
5576 }
5577
5578 function latin1Slice (buf, start, end) {
5579 var ret = ''
5580 end = Math.min(buf.length, end)
5581
5582 for (var i = start; i < end; ++i) {
5583 ret += String.fromCharCode(buf[i])
5584 }
5585 return ret
5586 }
5587
5588 function hexSlice (buf, start, end) {
5589 var len = buf.length
5590
5591 if (!start || start < 0) start = 0
5592 if (!end || end < 0 || end > len) end = len
5593
5594 var out = ''
5595 for (var i = start; i < end; ++i) {
5596 out += toHex(buf[i])
5597 }
5598 return out
5599 }
5600
5601 function utf16leSlice (buf, start, end) {
5602 var bytes = buf.slice(start, end)
5603 var res = ''
5604 for (var i = 0; i < bytes.length; i += 2) {
5605 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5606 }
5607 return res
5608 }
5609
5610 Buffer.prototype.slice = function slice (start, end) {
5611 var len = this.length
5612 start = ~~start
5613 end = end === undefined ? len : ~~end
5614
5615 if (start < 0) {
5616 start += len
5617 if (start < 0) start = 0
5618 } else if (start > len) {
5619 start = len
5620 }
5621
5622 if (end < 0) {
5623 end += len
5624 if (end < 0) end = 0
5625 } else if (end > len) {
5626 end = len
5627 }
5628
5629 if (end < start) end = start
5630
5631 var newBuf = this.subarray(start, end)
5632 // Return an augmented `Uint8Array` instance
5633 newBuf.__proto__ = Buffer.prototype
5634 return newBuf
5635 }
5636
5637 /*
5638 * Need to make sure that buffer isn't trying to write out of bounds.
5639 */
5640 function checkOffset (offset, ext, length) {
5641 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5642 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5643 }
5644
5645 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5646 offset = offset >>> 0
5647 byteLength = byteLength >>> 0
5648 if (!noAssert) checkOffset(offset, byteLength, this.length)
5649
5650 var val = this[offset]
5651 var mul = 1
5652 var i = 0
5653 while (++i < byteLength && (mul *= 0x100)) {
5654 val += this[offset + i] * mul
5655 }
5656
5657 return val
5658 }
5659
5660 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5661 offset = offset >>> 0
5662 byteLength = byteLength >>> 0
5663 if (!noAssert) {
5664 checkOffset(offset, byteLength, this.length)
5665 }
5666
5667 var val = this[offset + --byteLength]
5668 var mul = 1
5669 while (byteLength > 0 && (mul *= 0x100)) {
5670 val += this[offset + --byteLength] * mul
5671 }
5672
5673 return val
5674 }
5675
5676 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 1, this.length)
5679 return this[offset]
5680 }
5681
5682 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return this[offset] | (this[offset + 1] << 8)
5686 }
5687
5688 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 2, this.length)
5691 return (this[offset] << 8) | this[offset + 1]
5692 }
5693
5694 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5695 offset = offset >>> 0
5696 if (!noAssert) checkOffset(offset, 4, this.length)
5697
5698 return ((this[offset]) |
5699 (this[offset + 1] << 8) |
5700 (this[offset + 2] << 16)) +
5701 (this[offset + 3] * 0x1000000)
5702 }
5703
5704 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5705 offset = offset >>> 0
5706 if (!noAssert) checkOffset(offset, 4, this.length)
5707
5708 return (this[offset] * 0x1000000) +
5709 ((this[offset + 1] << 16) |
5710 (this[offset + 2] << 8) |
5711 this[offset + 3])
5712 }
5713
5714 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5715 offset = offset >>> 0
5716 byteLength = byteLength >>> 0
5717 if (!noAssert) checkOffset(offset, byteLength, this.length)
5718
5719 var val = this[offset]
5720 var mul = 1
5721 var i = 0
5722 while (++i < byteLength && (mul *= 0x100)) {
5723 val += this[offset + i] * mul
5724 }
5725 mul *= 0x80
5726
5727 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5728
5729 return val
5730 }
5731
5732 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5733 offset = offset >>> 0
5734 byteLength = byteLength >>> 0
5735 if (!noAssert) checkOffset(offset, byteLength, this.length)
5736
5737 var i = byteLength
5738 var mul = 1
5739 var val = this[offset + --i]
5740 while (i > 0 && (mul *= 0x100)) {
5741 val += this[offset + --i] * mul
5742 }
5743 mul *= 0x80
5744
5745 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5746
5747 return val
5748 }
5749
5750 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5751 offset = offset >>> 0
5752 if (!noAssert) checkOffset(offset, 1, this.length)
5753 if (!(this[offset] & 0x80)) return (this[offset])
5754 return ((0xff - this[offset] + 1) * -1)
5755 }
5756
5757 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5758 offset = offset >>> 0
5759 if (!noAssert) checkOffset(offset, 2, this.length)
5760 var val = this[offset] | (this[offset + 1] << 8)
5761 return (val & 0x8000) ? val | 0xFFFF0000 : val
5762 }
5763
5764 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5765 offset = offset >>> 0
5766 if (!noAssert) checkOffset(offset, 2, this.length)
5767 var val = this[offset + 1] | (this[offset] << 8)
5768 return (val & 0x8000) ? val | 0xFFFF0000 : val
5769 }
5770
5771 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5772 offset = offset >>> 0
5773 if (!noAssert) checkOffset(offset, 4, this.length)
5774
5775 return (this[offset]) |
5776 (this[offset + 1] << 8) |
5777 (this[offset + 2] << 16) |
5778 (this[offset + 3] << 24)
5779 }
5780
5781 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 4, this.length)
5784
5785 return (this[offset] << 24) |
5786 (this[offset + 1] << 16) |
5787 (this[offset + 2] << 8) |
5788 (this[offset + 3])
5789 }
5790
5791 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, true, 23, 4)
5795 }
5796
5797 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800 return ieee754.read(this, offset, false, 23, 4)
5801 }
5802
5803 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, true, 52, 8)
5807 }
5808
5809 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5810 offset = offset >>> 0
5811 if (!noAssert) checkOffset(offset, 8, this.length)
5812 return ieee754.read(this, offset, false, 52, 8)
5813 }
5814
5815 function checkInt (buf, value, offset, ext, max, min) {
5816 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5817 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5818 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5819 }
5820
5821 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5822 value = +value
5823 offset = offset >>> 0
5824 byteLength = byteLength >>> 0
5825 if (!noAssert) {
5826 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5827 checkInt(this, value, offset, byteLength, maxBytes, 0)
5828 }
5829
5830 var mul = 1
5831 var i = 0
5832 this[offset] = value & 0xFF
5833 while (++i < byteLength && (mul *= 0x100)) {
5834 this[offset + i] = (value / mul) & 0xFF
5835 }
5836
5837 return offset + byteLength
5838 }
5839
5840 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5841 value = +value
5842 offset = offset >>> 0
5843 byteLength = byteLength >>> 0
5844 if (!noAssert) {
5845 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5846 checkInt(this, value, offset, byteLength, maxBytes, 0)
5847 }
5848
5849 var i = byteLength - 1
5850 var mul = 1
5851 this[offset + i] = value & 0xFF
5852 while (--i >= 0 && (mul *= 0x100)) {
5853 this[offset + i] = (value / mul) & 0xFF
5854 }
5855
5856 return offset + byteLength
5857 }
5858
5859 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5860 value = +value
5861 offset = offset >>> 0
5862 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5863 this[offset] = (value & 0xff)
5864 return offset + 1
5865 }
5866
5867 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5868 value = +value
5869 offset = offset >>> 0
5870 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5871 this[offset] = (value & 0xff)
5872 this[offset + 1] = (value >>> 8)
5873 return offset + 2
5874 }
5875
5876 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5877 value = +value
5878 offset = offset >>> 0
5879 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5880 this[offset] = (value >>> 8)
5881 this[offset + 1] = (value & 0xff)
5882 return offset + 2
5883 }
5884
5885 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5886 value = +value
5887 offset = offset >>> 0
5888 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5889 this[offset + 3] = (value >>> 24)
5890 this[offset + 2] = (value >>> 16)
5891 this[offset + 1] = (value >>> 8)
5892 this[offset] = (value & 0xff)
5893 return offset + 4
5894 }
5895
5896 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5897 value = +value
5898 offset = offset >>> 0
5899 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5900 this[offset] = (value >>> 24)
5901 this[offset + 1] = (value >>> 16)
5902 this[offset + 2] = (value >>> 8)
5903 this[offset + 3] = (value & 0xff)
5904 return offset + 4
5905 }
5906
5907 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5908 value = +value
5909 offset = offset >>> 0
5910 if (!noAssert) {
5911 var limit = Math.pow(2, (8 * byteLength) - 1)
5912
5913 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5914 }
5915
5916 var i = 0
5917 var mul = 1
5918 var sub = 0
5919 this[offset] = value & 0xFF
5920 while (++i < byteLength && (mul *= 0x100)) {
5921 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5922 sub = 1
5923 }
5924 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5925 }
5926
5927 return offset + byteLength
5928 }
5929
5930 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5931 value = +value
5932 offset = offset >>> 0
5933 if (!noAssert) {
5934 var limit = Math.pow(2, (8 * byteLength) - 1)
5935
5936 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5937 }
5938
5939 var i = byteLength - 1
5940 var mul = 1
5941 var sub = 0
5942 this[offset + i] = value & 0xFF
5943 while (--i >= 0 && (mul *= 0x100)) {
5944 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5945 sub = 1
5946 }
5947 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5948 }
5949
5950 return offset + byteLength
5951 }
5952
5953 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5954 value = +value
5955 offset = offset >>> 0
5956 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5957 if (value < 0) value = 0xff + value + 1
5958 this[offset] = (value & 0xff)
5959 return offset + 1
5960 }
5961
5962 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5963 value = +value
5964 offset = offset >>> 0
5965 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5966 this[offset] = (value & 0xff)
5967 this[offset + 1] = (value >>> 8)
5968 return offset + 2
5969 }
5970
5971 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5972 value = +value
5973 offset = offset >>> 0
5974 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5975 this[offset] = (value >>> 8)
5976 this[offset + 1] = (value & 0xff)
5977 return offset + 2
5978 }
5979
5980 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5981 value = +value
5982 offset = offset >>> 0
5983 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5984 this[offset] = (value & 0xff)
5985 this[offset + 1] = (value >>> 8)
5986 this[offset + 2] = (value >>> 16)
5987 this[offset + 3] = (value >>> 24)
5988 return offset + 4
5989 }
5990
5991 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5992 value = +value
5993 offset = offset >>> 0
5994 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5995 if (value < 0) value = 0xffffffff + value + 1
5996 this[offset] = (value >>> 24)
5997 this[offset + 1] = (value >>> 16)
5998 this[offset + 2] = (value >>> 8)
5999 this[offset + 3] = (value & 0xff)
6000 return offset + 4
6001 }
6002
6003 function checkIEEE754 (buf, value, offset, ext, max, min) {
6004 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6005 if (offset < 0) throw new RangeError('Index out of range')
6006 }
6007
6008 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6009 value = +value
6010 offset = offset >>> 0
6011 if (!noAssert) {
6012 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6013 }
6014 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6015 return offset + 4
6016 }
6017
6018 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6019 return writeFloat(this, value, offset, true, noAssert)
6020 }
6021
6022 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6023 return writeFloat(this, value, offset, false, noAssert)
6024 }
6025
6026 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6027 value = +value
6028 offset = offset >>> 0
6029 if (!noAssert) {
6030 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6031 }
6032 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6033 return offset + 8
6034 }
6035
6036 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6037 return writeDouble(this, value, offset, true, noAssert)
6038 }
6039
6040 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6041 return writeDouble(this, value, offset, false, noAssert)
6042 }
6043
6044 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6045 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6046 if (!start) start = 0
6047 if (!end && end !== 0) end = this.length
6048 if (targetStart >= target.length) targetStart = target.length
6049 if (!targetStart) targetStart = 0
6050 if (end > 0 && end < start) end = start
6051
6052 // Copy 0 bytes; we're done
6053 if (end === start) return 0
6054 if (target.length === 0 || this.length === 0) return 0
6055
6056 // Fatal error conditions
6057 if (targetStart < 0) {
6058 throw new RangeError('targetStart out of bounds')
6059 }
6060 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6061 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6062
6063 // Are we oob?
6064 if (end > this.length) end = this.length
6065 if (target.length - targetStart < end - start) {
6066 end = target.length - targetStart + start
6067 }
6068
6069 var len = end - start
6070 var i
6071
6072 if (this === target && start < targetStart && targetStart < end) {
6073 // descending copy from end
6074 for (i = len - 1; i >= 0; --i) {
6075 target[i + targetStart] = this[i + start]
6076 }
6077 } else if (len < 1000) {
6078 // ascending copy from start
6079 for (i = 0; i < len; ++i) {
6080 target[i + targetStart] = this[i + start]
6081 }
6082 } else {
6083 Uint8Array.prototype.set.call(
6084 target,
6085 this.subarray(start, start + len),
6086 targetStart
6087 )
6088 }
6089
6090 return len
6091 }
6092
6093 // Usage:
6094 // buffer.fill(number[, offset[, end]])
6095 // buffer.fill(buffer[, offset[, end]])
6096 // buffer.fill(string[, offset[, end]][, encoding])
6097 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6098 // Handle string cases:
6099 if (typeof val === 'string') {
6100 if (typeof start === 'string') {
6101 encoding = start
6102 start = 0
6103 end = this.length
6104 } else if (typeof end === 'string') {
6105 encoding = end
6106 end = this.length
6107 }
6108 if (val.length === 1) {
6109 var code = val.charCodeAt(0)
6110 if (code < 256) {
6111 val = code
6112 }
6113 }
6114 if (encoding !== undefined && typeof encoding !== 'string') {
6115 throw new TypeError('encoding must be a string')
6116 }
6117 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6118 throw new TypeError('Unknown encoding: ' + encoding)
6119 }
6120 } else if (typeof val === 'number') {
6121 val = val & 255
6122 }
6123
6124 // Invalid ranges are not set to a default, so can range check early.
6125 if (start < 0 || this.length < start || this.length < end) {
6126 throw new RangeError('Out of range index')
6127 }
6128
6129 if (end <= start) {
6130 return this
6131 }
6132
6133 start = start >>> 0
6134 end = end === undefined ? this.length : end >>> 0
6135
6136 if (!val) val = 0
6137
6138 var i
6139 if (typeof val === 'number') {
6140 for (i = start; i < end; ++i) {
6141 this[i] = val
6142 }
6143 } else {
6144 var bytes = Buffer.isBuffer(val)
6145 ? val
6146 : new Buffer(val, encoding)
6147 var len = bytes.length
6148 for (i = 0; i < end - start; ++i) {
6149 this[i + start] = bytes[i % len]
6150 }
6151 }
6152
6153 return this
6154 }
6155
6156 // HELPER FUNCTIONS
6157 // ================
6158
6159 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6160
6161 function base64clean (str) {
6162 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6163 str = str.trim().replace(INVALID_BASE64_RE, '')
6164 // Node converts strings with length < 2 to ''
6165 if (str.length < 2) return ''
6166 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6167 while (str.length % 4 !== 0) {
6168 str = str + '='
6169 }
6170 return str
6171 }
6172
6173 function toHex (n) {
6174 if (n < 16) return '0' + n.toString(16)
6175 return n.toString(16)
6176 }
6177
6178 function utf8ToBytes (string, units) {
6179 units = units || Infinity
6180 var codePoint
6181 var length = string.length
6182 var leadSurrogate = null
6183 var bytes = []
6184
6185 for (var i = 0; i < length; ++i) {
6186 codePoint = string.charCodeAt(i)
6187
6188 // is surrogate component
6189 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6190 // last char was a lead
6191 if (!leadSurrogate) {
6192 // no lead yet
6193 if (codePoint > 0xDBFF) {
6194 // unexpected trail
6195 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6196 continue
6197 } else if (i + 1 === length) {
6198 // unpaired lead
6199 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6200 continue
6201 }
6202
6203 // valid lead
6204 leadSurrogate = codePoint
6205
6206 continue
6207 }
6208
6209 // 2 leads in a row
6210 if (codePoint < 0xDC00) {
6211 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6212 leadSurrogate = codePoint
6213 continue
6214 }
6215
6216 // valid surrogate pair
6217 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6218 } else if (leadSurrogate) {
6219 // valid bmp char, but last char was a lead
6220 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6221 }
6222
6223 leadSurrogate = null
6224
6225 // encode utf8
6226 if (codePoint < 0x80) {
6227 if ((units -= 1) < 0) break
6228 bytes.push(codePoint)
6229 } else if (codePoint < 0x800) {
6230 if ((units -= 2) < 0) break
6231 bytes.push(
6232 codePoint >> 0x6 | 0xC0,
6233 codePoint & 0x3F | 0x80
6234 )
6235 } else if (codePoint < 0x10000) {
6236 if ((units -= 3) < 0) break
6237 bytes.push(
6238 codePoint >> 0xC | 0xE0,
6239 codePoint >> 0x6 & 0x3F | 0x80,
6240 codePoint & 0x3F | 0x80
6241 )
6242 } else if (codePoint < 0x110000) {
6243 if ((units -= 4) < 0) break
6244 bytes.push(
6245 codePoint >> 0x12 | 0xF0,
6246 codePoint >> 0xC & 0x3F | 0x80,
6247 codePoint >> 0x6 & 0x3F | 0x80,
6248 codePoint & 0x3F | 0x80
6249 )
6250 } else {
6251 throw new Error('Invalid code point')
6252 }
6253 }
6254
6255 return bytes
6256 }
6257
6258 function asciiToBytes (str) {
6259 var byteArray = []
6260 for (var i = 0; i < str.length; ++i) {
6261 // Node's code seems to be doing this and not & 0x7F..
6262 byteArray.push(str.charCodeAt(i) & 0xFF)
6263 }
6264 return byteArray
6265 }
6266
6267 function utf16leToBytes (str, units) {
6268 var c, hi, lo
6269 var byteArray = []
6270 for (var i = 0; i < str.length; ++i) {
6271 if ((units -= 2) < 0) break
6272
6273 c = str.charCodeAt(i)
6274 hi = c >> 8
6275 lo = c % 256
6276 byteArray.push(lo)
6277 byteArray.push(hi)
6278 }
6279
6280 return byteArray
6281 }
6282
6283 function base64ToBytes (str) {
6284 return base64.toByteArray(base64clean(str))
6285 }
6286
6287 function blitBuffer (src, dst, offset, length) {
6288 for (var i = 0; i < length; ++i) {
6289 if ((i + offset >= dst.length) || (i >= src.length)) break
6290 dst[i + offset] = src[i]
6291 }
6292 return i
6293 }
6294
6295 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6296 function isArrayBufferView (obj) {
6297 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6298 }
6299
6300 function numberIsNaN (obj) {
6301 return obj !== obj // eslint-disable-line no-self-compare
6302 }
6303
6304 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6305 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6306 var e, m
6307 var eLen = nBytes * 8 - mLen - 1
6308 var eMax = (1 << eLen) - 1
6309 var eBias = eMax >> 1
6310 var nBits = -7
6311 var i = isLE ? (nBytes - 1) : 0
6312 var d = isLE ? -1 : 1
6313 var s = buffer[offset + i]
6314
6315 i += d
6316
6317 e = s & ((1 << (-nBits)) - 1)
6318 s >>= (-nBits)
6319 nBits += eLen
6320 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6321
6322 m = e & ((1 << (-nBits)) - 1)
6323 e >>= (-nBits)
6324 nBits += mLen
6325 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6326
6327 if (e === 0) {
6328 e = 1 - eBias
6329 } else if (e === eMax) {
6330 return m ? NaN : ((s ? -1 : 1) * Infinity)
6331 } else {
6332 m = m + Math.pow(2, mLen)
6333 e = e - eBias
6334 }
6335 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6336 }
6337
6338 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6339 var e, m, c
6340 var eLen = nBytes * 8 - mLen - 1
6341 var eMax = (1 << eLen) - 1
6342 var eBias = eMax >> 1
6343 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6344 var i = isLE ? 0 : (nBytes - 1)
6345 var d = isLE ? 1 : -1
6346 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6347
6348 value = Math.abs(value)
6349
6350 if (isNaN(value) || value === Infinity) {
6351 m = isNaN(value) ? 1 : 0
6352 e = eMax
6353 } else {
6354 e = Math.floor(Math.log(value) / Math.LN2)
6355 if (value * (c = Math.pow(2, -e)) < 1) {
6356 e--
6357 c *= 2
6358 }
6359 if (e + eBias >= 1) {
6360 value += rt / c
6361 } else {
6362 value += rt * Math.pow(2, 1 - eBias)
6363 }
6364 if (value * c >= 2) {
6365 e++
6366 c /= 2
6367 }
6368
6369 if (e + eBias >= eMax) {
6370 m = 0
6371 e = eMax
6372 } else if (e + eBias >= 1) {
6373 m = (value * c - 1) * Math.pow(2, mLen)
6374 e = e + eBias
6375 } else {
6376 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6377 e = 0
6378 }
6379 }
6380
6381 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6382
6383 e = (e << mLen) | m
6384 eLen += mLen
6385 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6386
6387 buffer[offset + i - d] |= s * 128
6388 }
6389
6390 },{}],4:[function(require,module,exports){
6391 window.basex = require('base-x')
6392 },{"base-x":5}],5:[function(require,module,exports){
6393 // base-x encoding
6394 // Forked from https://github.com/cryptocoinjs/bs58
6395 // Originally written by Mike Hearn for BitcoinJ
6396 // Copyright (c) 2011 Google Inc
6397 // Ported to JavaScript by Stefan Thomas
6398 // Merged Buffer refactorings from base58-native by Stephen Pair
6399 // Copyright (c) 2013 BitPay Inc
6400
6401 var Buffer = require('safe-buffer').Buffer
6402
6403 module.exports = function base (ALPHABET) {
6404 var ALPHABET_MAP = {}
6405 var BASE = ALPHABET.length
6406 var LEADER = ALPHABET.charAt(0)
6407
6408 // pre-compute lookup table
6409 for (var z = 0; z < ALPHABET.length; z++) {
6410 var x = ALPHABET.charAt(z)
6411
6412 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6413 ALPHABET_MAP[x] = z
6414 }
6415
6416 function encode (source) {
6417 if (source.length === 0) return ''
6418
6419 var digits = [0]
6420 for (var i = 0; i < source.length; ++i) {
6421 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6422 carry += digits[j] << 8
6423 digits[j] = carry % BASE
6424 carry = (carry / BASE) | 0
6425 }
6426
6427 while (carry > 0) {
6428 digits.push(carry % BASE)
6429 carry = (carry / BASE) | 0
6430 }
6431 }
6432
6433 var string = ''
6434
6435 // deal with leading zeros
6436 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6437 // convert digits to a string
6438 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6439
6440 return string
6441 }
6442
6443 function decodeUnsafe (string) {
6444 if (string.length === 0) return Buffer.allocUnsafe(0)
6445
6446 var bytes = [0]
6447 for (var i = 0; i < string.length; i++) {
6448 var value = ALPHABET_MAP[string[i]]
6449 if (value === undefined) return
6450
6451 for (var j = 0, carry = value; j < bytes.length; ++j) {
6452 carry += bytes[j] * BASE
6453 bytes[j] = carry & 0xff
6454 carry >>= 8
6455 }
6456
6457 while (carry > 0) {
6458 bytes.push(carry & 0xff)
6459 carry >>= 8
6460 }
6461 }
6462
6463 // deal with leading zeros
6464 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6465 bytes.push(0)
6466 }
6467
6468 return Buffer.from(bytes.reverse())
6469 }
6470
6471 function decode (string) {
6472 var buffer = decodeUnsafe(string)
6473 if (buffer) return buffer
6474
6475 throw new Error('Non-base' + BASE + ' character')
6476 }
6477
6478 return {
6479 encode: encode,
6480 decodeUnsafe: decodeUnsafe,
6481 decode: decode
6482 }
6483 }
6484
6485 },{"safe-buffer":6}],6:[function(require,module,exports){
6486 module.exports = require('buffer')
6487
6488 },{"buffer":2}]},{},[4])(4)
6489 });</script>
6490 <script>(function (root) {
6491 "use strict";
6492
6493 /***** unorm.js *****/
6494
6495 /*
6496 * UnicodeNormalizer 1.0.0
6497 * Copyright (c) 2008 Matsuza
6498 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6499 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6500 * $Rev: 13309 $
6501 */
6502
6503 var DEFAULT_FEATURE = [null, 0, {}];
6504 var CACHE_THRESHOLD = 10;
6505 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6506 var NCount = VCount * TCount; // 588
6507 var SCount = LCount * NCount; // 11172
6508
6509 var UChar = function(cp, feature){
6510 this.codepoint = cp;
6511 this.feature = feature;
6512 };
6513
6514 // Strategies
6515 var cache = {};
6516 var cacheCounter = [];
6517 for (var i = 0; i <= 0xFF; ++i){
6518 cacheCounter[i] = 0;
6519 }
6520
6521 function fromCache(next, cp, needFeature){
6522 var ret = cache[cp];
6523 if(!ret){
6524 ret = next(cp, needFeature);
6525 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6526 cache[cp] = ret;
6527 }
6528 }
6529 return ret;
6530 }
6531
6532 function fromData(next, cp, needFeature){
6533 var hash = cp & 0xFF00;
6534 var dunit = UChar.udata[hash] || {};
6535 var f = dunit[cp];
6536 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6537 }
6538 function fromCpOnly(next, cp, needFeature){
6539 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6540 }
6541 function fromRuleBasedJamo(next, cp, needFeature){
6542 var j;
6543 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6544 return next(cp, needFeature);
6545 }
6546 if(LBase <= cp && cp < LBase + LCount){
6547 var c = {};
6548 var base = (cp - LBase) * VCount;
6549 for (j = 0; j < VCount; ++j){
6550 c[VBase + j] = SBase + TCount * (j + base);
6551 }
6552 return new UChar(cp, [,,c]);
6553 }
6554
6555 var SIndex = cp - SBase;
6556 var TIndex = SIndex % TCount;
6557 var feature = [];
6558 if(TIndex !== 0){
6559 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6560 } else {
6561 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6562 feature[2] = {};
6563 for (j = 1; j < TCount; ++j){
6564 feature[2][TBase + j] = cp + j;
6565 }
6566 }
6567 return new UChar(cp, feature);
6568 }
6569 function fromCpFilter(next, cp, needFeature){
6570 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6571 }
6572
6573 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6574
6575 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6576 return function (cp, needFeature) {
6577 return strategy(next, cp, needFeature);
6578 };
6579 }, null);
6580
6581 UChar.isHighSurrogate = function(cp){
6582 return cp >= 0xD800 && cp <= 0xDBFF;
6583 };
6584 UChar.isLowSurrogate = function(cp){
6585 return cp >= 0xDC00 && cp <= 0xDFFF;
6586 };
6587
6588 UChar.prototype.prepFeature = function(){
6589 if(!this.feature){
6590 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6591 }
6592 };
6593
6594 UChar.prototype.toString = function(){
6595 if(this.codepoint < 0x10000){
6596 return String.fromCharCode(this.codepoint);
6597 } else {
6598 var x = this.codepoint - 0x10000;
6599 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6600 }
6601 };
6602
6603 UChar.prototype.getDecomp = function(){
6604 this.prepFeature();
6605 return this.feature[0] || null;
6606 };
6607
6608 UChar.prototype.isCompatibility = function(){
6609 this.prepFeature();
6610 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6611 };
6612 UChar.prototype.isExclude = function(){
6613 this.prepFeature();
6614 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6615 };
6616 UChar.prototype.getCanonicalClass = function(){
6617 this.prepFeature();
6618 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6619 };
6620 UChar.prototype.getComposite = function(following){
6621 this.prepFeature();
6622 if(!this.feature[2]){
6623 return null;
6624 }
6625 var cp = this.feature[2][following.codepoint];
6626 return cp ? UChar.fromCharCode(cp) : null;
6627 };
6628
6629 var UCharIterator = function(str){
6630 this.str = str;
6631 this.cursor = 0;
6632 };
6633 UCharIterator.prototype.next = function(){
6634 if(!!this.str && this.cursor < this.str.length){
6635 var cp = this.str.charCodeAt(this.cursor++);
6636 var d;
6637 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6638 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6639 ++this.cursor;
6640 }
6641 return UChar.fromCharCode(cp);
6642 } else {
6643 this.str = null;
6644 return null;
6645 }
6646 };
6647
6648 var RecursDecompIterator = function(it, cano){
6649 this.it = it;
6650 this.canonical = cano;
6651 this.resBuf = [];
6652 };
6653
6654 RecursDecompIterator.prototype.next = function(){
6655 function recursiveDecomp(cano, uchar){
6656 var decomp = uchar.getDecomp();
6657 if(!!decomp && !(cano && uchar.isCompatibility())){
6658 var ret = [];
6659 for(var i = 0; i < decomp.length; ++i){
6660 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6661 ret = ret.concat(a);
6662 }
6663 return ret;
6664 } else {
6665 return [uchar];
6666 }
6667 }
6668 if(this.resBuf.length === 0){
6669 var uchar = this.it.next();
6670 if(!uchar){
6671 return null;
6672 }
6673 this.resBuf = recursiveDecomp(this.canonical, uchar);
6674 }
6675 return this.resBuf.shift();
6676 };
6677
6678 var DecompIterator = function(it){
6679 this.it = it;
6680 this.resBuf = [];
6681 };
6682
6683 DecompIterator.prototype.next = function(){
6684 var cc;
6685 if(this.resBuf.length === 0){
6686 do{
6687 var uchar = this.it.next();
6688 if(!uchar){
6689 break;
6690 }
6691 cc = uchar.getCanonicalClass();
6692 var inspt = this.resBuf.length;
6693 if(cc !== 0){
6694 for(; inspt > 0; --inspt){
6695 var uchar2 = this.resBuf[inspt - 1];
6696 var cc2 = uchar2.getCanonicalClass();
6697 if(cc2 <= cc){
6698 break;
6699 }
6700 }
6701 }
6702 this.resBuf.splice(inspt, 0, uchar);
6703 } while(cc !== 0);
6704 }
6705 return this.resBuf.shift();
6706 };
6707
6708 var CompIterator = function(it){
6709 this.it = it;
6710 this.procBuf = [];
6711 this.resBuf = [];
6712 this.lastClass = null;
6713 };
6714
6715 CompIterator.prototype.next = function(){
6716 while(this.resBuf.length === 0){
6717 var uchar = this.it.next();
6718 if(!uchar){
6719 this.resBuf = this.procBuf;
6720 this.procBuf = [];
6721 break;
6722 }
6723 if(this.procBuf.length === 0){
6724 this.lastClass = uchar.getCanonicalClass();
6725 this.procBuf.push(uchar);
6726 } else {
6727 var starter = this.procBuf[0];
6728 var composite = starter.getComposite(uchar);
6729 var cc = uchar.getCanonicalClass();
6730 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6731 this.procBuf[0] = composite;
6732 } else {
6733 if(cc === 0){
6734 this.resBuf = this.procBuf;
6735 this.procBuf = [];
6736 }
6737 this.lastClass = cc;
6738 this.procBuf.push(uchar);
6739 }
6740 }
6741 }
6742 return this.resBuf.shift();
6743 };
6744
6745 var createIterator = function(mode, str){
6746 switch(mode){
6747 case "NFD":
6748 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6749 case "NFKD":
6750 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6751 case "NFC":
6752 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6753 case "NFKC":
6754 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6755 }
6756 throw mode + " is invalid";
6757 };
6758 var normalize = function(mode, str){
6759 var it = createIterator(mode, str);
6760 var ret = "";
6761 var uchar;
6762 while(!!(uchar = it.next())){
6763 ret += uchar.toString();
6764 }
6765 return ret;
6766 };
6767
6768 /* API functions */
6769 function nfd(str){
6770 return normalize("NFD", str);
6771 }
6772
6773 function nfkd(str){
6774 return normalize("NFKD", str);
6775 }
6776
6777 function nfc(str){
6778 return normalize("NFC", str);
6779 }
6780
6781 function nfkc(str){
6782 return normalize("NFKC", str);
6783 }
6784
6785 /* Unicode data */
6786 UChar.udata={
6787 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6788 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6789 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6790 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6791 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6792 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6793 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6794 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6795 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6796 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6797 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6798 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6799 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6800 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6801 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6802 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6803 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6804 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6805 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6806 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6807 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6808 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6809 5632:{71231:[,9],71350:[,9],71351:[,7]},
6810 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6811 6144:{6313:[,228]},
6812 6400:{6457:[,222],6458:[,230],6459:[,220]},
6813 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6814 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6815 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6816 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6817 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6818 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6819 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6820 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6821 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6822 8960:{9001:[[12296]],9002:[[12297]]},
6823 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6824 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6825 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6826 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6827 11776:{11935:[[27597],256],12019:[[40863],256]},
6828 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6829 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6830 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6831 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6832 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6833 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6834 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6835 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6836 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6837 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6838 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6839 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6840 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6841 48128:{113822:[,1]},
6842 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6843 53760:{119362:[,230],119363:[,230],119364:[,230]},
6844 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6845 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6846 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6847 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6848 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6849 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6850 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6851 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6852 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6853 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
6854 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
6855 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
6856 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
6857 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
6858 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
6859 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6860
6861 };
6862
6863 /***** Module to export */
6864 var unorm = {
6865 nfc: nfc,
6866 nfd: nfd,
6867 nfkc: nfkc,
6868 nfkd: nfkd
6869 };
6870
6871 /*globals module:true,define:true*/
6872
6873 // CommonJS
6874 if (typeof module === "object") {
6875 module.exports = unorm;
6876
6877 // AMD
6878 } else if (typeof define === "function" && define.amd) {
6879 define("unorm", function () {
6880 return unorm;
6881 });
6882
6883 // Global
6884 } else {
6885 root.unorm = unorm;
6886 }
6887
6888 /***** Export as shim for String::normalize method *****/
6889 /*
6890 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6891
6892 21.1.3.12 String.prototype.normalize(form="NFC")
6893 When the normalize method is called with one argument form, the following steps are taken:
6894
6895 1. Let O be CheckObjectCoercible(this value).
6896 2. Let S be ToString(O).
6897 3. ReturnIfAbrupt(S).
6898 4. If form is not provided or undefined let form be "NFC".
6899 5. Let f be ToString(form).
6900 6. ReturnIfAbrupt(f).
6901 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6902 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
6903 9. Return ns.
6904
6905 The length property of the normalize method is 0.
6906
6907 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
6908 */
6909 unorm.shimApplied = false;
6910
6911 if (!String.prototype.normalize) {
6912 String.prototype.normalize = function(form) {
6913 var str = "" + this;
6914 form = form === undefined ? "NFC" : form;
6915
6916 if (form === "NFC") {
6917 return unorm.nfc(str);
6918 } else if (form === "NFD") {
6919 return unorm.nfd(str);
6920 } else if (form === "NFKC") {
6921 return unorm.nfkc(str);
6922 } else if (form === "NFKD") {
6923 return unorm.nfkd(str);
6924 } else {
6925 throw new RangeError("Invalid normalization form: " + form);
6926 }
6927 };
6928
6929 unorm.shimApplied = true;
6930 }
6931 }(this));
6932 </script>
6933 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6934 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
6935 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
6936 },removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
6937 </script>
6938 <script>/*!
6939 * Bootstrap v3.2.0 (http://getbootstrap.com)
6940 * Copyright 2011-2014 Twitter, Inc.
6941 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6942 */
6943 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script>
6944 <script>(function() {
6945 'use strict';
6946
6947 /**
6948 * Extend an Object with another Object's properties.
6949 *
6950 * The source objects are specified as additional arguments.
6951 *
6952 * @param dst Object the object to extend.
6953 *
6954 * @return Object the final object.
6955 */
6956 var _extend = function(dst) {
6957 var sources = Array.prototype.slice.call(arguments, 1);
6958 for (var i=0; i<sources.length; ++i) {
6959 var src = sources[i];
6960 for (var p in src) {
6961 if (src.hasOwnProperty(p)) dst[p] = src[p];
6962 }
6963 }
6964 return dst;
6965 };
6966
6967
6968 /**
6969 * Defer execution of given function.
6970 * @param {Function} func
6971 */
6972 var _defer = function(func) {
6973 if (typeof setImmediate === 'function') {
6974 return setImmediate(func);
6975 } else {
6976 return setTimeout(func, 0);
6977 }
6978 };
6979
6980 /**
6981 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6982 */
6983 var Levenshtein = {
6984 /**
6985 * Calculate levenshtein distance of the two strings.
6986 *
6987 * @param str1 String the first string.
6988 * @param str2 String the second string.
6989 * @return Integer the levenshtein distance (0 and above).
6990 */
6991 get: function(str1, str2) {
6992 // base cases
6993 if (str1 === str2) return 0;
6994 if (str1.length === 0) return str2.length;
6995 if (str2.length === 0) return str1.length;
6996
6997 // two rows
6998 var prevRow = new Array(str2.length + 1),
6999 curCol, nextCol, i, j, tmp;
7000
7001 // initialise previous row
7002 for (i=0; i<prevRow.length; ++i) {
7003 prevRow[i] = i;
7004 }
7005
7006 // calculate current row distance from previous row
7007 for (i=0; i<str1.length; ++i) {
7008 nextCol = i + 1;
7009
7010 for (j=0; j<str2.length; ++j) {
7011 curCol = nextCol;
7012
7013 // substution
7014 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7015 // insertion
7016 tmp = curCol + 1;
7017 if (nextCol > tmp) {
7018 nextCol = tmp;
7019 }
7020 // deletion
7021 tmp = prevRow[j + 1] + 1;
7022 if (nextCol > tmp) {
7023 nextCol = tmp;
7024 }
7025
7026 // copy current col value into previous (in preparation for next iteration)
7027 prevRow[j] = curCol;
7028 }
7029
7030 // copy last col value into previous (in preparation for next iteration)
7031 prevRow[j] = nextCol;
7032 }
7033
7034 return nextCol;
7035 },
7036
7037 /**
7038 * Asynchronously calculate levenshtein distance of the two strings.
7039 *
7040 * @param str1 String the first string.
7041 * @param str2 String the second string.
7042 * @param cb Function callback function with signature: function(Error err, int distance)
7043 * @param [options] Object additional options.
7044 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7045 */
7046 getAsync: function(str1, str2, cb, options) {
7047 options = _extend({}, {
7048 progress: null
7049 }, options);
7050
7051 // base cases
7052 if (str1 === str2) return cb(null, 0);
7053 if (str1.length === 0) return cb(null, str2.length);
7054 if (str2.length === 0) return cb(null, str1.length);
7055
7056 // two rows
7057 var prevRow = new Array(str2.length + 1),
7058 curCol, nextCol,
7059 i, j, tmp,
7060 startTime, currentTime;
7061
7062 // initialise previous row
7063 for (i=0; i<prevRow.length; ++i) {
7064 prevRow[i] = i;
7065 }
7066
7067 nextCol = 1;
7068 i = 0;
7069 j = -1;
7070
7071 var __calculate = function() {
7072 // reset timer
7073 startTime = new Date().valueOf();
7074 currentTime = startTime;
7075
7076 // keep going until one second has elapsed
7077 while (currentTime - startTime < 1000) {
7078 // reached end of current row?
7079 if (str2.length <= (++j)) {
7080 // copy current into previous (in preparation for next iteration)
7081 prevRow[j] = nextCol;
7082
7083 // if already done all chars
7084 if (str1.length <= (++i)) {
7085 return cb(null, nextCol);
7086 }
7087 // else if we have more left to do
7088 else {
7089 nextCol = i + 1;
7090 j = 0;
7091 }
7092 }
7093
7094 // calculation
7095 curCol = nextCol;
7096
7097 // substution
7098 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7099 // insertion
7100 tmp = curCol + 1;
7101 if (nextCol > tmp) {
7102 nextCol = tmp;
7103 }
7104 // deletion
7105 tmp = prevRow[j + 1] + 1;
7106 if (nextCol > tmp) {
7107 nextCol = tmp;
7108 }
7109
7110 // copy current into previous (in preparation for next iteration)
7111 prevRow[j] = curCol;
7112
7113 // get current time
7114 currentTime = new Date().valueOf();
7115 }
7116
7117 // send a progress update?
7118 if (null !== options.progress) {
7119 try {
7120 options.progress.call(null, (i * 100.0/ str1.length));
7121 } catch (err) {
7122 return cb('Progress callback: ' + err.toString());
7123 }
7124 }
7125
7126 // next iteration
7127 _defer(__calculate);
7128 };
7129
7130 __calculate();
7131 }
7132
7133 };
7134
7135 // amd
7136 if (typeof define !== "undefined" && define !== null && define.amd) {
7137 define(function() {
7138 return Levenshtein;
7139 });
7140 }
7141 // commonjs
7142 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7143 module.exports = Levenshtein;
7144 }
7145 // web worker
7146 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7147 self.Levenshtein = Levenshtein;
7148 }
7149 // browser main thread
7150 else if (typeof window !== "undefined" && window !== null) {
7151 window.Levenshtein = Levenshtein;
7152 }
7153 }());
7154
7155 </script>
7156 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7157 write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
7158 for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7159 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7160 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7161 setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7162 j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7163 b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7164 c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7165 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7166 (d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
7167 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7168 j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7169 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7170 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
7171 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7172 LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7173 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7174 [4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7175 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
7176 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
7177 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
7178 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
7179 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7180 (a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7181 correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7182 j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7183 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7184 </script>
7185 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoin = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7186 // (public) Constructor
7187 function BigInteger(a, b, c) {
7188 if (!(this instanceof BigInteger))
7189 return new BigInteger(a, b, c)
7190
7191 if (a != null) {
7192 if ("number" == typeof a) this.fromNumber(a, b, c)
7193 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7194 else this.fromString(a, b)
7195 }
7196 }
7197
7198 var proto = BigInteger.prototype
7199
7200 // duck-typed isBigInteger
7201 proto.__bigi = require('../package.json').version
7202 BigInteger.isBigInteger = function (obj, check_ver) {
7203 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7204 }
7205
7206 // Bits per digit
7207 var dbits
7208
7209 // am: Compute w_j += (x*this_i), propagate carries,
7210 // c is initial carry, returns final carry.
7211 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7212 // We need to select the fastest one that works in this environment.
7213
7214 // am1: use a single mult and divide to get the high bits,
7215 // max digit bits should be 26 because
7216 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7217 function am1(i, x, w, j, c, n) {
7218 while (--n >= 0) {
7219 var v = x * this[i++] + w[j] + c
7220 c = Math.floor(v / 0x4000000)
7221 w[j++] = v & 0x3ffffff
7222 }
7223 return c
7224 }
7225 // am2 avoids a big mult-and-extract completely.
7226 // Max digit bits should be <= 30 because we do bitwise ops
7227 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7228 function am2(i, x, w, j, c, n) {
7229 var xl = x & 0x7fff,
7230 xh = x >> 15
7231 while (--n >= 0) {
7232 var l = this[i] & 0x7fff
7233 var h = this[i++] >> 15
7234 var m = xh * l + h * xl
7235 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7236 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7237 w[j++] = l & 0x3fffffff
7238 }
7239 return c
7240 }
7241 // Alternately, set max digit bits to 28 since some
7242 // browsers slow down when dealing with 32-bit numbers.
7243 function am3(i, x, w, j, c, n) {
7244 var xl = x & 0x3fff,
7245 xh = x >> 14
7246 while (--n >= 0) {
7247 var l = this[i] & 0x3fff
7248 var h = this[i++] >> 14
7249 var m = xh * l + h * xl
7250 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7251 c = (l >> 28) + (m >> 14) + xh * h
7252 w[j++] = l & 0xfffffff
7253 }
7254 return c
7255 }
7256
7257 // wtf?
7258 BigInteger.prototype.am = am1
7259 dbits = 26
7260
7261 BigInteger.prototype.DB = dbits
7262 BigInteger.prototype.DM = ((1 << dbits) - 1)
7263 var DV = BigInteger.prototype.DV = (1 << dbits)
7264
7265 var BI_FP = 52
7266 BigInteger.prototype.FV = Math.pow(2, BI_FP)
7267 BigInteger.prototype.F1 = BI_FP - dbits
7268 BigInteger.prototype.F2 = 2 * dbits - BI_FP
7269
7270 // Digit conversions
7271 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7272 var BI_RC = new Array()
7273 var rr, vv
7274 rr = "0".charCodeAt(0)
7275 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7276 rr = "a".charCodeAt(0)
7277 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7278 rr = "A".charCodeAt(0)
7279 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7280
7281 function int2char(n) {
7282 return BI_RM.charAt(n)
7283 }
7284
7285 function intAt(s, i) {
7286 var c = BI_RC[s.charCodeAt(i)]
7287 return (c == null) ? -1 : c
7288 }
7289
7290 // (protected) copy this to r
7291 function bnpCopyTo(r) {
7292 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7293 r.t = this.t
7294 r.s = this.s
7295 }
7296
7297 // (protected) set from integer value x, -DV <= x < DV
7298 function bnpFromInt(x) {
7299 this.t = 1
7300 this.s = (x < 0) ? -1 : 0
7301 if (x > 0) this[0] = x
7302 else if (x < -1) this[0] = x + DV
7303 else this.t = 0
7304 }
7305
7306 // return bigint initialized to value
7307 function nbv(i) {
7308 var r = new BigInteger()
7309 r.fromInt(i)
7310 return r
7311 }
7312
7313 // (protected) set from string and radix
7314 function bnpFromString(s, b) {
7315 var self = this
7316
7317 var k
7318 if (b == 16) k = 4
7319 else if (b == 8) k = 3
7320 else if (b == 256) k = 8; // byte array
7321 else if (b == 2) k = 1
7322 else if (b == 32) k = 5
7323 else if (b == 4) k = 2
7324 else {
7325 self.fromRadix(s, b)
7326 return
7327 }
7328 self.t = 0
7329 self.s = 0
7330 var i = s.length,
7331 mi = false,
7332 sh = 0
7333 while (--i >= 0) {
7334 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7335 if (x < 0) {
7336 if (s.charAt(i) == "-") mi = true
7337 continue
7338 }
7339 mi = false
7340 if (sh == 0)
7341 self[self.t++] = x
7342 else if (sh + k > self.DB) {
7343 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7344 self[self.t++] = (x >> (self.DB - sh))
7345 } else
7346 self[self.t - 1] |= x << sh
7347 sh += k
7348 if (sh >= self.DB) sh -= self.DB
7349 }
7350 if (k == 8 && (s[0] & 0x80) != 0) {
7351 self.s = -1
7352 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7353 }
7354 self.clamp()
7355 if (mi) BigInteger.ZERO.subTo(self, self)
7356 }
7357
7358 // (protected) clamp off excess high words
7359 function bnpClamp() {
7360 var c = this.s & this.DM
7361 while (this.t > 0 && this[this.t - 1] == c)--this.t
7362 }
7363
7364 // (public) return string representation in given radix
7365 function bnToString(b) {
7366 var self = this
7367 if (self.s < 0) return "-" + self.negate()
7368 .toString(b)
7369 var k
7370 if (b == 16) k = 4
7371 else if (b == 8) k = 3
7372 else if (b == 2) k = 1
7373 else if (b == 32) k = 5
7374 else if (b == 4) k = 2
7375 else return self.toRadix(b)
7376 var km = (1 << k) - 1,
7377 d, m = false,
7378 r = "",
7379 i = self.t
7380 var p = self.DB - (i * self.DB) % k
7381 if (i-- > 0) {
7382 if (p < self.DB && (d = self[i] >> p) > 0) {
7383 m = true
7384 r = int2char(d)
7385 }
7386 while (i >= 0) {
7387 if (p < k) {
7388 d = (self[i] & ((1 << p) - 1)) << (k - p)
7389 d |= self[--i] >> (p += self.DB - k)
7390 } else {
7391 d = (self[i] >> (p -= k)) & km
7392 if (p <= 0) {
7393 p += self.DB
7394 --i
7395 }
7396 }
7397 if (d > 0) m = true
7398 if (m) r += int2char(d)
7399 }
7400 }
7401 return m ? r : "0"
7402 }
7403
7404 // (public) -this
7405 function bnNegate() {
7406 var r = new BigInteger()
7407 BigInteger.ZERO.subTo(this, r)
7408 return r
7409 }
7410
7411 // (public) |this|
7412 function bnAbs() {
7413 return (this.s < 0) ? this.negate() : this
7414 }
7415
7416 // (public) return + if this > a, - if this < a, 0 if equal
7417 function bnCompareTo(a) {
7418 var r = this.s - a.s
7419 if (r != 0) return r
7420 var i = this.t
7421 r = i - a.t
7422 if (r != 0) return (this.s < 0) ? -r : r
7423 while (--i >= 0)
7424 if ((r = this[i] - a[i]) != 0) return r
7425 return 0
7426 }
7427
7428 // returns bit length of the integer x
7429 function nbits(x) {
7430 var r = 1,
7431 t
7432 if ((t = x >>> 16) != 0) {
7433 x = t
7434 r += 16
7435 }
7436 if ((t = x >> 8) != 0) {
7437 x = t
7438 r += 8
7439 }
7440 if ((t = x >> 4) != 0) {
7441 x = t
7442 r += 4
7443 }
7444 if ((t = x >> 2) != 0) {
7445 x = t
7446 r += 2
7447 }
7448 if ((t = x >> 1) != 0) {
7449 x = t
7450 r += 1
7451 }
7452 return r
7453 }
7454
7455 // (public) return the number of bits in "this"
7456 function bnBitLength() {
7457 if (this.t <= 0) return 0
7458 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7459 }
7460
7461 // (public) return the number of bytes in "this"
7462 function bnByteLength() {
7463 return this.bitLength() >> 3
7464 }
7465
7466 // (protected) r = this << n*DB
7467 function bnpDLShiftTo(n, r) {
7468 var i
7469 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7470 for (i = n - 1; i >= 0; --i) r[i] = 0
7471 r.t = this.t + n
7472 r.s = this.s
7473 }
7474
7475 // (protected) r = this >> n*DB
7476 function bnpDRShiftTo(n, r) {
7477 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7478 r.t = Math.max(this.t - n, 0)
7479 r.s = this.s
7480 }
7481
7482 // (protected) r = this << n
7483 function bnpLShiftTo(n, r) {
7484 var self = this
7485 var bs = n % self.DB
7486 var cbs = self.DB - bs
7487 var bm = (1 << cbs) - 1
7488 var ds = Math.floor(n / self.DB),
7489 c = (self.s << bs) & self.DM,
7490 i
7491 for (i = self.t - 1; i >= 0; --i) {
7492 r[i + ds + 1] = (self[i] >> cbs) | c
7493 c = (self[i] & bm) << bs
7494 }
7495 for (i = ds - 1; i >= 0; --i) r[i] = 0
7496 r[ds] = c
7497 r.t = self.t + ds + 1
7498 r.s = self.s
7499 r.clamp()
7500 }
7501
7502 // (protected) r = this >> n
7503 function bnpRShiftTo(n, r) {
7504 var self = this
7505 r.s = self.s
7506 var ds = Math.floor(n / self.DB)
7507 if (ds >= self.t) {
7508 r.t = 0
7509 return
7510 }
7511 var bs = n % self.DB
7512 var cbs = self.DB - bs
7513 var bm = (1 << bs) - 1
7514 r[0] = self[ds] >> bs
7515 for (var i = ds + 1; i < self.t; ++i) {
7516 r[i - ds - 1] |= (self[i] & bm) << cbs
7517 r[i - ds] = self[i] >> bs
7518 }
7519 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7520 r.t = self.t - ds
7521 r.clamp()
7522 }
7523
7524 // (protected) r = this - a
7525 function bnpSubTo(a, r) {
7526 var self = this
7527 var i = 0,
7528 c = 0,
7529 m = Math.min(a.t, self.t)
7530 while (i < m) {
7531 c += self[i] - a[i]
7532 r[i++] = c & self.DM
7533 c >>= self.DB
7534 }
7535 if (a.t < self.t) {
7536 c -= a.s
7537 while (i < self.t) {
7538 c += self[i]
7539 r[i++] = c & self.DM
7540 c >>= self.DB
7541 }
7542 c += self.s
7543 } else {
7544 c += self.s
7545 while (i < a.t) {
7546 c -= a[i]
7547 r[i++] = c & self.DM
7548 c >>= self.DB
7549 }
7550 c -= a.s
7551 }
7552 r.s = (c < 0) ? -1 : 0
7553 if (c < -1) r[i++] = self.DV + c
7554 else if (c > 0) r[i++] = c
7555 r.t = i
7556 r.clamp()
7557 }
7558
7559 // (protected) r = this * a, r != this,a (HAC 14.12)
7560 // "this" should be the larger one if appropriate.
7561 function bnpMultiplyTo(a, r) {
7562 var x = this.abs(),
7563 y = a.abs()
7564 var i = x.t
7565 r.t = i + y.t
7566 while (--i >= 0) r[i] = 0
7567 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7568 r.s = 0
7569 r.clamp()
7570 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7571 }
7572
7573 // (protected) r = this^2, r != this (HAC 14.16)
7574 function bnpSquareTo(r) {
7575 var x = this.abs()
7576 var i = r.t = 2 * x.t
7577 while (--i >= 0) r[i] = 0
7578 for (i = 0; i < x.t - 1; ++i) {
7579 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7580 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7581 r[i + x.t] -= x.DV
7582 r[i + x.t + 1] = 1
7583 }
7584 }
7585 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7586 r.s = 0
7587 r.clamp()
7588 }
7589
7590 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7591 // r != q, this != m. q or r may be null.
7592 function bnpDivRemTo(m, q, r) {
7593 var self = this
7594 var pm = m.abs()
7595 if (pm.t <= 0) return
7596 var pt = self.abs()
7597 if (pt.t < pm.t) {
7598 if (q != null) q.fromInt(0)
7599 if (r != null) self.copyTo(r)
7600 return
7601 }
7602 if (r == null) r = new BigInteger()
7603 var y = new BigInteger(),
7604 ts = self.s,
7605 ms = m.s
7606 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7607 if (nsh > 0) {
7608 pm.lShiftTo(nsh, y)
7609 pt.lShiftTo(nsh, r)
7610 } else {
7611 pm.copyTo(y)
7612 pt.copyTo(r)
7613 }
7614 var ys = y.t
7615 var y0 = y[ys - 1]
7616 if (y0 == 0) return
7617 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7618 var d1 = self.FV / yt,
7619 d2 = (1 << self.F1) / yt,
7620 e = 1 << self.F2
7621 var i = r.t,
7622 j = i - ys,
7623 t = (q == null) ? new BigInteger() : q
7624 y.dlShiftTo(j, t)
7625 if (r.compareTo(t) >= 0) {
7626 r[r.t++] = 1
7627 r.subTo(t, r)
7628 }
7629 BigInteger.ONE.dlShiftTo(ys, t)
7630 t.subTo(y, y); // "negative" y so we can replace sub with am later
7631 while (y.t < ys) y[y.t++] = 0
7632 while (--j >= 0) {
7633 // Estimate quotient digit
7634 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7635 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7636 y.dlShiftTo(j, t)
7637 r.subTo(t, r)
7638 while (r[i] < --qd) r.subTo(t, r)
7639 }
7640 }
7641 if (q != null) {
7642 r.drShiftTo(ys, q)
7643 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7644 }
7645 r.t = ys
7646 r.clamp()
7647 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7648 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7649 }
7650
7651 // (public) this mod a
7652 function bnMod(a) {
7653 var r = new BigInteger()
7654 this.abs()
7655 .divRemTo(a, null, r)
7656 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7657 return r
7658 }
7659
7660 // Modular reduction using "classic" algorithm
7661 function Classic(m) {
7662 this.m = m
7663 }
7664
7665 function cConvert(x) {
7666 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7667 else return x
7668 }
7669
7670 function cRevert(x) {
7671 return x
7672 }
7673
7674 function cReduce(x) {
7675 x.divRemTo(this.m, null, x)
7676 }
7677
7678 function cMulTo(x, y, r) {
7679 x.multiplyTo(y, r)
7680 this.reduce(r)
7681 }
7682
7683 function cSqrTo(x, r) {
7684 x.squareTo(r)
7685 this.reduce(r)
7686 }
7687
7688 Classic.prototype.convert = cConvert
7689 Classic.prototype.revert = cRevert
7690 Classic.prototype.reduce = cReduce
7691 Classic.prototype.mulTo = cMulTo
7692 Classic.prototype.sqrTo = cSqrTo
7693
7694 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7695 // justification:
7696 // xy == 1 (mod m)
7697 // xy = 1+km
7698 // xy(2-xy) = (1+km)(1-km)
7699 // x[y(2-xy)] = 1-k^2m^2
7700 // x[y(2-xy)] == 1 (mod m^2)
7701 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7702 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7703 // JS multiply "overflows" differently from C/C++, so care is needed here.
7704 function bnpInvDigit() {
7705 if (this.t < 1) return 0
7706 var x = this[0]
7707 if ((x & 1) == 0) return 0
7708 var y = x & 3; // y == 1/x mod 2^2
7709 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7710 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7711 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7712 // last step - calculate inverse mod DV directly
7713 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7714 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7715 // we really want the negative inverse, and -DV < y < DV
7716 return (y > 0) ? this.DV - y : -y
7717 }
7718
7719 // Montgomery reduction
7720 function Montgomery(m) {
7721 this.m = m
7722 this.mp = m.invDigit()
7723 this.mpl = this.mp & 0x7fff
7724 this.mph = this.mp >> 15
7725 this.um = (1 << (m.DB - 15)) - 1
7726 this.mt2 = 2 * m.t
7727 }
7728
7729 // xR mod m
7730 function montConvert(x) {
7731 var r = new BigInteger()
7732 x.abs()
7733 .dlShiftTo(this.m.t, r)
7734 r.divRemTo(this.m, null, r)
7735 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7736 return r
7737 }
7738
7739 // x/R mod m
7740 function montRevert(x) {
7741 var r = new BigInteger()
7742 x.copyTo(r)
7743 this.reduce(r)
7744 return r
7745 }
7746
7747 // x = x/R mod m (HAC 14.32)
7748 function montReduce(x) {
7749 while (x.t <= this.mt2) // pad x so am has enough room later
7750 x[x.t++] = 0
7751 for (var i = 0; i < this.m.t; ++i) {
7752 // faster way of calculating u0 = x[i]*mp mod DV
7753 var j = x[i] & 0x7fff
7754 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7755 // use am to combine the multiply-shift-add into one call
7756 j = i + this.m.t
7757 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7758 // propagate carry
7759 while (x[j] >= x.DV) {
7760 x[j] -= x.DV
7761 x[++j]++
7762 }
7763 }
7764 x.clamp()
7765 x.drShiftTo(this.m.t, x)
7766 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7767 }
7768
7769 // r = "x^2/R mod m"; x != r
7770 function montSqrTo(x, r) {
7771 x.squareTo(r)
7772 this.reduce(r)
7773 }
7774
7775 // r = "xy/R mod m"; x,y != r
7776 function montMulTo(x, y, r) {
7777 x.multiplyTo(y, r)
7778 this.reduce(r)
7779 }
7780
7781 Montgomery.prototype.convert = montConvert
7782 Montgomery.prototype.revert = montRevert
7783 Montgomery.prototype.reduce = montReduce
7784 Montgomery.prototype.mulTo = montMulTo
7785 Montgomery.prototype.sqrTo = montSqrTo
7786
7787 // (protected) true iff this is even
7788 function bnpIsEven() {
7789 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7790 }
7791
7792 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7793 function bnpExp(e, z) {
7794 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7795 var r = new BigInteger(),
7796 r2 = new BigInteger(),
7797 g = z.convert(this),
7798 i = nbits(e) - 1
7799 g.copyTo(r)
7800 while (--i >= 0) {
7801 z.sqrTo(r, r2)
7802 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7803 else {
7804 var t = r
7805 r = r2
7806 r2 = t
7807 }
7808 }
7809 return z.revert(r)
7810 }
7811
7812 // (public) this^e % m, 0 <= e < 2^32
7813 function bnModPowInt(e, m) {
7814 var z
7815 if (e < 256 || m.isEven()) z = new Classic(m)
7816 else z = new Montgomery(m)
7817 return this.exp(e, z)
7818 }
7819
7820 // protected
7821 proto.copyTo = bnpCopyTo
7822 proto.fromInt = bnpFromInt
7823 proto.fromString = bnpFromString
7824 proto.clamp = bnpClamp
7825 proto.dlShiftTo = bnpDLShiftTo
7826 proto.drShiftTo = bnpDRShiftTo
7827 proto.lShiftTo = bnpLShiftTo
7828 proto.rShiftTo = bnpRShiftTo
7829 proto.subTo = bnpSubTo
7830 proto.multiplyTo = bnpMultiplyTo
7831 proto.squareTo = bnpSquareTo
7832 proto.divRemTo = bnpDivRemTo
7833 proto.invDigit = bnpInvDigit
7834 proto.isEven = bnpIsEven
7835 proto.exp = bnpExp
7836
7837 // public
7838 proto.toString = bnToString
7839 proto.negate = bnNegate
7840 proto.abs = bnAbs
7841 proto.compareTo = bnCompareTo
7842 proto.bitLength = bnBitLength
7843 proto.byteLength = bnByteLength
7844 proto.mod = bnMod
7845 proto.modPowInt = bnModPowInt
7846
7847 // (public)
7848 function bnClone() {
7849 var r = new BigInteger()
7850 this.copyTo(r)
7851 return r
7852 }
7853
7854 // (public) return value as integer
7855 function bnIntValue() {
7856 if (this.s < 0) {
7857 if (this.t == 1) return this[0] - this.DV
7858 else if (this.t == 0) return -1
7859 } else if (this.t == 1) return this[0]
7860 else if (this.t == 0) return 0
7861 // assumes 16 < DB < 32
7862 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7863 }
7864
7865 // (public) return value as byte
7866 function bnByteValue() {
7867 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7868 }
7869
7870 // (public) return value as short (assumes DB>=16)
7871 function bnShortValue() {
7872 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7873 }
7874
7875 // (protected) return x s.t. r^x < DV
7876 function bnpChunkSize(r) {
7877 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7878 }
7879
7880 // (public) 0 if this == 0, 1 if this > 0
7881 function bnSigNum() {
7882 if (this.s < 0) return -1
7883 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7884 else return 1
7885 }
7886
7887 // (protected) convert to radix string
7888 function bnpToRadix(b) {
7889 if (b == null) b = 10
7890 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7891 var cs = this.chunkSize(b)
7892 var a = Math.pow(b, cs)
7893 var d = nbv(a),
7894 y = new BigInteger(),
7895 z = new BigInteger(),
7896 r = ""
7897 this.divRemTo(d, y, z)
7898 while (y.signum() > 0) {
7899 r = (a + z.intValue())
7900 .toString(b)
7901 .substr(1) + r
7902 y.divRemTo(d, y, z)
7903 }
7904 return z.intValue()
7905 .toString(b) + r
7906 }
7907
7908 // (protected) convert from radix string
7909 function bnpFromRadix(s, b) {
7910 var self = this
7911 self.fromInt(0)
7912 if (b == null) b = 10
7913 var cs = self.chunkSize(b)
7914 var d = Math.pow(b, cs),
7915 mi = false,
7916 j = 0,
7917 w = 0
7918 for (var i = 0; i < s.length; ++i) {
7919 var x = intAt(s, i)
7920 if (x < 0) {
7921 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7922 continue
7923 }
7924 w = b * w + x
7925 if (++j >= cs) {
7926 self.dMultiply(d)
7927 self.dAddOffset(w, 0)
7928 j = 0
7929 w = 0
7930 }
7931 }
7932 if (j > 0) {
7933 self.dMultiply(Math.pow(b, j))
7934 self.dAddOffset(w, 0)
7935 }
7936 if (mi) BigInteger.ZERO.subTo(self, self)
7937 }
7938
7939 // (protected) alternate constructor
7940 function bnpFromNumber(a, b, c) {
7941 var self = this
7942 if ("number" == typeof b) {
7943 // new BigInteger(int,int,RNG)
7944 if (a < 2) self.fromInt(1)
7945 else {
7946 self.fromNumber(a, c)
7947 if (!self.testBit(a - 1)) // force MSB set
7948 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7949 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7950 while (!self.isProbablePrime(b)) {
7951 self.dAddOffset(2, 0)
7952 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7953 }
7954 }
7955 } else {
7956 // new BigInteger(int,RNG)
7957 var x = new Array(),
7958 t = a & 7
7959 x.length = (a >> 3) + 1
7960 b.nextBytes(x)
7961 if (t > 0) x[0] &= ((1 << t) - 1)
7962 else x[0] = 0
7963 self.fromString(x, 256)
7964 }
7965 }
7966
7967 // (public) convert to bigendian byte array
7968 function bnToByteArray() {
7969 var self = this
7970 var i = self.t,
7971 r = new Array()
7972 r[0] = self.s
7973 var p = self.DB - (i * self.DB) % 8,
7974 d, k = 0
7975 if (i-- > 0) {
7976 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7977 r[k++] = d | (self.s << (self.DB - p))
7978 while (i >= 0) {
7979 if (p < 8) {
7980 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7981 d |= self[--i] >> (p += self.DB - 8)
7982 } else {
7983 d = (self[i] >> (p -= 8)) & 0xff
7984 if (p <= 0) {
7985 p += self.DB
7986 --i
7987 }
7988 }
7989 if ((d & 0x80) != 0) d |= -256
7990 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7991 if (k > 0 || d != self.s) r[k++] = d
7992 }
7993 }
7994 return r
7995 }
7996
7997 function bnEquals(a) {
7998 return (this.compareTo(a) == 0)
7999 }
8000
8001 function bnMin(a) {
8002 return (this.compareTo(a) < 0) ? this : a
8003 }
8004
8005 function bnMax(a) {
8006 return (this.compareTo(a) > 0) ? this : a
8007 }
8008
8009 // (protected) r = this op a (bitwise)
8010 function bnpBitwiseTo(a, op, r) {
8011 var self = this
8012 var i, f, m = Math.min(a.t, self.t)
8013 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8014 if (a.t < self.t) {
8015 f = a.s & self.DM
8016 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8017 r.t = self.t
8018 } else {
8019 f = self.s & self.DM
8020 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8021 r.t = a.t
8022 }
8023 r.s = op(self.s, a.s)
8024 r.clamp()
8025 }
8026
8027 // (public) this & a
8028 function op_and(x, y) {
8029 return x & y
8030 }
8031
8032 function bnAnd(a) {
8033 var r = new BigInteger()
8034 this.bitwiseTo(a, op_and, r)
8035 return r
8036 }
8037
8038 // (public) this | a
8039 function op_or(x, y) {
8040 return x | y
8041 }
8042
8043 function bnOr(a) {
8044 var r = new BigInteger()
8045 this.bitwiseTo(a, op_or, r)
8046 return r
8047 }
8048
8049 // (public) this ^ a
8050 function op_xor(x, y) {
8051 return x ^ y
8052 }
8053
8054 function bnXor(a) {
8055 var r = new BigInteger()
8056 this.bitwiseTo(a, op_xor, r)
8057 return r
8058 }
8059
8060 // (public) this & ~a
8061 function op_andnot(x, y) {
8062 return x & ~y
8063 }
8064
8065 function bnAndNot(a) {
8066 var r = new BigInteger()
8067 this.bitwiseTo(a, op_andnot, r)
8068 return r
8069 }
8070
8071 // (public) ~this
8072 function bnNot() {
8073 var r = new BigInteger()
8074 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8075 r.t = this.t
8076 r.s = ~this.s
8077 return r
8078 }
8079
8080 // (public) this << n
8081 function bnShiftLeft(n) {
8082 var r = new BigInteger()
8083 if (n < 0) this.rShiftTo(-n, r)
8084 else this.lShiftTo(n, r)
8085 return r
8086 }
8087
8088 // (public) this >> n
8089 function bnShiftRight(n) {
8090 var r = new BigInteger()
8091 if (n < 0) this.lShiftTo(-n, r)
8092 else this.rShiftTo(n, r)
8093 return r
8094 }
8095
8096 // return index of lowest 1-bit in x, x < 2^31
8097 function lbit(x) {
8098 if (x == 0) return -1
8099 var r = 0
8100 if ((x & 0xffff) == 0) {
8101 x >>= 16
8102 r += 16
8103 }
8104 if ((x & 0xff) == 0) {
8105 x >>= 8
8106 r += 8
8107 }
8108 if ((x & 0xf) == 0) {
8109 x >>= 4
8110 r += 4
8111 }
8112 if ((x & 3) == 0) {
8113 x >>= 2
8114 r += 2
8115 }
8116 if ((x & 1) == 0)++r
8117 return r
8118 }
8119
8120 // (public) returns index of lowest 1-bit (or -1 if none)
8121 function bnGetLowestSetBit() {
8122 for (var i = 0; i < this.t; ++i)
8123 if (this[i] != 0) return i * this.DB + lbit(this[i])
8124 if (this.s < 0) return this.t * this.DB
8125 return -1
8126 }
8127
8128 // return number of 1 bits in x
8129 function cbit(x) {
8130 var r = 0
8131 while (x != 0) {
8132 x &= x - 1
8133 ++r
8134 }
8135 return r
8136 }
8137
8138 // (public) return number of set bits
8139 function bnBitCount() {
8140 var r = 0,
8141 x = this.s & this.DM
8142 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8143 return r
8144 }
8145
8146 // (public) true iff nth bit is set
8147 function bnTestBit(n) {
8148 var j = Math.floor(n / this.DB)
8149 if (j >= this.t) return (this.s != 0)
8150 return ((this[j] & (1 << (n % this.DB))) != 0)
8151 }
8152
8153 // (protected) this op (1<<n)
8154 function bnpChangeBit(n, op) {
8155 var r = BigInteger.ONE.shiftLeft(n)
8156 this.bitwiseTo(r, op, r)
8157 return r
8158 }
8159
8160 // (public) this | (1<<n)
8161 function bnSetBit(n) {
8162 return this.changeBit(n, op_or)
8163 }
8164
8165 // (public) this & ~(1<<n)
8166 function bnClearBit(n) {
8167 return this.changeBit(n, op_andnot)
8168 }
8169
8170 // (public) this ^ (1<<n)
8171 function bnFlipBit(n) {
8172 return this.changeBit(n, op_xor)
8173 }
8174
8175 // (protected) r = this + a
8176 function bnpAddTo(a, r) {
8177 var self = this
8178
8179 var i = 0,
8180 c = 0,
8181 m = Math.min(a.t, self.t)
8182 while (i < m) {
8183 c += self[i] + a[i]
8184 r[i++] = c & self.DM
8185 c >>= self.DB
8186 }
8187 if (a.t < self.t) {
8188 c += a.s
8189 while (i < self.t) {
8190 c += self[i]
8191 r[i++] = c & self.DM
8192 c >>= self.DB
8193 }
8194 c += self.s
8195 } else {
8196 c += self.s
8197 while (i < a.t) {
8198 c += a[i]
8199 r[i++] = c & self.DM
8200 c >>= self.DB
8201 }
8202 c += a.s
8203 }
8204 r.s = (c < 0) ? -1 : 0
8205 if (c > 0) r[i++] = c
8206 else if (c < -1) r[i++] = self.DV + c
8207 r.t = i
8208 r.clamp()
8209 }
8210
8211 // (public) this + a
8212 function bnAdd(a) {
8213 var r = new BigInteger()
8214 this.addTo(a, r)
8215 return r
8216 }
8217
8218 // (public) this - a
8219 function bnSubtract(a) {
8220 var r = new BigInteger()
8221 this.subTo(a, r)
8222 return r
8223 }
8224
8225 // (public) this * a
8226 function bnMultiply(a) {
8227 var r = new BigInteger()
8228 this.multiplyTo(a, r)
8229 return r
8230 }
8231
8232 // (public) this^2
8233 function bnSquare() {
8234 var r = new BigInteger()
8235 this.squareTo(r)
8236 return r
8237 }
8238
8239 // (public) this / a
8240 function bnDivide(a) {
8241 var r = new BigInteger()
8242 this.divRemTo(a, r, null)
8243 return r
8244 }
8245
8246 // (public) this % a
8247 function bnRemainder(a) {
8248 var r = new BigInteger()
8249 this.divRemTo(a, null, r)
8250 return r
8251 }
8252
8253 // (public) [this/a,this%a]
8254 function bnDivideAndRemainder(a) {
8255 var q = new BigInteger(),
8256 r = new BigInteger()
8257 this.divRemTo(a, q, r)
8258 return new Array(q, r)
8259 }
8260
8261 // (protected) this *= n, this >= 0, 1 < n < DV
8262 function bnpDMultiply(n) {
8263 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8264 ++this.t
8265 this.clamp()
8266 }
8267
8268 // (protected) this += n << w words, this >= 0
8269 function bnpDAddOffset(n, w) {
8270 if (n == 0) return
8271 while (this.t <= w) this[this.t++] = 0
8272 this[w] += n
8273 while (this[w] >= this.DV) {
8274 this[w] -= this.DV
8275 if (++w >= this.t) this[this.t++] = 0
8276 ++this[w]
8277 }
8278 }
8279
8280 // A "null" reducer
8281 function NullExp() {}
8282
8283 function nNop(x) {
8284 return x
8285 }
8286
8287 function nMulTo(x, y, r) {
8288 x.multiplyTo(y, r)
8289 }
8290
8291 function nSqrTo(x, r) {
8292 x.squareTo(r)
8293 }
8294
8295 NullExp.prototype.convert = nNop
8296 NullExp.prototype.revert = nNop
8297 NullExp.prototype.mulTo = nMulTo
8298 NullExp.prototype.sqrTo = nSqrTo
8299
8300 // (public) this^e
8301 function bnPow(e) {
8302 return this.exp(e, new NullExp())
8303 }
8304
8305 // (protected) r = lower n words of "this * a", a.t <= n
8306 // "this" should be the larger one if appropriate.
8307 function bnpMultiplyLowerTo(a, n, r) {
8308 var i = Math.min(this.t + a.t, n)
8309 r.s = 0; // assumes a,this >= 0
8310 r.t = i
8311 while (i > 0) r[--i] = 0
8312 var j
8313 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8314 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8315 r.clamp()
8316 }
8317
8318 // (protected) r = "this * a" without lower n words, n > 0
8319 // "this" should be the larger one if appropriate.
8320 function bnpMultiplyUpperTo(a, n, r) {
8321 --n
8322 var i = r.t = this.t + a.t - n
8323 r.s = 0; // assumes a,this >= 0
8324 while (--i >= 0) r[i] = 0
8325 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8326 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8327 r.clamp()
8328 r.drShiftTo(1, r)
8329 }
8330
8331 // Barrett modular reduction
8332 function Barrett(m) {
8333 // setup Barrett
8334 this.r2 = new BigInteger()
8335 this.q3 = new BigInteger()
8336 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8337 this.mu = this.r2.divide(m)
8338 this.m = m
8339 }
8340
8341 function barrettConvert(x) {
8342 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8343 else if (x.compareTo(this.m) < 0) return x
8344 else {
8345 var r = new BigInteger()
8346 x.copyTo(r)
8347 this.reduce(r)
8348 return r
8349 }
8350 }
8351
8352 function barrettRevert(x) {
8353 return x
8354 }
8355
8356 // x = x mod m (HAC 14.42)
8357 function barrettReduce(x) {
8358 var self = this
8359 x.drShiftTo(self.m.t - 1, self.r2)
8360 if (x.t > self.m.t + 1) {
8361 x.t = self.m.t + 1
8362 x.clamp()
8363 }
8364 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8365 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8366 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8367 x.subTo(self.r2, x)
8368 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8369 }
8370
8371 // r = x^2 mod m; x != r
8372 function barrettSqrTo(x, r) {
8373 x.squareTo(r)
8374 this.reduce(r)
8375 }
8376
8377 // r = x*y mod m; x,y != r
8378 function barrettMulTo(x, y, r) {
8379 x.multiplyTo(y, r)
8380 this.reduce(r)
8381 }
8382
8383 Barrett.prototype.convert = barrettConvert
8384 Barrett.prototype.revert = barrettRevert
8385 Barrett.prototype.reduce = barrettReduce
8386 Barrett.prototype.mulTo = barrettMulTo
8387 Barrett.prototype.sqrTo = barrettSqrTo
8388
8389 // (public) this^e % m (HAC 14.85)
8390 function bnModPow(e, m) {
8391 var i = e.bitLength(),
8392 k, r = nbv(1),
8393 z
8394 if (i <= 0) return r
8395 else if (i < 18) k = 1
8396 else if (i < 48) k = 3
8397 else if (i < 144) k = 4
8398 else if (i < 768) k = 5
8399 else k = 6
8400 if (i < 8)
8401 z = new Classic(m)
8402 else if (m.isEven())
8403 z = new Barrett(m)
8404 else
8405 z = new Montgomery(m)
8406
8407 // precomputation
8408 var g = new Array(),
8409 n = 3,
8410 k1 = k - 1,
8411 km = (1 << k) - 1
8412 g[1] = z.convert(this)
8413 if (k > 1) {
8414 var g2 = new BigInteger()
8415 z.sqrTo(g[1], g2)
8416 while (n <= km) {
8417 g[n] = new BigInteger()
8418 z.mulTo(g2, g[n - 2], g[n])
8419 n += 2
8420 }
8421 }
8422
8423 var j = e.t - 1,
8424 w, is1 = true,
8425 r2 = new BigInteger(),
8426 t
8427 i = nbits(e[j]) - 1
8428 while (j >= 0) {
8429 if (i >= k1) w = (e[j] >> (i - k1)) & km
8430 else {
8431 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8432 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8433 }
8434
8435 n = k
8436 while ((w & 1) == 0) {
8437 w >>= 1
8438 --n
8439 }
8440 if ((i -= n) < 0) {
8441 i += this.DB
8442 --j
8443 }
8444 if (is1) { // ret == 1, don't bother squaring or multiplying it
8445 g[w].copyTo(r)
8446 is1 = false
8447 } else {
8448 while (n > 1) {
8449 z.sqrTo(r, r2)
8450 z.sqrTo(r2, r)
8451 n -= 2
8452 }
8453 if (n > 0) z.sqrTo(r, r2)
8454 else {
8455 t = r
8456 r = r2
8457 r2 = t
8458 }
8459 z.mulTo(r2, g[w], r)
8460 }
8461
8462 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8463 z.sqrTo(r, r2)
8464 t = r
8465 r = r2
8466 r2 = t
8467 if (--i < 0) {
8468 i = this.DB - 1
8469 --j
8470 }
8471 }
8472 }
8473 return z.revert(r)
8474 }
8475
8476 // (public) gcd(this,a) (HAC 14.54)
8477 function bnGCD(a) {
8478 var x = (this.s < 0) ? this.negate() : this.clone()
8479 var y = (a.s < 0) ? a.negate() : a.clone()
8480 if (x.compareTo(y) < 0) {
8481 var t = x
8482 x = y
8483 y = t
8484 }
8485 var i = x.getLowestSetBit(),
8486 g = y.getLowestSetBit()
8487 if (g < 0) return x
8488 if (i < g) g = i
8489 if (g > 0) {
8490 x.rShiftTo(g, x)
8491 y.rShiftTo(g, y)
8492 }
8493 while (x.signum() > 0) {
8494 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8495 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8496 if (x.compareTo(y) >= 0) {
8497 x.subTo(y, x)
8498 x.rShiftTo(1, x)
8499 } else {
8500 y.subTo(x, y)
8501 y.rShiftTo(1, y)
8502 }
8503 }
8504 if (g > 0) y.lShiftTo(g, y)
8505 return y
8506 }
8507
8508 // (protected) this % n, n < 2^26
8509 function bnpModInt(n) {
8510 if (n <= 0) return 0
8511 var d = this.DV % n,
8512 r = (this.s < 0) ? n - 1 : 0
8513 if (this.t > 0)
8514 if (d == 0) r = this[0] % n
8515 else
8516 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8517 return r
8518 }
8519
8520 // (public) 1/this % m (HAC 14.61)
8521 function bnModInverse(m) {
8522 var ac = m.isEven()
8523 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8524 var u = m.clone(),
8525 v = this.clone()
8526 var a = nbv(1),
8527 b = nbv(0),
8528 c = nbv(0),
8529 d = nbv(1)
8530 while (u.signum() != 0) {
8531 while (u.isEven()) {
8532 u.rShiftTo(1, u)
8533 if (ac) {
8534 if (!a.isEven() || !b.isEven()) {
8535 a.addTo(this, a)
8536 b.subTo(m, b)
8537 }
8538 a.rShiftTo(1, a)
8539 } else if (!b.isEven()) b.subTo(m, b)
8540 b.rShiftTo(1, b)
8541 }
8542 while (v.isEven()) {
8543 v.rShiftTo(1, v)
8544 if (ac) {
8545 if (!c.isEven() || !d.isEven()) {
8546 c.addTo(this, c)
8547 d.subTo(m, d)
8548 }
8549 c.rShiftTo(1, c)
8550 } else if (!d.isEven()) d.subTo(m, d)
8551 d.rShiftTo(1, d)
8552 }
8553 if (u.compareTo(v) >= 0) {
8554 u.subTo(v, u)
8555 if (ac) a.subTo(c, a)
8556 b.subTo(d, b)
8557 } else {
8558 v.subTo(u, v)
8559 if (ac) c.subTo(a, c)
8560 d.subTo(b, d)
8561 }
8562 }
8563 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8564 if (d.compareTo(m) >= 0) return d.subtract(m)
8565 if (d.signum() < 0) d.addTo(m, d)
8566 else return d
8567 if (d.signum() < 0) return d.add(m)
8568 else return d
8569 }
8570
8571 var lowprimes = [
8572 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8573 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8574 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8575 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8576 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8577 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8578 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8579 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8580 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8581 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8582 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8583 ]
8584
8585 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8586
8587 // (public) test primality with certainty >= 1-.5^t
8588 function bnIsProbablePrime(t) {
8589 var i, x = this.abs()
8590 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8591 for (i = 0; i < lowprimes.length; ++i)
8592 if (x[0] == lowprimes[i]) return true
8593 return false
8594 }
8595 if (x.isEven()) return false
8596 i = 1
8597 while (i < lowprimes.length) {
8598 var m = lowprimes[i],
8599 j = i + 1
8600 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8601 m = x.modInt(m)
8602 while (i < j) if (m % lowprimes[i++] == 0) return false
8603 }
8604 return x.millerRabin(t)
8605 }
8606
8607 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8608 function bnpMillerRabin(t) {
8609 var n1 = this.subtract(BigInteger.ONE)
8610 var k = n1.getLowestSetBit()
8611 if (k <= 0) return false
8612 var r = n1.shiftRight(k)
8613 t = (t + 1) >> 1
8614 if (t > lowprimes.length) t = lowprimes.length
8615 var a = new BigInteger(null)
8616 var j, bases = []
8617 for (var i = 0; i < t; ++i) {
8618 for (;;) {
8619 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8620 if (bases.indexOf(j) == -1) break
8621 }
8622 bases.push(j)
8623 a.fromInt(j)
8624 var y = a.modPow(r, this)
8625 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8626 var j = 1
8627 while (j++ < k && y.compareTo(n1) != 0) {
8628 y = y.modPowInt(2, this)
8629 if (y.compareTo(BigInteger.ONE) == 0) return false
8630 }
8631 if (y.compareTo(n1) != 0) return false
8632 }
8633 }
8634 return true
8635 }
8636
8637 // protected
8638 proto.chunkSize = bnpChunkSize
8639 proto.toRadix = bnpToRadix
8640 proto.fromRadix = bnpFromRadix
8641 proto.fromNumber = bnpFromNumber
8642 proto.bitwiseTo = bnpBitwiseTo
8643 proto.changeBit = bnpChangeBit
8644 proto.addTo = bnpAddTo
8645 proto.dMultiply = bnpDMultiply
8646 proto.dAddOffset = bnpDAddOffset
8647 proto.multiplyLowerTo = bnpMultiplyLowerTo
8648 proto.multiplyUpperTo = bnpMultiplyUpperTo
8649 proto.modInt = bnpModInt
8650 proto.millerRabin = bnpMillerRabin
8651
8652 // public
8653 proto.clone = bnClone
8654 proto.intValue = bnIntValue
8655 proto.byteValue = bnByteValue
8656 proto.shortValue = bnShortValue
8657 proto.signum = bnSigNum
8658 proto.toByteArray = bnToByteArray
8659 proto.equals = bnEquals
8660 proto.min = bnMin
8661 proto.max = bnMax
8662 proto.and = bnAnd
8663 proto.or = bnOr
8664 proto.xor = bnXor
8665 proto.andNot = bnAndNot
8666 proto.not = bnNot
8667 proto.shiftLeft = bnShiftLeft
8668 proto.shiftRight = bnShiftRight
8669 proto.getLowestSetBit = bnGetLowestSetBit
8670 proto.bitCount = bnBitCount
8671 proto.testBit = bnTestBit
8672 proto.setBit = bnSetBit
8673 proto.clearBit = bnClearBit
8674 proto.flipBit = bnFlipBit
8675 proto.add = bnAdd
8676 proto.subtract = bnSubtract
8677 proto.multiply = bnMultiply
8678 proto.divide = bnDivide
8679 proto.remainder = bnRemainder
8680 proto.divideAndRemainder = bnDivideAndRemainder
8681 proto.modPow = bnModPow
8682 proto.modInverse = bnModInverse
8683 proto.pow = bnPow
8684 proto.gcd = bnGCD
8685 proto.isProbablePrime = bnIsProbablePrime
8686
8687 // JSBN-specific extension
8688 proto.square = bnSquare
8689
8690 // constants
8691 BigInteger.ZERO = nbv(0)
8692 BigInteger.ONE = nbv(1)
8693 BigInteger.valueOf = nbv
8694
8695 module.exports = BigInteger
8696
8697 },{"../package.json":4}],2:[function(require,module,exports){
8698 (function (Buffer){
8699 // FIXME: Kind of a weird way to throw exceptions, consider removing
8700 var assert = require('assert')
8701 var BigInteger = require('./bigi')
8702
8703 /**
8704 * Turns a byte array into a big integer.
8705 *
8706 * This function will interpret a byte array as a big integer in big
8707 * endian notation.
8708 */
8709 BigInteger.fromByteArrayUnsigned = function(byteArray) {
8710 // BigInteger expects a DER integer conformant byte array
8711 if (byteArray[0] & 0x80) {
8712 return new BigInteger([0].concat(byteArray))
8713 }
8714
8715 return new BigInteger(byteArray)
8716 }
8717
8718 /**
8719 * Returns a byte array representation of the big integer.
8720 *
8721 * This returns the absolute of the contained value in big endian
8722 * form. A value of zero results in an empty array.
8723 */
8724 BigInteger.prototype.toByteArrayUnsigned = function() {
8725 var byteArray = this.toByteArray()
8726 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8727 }
8728
8729 BigInteger.fromDERInteger = function(byteArray) {
8730 return new BigInteger(byteArray)
8731 }
8732
8733 /*
8734 * Converts BigInteger to a DER integer representation.
8735 *
8736 * The format for this value uses the most significant bit as a sign
8737 * bit. If the most significant bit is already set and the integer is
8738 * positive, a 0x00 is prepended.
8739 *
8740 * Examples:
8741 *
8742 * 0 => 0x00
8743 * 1 => 0x01
8744 * -1 => 0xff
8745 * 127 => 0x7f
8746 * -127 => 0x81
8747 * 128 => 0x0080
8748 * -128 => 0x80
8749 * 255 => 0x00ff
8750 * -255 => 0xff01
8751 * 16300 => 0x3fac
8752 * -16300 => 0xc054
8753 * 62300 => 0x00f35c
8754 * -62300 => 0xff0ca4
8755 */
8756 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8757
8758 BigInteger.fromBuffer = function(buffer) {
8759 // BigInteger expects a DER integer conformant byte array
8760 if (buffer[0] & 0x80) {
8761 var byteArray = Array.prototype.slice.call(buffer)
8762
8763 return new BigInteger([0].concat(byteArray))
8764 }
8765
8766 return new BigInteger(buffer)
8767 }
8768
8769 BigInteger.fromHex = function(hex) {
8770 if (hex === '') return BigInteger.ZERO
8771
8772 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8773 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8774 return new BigInteger(hex, 16)
8775 }
8776
8777 BigInteger.prototype.toBuffer = function(size) {
8778 var byteArray = this.toByteArrayUnsigned()
8779 var zeros = []
8780
8781 var padding = size - byteArray.length
8782 while (zeros.length < padding) zeros.push(0)
8783
8784 return new Buffer(zeros.concat(byteArray))
8785 }
8786
8787 BigInteger.prototype.toHex = function(size) {
8788 return this.toBuffer(size).toString('hex')
8789 }
8790
8791 }).call(this,require("buffer").Buffer)
8792 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8793 var BigInteger = require('./bigi')
8794
8795 //addons
8796 require('./convert')
8797
8798 module.exports = BigInteger
8799 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8800 module.exports={
8801 "name": "bigi",
8802 "version": "1.4.0",
8803 "description": "Big integers.",
8804 "keywords": [
8805 "cryptography",
8806 "math",
8807 "bitcoin",
8808 "arbitrary",
8809 "precision",
8810 "arithmetic",
8811 "big",
8812 "integer",
8813 "int",
8814 "number",
8815 "biginteger",
8816 "bigint",
8817 "bignumber",
8818 "decimal",
8819 "float"
8820 ],
8821 "devDependencies": {
8822 "mocha": "^1.20.1",
8823 "jshint": "^2.5.1",
8824 "coveralls": "^2.10.0",
8825 "istanbul": "^0.2.11"
8826 },
8827 "repository": {
8828 "url": "https://github.com/cryptocoinjs/bigi",
8829 "type": "git"
8830 },
8831 "main": "./lib/index.js",
8832 "scripts": {
8833 "test": "_mocha -- test/*.js",
8834 "jshint": "jshint --config jshint.json lib/*.js ; true",
8835 "unit": "mocha",
8836 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8837 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8838 },
8839 "dependencies": {},
8840 "testling": {
8841 "files": "test/*.js",
8842 "harness": "mocha",
8843 "browsers": [
8844 "ie/9..latest",
8845 "firefox/latest",
8846 "chrome/latest",
8847 "safari/6.0..latest",
8848 "iphone/6.0..latest",
8849 "android-browser/4.2..latest"
8850 ]
8851 },
8852 "bugs": {
8853 "url": "https://github.com/cryptocoinjs/bigi/issues"
8854 },
8855 "homepage": "https://github.com/cryptocoinjs/bigi",
8856 "_id": "bigi@1.4.0",
8857 "dist": {
8858 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8859 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8860 },
8861 "_from": "bigi@^1.4.0",
8862 "_npmVersion": "1.4.3",
8863 "_npmUser": {
8864 "name": "jp",
8865 "email": "jprichardson@gmail.com"
8866 },
8867 "maintainers": [
8868 {
8869 "name": "jp",
8870 "email": "jprichardson@gmail.com"
8871 },
8872 {
8873 "name": "midnightlightning",
8874 "email": "boydb@midnightdesign.ws"
8875 },
8876 {
8877 "name": "sidazhang",
8878 "email": "sidazhang89@gmail.com"
8879 },
8880 {
8881 "name": "nadav",
8882 "email": "npm@shesek.info"
8883 }
8884 ],
8885 "directories": {},
8886 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8887 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8888 }
8889
8890 },{}],5:[function(require,module,exports){
8891 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8892 //
8893 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8894 //
8895 // Originally from narwhal.js (http://narwhaljs.org)
8896 // Copyright (c) 2009 Thomas Robinson <280north.com>
8897 //
8898 // Permission is hereby granted, free of charge, to any person obtaining a copy
8899 // of this software and associated documentation files (the 'Software'), to
8900 // deal in the Software without restriction, including without limitation the
8901 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8902 // sell copies of the Software, and to permit persons to whom the Software is
8903 // furnished to do so, subject to the following conditions:
8904 //
8905 // The above copyright notice and this permission notice shall be included in
8906 // all copies or substantial portions of the Software.
8907 //
8908 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8909 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8910 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8911 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8912 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8913 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8914
8915 // when used in node, this will actually load the util module we depend on
8916 // versus loading the builtin util module as happens otherwise
8917 // this is a bug in node module loading as far as I am concerned
8918 var util = require('util/');
8919
8920 var pSlice = Array.prototype.slice;
8921 var hasOwn = Object.prototype.hasOwnProperty;
8922
8923 // 1. The assert module provides functions that throw
8924 // AssertionError's when particular conditions are not met. The
8925 // assert module must conform to the following interface.
8926
8927 var assert = module.exports = ok;
8928
8929 // 2. The AssertionError is defined in assert.
8930 // new assert.AssertionError({ message: message,
8931 // actual: actual,
8932 // expected: expected })
8933
8934 assert.AssertionError = function AssertionError(options) {
8935 this.name = 'AssertionError';
8936 this.actual = options.actual;
8937 this.expected = options.expected;
8938 this.operator = options.operator;
8939 if (options.message) {
8940 this.message = options.message;
8941 this.generatedMessage = false;
8942 } else {
8943 this.message = getMessage(this);
8944 this.generatedMessage = true;
8945 }
8946 var stackStartFunction = options.stackStartFunction || fail;
8947
8948 if (Error.captureStackTrace) {
8949 Error.captureStackTrace(this, stackStartFunction);
8950 }
8951 else {
8952 // non v8 browsers so we can have a stacktrace
8953 var err = new Error();
8954 if (err.stack) {
8955 var out = err.stack;
8956
8957 // try to strip useless frames
8958 var fn_name = stackStartFunction.name;
8959 var idx = out.indexOf('\n' + fn_name);
8960 if (idx >= 0) {
8961 // once we have located the function frame
8962 // we need to strip out everything before it (and its line)
8963 var next_line = out.indexOf('\n', idx + 1);
8964 out = out.substring(next_line + 1);
8965 }
8966
8967 this.stack = out;
8968 }
8969 }
8970 };
8971
8972 // assert.AssertionError instanceof Error
8973 util.inherits(assert.AssertionError, Error);
8974
8975 function replacer(key, value) {
8976 if (util.isUndefined(value)) {
8977 return '' + value;
8978 }
8979 if (util.isNumber(value) && !isFinite(value)) {
8980 return value.toString();
8981 }
8982 if (util.isFunction(value) || util.isRegExp(value)) {
8983 return value.toString();
8984 }
8985 return value;
8986 }
8987
8988 function truncate(s, n) {
8989 if (util.isString(s)) {
8990 return s.length < n ? s : s.slice(0, n);
8991 } else {
8992 return s;
8993 }
8994 }
8995
8996 function getMessage(self) {
8997 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8998 self.operator + ' ' +
8999 truncate(JSON.stringify(self.expected, replacer), 128);
9000 }
9001
9002 // At present only the three keys mentioned above are used and
9003 // understood by the spec. Implementations or sub modules can pass
9004 // other keys to the AssertionError's constructor - they will be
9005 // ignored.
9006
9007 // 3. All of the following functions must throw an AssertionError
9008 // when a corresponding condition is not met, with a message that
9009 // may be undefined if not provided. All assertion methods provide
9010 // both the actual and expected values to the assertion error for
9011 // display purposes.
9012
9013 function fail(actual, expected, message, operator, stackStartFunction) {
9014 throw new assert.AssertionError({
9015 message: message,
9016 actual: actual,
9017 expected: expected,
9018 operator: operator,
9019 stackStartFunction: stackStartFunction
9020 });
9021 }
9022
9023 // EXTENSION! allows for well behaved errors defined elsewhere.
9024 assert.fail = fail;
9025
9026 // 4. Pure assertion tests whether a value is truthy, as determined
9027 // by !!guard.
9028 // assert.ok(guard, message_opt);
9029 // This statement is equivalent to assert.equal(true, !!guard,
9030 // message_opt);. To test strictly for the value true, use
9031 // assert.strictEqual(true, guard, message_opt);.
9032
9033 function ok(value, message) {
9034 if (!value) fail(value, true, message, '==', assert.ok);
9035 }
9036 assert.ok = ok;
9037
9038 // 5. The equality assertion tests shallow, coercive equality with
9039 // ==.
9040 // assert.equal(actual, expected, message_opt);
9041
9042 assert.equal = function equal(actual, expected, message) {
9043 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9044 };
9045
9046 // 6. The non-equality assertion tests for whether two objects are not equal
9047 // with != assert.notEqual(actual, expected, message_opt);
9048
9049 assert.notEqual = function notEqual(actual, expected, message) {
9050 if (actual == expected) {
9051 fail(actual, expected, message, '!=', assert.notEqual);
9052 }
9053 };
9054
9055 // 7. The equivalence assertion tests a deep equality relation.
9056 // assert.deepEqual(actual, expected, message_opt);
9057
9058 assert.deepEqual = function deepEqual(actual, expected, message) {
9059 if (!_deepEqual(actual, expected)) {
9060 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9061 }
9062 };
9063
9064 function _deepEqual(actual, expected) {
9065 // 7.1. All identical values are equivalent, as determined by ===.
9066 if (actual === expected) {
9067 return true;
9068
9069 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9070 if (actual.length != expected.length) return false;
9071
9072 for (var i = 0; i < actual.length; i++) {
9073 if (actual[i] !== expected[i]) return false;
9074 }
9075
9076 return true;
9077
9078 // 7.2. If the expected value is a Date object, the actual value is
9079 // equivalent if it is also a Date object that refers to the same time.
9080 } else if (util.isDate(actual) && util.isDate(expected)) {
9081 return actual.getTime() === expected.getTime();
9082
9083 // 7.3 If the expected value is a RegExp object, the actual value is
9084 // equivalent if it is also a RegExp object with the same source and
9085 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9086 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9087 return actual.source === expected.source &&
9088 actual.global === expected.global &&
9089 actual.multiline === expected.multiline &&
9090 actual.lastIndex === expected.lastIndex &&
9091 actual.ignoreCase === expected.ignoreCase;
9092
9093 // 7.4. Other pairs that do not both pass typeof value == 'object',
9094 // equivalence is determined by ==.
9095 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9096 return actual == expected;
9097
9098 // 7.5 For all other Object pairs, including Array objects, equivalence is
9099 // determined by having the same number of owned properties (as verified
9100 // with Object.prototype.hasOwnProperty.call), the same set of keys
9101 // (although not necessarily the same order), equivalent values for every
9102 // corresponding key, and an identical 'prototype' property. Note: this
9103 // accounts for both named and indexed properties on Arrays.
9104 } else {
9105 return objEquiv(actual, expected);
9106 }
9107 }
9108
9109 function isArguments(object) {
9110 return Object.prototype.toString.call(object) == '[object Arguments]';
9111 }
9112
9113 function objEquiv(a, b) {
9114 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9115 return false;
9116 // an identical 'prototype' property.
9117 if (a.prototype !== b.prototype) return false;
9118 // if one is a primitive, the other must be same
9119 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9120 return a === b;
9121 }
9122 var aIsArgs = isArguments(a),
9123 bIsArgs = isArguments(b);
9124 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9125 return false;
9126 if (aIsArgs) {
9127 a = pSlice.call(a);
9128 b = pSlice.call(b);
9129 return _deepEqual(a, b);
9130 }
9131 var ka = objectKeys(a),
9132 kb = objectKeys(b),
9133 key, i;
9134 // having the same number of owned properties (keys incorporates
9135 // hasOwnProperty)
9136 if (ka.length != kb.length)
9137 return false;
9138 //the same set of keys (although not necessarily the same order),
9139 ka.sort();
9140 kb.sort();
9141 //~~~cheap key test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 if (ka[i] != kb[i])
9144 return false;
9145 }
9146 //equivalent values for every corresponding key, and
9147 //~~~possibly expensive deep test
9148 for (i = ka.length - 1; i >= 0; i--) {
9149 key = ka[i];
9150 if (!_deepEqual(a[key], b[key])) return false;
9151 }
9152 return true;
9153 }
9154
9155 // 8. The non-equivalence assertion tests for any deep inequality.
9156 // assert.notDeepEqual(actual, expected, message_opt);
9157
9158 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9159 if (_deepEqual(actual, expected)) {
9160 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9161 }
9162 };
9163
9164 // 9. The strict equality assertion tests strict equality, as determined by ===.
9165 // assert.strictEqual(actual, expected, message_opt);
9166
9167 assert.strictEqual = function strictEqual(actual, expected, message) {
9168 if (actual !== expected) {
9169 fail(actual, expected, message, '===', assert.strictEqual);
9170 }
9171 };
9172
9173 // 10. The strict non-equality assertion tests for strict inequality, as
9174 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9175
9176 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9177 if (actual === expected) {
9178 fail(actual, expected, message, '!==', assert.notStrictEqual);
9179 }
9180 };
9181
9182 function expectedException(actual, expected) {
9183 if (!actual || !expected) {
9184 return false;
9185 }
9186
9187 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9188 return expected.test(actual);
9189 } else if (actual instanceof expected) {
9190 return true;
9191 } else if (expected.call({}, actual) === true) {
9192 return true;
9193 }
9194
9195 return false;
9196 }
9197
9198 function _throws(shouldThrow, block, expected, message) {
9199 var actual;
9200
9201 if (util.isString(expected)) {
9202 message = expected;
9203 expected = null;
9204 }
9205
9206 try {
9207 block();
9208 } catch (e) {
9209 actual = e;
9210 }
9211
9212 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9213 (message ? ' ' + message : '.');
9214
9215 if (shouldThrow && !actual) {
9216 fail(actual, expected, 'Missing expected exception' + message);
9217 }
9218
9219 if (!shouldThrow && expectedException(actual, expected)) {
9220 fail(actual, expected, 'Got unwanted exception' + message);
9221 }
9222
9223 if ((shouldThrow && actual && expected &&
9224 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9225 throw actual;
9226 }
9227 }
9228
9229 // 11. Expected to throw an error:
9230 // assert.throws(block, Error_opt, message_opt);
9231
9232 assert.throws = function(block, /*optional*/error, /*optional*/message) {
9233 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9234 };
9235
9236 // EXTENSION! This is annoying to write outside this module.
9237 assert.doesNotThrow = function(block, /*optional*/message) {
9238 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9239 };
9240
9241 assert.ifError = function(err) { if (err) {throw err;}};
9242
9243 var objectKeys = Object.keys || function (obj) {
9244 var keys = [];
9245 for (var key in obj) {
9246 if (hasOwn.call(obj, key)) keys.push(key);
9247 }
9248 return keys;
9249 };
9250
9251 },{"util/":29}],6:[function(require,module,exports){
9252
9253 },{}],7:[function(require,module,exports){
9254 /*!
9255 * The buffer module from node.js, for the browser.
9256 *
9257 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9258 * @license MIT
9259 */
9260
9261 var base64 = require('base64-js')
9262 var ieee754 = require('ieee754')
9263 var isArray = require('is-array')
9264
9265 exports.Buffer = Buffer
9266 exports.SlowBuffer = SlowBuffer
9267 exports.INSPECT_MAX_BYTES = 50
9268 Buffer.poolSize = 8192 // not used by this implementation
9269
9270 var rootParent = {}
9271
9272 /**
9273 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9274 * === true Use Uint8Array implementation (fastest)
9275 * === false Use Object implementation (most compatible, even IE6)
9276 *
9277 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9278 * Opera 11.6+, iOS 4.2+.
9279 *
9280 * Due to various browser bugs, sometimes the Object implementation will be used even
9281 * when the browser supports typed arrays.
9282 *
9283 * Note:
9284 *
9285 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9286 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9287 *
9288 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9289 * on objects.
9290 *
9291 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9292 *
9293 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9294 * incorrect length in some situations.
9295
9296 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9297 * get the Object implementation, which is slower but behaves correctly.
9298 */
9299 Buffer.TYPED_ARRAY_SUPPORT = (function () {
9300 function Bar () {}
9301 try {
9302 var arr = new Uint8Array(1)
9303 arr.foo = function () { return 42 }
9304 arr.constructor = Bar
9305 return arr.foo() === 42 && // typed array instances can be augmented
9306 arr.constructor === Bar && // constructor can be set
9307 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9308 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9309 } catch (e) {
9310 return false
9311 }
9312 })()
9313
9314 function kMaxLength () {
9315 return Buffer.TYPED_ARRAY_SUPPORT
9316 ? 0x7fffffff
9317 : 0x3fffffff
9318 }
9319
9320 /**
9321 * Class: Buffer
9322 * =============
9323 *
9324 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9325 * with function properties for all the node `Buffer` API functions. We use
9326 * `Uint8Array` so that square bracket notation works as expected -- it returns
9327 * a single octet.
9328 *
9329 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9330 * prototype.
9331 */
9332 function Buffer (arg) {
9333 if (!(this instanceof Buffer)) {
9334 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9335 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9336 return new Buffer(arg)
9337 }
9338
9339 this.length = 0
9340 this.parent = undefined
9341
9342 // Common case.
9343 if (typeof arg === 'number') {
9344 return fromNumber(this, arg)
9345 }
9346
9347 // Slightly less common case.
9348 if (typeof arg === 'string') {
9349 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9350 }
9351
9352 // Unusual.
9353 return fromObject(this, arg)
9354 }
9355
9356 function fromNumber (that, length) {
9357 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9358 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9359 for (var i = 0; i < length; i++) {
9360 that[i] = 0
9361 }
9362 }
9363 return that
9364 }
9365
9366 function fromString (that, string, encoding) {
9367 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9368
9369 // Assumption: byteLength() return value is always < kMaxLength.
9370 var length = byteLength(string, encoding) | 0
9371 that = allocate(that, length)
9372
9373 that.write(string, encoding)
9374 return that
9375 }
9376
9377 function fromObject (that, object) {
9378 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9379
9380 if (isArray(object)) return fromArray(that, object)
9381
9382 if (object == null) {
9383 throw new TypeError('must start with number, buffer, array or string')
9384 }
9385
9386 if (typeof ArrayBuffer !== 'undefined') {
9387 if (object.buffer instanceof ArrayBuffer) {
9388 return fromTypedArray(that, object)
9389 }
9390 if (object instanceof ArrayBuffer) {
9391 return fromArrayBuffer(that, object)
9392 }
9393 }
9394
9395 if (object.length) return fromArrayLike(that, object)
9396
9397 return fromJsonObject(that, object)
9398 }
9399
9400 function fromBuffer (that, buffer) {
9401 var length = checked(buffer.length) | 0
9402 that = allocate(that, length)
9403 buffer.copy(that, 0, 0, length)
9404 return that
9405 }
9406
9407 function fromArray (that, array) {
9408 var length = checked(array.length) | 0
9409 that = allocate(that, length)
9410 for (var i = 0; i < length; i += 1) {
9411 that[i] = array[i] & 255
9412 }
9413 return that
9414 }
9415
9416 // Duplicate of fromArray() to keep fromArray() monomorphic.
9417 function fromTypedArray (that, array) {
9418 var length = checked(array.length) | 0
9419 that = allocate(that, length)
9420 // Truncating the elements is probably not what people expect from typed
9421 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9422 // of the old Buffer constructor.
9423 for (var i = 0; i < length; i += 1) {
9424 that[i] = array[i] & 255
9425 }
9426 return that
9427 }
9428
9429 function fromArrayBuffer (that, array) {
9430 if (Buffer.TYPED_ARRAY_SUPPORT) {
9431 // Return an augmented `Uint8Array` instance, for best performance
9432 array.byteLength
9433 that = Buffer._augment(new Uint8Array(array))
9434 } else {
9435 // Fallback: Return an object instance of the Buffer class
9436 that = fromTypedArray(that, new Uint8Array(array))
9437 }
9438 return that
9439 }
9440
9441 function fromArrayLike (that, array) {
9442 var length = checked(array.length) | 0
9443 that = allocate(that, length)
9444 for (var i = 0; i < length; i += 1) {
9445 that[i] = array[i] & 255
9446 }
9447 return that
9448 }
9449
9450 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9451 // Returns a zero-length buffer for inputs that don't conform to the spec.
9452 function fromJsonObject (that, object) {
9453 var array
9454 var length = 0
9455
9456 if (object.type === 'Buffer' && isArray(object.data)) {
9457 array = object.data
9458 length = checked(array.length) | 0
9459 }
9460 that = allocate(that, length)
9461
9462 for (var i = 0; i < length; i += 1) {
9463 that[i] = array[i] & 255
9464 }
9465 return that
9466 }
9467
9468 function allocate (that, length) {
9469 if (Buffer.TYPED_ARRAY_SUPPORT) {
9470 // Return an augmented `Uint8Array` instance, for best performance
9471 that = Buffer._augment(new Uint8Array(length))
9472 } else {
9473 // Fallback: Return an object instance of the Buffer class
9474 that.length = length
9475 that._isBuffer = true
9476 }
9477
9478 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9479 if (fromPool) that.parent = rootParent
9480
9481 return that
9482 }
9483
9484 function checked (length) {
9485 // Note: cannot use `length < kMaxLength` here because that fails when
9486 // length is NaN (which is otherwise coerced to zero.)
9487 if (length >= kMaxLength()) {
9488 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9489 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9490 }
9491 return length | 0
9492 }
9493
9494 function SlowBuffer (subject, encoding) {
9495 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9496
9497 var buf = new Buffer(subject, encoding)
9498 delete buf.parent
9499 return buf
9500 }
9501
9502 Buffer.isBuffer = function isBuffer (b) {
9503 return !!(b != null && b._isBuffer)
9504 }
9505
9506 Buffer.compare = function compare (a, b) {
9507 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9508 throw new TypeError('Arguments must be Buffers')
9509 }
9510
9511 if (a === b) return 0
9512
9513 var x = a.length
9514 var y = b.length
9515
9516 var i = 0
9517 var len = Math.min(x, y)
9518 while (i < len) {
9519 if (a[i] !== b[i]) break
9520
9521 ++i
9522 }
9523
9524 if (i !== len) {
9525 x = a[i]
9526 y = b[i]
9527 }
9528
9529 if (x < y) return -1
9530 if (y < x) return 1
9531 return 0
9532 }
9533
9534 Buffer.isEncoding = function isEncoding (encoding) {
9535 switch (String(encoding).toLowerCase()) {
9536 case 'hex':
9537 case 'utf8':
9538 case 'utf-8':
9539 case 'ascii':
9540 case 'binary':
9541 case 'base64':
9542 case 'raw':
9543 case 'ucs2':
9544 case 'ucs-2':
9545 case 'utf16le':
9546 case 'utf-16le':
9547 return true
9548 default:
9549 return false
9550 }
9551 }
9552
9553 Buffer.concat = function concat (list, length) {
9554 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9555
9556 if (list.length === 0) {
9557 return new Buffer(0)
9558 }
9559
9560 var i
9561 if (length === undefined) {
9562 length = 0
9563 for (i = 0; i < list.length; i++) {
9564 length += list[i].length
9565 }
9566 }
9567
9568 var buf = new Buffer(length)
9569 var pos = 0
9570 for (i = 0; i < list.length; i++) {
9571 var item = list[i]
9572 item.copy(buf, pos)
9573 pos += item.length
9574 }
9575 return buf
9576 }
9577
9578 function byteLength (string, encoding) {
9579 if (typeof string !== 'string') string = '' + string
9580
9581 var len = string.length
9582 if (len === 0) return 0
9583
9584 // Use a for loop to avoid recursion
9585 var loweredCase = false
9586 for (;;) {
9587 switch (encoding) {
9588 case 'ascii':
9589 case 'binary':
9590 // Deprecated
9591 case 'raw':
9592 case 'raws':
9593 return len
9594 case 'utf8':
9595 case 'utf-8':
9596 return utf8ToBytes(string).length
9597 case 'ucs2':
9598 case 'ucs-2':
9599 case 'utf16le':
9600 case 'utf-16le':
9601 return len * 2
9602 case 'hex':
9603 return len >>> 1
9604 case 'base64':
9605 return base64ToBytes(string).length
9606 default:
9607 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9608 encoding = ('' + encoding).toLowerCase()
9609 loweredCase = true
9610 }
9611 }
9612 }
9613 Buffer.byteLength = byteLength
9614
9615 // pre-set for values that may exist in the future
9616 Buffer.prototype.length = undefined
9617 Buffer.prototype.parent = undefined
9618
9619 function slowToString (encoding, start, end) {
9620 var loweredCase = false
9621
9622 start = start | 0
9623 end = end === undefined || end === Infinity ? this.length : end | 0
9624
9625 if (!encoding) encoding = 'utf8'
9626 if (start < 0) start = 0
9627 if (end > this.length) end = this.length
9628 if (end <= start) return ''
9629
9630 while (true) {
9631 switch (encoding) {
9632 case 'hex':
9633 return hexSlice(this, start, end)
9634
9635 case 'utf8':
9636 case 'utf-8':
9637 return utf8Slice(this, start, end)
9638
9639 case 'ascii':
9640 return asciiSlice(this, start, end)
9641
9642 case 'binary':
9643 return binarySlice(this, start, end)
9644
9645 case 'base64':
9646 return base64Slice(this, start, end)
9647
9648 case 'ucs2':
9649 case 'ucs-2':
9650 case 'utf16le':
9651 case 'utf-16le':
9652 return utf16leSlice(this, start, end)
9653
9654 default:
9655 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9656 encoding = (encoding + '').toLowerCase()
9657 loweredCase = true
9658 }
9659 }
9660 }
9661
9662 Buffer.prototype.toString = function toString () {
9663 var length = this.length | 0
9664 if (length === 0) return ''
9665 if (arguments.length === 0) return utf8Slice(this, 0, length)
9666 return slowToString.apply(this, arguments)
9667 }
9668
9669 Buffer.prototype.equals = function equals (b) {
9670 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9671 if (this === b) return true
9672 return Buffer.compare(this, b) === 0
9673 }
9674
9675 Buffer.prototype.inspect = function inspect () {
9676 var str = ''
9677 var max = exports.INSPECT_MAX_BYTES
9678 if (this.length > 0) {
9679 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9680 if (this.length > max) str += ' ... '
9681 }
9682 return '<Buffer ' + str + '>'
9683 }
9684
9685 Buffer.prototype.compare = function compare (b) {
9686 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9687 if (this === b) return 0
9688 return Buffer.compare(this, b)
9689 }
9690
9691 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9692 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9693 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9694 byteOffset >>= 0
9695
9696 if (this.length === 0) return -1
9697 if (byteOffset >= this.length) return -1
9698
9699 // Negative offsets start from the end of the buffer
9700 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9701
9702 if (typeof val === 'string') {
9703 if (val.length === 0) return -1 // special case: looking for empty string always fails
9704 return String.prototype.indexOf.call(this, val, byteOffset)
9705 }
9706 if (Buffer.isBuffer(val)) {
9707 return arrayIndexOf(this, val, byteOffset)
9708 }
9709 if (typeof val === 'number') {
9710 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9711 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9712 }
9713 return arrayIndexOf(this, [ val ], byteOffset)
9714 }
9715
9716 function arrayIndexOf (arr, val, byteOffset) {
9717 var foundIndex = -1
9718 for (var i = 0; byteOffset + i < arr.length; i++) {
9719 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9720 if (foundIndex === -1) foundIndex = i
9721 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9722 } else {
9723 foundIndex = -1
9724 }
9725 }
9726 return -1
9727 }
9728
9729 throw new TypeError('val must be string, number or Buffer')
9730 }
9731
9732 // `get` is deprecated
9733 Buffer.prototype.get = function get (offset) {
9734 console.log('.get() is deprecated. Access using array indexes instead.')
9735 return this.readUInt8(offset)
9736 }
9737
9738 // `set` is deprecated
9739 Buffer.prototype.set = function set (v, offset) {
9740 console.log('.set() is deprecated. Access using array indexes instead.')
9741 return this.writeUInt8(v, offset)
9742 }
9743
9744 function hexWrite (buf, string, offset, length) {
9745 offset = Number(offset) || 0
9746 var remaining = buf.length - offset
9747 if (!length) {
9748 length = remaining
9749 } else {
9750 length = Number(length)
9751 if (length > remaining) {
9752 length = remaining
9753 }
9754 }
9755
9756 // must be an even number of digits
9757 var strLen = string.length
9758 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9759
9760 if (length > strLen / 2) {
9761 length = strLen / 2
9762 }
9763 for (var i = 0; i < length; i++) {
9764 var parsed = parseInt(string.substr(i * 2, 2), 16)
9765 if (isNaN(parsed)) throw new Error('Invalid hex string')
9766 buf[offset + i] = parsed
9767 }
9768 return i
9769 }
9770
9771 function utf8Write (buf, string, offset, length) {
9772 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9773 }
9774
9775 function asciiWrite (buf, string, offset, length) {
9776 return blitBuffer(asciiToBytes(string), buf, offset, length)
9777 }
9778
9779 function binaryWrite (buf, string, offset, length) {
9780 return asciiWrite(buf, string, offset, length)
9781 }
9782
9783 function base64Write (buf, string, offset, length) {
9784 return blitBuffer(base64ToBytes(string), buf, offset, length)
9785 }
9786
9787 function ucs2Write (buf, string, offset, length) {
9788 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9789 }
9790
9791 Buffer.prototype.write = function write (string, offset, length, encoding) {
9792 // Buffer#write(string)
9793 if (offset === undefined) {
9794 encoding = 'utf8'
9795 length = this.length
9796 offset = 0
9797 // Buffer#write(string, encoding)
9798 } else if (length === undefined && typeof offset === 'string') {
9799 encoding = offset
9800 length = this.length
9801 offset = 0
9802 // Buffer#write(string, offset[, length][, encoding])
9803 } else if (isFinite(offset)) {
9804 offset = offset | 0
9805 if (isFinite(length)) {
9806 length = length | 0
9807 if (encoding === undefined) encoding = 'utf8'
9808 } else {
9809 encoding = length
9810 length = undefined
9811 }
9812 // legacy write(string, encoding, offset, length) - remove in v0.13
9813 } else {
9814 var swap = encoding
9815 encoding = offset
9816 offset = length | 0
9817 length = swap
9818 }
9819
9820 var remaining = this.length - offset
9821 if (length === undefined || length > remaining) length = remaining
9822
9823 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9824 throw new RangeError('attempt to write outside buffer bounds')
9825 }
9826
9827 if (!encoding) encoding = 'utf8'
9828
9829 var loweredCase = false
9830 for (;;) {
9831 switch (encoding) {
9832 case 'hex':
9833 return hexWrite(this, string, offset, length)
9834
9835 case 'utf8':
9836 case 'utf-8':
9837 return utf8Write(this, string, offset, length)
9838
9839 case 'ascii':
9840 return asciiWrite(this, string, offset, length)
9841
9842 case 'binary':
9843 return binaryWrite(this, string, offset, length)
9844
9845 case 'base64':
9846 // Warning: maxLength not taken into account in base64Write
9847 return base64Write(this, string, offset, length)
9848
9849 case 'ucs2':
9850 case 'ucs-2':
9851 case 'utf16le':
9852 case 'utf-16le':
9853 return ucs2Write(this, string, offset, length)
9854
9855 default:
9856 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9857 encoding = ('' + encoding).toLowerCase()
9858 loweredCase = true
9859 }
9860 }
9861 }
9862
9863 Buffer.prototype.toJSON = function toJSON () {
9864 return {
9865 type: 'Buffer',
9866 data: Array.prototype.slice.call(this._arr || this, 0)
9867 }
9868 }
9869
9870 function base64Slice (buf, start, end) {
9871 if (start === 0 && end === buf.length) {
9872 return base64.fromByteArray(buf)
9873 } else {
9874 return base64.fromByteArray(buf.slice(start, end))
9875 }
9876 }
9877
9878 function utf8Slice (buf, start, end) {
9879 end = Math.min(buf.length, end)
9880 var firstByte
9881 var secondByte
9882 var thirdByte
9883 var fourthByte
9884 var bytesPerSequence
9885 var tempCodePoint
9886 var codePoint
9887 var res = []
9888 var i = start
9889
9890 for (; i < end; i += bytesPerSequence) {
9891 firstByte = buf[i]
9892 codePoint = 0xFFFD
9893
9894 if (firstByte > 0xEF) {
9895 bytesPerSequence = 4
9896 } else if (firstByte > 0xDF) {
9897 bytesPerSequence = 3
9898 } else if (firstByte > 0xBF) {
9899 bytesPerSequence = 2
9900 } else {
9901 bytesPerSequence = 1
9902 }
9903
9904 if (i + bytesPerSequence <= end) {
9905 switch (bytesPerSequence) {
9906 case 1:
9907 if (firstByte < 0x80) {
9908 codePoint = firstByte
9909 }
9910 break
9911 case 2:
9912 secondByte = buf[i + 1]
9913 if ((secondByte & 0xC0) === 0x80) {
9914 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9915 if (tempCodePoint > 0x7F) {
9916 codePoint = tempCodePoint
9917 }
9918 }
9919 break
9920 case 3:
9921 secondByte = buf[i + 1]
9922 thirdByte = buf[i + 2]
9923 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9924 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9925 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9926 codePoint = tempCodePoint
9927 }
9928 }
9929 break
9930 case 4:
9931 secondByte = buf[i + 1]
9932 thirdByte = buf[i + 2]
9933 fourthByte = buf[i + 3]
9934 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9935 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9936 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9937 codePoint = tempCodePoint
9938 }
9939 }
9940 }
9941 }
9942
9943 if (codePoint === 0xFFFD) {
9944 // we generated an invalid codePoint so make sure to only advance by 1 byte
9945 bytesPerSequence = 1
9946 } else if (codePoint > 0xFFFF) {
9947 // encode to utf16 (surrogate pair dance)
9948 codePoint -= 0x10000
9949 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9950 codePoint = 0xDC00 | codePoint & 0x3FF
9951 }
9952
9953 res.push(codePoint)
9954 }
9955
9956 return String.fromCharCode.apply(String, res)
9957 }
9958
9959 function asciiSlice (buf, start, end) {
9960 var ret = ''
9961 end = Math.min(buf.length, end)
9962
9963 for (var i = start; i < end; i++) {
9964 ret += String.fromCharCode(buf[i] & 0x7F)
9965 }
9966 return ret
9967 }
9968
9969 function binarySlice (buf, start, end) {
9970 var ret = ''
9971 end = Math.min(buf.length, end)
9972
9973 for (var i = start; i < end; i++) {
9974 ret += String.fromCharCode(buf[i])
9975 }
9976 return ret
9977 }
9978
9979 function hexSlice (buf, start, end) {
9980 var len = buf.length
9981
9982 if (!start || start < 0) start = 0
9983 if (!end || end < 0 || end > len) end = len
9984
9985 var out = ''
9986 for (var i = start; i < end; i++) {
9987 out += toHex(buf[i])
9988 }
9989 return out
9990 }
9991
9992 function utf16leSlice (buf, start, end) {
9993 var bytes = buf.slice(start, end)
9994 var res = ''
9995 for (var i = 0; i < bytes.length; i += 2) {
9996 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9997 }
9998 return res
9999 }
10000
10001 Buffer.prototype.slice = function slice (start, end) {
10002 var len = this.length
10003 start = ~~start
10004 end = end === undefined ? len : ~~end
10005
10006 if (start < 0) {
10007 start += len
10008 if (start < 0) start = 0
10009 } else if (start > len) {
10010 start = len
10011 }
10012
10013 if (end < 0) {
10014 end += len
10015 if (end < 0) end = 0
10016 } else if (end > len) {
10017 end = len
10018 }
10019
10020 if (end < start) end = start
10021
10022 var newBuf
10023 if (Buffer.TYPED_ARRAY_SUPPORT) {
10024 newBuf = Buffer._augment(this.subarray(start, end))
10025 } else {
10026 var sliceLen = end - start
10027 newBuf = new Buffer(sliceLen, undefined)
10028 for (var i = 0; i < sliceLen; i++) {
10029 newBuf[i] = this[i + start]
10030 }
10031 }
10032
10033 if (newBuf.length) newBuf.parent = this.parent || this
10034
10035 return newBuf
10036 }
10037
10038 /*
10039 * Need to make sure that buffer isn't trying to write out of bounds.
10040 */
10041 function checkOffset (offset, ext, length) {
10042 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10043 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10044 }
10045
10046 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10047 offset = offset | 0
10048 byteLength = byteLength | 0
10049 if (!noAssert) checkOffset(offset, byteLength, this.length)
10050
10051 var val = this[offset]
10052 var mul = 1
10053 var i = 0
10054 while (++i < byteLength && (mul *= 0x100)) {
10055 val += this[offset + i] * mul
10056 }
10057
10058 return val
10059 }
10060
10061 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10062 offset = offset | 0
10063 byteLength = byteLength | 0
10064 if (!noAssert) {
10065 checkOffset(offset, byteLength, this.length)
10066 }
10067
10068 var val = this[offset + --byteLength]
10069 var mul = 1
10070 while (byteLength > 0 && (mul *= 0x100)) {
10071 val += this[offset + --byteLength] * mul
10072 }
10073
10074 return val
10075 }
10076
10077 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10078 if (!noAssert) checkOffset(offset, 1, this.length)
10079 return this[offset]
10080 }
10081
10082 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10083 if (!noAssert) checkOffset(offset, 2, this.length)
10084 return this[offset] | (this[offset + 1] << 8)
10085 }
10086
10087 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10088 if (!noAssert) checkOffset(offset, 2, this.length)
10089 return (this[offset] << 8) | this[offset + 1]
10090 }
10091
10092 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10093 if (!noAssert) checkOffset(offset, 4, this.length)
10094
10095 return ((this[offset]) |
10096 (this[offset + 1] << 8) |
10097 (this[offset + 2] << 16)) +
10098 (this[offset + 3] * 0x1000000)
10099 }
10100
10101 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10102 if (!noAssert) checkOffset(offset, 4, this.length)
10103
10104 return (this[offset] * 0x1000000) +
10105 ((this[offset + 1] << 16) |
10106 (this[offset + 2] << 8) |
10107 this[offset + 3])
10108 }
10109
10110 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10111 offset = offset | 0
10112 byteLength = byteLength | 0
10113 if (!noAssert) checkOffset(offset, byteLength, this.length)
10114
10115 var val = this[offset]
10116 var mul = 1
10117 var i = 0
10118 while (++i < byteLength && (mul *= 0x100)) {
10119 val += this[offset + i] * mul
10120 }
10121 mul *= 0x80
10122
10123 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10124
10125 return val
10126 }
10127
10128 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10129 offset = offset | 0
10130 byteLength = byteLength | 0
10131 if (!noAssert) checkOffset(offset, byteLength, this.length)
10132
10133 var i = byteLength
10134 var mul = 1
10135 var val = this[offset + --i]
10136 while (i > 0 && (mul *= 0x100)) {
10137 val += this[offset + --i] * mul
10138 }
10139 mul *= 0x80
10140
10141 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10142
10143 return val
10144 }
10145
10146 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 1, this.length)
10148 if (!(this[offset] & 0x80)) return (this[offset])
10149 return ((0xff - this[offset] + 1) * -1)
10150 }
10151
10152 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset] | (this[offset + 1] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156 }
10157
10158 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 2, this.length)
10160 var val = this[offset + 1] | (this[offset] << 8)
10161 return (val & 0x8000) ? val | 0xFFFF0000 : val
10162 }
10163
10164 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10165 if (!noAssert) checkOffset(offset, 4, this.length)
10166
10167 return (this[offset]) |
10168 (this[offset + 1] << 8) |
10169 (this[offset + 2] << 16) |
10170 (this[offset + 3] << 24)
10171 }
10172
10173 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10174 if (!noAssert) checkOffset(offset, 4, this.length)
10175
10176 return (this[offset] << 24) |
10177 (this[offset + 1] << 16) |
10178 (this[offset + 2] << 8) |
10179 (this[offset + 3])
10180 }
10181
10182 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10183 if (!noAssert) checkOffset(offset, 4, this.length)
10184 return ieee754.read(this, offset, true, 23, 4)
10185 }
10186
10187 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10188 if (!noAssert) checkOffset(offset, 4, this.length)
10189 return ieee754.read(this, offset, false, 23, 4)
10190 }
10191
10192 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10193 if (!noAssert) checkOffset(offset, 8, this.length)
10194 return ieee754.read(this, offset, true, 52, 8)
10195 }
10196
10197 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10198 if (!noAssert) checkOffset(offset, 8, this.length)
10199 return ieee754.read(this, offset, false, 52, 8)
10200 }
10201
10202 function checkInt (buf, value, offset, ext, max, min) {
10203 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10204 if (value > max || value < min) throw new RangeError('value is out of bounds')
10205 if (offset + ext > buf.length) throw new RangeError('index out of range')
10206 }
10207
10208 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10209 value = +value
10210 offset = offset | 0
10211 byteLength = byteLength | 0
10212 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10213
10214 var mul = 1
10215 var i = 0
10216 this[offset] = value & 0xFF
10217 while (++i < byteLength && (mul *= 0x100)) {
10218 this[offset + i] = (value / mul) & 0xFF
10219 }
10220
10221 return offset + byteLength
10222 }
10223
10224 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10225 value = +value
10226 offset = offset | 0
10227 byteLength = byteLength | 0
10228 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10229
10230 var i = byteLength - 1
10231 var mul = 1
10232 this[offset + i] = value & 0xFF
10233 while (--i >= 0 && (mul *= 0x100)) {
10234 this[offset + i] = (value / mul) & 0xFF
10235 }
10236
10237 return offset + byteLength
10238 }
10239
10240 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10241 value = +value
10242 offset = offset | 0
10243 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10244 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10245 this[offset] = value
10246 return offset + 1
10247 }
10248
10249 function objectWriteUInt16 (buf, value, offset, littleEndian) {
10250 if (value < 0) value = 0xffff + value + 1
10251 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10252 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10253 (littleEndian ? i : 1 - i) * 8
10254 }
10255 }
10256
10257 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10258 value = +value
10259 offset = offset | 0
10260 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10261 if (Buffer.TYPED_ARRAY_SUPPORT) {
10262 this[offset] = value
10263 this[offset + 1] = (value >>> 8)
10264 } else {
10265 objectWriteUInt16(this, value, offset, true)
10266 }
10267 return offset + 2
10268 }
10269
10270 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10271 value = +value
10272 offset = offset | 0
10273 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10274 if (Buffer.TYPED_ARRAY_SUPPORT) {
10275 this[offset] = (value >>> 8)
10276 this[offset + 1] = value
10277 } else {
10278 objectWriteUInt16(this, value, offset, false)
10279 }
10280 return offset + 2
10281 }
10282
10283 function objectWriteUInt32 (buf, value, offset, littleEndian) {
10284 if (value < 0) value = 0xffffffff + value + 1
10285 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10286 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10287 }
10288 }
10289
10290 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10291 value = +value
10292 offset = offset | 0
10293 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10294 if (Buffer.TYPED_ARRAY_SUPPORT) {
10295 this[offset + 3] = (value >>> 24)
10296 this[offset + 2] = (value >>> 16)
10297 this[offset + 1] = (value >>> 8)
10298 this[offset] = value
10299 } else {
10300 objectWriteUInt32(this, value, offset, true)
10301 }
10302 return offset + 4
10303 }
10304
10305 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10306 value = +value
10307 offset = offset | 0
10308 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10309 if (Buffer.TYPED_ARRAY_SUPPORT) {
10310 this[offset] = (value >>> 24)
10311 this[offset + 1] = (value >>> 16)
10312 this[offset + 2] = (value >>> 8)
10313 this[offset + 3] = value
10314 } else {
10315 objectWriteUInt32(this, value, offset, false)
10316 }
10317 return offset + 4
10318 }
10319
10320 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10321 value = +value
10322 offset = offset | 0
10323 if (!noAssert) {
10324 var limit = Math.pow(2, 8 * byteLength - 1)
10325
10326 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10327 }
10328
10329 var i = 0
10330 var mul = 1
10331 var sub = value < 0 ? 1 : 0
10332 this[offset] = value & 0xFF
10333 while (++i < byteLength && (mul *= 0x100)) {
10334 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10335 }
10336
10337 return offset + byteLength
10338 }
10339
10340 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10341 value = +value
10342 offset = offset | 0
10343 if (!noAssert) {
10344 var limit = Math.pow(2, 8 * byteLength - 1)
10345
10346 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10347 }
10348
10349 var i = byteLength - 1
10350 var mul = 1
10351 var sub = value < 0 ? 1 : 0
10352 this[offset + i] = value & 0xFF
10353 while (--i >= 0 && (mul *= 0x100)) {
10354 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10355 }
10356
10357 return offset + byteLength
10358 }
10359
10360 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10361 value = +value
10362 offset = offset | 0
10363 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10364 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10365 if (value < 0) value = 0xff + value + 1
10366 this[offset] = value
10367 return offset + 1
10368 }
10369
10370 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10371 value = +value
10372 offset = offset | 0
10373 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10374 if (Buffer.TYPED_ARRAY_SUPPORT) {
10375 this[offset] = value
10376 this[offset + 1] = (value >>> 8)
10377 } else {
10378 objectWriteUInt16(this, value, offset, true)
10379 }
10380 return offset + 2
10381 }
10382
10383 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10384 value = +value
10385 offset = offset | 0
10386 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10387 if (Buffer.TYPED_ARRAY_SUPPORT) {
10388 this[offset] = (value >>> 8)
10389 this[offset + 1] = value
10390 } else {
10391 objectWriteUInt16(this, value, offset, false)
10392 }
10393 return offset + 2
10394 }
10395
10396 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10397 value = +value
10398 offset = offset | 0
10399 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10400 if (Buffer.TYPED_ARRAY_SUPPORT) {
10401 this[offset] = value
10402 this[offset + 1] = (value >>> 8)
10403 this[offset + 2] = (value >>> 16)
10404 this[offset + 3] = (value >>> 24)
10405 } else {
10406 objectWriteUInt32(this, value, offset, true)
10407 }
10408 return offset + 4
10409 }
10410
10411 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10412 value = +value
10413 offset = offset | 0
10414 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10415 if (value < 0) value = 0xffffffff + value + 1
10416 if (Buffer.TYPED_ARRAY_SUPPORT) {
10417 this[offset] = (value >>> 24)
10418 this[offset + 1] = (value >>> 16)
10419 this[offset + 2] = (value >>> 8)
10420 this[offset + 3] = value
10421 } else {
10422 objectWriteUInt32(this, value, offset, false)
10423 }
10424 return offset + 4
10425 }
10426
10427 function checkIEEE754 (buf, value, offset, ext, max, min) {
10428 if (value > max || value < min) throw new RangeError('value is out of bounds')
10429 if (offset + ext > buf.length) throw new RangeError('index out of range')
10430 if (offset < 0) throw new RangeError('index out of range')
10431 }
10432
10433 function writeFloat (buf, value, offset, littleEndian, noAssert) {
10434 if (!noAssert) {
10435 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10436 }
10437 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10438 return offset + 4
10439 }
10440
10441 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10442 return writeFloat(this, value, offset, true, noAssert)
10443 }
10444
10445 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10446 return writeFloat(this, value, offset, false, noAssert)
10447 }
10448
10449 function writeDouble (buf, value, offset, littleEndian, noAssert) {
10450 if (!noAssert) {
10451 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10452 }
10453 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10454 return offset + 8
10455 }
10456
10457 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10458 return writeDouble(this, value, offset, true, noAssert)
10459 }
10460
10461 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10462 return writeDouble(this, value, offset, false, noAssert)
10463 }
10464
10465 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10466 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10467 if (!start) start = 0
10468 if (!end && end !== 0) end = this.length
10469 if (targetStart >= target.length) targetStart = target.length
10470 if (!targetStart) targetStart = 0
10471 if (end > 0 && end < start) end = start
10472
10473 // Copy 0 bytes; we're done
10474 if (end === start) return 0
10475 if (target.length === 0 || this.length === 0) return 0
10476
10477 // Fatal error conditions
10478 if (targetStart < 0) {
10479 throw new RangeError('targetStart out of bounds')
10480 }
10481 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10482 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10483
10484 // Are we oob?
10485 if (end > this.length) end = this.length
10486 if (target.length - targetStart < end - start) {
10487 end = target.length - targetStart + start
10488 }
10489
10490 var len = end - start
10491 var i
10492
10493 if (this === target && start < targetStart && targetStart < end) {
10494 // descending copy from end
10495 for (i = len - 1; i >= 0; i--) {
10496 target[i + targetStart] = this[i + start]
10497 }
10498 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10499 // ascending copy from start
10500 for (i = 0; i < len; i++) {
10501 target[i + targetStart] = this[i + start]
10502 }
10503 } else {
10504 target._set(this.subarray(start, start + len), targetStart)
10505 }
10506
10507 return len
10508 }
10509
10510 // fill(value, start=0, end=buffer.length)
10511 Buffer.prototype.fill = function fill (value, start, end) {
10512 if (!value) value = 0
10513 if (!start) start = 0
10514 if (!end) end = this.length
10515
10516 if (end < start) throw new RangeError('end < start')
10517
10518 // Fill 0 bytes; we're done
10519 if (end === start) return
10520 if (this.length === 0) return
10521
10522 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10523 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10524
10525 var i
10526 if (typeof value === 'number') {
10527 for (i = start; i < end; i++) {
10528 this[i] = value
10529 }
10530 } else {
10531 var bytes = utf8ToBytes(value.toString())
10532 var len = bytes.length
10533 for (i = start; i < end; i++) {
10534 this[i] = bytes[i % len]
10535 }
10536 }
10537
10538 return this
10539 }
10540
10541 /**
10542 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10543 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10544 */
10545 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10546 if (typeof Uint8Array !== 'undefined') {
10547 if (Buffer.TYPED_ARRAY_SUPPORT) {
10548 return (new Buffer(this)).buffer
10549 } else {
10550 var buf = new Uint8Array(this.length)
10551 for (var i = 0, len = buf.length; i < len; i += 1) {
10552 buf[i] = this[i]
10553 }
10554 return buf.buffer
10555 }
10556 } else {
10557 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10558 }
10559 }
10560
10561 // HELPER FUNCTIONS
10562 // ================
10563
10564 var BP = Buffer.prototype
10565
10566 /**
10567 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10568 */
10569 Buffer._augment = function _augment (arr) {
10570 arr.constructor = Buffer
10571 arr._isBuffer = true
10572
10573 // save reference to original Uint8Array set method before overwriting
10574 arr._set = arr.set
10575
10576 // deprecated
10577 arr.get = BP.get
10578 arr.set = BP.set
10579
10580 arr.write = BP.write
10581 arr.toString = BP.toString
10582 arr.toLocaleString = BP.toString
10583 arr.toJSON = BP.toJSON
10584 arr.equals = BP.equals
10585 arr.compare = BP.compare
10586 arr.indexOf = BP.indexOf
10587 arr.copy = BP.copy
10588 arr.slice = BP.slice
10589 arr.readUIntLE = BP.readUIntLE
10590 arr.readUIntBE = BP.readUIntBE
10591 arr.readUInt8 = BP.readUInt8
10592 arr.readUInt16LE = BP.readUInt16LE
10593 arr.readUInt16BE = BP.readUInt16BE
10594 arr.readUInt32LE = BP.readUInt32LE
10595 arr.readUInt32BE = BP.readUInt32BE
10596 arr.readIntLE = BP.readIntLE
10597 arr.readIntBE = BP.readIntBE
10598 arr.readInt8 = BP.readInt8
10599 arr.readInt16LE = BP.readInt16LE
10600 arr.readInt16BE = BP.readInt16BE
10601 arr.readInt32LE = BP.readInt32LE
10602 arr.readInt32BE = BP.readInt32BE
10603 arr.readFloatLE = BP.readFloatLE
10604 arr.readFloatBE = BP.readFloatBE
10605 arr.readDoubleLE = BP.readDoubleLE
10606 arr.readDoubleBE = BP.readDoubleBE
10607 arr.writeUInt8 = BP.writeUInt8
10608 arr.writeUIntLE = BP.writeUIntLE
10609 arr.writeUIntBE = BP.writeUIntBE
10610 arr.writeUInt16LE = BP.writeUInt16LE
10611 arr.writeUInt16BE = BP.writeUInt16BE
10612 arr.writeUInt32LE = BP.writeUInt32LE
10613 arr.writeUInt32BE = BP.writeUInt32BE
10614 arr.writeIntLE = BP.writeIntLE
10615 arr.writeIntBE = BP.writeIntBE
10616 arr.writeInt8 = BP.writeInt8
10617 arr.writeInt16LE = BP.writeInt16LE
10618 arr.writeInt16BE = BP.writeInt16BE
10619 arr.writeInt32LE = BP.writeInt32LE
10620 arr.writeInt32BE = BP.writeInt32BE
10621 arr.writeFloatLE = BP.writeFloatLE
10622 arr.writeFloatBE = BP.writeFloatBE
10623 arr.writeDoubleLE = BP.writeDoubleLE
10624 arr.writeDoubleBE = BP.writeDoubleBE
10625 arr.fill = BP.fill
10626 arr.inspect = BP.inspect
10627 arr.toArrayBuffer = BP.toArrayBuffer
10628
10629 return arr
10630 }
10631
10632 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10633
10634 function base64clean (str) {
10635 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10636 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10637 // Node converts strings with length < 2 to ''
10638 if (str.length < 2) return ''
10639 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10640 while (str.length % 4 !== 0) {
10641 str = str + '='
10642 }
10643 return str
10644 }
10645
10646 function stringtrim (str) {
10647 if (str.trim) return str.trim()
10648 return str.replace(/^\s+|\s+$/g, '')
10649 }
10650
10651 function toHex (n) {
10652 if (n < 16) return '0' + n.toString(16)
10653 return n.toString(16)
10654 }
10655
10656 function utf8ToBytes (string, units) {
10657 units = units || Infinity
10658 var codePoint
10659 var length = string.length
10660 var leadSurrogate = null
10661 var bytes = []
10662
10663 for (var i = 0; i < length; i++) {
10664 codePoint = string.charCodeAt(i)
10665
10666 // is surrogate component
10667 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10668 // last char was a lead
10669 if (!leadSurrogate) {
10670 // no lead yet
10671 if (codePoint > 0xDBFF) {
10672 // unexpected trail
10673 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10674 continue
10675
10676 } else if (i + 1 === length) {
10677 // unpaired lead
10678 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10679 continue
10680 }
10681
10682 // valid lead
10683 leadSurrogate = codePoint
10684
10685 continue
10686 }
10687
10688 // 2 leads in a row
10689 if (codePoint < 0xDC00) {
10690 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10691 leadSurrogate = codePoint
10692 continue
10693 }
10694
10695 // valid surrogate pair
10696 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10697
10698 } else if (leadSurrogate) {
10699 // valid bmp char, but last char was a lead
10700 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10701 }
10702
10703 leadSurrogate = null
10704
10705 // encode utf8
10706 if (codePoint < 0x80) {
10707 if ((units -= 1) < 0) break
10708 bytes.push(codePoint)
10709 } else if (codePoint < 0x800) {
10710 if ((units -= 2) < 0) break
10711 bytes.push(
10712 codePoint >> 0x6 | 0xC0,
10713 codePoint & 0x3F | 0x80
10714 )
10715 } else if (codePoint < 0x10000) {
10716 if ((units -= 3) < 0) break
10717 bytes.push(
10718 codePoint >> 0xC | 0xE0,
10719 codePoint >> 0x6 & 0x3F | 0x80,
10720 codePoint & 0x3F | 0x80
10721 )
10722 } else if (codePoint < 0x110000) {
10723 if ((units -= 4) < 0) break
10724 bytes.push(
10725 codePoint >> 0x12 | 0xF0,
10726 codePoint >> 0xC & 0x3F | 0x80,
10727 codePoint >> 0x6 & 0x3F | 0x80,
10728 codePoint & 0x3F | 0x80
10729 )
10730 } else {
10731 throw new Error('Invalid code point')
10732 }
10733 }
10734
10735 return bytes
10736 }
10737
10738 function asciiToBytes (str) {
10739 var byteArray = []
10740 for (var i = 0; i < str.length; i++) {
10741 // Node's code seems to be doing this and not & 0x7F..
10742 byteArray.push(str.charCodeAt(i) & 0xFF)
10743 }
10744 return byteArray
10745 }
10746
10747 function utf16leToBytes (str, units) {
10748 var c, hi, lo
10749 var byteArray = []
10750 for (var i = 0; i < str.length; i++) {
10751 if ((units -= 2) < 0) break
10752
10753 c = str.charCodeAt(i)
10754 hi = c >> 8
10755 lo = c % 256
10756 byteArray.push(lo)
10757 byteArray.push(hi)
10758 }
10759
10760 return byteArray
10761 }
10762
10763 function base64ToBytes (str) {
10764 return base64.toByteArray(base64clean(str))
10765 }
10766
10767 function blitBuffer (src, dst, offset, length) {
10768 for (var i = 0; i < length; i++) {
10769 if ((i + offset >= dst.length) || (i >= src.length)) break
10770 dst[i + offset] = src[i]
10771 }
10772 return i
10773 }
10774
10775 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10776 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10777
10778 ;(function (exports) {
10779 'use strict';
10780
10781 var Arr = (typeof Uint8Array !== 'undefined')
10782 ? Uint8Array
10783 : Array
10784
10785 var PLUS = '+'.charCodeAt(0)
10786 var SLASH = '/'.charCodeAt(0)
10787 var NUMBER = '0'.charCodeAt(0)
10788 var LOWER = 'a'.charCodeAt(0)
10789 var UPPER = 'A'.charCodeAt(0)
10790 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10791 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10792
10793 function decode (elt) {
10794 var code = elt.charCodeAt(0)
10795 if (code === PLUS ||
10796 code === PLUS_URL_SAFE)
10797 return 62 // '+'
10798 if (code === SLASH ||
10799 code === SLASH_URL_SAFE)
10800 return 63 // '/'
10801 if (code < NUMBER)
10802 return -1 //no match
10803 if (code < NUMBER + 10)
10804 return code - NUMBER + 26 + 26
10805 if (code < UPPER + 26)
10806 return code - UPPER
10807 if (code < LOWER + 26)
10808 return code - LOWER + 26
10809 }
10810
10811 function b64ToByteArray (b64) {
10812 var i, j, l, tmp, placeHolders, arr
10813
10814 if (b64.length % 4 > 0) {
10815 throw new Error('Invalid string. Length must be a multiple of 4')
10816 }
10817
10818 // the number of equal signs (place holders)
10819 // if there are two placeholders, than the two characters before it
10820 // represent one byte
10821 // if there is only one, then the three characters before it represent 2 bytes
10822 // this is just a cheap hack to not do indexOf twice
10823 var len = b64.length
10824 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10825
10826 // base64 is 4/3 + up to two characters of the original data
10827 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10828
10829 // if there are placeholders, only get up to the last complete 4 chars
10830 l = placeHolders > 0 ? b64.length - 4 : b64.length
10831
10832 var L = 0
10833
10834 function push (v) {
10835 arr[L++] = v
10836 }
10837
10838 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10839 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10840 push((tmp & 0xFF0000) >> 16)
10841 push((tmp & 0xFF00) >> 8)
10842 push(tmp & 0xFF)
10843 }
10844
10845 if (placeHolders === 2) {
10846 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10847 push(tmp & 0xFF)
10848 } else if (placeHolders === 1) {
10849 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10850 push((tmp >> 8) & 0xFF)
10851 push(tmp & 0xFF)
10852 }
10853
10854 return arr
10855 }
10856
10857 function uint8ToBase64 (uint8) {
10858 var i,
10859 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10860 output = "",
10861 temp, length
10862
10863 function encode (num) {
10864 return lookup.charAt(num)
10865 }
10866
10867 function tripletToBase64 (num) {
10868 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10869 }
10870
10871 // go through the array every three bytes, we'll deal with trailing stuff later
10872 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10873 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10874 output += tripletToBase64(temp)
10875 }
10876
10877 // pad the end with zeros, but make sure to not forget the extra bytes
10878 switch (extraBytes) {
10879 case 1:
10880 temp = uint8[uint8.length - 1]
10881 output += encode(temp >> 2)
10882 output += encode((temp << 4) & 0x3F)
10883 output += '=='
10884 break
10885 case 2:
10886 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10887 output += encode(temp >> 10)
10888 output += encode((temp >> 4) & 0x3F)
10889 output += encode((temp << 2) & 0x3F)
10890 output += '='
10891 break
10892 }
10893
10894 return output
10895 }
10896
10897 exports.toByteArray = b64ToByteArray
10898 exports.fromByteArray = uint8ToBase64
10899 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10900
10901 },{}],9:[function(require,module,exports){
10902 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10903 var e, m
10904 var eLen = nBytes * 8 - mLen - 1
10905 var eMax = (1 << eLen) - 1
10906 var eBias = eMax >> 1
10907 var nBits = -7
10908 var i = isLE ? (nBytes - 1) : 0
10909 var d = isLE ? -1 : 1
10910 var s = buffer[offset + i]
10911
10912 i += d
10913
10914 e = s & ((1 << (-nBits)) - 1)
10915 s >>= (-nBits)
10916 nBits += eLen
10917 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10918
10919 m = e & ((1 << (-nBits)) - 1)
10920 e >>= (-nBits)
10921 nBits += mLen
10922 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10923
10924 if (e === 0) {
10925 e = 1 - eBias
10926 } else if (e === eMax) {
10927 return m ? NaN : ((s ? -1 : 1) * Infinity)
10928 } else {
10929 m = m + Math.pow(2, mLen)
10930 e = e - eBias
10931 }
10932 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10933 }
10934
10935 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10936 var e, m, c
10937 var eLen = nBytes * 8 - mLen - 1
10938 var eMax = (1 << eLen) - 1
10939 var eBias = eMax >> 1
10940 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10941 var i = isLE ? 0 : (nBytes - 1)
10942 var d = isLE ? 1 : -1
10943 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10944
10945 value = Math.abs(value)
10946
10947 if (isNaN(value) || value === Infinity) {
10948 m = isNaN(value) ? 1 : 0
10949 e = eMax
10950 } else {
10951 e = Math.floor(Math.log(value) / Math.LN2)
10952 if (value * (c = Math.pow(2, -e)) < 1) {
10953 e--
10954 c *= 2
10955 }
10956 if (e + eBias >= 1) {
10957 value += rt / c
10958 } else {
10959 value += rt * Math.pow(2, 1 - eBias)
10960 }
10961 if (value * c >= 2) {
10962 e++
10963 c /= 2
10964 }
10965
10966 if (e + eBias >= eMax) {
10967 m = 0
10968 e = eMax
10969 } else if (e + eBias >= 1) {
10970 m = (value * c - 1) * Math.pow(2, mLen)
10971 e = e + eBias
10972 } else {
10973 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10974 e = 0
10975 }
10976 }
10977
10978 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10979
10980 e = (e << mLen) | m
10981 eLen += mLen
10982 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10983
10984 buffer[offset + i - d] |= s * 128
10985 }
10986
10987 },{}],10:[function(require,module,exports){
10988
10989 /**
10990 * isArray
10991 */
10992
10993 var isArray = Array.isArray;
10994
10995 /**
10996 * toString
10997 */
10998
10999 var str = Object.prototype.toString;
11000
11001 /**
11002 * Whether or not the given `val`
11003 * is an array.
11004 *
11005 * example:
11006 *
11007 * isArray([]);
11008 * // > true
11009 * isArray(arguments);
11010 * // > false
11011 * isArray('');
11012 * // > false
11013 *
11014 * @param {mixed} val
11015 * @return {bool}
11016 */
11017
11018 module.exports = isArray || function (val) {
11019 return !! val && '[object Array]' == str.call(val);
11020 };
11021
11022 },{}],11:[function(require,module,exports){
11023 // Copyright Joyent, Inc. and other Node contributors.
11024 //
11025 // Permission is hereby granted, free of charge, to any person obtaining a
11026 // copy of this software and associated documentation files (the
11027 // "Software"), to deal in the Software without restriction, including
11028 // without limitation the rights to use, copy, modify, merge, publish,
11029 // distribute, sublicense, and/or sell copies of the Software, and to permit
11030 // persons to whom the Software is furnished to do so, subject to the
11031 // following conditions:
11032 //
11033 // The above copyright notice and this permission notice shall be included
11034 // in all copies or substantial portions of the Software.
11035 //
11036 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11037 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11038 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11039 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11040 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11041 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11042 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11043
11044 function EventEmitter() {
11045 this._events = this._events || {};
11046 this._maxListeners = this._maxListeners || undefined;
11047 }
11048 module.exports = EventEmitter;
11049
11050 // Backwards-compat with node 0.10.x
11051 EventEmitter.EventEmitter = EventEmitter;
11052
11053 EventEmitter.prototype._events = undefined;
11054 EventEmitter.prototype._maxListeners = undefined;
11055
11056 // By default EventEmitters will print a warning if more than 10 listeners are
11057 // added to it. This is a useful default which helps finding memory leaks.
11058 EventEmitter.defaultMaxListeners = 10;
11059
11060 // Obviously not all Emitters should be limited to 10. This function allows
11061 // that to be increased. Set to zero for unlimited.
11062 EventEmitter.prototype.setMaxListeners = function(n) {
11063 if (!isNumber(n) || n < 0 || isNaN(n))
11064 throw TypeError('n must be a positive number');
11065 this._maxListeners = n;
11066 return this;
11067 };
11068
11069 EventEmitter.prototype.emit = function(type) {
11070 var er, handler, len, args, i, listeners;
11071
11072 if (!this._events)
11073 this._events = {};
11074
11075 // If there is no 'error' event listener then throw.
11076 if (type === 'error') {
11077 if (!this._events.error ||
11078 (isObject(this._events.error) && !this._events.error.length)) {
11079 er = arguments[1];
11080 if (er instanceof Error) {
11081 throw er; // Unhandled 'error' event
11082 }
11083 throw TypeError('Uncaught, unspecified "error" event.');
11084 }
11085 }
11086
11087 handler = this._events[type];
11088
11089 if (isUndefined(handler))
11090 return false;
11091
11092 if (isFunction(handler)) {
11093 switch (arguments.length) {
11094 // fast cases
11095 case 1:
11096 handler.call(this);
11097 break;
11098 case 2:
11099 handler.call(this, arguments[1]);
11100 break;
11101 case 3:
11102 handler.call(this, arguments[1], arguments[2]);
11103 break;
11104 // slower
11105 default:
11106 len = arguments.length;
11107 args = new Array(len - 1);
11108 for (i = 1; i < len; i++)
11109 args[i - 1] = arguments[i];
11110 handler.apply(this, args);
11111 }
11112 } else if (isObject(handler)) {
11113 len = arguments.length;
11114 args = new Array(len - 1);
11115 for (i = 1; i < len; i++)
11116 args[i - 1] = arguments[i];
11117
11118 listeners = handler.slice();
11119 len = listeners.length;
11120 for (i = 0; i < len; i++)
11121 listeners[i].apply(this, args);
11122 }
11123
11124 return true;
11125 };
11126
11127 EventEmitter.prototype.addListener = function(type, listener) {
11128 var m;
11129
11130 if (!isFunction(listener))
11131 throw TypeError('listener must be a function');
11132
11133 if (!this._events)
11134 this._events = {};
11135
11136 // To avoid recursion in the case that type === "newListener"! Before
11137 // adding it to the listeners, first emit "newListener".
11138 if (this._events.newListener)
11139 this.emit('newListener', type,
11140 isFunction(listener.listener) ?
11141 listener.listener : listener);
11142
11143 if (!this._events[type])
11144 // Optimize the case of one listener. Don't need the extra array object.
11145 this._events[type] = listener;
11146 else if (isObject(this._events[type]))
11147 // If we've already got an array, just append.
11148 this._events[type].push(listener);
11149 else
11150 // Adding the second element, need to change to array.
11151 this._events[type] = [this._events[type], listener];
11152
11153 // Check for listener leak
11154 if (isObject(this._events[type]) && !this._events[type].warned) {
11155 var m;
11156 if (!isUndefined(this._maxListeners)) {
11157 m = this._maxListeners;
11158 } else {
11159 m = EventEmitter.defaultMaxListeners;
11160 }
11161
11162 if (m && m > 0 && this._events[type].length > m) {
11163 this._events[type].warned = true;
11164 console.error('(node) warning: possible EventEmitter memory ' +
11165 'leak detected. %d listeners added. ' +
11166 'Use emitter.setMaxListeners() to increase limit.',
11167 this._events[type].length);
11168 if (typeof console.trace === 'function') {
11169 // not supported in IE 10
11170 console.trace();
11171 }
11172 }
11173 }
11174
11175 return this;
11176 };
11177
11178 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11179
11180 EventEmitter.prototype.once = function(type, listener) {
11181 if (!isFunction(listener))
11182 throw TypeError('listener must be a function');
11183
11184 var fired = false;
11185
11186 function g() {
11187 this.removeListener(type, g);
11188
11189 if (!fired) {
11190 fired = true;
11191 listener.apply(this, arguments);
11192 }
11193 }
11194
11195 g.listener = listener;
11196 this.on(type, g);
11197
11198 return this;
11199 };
11200
11201 // emits a 'removeListener' event iff the listener was removed
11202 EventEmitter.prototype.removeListener = function(type, listener) {
11203 var list, position, length, i;
11204
11205 if (!isFunction(listener))
11206 throw TypeError('listener must be a function');
11207
11208 if (!this._events || !this._events[type])
11209 return this;
11210
11211 list = this._events[type];
11212 length = list.length;
11213 position = -1;
11214
11215 if (list === listener ||
11216 (isFunction(list.listener) && list.listener === listener)) {
11217 delete this._events[type];
11218 if (this._events.removeListener)
11219 this.emit('removeListener', type, listener);
11220
11221 } else if (isObject(list)) {
11222 for (i = length; i-- > 0;) {
11223 if (list[i] === listener ||
11224 (list[i].listener && list[i].listener === listener)) {
11225 position = i;
11226 break;
11227 }
11228 }
11229
11230 if (position < 0)
11231 return this;
11232
11233 if (list.length === 1) {
11234 list.length = 0;
11235 delete this._events[type];
11236 } else {
11237 list.splice(position, 1);
11238 }
11239
11240 if (this._events.removeListener)
11241 this.emit('removeListener', type, listener);
11242 }
11243
11244 return this;
11245 };
11246
11247 EventEmitter.prototype.removeAllListeners = function(type) {
11248 var key, listeners;
11249
11250 if (!this._events)
11251 return this;
11252
11253 // not listening for removeListener, no need to emit
11254 if (!this._events.removeListener) {
11255 if (arguments.length === 0)
11256 this._events = {};
11257 else if (this._events[type])
11258 delete this._events[type];
11259 return this;
11260 }
11261
11262 // emit removeListener for all listeners on all events
11263 if (arguments.length === 0) {
11264 for (key in this._events) {
11265 if (key === 'removeListener') continue;
11266 this.removeAllListeners(key);
11267 }
11268 this.removeAllListeners('removeListener');
11269 this._events = {};
11270 return this;
11271 }
11272
11273 listeners = this._events[type];
11274
11275 if (isFunction(listeners)) {
11276 this.removeListener(type, listeners);
11277 } else {
11278 // LIFO order
11279 while (listeners.length)
11280 this.removeListener(type, listeners[listeners.length - 1]);
11281 }
11282 delete this._events[type];
11283
11284 return this;
11285 };
11286
11287 EventEmitter.prototype.listeners = function(type) {
11288 var ret;
11289 if (!this._events || !this._events[type])
11290 ret = [];
11291 else if (isFunction(this._events[type]))
11292 ret = [this._events[type]];
11293 else
11294 ret = this._events[type].slice();
11295 return ret;
11296 };
11297
11298 EventEmitter.listenerCount = function(emitter, type) {
11299 var ret;
11300 if (!emitter._events || !emitter._events[type])
11301 ret = 0;
11302 else if (isFunction(emitter._events[type]))
11303 ret = 1;
11304 else
11305 ret = emitter._events[type].length;
11306 return ret;
11307 };
11308
11309 function isFunction(arg) {
11310 return typeof arg === 'function';
11311 }
11312
11313 function isNumber(arg) {
11314 return typeof arg === 'number';
11315 }
11316
11317 function isObject(arg) {
11318 return typeof arg === 'object' && arg !== null;
11319 }
11320
11321 function isUndefined(arg) {
11322 return arg === void 0;
11323 }
11324
11325 },{}],12:[function(require,module,exports){
11326 if (typeof Object.create === 'function') {
11327 // implementation from standard node.js 'util' module
11328 module.exports = function inherits(ctor, superCtor) {
11329 ctor.super_ = superCtor
11330 ctor.prototype = Object.create(superCtor.prototype, {
11331 constructor: {
11332 value: ctor,
11333 enumerable: false,
11334 writable: true,
11335 configurable: true
11336 }
11337 });
11338 };
11339 } else {
11340 // old school shim for old browsers
11341 module.exports = function inherits(ctor, superCtor) {
11342 ctor.super_ = superCtor
11343 var TempCtor = function () {}
11344 TempCtor.prototype = superCtor.prototype
11345 ctor.prototype = new TempCtor()
11346 ctor.prototype.constructor = ctor
11347 }
11348 }
11349
11350 },{}],13:[function(require,module,exports){
11351 module.exports = Array.isArray || function (arr) {
11352 return Object.prototype.toString.call(arr) == '[object Array]';
11353 };
11354
11355 },{}],14:[function(require,module,exports){
11356 // shim for using process in browser
11357
11358 var process = module.exports = {};
11359 var queue = [];
11360 var draining = false;
11361 var currentQueue;
11362 var queueIndex = -1;
11363
11364 function cleanUpNextTick() {
11365 draining = false;
11366 if (currentQueue.length) {
11367 queue = currentQueue.concat(queue);
11368 } else {
11369 queueIndex = -1;
11370 }
11371 if (queue.length) {
11372 drainQueue();
11373 }
11374 }
11375
11376 function drainQueue() {
11377 if (draining) {
11378 return;
11379 }
11380 var timeout = setTimeout(cleanUpNextTick);
11381 draining = true;
11382
11383 var len = queue.length;
11384 while(len) {
11385 currentQueue = queue;
11386 queue = [];
11387 while (++queueIndex < len) {
11388 currentQueue[queueIndex].run();
11389 }
11390 queueIndex = -1;
11391 len = queue.length;
11392 }
11393 currentQueue = null;
11394 draining = false;
11395 clearTimeout(timeout);
11396 }
11397
11398 process.nextTick = function (fun) {
11399 var args = new Array(arguments.length - 1);
11400 if (arguments.length > 1) {
11401 for (var i = 1; i < arguments.length; i++) {
11402 args[i - 1] = arguments[i];
11403 }
11404 }
11405 queue.push(new Item(fun, args));
11406 if (queue.length === 1 && !draining) {
11407 setTimeout(drainQueue, 0);
11408 }
11409 };
11410
11411 // v8 likes predictible objects
11412 function Item(fun, array) {
11413 this.fun = fun;
11414 this.array = array;
11415 }
11416 Item.prototype.run = function () {
11417 this.fun.apply(null, this.array);
11418 };
11419 process.title = 'browser';
11420 process.browser = true;
11421 process.env = {};
11422 process.argv = [];
11423 process.version = ''; // empty string to avoid regexp issues
11424 process.versions = {};
11425
11426 function noop() {}
11427
11428 process.on = noop;
11429 process.addListener = noop;
11430 process.once = noop;
11431 process.off = noop;
11432 process.removeListener = noop;
11433 process.removeAllListeners = noop;
11434 process.emit = noop;
11435
11436 process.binding = function (name) {
11437 throw new Error('process.binding is not supported');
11438 };
11439
11440 // TODO(shtylman)
11441 process.cwd = function () { return '/' };
11442 process.chdir = function (dir) {
11443 throw new Error('process.chdir is not supported');
11444 };
11445 process.umask = function() { return 0; };
11446
11447 },{}],15:[function(require,module,exports){
11448 module.exports = require("./lib/_stream_duplex.js")
11449
11450 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11451 (function (process){
11452 // Copyright Joyent, Inc. and other Node contributors.
11453 //
11454 // Permission is hereby granted, free of charge, to any person obtaining a
11455 // copy of this software and associated documentation files (the
11456 // "Software"), to deal in the Software without restriction, including
11457 // without limitation the rights to use, copy, modify, merge, publish,
11458 // distribute, sublicense, and/or sell copies of the Software, and to permit
11459 // persons to whom the Software is furnished to do so, subject to the
11460 // following conditions:
11461 //
11462 // The above copyright notice and this permission notice shall be included
11463 // in all copies or substantial portions of the Software.
11464 //
11465 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11466 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11467 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11468 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11469 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11470 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11471 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11472
11473 // a duplex stream is just a stream that is both readable and writable.
11474 // Since JS doesn't have multiple prototypal inheritance, this class
11475 // prototypally inherits from Readable, and then parasitically from
11476 // Writable.
11477
11478 module.exports = Duplex;
11479
11480 /*<replacement>*/
11481 var objectKeys = Object.keys || function (obj) {
11482 var keys = [];
11483 for (var key in obj) keys.push(key);
11484 return keys;
11485 }
11486 /*</replacement>*/
11487
11488
11489 /*<replacement>*/
11490 var util = require('core-util-is');
11491 util.inherits = require('inherits');
11492 /*</replacement>*/
11493
11494 var Readable = require('./_stream_readable');
11495 var Writable = require('./_stream_writable');
11496
11497 util.inherits(Duplex, Readable);
11498
11499 forEach(objectKeys(Writable.prototype), function(method) {
11500 if (!Duplex.prototype[method])
11501 Duplex.prototype[method] = Writable.prototype[method];
11502 });
11503
11504 function Duplex(options) {
11505 if (!(this instanceof Duplex))
11506 return new Duplex(options);
11507
11508 Readable.call(this, options);
11509 Writable.call(this, options);
11510
11511 if (options && options.readable === false)
11512 this.readable = false;
11513
11514 if (options && options.writable === false)
11515 this.writable = false;
11516
11517 this.allowHalfOpen = true;
11518 if (options && options.allowHalfOpen === false)
11519 this.allowHalfOpen = false;
11520
11521 this.once('end', onend);
11522 }
11523
11524 // the no-half-open enforcer
11525 function onend() {
11526 // if we allow half-open state, or if the writable side ended,
11527 // then we're ok.
11528 if (this.allowHalfOpen || this._writableState.ended)
11529 return;
11530
11531 // no more data can be written.
11532 // But allow more writes to happen in this tick.
11533 process.nextTick(this.end.bind(this));
11534 }
11535
11536 function forEach (xs, f) {
11537 for (var i = 0, l = xs.length; i < l; i++) {
11538 f(xs[i], i);
11539 }
11540 }
11541
11542 }).call(this,require('_process'))
11543 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11544 // Copyright Joyent, Inc. and other Node contributors.
11545 //
11546 // Permission is hereby granted, free of charge, to any person obtaining a
11547 // copy of this software and associated documentation files (the
11548 // "Software"), to deal in the Software without restriction, including
11549 // without limitation the rights to use, copy, modify, merge, publish,
11550 // distribute, sublicense, and/or sell copies of the Software, and to permit
11551 // persons to whom the Software is furnished to do so, subject to the
11552 // following conditions:
11553 //
11554 // The above copyright notice and this permission notice shall be included
11555 // in all copies or substantial portions of the Software.
11556 //
11557 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11558 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11559 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11560 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11561 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11562 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11563 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11564
11565 // a passthrough stream.
11566 // basically just the most minimal sort of Transform stream.
11567 // Every written chunk gets output as-is.
11568
11569 module.exports = PassThrough;
11570
11571 var Transform = require('./_stream_transform');
11572
11573 /*<replacement>*/
11574 var util = require('core-util-is');
11575 util.inherits = require('inherits');
11576 /*</replacement>*/
11577
11578 util.inherits(PassThrough, Transform);
11579
11580 function PassThrough(options) {
11581 if (!(this instanceof PassThrough))
11582 return new PassThrough(options);
11583
11584 Transform.call(this, options);
11585 }
11586
11587 PassThrough.prototype._transform = function(chunk, encoding, cb) {
11588 cb(null, chunk);
11589 };
11590
11591 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11592 (function (process){
11593 // Copyright Joyent, Inc. and other Node contributors.
11594 //
11595 // Permission is hereby granted, free of charge, to any person obtaining a
11596 // copy of this software and associated documentation files (the
11597 // "Software"), to deal in the Software without restriction, including
11598 // without limitation the rights to use, copy, modify, merge, publish,
11599 // distribute, sublicense, and/or sell copies of the Software, and to permit
11600 // persons to whom the Software is furnished to do so, subject to the
11601 // following conditions:
11602 //
11603 // The above copyright notice and this permission notice shall be included
11604 // in all copies or substantial portions of the Software.
11605 //
11606 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11607 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11608 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11609 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11610 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11611 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11612 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11613
11614 module.exports = Readable;
11615
11616 /*<replacement>*/
11617 var isArray = require('isarray');
11618 /*</replacement>*/
11619
11620
11621 /*<replacement>*/
11622 var Buffer = require('buffer').Buffer;
11623 /*</replacement>*/
11624
11625 Readable.ReadableState = ReadableState;
11626
11627 var EE = require('events').EventEmitter;
11628
11629 /*<replacement>*/
11630 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11631 return emitter.listeners(type).length;
11632 };
11633 /*</replacement>*/
11634
11635 var Stream = require('stream');
11636
11637 /*<replacement>*/
11638 var util = require('core-util-is');
11639 util.inherits = require('inherits');
11640 /*</replacement>*/
11641
11642 var StringDecoder;
11643
11644
11645 /*<replacement>*/
11646 var debug = require('util');
11647 if (debug && debug.debuglog) {
11648 debug = debug.debuglog('stream');
11649 } else {
11650 debug = function () {};
11651 }
11652 /*</replacement>*/
11653
11654
11655 util.inherits(Readable, Stream);
11656
11657 function ReadableState(options, stream) {
11658 var Duplex = require('./_stream_duplex');
11659
11660 options = options || {};
11661
11662 // the point at which it stops calling _read() to fill the buffer
11663 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11664 var hwm = options.highWaterMark;
11665 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11666 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11667
11668 // cast to ints.
11669 this.highWaterMark = ~~this.highWaterMark;
11670
11671 this.buffer = [];
11672 this.length = 0;
11673 this.pipes = null;
11674 this.pipesCount = 0;
11675 this.flowing = null;
11676 this.ended = false;
11677 this.endEmitted = false;
11678 this.reading = false;
11679
11680 // a flag to be able to tell if the onwrite cb is called immediately,
11681 // or on a later tick. We set this to true at first, because any
11682 // actions that shouldn't happen until "later" should generally also
11683 // not happen before the first write call.
11684 this.sync = true;
11685
11686 // whenever we return null, then we set a flag to say
11687 // that we're awaiting a 'readable' event emission.
11688 this.needReadable = false;
11689 this.emittedReadable = false;
11690 this.readableListening = false;
11691
11692
11693 // object stream flag. Used to make read(n) ignore n and to
11694 // make all the buffer merging and length checks go away
11695 this.objectMode = !!options.objectMode;
11696
11697 if (stream instanceof Duplex)
11698 this.objectMode = this.objectMode || !!options.readableObjectMode;
11699
11700 // Crypto is kind of old and crusty. Historically, its default string
11701 // encoding is 'binary' so we have to make this configurable.
11702 // Everything else in the universe uses 'utf8', though.
11703 this.defaultEncoding = options.defaultEncoding || 'utf8';
11704
11705 // when piping, we only care about 'readable' events that happen
11706 // after read()ing all the bytes and not getting any pushback.
11707 this.ranOut = false;
11708
11709 // the number of writers that are awaiting a drain event in .pipe()s
11710 this.awaitDrain = 0;
11711
11712 // if true, a maybeReadMore has been scheduled
11713 this.readingMore = false;
11714
11715 this.decoder = null;
11716 this.encoding = null;
11717 if (options.encoding) {
11718 if (!StringDecoder)
11719 StringDecoder = require('string_decoder/').StringDecoder;
11720 this.decoder = new StringDecoder(options.encoding);
11721 this.encoding = options.encoding;
11722 }
11723 }
11724
11725 function Readable(options) {
11726 var Duplex = require('./_stream_duplex');
11727
11728 if (!(this instanceof Readable))
11729 return new Readable(options);
11730
11731 this._readableState = new ReadableState(options, this);
11732
11733 // legacy
11734 this.readable = true;
11735
11736 Stream.call(this);
11737 }
11738
11739 // Manually shove something into the read() buffer.
11740 // This returns true if the highWaterMark has not been hit yet,
11741 // similar to how Writable.write() returns true if you should
11742 // write() some more.
11743 Readable.prototype.push = function(chunk, encoding) {
11744 var state = this._readableState;
11745
11746 if (util.isString(chunk) && !state.objectMode) {
11747 encoding = encoding || state.defaultEncoding;
11748 if (encoding !== state.encoding) {
11749 chunk = new Buffer(chunk, encoding);
11750 encoding = '';
11751 }
11752 }
11753
11754 return readableAddChunk(this, state, chunk, encoding, false);
11755 };
11756
11757 // Unshift should *always* be something directly out of read()
11758 Readable.prototype.unshift = function(chunk) {
11759 var state = this._readableState;
11760 return readableAddChunk(this, state, chunk, '', true);
11761 };
11762
11763 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11764 var er = chunkInvalid(state, chunk);
11765 if (er) {
11766 stream.emit('error', er);
11767 } else if (util.isNullOrUndefined(chunk)) {
11768 state.reading = false;
11769 if (!state.ended)
11770 onEofChunk(stream, state);
11771 } else if (state.objectMode || chunk && chunk.length > 0) {
11772 if (state.ended && !addToFront) {
11773 var e = new Error('stream.push() after EOF');
11774 stream.emit('error', e);
11775 } else if (state.endEmitted && addToFront) {
11776 var e = new Error('stream.unshift() after end event');
11777 stream.emit('error', e);
11778 } else {
11779 if (state.decoder && !addToFront && !encoding)
11780 chunk = state.decoder.write(chunk);
11781
11782 if (!addToFront)
11783 state.reading = false;
11784
11785 // if we want the data now, just emit it.
11786 if (state.flowing && state.length === 0 && !state.sync) {
11787 stream.emit('data', chunk);
11788 stream.read(0);
11789 } else {
11790 // update the buffer info.
11791 state.length += state.objectMode ? 1 : chunk.length;
11792 if (addToFront)
11793 state.buffer.unshift(chunk);
11794 else
11795 state.buffer.push(chunk);
11796
11797 if (state.needReadable)
11798 emitReadable(stream);
11799 }
11800
11801 maybeReadMore(stream, state);
11802 }
11803 } else if (!addToFront) {
11804 state.reading = false;
11805 }
11806
11807 return needMoreData(state);
11808 }
11809
11810
11811
11812 // if it's past the high water mark, we can push in some more.
11813 // Also, if we have no data yet, we can stand some
11814 // more bytes. This is to work around cases where hwm=0,
11815 // such as the repl. Also, if the push() triggered a
11816 // readable event, and the user called read(largeNumber) such that
11817 // needReadable was set, then we ought to push more, so that another
11818 // 'readable' event will be triggered.
11819 function needMoreData(state) {
11820 return !state.ended &&
11821 (state.needReadable ||
11822 state.length < state.highWaterMark ||
11823 state.length === 0);
11824 }
11825
11826 // backwards compatibility.
11827 Readable.prototype.setEncoding = function(enc) {
11828 if (!StringDecoder)
11829 StringDecoder = require('string_decoder/').StringDecoder;
11830 this._readableState.decoder = new StringDecoder(enc);
11831 this._readableState.encoding = enc;
11832 return this;
11833 };
11834
11835 // Don't raise the hwm > 128MB
11836 var MAX_HWM = 0x800000;
11837 function roundUpToNextPowerOf2(n) {
11838 if (n >= MAX_HWM) {
11839 n = MAX_HWM;
11840 } else {
11841 // Get the next highest power of 2
11842 n--;
11843 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11844 n++;
11845 }
11846 return n;
11847 }
11848
11849 function howMuchToRead(n, state) {
11850 if (state.length === 0 && state.ended)
11851 return 0;
11852
11853 if (state.objectMode)
11854 return n === 0 ? 0 : 1;
11855
11856 if (isNaN(n) || util.isNull(n)) {
11857 // only flow one buffer at a time
11858 if (state.flowing && state.buffer.length)
11859 return state.buffer[0].length;
11860 else
11861 return state.length;
11862 }
11863
11864 if (n <= 0)
11865 return 0;
11866
11867 // If we're asking for more than the target buffer level,
11868 // then raise the water mark. Bump up to the next highest
11869 // power of 2, to prevent increasing it excessively in tiny
11870 // amounts.
11871 if (n > state.highWaterMark)
11872 state.highWaterMark = roundUpToNextPowerOf2(n);
11873
11874 // don't have that much. return null, unless we've ended.
11875 if (n > state.length) {
11876 if (!state.ended) {
11877 state.needReadable = true;
11878 return 0;
11879 } else
11880 return state.length;
11881 }
11882
11883 return n;
11884 }
11885
11886 // you can override either this method, or the async _read(n) below.
11887 Readable.prototype.read = function(n) {
11888 debug('read', n);
11889 var state = this._readableState;
11890 var nOrig = n;
11891
11892 if (!util.isNumber(n) || n > 0)
11893 state.emittedReadable = false;
11894
11895 // if we're doing read(0) to trigger a readable event, but we
11896 // already have a bunch of data in the buffer, then just trigger
11897 // the 'readable' event and move on.
11898 if (n === 0 &&
11899 state.needReadable &&
11900 (state.length >= state.highWaterMark || state.ended)) {
11901 debug('read: emitReadable', state.length, state.ended);
11902 if (state.length === 0 && state.ended)
11903 endReadable(this);
11904 else
11905 emitReadable(this);
11906 return null;
11907 }
11908
11909 n = howMuchToRead(n, state);
11910
11911 // if we've ended, and we're now clear, then finish it up.
11912 if (n === 0 && state.ended) {
11913 if (state.length === 0)
11914 endReadable(this);
11915 return null;
11916 }
11917
11918 // All the actual chunk generation logic needs to be
11919 // *below* the call to _read. The reason is that in certain
11920 // synthetic stream cases, such as passthrough streams, _read
11921 // may be a completely synchronous operation which may change
11922 // the state of the read buffer, providing enough data when
11923 // before there was *not* enough.
11924 //
11925 // So, the steps are:
11926 // 1. Figure out what the state of things will be after we do
11927 // a read from the buffer.
11928 //
11929 // 2. If that resulting state will trigger a _read, then call _read.
11930 // Note that this may be asynchronous, or synchronous. Yes, it is
11931 // deeply ugly to write APIs this way, but that still doesn't mean
11932 // that the Readable class should behave improperly, as streams are
11933 // designed to be sync/async agnostic.
11934 // Take note if the _read call is sync or async (ie, if the read call
11935 // has returned yet), so that we know whether or not it's safe to emit
11936 // 'readable' etc.
11937 //
11938 // 3. Actually pull the requested chunks out of the buffer and return.
11939
11940 // if we need a readable event, then we need to do some reading.
11941 var doRead = state.needReadable;
11942 debug('need readable', doRead);
11943
11944 // if we currently have less than the highWaterMark, then also read some
11945 if (state.length === 0 || state.length - n < state.highWaterMark) {
11946 doRead = true;
11947 debug('length less than watermark', doRead);
11948 }
11949
11950 // however, if we've ended, then there's no point, and if we're already
11951 // reading, then it's unnecessary.
11952 if (state.ended || state.reading) {
11953 doRead = false;
11954 debug('reading or ended', doRead);
11955 }
11956
11957 if (doRead) {
11958 debug('do read');
11959 state.reading = true;
11960 state.sync = true;
11961 // if the length is currently zero, then we *need* a readable event.
11962 if (state.length === 0)
11963 state.needReadable = true;
11964 // call internal read method
11965 this._read(state.highWaterMark);
11966 state.sync = false;
11967 }
11968
11969 // If _read pushed data synchronously, then `reading` will be false,
11970 // and we need to re-evaluate how much data we can return to the user.
11971 if (doRead && !state.reading)
11972 n = howMuchToRead(nOrig, state);
11973
11974 var ret;
11975 if (n > 0)
11976 ret = fromList(n, state);
11977 else
11978 ret = null;
11979
11980 if (util.isNull(ret)) {
11981 state.needReadable = true;
11982 n = 0;
11983 }
11984
11985 state.length -= n;
11986
11987 // If we have nothing in the buffer, then we want to know
11988 // as soon as we *do* get something into the buffer.
11989 if (state.length === 0 && !state.ended)
11990 state.needReadable = true;
11991
11992 // If we tried to read() past the EOF, then emit end on the next tick.
11993 if (nOrig !== n && state.ended && state.length === 0)
11994 endReadable(this);
11995
11996 if (!util.isNull(ret))
11997 this.emit('data', ret);
11998
11999 return ret;
12000 };
12001
12002 function chunkInvalid(state, chunk) {
12003 var er = null;
12004 if (!util.isBuffer(chunk) &&
12005 !util.isString(chunk) &&
12006 !util.isNullOrUndefined(chunk) &&
12007 !state.objectMode) {
12008 er = new TypeError('Invalid non-string/buffer chunk');
12009 }
12010 return er;
12011 }
12012
12013
12014 function onEofChunk(stream, state) {
12015 if (state.decoder && !state.ended) {
12016 var chunk = state.decoder.end();
12017 if (chunk && chunk.length) {
12018 state.buffer.push(chunk);
12019 state.length += state.objectMode ? 1 : chunk.length;
12020 }
12021 }
12022 state.ended = true;
12023
12024 // emit 'readable' now to make sure it gets picked up.
12025 emitReadable(stream);
12026 }
12027
12028 // Don't emit readable right away in sync mode, because this can trigger
12029 // another read() call => stack overflow. This way, it might trigger
12030 // a nextTick recursion warning, but that's not so bad.
12031 function emitReadable(stream) {
12032 var state = stream._readableState;
12033 state.needReadable = false;
12034 if (!state.emittedReadable) {
12035 debug('emitReadable', state.flowing);
12036 state.emittedReadable = true;
12037 if (state.sync)
12038 process.nextTick(function() {
12039 emitReadable_(stream);
12040 });
12041 else
12042 emitReadable_(stream);
12043 }
12044 }
12045
12046 function emitReadable_(stream) {
12047 debug('emit readable');
12048 stream.emit('readable');
12049 flow(stream);
12050 }
12051
12052
12053 // at this point, the user has presumably seen the 'readable' event,
12054 // and called read() to consume some data. that may have triggered
12055 // in turn another _read(n) call, in which case reading = true if
12056 // it's in progress.
12057 // However, if we're not ended, or reading, and the length < hwm,
12058 // then go ahead and try to read some more preemptively.
12059 function maybeReadMore(stream, state) {
12060 if (!state.readingMore) {
12061 state.readingMore = true;
12062 process.nextTick(function() {
12063 maybeReadMore_(stream, state);
12064 });
12065 }
12066 }
12067
12068 function maybeReadMore_(stream, state) {
12069 var len = state.length;
12070 while (!state.reading && !state.flowing && !state.ended &&
12071 state.length < state.highWaterMark) {
12072 debug('maybeReadMore read 0');
12073 stream.read(0);
12074 if (len === state.length)
12075 // didn't get any data, stop spinning.
12076 break;
12077 else
12078 len = state.length;
12079 }
12080 state.readingMore = false;
12081 }
12082
12083 // abstract method. to be overridden in specific implementation classes.
12084 // call cb(er, data) where data is <= n in length.
12085 // for virtual (non-string, non-buffer) streams, "length" is somewhat
12086 // arbitrary, and perhaps not very meaningful.
12087 Readable.prototype._read = function(n) {
12088 this.emit('error', new Error('not implemented'));
12089 };
12090
12091 Readable.prototype.pipe = function(dest, pipeOpts) {
12092 var src = this;
12093 var state = this._readableState;
12094
12095 switch (state.pipesCount) {
12096 case 0:
12097 state.pipes = dest;
12098 break;
12099 case 1:
12100 state.pipes = [state.pipes, dest];
12101 break;
12102 default:
12103 state.pipes.push(dest);
12104 break;
12105 }
12106 state.pipesCount += 1;
12107 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12108
12109 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12110 dest !== process.stdout &&
12111 dest !== process.stderr;
12112
12113 var endFn = doEnd ? onend : cleanup;
12114 if (state.endEmitted)
12115 process.nextTick(endFn);
12116 else
12117 src.once('end', endFn);
12118
12119 dest.on('unpipe', onunpipe);
12120 function onunpipe(readable) {
12121 debug('onunpipe');
12122 if (readable === src) {
12123 cleanup();
12124 }
12125 }
12126
12127 function onend() {
12128 debug('onend');
12129 dest.end();
12130 }
12131
12132 // when the dest drains, it reduces the awaitDrain counter
12133 // on the source. This would be more elegant with a .once()
12134 // handler in flow(), but adding and removing repeatedly is
12135 // too slow.
12136 var ondrain = pipeOnDrain(src);
12137 dest.on('drain', ondrain);
12138
12139 function cleanup() {
12140 debug('cleanup');
12141 // cleanup event handlers once the pipe is broken
12142 dest.removeListener('close', onclose);
12143 dest.removeListener('finish', onfinish);
12144 dest.removeListener('drain', ondrain);
12145 dest.removeListener('error', onerror);
12146 dest.removeListener('unpipe', onunpipe);
12147 src.removeListener('end', onend);
12148 src.removeListener('end', cleanup);
12149 src.removeListener('data', ondata);
12150
12151 // if the reader is waiting for a drain event from this
12152 // specific writer, then it would cause it to never start
12153 // flowing again.
12154 // So, if this is awaiting a drain, then we just call it now.
12155 // If we don't know, then assume that we are waiting for one.
12156 if (state.awaitDrain &&
12157 (!dest._writableState || dest._writableState.needDrain))
12158 ondrain();
12159 }
12160
12161 src.on('data', ondata);
12162 function ondata(chunk) {
12163 debug('ondata');
12164 var ret = dest.write(chunk);
12165 if (false === ret) {
12166 debug('false write response, pause',
12167 src._readableState.awaitDrain);
12168 src._readableState.awaitDrain++;
12169 src.pause();
12170 }
12171 }
12172
12173 // if the dest has an error, then stop piping into it.
12174 // however, don't suppress the throwing behavior for this.
12175 function onerror(er) {
12176 debug('onerror', er);
12177 unpipe();
12178 dest.removeListener('error', onerror);
12179 if (EE.listenerCount(dest, 'error') === 0)
12180 dest.emit('error', er);
12181 }
12182 // This is a brutally ugly hack to make sure that our error handler
12183 // is attached before any userland ones. NEVER DO THIS.
12184 if (!dest._events || !dest._events.error)
12185 dest.on('error', onerror);
12186 else if (isArray(dest._events.error))
12187 dest._events.error.unshift(onerror);
12188 else
12189 dest._events.error = [onerror, dest._events.error];
12190
12191
12192
12193 // Both close and finish should trigger unpipe, but only once.
12194 function onclose() {
12195 dest.removeListener('finish', onfinish);
12196 unpipe();
12197 }
12198 dest.once('close', onclose);
12199 function onfinish() {
12200 debug('onfinish');
12201 dest.removeListener('close', onclose);
12202 unpipe();
12203 }
12204 dest.once('finish', onfinish);
12205
12206 function unpipe() {
12207 debug('unpipe');
12208 src.unpipe(dest);
12209 }
12210
12211 // tell the dest that it's being piped to
12212 dest.emit('pipe', src);
12213
12214 // start the flow if it hasn't been started already.
12215 if (!state.flowing) {
12216 debug('pipe resume');
12217 src.resume();
12218 }
12219
12220 return dest;
12221 };
12222
12223 function pipeOnDrain(src) {
12224 return function() {
12225 var state = src._readableState;
12226 debug('pipeOnDrain', state.awaitDrain);
12227 if (state.awaitDrain)
12228 state.awaitDrain--;
12229 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12230 state.flowing = true;
12231 flow(src);
12232 }
12233 };
12234 }
12235
12236
12237 Readable.prototype.unpipe = function(dest) {
12238 var state = this._readableState;
12239
12240 // if we're not piping anywhere, then do nothing.
12241 if (state.pipesCount === 0)
12242 return this;
12243
12244 // just one destination. most common case.
12245 if (state.pipesCount === 1) {
12246 // passed in one, but it's not the right one.
12247 if (dest && dest !== state.pipes)
12248 return this;
12249
12250 if (!dest)
12251 dest = state.pipes;
12252
12253 // got a match.
12254 state.pipes = null;
12255 state.pipesCount = 0;
12256 state.flowing = false;
12257 if (dest)
12258 dest.emit('unpipe', this);
12259 return this;
12260 }
12261
12262 // slow case. multiple pipe destinations.
12263
12264 if (!dest) {
12265 // remove all.
12266 var dests = state.pipes;
12267 var len = state.pipesCount;
12268 state.pipes = null;
12269 state.pipesCount = 0;
12270 state.flowing = false;
12271
12272 for (var i = 0; i < len; i++)
12273 dests[i].emit('unpipe', this);
12274 return this;
12275 }
12276
12277 // try to find the right one.
12278 var i = indexOf(state.pipes, dest);
12279 if (i === -1)
12280 return this;
12281
12282 state.pipes.splice(i, 1);
12283 state.pipesCount -= 1;
12284 if (state.pipesCount === 1)
12285 state.pipes = state.pipes[0];
12286
12287 dest.emit('unpipe', this);
12288
12289 return this;
12290 };
12291
12292 // set up data events if they are asked for
12293 // Ensure readable listeners eventually get something
12294 Readable.prototype.on = function(ev, fn) {
12295 var res = Stream.prototype.on.call(this, ev, fn);
12296
12297 // If listening to data, and it has not explicitly been paused,
12298 // then call resume to start the flow of data on the next tick.
12299 if (ev === 'data' && false !== this._readableState.flowing) {
12300 this.resume();
12301 }
12302
12303 if (ev === 'readable' && this.readable) {
12304 var state = this._readableState;
12305 if (!state.readableListening) {
12306 state.readableListening = true;
12307 state.emittedReadable = false;
12308 state.needReadable = true;
12309 if (!state.reading) {
12310 var self = this;
12311 process.nextTick(function() {
12312 debug('readable nexttick read 0');
12313 self.read(0);
12314 });
12315 } else if (state.length) {
12316 emitReadable(this, state);
12317 }
12318 }
12319 }
12320
12321 return res;
12322 };
12323 Readable.prototype.addListener = Readable.prototype.on;
12324
12325 // pause() and resume() are remnants of the legacy readable stream API
12326 // If the user uses them, then switch into old mode.
12327 Readable.prototype.resume = function() {
12328 var state = this._readableState;
12329 if (!state.flowing) {
12330 debug('resume');
12331 state.flowing = true;
12332 if (!state.reading) {
12333 debug('resume read 0');
12334 this.read(0);
12335 }
12336 resume(this, state);
12337 }
12338 return this;
12339 };
12340
12341 function resume(stream, state) {
12342 if (!state.resumeScheduled) {
12343 state.resumeScheduled = true;
12344 process.nextTick(function() {
12345 resume_(stream, state);
12346 });
12347 }
12348 }
12349
12350 function resume_(stream, state) {
12351 state.resumeScheduled = false;
12352 stream.emit('resume');
12353 flow(stream);
12354 if (state.flowing && !state.reading)
12355 stream.read(0);
12356 }
12357
12358 Readable.prototype.pause = function() {
12359 debug('call pause flowing=%j', this._readableState.flowing);
12360 if (false !== this._readableState.flowing) {
12361 debug('pause');
12362 this._readableState.flowing = false;
12363 this.emit('pause');
12364 }
12365 return this;
12366 };
12367
12368 function flow(stream) {
12369 var state = stream._readableState;
12370 debug('flow', state.flowing);
12371 if (state.flowing) {
12372 do {
12373 var chunk = stream.read();
12374 } while (null !== chunk && state.flowing);
12375 }
12376 }
12377
12378 // wrap an old-style stream as the async data source.
12379 // This is *not* part of the readable stream interface.
12380 // It is an ugly unfortunate mess of history.
12381 Readable.prototype.wrap = function(stream) {
12382 var state = this._readableState;
12383 var paused = false;
12384
12385 var self = this;
12386 stream.on('end', function() {
12387 debug('wrapped end');
12388 if (state.decoder && !state.ended) {
12389 var chunk = state.decoder.end();
12390 if (chunk && chunk.length)
12391 self.push(chunk);
12392 }
12393
12394 self.push(null);
12395 });
12396
12397 stream.on('data', function(chunk) {
12398 debug('wrapped data');
12399 if (state.decoder)
12400 chunk = state.decoder.write(chunk);
12401 if (!chunk || !state.objectMode && !chunk.length)
12402 return;
12403
12404 var ret = self.push(chunk);
12405 if (!ret) {
12406 paused = true;
12407 stream.pause();
12408 }
12409 });
12410
12411 // proxy all the other methods.
12412 // important when wrapping filters and duplexes.
12413 for (var i in stream) {
12414 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12415 this[i] = function(method) { return function() {
12416 return stream[method].apply(stream, arguments);
12417 }}(i);
12418 }
12419 }
12420
12421 // proxy certain important events.
12422 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12423 forEach(events, function(ev) {
12424 stream.on(ev, self.emit.bind(self, ev));
12425 });
12426
12427 // when we try to consume some more bytes, simply unpause the
12428 // underlying stream.
12429 self._read = function(n) {
12430 debug('wrapped _read', n);
12431 if (paused) {
12432 paused = false;
12433 stream.resume();
12434 }
12435 };
12436
12437 return self;
12438 };
12439
12440
12441
12442 // exposed for testing purposes only.
12443 Readable._fromList = fromList;
12444
12445 // Pluck off n bytes from an array of buffers.
12446 // Length is the combined lengths of all the buffers in the list.
12447 function fromList(n, state) {
12448 var list = state.buffer;
12449 var length = state.length;
12450 var stringMode = !!state.decoder;
12451 var objectMode = !!state.objectMode;
12452 var ret;
12453
12454 // nothing in the list, definitely empty.
12455 if (list.length === 0)
12456 return null;
12457
12458 if (length === 0)
12459 ret = null;
12460 else if (objectMode)
12461 ret = list.shift();
12462 else if (!n || n >= length) {
12463 // read it all, truncate the array.
12464 if (stringMode)
12465 ret = list.join('');
12466 else
12467 ret = Buffer.concat(list, length);
12468 list.length = 0;
12469 } else {
12470 // read just some of it.
12471 if (n < list[0].length) {
12472 // just take a part of the first list item.
12473 // slice is the same for buffers and strings.
12474 var buf = list[0];
12475 ret = buf.slice(0, n);
12476 list[0] = buf.slice(n);
12477 } else if (n === list[0].length) {
12478 // first list is a perfect match
12479 ret = list.shift();
12480 } else {
12481 // complex case.
12482 // we have enough to cover it, but it spans past the first buffer.
12483 if (stringMode)
12484 ret = '';
12485 else
12486 ret = new Buffer(n);
12487
12488 var c = 0;
12489 for (var i = 0, l = list.length; i < l && c < n; i++) {
12490 var buf = list[0];
12491 var cpy = Math.min(n - c, buf.length);
12492
12493 if (stringMode)
12494 ret += buf.slice(0, cpy);
12495 else
12496 buf.copy(ret, c, 0, cpy);
12497
12498 if (cpy < buf.length)
12499 list[0] = buf.slice(cpy);
12500 else
12501 list.shift();
12502
12503 c += cpy;
12504 }
12505 }
12506 }
12507
12508 return ret;
12509 }
12510
12511 function endReadable(stream) {
12512 var state = stream._readableState;
12513
12514 // If we get here before consuming all the bytes, then that is a
12515 // bug in node. Should never happen.
12516 if (state.length > 0)
12517 throw new Error('endReadable called on non-empty stream');
12518
12519 if (!state.endEmitted) {
12520 state.ended = true;
12521 process.nextTick(function() {
12522 // Check that we didn't get one last unshift.
12523 if (!state.endEmitted && state.length === 0) {
12524 state.endEmitted = true;
12525 stream.readable = false;
12526 stream.emit('end');
12527 }
12528 });
12529 }
12530 }
12531
12532 function forEach (xs, f) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 f(xs[i], i);
12535 }
12536 }
12537
12538 function indexOf (xs, x) {
12539 for (var i = 0, l = xs.length; i < l; i++) {
12540 if (xs[i] === x) return i;
12541 }
12542 return -1;
12543 }
12544
12545 }).call(this,require('_process'))
12546 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"events":11,"inherits":12,"isarray":13,"stream":26,"string_decoder/":27,"util":6}],19:[function(require,module,exports){
12547 // Copyright Joyent, Inc. and other Node contributors.
12548 //
12549 // Permission is hereby granted, free of charge, to any person obtaining a
12550 // copy of this software and associated documentation files (the
12551 // "Software"), to deal in the Software without restriction, including
12552 // without limitation the rights to use, copy, modify, merge, publish,
12553 // distribute, sublicense, and/or sell copies of the Software, and to permit
12554 // persons to whom the Software is furnished to do so, subject to the
12555 // following conditions:
12556 //
12557 // The above copyright notice and this permission notice shall be included
12558 // in all copies or substantial portions of the Software.
12559 //
12560 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12561 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12562 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12563 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12564 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12565 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12566 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12567
12568
12569 // a transform stream is a readable/writable stream where you do
12570 // something with the data. Sometimes it's called a "filter",
12571 // but that's not a great name for it, since that implies a thing where
12572 // some bits pass through, and others are simply ignored. (That would
12573 // be a valid example of a transform, of course.)
12574 //
12575 // While the output is causally related to the input, it's not a
12576 // necessarily symmetric or synchronous transformation. For example,
12577 // a zlib stream might take multiple plain-text writes(), and then
12578 // emit a single compressed chunk some time in the future.
12579 //
12580 // Here's how this works:
12581 //
12582 // The Transform stream has all the aspects of the readable and writable
12583 // stream classes. When you write(chunk), that calls _write(chunk,cb)
12584 // internally, and returns false if there's a lot of pending writes
12585 // buffered up. When you call read(), that calls _read(n) until
12586 // there's enough pending readable data buffered up.
12587 //
12588 // In a transform stream, the written data is placed in a buffer. When
12589 // _read(n) is called, it transforms the queued up data, calling the
12590 // buffered _write cb's as it consumes chunks. If consuming a single
12591 // written chunk would result in multiple output chunks, then the first
12592 // outputted bit calls the readcb, and subsequent chunks just go into
12593 // the read buffer, and will cause it to emit 'readable' if necessary.
12594 //
12595 // This way, back-pressure is actually determined by the reading side,
12596 // since _read has to be called to start processing a new chunk. However,
12597 // a pathological inflate type of transform can cause excessive buffering
12598 // here. For example, imagine a stream where every byte of input is
12599 // interpreted as an integer from 0-255, and then results in that many
12600 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12601 // 1kb of data being output. In this case, you could write a very small
12602 // amount of input, and end up with a very large amount of output. In
12603 // such a pathological inflating mechanism, there'd be no way to tell
12604 // the system to stop doing the transform. A single 4MB write could
12605 // cause the system to run out of memory.
12606 //
12607 // However, even in such a pathological case, only a single written chunk
12608 // would be consumed, and then the rest would wait (un-transformed) until
12609 // the results of the previous transformed chunk were consumed.
12610
12611 module.exports = Transform;
12612
12613 var Duplex = require('./_stream_duplex');
12614
12615 /*<replacement>*/
12616 var util = require('core-util-is');
12617 util.inherits = require('inherits');
12618 /*</replacement>*/
12619
12620 util.inherits(Transform, Duplex);
12621
12622
12623 function TransformState(options, stream) {
12624 this.afterTransform = function(er, data) {
12625 return afterTransform(stream, er, data);
12626 };
12627
12628 this.needTransform = false;
12629 this.transforming = false;
12630 this.writecb = null;
12631 this.writechunk = null;
12632 }
12633
12634 function afterTransform(stream, er, data) {
12635 var ts = stream._transformState;
12636 ts.transforming = false;
12637
12638 var cb = ts.writecb;
12639
12640 if (!cb)
12641 return stream.emit('error', new Error('no writecb in Transform class'));
12642
12643 ts.writechunk = null;
12644 ts.writecb = null;
12645
12646 if (!util.isNullOrUndefined(data))
12647 stream.push(data);
12648
12649 if (cb)
12650 cb(er);
12651
12652 var rs = stream._readableState;
12653 rs.reading = false;
12654 if (rs.needReadable || rs.length < rs.highWaterMark) {
12655 stream._read(rs.highWaterMark);
12656 }
12657 }
12658
12659
12660 function Transform(options) {
12661 if (!(this instanceof Transform))
12662 return new Transform(options);
12663
12664 Duplex.call(this, options);
12665
12666 this._transformState = new TransformState(options, this);
12667
12668 // when the writable side finishes, then flush out anything remaining.
12669 var stream = this;
12670
12671 // start out asking for a readable event once data is transformed.
12672 this._readableState.needReadable = true;
12673
12674 // we have implemented the _read method, and done the other things
12675 // that Readable wants before the first _read call, so unset the
12676 // sync guard flag.
12677 this._readableState.sync = false;
12678
12679 this.once('prefinish', function() {
12680 if (util.isFunction(this._flush))
12681 this._flush(function(er) {
12682 done(stream, er);
12683 });
12684 else
12685 done(stream);
12686 });
12687 }
12688
12689 Transform.prototype.push = function(chunk, encoding) {
12690 this._transformState.needTransform = false;
12691 return Duplex.prototype.push.call(this, chunk, encoding);
12692 };
12693
12694 // This is the part where you do stuff!
12695 // override this function in implementation classes.
12696 // 'chunk' is an input chunk.
12697 //
12698 // Call `push(newChunk)` to pass along transformed output
12699 // to the readable side. You may call 'push' zero or more times.
12700 //
12701 // Call `cb(err)` when you are done with this chunk. If you pass
12702 // an error, then that'll put the hurt on the whole operation. If you
12703 // never call cb(), then you'll never get another chunk.
12704 Transform.prototype._transform = function(chunk, encoding, cb) {
12705 throw new Error('not implemented');
12706 };
12707
12708 Transform.prototype._write = function(chunk, encoding, cb) {
12709 var ts = this._transformState;
12710 ts.writecb = cb;
12711 ts.writechunk = chunk;
12712 ts.writeencoding = encoding;
12713 if (!ts.transforming) {
12714 var rs = this._readableState;
12715 if (ts.needTransform ||
12716 rs.needReadable ||
12717 rs.length < rs.highWaterMark)
12718 this._read(rs.highWaterMark);
12719 }
12720 };
12721
12722 // Doesn't matter what the args are here.
12723 // _transform does all the work.
12724 // That we got here means that the readable side wants more data.
12725 Transform.prototype._read = function(n) {
12726 var ts = this._transformState;
12727
12728 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12729 ts.transforming = true;
12730 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12731 } else {
12732 // mark that we need a transform, so that any data that comes in
12733 // will get processed, now that we've asked for it.
12734 ts.needTransform = true;
12735 }
12736 };
12737
12738
12739 function done(stream, er) {
12740 if (er)
12741 return stream.emit('error', er);
12742
12743 // if there's nothing in the write buffer, then that means
12744 // that nothing more will ever be provided
12745 var ws = stream._writableState;
12746 var ts = stream._transformState;
12747
12748 if (ws.length)
12749 throw new Error('calling transform done when ws.length != 0');
12750
12751 if (ts.transforming)
12752 throw new Error('calling transform done when still transforming');
12753
12754 return stream.push(null);
12755 }
12756
12757 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12758 (function (process){
12759 // Copyright Joyent, Inc. and other Node contributors.
12760 //
12761 // Permission is hereby granted, free of charge, to any person obtaining a
12762 // copy of this software and associated documentation files (the
12763 // "Software"), to deal in the Software without restriction, including
12764 // without limitation the rights to use, copy, modify, merge, publish,
12765 // distribute, sublicense, and/or sell copies of the Software, and to permit
12766 // persons to whom the Software is furnished to do so, subject to the
12767 // following conditions:
12768 //
12769 // The above copyright notice and this permission notice shall be included
12770 // in all copies or substantial portions of the Software.
12771 //
12772 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12773 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12774 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12775 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12776 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12777 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12778 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12779
12780 // A bit simpler than readable streams.
12781 // Implement an async ._write(chunk, cb), and it'll handle all
12782 // the drain event emission and buffering.
12783
12784 module.exports = Writable;
12785
12786 /*<replacement>*/
12787 var Buffer = require('buffer').Buffer;
12788 /*</replacement>*/
12789
12790 Writable.WritableState = WritableState;
12791
12792
12793 /*<replacement>*/
12794 var util = require('core-util-is');
12795 util.inherits = require('inherits');
12796 /*</replacement>*/
12797
12798 var Stream = require('stream');
12799
12800 util.inherits(Writable, Stream);
12801
12802 function WriteReq(chunk, encoding, cb) {
12803 this.chunk = chunk;
12804 this.encoding = encoding;
12805 this.callback = cb;
12806 }
12807
12808 function WritableState(options, stream) {
12809 var Duplex = require('./_stream_duplex');
12810
12811 options = options || {};
12812
12813 // the point at which write() starts returning false
12814 // Note: 0 is a valid value, means that we always return false if
12815 // the entire buffer is not flushed immediately on write()
12816 var hwm = options.highWaterMark;
12817 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12818 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12819
12820 // object stream flag to indicate whether or not this stream
12821 // contains buffers or objects.
12822 this.objectMode = !!options.objectMode;
12823
12824 if (stream instanceof Duplex)
12825 this.objectMode = this.objectMode || !!options.writableObjectMode;
12826
12827 // cast to ints.
12828 this.highWaterMark = ~~this.highWaterMark;
12829
12830 this.needDrain = false;
12831 // at the start of calling end()
12832 this.ending = false;
12833 // when end() has been called, and returned
12834 this.ended = false;
12835 // when 'finish' is emitted
12836 this.finished = false;
12837
12838 // should we decode strings into buffers before passing to _write?
12839 // this is here so that some node-core streams can optimize string
12840 // handling at a lower level.
12841 var noDecode = options.decodeStrings === false;
12842 this.decodeStrings = !noDecode;
12843
12844 // Crypto is kind of old and crusty. Historically, its default string
12845 // encoding is 'binary' so we have to make this configurable.
12846 // Everything else in the universe uses 'utf8', though.
12847 this.defaultEncoding = options.defaultEncoding || 'utf8';
12848
12849 // not an actual buffer we keep track of, but a measurement
12850 // of how much we're waiting to get pushed to some underlying
12851 // socket or file.
12852 this.length = 0;
12853
12854 // a flag to see when we're in the middle of a write.
12855 this.writing = false;
12856
12857 // when true all writes will be buffered until .uncork() call
12858 this.corked = 0;
12859
12860 // a flag to be able to tell if the onwrite cb is called immediately,
12861 // or on a later tick. We set this to true at first, because any
12862 // actions that shouldn't happen until "later" should generally also
12863 // not happen before the first write call.
12864 this.sync = true;
12865
12866 // a flag to know if we're processing previously buffered items, which
12867 // may call the _write() callback in the same tick, so that we don't
12868 // end up in an overlapped onwrite situation.
12869 this.bufferProcessing = false;
12870
12871 // the callback that's passed to _write(chunk,cb)
12872 this.onwrite = function(er) {
12873 onwrite(stream, er);
12874 };
12875
12876 // the callback that the user supplies to write(chunk,encoding,cb)
12877 this.writecb = null;
12878
12879 // the amount that is being written when _write is called.
12880 this.writelen = 0;
12881
12882 this.buffer = [];
12883
12884 // number of pending user-supplied write callbacks
12885 // this must be 0 before 'finish' can be emitted
12886 this.pendingcb = 0;
12887
12888 // emit prefinish if the only thing we're waiting for is _write cbs
12889 // This is relevant for synchronous Transform streams
12890 this.prefinished = false;
12891
12892 // True if the error was already emitted and should not be thrown again
12893 this.errorEmitted = false;
12894 }
12895
12896 function Writable(options) {
12897 var Duplex = require('./_stream_duplex');
12898
12899 // Writable ctor is applied to Duplexes, though they're not
12900 // instanceof Writable, they're instanceof Readable.
12901 if (!(this instanceof Writable) && !(this instanceof Duplex))
12902 return new Writable(options);
12903
12904 this._writableState = new WritableState(options, this);
12905
12906 // legacy.
12907 this.writable = true;
12908
12909 Stream.call(this);
12910 }
12911
12912 // Otherwise people can pipe Writable streams, which is just wrong.
12913 Writable.prototype.pipe = function() {
12914 this.emit('error', new Error('Cannot pipe. Not readable.'));
12915 };
12916
12917
12918 function writeAfterEnd(stream, state, cb) {
12919 var er = new Error('write after end');
12920 // TODO: defer error events consistently everywhere, not just the cb
12921 stream.emit('error', er);
12922 process.nextTick(function() {
12923 cb(er);
12924 });
12925 }
12926
12927 // If we get something that is not a buffer, string, null, or undefined,
12928 // and we're not in objectMode, then that's an error.
12929 // Otherwise stream chunks are all considered to be of length=1, and the
12930 // watermarks determine how many objects to keep in the buffer, rather than
12931 // how many bytes or characters.
12932 function validChunk(stream, state, chunk, cb) {
12933 var valid = true;
12934 if (!util.isBuffer(chunk) &&
12935 !util.isString(chunk) &&
12936 !util.isNullOrUndefined(chunk) &&
12937 !state.objectMode) {
12938 var er = new TypeError('Invalid non-string/buffer chunk');
12939 stream.emit('error', er);
12940 process.nextTick(function() {
12941 cb(er);
12942 });
12943 valid = false;
12944 }
12945 return valid;
12946 }
12947
12948 Writable.prototype.write = function(chunk, encoding, cb) {
12949 var state = this._writableState;
12950 var ret = false;
12951
12952 if (util.isFunction(encoding)) {
12953 cb = encoding;
12954 encoding = null;
12955 }
12956
12957 if (util.isBuffer(chunk))
12958 encoding = 'buffer';
12959 else if (!encoding)
12960 encoding = state.defaultEncoding;
12961
12962 if (!util.isFunction(cb))
12963 cb = function() {};
12964
12965 if (state.ended)
12966 writeAfterEnd(this, state, cb);
12967 else if (validChunk(this, state, chunk, cb)) {
12968 state.pendingcb++;
12969 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12970 }
12971
12972 return ret;
12973 };
12974
12975 Writable.prototype.cork = function() {
12976 var state = this._writableState;
12977
12978 state.corked++;
12979 };
12980
12981 Writable.prototype.uncork = function() {
12982 var state = this._writableState;
12983
12984 if (state.corked) {
12985 state.corked--;
12986
12987 if (!state.writing &&
12988 !state.corked &&
12989 !state.finished &&
12990 !state.bufferProcessing &&
12991 state.buffer.length)
12992 clearBuffer(this, state);
12993 }
12994 };
12995
12996 function decodeChunk(state, chunk, encoding) {
12997 if (!state.objectMode &&
12998 state.decodeStrings !== false &&
12999 util.isString(chunk)) {
13000 chunk = new Buffer(chunk, encoding);
13001 }
13002 return chunk;
13003 }
13004
13005 // if we're already writing something, then just put this
13006 // in the queue, and wait our turn. Otherwise, call _write
13007 // If we return false, then we need a drain event, so set that flag.
13008 function writeOrBuffer(stream, state, chunk, encoding, cb) {
13009 chunk = decodeChunk(state, chunk, encoding);
13010 if (util.isBuffer(chunk))
13011 encoding = 'buffer';
13012 var len = state.objectMode ? 1 : chunk.length;
13013
13014 state.length += len;
13015
13016 var ret = state.length < state.highWaterMark;
13017 // we must ensure that previous needDrain will not be reset to false.
13018 if (!ret)
13019 state.needDrain = true;
13020
13021 if (state.writing || state.corked)
13022 state.buffer.push(new WriteReq(chunk, encoding, cb));
13023 else
13024 doWrite(stream, state, false, len, chunk, encoding, cb);
13025
13026 return ret;
13027 }
13028
13029 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13030 state.writelen = len;
13031 state.writecb = cb;
13032 state.writing = true;
13033 state.sync = true;
13034 if (writev)
13035 stream._writev(chunk, state.onwrite);
13036 else
13037 stream._write(chunk, encoding, state.onwrite);
13038 state.sync = false;
13039 }
13040
13041 function onwriteError(stream, state, sync, er, cb) {
13042 if (sync)
13043 process.nextTick(function() {
13044 state.pendingcb--;
13045 cb(er);
13046 });
13047 else {
13048 state.pendingcb--;
13049 cb(er);
13050 }
13051
13052 stream._writableState.errorEmitted = true;
13053 stream.emit('error', er);
13054 }
13055
13056 function onwriteStateUpdate(state) {
13057 state.writing = false;
13058 state.writecb = null;
13059 state.length -= state.writelen;
13060 state.writelen = 0;
13061 }
13062
13063 function onwrite(stream, er) {
13064 var state = stream._writableState;
13065 var sync = state.sync;
13066 var cb = state.writecb;
13067
13068 onwriteStateUpdate(state);
13069
13070 if (er)
13071 onwriteError(stream, state, sync, er, cb);
13072 else {
13073 // Check if we're actually ready to finish, but don't emit yet
13074 var finished = needFinish(stream, state);
13075
13076 if (!finished &&
13077 !state.corked &&
13078 !state.bufferProcessing &&
13079 state.buffer.length) {
13080 clearBuffer(stream, state);
13081 }
13082
13083 if (sync) {
13084 process.nextTick(function() {
13085 afterWrite(stream, state, finished, cb);
13086 });
13087 } else {
13088 afterWrite(stream, state, finished, cb);
13089 }
13090 }
13091 }
13092
13093 function afterWrite(stream, state, finished, cb) {
13094 if (!finished)
13095 onwriteDrain(stream, state);
13096 state.pendingcb--;
13097 cb();
13098 finishMaybe(stream, state);
13099 }
13100
13101 // Must force callback to be called on nextTick, so that we don't
13102 // emit 'drain' before the write() consumer gets the 'false' return
13103 // value, and has a chance to attach a 'drain' listener.
13104 function onwriteDrain(stream, state) {
13105 if (state.length === 0 && state.needDrain) {
13106 state.needDrain = false;
13107 stream.emit('drain');
13108 }
13109 }
13110
13111
13112 // if there's something in the buffer waiting, then process it
13113 function clearBuffer(stream, state) {
13114 state.bufferProcessing = true;
13115
13116 if (stream._writev && state.buffer.length > 1) {
13117 // Fast case, write everything using _writev()
13118 var cbs = [];
13119 for (var c = 0; c < state.buffer.length; c++)
13120 cbs.push(state.buffer[c].callback);
13121
13122 // count the one we are adding, as well.
13123 // TODO(isaacs) clean this up
13124 state.pendingcb++;
13125 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13126 for (var i = 0; i < cbs.length; i++) {
13127 state.pendingcb--;
13128 cbs[i](err);
13129 }
13130 });
13131
13132 // Clear buffer
13133 state.buffer = [];
13134 } else {
13135 // Slow case, write chunks one-by-one
13136 for (var c = 0; c < state.buffer.length; c++) {
13137 var entry = state.buffer[c];
13138 var chunk = entry.chunk;
13139 var encoding = entry.encoding;
13140 var cb = entry.callback;
13141 var len = state.objectMode ? 1 : chunk.length;
13142
13143 doWrite(stream, state, false, len, chunk, encoding, cb);
13144
13145 // if we didn't call the onwrite immediately, then
13146 // it means that we need to wait until it does.
13147 // also, that means that the chunk and cb are currently
13148 // being processed, so move the buffer counter past them.
13149 if (state.writing) {
13150 c++;
13151 break;
13152 }
13153 }
13154
13155 if (c < state.buffer.length)
13156 state.buffer = state.buffer.slice(c);
13157 else
13158 state.buffer.length = 0;
13159 }
13160
13161 state.bufferProcessing = false;
13162 }
13163
13164 Writable.prototype._write = function(chunk, encoding, cb) {
13165 cb(new Error('not implemented'));
13166
13167 };
13168
13169 Writable.prototype._writev = null;
13170
13171 Writable.prototype.end = function(chunk, encoding, cb) {
13172 var state = this._writableState;
13173
13174 if (util.isFunction(chunk)) {
13175 cb = chunk;
13176 chunk = null;
13177 encoding = null;
13178 } else if (util.isFunction(encoding)) {
13179 cb = encoding;
13180 encoding = null;
13181 }
13182
13183 if (!util.isNullOrUndefined(chunk))
13184 this.write(chunk, encoding);
13185
13186 // .end() fully uncorks
13187 if (state.corked) {
13188 state.corked = 1;
13189 this.uncork();
13190 }
13191
13192 // ignore unnecessary end() calls.
13193 if (!state.ending && !state.finished)
13194 endWritable(this, state, cb);
13195 };
13196
13197
13198 function needFinish(stream, state) {
13199 return (state.ending &&
13200 state.length === 0 &&
13201 !state.finished &&
13202 !state.writing);
13203 }
13204
13205 function prefinish(stream, state) {
13206 if (!state.prefinished) {
13207 state.prefinished = true;
13208 stream.emit('prefinish');
13209 }
13210 }
13211
13212 function finishMaybe(stream, state) {
13213 var need = needFinish(stream, state);
13214 if (need) {
13215 if (state.pendingcb === 0) {
13216 prefinish(stream, state);
13217 state.finished = true;
13218 stream.emit('finish');
13219 } else
13220 prefinish(stream, state);
13221 }
13222 return need;
13223 }
13224
13225 function endWritable(stream, state, cb) {
13226 state.ending = true;
13227 finishMaybe(stream, state);
13228 if (cb) {
13229 if (state.finished)
13230 process.nextTick(cb);
13231 else
13232 stream.once('finish', cb);
13233 }
13234 state.ended = true;
13235 }
13236
13237 }).call(this,require('_process'))
13238 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13239 (function (Buffer){
13240 // Copyright Joyent, Inc. and other Node contributors.
13241 //
13242 // Permission is hereby granted, free of charge, to any person obtaining a
13243 // copy of this software and associated documentation files (the
13244 // "Software"), to deal in the Software without restriction, including
13245 // without limitation the rights to use, copy, modify, merge, publish,
13246 // distribute, sublicense, and/or sell copies of the Software, and to permit
13247 // persons to whom the Software is furnished to do so, subject to the
13248 // following conditions:
13249 //
13250 // The above copyright notice and this permission notice shall be included
13251 // in all copies or substantial portions of the Software.
13252 //
13253 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13254 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13255 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13256 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13257 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13258 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13259 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13260
13261 // NOTE: These type checking functions intentionally don't use `instanceof`
13262 // because it is fragile and can be easily faked with `Object.create()`.
13263 function isArray(ar) {
13264 return Array.isArray(ar);
13265 }
13266 exports.isArray = isArray;
13267
13268 function isBoolean(arg) {
13269 return typeof arg === 'boolean';
13270 }
13271 exports.isBoolean = isBoolean;
13272
13273 function isNull(arg) {
13274 return arg === null;
13275 }
13276 exports.isNull = isNull;
13277
13278 function isNullOrUndefined(arg) {
13279 return arg == null;
13280 }
13281 exports.isNullOrUndefined = isNullOrUndefined;
13282
13283 function isNumber(arg) {
13284 return typeof arg === 'number';
13285 }
13286 exports.isNumber = isNumber;
13287
13288 function isString(arg) {
13289 return typeof arg === 'string';
13290 }
13291 exports.isString = isString;
13292
13293 function isSymbol(arg) {
13294 return typeof arg === 'symbol';
13295 }
13296 exports.isSymbol = isSymbol;
13297
13298 function isUndefined(arg) {
13299 return arg === void 0;
13300 }
13301 exports.isUndefined = isUndefined;
13302
13303 function isRegExp(re) {
13304 return isObject(re) && objectToString(re) === '[object RegExp]';
13305 }
13306 exports.isRegExp = isRegExp;
13307
13308 function isObject(arg) {
13309 return typeof arg === 'object' && arg !== null;
13310 }
13311 exports.isObject = isObject;
13312
13313 function isDate(d) {
13314 return isObject(d) && objectToString(d) === '[object Date]';
13315 }
13316 exports.isDate = isDate;
13317
13318 function isError(e) {
13319 return isObject(e) &&
13320 (objectToString(e) === '[object Error]' || e instanceof Error);
13321 }
13322 exports.isError = isError;
13323
13324 function isFunction(arg) {
13325 return typeof arg === 'function';
13326 }
13327 exports.isFunction = isFunction;
13328
13329 function isPrimitive(arg) {
13330 return arg === null ||
13331 typeof arg === 'boolean' ||
13332 typeof arg === 'number' ||
13333 typeof arg === 'string' ||
13334 typeof arg === 'symbol' || // ES6 symbol
13335 typeof arg === 'undefined';
13336 }
13337 exports.isPrimitive = isPrimitive;
13338
13339 function isBuffer(arg) {
13340 return Buffer.isBuffer(arg);
13341 }
13342 exports.isBuffer = isBuffer;
13343
13344 function objectToString(o) {
13345 return Object.prototype.toString.call(o);
13346 }
13347 }).call(this,require("buffer").Buffer)
13348 },{"buffer":7}],22:[function(require,module,exports){
13349 module.exports = require("./lib/_stream_passthrough.js")
13350
13351 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13352 exports = module.exports = require('./lib/_stream_readable.js');
13353 exports.Stream = require('stream');
13354 exports.Readable = exports;
13355 exports.Writable = require('./lib/_stream_writable.js');
13356 exports.Duplex = require('./lib/_stream_duplex.js');
13357 exports.Transform = require('./lib/_stream_transform.js');
13358 exports.PassThrough = require('./lib/_stream_passthrough.js');
13359
13360 },{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"stream":26}],24:[function(require,module,exports){
13361 module.exports = require("./lib/_stream_transform.js")
13362
13363 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13364 module.exports = require("./lib/_stream_writable.js")
13365
13366 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13367 // Copyright Joyent, Inc. and other Node contributors.
13368 //
13369 // Permission is hereby granted, free of charge, to any person obtaining a
13370 // copy of this software and associated documentation files (the
13371 // "Software"), to deal in the Software without restriction, including
13372 // without limitation the rights to use, copy, modify, merge, publish,
13373 // distribute, sublicense, and/or sell copies of the Software, and to permit
13374 // persons to whom the Software is furnished to do so, subject to the
13375 // following conditions:
13376 //
13377 // The above copyright notice and this permission notice shall be included
13378 // in all copies or substantial portions of the Software.
13379 //
13380 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13381 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13382 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13383 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13384 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13385 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13386 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13387
13388 module.exports = Stream;
13389
13390 var EE = require('events').EventEmitter;
13391 var inherits = require('inherits');
13392
13393 inherits(Stream, EE);
13394 Stream.Readable = require('readable-stream/readable.js');
13395 Stream.Writable = require('readable-stream/writable.js');
13396 Stream.Duplex = require('readable-stream/duplex.js');
13397 Stream.Transform = require('readable-stream/transform.js');
13398 Stream.PassThrough = require('readable-stream/passthrough.js');
13399
13400 // Backwards-compat with node 0.4.x
13401 Stream.Stream = Stream;
13402
13403
13404
13405 // old-style streams. Note that the pipe method (the only relevant
13406 // part of this class) is overridden in the Readable class.
13407
13408 function Stream() {
13409 EE.call(this);
13410 }
13411
13412 Stream.prototype.pipe = function(dest, options) {
13413 var source = this;
13414
13415 function ondata(chunk) {
13416 if (dest.writable) {
13417 if (false === dest.write(chunk) && source.pause) {
13418 source.pause();
13419 }
13420 }
13421 }
13422
13423 source.on('data', ondata);
13424
13425 function ondrain() {
13426 if (source.readable && source.resume) {
13427 source.resume();
13428 }
13429 }
13430
13431 dest.on('drain', ondrain);
13432
13433 // If the 'end' option is not supplied, dest.end() will be called when
13434 // source gets the 'end' or 'close' events. Only dest.end() once.
13435 if (!dest._isStdio && (!options || options.end !== false)) {
13436 source.on('end', onend);
13437 source.on('close', onclose);
13438 }
13439
13440 var didOnEnd = false;
13441 function onend() {
13442 if (didOnEnd) return;
13443 didOnEnd = true;
13444
13445 dest.end();
13446 }
13447
13448
13449 function onclose() {
13450 if (didOnEnd) return;
13451 didOnEnd = true;
13452
13453 if (typeof dest.destroy === 'function') dest.destroy();
13454 }
13455
13456 // don't leave dangling pipes when there are errors.
13457 function onerror(er) {
13458 cleanup();
13459 if (EE.listenerCount(this, 'error') === 0) {
13460 throw er; // Unhandled stream error in pipe.
13461 }
13462 }
13463
13464 source.on('error', onerror);
13465 dest.on('error', onerror);
13466
13467 // remove all the event listeners that were added.
13468 function cleanup() {
13469 source.removeListener('data', ondata);
13470 dest.removeListener('drain', ondrain);
13471
13472 source.removeListener('end', onend);
13473 source.removeListener('close', onclose);
13474
13475 source.removeListener('error', onerror);
13476 dest.removeListener('error', onerror);
13477
13478 source.removeListener('end', cleanup);
13479 source.removeListener('close', cleanup);
13480
13481 dest.removeListener('close', cleanup);
13482 }
13483
13484 source.on('end', cleanup);
13485 source.on('close', cleanup);
13486
13487 dest.on('close', cleanup);
13488
13489 dest.emit('pipe', source);
13490
13491 // Allow for unix-like usage: A.pipe(B).pipe(C)
13492 return dest;
13493 };
13494
13495 },{"events":11,"inherits":12,"readable-stream/duplex.js":15,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],27:[function(require,module,exports){
13496 // Copyright Joyent, Inc. and other Node contributors.
13497 //
13498 // Permission is hereby granted, free of charge, to any person obtaining a
13499 // copy of this software and associated documentation files (the
13500 // "Software"), to deal in the Software without restriction, including
13501 // without limitation the rights to use, copy, modify, merge, publish,
13502 // distribute, sublicense, and/or sell copies of the Software, and to permit
13503 // persons to whom the Software is furnished to do so, subject to the
13504 // following conditions:
13505 //
13506 // The above copyright notice and this permission notice shall be included
13507 // in all copies or substantial portions of the Software.
13508 //
13509 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13510 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13511 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13512 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13513 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13514 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13515 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13516
13517 var Buffer = require('buffer').Buffer;
13518
13519 var isBufferEncoding = Buffer.isEncoding
13520 || function(encoding) {
13521 switch (encoding && encoding.toLowerCase()) {
13522 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
13523 default: return false;
13524 }
13525 }
13526
13527
13528 function assertEncoding(encoding) {
13529 if (encoding && !isBufferEncoding(encoding)) {
13530 throw new Error('Unknown encoding: ' + encoding);
13531 }
13532 }
13533
13534 // StringDecoder provides an interface for efficiently splitting a series of
13535 // buffers into a series of JS strings without breaking apart multi-byte
13536 // characters. CESU-8 is handled as part of the UTF-8 encoding.
13537 //
13538 // @TODO Handling all encodings inside a single object makes it very difficult
13539 // to reason about this code, so it should be split up in the future.
13540 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13541 // points as used by CESU-8.
13542 var StringDecoder = exports.StringDecoder = function(encoding) {
13543 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13544 assertEncoding(encoding);
13545 switch (this.encoding) {
13546 case 'utf8':
13547 // CESU-8 represents each of Surrogate Pair by 3-bytes
13548 this.surrogateSize = 3;
13549 break;
13550 case 'ucs2':
13551 case 'utf16le':
13552 // UTF-16 represents each of Surrogate Pair by 2-bytes
13553 this.surrogateSize = 2;
13554 this.detectIncompleteChar = utf16DetectIncompleteChar;
13555 break;
13556 case 'base64':
13557 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13558 this.surrogateSize = 3;
13559 this.detectIncompleteChar = base64DetectIncompleteChar;
13560 break;
13561 default:
13562 this.write = passThroughWrite;
13563 return;
13564 }
13565
13566 // Enough space to store all bytes of a single character. UTF-8 needs 4
13567 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13568 this.charBuffer = new Buffer(6);
13569 // Number of bytes received for the current incomplete multi-byte character.
13570 this.charReceived = 0;
13571 // Number of bytes expected for the current incomplete multi-byte character.
13572 this.charLength = 0;
13573 };
13574
13575
13576 // write decodes the given buffer and returns it as JS string that is
13577 // guaranteed to not contain any partial multi-byte characters. Any partial
13578 // character found at the end of the buffer is buffered up, and will be
13579 // returned when calling write again with the remaining bytes.
13580 //
13581 // Note: Converting a Buffer containing an orphan surrogate to a String
13582 // currently works, but converting a String to a Buffer (via `new Buffer`, or
13583 // Buffer#write) will replace incomplete surrogates with the unicode
13584 // replacement character. See https://codereview.chromium.org/121173009/ .
13585 StringDecoder.prototype.write = function(buffer) {
13586 var charStr = '';
13587 // if our last write ended with an incomplete multibyte character
13588 while (this.charLength) {
13589 // determine how many remaining bytes this buffer has to offer for this char
13590 var available = (buffer.length >= this.charLength - this.charReceived) ?
13591 this.charLength - this.charReceived :
13592 buffer.length;
13593
13594 // add the new bytes to the char buffer
13595 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13596 this.charReceived += available;
13597
13598 if (this.charReceived < this.charLength) {
13599 // still not enough chars in this buffer? wait for more ...
13600 return '';
13601 }
13602
13603 // remove bytes belonging to the current character from the buffer
13604 buffer = buffer.slice(available, buffer.length);
13605
13606 // get the character that was split
13607 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13608
13609 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13610 var charCode = charStr.charCodeAt(charStr.length - 1);
13611 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13612 this.charLength += this.surrogateSize;
13613 charStr = '';
13614 continue;
13615 }
13616 this.charReceived = this.charLength = 0;
13617
13618 // if there are no more bytes in this buffer, just emit our char
13619 if (buffer.length === 0) {
13620 return charStr;
13621 }
13622 break;
13623 }
13624
13625 // determine and set charLength / charReceived
13626 this.detectIncompleteChar(buffer);
13627
13628 var end = buffer.length;
13629 if (this.charLength) {
13630 // buffer the incomplete character bytes we got
13631 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13632 end -= this.charReceived;
13633 }
13634
13635 charStr += buffer.toString(this.encoding, 0, end);
13636
13637 var end = charStr.length - 1;
13638 var charCode = charStr.charCodeAt(end);
13639 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13640 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13641 var size = this.surrogateSize;
13642 this.charLength += size;
13643 this.charReceived += size;
13644 this.charBuffer.copy(this.charBuffer, size, 0, size);
13645 buffer.copy(this.charBuffer, 0, 0, size);
13646 return charStr.substring(0, end);
13647 }
13648
13649 // or just emit the charStr
13650 return charStr;
13651 };
13652
13653 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
13654 // the end of the given buffer. If so, it sets this.charLength to the byte
13655 // length that character, and sets this.charReceived to the number of bytes
13656 // that are available for this character.
13657 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13658 // determine how many bytes we have to check at the end of this buffer
13659 var i = (buffer.length >= 3) ? 3 : buffer.length;
13660
13661 // Figure out if one of the last i bytes of our buffer announces an
13662 // incomplete char.
13663 for (; i > 0; i--) {
13664 var c = buffer[buffer.length - i];
13665
13666 // See http://en.wikipedia.org/wiki/UTF-8#Description
13667
13668 // 110XXXXX
13669 if (i == 1 && c >> 5 == 0x06) {
13670 this.charLength = 2;
13671 break;
13672 }
13673
13674 // 1110XXXX
13675 if (i <= 2 && c >> 4 == 0x0E) {
13676 this.charLength = 3;
13677 break;
13678 }
13679
13680 // 11110XXX
13681 if (i <= 3 && c >> 3 == 0x1E) {
13682 this.charLength = 4;
13683 break;
13684 }
13685 }
13686 this.charReceived = i;
13687 };
13688
13689 StringDecoder.prototype.end = function(buffer) {
13690 var res = '';
13691 if (buffer && buffer.length)
13692 res = this.write(buffer);
13693
13694 if (this.charReceived) {
13695 var cr = this.charReceived;
13696 var buf = this.charBuffer;
13697 var enc = this.encoding;
13698 res += buf.slice(0, cr).toString(enc);
13699 }
13700
13701 return res;
13702 };
13703
13704 function passThroughWrite(buffer) {
13705 return buffer.toString(this.encoding);
13706 }
13707
13708 function utf16DetectIncompleteChar(buffer) {
13709 this.charReceived = buffer.length % 2;
13710 this.charLength = this.charReceived ? 2 : 0;
13711 }
13712
13713 function base64DetectIncompleteChar(buffer) {
13714 this.charReceived = buffer.length % 3;
13715 this.charLength = this.charReceived ? 3 : 0;
13716 }
13717
13718 },{"buffer":7}],28:[function(require,module,exports){
13719 module.exports = function isBuffer(arg) {
13720 return arg && typeof arg === 'object'
13721 && typeof arg.copy === 'function'
13722 && typeof arg.fill === 'function'
13723 && typeof arg.readUInt8 === 'function';
13724 }
13725 },{}],29:[function(require,module,exports){
13726 (function (process,global){
13727 // Copyright Joyent, Inc. and other Node contributors.
13728 //
13729 // Permission is hereby granted, free of charge, to any person obtaining a
13730 // copy of this software and associated documentation files (the
13731 // "Software"), to deal in the Software without restriction, including
13732 // without limitation the rights to use, copy, modify, merge, publish,
13733 // distribute, sublicense, and/or sell copies of the Software, and to permit
13734 // persons to whom the Software is furnished to do so, subject to the
13735 // following conditions:
13736 //
13737 // The above copyright notice and this permission notice shall be included
13738 // in all copies or substantial portions of the Software.
13739 //
13740 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13741 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13742 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13743 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13744 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13745 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13746 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13747
13748 var formatRegExp = /%[sdj%]/g;
13749 exports.format = function(f) {
13750 if (!isString(f)) {
13751 var objects = [];
13752 for (var i = 0; i < arguments.length; i++) {
13753 objects.push(inspect(arguments[i]));
13754 }
13755 return objects.join(' ');
13756 }
13757
13758 var i = 1;
13759 var args = arguments;
13760 var len = args.length;
13761 var str = String(f).replace(formatRegExp, function(x) {
13762 if (x === '%%') return '%';
13763 if (i >= len) return x;
13764 switch (x) {
13765 case '%s': return String(args[i++]);
13766 case '%d': return Number(args[i++]);
13767 case '%j':
13768 try {
13769 return JSON.stringify(args[i++]);
13770 } catch (_) {
13771 return '[Circular]';
13772 }
13773 default:
13774 return x;
13775 }
13776 });
13777 for (var x = args[i]; i < len; x = args[++i]) {
13778 if (isNull(x) || !isObject(x)) {
13779 str += ' ' + x;
13780 } else {
13781 str += ' ' + inspect(x);
13782 }
13783 }
13784 return str;
13785 };
13786
13787
13788 // Mark that a method should not be used.
13789 // Returns a modified function which warns once by default.
13790 // If --no-deprecation is set, then it is a no-op.
13791 exports.deprecate = function(fn, msg) {
13792 // Allow for deprecating things in the process of starting up.
13793 if (isUndefined(global.process)) {
13794 return function() {
13795 return exports.deprecate(fn, msg).apply(this, arguments);
13796 };
13797 }
13798
13799 if (process.noDeprecation === true) {
13800 return fn;
13801 }
13802
13803 var warned = false;
13804 function deprecated() {
13805 if (!warned) {
13806 if (process.throwDeprecation) {
13807 throw new Error(msg);
13808 } else if (process.traceDeprecation) {
13809 console.trace(msg);
13810 } else {
13811 console.error(msg);
13812 }
13813 warned = true;
13814 }
13815 return fn.apply(this, arguments);
13816 }
13817
13818 return deprecated;
13819 };
13820
13821
13822 var debugs = {};
13823 var debugEnviron;
13824 exports.debuglog = function(set) {
13825 if (isUndefined(debugEnviron))
13826 debugEnviron = process.env.NODE_DEBUG || '';
13827 set = set.toUpperCase();
13828 if (!debugs[set]) {
13829 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13830 var pid = process.pid;
13831 debugs[set] = function() {
13832 var msg = exports.format.apply(exports, arguments);
13833 console.error('%s %d: %s', set, pid, msg);
13834 };
13835 } else {
13836 debugs[set] = function() {};
13837 }
13838 }
13839 return debugs[set];
13840 };
13841
13842
13843 /**
13844 * Echos the value of a value. Trys to print the value out
13845 * in the best way possible given the different types.
13846 *
13847 * @param {Object} obj The object to print out.
13848 * @param {Object} opts Optional options object that alters the output.
13849 */
13850 /* legacy: obj, showHidden, depth, colors*/
13851 function inspect(obj, opts) {
13852 // default options
13853 var ctx = {
13854 seen: [],
13855 stylize: stylizeNoColor
13856 };
13857 // legacy...
13858 if (arguments.length >= 3) ctx.depth = arguments[2];
13859 if (arguments.length >= 4) ctx.colors = arguments[3];
13860 if (isBoolean(opts)) {
13861 // legacy...
13862 ctx.showHidden = opts;
13863 } else if (opts) {
13864 // got an "options" object
13865 exports._extend(ctx, opts);
13866 }
13867 // set default options
13868 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13869 if (isUndefined(ctx.depth)) ctx.depth = 2;
13870 if (isUndefined(ctx.colors)) ctx.colors = false;
13871 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13872 if (ctx.colors) ctx.stylize = stylizeWithColor;
13873 return formatValue(ctx, obj, ctx.depth);
13874 }
13875 exports.inspect = inspect;
13876
13877
13878 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13879 inspect.colors = {
13880 'bold' : [1, 22],
13881 'italic' : [3, 23],
13882 'underline' : [4, 24],
13883 'inverse' : [7, 27],
13884 'white' : [37, 39],
13885 'grey' : [90, 39],
13886 'black' : [30, 39],
13887 'blue' : [34, 39],
13888 'cyan' : [36, 39],
13889 'green' : [32, 39],
13890 'magenta' : [35, 39],
13891 'red' : [31, 39],
13892 'yellow' : [33, 39]
13893 };
13894
13895 // Don't use 'blue' not visible on cmd.exe
13896 inspect.styles = {
13897 'special': 'cyan',
13898 'number': 'yellow',
13899 'boolean': 'yellow',
13900 'undefined': 'grey',
13901 'null': 'bold',
13902 'string': 'green',
13903 'date': 'magenta',
13904 // "name": intentionally not styling
13905 'regexp': 'red'
13906 };
13907
13908
13909 function stylizeWithColor(str, styleType) {
13910 var style = inspect.styles[styleType];
13911
13912 if (style) {
13913 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13914 '\u001b[' + inspect.colors[style][1] + 'm';
13915 } else {
13916 return str;
13917 }
13918 }
13919
13920
13921 function stylizeNoColor(str, styleType) {
13922 return str;
13923 }
13924
13925
13926 function arrayToHash(array) {
13927 var hash = {};
13928
13929 array.forEach(function(val, idx) {
13930 hash[val] = true;
13931 });
13932
13933 return hash;
13934 }
13935
13936
13937 function formatValue(ctx, value, recurseTimes) {
13938 // Provide a hook for user-specified inspect functions.
13939 // Check that value is an object with an inspect function on it
13940 if (ctx.customInspect &&
13941 value &&
13942 isFunction(value.inspect) &&
13943 // Filter out the util module, it's inspect function is special
13944 value.inspect !== exports.inspect &&
13945 // Also filter out any prototype objects using the circular check.
13946 !(value.constructor && value.constructor.prototype === value)) {
13947 var ret = value.inspect(recurseTimes, ctx);
13948 if (!isString(ret)) {
13949 ret = formatValue(ctx, ret, recurseTimes);
13950 }
13951 return ret;
13952 }
13953
13954 // Primitive types cannot have properties
13955 var primitive = formatPrimitive(ctx, value);
13956 if (primitive) {
13957 return primitive;
13958 }
13959
13960 // Look up the keys of the object.
13961 var keys = Object.keys(value);
13962 var visibleKeys = arrayToHash(keys);
13963
13964 if (ctx.showHidden) {
13965 keys = Object.getOwnPropertyNames(value);
13966 }
13967
13968 // IE doesn't make error fields non-enumerable
13969 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13970 if (isError(value)
13971 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13972 return formatError(value);
13973 }
13974
13975 // Some type of object without properties can be shortcutted.
13976 if (keys.length === 0) {
13977 if (isFunction(value)) {
13978 var name = value.name ? ': ' + value.name : '';
13979 return ctx.stylize('[Function' + name + ']', 'special');
13980 }
13981 if (isRegExp(value)) {
13982 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13983 }
13984 if (isDate(value)) {
13985 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13986 }
13987 if (isError(value)) {
13988 return formatError(value);
13989 }
13990 }
13991
13992 var base = '', array = false, braces = ['{', '}'];
13993
13994 // Make Array say that they are Array
13995 if (isArray(value)) {
13996 array = true;
13997 braces = ['[', ']'];
13998 }
13999
14000 // Make functions say that they are functions
14001 if (isFunction(value)) {
14002 var n = value.name ? ': ' + value.name : '';
14003 base = ' [Function' + n + ']';
14004 }
14005
14006 // Make RegExps say that they are RegExps
14007 if (isRegExp(value)) {
14008 base = ' ' + RegExp.prototype.toString.call(value);
14009 }
14010
14011 // Make dates with properties first say the date
14012 if (isDate(value)) {
14013 base = ' ' + Date.prototype.toUTCString.call(value);
14014 }
14015
14016 // Make error with message first say the error
14017 if (isError(value)) {
14018 base = ' ' + formatError(value);
14019 }
14020
14021 if (keys.length === 0 && (!array || value.length == 0)) {
14022 return braces[0] + base + braces[1];
14023 }
14024
14025 if (recurseTimes < 0) {
14026 if (isRegExp(value)) {
14027 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14028 } else {
14029 return ctx.stylize('[Object]', 'special');
14030 }
14031 }
14032
14033 ctx.seen.push(value);
14034
14035 var output;
14036 if (array) {
14037 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14038 } else {
14039 output = keys.map(function(key) {
14040 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14041 });
14042 }
14043
14044 ctx.seen.pop();
14045
14046 return reduceToSingleString(output, base, braces);
14047 }
14048
14049
14050 function formatPrimitive(ctx, value) {
14051 if (isUndefined(value))
14052 return ctx.stylize('undefined', 'undefined');
14053 if (isString(value)) {
14054 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14055 .replace(/'/g, "\\'")
14056 .replace(/\\"/g, '"') + '\'';
14057 return ctx.stylize(simple, 'string');
14058 }
14059 if (isNumber(value))
14060 return ctx.stylize('' + value, 'number');
14061 if (isBoolean(value))
14062 return ctx.stylize('' + value, 'boolean');
14063 // For some reason typeof null is "object", so special case here.
14064 if (isNull(value))
14065 return ctx.stylize('null', 'null');
14066 }
14067
14068
14069 function formatError(value) {
14070 return '[' + Error.prototype.toString.call(value) + ']';
14071 }
14072
14073
14074 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14075 var output = [];
14076 for (var i = 0, l = value.length; i < l; ++i) {
14077 if (hasOwnProperty(value, String(i))) {
14078 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14079 String(i), true));
14080 } else {
14081 output.push('');
14082 }
14083 }
14084 keys.forEach(function(key) {
14085 if (!key.match(/^\d+$/)) {
14086 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14087 key, true));
14088 }
14089 });
14090 return output;
14091 }
14092
14093
14094 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14095 var name, str, desc;
14096 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14097 if (desc.get) {
14098 if (desc.set) {
14099 str = ctx.stylize('[Getter/Setter]', 'special');
14100 } else {
14101 str = ctx.stylize('[Getter]', 'special');
14102 }
14103 } else {
14104 if (desc.set) {
14105 str = ctx.stylize('[Setter]', 'special');
14106 }
14107 }
14108 if (!hasOwnProperty(visibleKeys, key)) {
14109 name = '[' + key + ']';
14110 }
14111 if (!str) {
14112 if (ctx.seen.indexOf(desc.value) < 0) {
14113 if (isNull(recurseTimes)) {
14114 str = formatValue(ctx, desc.value, null);
14115 } else {
14116 str = formatValue(ctx, desc.value, recurseTimes - 1);
14117 }
14118 if (str.indexOf('\n') > -1) {
14119 if (array) {
14120 str = str.split('\n').map(function(line) {
14121 return ' ' + line;
14122 }).join('\n').substr(2);
14123 } else {
14124 str = '\n' + str.split('\n').map(function(line) {
14125 return ' ' + line;
14126 }).join('\n');
14127 }
14128 }
14129 } else {
14130 str = ctx.stylize('[Circular]', 'special');
14131 }
14132 }
14133 if (isUndefined(name)) {
14134 if (array && key.match(/^\d+$/)) {
14135 return str;
14136 }
14137 name = JSON.stringify('' + key);
14138 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14139 name = name.substr(1, name.length - 2);
14140 name = ctx.stylize(name, 'name');
14141 } else {
14142 name = name.replace(/'/g, "\\'")
14143 .replace(/\\"/g, '"')
14144 .replace(/(^"|"$)/g, "'");
14145 name = ctx.stylize(name, 'string');
14146 }
14147 }
14148
14149 return name + ': ' + str;
14150 }
14151
14152
14153 function reduceToSingleString(output, base, braces) {
14154 var numLinesEst = 0;
14155 var length = output.reduce(function(prev, cur) {
14156 numLinesEst++;
14157 if (cur.indexOf('\n') >= 0) numLinesEst++;
14158 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14159 }, 0);
14160
14161 if (length > 60) {
14162 return braces[0] +
14163 (base === '' ? '' : base + '\n ') +
14164 ' ' +
14165 output.join(',\n ') +
14166 ' ' +
14167 braces[1];
14168 }
14169
14170 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14171 }
14172
14173
14174 // NOTE: These type checking functions intentionally don't use `instanceof`
14175 // because it is fragile and can be easily faked with `Object.create()`.
14176 function isArray(ar) {
14177 return Array.isArray(ar);
14178 }
14179 exports.isArray = isArray;
14180
14181 function isBoolean(arg) {
14182 return typeof arg === 'boolean';
14183 }
14184 exports.isBoolean = isBoolean;
14185
14186 function isNull(arg) {
14187 return arg === null;
14188 }
14189 exports.isNull = isNull;
14190
14191 function isNullOrUndefined(arg) {
14192 return arg == null;
14193 }
14194 exports.isNullOrUndefined = isNullOrUndefined;
14195
14196 function isNumber(arg) {
14197 return typeof arg === 'number';
14198 }
14199 exports.isNumber = isNumber;
14200
14201 function isString(arg) {
14202 return typeof arg === 'string';
14203 }
14204 exports.isString = isString;
14205
14206 function isSymbol(arg) {
14207 return typeof arg === 'symbol';
14208 }
14209 exports.isSymbol = isSymbol;
14210
14211 function isUndefined(arg) {
14212 return arg === void 0;
14213 }
14214 exports.isUndefined = isUndefined;
14215
14216 function isRegExp(re) {
14217 return isObject(re) && objectToString(re) === '[object RegExp]';
14218 }
14219 exports.isRegExp = isRegExp;
14220
14221 function isObject(arg) {
14222 return typeof arg === 'object' && arg !== null;
14223 }
14224 exports.isObject = isObject;
14225
14226 function isDate(d) {
14227 return isObject(d) && objectToString(d) === '[object Date]';
14228 }
14229 exports.isDate = isDate;
14230
14231 function isError(e) {
14232 return isObject(e) &&
14233 (objectToString(e) === '[object Error]' || e instanceof Error);
14234 }
14235 exports.isError = isError;
14236
14237 function isFunction(arg) {
14238 return typeof arg === 'function';
14239 }
14240 exports.isFunction = isFunction;
14241
14242 function isPrimitive(arg) {
14243 return arg === null ||
14244 typeof arg === 'boolean' ||
14245 typeof arg === 'number' ||
14246 typeof arg === 'string' ||
14247 typeof arg === 'symbol' || // ES6 symbol
14248 typeof arg === 'undefined';
14249 }
14250 exports.isPrimitive = isPrimitive;
14251
14252 exports.isBuffer = require('./support/isBuffer');
14253
14254 function objectToString(o) {
14255 return Object.prototype.toString.call(o);
14256 }
14257
14258
14259 function pad(n) {
14260 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14261 }
14262
14263
14264 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14265 'Oct', 'Nov', 'Dec'];
14266
14267 // 26 Feb 16:19:34
14268 function timestamp() {
14269 var d = new Date();
14270 var time = [pad(d.getHours()),
14271 pad(d.getMinutes()),
14272 pad(d.getSeconds())].join(':');
14273 return [d.getDate(), months[d.getMonth()], time].join(' ');
14274 }
14275
14276
14277 // log is just a thin wrapper to console.log that prepends a timestamp
14278 exports.log = function() {
14279 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14280 };
14281
14282
14283 /**
14284 * Inherit the prototype methods from one constructor into another.
14285 *
14286 * The Function.prototype.inherits from lang.js rewritten as a standalone
14287 * function (not on Function.prototype). NOTE: If this file is to be loaded
14288 * during bootstrapping this function needs to be rewritten using some native
14289 * functions as prototype setup using normal JavaScript does not work as
14290 * expected during bootstrapping (see mirror.js in r114903).
14291 *
14292 * @param {function} ctor Constructor function which needs to inherit the
14293 * prototype.
14294 * @param {function} superCtor Constructor function to inherit prototype from.
14295 */
14296 exports.inherits = require('inherits');
14297
14298 exports._extend = function(origin, add) {
14299 // Don't do anything if add isn't an object
14300 if (!add || !isObject(add)) return origin;
14301
14302 var keys = Object.keys(add);
14303 var i = keys.length;
14304 while (i--) {
14305 origin[keys[i]] = add[keys[i]];
14306 }
14307 return origin;
14308 };
14309
14310 function hasOwnProperty(obj, prop) {
14311 return Object.prototype.hasOwnProperty.call(obj, prop);
14312 }
14313
14314 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14315 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14316 // Base58 encoding/decoding
14317 // Originally written by Mike Hearn for BitcoinJ
14318 // Copyright (c) 2011 Google Inc
14319 // Ported to JavaScript by Stefan Thomas
14320 // Merged Buffer refactorings from base58-native by Stephen Pair
14321 // Copyright (c) 2013 BitPay Inc
14322
14323 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14324 var ALPHABET_MAP = {}
14325 for(var i = 0; i < ALPHABET.length; i++) {
14326 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14327 }
14328 var BASE = 58
14329
14330 function encode(buffer) {
14331 if (buffer.length === 0) return ''
14332
14333 var i, j, digits = [0]
14334 for (i = 0; i < buffer.length; i++) {
14335 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14336
14337 digits[0] += buffer[i]
14338
14339 var carry = 0
14340 for (j = 0; j < digits.length; ++j) {
14341 digits[j] += carry
14342
14343 carry = (digits[j] / BASE) | 0
14344 digits[j] %= BASE
14345 }
14346
14347 while (carry) {
14348 digits.push(carry % BASE)
14349
14350 carry = (carry / BASE) | 0
14351 }
14352 }
14353
14354 // deal with leading zeros
14355 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14356
14357 // convert digits to a string
14358 var stringOutput = ""
14359 for (var i = digits.length - 1; i >= 0; i--) {
14360 stringOutput = stringOutput + ALPHABET[digits[i]]
14361 }
14362 return stringOutput
14363 }
14364
14365 function decode(string) {
14366 if (string.length === 0) return []
14367
14368 var i, j, bytes = [0]
14369 for (i = 0; i < string.length; i++) {
14370 var c = string[i]
14371 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14372
14373 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14374 bytes[0] += ALPHABET_MAP[c]
14375
14376 var carry = 0
14377 for (j = 0; j < bytes.length; ++j) {
14378 bytes[j] += carry
14379
14380 carry = bytes[j] >> 8
14381 bytes[j] &= 0xff
14382 }
14383
14384 while (carry) {
14385 bytes.push(carry & 0xff)
14386
14387 carry >>= 8
14388 }
14389 }
14390
14391 // deal with leading zeros
14392 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14393
14394 return bytes.reverse()
14395 }
14396
14397 module.exports = {
14398 encode: encode,
14399 decode: decode
14400 }
14401
14402 },{}],31:[function(require,module,exports){
14403 (function (Buffer){
14404 'use strict'
14405
14406 var base58 = require('bs58')
14407 var createHash = require('create-hash')
14408
14409 // SHA256(SHA256(buffer))
14410 function sha256x2 (buffer) {
14411 buffer = createHash('sha256').update(buffer).digest()
14412 return createHash('sha256').update(buffer).digest()
14413 }
14414
14415 // Encode a buffer as a base58-check encoded string
14416 function encode (payload) {
14417 var checksum = sha256x2(payload).slice(0, 4)
14418
14419 return base58.encode(Buffer.concat([
14420 payload,
14421 checksum
14422 ]))
14423 }
14424
14425 // Decode a base58-check encoded string to a buffer
14426 function decode (string) {
14427 var buffer = new Buffer(base58.decode(string))
14428
14429 var payload = buffer.slice(0, -4)
14430 var checksum = buffer.slice(-4)
14431 var newChecksum = sha256x2(payload).slice(0, 4)
14432
14433 for (var i = 0; i < newChecksum.length; ++i) {
14434 if (newChecksum[i] === checksum[i]) continue
14435
14436 throw new Error('Invalid checksum')
14437 }
14438
14439 return payload
14440 }
14441
14442 module.exports = {
14443 encode: encode,
14444 decode: decode
14445 }
14446
14447 }).call(this,require("buffer").Buffer)
14448 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14449 (function (Buffer){
14450 'use strict';
14451 var inherits = require('inherits')
14452 var md5 = require('./md5')
14453 var rmd160 = require('ripemd160')
14454 var sha = require('sha.js')
14455
14456 var Transform = require('stream').Transform
14457
14458 function HashNoConstructor(hash) {
14459 Transform.call(this)
14460
14461 this._hash = hash
14462 this.buffers = []
14463 }
14464
14465 inherits(HashNoConstructor, Transform)
14466
14467 HashNoConstructor.prototype._transform = function (data, _, next) {
14468 this.buffers.push(data)
14469
14470 next()
14471 }
14472
14473 HashNoConstructor.prototype._flush = function (next) {
14474 this.push(this.digest())
14475 next()
14476 }
14477
14478 HashNoConstructor.prototype.update = function (data, enc) {
14479 if (typeof data === 'string') {
14480 data = new Buffer(data, enc)
14481 }
14482
14483 this.buffers.push(data)
14484 return this
14485 }
14486
14487 HashNoConstructor.prototype.digest = function (enc) {
14488 var buf = Buffer.concat(this.buffers)
14489 var r = this._hash(buf)
14490 this.buffers = null
14491
14492 return enc ? r.toString(enc) : r
14493 }
14494
14495 function Hash(hash) {
14496 Transform.call(this)
14497
14498 this._hash = hash
14499 }
14500
14501 inherits(Hash, Transform)
14502
14503 Hash.prototype._transform = function (data, enc, next) {
14504 if (enc) data = new Buffer(data, enc)
14505
14506 this._hash.update(data)
14507
14508 next()
14509 }
14510
14511 Hash.prototype._flush = function (next) {
14512 this.push(this._hash.digest())
14513 this._hash = null
14514
14515 next()
14516 }
14517
14518 Hash.prototype.update = function (data, enc) {
14519 if (typeof data === 'string') {
14520 data = new Buffer(data, enc)
14521 }
14522
14523 this._hash.update(data)
14524 return this
14525 }
14526
14527 Hash.prototype.digest = function (enc) {
14528 var outData = this._hash.digest()
14529
14530 return enc ? outData.toString(enc) : outData
14531 }
14532
14533 module.exports = function createHash (alg) {
14534 if ('md5' === alg) return new HashNoConstructor(md5)
14535 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14536
14537 return new Hash(sha(alg))
14538 }
14539
14540 }).call(this,require("buffer").Buffer)
14541 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14542 (function (Buffer){
14543 'use strict';
14544 var intSize = 4;
14545 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14546 var chrsz = 8;
14547
14548 function toArray(buf, bigEndian) {
14549 if ((buf.length % intSize) !== 0) {
14550 var len = buf.length + (intSize - (buf.length % intSize));
14551 buf = Buffer.concat([buf, zeroBuffer], len);
14552 }
14553
14554 var arr = [];
14555 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14556 for (var i = 0; i < buf.length; i += intSize) {
14557 arr.push(fn.call(buf, i));
14558 }
14559 return arr;
14560 }
14561
14562 function toBuffer(arr, size, bigEndian) {
14563 var buf = new Buffer(size);
14564 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14565 for (var i = 0; i < arr.length; i++) {
14566 fn.call(buf, arr[i], i * 4, true);
14567 }
14568 return buf;
14569 }
14570
14571 function hash(buf, fn, hashSize, bigEndian) {
14572 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14573 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14574 return toBuffer(arr, hashSize, bigEndian);
14575 }
14576 exports.hash = hash;
14577 }).call(this,require("buffer").Buffer)
14578 },{"buffer":7}],34:[function(require,module,exports){
14579 'use strict';
14580 /*
14581 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14582 * Digest Algorithm, as defined in RFC 1321.
14583 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14584 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14585 * Distributed under the BSD License
14586 * See http://pajhome.org.uk/crypt/md5 for more info.
14587 */
14588
14589 var helpers = require('./helpers');
14590
14591 /*
14592 * Calculate the MD5 of an array of little-endian words, and a bit length
14593 */
14594 function core_md5(x, len)
14595 {
14596 /* append padding */
14597 x[len >> 5] |= 0x80 << ((len) % 32);
14598 x[(((len + 64) >>> 9) << 4) + 14] = len;
14599
14600 var a = 1732584193;
14601 var b = -271733879;
14602 var c = -1732584194;
14603 var d = 271733878;
14604
14605 for(var i = 0; i < x.length; i += 16)
14606 {
14607 var olda = a;
14608 var oldb = b;
14609 var oldc = c;
14610 var oldd = d;
14611
14612 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14613 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14614 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14615 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14616 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14617 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14618 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14619 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14620 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14621 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14622 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14623 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14624 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14625 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14626 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14627 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14628
14629 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14630 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14631 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14632 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14633 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14634 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14635 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14636 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14637 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14638 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14639 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14640 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14641 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14642 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14643 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14644 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14645
14646 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14647 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14648 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14649 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14650 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14651 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14652 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14653 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14654 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14655 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14656 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14657 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14658 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14659 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14660 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14661 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14662
14663 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14664 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14665 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14666 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14667 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14668 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14669 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14670 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14671 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14672 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14673 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14674 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14675 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14676 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14677 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14678 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14679
14680 a = safe_add(a, olda);
14681 b = safe_add(b, oldb);
14682 c = safe_add(c, oldc);
14683 d = safe_add(d, oldd);
14684 }
14685 return Array(a, b, c, d);
14686
14687 }
14688
14689 /*
14690 * These functions implement the four basic operations the algorithm uses.
14691 */
14692 function md5_cmn(q, a, b, x, s, t)
14693 {
14694 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14695 }
14696 function md5_ff(a, b, c, d, x, s, t)
14697 {
14698 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14699 }
14700 function md5_gg(a, b, c, d, x, s, t)
14701 {
14702 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14703 }
14704 function md5_hh(a, b, c, d, x, s, t)
14705 {
14706 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14707 }
14708 function md5_ii(a, b, c, d, x, s, t)
14709 {
14710 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14711 }
14712
14713 /*
14714 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14715 * to work around bugs in some JS interpreters.
14716 */
14717 function safe_add(x, y)
14718 {
14719 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14720 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14721 return (msw << 16) | (lsw & 0xFFFF);
14722 }
14723
14724 /*
14725 * Bitwise rotate a 32-bit number to the left.
14726 */
14727 function bit_rol(num, cnt)
14728 {
14729 return (num << cnt) | (num >>> (32 - cnt));
14730 }
14731
14732 module.exports = function md5(buf) {
14733 return helpers.hash(buf, core_md5, 16);
14734 };
14735 },{"./helpers":33}],35:[function(require,module,exports){
14736 arguments[4][12][0].apply(exports,arguments)
14737 },{"dup":12}],36:[function(require,module,exports){
14738 (function (Buffer){
14739 /*
14740 CryptoJS v3.1.2
14741 code.google.com/p/crypto-js
14742 (c) 2009-2013 by Jeff Mott. All rights reserved.
14743 code.google.com/p/crypto-js/wiki/License
14744 */
14745 /** @preserve
14746 (c) 2012 by Cédric Mesnil. All rights reserved.
14747
14748 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14749
14750 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14751 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
14752
14753 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14754 */
14755
14756 // constants table
14757 var zl = [
14758 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14759 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14760 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14761 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14762 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14763 ]
14764
14765 var zr = [
14766 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14767 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14768 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14769 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14770 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14771 ]
14772
14773 var sl = [
14774 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14775 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14776 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14777 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14778 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14779 ]
14780
14781 var sr = [
14782 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14783 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14784 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14785 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14786 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14787 ]
14788
14789 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14790 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14791
14792 function bytesToWords (bytes) {
14793 var words = []
14794 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14795 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14796 }
14797 return words
14798 }
14799
14800 function wordsToBytes (words) {
14801 var bytes = []
14802 for (var b = 0; b < words.length * 32; b += 8) {
14803 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14804 }
14805 return bytes
14806 }
14807
14808 function processBlock (H, M, offset) {
14809 // swap endian
14810 for (var i = 0; i < 16; i++) {
14811 var offset_i = offset + i
14812 var M_offset_i = M[offset_i]
14813
14814 // Swap
14815 M[offset_i] = (
14816 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14817 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14818 )
14819 }
14820
14821 // Working variables
14822 var al, bl, cl, dl, el
14823 var ar, br, cr, dr, er
14824
14825 ar = al = H[0]
14826 br = bl = H[1]
14827 cr = cl = H[2]
14828 dr = dl = H[3]
14829 er = el = H[4]
14830
14831 // computation
14832 var t
14833 for (i = 0; i < 80; i += 1) {
14834 t = (al + M[offset + zl[i]]) | 0
14835 if (i < 16) {
14836 t += f1(bl, cl, dl) + hl[0]
14837 } else if (i < 32) {
14838 t += f2(bl, cl, dl) + hl[1]
14839 } else if (i < 48) {
14840 t += f3(bl, cl, dl) + hl[2]
14841 } else if (i < 64) {
14842 t += f4(bl, cl, dl) + hl[3]
14843 } else {// if (i<80) {
14844 t += f5(bl, cl, dl) + hl[4]
14845 }
14846 t = t | 0
14847 t = rotl(t, sl[i])
14848 t = (t + el) | 0
14849 al = el
14850 el = dl
14851 dl = rotl(cl, 10)
14852 cl = bl
14853 bl = t
14854
14855 t = (ar + M[offset + zr[i]]) | 0
14856 if (i < 16) {
14857 t += f5(br, cr, dr) + hr[0]
14858 } else if (i < 32) {
14859 t += f4(br, cr, dr) + hr[1]
14860 } else if (i < 48) {
14861 t += f3(br, cr, dr) + hr[2]
14862 } else if (i < 64) {
14863 t += f2(br, cr, dr) + hr[3]
14864 } else {// if (i<80) {
14865 t += f1(br, cr, dr) + hr[4]
14866 }
14867
14868 t = t | 0
14869 t = rotl(t, sr[i])
14870 t = (t + er) | 0
14871 ar = er
14872 er = dr
14873 dr = rotl(cr, 10)
14874 cr = br
14875 br = t
14876 }
14877
14878 // intermediate hash value
14879 t = (H[1] + cl + dr) | 0
14880 H[1] = (H[2] + dl + er) | 0
14881 H[2] = (H[3] + el + ar) | 0
14882 H[3] = (H[4] + al + br) | 0
14883 H[4] = (H[0] + bl + cr) | 0
14884 H[0] = t
14885 }
14886
14887 function f1 (x, y, z) {
14888 return ((x) ^ (y) ^ (z))
14889 }
14890
14891 function f2 (x, y, z) {
14892 return (((x) & (y)) | ((~x) & (z)))
14893 }
14894
14895 function f3 (x, y, z) {
14896 return (((x) | (~(y))) ^ (z))
14897 }
14898
14899 function f4 (x, y, z) {
14900 return (((x) & (z)) | ((y) & (~(z))))
14901 }
14902
14903 function f5 (x, y, z) {
14904 return ((x) ^ ((y) | (~(z))))
14905 }
14906
14907 function rotl (x, n) {
14908 return (x << n) | (x >>> (32 - n))
14909 }
14910
14911 function ripemd160 (message) {
14912 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14913
14914 if (typeof message === 'string') {
14915 message = new Buffer(message, 'utf8')
14916 }
14917
14918 var m = bytesToWords(message)
14919
14920 var nBitsLeft = message.length * 8
14921 var nBitsTotal = message.length * 8
14922
14923 // Add padding
14924 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14925 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14926 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14927 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14928 )
14929
14930 for (var i = 0; i < m.length; i += 16) {
14931 processBlock(H, m, i)
14932 }
14933
14934 // swap endian
14935 for (i = 0; i < 5; i++) {
14936 // shortcut
14937 var H_i = H[i]
14938
14939 // Swap
14940 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14941 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14942 }
14943
14944 var digestbytes = wordsToBytes(H)
14945 return new Buffer(digestbytes)
14946 }
14947
14948 module.exports = ripemd160
14949
14950 }).call(this,require("buffer").Buffer)
14951 },{"buffer":7}],37:[function(require,module,exports){
14952 (function (Buffer){
14953 // prototype class for hash functions
14954 function Hash (blockSize, finalSize) {
14955 this._block = new Buffer(blockSize)
14956 this._finalSize = finalSize
14957 this._blockSize = blockSize
14958 this._len = 0
14959 this._s = 0
14960 }
14961
14962 Hash.prototype.update = function (data, enc) {
14963 if (typeof data === 'string') {
14964 enc = enc || 'utf8'
14965 data = new Buffer(data, enc)
14966 }
14967
14968 var l = this._len += data.length
14969 var s = this._s || 0
14970 var f = 0
14971 var buffer = this._block
14972
14973 while (s < l) {
14974 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14975 var ch = (t - f)
14976
14977 for (var i = 0; i < ch; i++) {
14978 buffer[(s % this._blockSize) + i] = data[i + f]
14979 }
14980
14981 s += ch
14982 f += ch
14983
14984 if ((s % this._blockSize) === 0) {
14985 this._update(buffer)
14986 }
14987 }
14988 this._s = s
14989
14990 return this
14991 }
14992
14993 Hash.prototype.digest = function (enc) {
14994 // Suppose the length of the message M, in bits, is l
14995 var l = this._len * 8
14996
14997 // Append the bit 1 to the end of the message
14998 this._block[this._len % this._blockSize] = 0x80
14999
15000 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
15001 this._block.fill(0, this._len % this._blockSize + 1)
15002
15003 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
15004 this._update(this._block)
15005 this._block.fill(0)
15006 }
15007
15008 // to this append the block which is equal to the number l written in binary
15009 // TODO: handle case where l is > Math.pow(2, 29)
15010 this._block.writeInt32BE(l, this._blockSize - 4)
15011
15012 var hash = this._update(this._block) || this._hash()
15013
15014 return enc ? hash.toString(enc) : hash
15015 }
15016
15017 Hash.prototype._update = function () {
15018 throw new Error('_update must be implemented by subclass')
15019 }
15020
15021 module.exports = Hash
15022
15023 }).call(this,require("buffer").Buffer)
15024 },{"buffer":7}],38:[function(require,module,exports){
15025 var exports = module.exports = function SHA (algorithm) {
15026 algorithm = algorithm.toLowerCase()
15027
15028 var Algorithm = exports[algorithm]
15029 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15030
15031 return new Algorithm()
15032 }
15033
15034 exports.sha = require('./sha')
15035 exports.sha1 = require('./sha1')
15036 exports.sha224 = require('./sha224')
15037 exports.sha256 = require('./sha256')
15038 exports.sha384 = require('./sha384')
15039 exports.sha512 = require('./sha512')
15040
15041 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15042 (function (Buffer){
15043 /*
15044 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15045 * in FIPS PUB 180-1
15046 * This source code is derived from sha1.js of the same repository.
15047 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15048 * operation was added.
15049 */
15050
15051 var inherits = require('inherits')
15052 var Hash = require('./hash')
15053
15054 var W = new Array(80)
15055
15056 function Sha () {
15057 this.init()
15058 this._w = W
15059
15060 Hash.call(this, 64, 56)
15061 }
15062
15063 inherits(Sha, Hash)
15064
15065 Sha.prototype.init = function () {
15066 this._a = 0x67452301 | 0
15067 this._b = 0xefcdab89 | 0
15068 this._c = 0x98badcfe | 0
15069 this._d = 0x10325476 | 0
15070 this._e = 0xc3d2e1f0 | 0
15071
15072 return this
15073 }
15074
15075 /*
15076 * Bitwise rotate a 32-bit number to the left.
15077 */
15078 function rol (num, cnt) {
15079 return (num << cnt) | (num >>> (32 - cnt))
15080 }
15081
15082 Sha.prototype._update = function (M) {
15083 var W = this._w
15084
15085 var a = this._a
15086 var b = this._b
15087 var c = this._c
15088 var d = this._d
15089 var e = this._e
15090
15091 var j = 0, k
15092
15093 /*
15094 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15095 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15096 */
15097 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15098 function loop (w, f) {
15099 W[j] = w
15100
15101 var t = rol(a, 5) + f + e + w + k
15102
15103 e = d
15104 d = c
15105 c = rol(b, 30)
15106 b = a
15107 a = t
15108 j++
15109 }
15110
15111 k = 1518500249
15112 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15113 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15114 k = 1859775393
15115 while (j < 40) loop(calcW(), b ^ c ^ d)
15116 k = -1894007588
15117 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15118 k = -899497514
15119 while (j < 80) loop(calcW(), b ^ c ^ d)
15120
15121 this._a = (a + this._a) | 0
15122 this._b = (b + this._b) | 0
15123 this._c = (c + this._c) | 0
15124 this._d = (d + this._d) | 0
15125 this._e = (e + this._e) | 0
15126 }
15127
15128 Sha.prototype._hash = function () {
15129 var H = new Buffer(20)
15130
15131 H.writeInt32BE(this._a | 0, 0)
15132 H.writeInt32BE(this._b | 0, 4)
15133 H.writeInt32BE(this._c | 0, 8)
15134 H.writeInt32BE(this._d | 0, 12)
15135 H.writeInt32BE(this._e | 0, 16)
15136
15137 return H
15138 }
15139
15140 module.exports = Sha
15141
15142
15143 }).call(this,require("buffer").Buffer)
15144 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15145 (function (Buffer){
15146 /*
15147 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15148 * in FIPS PUB 180-1
15149 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15150 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15151 * Distributed under the BSD License
15152 * See http://pajhome.org.uk/crypt/md5 for details.
15153 */
15154
15155 var inherits = require('inherits')
15156 var Hash = require('./hash')
15157
15158 var W = new Array(80)
15159
15160 function Sha1 () {
15161 this.init()
15162 this._w = W
15163
15164 Hash.call(this, 64, 56)
15165 }
15166
15167 inherits(Sha1, Hash)
15168
15169 Sha1.prototype.init = function () {
15170 this._a = 0x67452301 | 0
15171 this._b = 0xefcdab89 | 0
15172 this._c = 0x98badcfe | 0
15173 this._d = 0x10325476 | 0
15174 this._e = 0xc3d2e1f0 | 0
15175
15176 return this
15177 }
15178
15179 /*
15180 * Bitwise rotate a 32-bit number to the left.
15181 */
15182 function rol (num, cnt) {
15183 return (num << cnt) | (num >>> (32 - cnt))
15184 }
15185
15186 Sha1.prototype._update = function (M) {
15187 var W = this._w
15188
15189 var a = this._a
15190 var b = this._b
15191 var c = this._c
15192 var d = this._d
15193 var e = this._e
15194
15195 var j = 0, k
15196
15197 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15198 function loop (w, f) {
15199 W[j] = w
15200
15201 var t = rol(a, 5) + f + e + w + k
15202
15203 e = d
15204 d = c
15205 c = rol(b, 30)
15206 b = a
15207 a = t
15208 j++
15209 }
15210
15211 k = 1518500249
15212 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15213 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15214 k = 1859775393
15215 while (j < 40) loop(calcW(), b ^ c ^ d)
15216 k = -1894007588
15217 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15218 k = -899497514
15219 while (j < 80) loop(calcW(), b ^ c ^ d)
15220
15221 this._a = (a + this._a) | 0
15222 this._b = (b + this._b) | 0
15223 this._c = (c + this._c) | 0
15224 this._d = (d + this._d) | 0
15225 this._e = (e + this._e) | 0
15226 }
15227
15228 Sha1.prototype._hash = function () {
15229 var H = new Buffer(20)
15230
15231 H.writeInt32BE(this._a | 0, 0)
15232 H.writeInt32BE(this._b | 0, 4)
15233 H.writeInt32BE(this._c | 0, 8)
15234 H.writeInt32BE(this._d | 0, 12)
15235 H.writeInt32BE(this._e | 0, 16)
15236
15237 return H
15238 }
15239
15240 module.exports = Sha1
15241
15242 }).call(this,require("buffer").Buffer)
15243 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15244 (function (Buffer){
15245 /**
15246 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15247 * in FIPS 180-2
15248 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15249 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15250 *
15251 */
15252
15253 var inherits = require('inherits')
15254 var Sha256 = require('./sha256')
15255 var Hash = require('./hash')
15256
15257 var W = new Array(64)
15258
15259 function Sha224 () {
15260 this.init()
15261
15262 this._w = W // new Array(64)
15263
15264 Hash.call(this, 64, 56)
15265 }
15266
15267 inherits(Sha224, Sha256)
15268
15269 Sha224.prototype.init = function () {
15270 this._a = 0xc1059ed8 | 0
15271 this._b = 0x367cd507 | 0
15272 this._c = 0x3070dd17 | 0
15273 this._d = 0xf70e5939 | 0
15274 this._e = 0xffc00b31 | 0
15275 this._f = 0x68581511 | 0
15276 this._g = 0x64f98fa7 | 0
15277 this._h = 0xbefa4fa4 | 0
15278
15279 return this
15280 }
15281
15282 Sha224.prototype._hash = function () {
15283 var H = new Buffer(28)
15284
15285 H.writeInt32BE(this._a, 0)
15286 H.writeInt32BE(this._b, 4)
15287 H.writeInt32BE(this._c, 8)
15288 H.writeInt32BE(this._d, 12)
15289 H.writeInt32BE(this._e, 16)
15290 H.writeInt32BE(this._f, 20)
15291 H.writeInt32BE(this._g, 24)
15292
15293 return H
15294 }
15295
15296 module.exports = Sha224
15297
15298 }).call(this,require("buffer").Buffer)
15299 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15300 (function (Buffer){
15301 /**
15302 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15303 * in FIPS 180-2
15304 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15305 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15306 *
15307 */
15308
15309 var inherits = require('inherits')
15310 var Hash = require('./hash')
15311
15312 var K = [
15313 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15314 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15315 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15316 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15317 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15318 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15319 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15320 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15321 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15322 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15323 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15324 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15325 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15326 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15327 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15328 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15329 ]
15330
15331 var W = new Array(64)
15332
15333 function Sha256 () {
15334 this.init()
15335
15336 this._w = W // new Array(64)
15337
15338 Hash.call(this, 64, 56)
15339 }
15340
15341 inherits(Sha256, Hash)
15342
15343 Sha256.prototype.init = function () {
15344 this._a = 0x6a09e667 | 0
15345 this._b = 0xbb67ae85 | 0
15346 this._c = 0x3c6ef372 | 0
15347 this._d = 0xa54ff53a | 0
15348 this._e = 0x510e527f | 0
15349 this._f = 0x9b05688c | 0
15350 this._g = 0x1f83d9ab | 0
15351 this._h = 0x5be0cd19 | 0
15352
15353 return this
15354 }
15355
15356 function S (X, n) {
15357 return (X >>> n) | (X << (32 - n))
15358 }
15359
15360 function R (X, n) {
15361 return (X >>> n)
15362 }
15363
15364 function Ch (x, y, z) {
15365 return ((x & y) ^ ((~x) & z))
15366 }
15367
15368 function Maj (x, y, z) {
15369 return ((x & y) ^ (x & z) ^ (y & z))
15370 }
15371
15372 function Sigma0256 (x) {
15373 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15374 }
15375
15376 function Sigma1256 (x) {
15377 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15378 }
15379
15380 function Gamma0256 (x) {
15381 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15382 }
15383
15384 function Gamma1256 (x) {
15385 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15386 }
15387
15388 Sha256.prototype._update = function (M) {
15389 var W = this._w
15390
15391 var a = this._a | 0
15392 var b = this._b | 0
15393 var c = this._c | 0
15394 var d = this._d | 0
15395 var e = this._e | 0
15396 var f = this._f | 0
15397 var g = this._g | 0
15398 var h = this._h | 0
15399
15400 var j = 0
15401
15402 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15403 function loop (w) {
15404 W[j] = w
15405
15406 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15407 var T2 = Sigma0256(a) + Maj(a, b, c)
15408
15409 h = g
15410 g = f
15411 f = e
15412 e = d + T1
15413 d = c
15414 c = b
15415 b = a
15416 a = T1 + T2
15417
15418 j++
15419 }
15420
15421 while (j < 16) loop(M.readInt32BE(j * 4))
15422 while (j < 64) loop(calcW())
15423
15424 this._a = (a + this._a) | 0
15425 this._b = (b + this._b) | 0
15426 this._c = (c + this._c) | 0
15427 this._d = (d + this._d) | 0
15428 this._e = (e + this._e) | 0
15429 this._f = (f + this._f) | 0
15430 this._g = (g + this._g) | 0
15431 this._h = (h + this._h) | 0
15432 }
15433
15434 Sha256.prototype._hash = function () {
15435 var H = new Buffer(32)
15436
15437 H.writeInt32BE(this._a, 0)
15438 H.writeInt32BE(this._b, 4)
15439 H.writeInt32BE(this._c, 8)
15440 H.writeInt32BE(this._d, 12)
15441 H.writeInt32BE(this._e, 16)
15442 H.writeInt32BE(this._f, 20)
15443 H.writeInt32BE(this._g, 24)
15444 H.writeInt32BE(this._h, 28)
15445
15446 return H
15447 }
15448
15449 module.exports = Sha256
15450
15451 }).call(this,require("buffer").Buffer)
15452 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15453 (function (Buffer){
15454 var inherits = require('inherits')
15455 var SHA512 = require('./sha512')
15456 var Hash = require('./hash')
15457
15458 var W = new Array(160)
15459
15460 function Sha384 () {
15461 this.init()
15462 this._w = W
15463
15464 Hash.call(this, 128, 112)
15465 }
15466
15467 inherits(Sha384, SHA512)
15468
15469 Sha384.prototype.init = function () {
15470 this._a = 0xcbbb9d5d | 0
15471 this._b = 0x629a292a | 0
15472 this._c = 0x9159015a | 0
15473 this._d = 0x152fecd8 | 0
15474 this._e = 0x67332667 | 0
15475 this._f = 0x8eb44a87 | 0
15476 this._g = 0xdb0c2e0d | 0
15477 this._h = 0x47b5481d | 0
15478
15479 this._al = 0xc1059ed8 | 0
15480 this._bl = 0x367cd507 | 0
15481 this._cl = 0x3070dd17 | 0
15482 this._dl = 0xf70e5939 | 0
15483 this._el = 0xffc00b31 | 0
15484 this._fl = 0x68581511 | 0
15485 this._gl = 0x64f98fa7 | 0
15486 this._hl = 0xbefa4fa4 | 0
15487
15488 return this
15489 }
15490
15491 Sha384.prototype._hash = function () {
15492 var H = new Buffer(48)
15493
15494 function writeInt64BE (h, l, offset) {
15495 H.writeInt32BE(h, offset)
15496 H.writeInt32BE(l, offset + 4)
15497 }
15498
15499 writeInt64BE(this._a, this._al, 0)
15500 writeInt64BE(this._b, this._bl, 8)
15501 writeInt64BE(this._c, this._cl, 16)
15502 writeInt64BE(this._d, this._dl, 24)
15503 writeInt64BE(this._e, this._el, 32)
15504 writeInt64BE(this._f, this._fl, 40)
15505
15506 return H
15507 }
15508
15509 module.exports = Sha384
15510
15511 }).call(this,require("buffer").Buffer)
15512 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15513 (function (Buffer){
15514 var inherits = require('inherits')
15515 var Hash = require('./hash')
15516
15517 var K = [
15518 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15519 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15520 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15521 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15522 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15523 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15524 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15525 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15526 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15527 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15528 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15529 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15530 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15531 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15532 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15533 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15534 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15535 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15536 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15537 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15538 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15539 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15540 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15541 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15542 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15543 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15544 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15545 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15546 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15547 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15548 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15549 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15550 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15551 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15552 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15553 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15554 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15555 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15556 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15557 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15558 ]
15559
15560 var W = new Array(160)
15561
15562 function Sha512 () {
15563 this.init()
15564 this._w = W
15565
15566 Hash.call(this, 128, 112)
15567 }
15568
15569 inherits(Sha512, Hash)
15570
15571 Sha512.prototype.init = function () {
15572 this._a = 0x6a09e667 | 0
15573 this._b = 0xbb67ae85 | 0
15574 this._c = 0x3c6ef372 | 0
15575 this._d = 0xa54ff53a | 0
15576 this._e = 0x510e527f | 0
15577 this._f = 0x9b05688c | 0
15578 this._g = 0x1f83d9ab | 0
15579 this._h = 0x5be0cd19 | 0
15580
15581 this._al = 0xf3bcc908 | 0
15582 this._bl = 0x84caa73b | 0
15583 this._cl = 0xfe94f82b | 0
15584 this._dl = 0x5f1d36f1 | 0
15585 this._el = 0xade682d1 | 0
15586 this._fl = 0x2b3e6c1f | 0
15587 this._gl = 0xfb41bd6b | 0
15588 this._hl = 0x137e2179 | 0
15589
15590 return this
15591 }
15592
15593 function S (X, Xl, n) {
15594 return (X >>> n) | (Xl << (32 - n))
15595 }
15596
15597 function Ch (x, y, z) {
15598 return ((x & y) ^ ((~x) & z))
15599 }
15600
15601 function Maj (x, y, z) {
15602 return ((x & y) ^ (x & z) ^ (y & z))
15603 }
15604
15605 Sha512.prototype._update = function (M) {
15606 var W = this._w
15607
15608 var a = this._a | 0
15609 var b = this._b | 0
15610 var c = this._c | 0
15611 var d = this._d | 0
15612 var e = this._e | 0
15613 var f = this._f | 0
15614 var g = this._g | 0
15615 var h = this._h | 0
15616
15617 var al = this._al | 0
15618 var bl = this._bl | 0
15619 var cl = this._cl | 0
15620 var dl = this._dl | 0
15621 var el = this._el | 0
15622 var fl = this._fl | 0
15623 var gl = this._gl | 0
15624 var hl = this._hl | 0
15625
15626 var i = 0, j = 0
15627 var Wi, Wil
15628 function calcW () {
15629 var x = W[j - 15 * 2]
15630 var xl = W[j - 15 * 2 + 1]
15631 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15632 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15633
15634 x = W[j - 2 * 2]
15635 xl = W[j - 2 * 2 + 1]
15636 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15637 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15638
15639 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15640 var Wi7 = W[j - 7 * 2]
15641 var Wi7l = W[j - 7 * 2 + 1]
15642
15643 var Wi16 = W[j - 16 * 2]
15644 var Wi16l = W[j - 16 * 2 + 1]
15645
15646 Wil = gamma0l + Wi7l
15647 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15648 Wil = Wil + gamma1l
15649 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15650 Wil = Wil + Wi16l
15651 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15652 }
15653
15654 function loop () {
15655 W[j] = Wi
15656 W[j + 1] = Wil
15657
15658 var maj = Maj(a, b, c)
15659 var majl = Maj(al, bl, cl)
15660
15661 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15662 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15663 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15664 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15665
15666 // t1 = h + sigma1 + ch + K[i] + W[i]
15667 var Ki = K[j]
15668 var Kil = K[j + 1]
15669
15670 var ch = Ch(e, f, g)
15671 var chl = Ch(el, fl, gl)
15672
15673 var t1l = hl + sigma1l
15674 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15675 t1l = t1l + chl
15676 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15677 t1l = t1l + Kil
15678 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15679 t1l = t1l + Wil
15680 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15681
15682 // t2 = sigma0 + maj
15683 var t2l = sigma0l + majl
15684 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15685
15686 h = g
15687 hl = gl
15688 g = f
15689 gl = fl
15690 f = e
15691 fl = el
15692 el = (dl + t1l) | 0
15693 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15694 d = c
15695 dl = cl
15696 c = b
15697 cl = bl
15698 b = a
15699 bl = al
15700 al = (t1l + t2l) | 0
15701 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15702
15703 i++
15704 j += 2
15705 }
15706
15707 while (i < 16) {
15708 Wi = M.readInt32BE(j * 4)
15709 Wil = M.readInt32BE(j * 4 + 4)
15710
15711 loop()
15712 }
15713
15714 while (i < 80) {
15715 calcW()
15716 loop()
15717 }
15718
15719 this._al = (this._al + al) | 0
15720 this._bl = (this._bl + bl) | 0
15721 this._cl = (this._cl + cl) | 0
15722 this._dl = (this._dl + dl) | 0
15723 this._el = (this._el + el) | 0
15724 this._fl = (this._fl + fl) | 0
15725 this._gl = (this._gl + gl) | 0
15726 this._hl = (this._hl + hl) | 0
15727
15728 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15729 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15730 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15731 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15732 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15733 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15734 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15735 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15736 }
15737
15738 Sha512.prototype._hash = function () {
15739 var H = new Buffer(64)
15740
15741 function writeInt64BE (h, l, offset) {
15742 H.writeInt32BE(h, offset)
15743 H.writeInt32BE(l, offset + 4)
15744 }
15745
15746 writeInt64BE(this._a, this._al, 0)
15747 writeInt64BE(this._b, this._bl, 8)
15748 writeInt64BE(this._c, this._cl, 16)
15749 writeInt64BE(this._d, this._dl, 24)
15750 writeInt64BE(this._e, this._el, 32)
15751 writeInt64BE(this._f, this._fl, 40)
15752 writeInt64BE(this._g, this._gl, 48)
15753 writeInt64BE(this._h, this._hl, 56)
15754
15755 return H
15756 }
15757
15758 module.exports = Sha512
15759
15760 }).call(this,require("buffer").Buffer)
15761 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15762 (function (Buffer){
15763 'use strict';
15764 var createHash = require('create-hash/browser');
15765 var inherits = require('inherits')
15766
15767 var Transform = require('stream').Transform
15768
15769 var ZEROS = new Buffer(128)
15770 ZEROS.fill(0)
15771
15772 function Hmac(alg, key) {
15773 Transform.call(this)
15774
15775 if (typeof key === 'string') {
15776 key = new Buffer(key)
15777 }
15778
15779 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15780
15781 this._alg = alg
15782 this._key = key
15783
15784 if (key.length > blocksize) {
15785 key = createHash(alg).update(key).digest()
15786
15787 } else if (key.length < blocksize) {
15788 key = Buffer.concat([key, ZEROS], blocksize)
15789 }
15790
15791 var ipad = this._ipad = new Buffer(blocksize)
15792 var opad = this._opad = new Buffer(blocksize)
15793
15794 for (var i = 0; i < blocksize; i++) {
15795 ipad[i] = key[i] ^ 0x36
15796 opad[i] = key[i] ^ 0x5C
15797 }
15798
15799 this._hash = createHash(alg).update(ipad)
15800 }
15801
15802 inherits(Hmac, Transform)
15803
15804 Hmac.prototype.update = function (data, enc) {
15805 this._hash.update(data, enc)
15806
15807 return this
15808 }
15809
15810 Hmac.prototype._transform = function (data, _, next) {
15811 this._hash.update(data)
15812
15813 next()
15814 }
15815
15816 Hmac.prototype._flush = function (next) {
15817 this.push(this.digest())
15818
15819 next()
15820 }
15821
15822 Hmac.prototype.digest = function (enc) {
15823 var h = this._hash.digest()
15824
15825 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15826 }
15827
15828 module.exports = function createHmac(alg, key) {
15829 return new Hmac(alg, key)
15830 }
15831
15832 }).call(this,require("buffer").Buffer)
15833 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15834 arguments[4][12][0].apply(exports,arguments)
15835 },{"dup":12}],47:[function(require,module,exports){
15836 var assert = require('assert')
15837 var BigInteger = require('bigi')
15838
15839 var Point = require('./point')
15840
15841 function Curve(p, a, b, Gx, Gy, n, h) {
15842 this.p = p
15843 this.a = a
15844 this.b = b
15845 this.G = Point.fromAffine(this, Gx, Gy)
15846 this.n = n
15847 this.h = h
15848
15849 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15850
15851 // result caching
15852 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15853 }
15854
15855 Curve.prototype.pointFromX = function(isOdd, x) {
15856 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15857 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15858
15859 var y = beta
15860 if (beta.isEven() ^ !isOdd) {
15861 y = this.p.subtract(y) // -y % p
15862 }
15863
15864 return Point.fromAffine(this, x, y)
15865 }
15866
15867 Curve.prototype.isInfinity = function(Q) {
15868 if (Q === this.infinity) return true
15869
15870 return Q.z.signum() === 0 && Q.y.signum() !== 0
15871 }
15872
15873 Curve.prototype.isOnCurve = function(Q) {
15874 if (this.isInfinity(Q)) return true
15875
15876 var x = Q.affineX
15877 var y = Q.affineY
15878 var a = this.a
15879 var b = this.b
15880 var p = this.p
15881
15882 // Check that xQ and yQ are integers in the interval [0, p - 1]
15883 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15884 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15885
15886 // and check that y^2 = x^3 + ax + b (mod p)
15887 var lhs = y.square().mod(p)
15888 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15889 return lhs.equals(rhs)
15890 }
15891
15892 /**
15893 * Validate an elliptic curve point.
15894 *
15895 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15896 */
15897 Curve.prototype.validate = function(Q) {
15898 // Check Q != O
15899 assert(!this.isInfinity(Q), 'Point is at infinity')
15900 assert(this.isOnCurve(Q), 'Point is not on the curve')
15901
15902 // Check nQ = O (where Q is a scalar multiple of G)
15903 var nQ = Q.multiply(this.n)
15904 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15905
15906 return true
15907 }
15908
15909 module.exports = Curve
15910
15911 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15912 module.exports={
15913 "secp128r1": {
15914 "p": "fffffffdffffffffffffffffffffffff",
15915 "a": "fffffffdfffffffffffffffffffffffc",
15916 "b": "e87579c11079f43dd824993c2cee5ed3",
15917 "n": "fffffffe0000000075a30d1b9038a115",
15918 "h": "01",
15919 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15920 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15921 },
15922 "secp160k1": {
15923 "p": "fffffffffffffffffffffffffffffffeffffac73",
15924 "a": "00",
15925 "b": "07",
15926 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15927 "h": "01",
15928 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15929 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15930 },
15931 "secp160r1": {
15932 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15933 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15934 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15935 "n": "0100000000000000000001f4c8f927aed3ca752257",
15936 "h": "01",
15937 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15938 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15939 },
15940 "secp192k1": {
15941 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15942 "a": "00",
15943 "b": "03",
15944 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15945 "h": "01",
15946 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15947 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15948 },
15949 "secp192r1": {
15950 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15951 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15952 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15953 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15954 "h": "01",
15955 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15956 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15957 },
15958 "secp256k1": {
15959 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15960 "a": "00",
15961 "b": "07",
15962 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15963 "h": "01",
15964 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15965 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15966 },
15967 "secp256r1": {
15968 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15969 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15970 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15971 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15972 "h": "01",
15973 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15974 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15975 }
15976 }
15977
15978 },{}],49:[function(require,module,exports){
15979 var Point = require('./point')
15980 var Curve = require('./curve')
15981
15982 var getCurveByName = require('./names')
15983
15984 module.exports = {
15985 Curve: Curve,
15986 Point: Point,
15987 getCurveByName: getCurveByName
15988 }
15989
15990 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15991 var BigInteger = require('bigi')
15992
15993 var curves = require('./curves')
15994 var Curve = require('./curve')
15995
15996 function getCurveByName(name) {
15997 var curve = curves[name]
15998 if (!curve) return null
15999
16000 var p = new BigInteger(curve.p, 16)
16001 var a = new BigInteger(curve.a, 16)
16002 var b = new BigInteger(curve.b, 16)
16003 var n = new BigInteger(curve.n, 16)
16004 var h = new BigInteger(curve.h, 16)
16005 var Gx = new BigInteger(curve.Gx, 16)
16006 var Gy = new BigInteger(curve.Gy, 16)
16007
16008 return new Curve(p, a, b, Gx, Gy, n, h)
16009 }
16010
16011 module.exports = getCurveByName
16012
16013 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16014 (function (Buffer){
16015 var assert = require('assert')
16016 var BigInteger = require('bigi')
16017
16018 var THREE = BigInteger.valueOf(3)
16019
16020 function Point(curve, x, y, z) {
16021 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16022
16023 this.curve = curve
16024 this.x = x
16025 this.y = y
16026 this.z = z
16027 this._zInv = null
16028
16029 this.compressed = true
16030 }
16031
16032 Object.defineProperty(Point.prototype, 'zInv', {
16033 get: function() {
16034 if (this._zInv === null) {
16035 this._zInv = this.z.modInverse(this.curve.p)
16036 }
16037
16038 return this._zInv
16039 }
16040 })
16041
16042 Object.defineProperty(Point.prototype, 'affineX', {
16043 get: function() {
16044 return this.x.multiply(this.zInv).mod(this.curve.p)
16045 }
16046 })
16047
16048 Object.defineProperty(Point.prototype, 'affineY', {
16049 get: function() {
16050 return this.y.multiply(this.zInv).mod(this.curve.p)
16051 }
16052 })
16053
16054 Point.fromAffine = function(curve, x, y) {
16055 return new Point(curve, x, y, BigInteger.ONE)
16056 }
16057
16058 Point.prototype.equals = function(other) {
16059 if (other === this) return true
16060 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16061 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16062
16063 // u = Y2 * Z1 - Y1 * Z2
16064 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16065
16066 if (u.signum() !== 0) return false
16067
16068 // v = X2 * Z1 - X1 * Z2
16069 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16070
16071 return v.signum() === 0
16072 }
16073
16074 Point.prototype.negate = function() {
16075 var y = this.curve.p.subtract(this.y)
16076
16077 return new Point(this.curve, this.x, y, this.z)
16078 }
16079
16080 Point.prototype.add = function(b) {
16081 if (this.curve.isInfinity(this)) return b
16082 if (this.curve.isInfinity(b)) return this
16083
16084 var x1 = this.x
16085 var y1 = this.y
16086 var x2 = b.x
16087 var y2 = b.y
16088
16089 // u = Y2 * Z1 - Y1 * Z2
16090 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16091 // v = X2 * Z1 - X1 * Z2
16092 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16093
16094 if (v.signum() === 0) {
16095 if (u.signum() === 0) {
16096 return this.twice() // this == b, so double
16097 }
16098
16099 return this.curve.infinity // this = -b, so infinity
16100 }
16101
16102 var v2 = v.square()
16103 var v3 = v2.multiply(v)
16104 var x1v2 = x1.multiply(v2)
16105 var zu2 = u.square().multiply(this.z)
16106
16107 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16108 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16109 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16110 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
16111 // z3 = v^3 * z1 * z2
16112 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16113
16114 return new Point(this.curve, x3, y3, z3)
16115 }
16116
16117 Point.prototype.twice = function() {
16118 if (this.curve.isInfinity(this)) return this
16119 if (this.y.signum() === 0) return this.curve.infinity
16120
16121 var x1 = this.x
16122 var y1 = this.y
16123
16124 var y1z1 = y1.multiply(this.z)
16125 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16126 var a = this.curve.a
16127
16128 // w = 3 * x1^2 + a * z1^2
16129 var w = x1.square().multiply(THREE)
16130
16131 if (a.signum() !== 0) {
16132 w = w.add(this.z.square().multiply(a))
16133 }
16134
16135 w = w.mod(this.curve.p)
16136 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16137 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16138 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16139 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16140 // z3 = 8 * (y1 * z1)^3
16141 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16142
16143 return new Point(this.curve, x3, y3, z3)
16144 }
16145
16146 // Simple NAF (Non-Adjacent Form) multiplication algorithm
16147 // TODO: modularize the multiplication algorithm
16148 Point.prototype.multiply = function(k) {
16149 if (this.curve.isInfinity(this)) return this
16150 if (k.signum() === 0) return this.curve.infinity
16151
16152 var e = k
16153 var h = e.multiply(THREE)
16154
16155 var neg = this.negate()
16156 var R = this
16157
16158 for (var i = h.bitLength() - 2; i > 0; --i) {
16159 R = R.twice()
16160
16161 var hBit = h.testBit(i)
16162 var eBit = e.testBit(i)
16163
16164 if (hBit != eBit) {
16165 R = R.add(hBit ? this : neg)
16166 }
16167 }
16168
16169 return R
16170 }
16171
16172 // Compute this*j + x*k (simultaneous multiplication)
16173 Point.prototype.multiplyTwo = function(j, x, k) {
16174 var i
16175
16176 if (j.bitLength() > k.bitLength())
16177 i = j.bitLength() - 1
16178 else
16179 i = k.bitLength() - 1
16180
16181 var R = this.curve.infinity
16182 var both = this.add(x)
16183
16184 while (i >= 0) {
16185 R = R.twice()
16186
16187 var jBit = j.testBit(i)
16188 var kBit = k.testBit(i)
16189
16190 if (jBit) {
16191 if (kBit) {
16192 R = R.add(both)
16193
16194 } else {
16195 R = R.add(this)
16196 }
16197
16198 } else {
16199 if (kBit) {
16200 R = R.add(x)
16201 }
16202 }
16203 --i
16204 }
16205
16206 return R
16207 }
16208
16209 Point.prototype.getEncoded = function(compressed) {
16210 if (compressed == undefined) compressed = this.compressed
16211 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16212
16213 var x = this.affineX
16214 var y = this.affineY
16215
16216 var buffer
16217
16218 // Determine size of q in bytes
16219 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16220
16221 // 0x02/0x03 | X
16222 if (compressed) {
16223 buffer = new Buffer(1 + byteLength)
16224 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16225
16226 // 0x04 | X | Y
16227 } else {
16228 buffer = new Buffer(1 + byteLength + byteLength)
16229 buffer.writeUInt8(0x04, 0)
16230
16231 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16232 }
16233
16234 x.toBuffer(byteLength).copy(buffer, 1)
16235
16236 return buffer
16237 }
16238
16239 Point.decodeFrom = function(curve, buffer) {
16240 var type = buffer.readUInt8(0)
16241 var compressed = (type !== 4)
16242
16243 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16244 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16245
16246 var Q
16247 if (compressed) {
16248 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16249 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16250
16251 var isOdd = (type === 0x03)
16252 Q = curve.pointFromX(isOdd, x)
16253
16254 } else {
16255 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16256
16257 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16258 Q = Point.fromAffine(curve, x, y)
16259 }
16260
16261 Q.compressed = compressed
16262 return Q
16263 }
16264
16265 Point.prototype.toString = function () {
16266 if (this.curve.isInfinity(this)) return '(INFINITY)'
16267
16268 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16269 }
16270
16271 module.exports = Point
16272
16273 }).call(this,require("buffer").Buffer)
16274 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16275 (function (process,global,Buffer){
16276 'use strict';
16277
16278 var crypto = global.crypto || global.msCrypto
16279 if(crypto && crypto.getRandomValues) {
16280 module.exports = randomBytes;
16281 } else {
16282 module.exports = oldBrowser;
16283 }
16284 function randomBytes(size, cb) {
16285 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16286 /* This will not work in older browsers.
16287 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16288 */
16289
16290 crypto.getRandomValues(bytes);
16291 if (typeof cb === 'function') {
16292 return process.nextTick(function () {
16293 cb(null, bytes);
16294 });
16295 }
16296 return bytes;
16297 }
16298 function oldBrowser() {
16299 throw new Error(
16300 'secure random number generation not supported by this browser\n'+
16301 'use chrome, FireFox or Internet Explorer 11'
16302 )
16303 }
16304
16305 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16306 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
16307 (function (Buffer){
16308 'use strict';
16309
16310 function getFunctionName(fn) {
16311 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16312 }
16313
16314 function getTypeTypeName(type) {
16315 if (nativeTypes.Function(type)) {
16316 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16317 }
16318 if (nativeTypes.Object(type)) return JSON.stringify(type);
16319
16320 return type;
16321 }
16322
16323 function getValueTypeName(value) {
16324 if (nativeTypes.Null(value)) return '';
16325
16326 return getFunctionName(value.constructor);
16327 }
16328
16329 function tfErrorString(type, value) {
16330 var typeTypeName = getTypeTypeName(type);
16331 var valueTypeName = getValueTypeName(value);
16332
16333 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16334 }
16335
16336 function tfPropertyErrorString(type, name, value) {
16337 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16338 }
16339
16340 var nativeTypes = {
16341 Array: (function (_Array) {
16342 function Array(_x) {
16343 return _Array.apply(this, arguments);
16344 }
16345
16346 Array.toString = function () {
16347 return _Array.toString();
16348 };
16349
16350 return Array;
16351 })(function (value) {
16352 return value !== null && value !== undefined && value.constructor === Array;
16353 }),
16354 Boolean: function Boolean(value) {
16355 return typeof value === 'boolean';
16356 },
16357 Buffer: (function (_Buffer) {
16358 function Buffer(_x2) {
16359 return _Buffer.apply(this, arguments);
16360 }
16361
16362 Buffer.toString = function () {
16363 return _Buffer.toString();
16364 };
16365
16366 return Buffer;
16367 })(function (value) {
16368 return Buffer.isBuffer(value);
16369 }),
16370 Function: function Function(value) {
16371 return typeof value === 'function';
16372 },
16373 Null: function Null(value) {
16374 return value === undefined || value === null;
16375 },
16376 Number: function Number(value) {
16377 return typeof value === 'number';
16378 },
16379 Object: function Object(value) {
16380 return typeof value === 'object';
16381 },
16382 String: function String(value) {
16383 return typeof value === 'string';
16384 },
16385 '': function _() {
16386 return true;
16387 }
16388 };
16389
16390 function tJSON(type) {
16391 return type && type.toJSON ? type.toJSON() : type;
16392 }
16393
16394 function sJSON(type) {
16395 var json = tJSON(type);
16396 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16397 }
16398
16399 var otherTypes = {
16400 arrayOf: function arrayOf(type) {
16401 function arrayOf(value, strict) {
16402 try {
16403 return nativeTypes.Array(value) && value.every(function (x) {
16404 return typeforce(type, x, strict);
16405 });
16406 } catch (e) {
16407 return false;
16408 }
16409 }
16410 arrayOf.toJSON = function () {
16411 return [tJSON(type)];
16412 };
16413
16414 return arrayOf;
16415 },
16416
16417 maybe: function maybe(type) {
16418 function maybe(value, strict) {
16419 return nativeTypes.Null(value) || typeforce(type, value, strict);
16420 }
16421 maybe.toJSON = function () {
16422 return '?' + sJSON(type);
16423 };
16424
16425 return maybe;
16426 },
16427
16428 object: function object(type) {
16429 function object(value, strict) {
16430 typeforce(nativeTypes.Object, value, strict);
16431
16432 var propertyName, propertyType, propertyValue;
16433
16434 try {
16435 for (propertyName in type) {
16436 propertyType = type[propertyName];
16437 propertyValue = value[propertyName];
16438
16439 typeforce(propertyType, propertyValue, strict);
16440 }
16441 } catch (e) {
16442 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16443 }
16444
16445 if (strict) {
16446 for (propertyName in value) {
16447 if (type[propertyName]) continue;
16448
16449 throw new TypeError('Unexpected property "' + propertyName + '"');
16450 }
16451 }
16452
16453 return true;
16454 }
16455 object.toJSON = function () {
16456 return type;
16457 };
16458
16459 return object;
16460 },
16461
16462 oneOf: function oneOf() {
16463 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16464 types[_key] = arguments[_key];
16465 }
16466
16467 function oneOf(value, strict) {
16468 return types.some(function (type) {
16469 try {
16470 return typeforce(type, value, strict);
16471 } catch (e) {
16472 return false;
16473 }
16474 });
16475 }
16476 oneOf.toJSON = function () {
16477 return types.map(sJSON).join('|');
16478 };
16479
16480 return oneOf;
16481 },
16482
16483 quacksLike: function quacksLike(type) {
16484 function quacksLike(value, strict) {
16485 return type === getValueTypeName(value);
16486 }
16487 quacksLike.toJSON = function () {
16488 return type;
16489 };
16490
16491 return quacksLike;
16492 },
16493
16494 tuple: function tuple() {
16495 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16496 types[_key2] = arguments[_key2];
16497 }
16498
16499 function tuple(value, strict) {
16500 return types.every(function (type, i) {
16501 return typeforce(type, value[i], strict);
16502 });
16503 }
16504 tuple.toJSON = function () {
16505 return '(' + types.map(sJSON).join(', ') + ')';
16506 };
16507
16508 return tuple;
16509 },
16510
16511 value: function value(expected) {
16512 function value(actual) {
16513 return actual === expected;
16514 }
16515 value.toJSON = function () {
16516 return expected;
16517 };
16518
16519 return value;
16520 }
16521 };
16522
16523 function compile(type) {
16524 if (nativeTypes.String(type)) {
16525 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16526
16527 return nativeTypes[type] || otherTypes.quacksLike(type);
16528 } else if (type && nativeTypes.Object(type)) {
16529 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16530
16531 var compiled = {};
16532
16533 for (var propertyName in type) {
16534 compiled[propertyName] = compile(type[propertyName]);
16535 }
16536
16537 return otherTypes.object(compiled);
16538 } else if (nativeTypes.Function(type)) {
16539 return type;
16540 }
16541
16542 return otherTypes.value(type);
16543 }
16544
16545 function typeforce(_x3, _x4, _x5) {
16546 var _again = true;
16547
16548 _function: while (_again) {
16549 var type = _x3,
16550 value = _x4,
16551 strict = _x5;
16552 _again = false;
16553
16554 if (nativeTypes.Function(type)) {
16555 if (type(value, strict)) return true;
16556
16557 throw new TypeError(tfErrorString(type, value));
16558 }
16559
16560 // JIT
16561 _x3 = compile(type);
16562 _x4 = value;
16563 _x5 = strict;
16564 _again = true;
16565 continue _function;
16566 }
16567 }
16568
16569 // assign all types to typeforce function
16570 var typeName;
16571 Object.keys(nativeTypes).forEach(function (typeName) {
16572 var nativeType = nativeTypes[typeName];
16573 nativeType.toJSON = function () {
16574 return typeName;
16575 };
16576
16577 typeforce[typeName] = nativeType;
16578 });
16579
16580 for (typeName in otherTypes) {
16581 typeforce[typeName] = otherTypes[typeName];
16582 }
16583
16584 module.exports = typeforce;
16585 module.exports.compile = compile;
16586 }).call(this,require("buffer").Buffer)
16587 },{"buffer":7}],54:[function(require,module,exports){
16588 (function (Buffer){
16589 var assert = require('assert')
16590 var base58check = require('bs58check')
16591 var typeForce = require('typeforce')
16592 var networks = require('./networks')
16593 var scripts = require('./scripts')
16594
16595 function findScriptTypeByVersion (version) {
16596 for (var networkName in networks) {
16597 var network = networks[networkName]
16598
16599 if (version === network.pubKeyHash) return 'pubkeyhash'
16600 if (version === network.scriptHash) return 'scripthash'
16601 }
16602 }
16603
16604 function Address (hash, version) {
16605 typeForce('Buffer', hash)
16606
16607 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16608 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16609
16610 this.hash = hash
16611 this.version = version
16612 }
16613
16614 Address.fromBase58Check = function (string) {
16615 var payload = base58check.decode(string)
16616 var version = payload.readUInt8(0)
16617 var hash = payload.slice(1)
16618
16619 return new Address(hash, version)
16620 }
16621
16622 Address.fromOutputScript = function (script, network) {
16623 network = network || networks.bitcoin
16624
16625 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16626 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16627
16628 assert(false, script.toASM() + ' has no matching Address')
16629 }
16630
16631 Address.prototype.toBase58Check = function () {
16632 var payload = new Buffer(21)
16633 payload.writeUInt8(this.version, 0)
16634 this.hash.copy(payload, 1)
16635
16636 return base58check.encode(payload)
16637 }
16638
16639 Address.prototype.toOutputScript = function () {
16640 var scriptType = findScriptTypeByVersion(this.version)
16641
16642 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16643 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16644
16645 assert(false, this.toString() + ' has no matching Script')
16646 }
16647
16648 Address.prototype.toString = Address.prototype.toBase58Check
16649
16650 module.exports = Address
16651
16652 }).call(this,require("buffer").Buffer)
16653 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16654 var bs58check = require('bs58check')
16655
16656 function decode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.decode.apply(undefined, arguments)
16660 }
16661
16662 function encode () {
16663 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16664
16665 return bs58check.encode.apply(undefined, arguments)
16666 }
16667
16668 module.exports = {
16669 decode: decode,
16670 encode: encode
16671 }
16672
16673 },{"bs58check":31}],56:[function(require,module,exports){
16674 (function (Buffer){
16675 var assert = require('assert')
16676 var bufferutils = require('./bufferutils')
16677 var crypto = require('./crypto')
16678
16679 var Transaction = require('./transaction')
16680
16681 function Block () {
16682 this.version = 1
16683 this.prevHash = null
16684 this.merkleRoot = null
16685 this.timestamp = 0
16686 this.bits = 0
16687 this.nonce = 0
16688 }
16689
16690 Block.fromBuffer = function (buffer) {
16691 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16692
16693 var offset = 0
16694 function readSlice (n) {
16695 offset += n
16696 return buffer.slice(offset - n, offset)
16697 }
16698
16699 function readUInt32 () {
16700 var i = buffer.readUInt32LE(offset)
16701 offset += 4
16702 return i
16703 }
16704
16705 var block = new Block()
16706 block.version = readUInt32()
16707 block.prevHash = readSlice(32)
16708 block.merkleRoot = readSlice(32)
16709 block.timestamp = readUInt32()
16710 block.bits = readUInt32()
16711 block.nonce = readUInt32()
16712
16713 if (buffer.length === 80) return block
16714
16715 function readVarInt () {
16716 var vi = bufferutils.readVarInt(buffer, offset)
16717 offset += vi.size
16718 return vi.number
16719 }
16720
16721 // FIXME: poor performance
16722 function readTransaction () {
16723 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16724
16725 offset += tx.toBuffer().length
16726 return tx
16727 }
16728
16729 var nTransactions = readVarInt()
16730 block.transactions = []
16731
16732 for (var i = 0; i < nTransactions; ++i) {
16733 var tx = readTransaction()
16734 block.transactions.push(tx)
16735 }
16736
16737 return block
16738 }
16739
16740 Block.fromHex = function (hex) {
16741 return Block.fromBuffer(new Buffer(hex, 'hex'))
16742 }
16743
16744 Block.prototype.getHash = function () {
16745 return crypto.hash256(this.toBuffer(true))
16746 }
16747
16748 Block.prototype.getId = function () {
16749 return bufferutils.reverse(this.getHash()).toString('hex')
16750 }
16751
16752 Block.prototype.getUTCDate = function () {
16753 var date = new Date(0) // epoch
16754 date.setUTCSeconds(this.timestamp)
16755
16756 return date
16757 }
16758
16759 Block.prototype.toBuffer = function (headersOnly) {
16760 var buffer = new Buffer(80)
16761
16762 var offset = 0
16763 function writeSlice (slice) {
16764 slice.copy(buffer, offset)
16765 offset += slice.length
16766 }
16767
16768 function writeUInt32 (i) {
16769 buffer.writeUInt32LE(i, offset)
16770 offset += 4
16771 }
16772
16773 writeUInt32(this.version)
16774 writeSlice(this.prevHash)
16775 writeSlice(this.merkleRoot)
16776 writeUInt32(this.timestamp)
16777 writeUInt32(this.bits)
16778 writeUInt32(this.nonce)
16779
16780 if (headersOnly || !this.transactions) return buffer
16781
16782 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16783 var txBuffers = this.transactions.map(function (tx) {
16784 return tx.toBuffer()
16785 })
16786
16787 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16788 }
16789
16790 Block.prototype.toHex = function (headersOnly) {
16791 return this.toBuffer(headersOnly).toString('hex')
16792 }
16793
16794 module.exports = Block
16795
16796 }).call(this,require("buffer").Buffer)
16797 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16798 (function (Buffer){
16799 var assert = require('assert')
16800 var opcodes = require('./opcodes')
16801
16802 // https://github.com/feross/buffer/blob/master/index.js#L1127
16803 function verifuint (value, max) {
16804 assert(typeof value === 'number', 'cannot write a non-number as a number')
16805 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16806 assert(value <= max, 'value is larger than maximum value for type')
16807 assert(Math.floor(value) === value, 'value has a fractional component')
16808 }
16809
16810 function pushDataSize (i) {
16811 return i < opcodes.OP_PUSHDATA1 ? 1
16812 : i < 0xff ? 2
16813 : i < 0xffff ? 3
16814 : 5
16815 }
16816
16817 function readPushDataInt (buffer, offset) {
16818 var opcode = buffer.readUInt8(offset)
16819 var number, size
16820
16821 // ~6 bit
16822 if (opcode < opcodes.OP_PUSHDATA1) {
16823 number = opcode
16824 size = 1
16825
16826 // 8 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA1) {
16828 if (offset + 2 > buffer.length) return null
16829 number = buffer.readUInt8(offset + 1)
16830 size = 2
16831
16832 // 16 bit
16833 } else if (opcode === opcodes.OP_PUSHDATA2) {
16834 if (offset + 3 > buffer.length) return null
16835 number = buffer.readUInt16LE(offset + 1)
16836 size = 3
16837
16838 // 32 bit
16839 } else {
16840 if (offset + 5 > buffer.length) return null
16841 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16842
16843 number = buffer.readUInt32LE(offset + 1)
16844 size = 5
16845 }
16846
16847 return {
16848 opcode: opcode,
16849 number: number,
16850 size: size
16851 }
16852 }
16853
16854 function readUInt64LE (buffer, offset) {
16855 var a = buffer.readUInt32LE(offset)
16856 var b = buffer.readUInt32LE(offset + 4)
16857 b *= 0x100000000
16858
16859 verifuint(b + a, 0x001fffffffffffff)
16860
16861 return b + a
16862 }
16863
16864 function readVarInt (buffer, offset) {
16865 var t = buffer.readUInt8(offset)
16866 var number, size
16867
16868 // 8 bit
16869 if (t < 253) {
16870 number = t
16871 size = 1
16872
16873 // 16 bit
16874 } else if (t < 254) {
16875 number = buffer.readUInt16LE(offset + 1)
16876 size = 3
16877
16878 // 32 bit
16879 } else if (t < 255) {
16880 number = buffer.readUInt32LE(offset + 1)
16881 size = 5
16882
16883 // 64 bit
16884 } else {
16885 number = readUInt64LE(buffer, offset + 1)
16886 size = 9
16887 }
16888
16889 return {
16890 number: number,
16891 size: size
16892 }
16893 }
16894
16895 function writePushDataInt (buffer, number, offset) {
16896 var size = pushDataSize(number)
16897
16898 // ~6 bit
16899 if (size === 1) {
16900 buffer.writeUInt8(number, offset)
16901
16902 // 8 bit
16903 } else if (size === 2) {
16904 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16905 buffer.writeUInt8(number, offset + 1)
16906
16907 // 16 bit
16908 } else if (size === 3) {
16909 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16910 buffer.writeUInt16LE(number, offset + 1)
16911
16912 // 32 bit
16913 } else {
16914 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16915 buffer.writeUInt32LE(number, offset + 1)
16916 }
16917
16918 return size
16919 }
16920
16921 function writeUInt64LE (buffer, value, offset) {
16922 verifuint(value, 0x001fffffffffffff)
16923
16924 buffer.writeInt32LE(value & -1, offset)
16925 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16926 }
16927
16928 function varIntSize (i) {
16929 return i < 253 ? 1
16930 : i < 0x10000 ? 3
16931 : i < 0x100000000 ? 5
16932 : 9
16933 }
16934
16935 function writeVarInt (buffer, number, offset) {
16936 var size = varIntSize(number)
16937
16938 // 8 bit
16939 if (size === 1) {
16940 buffer.writeUInt8(number, offset)
16941
16942 // 16 bit
16943 } else if (size === 3) {
16944 buffer.writeUInt8(253, offset)
16945 buffer.writeUInt16LE(number, offset + 1)
16946
16947 // 32 bit
16948 } else if (size === 5) {
16949 buffer.writeUInt8(254, offset)
16950 buffer.writeUInt32LE(number, offset + 1)
16951
16952 // 64 bit
16953 } else {
16954 buffer.writeUInt8(255, offset)
16955 writeUInt64LE(buffer, number, offset + 1)
16956 }
16957
16958 return size
16959 }
16960
16961 function varIntBuffer (i) {
16962 var size = varIntSize(i)
16963 var buffer = new Buffer(size)
16964 writeVarInt(buffer, i, 0)
16965
16966 return buffer
16967 }
16968
16969 function reverse (buffer) {
16970 var buffer2 = new Buffer(buffer)
16971 Array.prototype.reverse.call(buffer2)
16972 return buffer2
16973 }
16974
16975 module.exports = {
16976 pushDataSize: pushDataSize,
16977 readPushDataInt: readPushDataInt,
16978 readUInt64LE: readUInt64LE,
16979 readVarInt: readVarInt,
16980 reverse: reverse,
16981 varIntBuffer: varIntBuffer,
16982 varIntSize: varIntSize,
16983 writePushDataInt: writePushDataInt,
16984 writeUInt64LE: writeUInt64LE,
16985 writeVarInt: writeVarInt
16986 }
16987
16988 }).call(this,require("buffer").Buffer)
16989 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16990 var createHash = require('create-hash')
16991
16992 function hash160 (buffer) {
16993 return ripemd160(sha256(buffer))
16994 }
16995
16996 function hash256 (buffer) {
16997 return sha256(sha256(buffer))
16998 }
16999
17000 function ripemd160 (buffer) {
17001 return createHash('rmd160').update(buffer).digest()
17002 }
17003
17004 function sha1 (buffer) {
17005 return createHash('sha1').update(buffer).digest()
17006 }
17007
17008 function sha256 (buffer) {
17009 return createHash('sha256').update(buffer).digest()
17010 }
17011
17012 // FIXME: Name not consistent with others
17013 var createHmac = require('create-hmac')
17014
17015 function HmacSHA256 (buffer, secret) {
17016 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17017 return createHmac('sha256', secret).update(buffer).digest()
17018 }
17019
17020 function HmacSHA512 (buffer, secret) {
17021 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17022 return createHmac('sha512', secret).update(buffer).digest()
17023 }
17024
17025 module.exports = {
17026 ripemd160: ripemd160,
17027 sha1: sha1,
17028 sha256: sha256,
17029 hash160: hash160,
17030 hash256: hash256,
17031 HmacSHA256: HmacSHA256,
17032 HmacSHA512: HmacSHA512
17033 }
17034
17035 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17036 (function (Buffer){
17037 var assert = require('assert')
17038 var createHmac = require('create-hmac')
17039 var typeForce = require('typeforce')
17040
17041 var BigInteger = require('bigi')
17042 var ECSignature = require('./ecsignature')
17043
17044 var ZERO = new Buffer([0])
17045 var ONE = new Buffer([1])
17046
17047 // https://tools.ietf.org/html/rfc6979#section-3.2
17048 function deterministicGenerateK (curve, hash, d, checkSig) {
17049 typeForce('Buffer', hash)
17050 typeForce('BigInteger', d)
17051
17052 // FIXME: remove/uncomment for 2.0.0
17053 // typeForce('Function', checkSig)
17054
17055 if (typeof checkSig !== 'function') {
17056 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17057
17058 checkSig = function (k) {
17059 var G = curve.G
17060 var n = curve.n
17061 var e = BigInteger.fromBuffer(hash)
17062
17063 var Q = G.multiply(k)
17064
17065 if (curve.isInfinity(Q))
17066 return false
17067
17068 var r = Q.affineX.mod(n)
17069 if (r.signum() === 0)
17070 return false
17071
17072 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17073 if (s.signum() === 0)
17074 return false
17075
17076 return true
17077 }
17078 }
17079
17080 // sanity check
17081 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17082
17083 var x = d.toBuffer(32)
17084 var k = new Buffer(32)
17085 var v = new Buffer(32)
17086
17087 // Step A, ignored as hash already provided
17088 // Step B
17089 v.fill(1)
17090
17091 // Step C
17092 k.fill(0)
17093
17094 // Step D
17095 k = createHmac('sha256', k)
17096 .update(v)
17097 .update(ZERO)
17098 .update(x)
17099 .update(hash)
17100 .digest()
17101
17102 // Step E
17103 v = createHmac('sha256', k).update(v).digest()
17104
17105 // Step F
17106 k = createHmac('sha256', k)
17107 .update(v)
17108 .update(ONE)
17109 .update(x)
17110 .update(hash)
17111 .digest()
17112
17113 // Step G
17114 v = createHmac('sha256', k).update(v).digest()
17115
17116 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17117 // Step H2b
17118 v = createHmac('sha256', k).update(v).digest()
17119
17120 var T = BigInteger.fromBuffer(v)
17121
17122 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17123 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17124 k = createHmac('sha256', k)
17125 .update(v)
17126 .update(ZERO)
17127 .digest()
17128
17129 v = createHmac('sha256', k).update(v).digest()
17130
17131 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17132 // Step H2b again
17133 v = createHmac('sha256', k).update(v).digest()
17134 T = BigInteger.fromBuffer(v)
17135 }
17136
17137 return T
17138 }
17139
17140 function sign (curve, hash, d) {
17141 var r, s
17142
17143 var e = BigInteger.fromBuffer(hash)
17144 var n = curve.n
17145 var G = curve.G
17146
17147 deterministicGenerateK(curve, hash, d, function (k) {
17148 var Q = G.multiply(k)
17149
17150 if (curve.isInfinity(Q))
17151 return false
17152
17153 r = Q.affineX.mod(n)
17154 if (r.signum() === 0)
17155 return false
17156
17157 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17158 if (s.signum() === 0)
17159 return false
17160
17161 return true
17162 })
17163
17164 var N_OVER_TWO = n.shiftRight(1)
17165
17166 // enforce low S values, see bip62: 'low s values in signatures'
17167 if (s.compareTo(N_OVER_TWO) > 0) {
17168 s = n.subtract(s)
17169 }
17170
17171 return new ECSignature(r, s)
17172 }
17173
17174 function verifyRaw (curve, e, signature, Q) {
17175 var n = curve.n
17176 var G = curve.G
17177
17178 var r = signature.r
17179 var s = signature.s
17180
17181 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17182 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17183 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17184
17185 // c = s^-1 mod n
17186 var c = s.modInverse(n)
17187
17188 // 1.4.4 Compute u1 = es^−1 mod n
17189 // u2 = rs^−1 mod n
17190 var u1 = e.multiply(c).mod(n)
17191 var u2 = r.multiply(c).mod(n)
17192
17193 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17194 var R = G.multiplyTwo(u1, Q, u2)
17195 var v = R.affineX.mod(n)
17196
17197 // 1.4.5 (cont.) Enforce R is not at infinity
17198 if (curve.isInfinity(R)) return false
17199
17200 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17201 return v.equals(r)
17202 }
17203
17204 function verify (curve, hash, signature, Q) {
17205 // 1.4.2 H = Hash(M), already done by the user
17206 // 1.4.3 e = H
17207 var e = BigInteger.fromBuffer(hash)
17208
17209 return verifyRaw(curve, e, signature, Q)
17210 }
17211
17212 /**
17213 * Recover a public key from a signature.
17214 *
17215 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17216 * Key Recovery Operation".
17217 *
17218 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17219 */
17220 function recoverPubKey (curve, e, signature, i) {
17221 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17222
17223 var n = curve.n
17224 var G = curve.G
17225
17226 var r = signature.r
17227 var s = signature.s
17228
17229 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17230 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17231
17232 // A set LSB signifies that the y-coordinate is odd
17233 var isYOdd = i & 1
17234
17235 // The more significant bit specifies whether we should use the
17236 // first or second candidate key.
17237 var isSecondKey = i >> 1
17238
17239 // 1.1 Let x = r + jn
17240 var x = isSecondKey ? r.add(n) : r
17241 var R = curve.pointFromX(isYOdd, x)
17242
17243 // 1.4 Check that nR is at infinity
17244 var nR = R.multiply(n)
17245 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17246
17247 // Compute -e from e
17248 var eNeg = e.negate().mod(n)
17249
17250 // 1.6.1 Compute Q = r^-1 (sR - eG)
17251 // Q = r^-1 (sR + -eG)
17252 var rInv = r.modInverse(n)
17253
17254 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17255 curve.validate(Q)
17256
17257 return Q
17258 }
17259
17260 /**
17261 * Calculate pubkey extraction parameter.
17262 *
17263 * When extracting a pubkey from a signature, we have to
17264 * distinguish four different cases. Rather than putting this
17265 * burden on the verifier, Bitcoin includes a 2-bit value with the
17266 * signature.
17267 *
17268 * This function simply tries all four cases and returns the value
17269 * that resulted in a successful pubkey recovery.
17270 */
17271 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17272 for (var i = 0; i < 4; i++) {
17273 var Qprime = recoverPubKey(curve, e, signature, i)
17274
17275 // 1.6.2 Verify Q
17276 if (Qprime.equals(Q)) {
17277 return i
17278 }
17279 }
17280
17281 throw new Error('Unable to find valid recovery factor')
17282 }
17283
17284 module.exports = {
17285 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17286 deterministicGenerateK: deterministicGenerateK,
17287 recoverPubKey: recoverPubKey,
17288 sign: sign,
17289 verify: verify,
17290 verifyRaw: verifyRaw
17291 }
17292
17293 }).call(this,require("buffer").Buffer)
17294 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17295 (function (Buffer){
17296 var assert = require('assert')
17297 var base58check = require('bs58check')
17298 var ecdsa = require('./ecdsa')
17299 var networks = require('./networks')
17300 var randomBytes = require('randombytes')
17301 var typeForce = require('typeforce')
17302
17303 var BigInteger = require('bigi')
17304 var ECPubKey = require('./ecpubkey')
17305
17306 var ecurve = require('ecurve')
17307 var secp256k1 = ecurve.getCurveByName('secp256k1')
17308
17309 function ECKey (d, compressed) {
17310 assert(d.signum() > 0, 'Private key must be greater than 0')
17311 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17312
17313 var Q = ECKey.curve.G.multiply(d)
17314
17315 this.d = d
17316 this.pub = new ECPubKey(Q, compressed)
17317 }
17318
17319 // Constants
17320 ECKey.curve = secp256k1
17321
17322 // Static constructors
17323 ECKey.fromWIF = function (string) {
17324 var payload = base58check.decode(string)
17325 var compressed = false
17326
17327 // Ignore the version byte
17328 payload = payload.slice(1)
17329
17330 if (payload.length === 33) {
17331 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17332
17333 // Truncate the compression flag
17334 payload = payload.slice(0, -1)
17335 compressed = true
17336 }
17337
17338 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17339
17340 var d = BigInteger.fromBuffer(payload)
17341 return new ECKey(d, compressed)
17342 }
17343
17344 ECKey.makeRandom = function (compressed, rng) {
17345 rng = rng || randomBytes
17346
17347 var buffer = rng(32)
17348 typeForce('Buffer', buffer)
17349 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17350
17351 var d = BigInteger.fromBuffer(buffer)
17352 d = d.mod(ECKey.curve.n)
17353
17354 return new ECKey(d, compressed)
17355 }
17356
17357 // Export functions
17358 ECKey.prototype.toWIF = function (network) {
17359 network = network || networks.bitcoin
17360
17361 var bufferLen = this.pub.compressed ? 34 : 33
17362 var buffer = new Buffer(bufferLen)
17363
17364 buffer.writeUInt8(network.wif, 0)
17365 this.d.toBuffer(32).copy(buffer, 1)
17366
17367 if (this.pub.compressed) {
17368 buffer.writeUInt8(0x01, 33)
17369 }
17370
17371 return base58check.encode(buffer)
17372 }
17373
17374 // Operations
17375 ECKey.prototype.sign = function (hash) {
17376 return ecdsa.sign(ECKey.curve, hash, this.d)
17377 }
17378
17379 module.exports = ECKey
17380
17381 }).call(this,require("buffer").Buffer)
17382 },{"./ecdsa":59,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"ecurve":49,"randombytes":52,"typeforce":53}],61:[function(require,module,exports){
17383 (function (Buffer){
17384 var crypto = require('./crypto')
17385 var ecdsa = require('./ecdsa')
17386 var typeForce = require('typeforce')
17387 var networks = require('./networks')
17388
17389 var Address = require('./address')
17390
17391 var ecurve = require('ecurve')
17392 var secp256k1 = ecurve.getCurveByName('secp256k1')
17393
17394 function ECPubKey (Q, compressed) {
17395 if (compressed === undefined) {
17396 compressed = true
17397 }
17398
17399 typeForce('Point', Q)
17400 typeForce('Boolean', compressed)
17401
17402 this.compressed = compressed
17403 this.Q = Q
17404 }
17405
17406 // Constants
17407 ECPubKey.curve = secp256k1
17408
17409 // Static constructors
17410 ECPubKey.fromBuffer = function (buffer) {
17411 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17412 return new ECPubKey(Q, Q.compressed)
17413 }
17414
17415 ECPubKey.fromHex = function (hex) {
17416 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17417 }
17418
17419 // Operations
17420 ECPubKey.prototype.getAddress = function (network) {
17421 network = network || networks.bitcoin
17422
17423 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17424 }
17425
17426 ECPubKey.prototype.verify = function (hash, signature) {
17427 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17428 }
17429
17430 // Export functions
17431 ECPubKey.prototype.toBuffer = function () {
17432 return this.Q.getEncoded(this.compressed)
17433 }
17434
17435 ECPubKey.prototype.toHex = function () {
17436 return this.toBuffer().toString('hex')
17437 }
17438
17439 module.exports = ECPubKey
17440
17441 }).call(this,require("buffer").Buffer)
17442 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17443 (function (Buffer){
17444 var assert = require('assert')
17445 var typeForce = require('typeforce')
17446
17447 var BigInteger = require('bigi')
17448
17449 function ECSignature (r, s) {
17450 typeForce('BigInteger', r)
17451 typeForce('BigInteger', s)
17452
17453 this.r = r
17454 this.s = s
17455 }
17456
17457 ECSignature.parseCompact = function (buffer) {
17458 assert.equal(buffer.length, 65, 'Invalid signature length')
17459 var i = buffer.readUInt8(0) - 27
17460
17461 // At most 3 bits
17462 assert.equal(i, i & 7, 'Invalid signature parameter')
17463 var compressed = !!(i & 4)
17464
17465 // Recovery param only
17466 i = i & 3
17467
17468 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17469 var s = BigInteger.fromBuffer(buffer.slice(33))
17470
17471 return {
17472 compressed: compressed,
17473 i: i,
17474 signature: new ECSignature(r, s)
17475 }
17476 }
17477
17478 ECSignature.fromDER = function (buffer) {
17479 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17480 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17481 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17482
17483 var rLen = buffer.readUInt8(3)
17484 assert(rLen > 0, 'R length is zero')
17485
17486 var offset = 4 + rLen
17487 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17488
17489 var sLen = buffer.readUInt8(offset + 1)
17490 assert(sLen > 0, 'S length is zero')
17491
17492 var rB = buffer.slice(4, offset)
17493 var sB = buffer.slice(offset + 2)
17494 offset += 2 + sLen
17495
17496 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17497 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17498 }
17499
17500 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17501 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17502 }
17503
17504 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17505 var r = BigInteger.fromDERInteger(rB)
17506 var s = BigInteger.fromDERInteger(sB)
17507
17508 assert(r.signum() >= 0, 'R value is negative')
17509 assert(s.signum() >= 0, 'S value is negative')
17510
17511 return new ECSignature(r, s)
17512 }
17513
17514 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17515 ECSignature.parseScriptSignature = function (buffer) {
17516 var hashType = buffer.readUInt8(buffer.length - 1)
17517 var hashTypeMod = hashType & ~0x80
17518
17519 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17520
17521 return {
17522 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17523 hashType: hashType
17524 }
17525 }
17526
17527 ECSignature.prototype.toCompact = function (i, compressed) {
17528 if (compressed) {
17529 i += 4
17530 }
17531
17532 i += 27
17533
17534 var buffer = new Buffer(65)
17535 buffer.writeUInt8(i, 0)
17536
17537 this.r.toBuffer(32).copy(buffer, 1)
17538 this.s.toBuffer(32).copy(buffer, 33)
17539
17540 return buffer
17541 }
17542
17543 ECSignature.prototype.toDER = function () {
17544 var rBa = this.r.toDERInteger()
17545 var sBa = this.s.toDERInteger()
17546
17547 var sequence = []
17548
17549 // INTEGER
17550 sequence.push(0x02, rBa.length)
17551 sequence = sequence.concat(rBa)
17552
17553 // INTEGER
17554 sequence.push(0x02, sBa.length)
17555 sequence = sequence.concat(sBa)
17556
17557 // SEQUENCE
17558 sequence.unshift(0x30, sequence.length)
17559
17560 return new Buffer(sequence)
17561 }
17562
17563 ECSignature.prototype.toScriptSignature = function (hashType) {
17564 var hashTypeMod = hashType & ~0x80
17565 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17566
17567 var hashTypeBuffer = new Buffer(1)
17568 hashTypeBuffer.writeUInt8(hashType, 0)
17569
17570 return Buffer.concat([this.toDER(), hashTypeBuffer])
17571 }
17572
17573 module.exports = ECSignature
17574
17575 }).call(this,require("buffer").Buffer)
17576 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17577 (function (Buffer){
17578 var assert = require('assert')
17579 var base58check = require('bs58check')
17580 var bcrypto = require('./crypto')
17581 var createHmac = require('create-hmac')
17582 var typeForce = require('typeforce')
17583 var networks = require('./networks')
17584
17585 var BigInteger = require('bigi')
17586 var ECKey = require('./eckey')
17587 var ECPubKey = require('./ecpubkey')
17588
17589 var ecurve = require('ecurve')
17590 var curve = ecurve.getCurveByName('secp256k1')
17591
17592 function findBIP32NetworkByVersion (version) {
17593 for (var name in networks) {
17594 var network = networks[name]
17595
17596 if (version === network.bip32.private || version === network.bip32.public) {
17597 return network
17598 }
17599 }
17600
17601 assert(false, 'Could not find network for ' + version.toString(16))
17602 }
17603
17604 function HDNode (K, chainCode, network) {
17605 network = network || networks.bitcoin
17606
17607 typeForce('Buffer', chainCode)
17608
17609 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17610 assert(network.bip32, 'Unknown BIP32 constants for network')
17611
17612 this.chainCode = chainCode
17613 this.depth = 0
17614 this.index = 0
17615 this.parentFingerprint = 0x00000000
17616 this.network = network
17617
17618 if (K instanceof BigInteger) {
17619 this.privKey = new ECKey(K, true)
17620 this.pubKey = this.privKey.pub
17621 } else if (K instanceof ECKey) {
17622 assert(K.pub.compressed, 'ECKey must be compressed')
17623 this.privKey = K
17624 this.pubKey = K.pub
17625 } else if (K instanceof ECPubKey) {
17626 assert(K.compressed, 'ECPubKey must be compressed')
17627 this.pubKey = K
17628 } else {
17629 this.pubKey = new ECPubKey(K, true)
17630 }
17631 }
17632
17633 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17634 HDNode.HIGHEST_BIT = 0x80000000
17635 HDNode.LENGTH = 78
17636
17637 HDNode.fromSeedBuffer = function (seed, network) {
17638 typeForce('Buffer', seed)
17639
17640 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17641 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17642
17643 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17644 var IL = I.slice(0, 32)
17645 var IR = I.slice(32)
17646
17647 // In case IL is 0 or >= n, the master key is invalid
17648 // This is handled by `new ECKey` in the HDNode constructor
17649 var pIL = BigInteger.fromBuffer(IL)
17650
17651 return new HDNode(pIL, IR, network)
17652 }
17653
17654 HDNode.fromSeedHex = function (hex, network) {
17655 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17656 }
17657
17658 HDNode.fromBase58 = function (string, network) {
17659 return HDNode.fromBuffer(base58check.decode(string), network, true)
17660 }
17661
17662 // FIXME: remove in 2.x.y
17663 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17664 if (!__ignoreDeprecation) {
17665 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17666 }
17667
17668 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17669
17670 // 4 byte: version bytes
17671 var version = buffer.readUInt32BE(0)
17672
17673 if (network) {
17674 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17675
17676 // auto-detect
17677 } else {
17678 network = findBIP32NetworkByVersion(version)
17679 }
17680
17681 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17682 var depth = buffer.readUInt8(4)
17683
17684 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17685 var parentFingerprint = buffer.readUInt32BE(5)
17686 if (depth === 0) {
17687 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17688 }
17689
17690 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17691 // This is encoded in MSB order. (0x00000000 if master key)
17692 var index = buffer.readUInt32BE(9)
17693 assert(depth > 0 || index === 0, 'Invalid index')
17694
17695 // 32 bytes: the chain code
17696 var chainCode = buffer.slice(13, 45)
17697 var data, hd
17698
17699 // 33 bytes: private key data (0x00 + k)
17700 if (version === network.bip32.private) {
17701 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17702 data = buffer.slice(46, 78)
17703 var d = BigInteger.fromBuffer(data)
17704 hd = new HDNode(d, chainCode, network)
17705
17706 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17707 } else {
17708 data = buffer.slice(45, 78)
17709 var Q = ecurve.Point.decodeFrom(curve, data)
17710 assert.equal(Q.compressed, true, 'Invalid public key')
17711
17712 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17713 // If not, the extended public key is invalid.
17714 curve.validate(Q)
17715
17716 hd = new HDNode(Q, chainCode, network)
17717 }
17718
17719 hd.depth = depth
17720 hd.index = index
17721 hd.parentFingerprint = parentFingerprint
17722
17723 return hd
17724 }
17725
17726 // FIXME: remove in 2.x.y
17727 HDNode.fromHex = function (hex, network) {
17728 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17729 }
17730
17731 HDNode.prototype.getIdentifier = function () {
17732 return bcrypto.hash160(this.pubKey.toBuffer())
17733 }
17734
17735 HDNode.prototype.getFingerprint = function () {
17736 return this.getIdentifier().slice(0, 4)
17737 }
17738
17739 HDNode.prototype.getAddress = function () {
17740 return this.pubKey.getAddress(this.network)
17741 }
17742
17743 HDNode.prototype.neutered = function () {
17744 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17745 neutered.depth = this.depth
17746 neutered.index = this.index
17747 neutered.parentFingerprint = this.parentFingerprint
17748
17749 return neutered
17750 }
17751
17752 HDNode.prototype.toBase58 = function (isPrivate) {
17753 return base58check.encode(this.toBuffer(isPrivate, true))
17754 }
17755
17756 // FIXME: remove in 2.x.y
17757 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17758 if (isPrivate === undefined) {
17759 isPrivate = !!this.privKey
17760
17761 // FIXME: remove in 2.x.y
17762 } else {
17763 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17764 }
17765
17766 if (!__ignoreDeprecation) {
17767 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17768 }
17769
17770 // Version
17771 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17772 var buffer = new Buffer(HDNode.LENGTH)
17773
17774 // 4 bytes: version bytes
17775 buffer.writeUInt32BE(version, 0)
17776
17777 // Depth
17778 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17779 buffer.writeUInt8(this.depth, 4)
17780
17781 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17782 buffer.writeUInt32BE(this.parentFingerprint, 5)
17783
17784 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17785 // This is encoded in Big endian. (0x00000000 if master key)
17786 buffer.writeUInt32BE(this.index, 9)
17787
17788 // 32 bytes: the chain code
17789 this.chainCode.copy(buffer, 13)
17790
17791 // 33 bytes: the public key or private key data
17792 if (isPrivate) {
17793 // FIXME: remove in 2.x.y
17794 assert(this.privKey, 'Missing private key')
17795
17796 // 0x00 + k for private keys
17797 buffer.writeUInt8(0, 45)
17798 this.privKey.d.toBuffer(32).copy(buffer, 46)
17799 } else {
17800 // X9.62 encoding for public keys
17801 this.pubKey.toBuffer().copy(buffer, 45)
17802 }
17803
17804 return buffer
17805 }
17806
17807 // FIXME: remove in 2.x.y
17808 HDNode.prototype.toHex = function (isPrivate) {
17809 return this.toBuffer(isPrivate).toString('hex')
17810 }
17811
17812 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17813 HDNode.prototype.derive = function (index) {
17814 var isHardened = index >= HDNode.HIGHEST_BIT
17815 var indexBuffer = new Buffer(4)
17816 indexBuffer.writeUInt32BE(index, 0)
17817
17818 var data
17819
17820 // Hardened child
17821 if (isHardened) {
17822 assert(this.privKey, 'Could not derive hardened child key')
17823
17824 // data = 0x00 || ser256(kpar) || ser32(index)
17825 data = Buffer.concat([
17826 this.privKey.d.toBuffer(33),
17827 indexBuffer
17828 ])
17829
17830 // Normal child
17831 } else {
17832 // data = serP(point(kpar)) || ser32(index)
17833 // = serP(Kpar) || ser32(index)
17834 data = Buffer.concat([
17835 this.pubKey.toBuffer(),
17836 indexBuffer
17837 ])
17838 }
17839
17840 var I = createHmac('sha512', this.chainCode).update(data).digest()
17841 var IL = I.slice(0, 32)
17842 var IR = I.slice(32)
17843
17844 var pIL = BigInteger.fromBuffer(IL)
17845
17846 // In case parse256(IL) >= n, proceed with the next value for i
17847 if (pIL.compareTo(curve.n) >= 0) {
17848 return this.derive(index + 1)
17849 }
17850
17851 // Private parent key -> private child key
17852 var hd
17853 if (this.privKey) {
17854 // ki = parse256(IL) + kpar (mod n)
17855 var ki = pIL.add(this.privKey.d).mod(curve.n)
17856
17857 // In case ki == 0, proceed with the next value for i
17858 if (ki.signum() === 0) {
17859 return this.derive(index + 1)
17860 }
17861
17862 hd = new HDNode(ki, IR, this.network)
17863
17864 // Public parent key -> public child key
17865 } else {
17866 // Ki = point(parse256(IL)) + Kpar
17867 // = G*IL + Kpar
17868 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17869
17870 // In case Ki is the point at infinity, proceed with the next value for i
17871 if (curve.isInfinity(Ki)) {
17872 return this.derive(index + 1)
17873 }
17874
17875 hd = new HDNode(Ki, IR, this.network)
17876 }
17877
17878 hd.depth = this.depth + 1
17879 hd.index = index
17880 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17881
17882 return hd
17883 }
17884
17885 HDNode.prototype.deriveHardened = function (index) {
17886 // Only derives hardened private keys by default
17887 return this.derive(index + HDNode.HIGHEST_BIT)
17888 }
17889
17890 HDNode.prototype.toString = HDNode.prototype.toBase58
17891
17892 module.exports = HDNode
17893
17894 }).call(this,require("buffer").Buffer)
17895 },{"./crypto":58,"./eckey":60,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"create-hmac":45,"ecurve":49,"typeforce":53}],64:[function(require,module,exports){
17896 module.exports = {
17897 Address: require('./address'),
17898 base58check: require('./base58check'),
17899 Block: require('./block'),
17900 bufferutils: require('./bufferutils'),
17901 crypto: require('./crypto'),
17902 ecdsa: require('./ecdsa'),
17903 ECKey: require('./eckey'),
17904 ECPubKey: require('./ecpubkey'),
17905 ECSignature: require('./ecsignature'),
17906 Message: require('./message'),
17907 opcodes: require('./opcodes'),
17908 HDNode: require('./hdnode'),
17909 Script: require('./script'),
17910 scripts: require('./scripts'),
17911 Transaction: require('./transaction'),
17912 TransactionBuilder: require('./transaction_builder'),
17913 networks: require('./networks'),
17914 Wallet: require('./wallet')
17915 }
17916
17917 },{"./address":54,"./base58check":55,"./block":56,"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./eckey":60,"./ecpubkey":61,"./ecsignature":62,"./hdnode":63,"./message":65,"./networks":66,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"./transaction_builder":71,"./wallet":72}],65:[function(require,module,exports){
17918 (function (Buffer){
17919 var bufferutils = require('./bufferutils')
17920 var crypto = require('./crypto')
17921 var ecdsa = require('./ecdsa')
17922 var networks = require('./networks')
17923
17924 var BigInteger = require('bigi')
17925 var ECPubKey = require('./ecpubkey')
17926 var ECSignature = require('./ecsignature')
17927
17928 var ecurve = require('ecurve')
17929 var ecparams = ecurve.getCurveByName('secp256k1')
17930
17931 function magicHash (message, network) {
17932 var magicPrefix = new Buffer(network.magicPrefix)
17933 var messageBuffer = new Buffer(message)
17934 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17935
17936 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17937 return crypto.hash256(buffer)
17938 }
17939
17940 function sign (privKey, message, network) {
17941 network = network || networks.bitcoin
17942
17943 var hash = magicHash(message, network)
17944 var signature = privKey.sign(hash)
17945 var e = BigInteger.fromBuffer(hash)
17946 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17947
17948 return signature.toCompact(i, privKey.pub.compressed)
17949 }
17950
17951 // TODO: network could be implied from address
17952 function verify (address, signature, message, network) {
17953 if (!Buffer.isBuffer(signature)) {
17954 signature = new Buffer(signature, 'base64')
17955 }
17956
17957 network = network || networks.bitcoin
17958
17959 var hash = magicHash(message, network)
17960 var parsed = ECSignature.parseCompact(signature)
17961 var e = BigInteger.fromBuffer(hash)
17962 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17963
17964 var pubKey = new ECPubKey(Q, parsed.compressed)
17965 return pubKey.getAddress(network).toString() === address.toString()
17966 }
17967
17968 module.exports = {
17969 magicHash: magicHash,
17970 sign: sign,
17971 verify: verify
17972 }
17973
17974 }).call(this,require("buffer").Buffer)
17975 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17976 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17977 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17978
17979 var networks = {
17980 bitcoin: {
17981 magicPrefix: '\x18Bitcoin Signed Message:\n',
17982 bip32: {
17983 public: 0x0488b21e,
17984 private: 0x0488ade4
17985 },
17986 pubKeyHash: 0x00,
17987 scriptHash: 0x05,
17988 wif: 0x80,
17989 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17990 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17991 estimateFee: estimateFee('bitcoin')
17992 },
17993 testnet: {
17994 magicPrefix: '\x18Bitcoin Signed Message:\n',
17995 bip32: {
17996 public: 0x043587cf,
17997 private: 0x04358394
17998 },
17999 pubKeyHash: 0x6f,
18000 scriptHash: 0xc4,
18001 wif: 0xef,
18002 dustThreshold: 546,
18003 feePerKb: 10000,
18004 estimateFee: estimateFee('testnet')
18005 },
18006 litecoin: {
18007 magicPrefix: '\x19Litecoin Signed Message:\n',
18008 bip32: {
18009 public: 0x019da462,
18010 private: 0x019d9cfe
18011 },
18012 pubKeyHash: 0x30,
18013 scriptHash: 0x05,
18014 wif: 0xb0,
18015 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18016 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18017 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18018 estimateFee: estimateFee('litecoin')
18019 },
18020 dogecoin: {
18021 magicPrefix: '\x19Dogecoin Signed Message:\n',
18022 bip32: {
18023 public: 0x02facafd,
18024 private: 0x02fac398
18025 },
18026 pubKeyHash: 0x1e,
18027 scriptHash: 0x16,
18028 wif: 0x9e,
18029 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18030 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18031 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18032 estimateFee: estimateFee('dogecoin')
18033 },
18034 viacoin: {
18035 magicPrefix: '\x18Viacoin Signed Message:\n',
18036 bip32: {
18037 public: 0x0488b21e,
18038 private: 0x0488ade4
18039 },
18040 pubKeyHash: 0x47,
18041 scriptHash: 0x21,
18042 wif: 0xc7,
18043 dustThreshold: 560,
18044 dustSoftThreshold: 100000,
18045 feePerKb: 100000, //
18046 estimateFee: estimateFee('viacoin')
18047 },
18048 viacointestnet: {
18049 magicPrefix: '\x18Viacoin Signed Message:\n',
18050 bip32: {
18051 public: 0x043587cf,
18052 private: 0x04358394
18053 },
18054 pubKeyHash: 0x7f,
18055 scriptHash: 0xc4,
18056 wif: 0xff,
18057 dustThreshold: 560,
18058 dustSoftThreshold: 100000,
18059 feePerKb: 100000,
18060 estimateFee: estimateFee('viacointestnet')
18061 },
18062 gamerscoin: {
18063 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18064 bip32: {
18065 public: 0x019da462,
18066 private: 0x019d9cfe
18067 },
18068 pubKeyHash: 0x26,
18069 scriptHash: 0x05,
18070 wif: 0xA6,
18071 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18072 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18073 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18074 estimateFee: estimateFee('gamerscoin')
18075 },
18076 jumbucks: {
18077 magicPrefix: '\x19Jumbucks Signed Message:\n',
18078 bip32: {
18079 public: 0x037a689a,
18080 private: 0x037a6460
18081 },
18082 pubKeyHash: 0x2b,
18083 scriptHash: 0x05,
18084 wif: 0xab,
18085 dustThreshold: 0,
18086 dustSoftThreshold: 10000,
18087 feePerKb: 10000,
18088 estimateFee: estimateFee('jumbucks')
18089 },
18090 zetacoin: {
18091 magicPrefix: '\x18Zetacoin Signed Message:\n',
18092 bip32: {
18093 public: 0x0488b21e,
18094 private: 0x0488ade4
18095 },
18096 pubKeyHash: 0x50,
18097 scriptHash: 0x09,
18098 wif: 0xe0,
18099 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18100 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18101 estimateFee: estimateFee('zetacoin')
18102 }
18103 }
18104
18105 function estimateFee (type) {
18106 return function (tx) {
18107 var network = networks[type]
18108 var baseFee = network.feePerKb
18109 var byteSize = tx.toBuffer().length
18110
18111 var fee = baseFee * Math.ceil(byteSize / 1000)
18112 if (network.dustSoftThreshold === undefined) return fee
18113
18114 tx.outs.forEach(function (e) {
18115 if (e.value < network.dustSoftThreshold) {
18116 fee += baseFee
18117 }
18118 })
18119
18120 return fee
18121 }
18122 }
18123
18124 module.exports = networks
18125
18126 },{}],67:[function(require,module,exports){
18127 module.exports = {
18128 // push value
18129 OP_FALSE: 0,
18130 OP_0: 0,
18131 OP_PUSHDATA1: 76,
18132 OP_PUSHDATA2: 77,
18133 OP_PUSHDATA4: 78,
18134 OP_1NEGATE: 79,
18135 OP_RESERVED: 80,
18136 OP_1: 81,
18137 OP_TRUE: 81,
18138 OP_2: 82,
18139 OP_3: 83,
18140 OP_4: 84,
18141 OP_5: 85,
18142 OP_6: 86,
18143 OP_7: 87,
18144 OP_8: 88,
18145 OP_9: 89,
18146 OP_10: 90,
18147 OP_11: 91,
18148 OP_12: 92,
18149 OP_13: 93,
18150 OP_14: 94,
18151 OP_15: 95,
18152 OP_16: 96,
18153
18154 // control
18155 OP_NOP: 97,
18156 OP_VER: 98,
18157 OP_IF: 99,
18158 OP_NOTIF: 100,
18159 OP_VERIF: 101,
18160 OP_VERNOTIF: 102,
18161 OP_ELSE: 103,
18162 OP_ENDIF: 104,
18163 OP_VERIFY: 105,
18164 OP_RETURN: 106,
18165
18166 // stack ops
18167 OP_TOALTSTACK: 107,
18168 OP_FROMALTSTACK: 108,
18169 OP_2DROP: 109,
18170 OP_2DUP: 110,
18171 OP_3DUP: 111,
18172 OP_2OVER: 112,
18173 OP_2ROT: 113,
18174 OP_2SWAP: 114,
18175 OP_IFDUP: 115,
18176 OP_DEPTH: 116,
18177 OP_DROP: 117,
18178 OP_DUP: 118,
18179 OP_NIP: 119,
18180 OP_OVER: 120,
18181 OP_PICK: 121,
18182 OP_ROLL: 122,
18183 OP_ROT: 123,
18184 OP_SWAP: 124,
18185 OP_TUCK: 125,
18186
18187 // splice ops
18188 OP_CAT: 126,
18189 OP_SUBSTR: 127,
18190 OP_LEFT: 128,
18191 OP_RIGHT: 129,
18192 OP_SIZE: 130,
18193
18194 // bit logic
18195 OP_INVERT: 131,
18196 OP_AND: 132,
18197 OP_OR: 133,
18198 OP_XOR: 134,
18199 OP_EQUAL: 135,
18200 OP_EQUALVERIFY: 136,
18201 OP_RESERVED1: 137,
18202 OP_RESERVED2: 138,
18203
18204 // numeric
18205 OP_1ADD: 139,
18206 OP_1SUB: 140,
18207 OP_2MUL: 141,
18208 OP_2DIV: 142,
18209 OP_NEGATE: 143,
18210 OP_ABS: 144,
18211 OP_NOT: 145,
18212 OP_0NOTEQUAL: 146,
18213
18214 OP_ADD: 147,
18215 OP_SUB: 148,
18216 OP_MUL: 149,
18217 OP_DIV: 150,
18218 OP_MOD: 151,
18219 OP_LSHIFT: 152,
18220 OP_RSHIFT: 153,
18221
18222 OP_BOOLAND: 154,
18223 OP_BOOLOR: 155,
18224 OP_NUMEQUAL: 156,
18225 OP_NUMEQUALVERIFY: 157,
18226 OP_NUMNOTEQUAL: 158,
18227 OP_LESSTHAN: 159,
18228 OP_GREATERTHAN: 160,
18229 OP_LESSTHANOREQUAL: 161,
18230 OP_GREATERTHANOREQUAL: 162,
18231 OP_MIN: 163,
18232 OP_MAX: 164,
18233
18234 OP_WITHIN: 165,
18235
18236 // crypto
18237 OP_RIPEMD160: 166,
18238 OP_SHA1: 167,
18239 OP_SHA256: 168,
18240 OP_HASH160: 169,
18241 OP_HASH256: 170,
18242 OP_CODESEPARATOR: 171,
18243 OP_CHECKSIG: 172,
18244 OP_CHECKSIGVERIFY: 173,
18245 OP_CHECKMULTISIG: 174,
18246 OP_CHECKMULTISIGVERIFY: 175,
18247
18248 // expansion
18249 OP_NOP1: 176,
18250 OP_NOP2: 177,
18251 OP_NOP3: 178,
18252 OP_NOP4: 179,
18253 OP_NOP5: 180,
18254 OP_NOP6: 181,
18255 OP_NOP7: 182,
18256 OP_NOP8: 183,
18257 OP_NOP9: 184,
18258 OP_NOP10: 185,
18259
18260 // template matching params
18261 OP_PUBKEYHASH: 253,
18262 OP_PUBKEY: 254,
18263 OP_INVALIDOPCODE: 255
18264 }
18265
18266 },{}],68:[function(require,module,exports){
18267 (function (Buffer){
18268 var assert = require('assert')
18269 var bufferutils = require('./bufferutils')
18270 var crypto = require('./crypto')
18271 var typeForce = require('typeforce')
18272 var opcodes = require('./opcodes')
18273
18274 function Script (buffer, chunks) {
18275 typeForce('Buffer', buffer)
18276 typeForce('Array', chunks)
18277
18278 this.buffer = buffer
18279 this.chunks = chunks
18280 }
18281
18282 Script.fromASM = function (asm) {
18283 var strChunks = asm.split(' ')
18284 var chunks = strChunks.map(function (strChunk) {
18285 // opcode
18286 if (strChunk in opcodes) {
18287 return opcodes[strChunk]
18288
18289 // data chunk
18290 } else {
18291 return new Buffer(strChunk, 'hex')
18292 }
18293 })
18294
18295 return Script.fromChunks(chunks)
18296 }
18297
18298 Script.fromBuffer = function (buffer) {
18299 var chunks = []
18300 var i = 0
18301
18302 while (i < buffer.length) {
18303 var opcode = buffer.readUInt8(i)
18304
18305 // data chunk
18306 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18307 var d = bufferutils.readPushDataInt(buffer, i)
18308
18309 // did reading a pushDataInt fail? return non-chunked script
18310 if (d === null) return new Script(buffer, [])
18311 i += d.size
18312
18313 // attempt to read too much data?
18314 if (i + d.number > buffer.length) return new Script(buffer, [])
18315
18316 var data = buffer.slice(i, i + d.number)
18317 i += d.number
18318
18319 chunks.push(data)
18320
18321 // opcode
18322 } else {
18323 chunks.push(opcode)
18324
18325 i += 1
18326 }
18327 }
18328
18329 return new Script(buffer, chunks)
18330 }
18331
18332 Script.fromChunks = function (chunks) {
18333 typeForce('Array', chunks)
18334
18335 var bufferSize = chunks.reduce(function (accum, chunk) {
18336 // data chunk
18337 if (Buffer.isBuffer(chunk)) {
18338 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18339 }
18340
18341 // opcode
18342 return accum + 1
18343 }, 0.0)
18344
18345 var buffer = new Buffer(bufferSize)
18346 var offset = 0
18347
18348 chunks.forEach(function (chunk) {
18349 // data chunk
18350 if (Buffer.isBuffer(chunk)) {
18351 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18352
18353 chunk.copy(buffer, offset)
18354 offset += chunk.length
18355
18356 // opcode
18357 } else {
18358 buffer.writeUInt8(chunk, offset)
18359 offset += 1
18360 }
18361 })
18362
18363 assert.equal(offset, buffer.length, 'Could not decode chunks')
18364 return new Script(buffer, chunks)
18365 }
18366
18367 Script.fromHex = function (hex) {
18368 return Script.fromBuffer(new Buffer(hex, 'hex'))
18369 }
18370
18371 Script.EMPTY = Script.fromChunks([])
18372
18373 Script.prototype.getHash = function () {
18374 return crypto.hash160(this.buffer)
18375 }
18376
18377 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18378 Script.prototype.without = function (needle) {
18379 return Script.fromChunks(this.chunks.filter(function (op) {
18380 return op !== needle
18381 }))
18382 }
18383
18384 var reverseOps = []
18385 for (var op in opcodes) {
18386 var code = opcodes[op]
18387 reverseOps[code] = op
18388 }
18389
18390 Script.prototype.toASM = function () {
18391 return this.chunks.map(function (chunk) {
18392 // data chunk
18393 if (Buffer.isBuffer(chunk)) {
18394 return chunk.toString('hex')
18395
18396 // opcode
18397 } else {
18398 return reverseOps[chunk]
18399 }
18400 }).join(' ')
18401 }
18402
18403 Script.prototype.toBuffer = function () {
18404 return this.buffer
18405 }
18406
18407 Script.prototype.toHex = function () {
18408 return this.toBuffer().toString('hex')
18409 }
18410
18411 module.exports = Script
18412
18413 }).call(this,require("buffer").Buffer)
18414 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18415 (function (Buffer){
18416 var assert = require('assert')
18417 var ops = require('./opcodes')
18418 var typeForce = require('typeforce')
18419
18420 var ecurve = require('ecurve')
18421 var curve = ecurve.getCurveByName('secp256k1')
18422
18423 var ECSignature = require('./ecsignature')
18424 var Script = require('./script')
18425
18426 function isCanonicalPubKey (buffer) {
18427 if (!Buffer.isBuffer(buffer)) return false
18428
18429 try {
18430 ecurve.Point.decodeFrom(curve, buffer)
18431 } catch (e) {
18432 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18433 throw e
18434
18435 return false
18436 }
18437
18438 return true
18439 }
18440
18441 function isCanonicalSignature (buffer) {
18442 if (!Buffer.isBuffer(buffer)) return false
18443
18444 try {
18445 ECSignature.parseScriptSignature(buffer)
18446 } catch (e) {
18447 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) {
18448 throw e
18449 }
18450
18451 return false
18452 }
18453
18454 return true
18455 }
18456
18457 function isPubKeyHashInput (script) {
18458 return script.chunks.length === 2 &&
18459 isCanonicalSignature(script.chunks[0]) &&
18460 isCanonicalPubKey(script.chunks[1])
18461 }
18462
18463 function isPubKeyHashOutput (script) {
18464 return script.chunks.length === 5 &&
18465 script.chunks[0] === ops.OP_DUP &&
18466 script.chunks[1] === ops.OP_HASH160 &&
18467 Buffer.isBuffer(script.chunks[2]) &&
18468 script.chunks[2].length === 20 &&
18469 script.chunks[3] === ops.OP_EQUALVERIFY &&
18470 script.chunks[4] === ops.OP_CHECKSIG
18471 }
18472
18473 function isPubKeyInput (script) {
18474 return script.chunks.length === 1 &&
18475 isCanonicalSignature(script.chunks[0])
18476 }
18477
18478 function isPubKeyOutput (script) {
18479 return script.chunks.length === 2 &&
18480 isCanonicalPubKey(script.chunks[0]) &&
18481 script.chunks[1] === ops.OP_CHECKSIG
18482 }
18483
18484 function isScriptHashInput (script, allowIncomplete) {
18485 if (script.chunks.length < 2) return false
18486
18487 var lastChunk = script.chunks[script.chunks.length - 1]
18488 if (!Buffer.isBuffer(lastChunk)) return false
18489
18490 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18491 var redeemScript = Script.fromBuffer(lastChunk)
18492
18493 // is redeemScript a valid script?
18494 if (redeemScript.chunks.length === 0) return false
18495
18496 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18497 }
18498
18499 function isScriptHashOutput (script) {
18500 return script.chunks.length === 3 &&
18501 script.chunks[0] === ops.OP_HASH160 &&
18502 Buffer.isBuffer(script.chunks[1]) &&
18503 script.chunks[1].length === 20 &&
18504 script.chunks[2] === ops.OP_EQUAL
18505 }
18506
18507 // allowIncomplete is to account for combining signatures
18508 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18509 function isMultisigInput (script, allowIncomplete) {
18510 if (script.chunks.length < 2) return false
18511 if (script.chunks[0] !== ops.OP_0) return false
18512
18513 if (allowIncomplete) {
18514 return script.chunks.slice(1).every(function (chunk) {
18515 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18516 })
18517 }
18518
18519 return script.chunks.slice(1).every(isCanonicalSignature)
18520 }
18521
18522 function isMultisigOutput (script) {
18523 if (script.chunks.length < 4) return false
18524 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18525
18526 var mOp = script.chunks[0]
18527 if (mOp === ops.OP_0) return false
18528 if (mOp < ops.OP_1) return false
18529 if (mOp > ops.OP_16) return false
18530
18531 var nOp = script.chunks[script.chunks.length - 2]
18532 if (nOp === ops.OP_0) return false
18533 if (nOp < ops.OP_1) return false
18534 if (nOp > ops.OP_16) return false
18535
18536 var m = mOp - (ops.OP_1 - 1)
18537 var n = nOp - (ops.OP_1 - 1)
18538 if (n < m) return false
18539
18540 var pubKeys = script.chunks.slice(1, -2)
18541 if (n < pubKeys.length) return false
18542
18543 return pubKeys.every(isCanonicalPubKey)
18544 }
18545
18546 function isNullDataOutput (script) {
18547 return script.chunks[0] === ops.OP_RETURN
18548 }
18549
18550 function classifyOutput (script) {
18551 typeForce('Script', script)
18552
18553 if (isPubKeyHashOutput(script)) {
18554 return 'pubkeyhash'
18555 } else if (isScriptHashOutput(script)) {
18556 return 'scripthash'
18557 } else if (isMultisigOutput(script)) {
18558 return 'multisig'
18559 } else if (isPubKeyOutput(script)) {
18560 return 'pubkey'
18561 } else if (isNullDataOutput(script)) {
18562 return 'nulldata'
18563 }
18564
18565 return 'nonstandard'
18566 }
18567
18568 function classifyInput (script, allowIncomplete) {
18569 typeForce('Script', script)
18570
18571 if (isPubKeyHashInput(script)) {
18572 return 'pubkeyhash'
18573 } else if (isMultisigInput(script, allowIncomplete)) {
18574 return 'multisig'
18575 } else if (isScriptHashInput(script, allowIncomplete)) {
18576 return 'scripthash'
18577 } else if (isPubKeyInput(script)) {
18578 return 'pubkey'
18579 }
18580
18581 return 'nonstandard'
18582 }
18583
18584 // Standard Script Templates
18585 // {pubKey} OP_CHECKSIG
18586 function pubKeyOutput (pubKey) {
18587 return Script.fromChunks([
18588 pubKey.toBuffer(),
18589 ops.OP_CHECKSIG
18590 ])
18591 }
18592
18593 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18594 function pubKeyHashOutput (hash) {
18595 typeForce('Buffer', hash)
18596
18597 return Script.fromChunks([
18598 ops.OP_DUP,
18599 ops.OP_HASH160,
18600 hash,
18601 ops.OP_EQUALVERIFY,
18602 ops.OP_CHECKSIG
18603 ])
18604 }
18605
18606 // OP_HASH160 {scriptHash} OP_EQUAL
18607 function scriptHashOutput (hash) {
18608 typeForce('Buffer', hash)
18609
18610 return Script.fromChunks([
18611 ops.OP_HASH160,
18612 hash,
18613 ops.OP_EQUAL
18614 ])
18615 }
18616
18617 // m [pubKeys ...] n OP_CHECKMULTISIG
18618 function multisigOutput (m, pubKeys) {
18619 typeForce(['ECPubKey'], pubKeys)
18620
18621 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18622
18623 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18624 return pubKey.toBuffer()
18625 })
18626 var n = pubKeys.length
18627
18628 return Script.fromChunks([].concat(
18629 (ops.OP_1 - 1) + m,
18630 pubKeyBuffers,
18631 (ops.OP_1 - 1) + n,
18632 ops.OP_CHECKMULTISIG
18633 ))
18634 }
18635
18636 // {signature}
18637 function pubKeyInput (signature) {
18638 typeForce('Buffer', signature)
18639
18640 return Script.fromChunks([signature])
18641 }
18642
18643 // {signature} {pubKey}
18644 function pubKeyHashInput (signature, pubKey) {
18645 typeForce('Buffer', signature)
18646
18647 return Script.fromChunks([signature, pubKey.toBuffer()])
18648 }
18649
18650 // <scriptSig> {serialized scriptPubKey script}
18651 function scriptHashInput (scriptSig, scriptPubKey) {
18652 return Script.fromChunks([].concat(
18653 scriptSig.chunks,
18654 scriptPubKey.toBuffer()
18655 ))
18656 }
18657
18658 // OP_0 [signatures ...]
18659 function multisigInput (signatures, scriptPubKey) {
18660 if (scriptPubKey) {
18661 assert(isMultisigOutput(scriptPubKey))
18662
18663 var mOp = scriptPubKey.chunks[0]
18664 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18665 var m = mOp - (ops.OP_1 - 1)
18666 var n = nOp - (ops.OP_1 - 1)
18667
18668 assert(signatures.length >= m, 'Not enough signatures provided')
18669 assert(signatures.length <= n, 'Too many signatures provided')
18670 }
18671
18672 return Script.fromChunks([].concat(ops.OP_0, signatures))
18673 }
18674
18675 function nullDataOutput (data) {
18676 return Script.fromChunks([ops.OP_RETURN, data])
18677 }
18678
18679 module.exports = {
18680 isCanonicalPubKey: isCanonicalPubKey,
18681 isCanonicalSignature: isCanonicalSignature,
18682 isPubKeyHashInput: isPubKeyHashInput,
18683 isPubKeyHashOutput: isPubKeyHashOutput,
18684 isPubKeyInput: isPubKeyInput,
18685 isPubKeyOutput: isPubKeyOutput,
18686 isScriptHashInput: isScriptHashInput,
18687 isScriptHashOutput: isScriptHashOutput,
18688 isMultisigInput: isMultisigInput,
18689 isMultisigOutput: isMultisigOutput,
18690 isNullDataOutput: isNullDataOutput,
18691 classifyOutput: classifyOutput,
18692 classifyInput: classifyInput,
18693 pubKeyOutput: pubKeyOutput,
18694 pubKeyHashOutput: pubKeyHashOutput,
18695 scriptHashOutput: scriptHashOutput,
18696 multisigOutput: multisigOutput,
18697 pubKeyInput: pubKeyInput,
18698 pubKeyHashInput: pubKeyHashInput,
18699 scriptHashInput: scriptHashInput,
18700 multisigInput: multisigInput,
18701 dataOutput: function (data) {
18702 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18703 return nullDataOutput(data)
18704 },
18705 nullDataOutput: nullDataOutput
18706 }
18707
18708 }).call(this,require("buffer").Buffer)
18709 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18710 (function (Buffer){
18711 var assert = require('assert')
18712 var bufferutils = require('./bufferutils')
18713 var crypto = require('./crypto')
18714 var typeForce = require('typeforce')
18715 var opcodes = require('./opcodes')
18716 var scripts = require('./scripts')
18717
18718 var Address = require('./address')
18719 var ECSignature = require('./ecsignature')
18720 var Script = require('./script')
18721
18722 function Transaction () {
18723 this.version = 1
18724 this.locktime = 0
18725 this.ins = []
18726 this.outs = []
18727 }
18728
18729 Transaction.DEFAULT_SEQUENCE = 0xffffffff
18730 Transaction.SIGHASH_ALL = 0x01
18731 Transaction.SIGHASH_NONE = 0x02
18732 Transaction.SIGHASH_SINGLE = 0x03
18733 Transaction.SIGHASH_ANYONECANPAY = 0x80
18734
18735 Transaction.fromBuffer = function (buffer, __disableAssert) {
18736 var offset = 0
18737 function readSlice (n) {
18738 offset += n
18739 return buffer.slice(offset - n, offset)
18740 }
18741
18742 function readUInt32 () {
18743 var i = buffer.readUInt32LE(offset)
18744 offset += 4
18745 return i
18746 }
18747
18748 function readUInt64 () {
18749 var i = bufferutils.readUInt64LE(buffer, offset)
18750 offset += 8
18751 return i
18752 }
18753
18754 function readVarInt () {
18755 var vi = bufferutils.readVarInt(buffer, offset)
18756 offset += vi.size
18757 return vi.number
18758 }
18759
18760 function readScript () {
18761 return Script.fromBuffer(readSlice(readVarInt()))
18762 }
18763
18764 function readGenerationScript () {
18765 return new Script(readSlice(readVarInt()), [])
18766 }
18767
18768 var tx = new Transaction()
18769 tx.version = readUInt32()
18770
18771 var vinLen = readVarInt()
18772 for (var i = 0; i < vinLen; ++i) {
18773 var hash = readSlice(32)
18774
18775 if (Transaction.isCoinbaseHash(hash)) {
18776 tx.ins.push({
18777 hash: hash,
18778 index: readUInt32(),
18779 script: readGenerationScript(),
18780 sequence: readUInt32()
18781 })
18782 } else {
18783 tx.ins.push({
18784 hash: hash,
18785 index: readUInt32(),
18786 script: readScript(),
18787 sequence: readUInt32()
18788 })
18789 }
18790 }
18791
18792 var voutLen = readVarInt()
18793 for (i = 0; i < voutLen; ++i) {
18794 tx.outs.push({
18795 value: readUInt64(),
18796 script: readScript()
18797 })
18798 }
18799
18800 tx.locktime = readUInt32()
18801
18802 if (!__disableAssert) {
18803 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18804 }
18805
18806 return tx
18807 }
18808
18809 Transaction.fromHex = function (hex) {
18810 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18811 }
18812
18813 Transaction.isCoinbaseHash = function (buffer) {
18814 return Array.prototype.every.call(buffer, function (x) {
18815 return x === 0
18816 })
18817 }
18818
18819 /**
18820 * Create a new txIn.
18821 *
18822 * Can be called with any of:
18823 *
18824 * - A transaction and an index
18825 * - A transaction hash and an index
18826 *
18827 * Note that this method does not sign the created input.
18828 */
18829 Transaction.prototype.addInput = function (hash, index, sequence, script) {
18830 if (sequence === undefined || sequence === null) {
18831 sequence = Transaction.DEFAULT_SEQUENCE
18832 }
18833
18834 script = script || Script.EMPTY
18835
18836 if (typeof hash === 'string') {
18837 // TxId hex is big-endian, we need little-endian
18838 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18839 } else if (hash instanceof Transaction) {
18840 hash = hash.getHash()
18841 }
18842
18843 typeForce('Buffer', hash)
18844 typeForce('Number', index)
18845 typeForce('Number', sequence)
18846 typeForce('Script', script)
18847
18848 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18849
18850 // Add the input and return the input's index
18851 return (this.ins.push({
18852 hash: hash,
18853 index: index,
18854 script: script,
18855 sequence: sequence
18856 }) - 1)
18857 }
18858
18859 /**
18860 * Create a new txOut.
18861 *
18862 * Can be called with:
18863 *
18864 * - A base58 address string and a value
18865 * - An Address object and a value
18866 * - A scriptPubKey Script and a value
18867 */
18868 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18869 // Attempt to get a valid address if it's a base58 address string
18870 if (typeof scriptPubKey === 'string') {
18871 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18872 }
18873
18874 // Attempt to get a valid script if it's an Address object
18875 if (scriptPubKey instanceof Address) {
18876 scriptPubKey = scriptPubKey.toOutputScript()
18877 }
18878
18879 typeForce('Script', scriptPubKey)
18880 typeForce('Number', value)
18881
18882 // Add the output and return the output's index
18883 return (this.outs.push({
18884 script: scriptPubKey,
18885 value: value
18886 }) - 1)
18887 }
18888
18889 Transaction.prototype.clone = function () {
18890 var newTx = new Transaction()
18891 newTx.version = this.version
18892 newTx.locktime = this.locktime
18893
18894 newTx.ins = this.ins.map(function (txIn) {
18895 return {
18896 hash: txIn.hash,
18897 index: txIn.index,
18898 script: txIn.script,
18899 sequence: txIn.sequence
18900 }
18901 })
18902
18903 newTx.outs = this.outs.map(function (txOut) {
18904 return {
18905 script: txOut.script,
18906 value: txOut.value
18907 }
18908 })
18909
18910 return newTx
18911 }
18912
18913 /**
18914 * Hash transaction for signing a specific input.
18915 *
18916 * Bitcoin uses a different hash for each signed transaction input. This
18917 * method copies the transaction, makes the necessary changes based on the
18918 * hashType, serializes and finally hashes the result. This hash can then be
18919 * used to sign the transaction input in question.
18920 */
18921 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18922 // FIXME: remove in 2.x.y
18923 if (arguments[0] instanceof Script) {
18924 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18925
18926 // swap the arguments (must be stored in tmp, arguments is special)
18927 var tmp = arguments[0]
18928 inIndex = arguments[1]
18929 prevOutScript = tmp
18930 }
18931
18932 typeForce('Number', inIndex)
18933 typeForce('Script', prevOutScript)
18934 typeForce('Number', hashType)
18935
18936 assert(inIndex >= 0, 'Invalid vin index')
18937 assert(inIndex < this.ins.length, 'Invalid vin index')
18938
18939 var txTmp = this.clone()
18940 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18941
18942 // Blank out other inputs' signatures
18943 txTmp.ins.forEach(function (txIn) {
18944 txIn.script = Script.EMPTY
18945 })
18946 txTmp.ins[inIndex].script = hashScript
18947
18948 var hashTypeModifier = hashType & 0x1f
18949
18950 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18951 assert(false, 'SIGHASH_NONE not yet supported')
18952 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18953 assert(false, 'SIGHASH_SINGLE not yet supported')
18954 }
18955
18956 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18957 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18958 }
18959
18960 var hashTypeBuffer = new Buffer(4)
18961 hashTypeBuffer.writeInt32LE(hashType, 0)
18962
18963 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18964 return crypto.hash256(buffer)
18965 }
18966
18967 Transaction.prototype.getHash = function () {
18968 return crypto.hash256(this.toBuffer())
18969 }
18970
18971 Transaction.prototype.getId = function () {
18972 // TxHash is little-endian, we need big-endian
18973 return bufferutils.reverse(this.getHash()).toString('hex')
18974 }
18975
18976 Transaction.prototype.toBuffer = function () {
18977 function scriptSize (script) {
18978 var length = script.buffer.length
18979
18980 return bufferutils.varIntSize(length) + length
18981 }
18982
18983 var buffer = new Buffer(
18984 8 +
18985 bufferutils.varIntSize(this.ins.length) +
18986 bufferutils.varIntSize(this.outs.length) +
18987 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18988 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18989 )
18990
18991 var offset = 0
18992 function writeSlice (slice) {
18993 slice.copy(buffer, offset)
18994 offset += slice.length
18995 }
18996
18997 function writeUInt32 (i) {
18998 buffer.writeUInt32LE(i, offset)
18999 offset += 4
19000 }
19001
19002 function writeUInt64 (i) {
19003 bufferutils.writeUInt64LE(buffer, i, offset)
19004 offset += 8
19005 }
19006
19007 function writeVarInt (i) {
19008 var n = bufferutils.writeVarInt(buffer, i, offset)
19009 offset += n
19010 }
19011
19012 writeUInt32(this.version)
19013 writeVarInt(this.ins.length)
19014
19015 this.ins.forEach(function (txIn) {
19016 writeSlice(txIn.hash)
19017 writeUInt32(txIn.index)
19018 writeVarInt(txIn.script.buffer.length)
19019 writeSlice(txIn.script.buffer)
19020 writeUInt32(txIn.sequence)
19021 })
19022
19023 writeVarInt(this.outs.length)
19024 this.outs.forEach(function (txOut) {
19025 writeUInt64(txOut.value)
19026 writeVarInt(txOut.script.buffer.length)
19027 writeSlice(txOut.script.buffer)
19028 })
19029
19030 writeUInt32(this.locktime)
19031
19032 return buffer
19033 }
19034
19035 Transaction.prototype.toHex = function () {
19036 return this.toBuffer().toString('hex')
19037 }
19038
19039 Transaction.prototype.setInputScript = function (index, script) {
19040 typeForce('Number', index)
19041 typeForce('Script', script)
19042
19043 this.ins[index].script = script
19044 }
19045
19046 // FIXME: remove in 2.x.y
19047 Transaction.prototype.sign = function (index, privKey, hashType) {
19048 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19049
19050 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19051 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19052
19053 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19054 this.setInputScript(index, scriptSig)
19055 }
19056
19057 // FIXME: remove in 2.x.y
19058 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19059 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19060
19061 hashType = hashType || Transaction.SIGHASH_ALL
19062
19063 var hash = this.hashForSignature(index, prevOutScript, hashType)
19064 var signature = privKey.sign(hash)
19065
19066 return signature.toScriptSignature(hashType)
19067 }
19068
19069 // FIXME: remove in 2.x.y
19070 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19071 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19072
19073 var parsed = ECSignature.parseScriptSignature(buffer)
19074 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19075
19076 return pubKey.verify(hash, parsed.signature)
19077 }
19078
19079 module.exports = Transaction
19080
19081 }).call(this,require("buffer").Buffer)
19082 },{"./address":54,"./bufferutils":57,"./crypto":58,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"assert":5,"buffer":7,"typeforce":53}],71:[function(require,module,exports){
19083 (function (Buffer){
19084 var assert = require('assert')
19085 var ops = require('./opcodes')
19086 var scripts = require('./scripts')
19087
19088 var ECPubKey = require('./ecpubkey')
19089 var ECSignature = require('./ecsignature')
19090 var Script = require('./script')
19091 var Transaction = require('./transaction')
19092
19093 function extractInput (txIn) {
19094 var redeemScript
19095 var scriptSig = txIn.script
19096 var prevOutScript
19097 var prevOutType = scripts.classifyInput(scriptSig, true)
19098 var scriptType
19099
19100 // Re-classify if scriptHash
19101 if (prevOutType === 'scripthash') {
19102 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19103 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19104
19105 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19106 scriptType = scripts.classifyInput(scriptSig, true)
19107 } else {
19108 scriptType = prevOutType
19109 }
19110
19111 // Extract hashType, pubKeys and signatures
19112 var hashType, parsed, pubKeys, signatures
19113
19114 switch (scriptType) {
19115 case 'pubkeyhash': {
19116 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19117 hashType = parsed.hashType
19118 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19119 signatures = [parsed.signature]
19120 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19121
19122 break
19123 }
19124
19125 case 'pubkey': {
19126 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19127 hashType = parsed.hashType
19128 signatures = [parsed.signature]
19129
19130 if (redeemScript) {
19131 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19132 }
19133
19134 break
19135 }
19136
19137 case 'multisig': {
19138 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19139 if (chunk === ops.OP_0) return chunk
19140
19141 var parsed = ECSignature.parseScriptSignature(chunk)
19142 hashType = parsed.hashType
19143
19144 return parsed.signature
19145 })
19146
19147 if (redeemScript) {
19148 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19149 }
19150
19151 break
19152 }
19153 }
19154
19155 return {
19156 hashType: hashType,
19157 prevOutScript: prevOutScript,
19158 prevOutType: prevOutType,
19159 pubKeys: pubKeys,
19160 redeemScript: redeemScript,
19161 scriptType: scriptType,
19162 signatures: signatures
19163 }
19164 }
19165
19166 function TransactionBuilder () {
19167 this.prevTxMap = {}
19168 this.prevOutScripts = {}
19169 this.prevOutTypes = {}
19170
19171 this.inputs = []
19172 this.tx = new Transaction()
19173 }
19174
19175 TransactionBuilder.fromTransaction = function (transaction) {
19176 var txb = new TransactionBuilder()
19177
19178 // Copy other transaction fields
19179 txb.tx.version = transaction.version
19180 txb.tx.locktime = transaction.locktime
19181
19182 // Extract/add inputs
19183 transaction.ins.forEach(function (txIn) {
19184 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19185 })
19186
19187 // Extract/add outputs
19188 transaction.outs.forEach(function (txOut) {
19189 txb.addOutput(txOut.script, txOut.value)
19190 })
19191
19192 // Extract/add signatures
19193 txb.inputs = transaction.ins.map(function (txIn) {
19194 // TODO: remove me after testcase added
19195 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19196
19197 // Ignore empty scripts
19198 if (txIn.script.buffer.length === 0) return {}
19199
19200 return extractInput(txIn)
19201 })
19202
19203 return txb
19204 }
19205
19206 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19207 var prevOutHash
19208
19209 // txId
19210 if (typeof prevTx === 'string') {
19211 prevOutHash = new Buffer(prevTx, 'hex')
19212
19213 // TxId hex is big-endian, we want little-endian hash
19214 Array.prototype.reverse.call(prevOutHash)
19215
19216 // Transaction
19217 } else if (prevTx instanceof Transaction) {
19218 prevOutHash = prevTx.getHash()
19219 prevOutScript = prevTx.outs[index].script
19220
19221 // txHash
19222 } else {
19223 prevOutHash = prevTx
19224 }
19225
19226 var input = {}
19227 if (prevOutScript) {
19228 var prevOutType = scripts.classifyOutput(prevOutScript)
19229
19230 // if we can, extract pubKey information
19231 switch (prevOutType) {
19232 case 'multisig': {
19233 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19234 break
19235 }
19236
19237 case 'pubkey': {
19238 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19239 break
19240 }
19241 }
19242
19243 if (prevOutType !== 'scripthash') {
19244 input.scriptType = prevOutType
19245 }
19246
19247 input.prevOutScript = prevOutScript
19248 input.prevOutType = prevOutType
19249 }
19250
19251 assert(this.inputs.every(function (input2) {
19252 if (input2.hashType === undefined) return true
19253
19254 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19255 }), 'No, this would invalidate signatures')
19256
19257 var prevOut = prevOutHash.toString('hex') + ':' + index
19258 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19259
19260 var vin = this.tx.addInput(prevOutHash, index, sequence)
19261 this.inputs[vin] = input
19262 this.prevTxMap[prevOut] = vin
19263
19264 return vin
19265 }
19266
19267 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19268 assert(this.inputs.every(function (input) {
19269 if (input.hashType === undefined) return true
19270
19271 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19272 }), 'No, this would invalidate signatures')
19273
19274 return this.tx.addOutput(scriptPubKey, value)
19275 }
19276
19277 TransactionBuilder.prototype.build = function () {
19278 return this.__build(false)
19279 }
19280 TransactionBuilder.prototype.buildIncomplete = function () {
19281 return this.__build(true)
19282 }
19283
19284 var canSignTypes = {
19285 'pubkeyhash': true,
19286 'multisig': true,
19287 'pubkey': true
19288 }
19289
19290 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19291 if (!allowIncomplete) {
19292 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19293 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19294 }
19295
19296 var tx = this.tx.clone()
19297
19298 // Create script signatures from signature meta-data
19299 this.inputs.forEach(function (input, index) {
19300 var scriptType = input.scriptType
19301 var scriptSig
19302
19303 if (!allowIncomplete) {
19304 assert(!!scriptType, 'Transaction is not complete')
19305 assert(scriptType in canSignTypes, scriptType + ' not supported')
19306 assert(input.signatures, 'Transaction is missing signatures')
19307 }
19308
19309 if (input.signatures) {
19310 switch (scriptType) {
19311 case 'pubkeyhash': {
19312 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19313 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19314 break
19315 }
19316
19317 case 'multisig': {
19318 // Array.prototype.map is sparse-compatible
19319 var msSignatures = input.signatures.map(function (signature) {
19320 return signature && signature.toScriptSignature(input.hashType)
19321 })
19322
19323 // fill in blanks with OP_0
19324 if (allowIncomplete) {
19325 for (var i = 0; i < msSignatures.length; ++i) {
19326 if (msSignatures[i]) continue
19327
19328 msSignatures[i] = ops.OP_0
19329 }
19330 } else {
19331 // Array.prototype.filter returns non-sparse array
19332 msSignatures = msSignatures.filter(function (x) { return x })
19333 }
19334
19335 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19336 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19337 break
19338 }
19339
19340 case 'pubkey': {
19341 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19342 scriptSig = scripts.pubKeyInput(pkSignature)
19343 break
19344 }
19345 }
19346 }
19347
19348 // did we build a scriptSig?
19349 if (scriptSig) {
19350 // wrap as scriptHash if necessary
19351 if (input.prevOutType === 'scripthash') {
19352 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19353 }
19354
19355 tx.setInputScript(index, scriptSig)
19356 }
19357 })
19358
19359 return tx
19360 }
19361
19362 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19363 assert(index in this.inputs, 'No input at index: ' + index)
19364 hashType = hashType || Transaction.SIGHASH_ALL
19365
19366 var input = this.inputs[index]
19367 var canSign = input.hashType &&
19368 input.prevOutScript &&
19369 input.prevOutType &&
19370 input.pubKeys &&
19371 input.scriptType &&
19372 input.signatures
19373
19374 // are we almost ready to sign?
19375 if (canSign) {
19376 // if redeemScript was provided, enforce consistency
19377 if (redeemScript) {
19378 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19379 }
19380
19381 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19382
19383 // no? prepare
19384 } else {
19385 // must be pay-to-scriptHash?
19386 if (redeemScript) {
19387 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19388 if (input.prevOutScript) {
19389 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19390
19391 var scriptHash = input.prevOutScript.chunks[1]
19392 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19393 }
19394
19395 var scriptType = scripts.classifyOutput(redeemScript)
19396 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19397
19398 var pubKeys = []
19399 switch (scriptType) {
19400 case 'multisig': {
19401 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19402 break
19403 }
19404
19405 case 'pubkeyhash': {
19406 var pkh1 = redeemScript.chunks[2]
19407 var pkh2 = privKey.pub.getAddress().hash
19408
19409 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19410 pubKeys = [privKey.pub]
19411 break
19412 }
19413
19414 case 'pubkey': {
19415 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19416 break
19417 }
19418 }
19419
19420 if (!input.prevOutScript) {
19421 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19422 input.prevOutType = 'scripthash'
19423 }
19424
19425 input.pubKeys = pubKeys
19426 input.redeemScript = redeemScript
19427 input.scriptType = scriptType
19428
19429 // cannot be pay-to-scriptHash
19430 } else {
19431 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19432
19433 // can we otherwise sign this?
19434 if (input.scriptType) {
19435 assert(input.pubKeys, input.scriptType + ' not supported')
19436
19437 // we know nothin' Jon Snow, assume pubKeyHash
19438 } else {
19439 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19440 input.prevOutType = 'pubkeyhash'
19441 input.pubKeys = [privKey.pub]
19442 input.scriptType = input.prevOutType
19443 }
19444 }
19445
19446 input.hashType = hashType
19447 input.signatures = input.signatures || []
19448 }
19449
19450 var signatureScript = input.redeemScript || input.prevOutScript
19451 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19452
19453 // enforce signature order matches public keys
19454 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19455 // maintain a local copy of unmatched signatures
19456 var unmatched = input.signatures.slice()
19457
19458 input.signatures = input.pubKeys.map(function (pubKey) {
19459 var match
19460
19461 // check for any matching signatures
19462 unmatched.some(function (signature, i) {
19463 if (!pubKey.verify(signatureHash, signature)) return false
19464 match = signature
19465
19466 // remove matched signature from unmatched
19467 unmatched.splice(i, 1)
19468
19469 return true
19470 })
19471
19472 return match || undefined
19473 })
19474 }
19475
19476 // enforce in order signing of public keys
19477 assert(input.pubKeys.some(function (pubKey, i) {
19478 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19479
19480 assert(!input.signatures[i], 'Signature already exists')
19481 var signature = privKey.sign(signatureHash)
19482 input.signatures[i] = signature
19483
19484 return true
19485 }, this), 'privateKey cannot sign for this input')
19486 }
19487
19488 module.exports = TransactionBuilder
19489
19490 }).call(this,require("buffer").Buffer)
19491 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19492 (function (Buffer){
19493 var assert = require('assert')
19494 var bufferutils = require('./bufferutils')
19495 var typeForce = require('typeforce')
19496 var networks = require('./networks')
19497 var randomBytes = require('randombytes')
19498
19499 var Address = require('./address')
19500 var HDNode = require('./hdnode')
19501 var TransactionBuilder = require('./transaction_builder')
19502 var Script = require('./script')
19503
19504 function Wallet (seed, network) {
19505 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19506
19507 seed = seed || randomBytes(32)
19508 network = network || networks.bitcoin
19509
19510 // Stored in a closure to make accidental serialization less likely
19511 var masterKey = HDNode.fromSeedBuffer(seed, network)
19512
19513 // HD first-level child derivation method should be hardened
19514 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19515 var accountZero = masterKey.deriveHardened(0)
19516 var externalAccount = accountZero.derive(0)
19517 var internalAccount = accountZero.derive(1)
19518
19519 this.addresses = []
19520 this.changeAddresses = []
19521 this.network = network
19522 this.unspents = []
19523
19524 // FIXME: remove in 2.0.0
19525 this.unspentMap = {}
19526
19527 // FIXME: remove in 2.0.0
19528 var me = this
19529 this.newMasterKey = function (seed) {
19530 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19531
19532 seed = seed || randomBytes(32)
19533 masterKey = HDNode.fromSeedBuffer(seed, network)
19534
19535 accountZero = masterKey.deriveHardened(0)
19536 externalAccount = accountZero.derive(0)
19537 internalAccount = accountZero.derive(1)
19538
19539 me.addresses = []
19540 me.changeAddresses = []
19541
19542 me.unspents = []
19543 me.unspentMap = {}
19544 }
19545
19546 this.getMasterKey = function () {
19547 return masterKey
19548 }
19549 this.getAccountZero = function () {
19550 return accountZero
19551 }
19552 this.getExternalAccount = function () {
19553 return externalAccount
19554 }
19555 this.getInternalAccount = function () {
19556 return internalAccount
19557 }
19558 }
19559
19560 Wallet.prototype.createTransaction = function (to, value, options) {
19561 // FIXME: remove in 2.0.0
19562 if (typeof options !== 'object') {
19563 if (options !== undefined) {
19564 console.warn('Non options object parameters are deprecated, use options object instead')
19565
19566 options = {
19567 fixedFee: arguments[2],
19568 changeAddress: arguments[3]
19569 }
19570 }
19571 }
19572
19573 options = options || {}
19574
19575 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19576
19577 var changeAddress = options.changeAddress
19578 var fixedFee = options.fixedFee
19579 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19580
19581 // filter by minConf, then pending and sort by descending value
19582 var unspents = this.unspents.filter(function (unspent) {
19583 return unspent.confirmations >= minConf
19584 }).filter(function (unspent) {
19585 return !unspent.pending
19586 }).sort(function (o1, o2) {
19587 return o2.value - o1.value
19588 })
19589
19590 var accum = 0
19591 var addresses = []
19592 var subTotal = value
19593
19594 var txb = new TransactionBuilder()
19595 txb.addOutput(to, value)
19596
19597 for (var i = 0; i < unspents.length; ++i) {
19598 var unspent = unspents[i]
19599 addresses.push(unspent.address)
19600
19601 txb.addInput(unspent.txHash, unspent.index)
19602
19603 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19604
19605 accum += unspent.value
19606 subTotal = value + fee
19607
19608 if (accum >= subTotal) {
19609 var change = accum - subTotal
19610
19611 if (change > this.network.dustThreshold) {
19612 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19613 }
19614
19615 break
19616 }
19617 }
19618
19619 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19620
19621 return this.signWith(txb, addresses).build()
19622 }
19623
19624 // FIXME: remove in 2.0.0
19625 Wallet.prototype.processPendingTx = function (tx) {
19626 this.__processTx(tx, true)
19627 }
19628
19629 // FIXME: remove in 2.0.0
19630 Wallet.prototype.processConfirmedTx = function (tx) {
19631 this.__processTx(tx, false)
19632 }
19633
19634 // FIXME: remove in 2.0.0
19635 Wallet.prototype.__processTx = function (tx, isPending) {
19636 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19637
19638 var txId = tx.getId()
19639 var txHash = tx.getHash()
19640
19641 tx.outs.forEach(function (txOut, i) {
19642 var address
19643
19644 try {
19645 address = Address.fromOutputScript(txOut.script, this.network).toString()
19646 } catch (e) {
19647 if (!(e.message.match(/has no matching Address/)))
19648 throw e
19649 }
19650
19651 var myAddresses = this.addresses.concat(this.changeAddresses)
19652 if (myAddresses.indexOf(address) > -1) {
19653 var lookup = txId + ':' + i
19654 if (lookup in this.unspentMap) return
19655
19656 // its unique, add it
19657 var unspent = {
19658 address: address,
19659 confirmations: 0, // no way to determine this without more information
19660 index: i,
19661 txHash: txHash,
19662 txId: txId,
19663 value: txOut.value,
19664 pending: isPending
19665 }
19666
19667 this.unspentMap[lookup] = unspent
19668 this.unspents.push(unspent)
19669 }
19670 }, this)
19671
19672 tx.ins.forEach(function (txIn) {
19673 // copy and convert to big-endian hex
19674 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19675
19676 var lookup = txInId + ':' + txIn.index
19677 if (!(lookup in this.unspentMap)) return
19678
19679 var unspent = this.unspentMap[lookup]
19680
19681 if (isPending) {
19682 unspent.pending = true
19683 unspent.spent = true
19684 } else {
19685 delete this.unspentMap[lookup]
19686
19687 this.unspents = this.unspents.filter(function (unspent2) {
19688 return unspent !== unspent2
19689 })
19690 }
19691 }, this)
19692 }
19693
19694 Wallet.prototype.generateAddress = function () {
19695 var k = this.addresses.length
19696 var address = this.getExternalAccount().derive(k).getAddress()
19697
19698 this.addresses.push(address.toString())
19699
19700 return this.getReceiveAddress()
19701 }
19702
19703 Wallet.prototype.generateChangeAddress = function () {
19704 var k = this.changeAddresses.length
19705 var address = this.getInternalAccount().derive(k).getAddress()
19706
19707 this.changeAddresses.push(address.toString())
19708
19709 return this.getChangeAddress()
19710 }
19711
19712 Wallet.prototype.getAddress = function () {
19713 if (this.addresses.length === 0) {
19714 this.generateAddress()
19715 }
19716
19717 return this.addresses[this.addresses.length - 1]
19718 }
19719
19720 Wallet.prototype.getBalance = function (minConf) {
19721 minConf = minConf || 0
19722
19723 return this.unspents.filter(function (unspent) {
19724 return unspent.confirmations >= minConf
19725
19726 // FIXME: remove spent filter in 2.0.0
19727 }).filter(function (unspent) {
19728 return !unspent.spent
19729 }).reduce(function (accum, unspent) {
19730 return accum + unspent.value
19731 }, 0)
19732 }
19733
19734 Wallet.prototype.getChangeAddress = function () {
19735 if (this.changeAddresses.length === 0) {
19736 this.generateChangeAddress()
19737 }
19738
19739 return this.changeAddresses[this.changeAddresses.length - 1]
19740 }
19741
19742 Wallet.prototype.getInternalPrivateKey = function (index) {
19743 return this.getInternalAccount().derive(index).privKey
19744 }
19745
19746 Wallet.prototype.getPrivateKey = function (index) {
19747 return this.getExternalAccount().derive(index).privKey
19748 }
19749
19750 Wallet.prototype.getPrivateKeyForAddress = function (address) {
19751 var index
19752
19753 if ((index = this.addresses.indexOf(address)) > -1) {
19754 return this.getPrivateKey(index)
19755 }
19756
19757 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19758 return this.getInternalPrivateKey(index)
19759 }
19760
19761 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
19762 }
19763
19764 Wallet.prototype.getUnspentOutputs = function (minConf) {
19765 minConf = minConf || 0
19766
19767 return this.unspents.filter(function (unspent) {
19768 return unspent.confirmations >= minConf
19769
19770 // FIXME: remove spent filter in 2.0.0
19771 }).filter(function (unspent) {
19772 return !unspent.spent
19773 }).map(function (unspent) {
19774 return {
19775 address: unspent.address,
19776 confirmations: unspent.confirmations,
19777 index: unspent.index,
19778 txId: unspent.txId,
19779 value: unspent.value,
19780
19781 // FIXME: remove in 2.0.0
19782 hash: unspent.txId,
19783 pending: unspent.pending
19784 }
19785 })
19786 }
19787
19788 Wallet.prototype.setUnspentOutputs = function (unspents) {
19789 this.unspentMap = {}
19790 this.unspents = unspents.map(function (unspent) {
19791 // FIXME: remove unspent.hash in 2.0.0
19792 var txId = unspent.txId || unspent.hash
19793 var index = unspent.index
19794
19795 // FIXME: remove in 2.0.0
19796 if (unspent.hash !== undefined) {
19797 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19798 }
19799
19800 // FIXME: remove in 2.0.0
19801 if (index === undefined) {
19802 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19803 index = unspent.outputIndex
19804 }
19805
19806 typeForce('String', txId)
19807 typeForce('Number', index)
19808 typeForce('Number', unspent.value)
19809
19810 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19811 assert.doesNotThrow(function () {
19812 Address.fromBase58Check(unspent.address)
19813 }, 'Expected Base58 Address, got ' + unspent.address)
19814 assert(isFinite(index), 'Expected finite index, got ' + index)
19815
19816 // FIXME: remove branch in 2.0.0
19817 if (unspent.confirmations !== undefined) {
19818 typeForce('Number', unspent.confirmations)
19819 }
19820
19821 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19822
19823 unspent = {
19824 address: unspent.address,
19825 confirmations: unspent.confirmations || 0,
19826 index: index,
19827 txHash: txHash,
19828 txId: txId,
19829 value: unspent.value,
19830
19831 // FIXME: remove in 2.0.0
19832 pending: unspent.pending || false
19833 }
19834
19835 // FIXME: remove in 2.0.0
19836 this.unspentMap[txId + ':' + index] = unspent
19837
19838 return unspent
19839 }, this)
19840 }
19841
19842 Wallet.prototype.signWith = function (tx, addresses) {
19843 addresses.forEach(function (address, i) {
19844 var privKey = this.getPrivateKeyForAddress(address)
19845
19846 tx.sign(i, privKey)
19847 }, this)
19848
19849 return tx
19850 }
19851
19852 function estimatePaddedFee (tx, network) {
19853 var tmpTx = tx.clone()
19854 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19855
19856 return network.estimateFee(tmpTx)
19857 }
19858
19859 // FIXME: 1.0.0 shims, remove in 2.0.0
19860 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19861 Wallet.prototype.createTx = Wallet.prototype.createTransaction
19862
19863 module.exports = Wallet
19864
19865 }).call(this,require("buffer").Buffer)
19866 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19867 });</script>
19868 <script>bitcoin.networks.shadow = {
19869 magicPrefix: '\x19ShadowCash Signed Message:\n',
19870 bip32: {
19871 public: 0xEE80286A,
19872 private: 0xEE8031E8
19873 },
19874 pubKeyHash: 0x3f,
19875 scriptHash: 0x7d,
19876 wif: 0xbf,
19877 dustThreshold: 0,
19878 feePerKb: 1000,
19879 estimateFee: function() { return "unused in this app" },
19880 };
19881
19882 bitcoin.networks.shadowtn = {
19883 magicPrefix: '\x19ShadowCash Signed Message:\n',
19884 bip32: {
19885 public: 0x76C0FDFB,
19886 private: 0x76C1077A
19887 },
19888 pubKeyHash: 0x7f,
19889 scriptHash: 0xc4,
19890 wif: 0xff,
19891 dustThreshold: 0,
19892 feePerKb: 1000,
19893 estimateFee: function() { return "unused in this app" },
19894 };
19895
19896 bitcoin.networks.clam = {
19897 bip32: {
19898 public: 0xa8c26d64,
19899 private: 0xa8c17826
19900 },
19901 pubKeyHash: 0x89,
19902 wif: 0x85,
19903 };
19904
19905 bitcoin.networks.dash = {
19906 bip32: {
19907 public: 0x0488b21e,
19908 private: 0x0488ade4
19909 },
19910 pubKeyHash: 0x4c,
19911 scriptHash: 0x10,
19912 wif: 0xcc,
19913 };
19914
19915 bitcoin.networks.dashtn = {
19916 bip32: {
19917 public: 0x043587cf,
19918 private: 0x04358394
19919 },
19920 pubKeyHash: 0x8c,
19921 scriptHash: 0x13,
19922 wif: 0xef,
19923 };
19924
19925 bitcoin.networks.game = {
19926 bip32: {
19927 public: 0x0488b21e,
19928 private: 0x0488ade4
19929 },
19930 pubKeyHash: 0x26,
19931 scriptHash: 0x05,
19932 wif: 0xa6,
19933 };
19934
19935 bitcoin.networks.namecoin = {
19936 bip32: {
19937 public: 0x0488b21e,
19938 private: 0x0488ade4
19939 },
19940 pubKeyHash: 0x34,
19941 //scriptHash: 0x10,
19942 wif: 0x80,
19943 };
19944
19945 bitcoin.networks.peercoin = {
19946 bip32: {
19947 public: 0x0488b21e,
19948 private: 0x0488ade4
19949 },
19950 pubKeyHash: 0x37,
19951 //scriptHash: 0x10,
19952 wif: 0xb7,
19953 };
19954
19955 bitcoin.networks.slimcoin = {
19956 bip32: {
19957 public: 0xef6adf10,
19958 private: 0xef69ea80
19959 },
19960 pubKeyHash: 0x3f,
19961 scriptHash: 0x7d,
19962 wif: 0x46,
19963 };
19964
19965 bitcoin.networks.slimcointn = {
19966 bip32: {
19967 public: 0x043587CF,
19968 private: 0x04358394
19969 },
19970 pubKeyHash: 0x6f,
19971 scriptHash: 0xc4,
19972 wif: 0x57,
19973 };
19974
19975 </script>
19976 <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){
19977 (function (global){
19978 'use strict';
19979
19980 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19981 // original notice:
19982
19983 /*!
19984 * The buffer module from node.js, for the browser.
19985 *
19986 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19987 * @license MIT
19988 */
19989 function compare(a, b) {
19990 if (a === b) {
19991 return 0;
19992 }
19993
19994 var x = a.length;
19995 var y = b.length;
19996
19997 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
19998 if (a[i] !== b[i]) {
19999 x = a[i];
20000 y = b[i];
20001 break;
20002 }
20003 }
20004
20005 if (x < y) {
20006 return -1;
20007 }
20008 if (y < x) {
20009 return 1;
20010 }
20011 return 0;
20012 }
20013 function isBuffer(b) {
20014 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
20015 return global.Buffer.isBuffer(b);
20016 }
20017 return !!(b != null && b._isBuffer);
20018 }
20019
20020 // based on node assert, original notice:
20021
20022 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
20023 //
20024 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
20025 //
20026 // Originally from narwhal.js (http://narwhaljs.org)
20027 // Copyright (c) 2009 Thomas Robinson <280north.com>
20028 //
20029 // Permission is hereby granted, free of charge, to any person obtaining a copy
20030 // of this software and associated documentation files (the 'Software'), to
20031 // deal in the Software without restriction, including without limitation the
20032 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
20033 // sell copies of the Software, and to permit persons to whom the Software is
20034 // furnished to do so, subject to the following conditions:
20035 //
20036 // The above copyright notice and this permission notice shall be included in
20037 // all copies or substantial portions of the Software.
20038 //
20039 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20040 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20041 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20042 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20043 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20044 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20045
20046 var util = require('util/');
20047 var hasOwn = Object.prototype.hasOwnProperty;
20048 var pSlice = Array.prototype.slice;
20049 var functionsHaveNames = (function () {
20050 return function foo() {}.name === 'foo';
20051 }());
20052 function pToString (obj) {
20053 return Object.prototype.toString.call(obj);
20054 }
20055 function isView(arrbuf) {
20056 if (isBuffer(arrbuf)) {
20057 return false;
20058 }
20059 if (typeof global.ArrayBuffer !== 'function') {
20060 return false;
20061 }
20062 if (typeof ArrayBuffer.isView === 'function') {
20063 return ArrayBuffer.isView(arrbuf);
20064 }
20065 if (!arrbuf) {
20066 return false;
20067 }
20068 if (arrbuf instanceof DataView) {
20069 return true;
20070 }
20071 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20072 return true;
20073 }
20074 return false;
20075 }
20076 // 1. The assert module provides functions that throw
20077 // AssertionError's when particular conditions are not met. The
20078 // assert module must conform to the following interface.
20079
20080 var assert = module.exports = ok;
20081
20082 // 2. The AssertionError is defined in assert.
20083 // new assert.AssertionError({ message: message,
20084 // actual: actual,
20085 // expected: expected })
20086
20087 var regex = /\s*function\s+([^\(\s]*)\s*/;
20088 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20089 function getName(func) {
20090 if (!util.isFunction(func)) {
20091 return;
20092 }
20093 if (functionsHaveNames) {
20094 return func.name;
20095 }
20096 var str = func.toString();
20097 var match = str.match(regex);
20098 return match && match[1];
20099 }
20100 assert.AssertionError = function AssertionError(options) {
20101 this.name = 'AssertionError';
20102 this.actual = options.actual;
20103 this.expected = options.expected;
20104 this.operator = options.operator;
20105 if (options.message) {
20106 this.message = options.message;
20107 this.generatedMessage = false;
20108 } else {
20109 this.message = getMessage(this);
20110 this.generatedMessage = true;
20111 }
20112 var stackStartFunction = options.stackStartFunction || fail;
20113 if (Error.captureStackTrace) {
20114 Error.captureStackTrace(this, stackStartFunction);
20115 } else {
20116 // non v8 browsers so we can have a stacktrace
20117 var err = new Error();
20118 if (err.stack) {
20119 var out = err.stack;
20120
20121 // try to strip useless frames
20122 var fn_name = getName(stackStartFunction);
20123 var idx = out.indexOf('\n' + fn_name);
20124 if (idx >= 0) {
20125 // once we have located the function frame
20126 // we need to strip out everything before it (and its line)
20127 var next_line = out.indexOf('\n', idx + 1);
20128 out = out.substring(next_line + 1);
20129 }
20130
20131 this.stack = out;
20132 }
20133 }
20134 };
20135
20136 // assert.AssertionError instanceof Error
20137 util.inherits(assert.AssertionError, Error);
20138
20139 function truncate(s, n) {
20140 if (typeof s === 'string') {
20141 return s.length < n ? s : s.slice(0, n);
20142 } else {
20143 return s;
20144 }
20145 }
20146 function inspect(something) {
20147 if (functionsHaveNames || !util.isFunction(something)) {
20148 return util.inspect(something);
20149 }
20150 var rawname = getName(something);
20151 var name = rawname ? ': ' + rawname : '';
20152 return '[Function' + name + ']';
20153 }
20154 function getMessage(self) {
20155 return truncate(inspect(self.actual), 128) + ' ' +
20156 self.operator + ' ' +
20157 truncate(inspect(self.expected), 128);
20158 }
20159
20160 // At present only the three keys mentioned above are used and
20161 // understood by the spec. Implementations or sub modules can pass
20162 // other keys to the AssertionError's constructor - they will be
20163 // ignored.
20164
20165 // 3. All of the following functions must throw an AssertionError
20166 // when a corresponding condition is not met, with a message that
20167 // may be undefined if not provided. All assertion methods provide
20168 // both the actual and expected values to the assertion error for
20169 // display purposes.
20170
20171 function fail(actual, expected, message, operator, stackStartFunction) {
20172 throw new assert.AssertionError({
20173 message: message,
20174 actual: actual,
20175 expected: expected,
20176 operator: operator,
20177 stackStartFunction: stackStartFunction
20178 });
20179 }
20180
20181 // EXTENSION! allows for well behaved errors defined elsewhere.
20182 assert.fail = fail;
20183
20184 // 4. Pure assertion tests whether a value is truthy, as determined
20185 // by !!guard.
20186 // assert.ok(guard, message_opt);
20187 // This statement is equivalent to assert.equal(true, !!guard,
20188 // message_opt);. To test strictly for the value true, use
20189 // assert.strictEqual(true, guard, message_opt);.
20190
20191 function ok(value, message) {
20192 if (!value) fail(value, true, message, '==', assert.ok);
20193 }
20194 assert.ok = ok;
20195
20196 // 5. The equality assertion tests shallow, coercive equality with
20197 // ==.
20198 // assert.equal(actual, expected, message_opt);
20199
20200 assert.equal = function equal(actual, expected, message) {
20201 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20202 };
20203
20204 // 6. The non-equality assertion tests for whether two objects are not equal
20205 // with != assert.notEqual(actual, expected, message_opt);
20206
20207 assert.notEqual = function notEqual(actual, expected, message) {
20208 if (actual == expected) {
20209 fail(actual, expected, message, '!=', assert.notEqual);
20210 }
20211 };
20212
20213 // 7. The equivalence assertion tests a deep equality relation.
20214 // assert.deepEqual(actual, expected, message_opt);
20215
20216 assert.deepEqual = function deepEqual(actual, expected, message) {
20217 if (!_deepEqual(actual, expected, false)) {
20218 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
20219 }
20220 };
20221
20222 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20223 if (!_deepEqual(actual, expected, true)) {
20224 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
20225 }
20226 };
20227
20228 function _deepEqual(actual, expected, strict, memos) {
20229 // 7.1. All identical values are equivalent, as determined by ===.
20230 if (actual === expected) {
20231 return true;
20232 } else if (isBuffer(actual) && isBuffer(expected)) {
20233 return compare(actual, expected) === 0;
20234
20235 // 7.2. If the expected value is a Date object, the actual value is
20236 // equivalent if it is also a Date object that refers to the same time.
20237 } else if (util.isDate(actual) && util.isDate(expected)) {
20238 return actual.getTime() === expected.getTime();
20239
20240 // 7.3 If the expected value is a RegExp object, the actual value is
20241 // equivalent if it is also a RegExp object with the same source and
20242 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20243 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20244 return actual.source === expected.source &&
20245 actual.global === expected.global &&
20246 actual.multiline === expected.multiline &&
20247 actual.lastIndex === expected.lastIndex &&
20248 actual.ignoreCase === expected.ignoreCase;
20249
20250 // 7.4. Other pairs that do not both pass typeof value == 'object',
20251 // equivalence is determined by ==.
20252 } else if ((actual === null || typeof actual !== 'object') &&
20253 (expected === null || typeof expected !== 'object')) {
20254 return strict ? actual === expected : actual == expected;
20255
20256 // If both values are instances of typed arrays, wrap their underlying
20257 // ArrayBuffers in a Buffer each to increase performance
20258 // This optimization requires the arrays to have the same type as checked by
20259 // Object.prototype.toString (aka pToString). Never perform binary
20260 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20261 // bit patterns are not identical.
20262 } else if (isView(actual) && isView(expected) &&
20263 pToString(actual) === pToString(expected) &&
20264 !(actual instanceof Float32Array ||
20265 actual instanceof Float64Array)) {
20266 return compare(new Uint8Array(actual.buffer),
20267 new Uint8Array(expected.buffer)) === 0;
20268
20269 // 7.5 For all other Object pairs, including Array objects, equivalence is
20270 // determined by having the same number of owned properties (as verified
20271 // with Object.prototype.hasOwnProperty.call), the same set of keys
20272 // (although not necessarily the same order), equivalent values for every
20273 // corresponding key, and an identical 'prototype' property. Note: this
20274 // accounts for both named and indexed properties on Arrays.
20275 } else if (isBuffer(actual) !== isBuffer(expected)) {
20276 return false;
20277 } else {
20278 memos = memos || {actual: [], expected: []};
20279
20280 var actualIndex = memos.actual.indexOf(actual);
20281 if (actualIndex !== -1) {
20282 if (actualIndex === memos.expected.indexOf(expected)) {
20283 return true;
20284 }
20285 }
20286
20287 memos.actual.push(actual);
20288 memos.expected.push(expected);
20289
20290 return objEquiv(actual, expected, strict, memos);
20291 }
20292 }
20293
20294 function isArguments(object) {
20295 return Object.prototype.toString.call(object) == '[object Arguments]';
20296 }
20297
20298 function objEquiv(a, b, strict, actualVisitedObjects) {
20299 if (a === null || a === undefined || b === null || b === undefined)
20300 return false;
20301 // if one is a primitive, the other must be same
20302 if (util.isPrimitive(a) || util.isPrimitive(b))
20303 return a === b;
20304 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20305 return false;
20306 var aIsArgs = isArguments(a);
20307 var bIsArgs = isArguments(b);
20308 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20309 return false;
20310 if (aIsArgs) {
20311 a = pSlice.call(a);
20312 b = pSlice.call(b);
20313 return _deepEqual(a, b, strict);
20314 }
20315 var ka = objectKeys(a);
20316 var kb = objectKeys(b);
20317 var key, i;
20318 // having the same number of owned properties (keys incorporates
20319 // hasOwnProperty)
20320 if (ka.length !== kb.length)
20321 return false;
20322 //the same set of keys (although not necessarily the same order),
20323 ka.sort();
20324 kb.sort();
20325 //~~~cheap key test
20326 for (i = ka.length - 1; i >= 0; i--) {
20327 if (ka[i] !== kb[i])
20328 return false;
20329 }
20330 //equivalent values for every corresponding key, and
20331 //~~~possibly expensive deep test
20332 for (i = ka.length - 1; i >= 0; i--) {
20333 key = ka[i];
20334 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20335 return false;
20336 }
20337 return true;
20338 }
20339
20340 // 8. The non-equivalence assertion tests for any deep inequality.
20341 // assert.notDeepEqual(actual, expected, message_opt);
20342
20343 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20344 if (_deepEqual(actual, expected, false)) {
20345 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
20346 }
20347 };
20348
20349 assert.notDeepStrictEqual = notDeepStrictEqual;
20350 function notDeepStrictEqual(actual, expected, message) {
20351 if (_deepEqual(actual, expected, true)) {
20352 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20353 }
20354 }
20355
20356
20357 // 9. The strict equality assertion tests strict equality, as determined by ===.
20358 // assert.strictEqual(actual, expected, message_opt);
20359
20360 assert.strictEqual = function strictEqual(actual, expected, message) {
20361 if (actual !== expected) {
20362 fail(actual, expected, message, '===', assert.strictEqual);
20363 }
20364 };
20365
20366 // 10. The strict non-equality assertion tests for strict inequality, as
20367 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
20368
20369 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20370 if (actual === expected) {
20371 fail(actual, expected, message, '!==', assert.notStrictEqual);
20372 }
20373 };
20374
20375 function expectedException(actual, expected) {
20376 if (!actual || !expected) {
20377 return false;
20378 }
20379
20380 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20381 return expected.test(actual);
20382 }
20383
20384 try {
20385 if (actual instanceof expected) {
20386 return true;
20387 }
20388 } catch (e) {
20389 // Ignore. The instanceof check doesn't work for arrow functions.
20390 }
20391
20392 if (Error.isPrototypeOf(expected)) {
20393 return false;
20394 }
20395
20396 return expected.call({}, actual) === true;
20397 }
20398
20399 function _tryBlock(block) {
20400 var error;
20401 try {
20402 block();
20403 } catch (e) {
20404 error = e;
20405 }
20406 return error;
20407 }
20408
20409 function _throws(shouldThrow, block, expected, message) {
20410 var actual;
20411
20412 if (typeof block !== 'function') {
20413 throw new TypeError('"block" argument must be a function');
20414 }
20415
20416 if (typeof expected === 'string') {
20417 message = expected;
20418 expected = null;
20419 }
20420
20421 actual = _tryBlock(block);
20422
20423 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20424 (message ? ' ' + message : '.');
20425
20426 if (shouldThrow && !actual) {
20427 fail(actual, expected, 'Missing expected exception' + message);
20428 }
20429
20430 var userProvidedMessage = typeof message === 'string';
20431 var isUnwantedException = !shouldThrow && util.isError(actual);
20432 var isUnexpectedException = !shouldThrow && actual && !expected;
20433
20434 if ((isUnwantedException &&
20435 userProvidedMessage &&
20436 expectedException(actual, expected)) ||
20437 isUnexpectedException) {
20438 fail(actual, expected, 'Got unwanted exception' + message);
20439 }
20440
20441 if ((shouldThrow && actual && expected &&
20442 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20443 throw actual;
20444 }
20445 }
20446
20447 // 11. Expected to throw an error:
20448 // assert.throws(block, Error_opt, message_opt);
20449
20450 assert.throws = function(block, /*optional*/error, /*optional*/message) {
20451 _throws(true, block, error, message);
20452 };
20453
20454 // EXTENSION! This is annoying to write outside this module.
20455 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20456 _throws(false, block, error, message);
20457 };
20458
20459 assert.ifError = function(err) { if (err) throw err; };
20460
20461 var objectKeys = Object.keys || function (obj) {
20462 var keys = [];
20463 for (var key in obj) {
20464 if (hasOwn.call(obj, key)) keys.push(key);
20465 }
20466 return keys;
20467 };
20468
20469 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20470 },{"util/":30}],2:[function(require,module,exports){
20471 'use strict'
20472
20473 exports.byteLength = byteLength
20474 exports.toByteArray = toByteArray
20475 exports.fromByteArray = fromByteArray
20476
20477 var lookup = []
20478 var revLookup = []
20479 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20480
20481 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20482 for (var i = 0, len = code.length; i < len; ++i) {
20483 lookup[i] = code[i]
20484 revLookup[code.charCodeAt(i)] = i
20485 }
20486
20487 revLookup['-'.charCodeAt(0)] = 62
20488 revLookup['_'.charCodeAt(0)] = 63
20489
20490 function placeHoldersCount (b64) {
20491 var len = b64.length
20492 if (len % 4 > 0) {
20493 throw new Error('Invalid string. Length must be a multiple of 4')
20494 }
20495
20496 // the number of equal signs (place holders)
20497 // if there are two placeholders, than the two characters before it
20498 // represent one byte
20499 // if there is only one, then the three characters before it represent 2 bytes
20500 // this is just a cheap hack to not do indexOf twice
20501 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
20502 }
20503
20504 function byteLength (b64) {
20505 // base64 is 4/3 + up to two characters of the original data
20506 return b64.length * 3 / 4 - placeHoldersCount(b64)
20507 }
20508
20509 function toByteArray (b64) {
20510 var i, j, l, tmp, placeHolders, arr
20511 var len = b64.length
20512 placeHolders = placeHoldersCount(b64)
20513
20514 arr = new Arr(len * 3 / 4 - placeHolders)
20515
20516 // if there are placeholders, only get up to the last complete 4 chars
20517 l = placeHolders > 0 ? len - 4 : len
20518
20519 var L = 0
20520
20521 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20522 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20523 arr[L++] = (tmp >> 16) & 0xFF
20524 arr[L++] = (tmp >> 8) & 0xFF
20525 arr[L++] = tmp & 0xFF
20526 }
20527
20528 if (placeHolders === 2) {
20529 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20530 arr[L++] = tmp & 0xFF
20531 } else if (placeHolders === 1) {
20532 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20533 arr[L++] = (tmp >> 8) & 0xFF
20534 arr[L++] = tmp & 0xFF
20535 }
20536
20537 return arr
20538 }
20539
20540 function tripletToBase64 (num) {
20541 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
20542 }
20543
20544 function encodeChunk (uint8, start, end) {
20545 var tmp
20546 var output = []
20547 for (var i = start; i < end; i += 3) {
20548 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20549 output.push(tripletToBase64(tmp))
20550 }
20551 return output.join('')
20552 }
20553
20554 function fromByteArray (uint8) {
20555 var tmp
20556 var len = uint8.length
20557 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20558 var output = ''
20559 var parts = []
20560 var maxChunkLength = 16383 // must be multiple of 3
20561
20562 // go through the array every three bytes, we'll deal with trailing stuff later
20563 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20564 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20565 }
20566
20567 // pad the end with zeros, but make sure to not forget the extra bytes
20568 if (extraBytes === 1) {
20569 tmp = uint8[len - 1]
20570 output += lookup[tmp >> 2]
20571 output += lookup[(tmp << 4) & 0x3F]
20572 output += '=='
20573 } else if (extraBytes === 2) {
20574 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20575 output += lookup[tmp >> 10]
20576 output += lookup[(tmp >> 4) & 0x3F]
20577 output += lookup[(tmp << 2) & 0x3F]
20578 output += '='
20579 }
20580
20581 parts.push(output)
20582
20583 return parts.join('')
20584 }
20585
20586 },{}],3:[function(require,module,exports){
20587
20588 },{}],4:[function(require,module,exports){
20589 (function (global){
20590 'use strict';
20591
20592 var buffer = require('buffer');
20593 var Buffer = buffer.Buffer;
20594 var SlowBuffer = buffer.SlowBuffer;
20595 var MAX_LEN = buffer.kMaxLength || 2147483647;
20596 exports.alloc = function alloc(size, fill, encoding) {
20597 if (typeof Buffer.alloc === 'function') {
20598 return Buffer.alloc(size, fill, encoding);
20599 }
20600 if (typeof encoding === 'number') {
20601 throw new TypeError('encoding must not be number');
20602 }
20603 if (typeof size !== 'number') {
20604 throw new TypeError('size must be a number');
20605 }
20606 if (size > MAX_LEN) {
20607 throw new RangeError('size is too large');
20608 }
20609 var enc = encoding;
20610 var _fill = fill;
20611 if (_fill === undefined) {
20612 enc = undefined;
20613 _fill = 0;
20614 }
20615 var buf = new Buffer(size);
20616 if (typeof _fill === 'string') {
20617 var fillBuf = new Buffer(_fill, enc);
20618 var flen = fillBuf.length;
20619 var i = -1;
20620 while (++i < size) {
20621 buf[i] = fillBuf[i % flen];
20622 }
20623 } else {
20624 buf.fill(_fill);
20625 }
20626 return buf;
20627 }
20628 exports.allocUnsafe = function allocUnsafe(size) {
20629 if (typeof Buffer.allocUnsafe === 'function') {
20630 return Buffer.allocUnsafe(size);
20631 }
20632 if (typeof size !== 'number') {
20633 throw new TypeError('size must be a number');
20634 }
20635 if (size > MAX_LEN) {
20636 throw new RangeError('size is too large');
20637 }
20638 return new Buffer(size);
20639 }
20640 exports.from = function from(value, encodingOrOffset, length) {
20641 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20642 return Buffer.from(value, encodingOrOffset, length);
20643 }
20644 if (typeof value === 'number') {
20645 throw new TypeError('"value" argument must not be a number');
20646 }
20647 if (typeof value === 'string') {
20648 return new Buffer(value, encodingOrOffset);
20649 }
20650 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20651 var offset = encodingOrOffset;
20652 if (arguments.length === 1) {
20653 return new Buffer(value);
20654 }
20655 if (typeof offset === 'undefined') {
20656 offset = 0;
20657 }
20658 var len = length;
20659 if (typeof len === 'undefined') {
20660 len = value.byteLength - offset;
20661 }
20662 if (offset >= value.byteLength) {
20663 throw new RangeError('\'offset\' is out of bounds');
20664 }
20665 if (len > value.byteLength - offset) {
20666 throw new RangeError('\'length\' is out of bounds');
20667 }
20668 return new Buffer(value.slice(offset, offset + len));
20669 }
20670 if (Buffer.isBuffer(value)) {
20671 var out = new Buffer(value.length);
20672 value.copy(out, 0, 0, value.length);
20673 return out;
20674 }
20675 if (value) {
20676 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20677 return new Buffer(value);
20678 }
20679 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20680 return new Buffer(value.data);
20681 }
20682 }
20683
20684 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
20685 }
20686 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20687 if (typeof Buffer.allocUnsafeSlow === 'function') {
20688 return Buffer.allocUnsafeSlow(size);
20689 }
20690 if (typeof size !== 'number') {
20691 throw new TypeError('size must be a number');
20692 }
20693 if (size >= MAX_LEN) {
20694 throw new RangeError('size is too large');
20695 }
20696 return new SlowBuffer(size);
20697 }
20698
20699 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20700 },{"buffer":5}],5:[function(require,module,exports){
20701 /*!
20702 * The buffer module from node.js, for the browser.
20703 *
20704 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20705 * @license MIT
20706 */
20707 /* eslint-disable no-proto */
20708
20709 'use strict'
20710
20711 var base64 = require('base64-js')
20712 var ieee754 = require('ieee754')
20713
20714 exports.Buffer = Buffer
20715 exports.SlowBuffer = SlowBuffer
20716 exports.INSPECT_MAX_BYTES = 50
20717
20718 var K_MAX_LENGTH = 0x7fffffff
20719 exports.kMaxLength = K_MAX_LENGTH
20720
20721 /**
20722 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20723 * === true Use Uint8Array implementation (fastest)
20724 * === false Print warning and recommend using `buffer` v4.x which has an Object
20725 * implementation (most compatible, even IE6)
20726 *
20727 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20728 * Opera 11.6+, iOS 4.2+.
20729 *
20730 * We report that the browser does not support typed arrays if the are not subclassable
20731 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20732 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20733 * for __proto__ and has a buggy typed array implementation.
20734 */
20735 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20736
20737 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20738 typeof console.error === 'function') {
20739 console.error(
20740 'This browser lacks typed array (Uint8Array) support which is required by ' +
20741 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20742 )
20743 }
20744
20745 function typedArraySupport () {
20746 // Can typed array instances can be augmented?
20747 try {
20748 var arr = new Uint8Array(1)
20749 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20750 return arr.foo() === 42
20751 } catch (e) {
20752 return false
20753 }
20754 }
20755
20756 function createBuffer (length) {
20757 if (length > K_MAX_LENGTH) {
20758 throw new RangeError('Invalid typed array length')
20759 }
20760 // Return an augmented `Uint8Array` instance
20761 var buf = new Uint8Array(length)
20762 buf.__proto__ = Buffer.prototype
20763 return buf
20764 }
20765
20766 /**
20767 * The Buffer constructor returns instances of `Uint8Array` that have their
20768 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20769 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20770 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20771 * returns a single octet.
20772 *
20773 * The `Uint8Array` prototype remains unmodified.
20774 */
20775
20776 function Buffer (arg, encodingOrOffset, length) {
20777 // Common case.
20778 if (typeof arg === 'number') {
20779 if (typeof encodingOrOffset === 'string') {
20780 throw new Error(
20781 'If encoding is specified then the first argument must be a string'
20782 )
20783 }
20784 return allocUnsafe(arg)
20785 }
20786 return from(arg, encodingOrOffset, length)
20787 }
20788
20789 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20790 if (typeof Symbol !== 'undefined' && Symbol.species &&
20791 Buffer[Symbol.species] === Buffer) {
20792 Object.defineProperty(Buffer, Symbol.species, {
20793 value: null,
20794 configurable: true,
20795 enumerable: false,
20796 writable: false
20797 })
20798 }
20799
20800 Buffer.poolSize = 8192 // not used by this implementation
20801
20802 function from (value, encodingOrOffset, length) {
20803 if (typeof value === 'number') {
20804 throw new TypeError('"value" argument must not be a number')
20805 }
20806
20807 if (value instanceof ArrayBuffer) {
20808 return fromArrayBuffer(value, encodingOrOffset, length)
20809 }
20810
20811 if (typeof value === 'string') {
20812 return fromString(value, encodingOrOffset)
20813 }
20814
20815 return fromObject(value)
20816 }
20817
20818 /**
20819 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20820 * if value is a number.
20821 * Buffer.from(str[, encoding])
20822 * Buffer.from(array)
20823 * Buffer.from(buffer)
20824 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20825 **/
20826 Buffer.from = function (value, encodingOrOffset, length) {
20827 return from(value, encodingOrOffset, length)
20828 }
20829
20830 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20831 // https://github.com/feross/buffer/pull/148
20832 Buffer.prototype.__proto__ = Uint8Array.prototype
20833 Buffer.__proto__ = Uint8Array
20834
20835 function assertSize (size) {
20836 if (typeof size !== 'number') {
20837 throw new TypeError('"size" argument must be a number')
20838 } else if (size < 0) {
20839 throw new RangeError('"size" argument must not be negative')
20840 }
20841 }
20842
20843 function alloc (size, fill, encoding) {
20844 assertSize(size)
20845 if (size <= 0) {
20846 return createBuffer(size)
20847 }
20848 if (fill !== undefined) {
20849 // Only pay attention to encoding if it's a string. This
20850 // prevents accidentally sending in a number that would
20851 // be interpretted as a start offset.
20852 return typeof encoding === 'string'
20853 ? createBuffer(size).fill(fill, encoding)
20854 : createBuffer(size).fill(fill)
20855 }
20856 return createBuffer(size)
20857 }
20858
20859 /**
20860 * Creates a new filled Buffer instance.
20861 * alloc(size[, fill[, encoding]])
20862 **/
20863 Buffer.alloc = function (size, fill, encoding) {
20864 return alloc(size, fill, encoding)
20865 }
20866
20867 function allocUnsafe (size) {
20868 assertSize(size)
20869 return createBuffer(size < 0 ? 0 : checked(size) | 0)
20870 }
20871
20872 /**
20873 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20874 * */
20875 Buffer.allocUnsafe = function (size) {
20876 return allocUnsafe(size)
20877 }
20878 /**
20879 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20880 */
20881 Buffer.allocUnsafeSlow = function (size) {
20882 return allocUnsafe(size)
20883 }
20884
20885 function fromString (string, encoding) {
20886 if (typeof encoding !== 'string' || encoding === '') {
20887 encoding = 'utf8'
20888 }
20889
20890 if (!Buffer.isEncoding(encoding)) {
20891 throw new TypeError('"encoding" must be a valid string encoding')
20892 }
20893
20894 var length = byteLength(string, encoding) | 0
20895 var buf = createBuffer(length)
20896
20897 var actual = buf.write(string, encoding)
20898
20899 if (actual !== length) {
20900 // Writing a hex string, for example, that contains invalid characters will
20901 // cause everything after the first invalid character to be ignored. (e.g.
20902 // 'abxxcd' will be treated as 'ab')
20903 buf = buf.slice(0, actual)
20904 }
20905
20906 return buf
20907 }
20908
20909 function fromArrayLike (array) {
20910 var length = array.length < 0 ? 0 : checked(array.length) | 0
20911 var buf = createBuffer(length)
20912 for (var i = 0; i < length; i += 1) {
20913 buf[i] = array[i] & 255
20914 }
20915 return buf
20916 }
20917
20918 function fromArrayBuffer (array, byteOffset, length) {
20919 if (byteOffset < 0 || array.byteLength < byteOffset) {
20920 throw new RangeError('\'offset\' is out of bounds')
20921 }
20922
20923 if (array.byteLength < byteOffset + (length || 0)) {
20924 throw new RangeError('\'length\' is out of bounds')
20925 }
20926
20927 var buf
20928 if (byteOffset === undefined && length === undefined) {
20929 buf = new Uint8Array(array)
20930 } else if (length === undefined) {
20931 buf = new Uint8Array(array, byteOffset)
20932 } else {
20933 buf = new Uint8Array(array, byteOffset, length)
20934 }
20935
20936 // Return an augmented `Uint8Array` instance
20937 buf.__proto__ = Buffer.prototype
20938 return buf
20939 }
20940
20941 function fromObject (obj) {
20942 if (Buffer.isBuffer(obj)) {
20943 var len = checked(obj.length) | 0
20944 var buf = createBuffer(len)
20945
20946 if (buf.length === 0) {
20947 return buf
20948 }
20949
20950 obj.copy(buf, 0, 0, len)
20951 return buf
20952 }
20953
20954 if (obj) {
20955 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20956 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20957 return createBuffer(0)
20958 }
20959 return fromArrayLike(obj)
20960 }
20961
20962 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20963 return fromArrayLike(obj.data)
20964 }
20965 }
20966
20967 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
20968 }
20969
20970 function checked (length) {
20971 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20972 // length is NaN (which is otherwise coerced to zero.)
20973 if (length >= K_MAX_LENGTH) {
20974 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20975 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
20976 }
20977 return length | 0
20978 }
20979
20980 function SlowBuffer (length) {
20981 if (+length != length) { // eslint-disable-line eqeqeq
20982 length = 0
20983 }
20984 return Buffer.alloc(+length)
20985 }
20986
20987 Buffer.isBuffer = function isBuffer (b) {
20988 return b != null && b._isBuffer === true
20989 }
20990
20991 Buffer.compare = function compare (a, b) {
20992 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
20993 throw new TypeError('Arguments must be Buffers')
20994 }
20995
20996 if (a === b) return 0
20997
20998 var x = a.length
20999 var y = b.length
21000
21001 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
21002 if (a[i] !== b[i]) {
21003 x = a[i]
21004 y = b[i]
21005 break
21006 }
21007 }
21008
21009 if (x < y) return -1
21010 if (y < x) return 1
21011 return 0
21012 }
21013
21014 Buffer.isEncoding = function isEncoding (encoding) {
21015 switch (String(encoding).toLowerCase()) {
21016 case 'hex':
21017 case 'utf8':
21018 case 'utf-8':
21019 case 'ascii':
21020 case 'latin1':
21021 case 'binary':
21022 case 'base64':
21023 case 'ucs2':
21024 case 'ucs-2':
21025 case 'utf16le':
21026 case 'utf-16le':
21027 return true
21028 default:
21029 return false
21030 }
21031 }
21032
21033 Buffer.concat = function concat (list, length) {
21034 if (!Array.isArray(list)) {
21035 throw new TypeError('"list" argument must be an Array of Buffers')
21036 }
21037
21038 if (list.length === 0) {
21039 return Buffer.alloc(0)
21040 }
21041
21042 var i
21043 if (length === undefined) {
21044 length = 0
21045 for (i = 0; i < list.length; ++i) {
21046 length += list[i].length
21047 }
21048 }
21049
21050 var buffer = Buffer.allocUnsafe(length)
21051 var pos = 0
21052 for (i = 0; i < list.length; ++i) {
21053 var buf = list[i]
21054 if (!Buffer.isBuffer(buf)) {
21055 throw new TypeError('"list" argument must be an Array of Buffers')
21056 }
21057 buf.copy(buffer, pos)
21058 pos += buf.length
21059 }
21060 return buffer
21061 }
21062
21063 function byteLength (string, encoding) {
21064 if (Buffer.isBuffer(string)) {
21065 return string.length
21066 }
21067 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21068 return string.byteLength
21069 }
21070 if (typeof string !== 'string') {
21071 string = '' + string
21072 }
21073
21074 var len = string.length
21075 if (len === 0) return 0
21076
21077 // Use a for loop to avoid recursion
21078 var loweredCase = false
21079 for (;;) {
21080 switch (encoding) {
21081 case 'ascii':
21082 case 'latin1':
21083 case 'binary':
21084 return len
21085 case 'utf8':
21086 case 'utf-8':
21087 case undefined:
21088 return utf8ToBytes(string).length
21089 case 'ucs2':
21090 case 'ucs-2':
21091 case 'utf16le':
21092 case 'utf-16le':
21093 return len * 2
21094 case 'hex':
21095 return len >>> 1
21096 case 'base64':
21097 return base64ToBytes(string).length
21098 default:
21099 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21100 encoding = ('' + encoding).toLowerCase()
21101 loweredCase = true
21102 }
21103 }
21104 }
21105 Buffer.byteLength = byteLength
21106
21107 function slowToString (encoding, start, end) {
21108 var loweredCase = false
21109
21110 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21111 // property of a typed array.
21112
21113 // This behaves neither like String nor Uint8Array in that we set start/end
21114 // to their upper/lower bounds if the value passed is out of range.
21115 // undefined is handled specially as per ECMA-262 6th Edition,
21116 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21117 if (start === undefined || start < 0) {
21118 start = 0
21119 }
21120 // Return early if start > this.length. Done here to prevent potential uint32
21121 // coercion fail below.
21122 if (start > this.length) {
21123 return ''
21124 }
21125
21126 if (end === undefined || end > this.length) {
21127 end = this.length
21128 }
21129
21130 if (end <= 0) {
21131 return ''
21132 }
21133
21134 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21135 end >>>= 0
21136 start >>>= 0
21137
21138 if (end <= start) {
21139 return ''
21140 }
21141
21142 if (!encoding) encoding = 'utf8'
21143
21144 while (true) {
21145 switch (encoding) {
21146 case 'hex':
21147 return hexSlice(this, start, end)
21148
21149 case 'utf8':
21150 case 'utf-8':
21151 return utf8Slice(this, start, end)
21152
21153 case 'ascii':
21154 return asciiSlice(this, start, end)
21155
21156 case 'latin1':
21157 case 'binary':
21158 return latin1Slice(this, start, end)
21159
21160 case 'base64':
21161 return base64Slice(this, start, end)
21162
21163 case 'ucs2':
21164 case 'ucs-2':
21165 case 'utf16le':
21166 case 'utf-16le':
21167 return utf16leSlice(this, start, end)
21168
21169 default:
21170 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21171 encoding = (encoding + '').toLowerCase()
21172 loweredCase = true
21173 }
21174 }
21175 }
21176
21177 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21178 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21179 // reliably in a browserify context because there could be multiple different
21180 // copies of the 'buffer' package in use. This method works even for Buffer
21181 // instances that were created from another copy of the `buffer` package.
21182 // See: https://github.com/feross/buffer/issues/154
21183 Buffer.prototype._isBuffer = true
21184
21185 function swap (b, n, m) {
21186 var i = b[n]
21187 b[n] = b[m]
21188 b[m] = i
21189 }
21190
21191 Buffer.prototype.swap16 = function swap16 () {
21192 var len = this.length
21193 if (len % 2 !== 0) {
21194 throw new RangeError('Buffer size must be a multiple of 16-bits')
21195 }
21196 for (var i = 0; i < len; i += 2) {
21197 swap(this, i, i + 1)
21198 }
21199 return this
21200 }
21201
21202 Buffer.prototype.swap32 = function swap32 () {
21203 var len = this.length
21204 if (len % 4 !== 0) {
21205 throw new RangeError('Buffer size must be a multiple of 32-bits')
21206 }
21207 for (var i = 0; i < len; i += 4) {
21208 swap(this, i, i + 3)
21209 swap(this, i + 1, i + 2)
21210 }
21211 return this
21212 }
21213
21214 Buffer.prototype.swap64 = function swap64 () {
21215 var len = this.length
21216 if (len % 8 !== 0) {
21217 throw new RangeError('Buffer size must be a multiple of 64-bits')
21218 }
21219 for (var i = 0; i < len; i += 8) {
21220 swap(this, i, i + 7)
21221 swap(this, i + 1, i + 6)
21222 swap(this, i + 2, i + 5)
21223 swap(this, i + 3, i + 4)
21224 }
21225 return this
21226 }
21227
21228 Buffer.prototype.toString = function toString () {
21229 var length = this.length
21230 if (length === 0) return ''
21231 if (arguments.length === 0) return utf8Slice(this, 0, length)
21232 return slowToString.apply(this, arguments)
21233 }
21234
21235 Buffer.prototype.equals = function equals (b) {
21236 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21237 if (this === b) return true
21238 return Buffer.compare(this, b) === 0
21239 }
21240
21241 Buffer.prototype.inspect = function inspect () {
21242 var str = ''
21243 var max = exports.INSPECT_MAX_BYTES
21244 if (this.length > 0) {
21245 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21246 if (this.length > max) str += ' ... '
21247 }
21248 return '<Buffer ' + str + '>'
21249 }
21250
21251 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21252 if (!Buffer.isBuffer(target)) {
21253 throw new TypeError('Argument must be a Buffer')
21254 }
21255
21256 if (start === undefined) {
21257 start = 0
21258 }
21259 if (end === undefined) {
21260 end = target ? target.length : 0
21261 }
21262 if (thisStart === undefined) {
21263 thisStart = 0
21264 }
21265 if (thisEnd === undefined) {
21266 thisEnd = this.length
21267 }
21268
21269 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21270 throw new RangeError('out of range index')
21271 }
21272
21273 if (thisStart >= thisEnd && start >= end) {
21274 return 0
21275 }
21276 if (thisStart >= thisEnd) {
21277 return -1
21278 }
21279 if (start >= end) {
21280 return 1
21281 }
21282
21283 start >>>= 0
21284 end >>>= 0
21285 thisStart >>>= 0
21286 thisEnd >>>= 0
21287
21288 if (this === target) return 0
21289
21290 var x = thisEnd - thisStart
21291 var y = end - start
21292 var len = Math.min(x, y)
21293
21294 var thisCopy = this.slice(thisStart, thisEnd)
21295 var targetCopy = target.slice(start, end)
21296
21297 for (var i = 0; i < len; ++i) {
21298 if (thisCopy[i] !== targetCopy[i]) {
21299 x = thisCopy[i]
21300 y = targetCopy[i]
21301 break
21302 }
21303 }
21304
21305 if (x < y) return -1
21306 if (y < x) return 1
21307 return 0
21308 }
21309
21310 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21311 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
21312 //
21313 // Arguments:
21314 // - buffer - a Buffer to search
21315 // - val - a string, Buffer, or number
21316 // - byteOffset - an index into `buffer`; will be clamped to an int32
21317 // - encoding - an optional encoding, relevant is val is a string
21318 // - dir - true for indexOf, false for lastIndexOf
21319 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21320 // Empty buffer means no match
21321 if (buffer.length === 0) return -1
21322
21323 // Normalize byteOffset
21324 if (typeof byteOffset === 'string') {
21325 encoding = byteOffset
21326 byteOffset = 0
21327 } else if (byteOffset > 0x7fffffff) {
21328 byteOffset = 0x7fffffff
21329 } else if (byteOffset < -0x80000000) {
21330 byteOffset = -0x80000000
21331 }
21332 byteOffset = +byteOffset // Coerce to Number.
21333 if (isNaN(byteOffset)) {
21334 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21335 byteOffset = dir ? 0 : (buffer.length - 1)
21336 }
21337
21338 // Normalize byteOffset: negative offsets start from the end of the buffer
21339 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21340 if (byteOffset >= buffer.length) {
21341 if (dir) return -1
21342 else byteOffset = buffer.length - 1
21343 } else if (byteOffset < 0) {
21344 if (dir) byteOffset = 0
21345 else return -1
21346 }
21347
21348 // Normalize val
21349 if (typeof val === 'string') {
21350 val = Buffer.from(val, encoding)
21351 }
21352
21353 // Finally, search either indexOf (if dir is true) or lastIndexOf
21354 if (Buffer.isBuffer(val)) {
21355 // Special case: looking for empty string/buffer always fails
21356 if (val.length === 0) {
21357 return -1
21358 }
21359 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21360 } else if (typeof val === 'number') {
21361 val = val & 0xFF // Search for a byte value [0-255]
21362 if (typeof Uint8Array.prototype.indexOf === 'function') {
21363 if (dir) {
21364 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21365 } else {
21366 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21367 }
21368 }
21369 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21370 }
21371
21372 throw new TypeError('val must be string, number or Buffer')
21373 }
21374
21375 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21376 var indexSize = 1
21377 var arrLength = arr.length
21378 var valLength = val.length
21379
21380 if (encoding !== undefined) {
21381 encoding = String(encoding).toLowerCase()
21382 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21383 encoding === 'utf16le' || encoding === 'utf-16le') {
21384 if (arr.length < 2 || val.length < 2) {
21385 return -1
21386 }
21387 indexSize = 2
21388 arrLength /= 2
21389 valLength /= 2
21390 byteOffset /= 2
21391 }
21392 }
21393
21394 function read (buf, i) {
21395 if (indexSize === 1) {
21396 return buf[i]
21397 } else {
21398 return buf.readUInt16BE(i * indexSize)
21399 }
21400 }
21401
21402 var i
21403 if (dir) {
21404 var foundIndex = -1
21405 for (i = byteOffset; i < arrLength; i++) {
21406 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21407 if (foundIndex === -1) foundIndex = i
21408 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21409 } else {
21410 if (foundIndex !== -1) i -= i - foundIndex
21411 foundIndex = -1
21412 }
21413 }
21414 } else {
21415 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21416 for (i = byteOffset; i >= 0; i--) {
21417 var found = true
21418 for (var j = 0; j < valLength; j++) {
21419 if (read(arr, i + j) !== read(val, j)) {
21420 found = false
21421 break
21422 }
21423 }
21424 if (found) return i
21425 }
21426 }
21427
21428 return -1
21429 }
21430
21431 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21432 return this.indexOf(val, byteOffset, encoding) !== -1
21433 }
21434
21435 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21436 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21437 }
21438
21439 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21440 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21441 }
21442
21443 function hexWrite (buf, string, offset, length) {
21444 offset = Number(offset) || 0
21445 var remaining = buf.length - offset
21446 if (!length) {
21447 length = remaining
21448 } else {
21449 length = Number(length)
21450 if (length > remaining) {
21451 length = remaining
21452 }
21453 }
21454
21455 // must be an even number of digits
21456 var strLen = string.length
21457 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
21458
21459 if (length > strLen / 2) {
21460 length = strLen / 2
21461 }
21462 for (var i = 0; i < length; ++i) {
21463 var parsed = parseInt(string.substr(i * 2, 2), 16)
21464 if (isNaN(parsed)) return i
21465 buf[offset + i] = parsed
21466 }
21467 return i
21468 }
21469
21470 function utf8Write (buf, string, offset, length) {
21471 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
21472 }
21473
21474 function asciiWrite (buf, string, offset, length) {
21475 return blitBuffer(asciiToBytes(string), buf, offset, length)
21476 }
21477
21478 function latin1Write (buf, string, offset, length) {
21479 return asciiWrite(buf, string, offset, length)
21480 }
21481
21482 function base64Write (buf, string, offset, length) {
21483 return blitBuffer(base64ToBytes(string), buf, offset, length)
21484 }
21485
21486 function ucs2Write (buf, string, offset, length) {
21487 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21488 }
21489
21490 Buffer.prototype.write = function write (string, offset, length, encoding) {
21491 // Buffer#write(string)
21492 if (offset === undefined) {
21493 encoding = 'utf8'
21494 length = this.length
21495 offset = 0
21496 // Buffer#write(string, encoding)
21497 } else if (length === undefined && typeof offset === 'string') {
21498 encoding = offset
21499 length = this.length
21500 offset = 0
21501 // Buffer#write(string, offset[, length][, encoding])
21502 } else if (isFinite(offset)) {
21503 offset = offset >>> 0
21504 if (isFinite(length)) {
21505 length = length >>> 0
21506 if (encoding === undefined) encoding = 'utf8'
21507 } else {
21508 encoding = length
21509 length = undefined
21510 }
21511 } else {
21512 throw new Error(
21513 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21514 )
21515 }
21516
21517 var remaining = this.length - offset
21518 if (length === undefined || length > remaining) length = remaining
21519
21520 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21521 throw new RangeError('Attempt to write outside buffer bounds')
21522 }
21523
21524 if (!encoding) encoding = 'utf8'
21525
21526 var loweredCase = false
21527 for (;;) {
21528 switch (encoding) {
21529 case 'hex':
21530 return hexWrite(this, string, offset, length)
21531
21532 case 'utf8':
21533 case 'utf-8':
21534 return utf8Write(this, string, offset, length)
21535
21536 case 'ascii':
21537 return asciiWrite(this, string, offset, length)
21538
21539 case 'latin1':
21540 case 'binary':
21541 return latin1Write(this, string, offset, length)
21542
21543 case 'base64':
21544 // Warning: maxLength not taken into account in base64Write
21545 return base64Write(this, string, offset, length)
21546
21547 case 'ucs2':
21548 case 'ucs-2':
21549 case 'utf16le':
21550 case 'utf-16le':
21551 return ucs2Write(this, string, offset, length)
21552
21553 default:
21554 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21555 encoding = ('' + encoding).toLowerCase()
21556 loweredCase = true
21557 }
21558 }
21559 }
21560
21561 Buffer.prototype.toJSON = function toJSON () {
21562 return {
21563 type: 'Buffer',
21564 data: Array.prototype.slice.call(this._arr || this, 0)
21565 }
21566 }
21567
21568 function base64Slice (buf, start, end) {
21569 if (start === 0 && end === buf.length) {
21570 return base64.fromByteArray(buf)
21571 } else {
21572 return base64.fromByteArray(buf.slice(start, end))
21573 }
21574 }
21575
21576 function utf8Slice (buf, start, end) {
21577 end = Math.min(buf.length, end)
21578 var res = []
21579
21580 var i = start
21581 while (i < end) {
21582 var firstByte = buf[i]
21583 var codePoint = null
21584 var bytesPerSequence = (firstByte > 0xEF) ? 4
21585 : (firstByte > 0xDF) ? 3
21586 : (firstByte > 0xBF) ? 2
21587 : 1
21588
21589 if (i + bytesPerSequence <= end) {
21590 var secondByte, thirdByte, fourthByte, tempCodePoint
21591
21592 switch (bytesPerSequence) {
21593 case 1:
21594 if (firstByte < 0x80) {
21595 codePoint = firstByte
21596 }
21597 break
21598 case 2:
21599 secondByte = buf[i + 1]
21600 if ((secondByte & 0xC0) === 0x80) {
21601 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21602 if (tempCodePoint > 0x7F) {
21603 codePoint = tempCodePoint
21604 }
21605 }
21606 break
21607 case 3:
21608 secondByte = buf[i + 1]
21609 thirdByte = buf[i + 2]
21610 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21611 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21612 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21613 codePoint = tempCodePoint
21614 }
21615 }
21616 break
21617 case 4:
21618 secondByte = buf[i + 1]
21619 thirdByte = buf[i + 2]
21620 fourthByte = buf[i + 3]
21621 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21622 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21623 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21624 codePoint = tempCodePoint
21625 }
21626 }
21627 }
21628 }
21629
21630 if (codePoint === null) {
21631 // we did not generate a valid codePoint so insert a
21632 // replacement char (U+FFFD) and advance only 1 byte
21633 codePoint = 0xFFFD
21634 bytesPerSequence = 1
21635 } else if (codePoint > 0xFFFF) {
21636 // encode to utf16 (surrogate pair dance)
21637 codePoint -= 0x10000
21638 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21639 codePoint = 0xDC00 | codePoint & 0x3FF
21640 }
21641
21642 res.push(codePoint)
21643 i += bytesPerSequence
21644 }
21645
21646 return decodeCodePointsArray(res)
21647 }
21648
21649 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
21650 // the lowest limit is Chrome, with 0x10000 args.
21651 // We go 1 magnitude less, for safety
21652 var MAX_ARGUMENTS_LENGTH = 0x1000
21653
21654 function decodeCodePointsArray (codePoints) {
21655 var len = codePoints.length
21656 if (len <= MAX_ARGUMENTS_LENGTH) {
21657 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
21658 }
21659
21660 // Decode in chunks to avoid "call stack size exceeded".
21661 var res = ''
21662 var i = 0
21663 while (i < len) {
21664 res += String.fromCharCode.apply(
21665 String,
21666 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21667 )
21668 }
21669 return res
21670 }
21671
21672 function asciiSlice (buf, start, end) {
21673 var ret = ''
21674 end = Math.min(buf.length, end)
21675
21676 for (var i = start; i < end; ++i) {
21677 ret += String.fromCharCode(buf[i] & 0x7F)
21678 }
21679 return ret
21680 }
21681
21682 function latin1Slice (buf, start, end) {
21683 var ret = ''
21684 end = Math.min(buf.length, end)
21685
21686 for (var i = start; i < end; ++i) {
21687 ret += String.fromCharCode(buf[i])
21688 }
21689 return ret
21690 }
21691
21692 function hexSlice (buf, start, end) {
21693 var len = buf.length
21694
21695 if (!start || start < 0) start = 0
21696 if (!end || end < 0 || end > len) end = len
21697
21698 var out = ''
21699 for (var i = start; i < end; ++i) {
21700 out += toHex(buf[i])
21701 }
21702 return out
21703 }
21704
21705 function utf16leSlice (buf, start, end) {
21706 var bytes = buf.slice(start, end)
21707 var res = ''
21708 for (var i = 0; i < bytes.length; i += 2) {
21709 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21710 }
21711 return res
21712 }
21713
21714 Buffer.prototype.slice = function slice (start, end) {
21715 var len = this.length
21716 start = ~~start
21717 end = end === undefined ? len : ~~end
21718
21719 if (start < 0) {
21720 start += len
21721 if (start < 0) start = 0
21722 } else if (start > len) {
21723 start = len
21724 }
21725
21726 if (end < 0) {
21727 end += len
21728 if (end < 0) end = 0
21729 } else if (end > len) {
21730 end = len
21731 }
21732
21733 if (end < start) end = start
21734
21735 var newBuf = this.subarray(start, end)
21736 // Return an augmented `Uint8Array` instance
21737 newBuf.__proto__ = Buffer.prototype
21738 return newBuf
21739 }
21740
21741 /*
21742 * Need to make sure that buffer isn't trying to write out of bounds.
21743 */
21744 function checkOffset (offset, ext, length) {
21745 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21746 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
21747 }
21748
21749 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21750 offset = offset >>> 0
21751 byteLength = byteLength >>> 0
21752 if (!noAssert) checkOffset(offset, byteLength, this.length)
21753
21754 var val = this[offset]
21755 var mul = 1
21756 var i = 0
21757 while (++i < byteLength && (mul *= 0x100)) {
21758 val += this[offset + i] * mul
21759 }
21760
21761 return val
21762 }
21763
21764 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21765 offset = offset >>> 0
21766 byteLength = byteLength >>> 0
21767 if (!noAssert) {
21768 checkOffset(offset, byteLength, this.length)
21769 }
21770
21771 var val = this[offset + --byteLength]
21772 var mul = 1
21773 while (byteLength > 0 && (mul *= 0x100)) {
21774 val += this[offset + --byteLength] * mul
21775 }
21776
21777 return val
21778 }
21779
21780 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21781 offset = offset >>> 0
21782 if (!noAssert) checkOffset(offset, 1, this.length)
21783 return this[offset]
21784 }
21785
21786 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21787 offset = offset >>> 0
21788 if (!noAssert) checkOffset(offset, 2, this.length)
21789 return this[offset] | (this[offset + 1] << 8)
21790 }
21791
21792 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21793 offset = offset >>> 0
21794 if (!noAssert) checkOffset(offset, 2, this.length)
21795 return (this[offset] << 8) | this[offset + 1]
21796 }
21797
21798 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21799 offset = offset >>> 0
21800 if (!noAssert) checkOffset(offset, 4, this.length)
21801
21802 return ((this[offset]) |
21803 (this[offset + 1] << 8) |
21804 (this[offset + 2] << 16)) +
21805 (this[offset + 3] * 0x1000000)
21806 }
21807
21808 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21809 offset = offset >>> 0
21810 if (!noAssert) checkOffset(offset, 4, this.length)
21811
21812 return (this[offset] * 0x1000000) +
21813 ((this[offset + 1] << 16) |
21814 (this[offset + 2] << 8) |
21815 this[offset + 3])
21816 }
21817
21818 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21819 offset = offset >>> 0
21820 byteLength = byteLength >>> 0
21821 if (!noAssert) checkOffset(offset, byteLength, this.length)
21822
21823 var val = this[offset]
21824 var mul = 1
21825 var i = 0
21826 while (++i < byteLength && (mul *= 0x100)) {
21827 val += this[offset + i] * mul
21828 }
21829 mul *= 0x80
21830
21831 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21832
21833 return val
21834 }
21835
21836 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21837 offset = offset >>> 0
21838 byteLength = byteLength >>> 0
21839 if (!noAssert) checkOffset(offset, byteLength, this.length)
21840
21841 var i = byteLength
21842 var mul = 1
21843 var val = this[offset + --i]
21844 while (i > 0 && (mul *= 0x100)) {
21845 val += this[offset + --i] * mul
21846 }
21847 mul *= 0x80
21848
21849 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21850
21851 return val
21852 }
21853
21854 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21855 offset = offset >>> 0
21856 if (!noAssert) checkOffset(offset, 1, this.length)
21857 if (!(this[offset] & 0x80)) return (this[offset])
21858 return ((0xff - this[offset] + 1) * -1)
21859 }
21860
21861 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21862 offset = offset >>> 0
21863 if (!noAssert) checkOffset(offset, 2, this.length)
21864 var val = this[offset] | (this[offset + 1] << 8)
21865 return (val & 0x8000) ? val | 0xFFFF0000 : val
21866 }
21867
21868 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21869 offset = offset >>> 0
21870 if (!noAssert) checkOffset(offset, 2, this.length)
21871 var val = this[offset + 1] | (this[offset] << 8)
21872 return (val & 0x8000) ? val | 0xFFFF0000 : val
21873 }
21874
21875 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21876 offset = offset >>> 0
21877 if (!noAssert) checkOffset(offset, 4, this.length)
21878
21879 return (this[offset]) |
21880 (this[offset + 1] << 8) |
21881 (this[offset + 2] << 16) |
21882 (this[offset + 3] << 24)
21883 }
21884
21885 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21886 offset = offset >>> 0
21887 if (!noAssert) checkOffset(offset, 4, this.length)
21888
21889 return (this[offset] << 24) |
21890 (this[offset + 1] << 16) |
21891 (this[offset + 2] << 8) |
21892 (this[offset + 3])
21893 }
21894
21895 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21896 offset = offset >>> 0
21897 if (!noAssert) checkOffset(offset, 4, this.length)
21898 return ieee754.read(this, offset, true, 23, 4)
21899 }
21900
21901 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21902 offset = offset >>> 0
21903 if (!noAssert) checkOffset(offset, 4, this.length)
21904 return ieee754.read(this, offset, false, 23, 4)
21905 }
21906
21907 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21908 offset = offset >>> 0
21909 if (!noAssert) checkOffset(offset, 8, this.length)
21910 return ieee754.read(this, offset, true, 52, 8)
21911 }
21912
21913 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21914 offset = offset >>> 0
21915 if (!noAssert) checkOffset(offset, 8, this.length)
21916 return ieee754.read(this, offset, false, 52, 8)
21917 }
21918
21919 function checkInt (buf, value, offset, ext, max, min) {
21920 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21921 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21922 if (offset + ext > buf.length) throw new RangeError('Index out of range')
21923 }
21924
21925 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21926 value = +value
21927 offset = offset >>> 0
21928 byteLength = byteLength >>> 0
21929 if (!noAssert) {
21930 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21931 checkInt(this, value, offset, byteLength, maxBytes, 0)
21932 }
21933
21934 var mul = 1
21935 var i = 0
21936 this[offset] = value & 0xFF
21937 while (++i < byteLength && (mul *= 0x100)) {
21938 this[offset + i] = (value / mul) & 0xFF
21939 }
21940
21941 return offset + byteLength
21942 }
21943
21944 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21945 value = +value
21946 offset = offset >>> 0
21947 byteLength = byteLength >>> 0
21948 if (!noAssert) {
21949 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21950 checkInt(this, value, offset, byteLength, maxBytes, 0)
21951 }
21952
21953 var i = byteLength - 1
21954 var mul = 1
21955 this[offset + i] = value & 0xFF
21956 while (--i >= 0 && (mul *= 0x100)) {
21957 this[offset + i] = (value / mul) & 0xFF
21958 }
21959
21960 return offset + byteLength
21961 }
21962
21963 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21964 value = +value
21965 offset = offset >>> 0
21966 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21967 this[offset] = (value & 0xff)
21968 return offset + 1
21969 }
21970
21971 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21972 value = +value
21973 offset = offset >>> 0
21974 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21975 this[offset] = (value & 0xff)
21976 this[offset + 1] = (value >>> 8)
21977 return offset + 2
21978 }
21979
21980 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21981 value = +value
21982 offset = offset >>> 0
21983 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21984 this[offset] = (value >>> 8)
21985 this[offset + 1] = (value & 0xff)
21986 return offset + 2
21987 }
21988
21989 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
21990 value = +value
21991 offset = offset >>> 0
21992 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21993 this[offset + 3] = (value >>> 24)
21994 this[offset + 2] = (value >>> 16)
21995 this[offset + 1] = (value >>> 8)
21996 this[offset] = (value & 0xff)
21997 return offset + 4
21998 }
21999
22000 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
22001 value = +value
22002 offset = offset >>> 0
22003 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
22004 this[offset] = (value >>> 24)
22005 this[offset + 1] = (value >>> 16)
22006 this[offset + 2] = (value >>> 8)
22007 this[offset + 3] = (value & 0xff)
22008 return offset + 4
22009 }
22010
22011 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
22012 value = +value
22013 offset = offset >>> 0
22014 if (!noAssert) {
22015 var limit = Math.pow(2, (8 * byteLength) - 1)
22016
22017 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22018 }
22019
22020 var i = 0
22021 var mul = 1
22022 var sub = 0
22023 this[offset] = value & 0xFF
22024 while (++i < byteLength && (mul *= 0x100)) {
22025 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
22026 sub = 1
22027 }
22028 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22029 }
22030
22031 return offset + byteLength
22032 }
22033
22034 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
22035 value = +value
22036 offset = offset >>> 0
22037 if (!noAssert) {
22038 var limit = Math.pow(2, (8 * byteLength) - 1)
22039
22040 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22041 }
22042
22043 var i = byteLength - 1
22044 var mul = 1
22045 var sub = 0
22046 this[offset + i] = value & 0xFF
22047 while (--i >= 0 && (mul *= 0x100)) {
22048 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22049 sub = 1
22050 }
22051 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22052 }
22053
22054 return offset + byteLength
22055 }
22056
22057 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22058 value = +value
22059 offset = offset >>> 0
22060 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22061 if (value < 0) value = 0xff + value + 1
22062 this[offset] = (value & 0xff)
22063 return offset + 1
22064 }
22065
22066 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22067 value = +value
22068 offset = offset >>> 0
22069 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22070 this[offset] = (value & 0xff)
22071 this[offset + 1] = (value >>> 8)
22072 return offset + 2
22073 }
22074
22075 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22076 value = +value
22077 offset = offset >>> 0
22078 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22079 this[offset] = (value >>> 8)
22080 this[offset + 1] = (value & 0xff)
22081 return offset + 2
22082 }
22083
22084 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22085 value = +value
22086 offset = offset >>> 0
22087 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22088 this[offset] = (value & 0xff)
22089 this[offset + 1] = (value >>> 8)
22090 this[offset + 2] = (value >>> 16)
22091 this[offset + 3] = (value >>> 24)
22092 return offset + 4
22093 }
22094
22095 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22096 value = +value
22097 offset = offset >>> 0
22098 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22099 if (value < 0) value = 0xffffffff + value + 1
22100 this[offset] = (value >>> 24)
22101 this[offset + 1] = (value >>> 16)
22102 this[offset + 2] = (value >>> 8)
22103 this[offset + 3] = (value & 0xff)
22104 return offset + 4
22105 }
22106
22107 function checkIEEE754 (buf, value, offset, ext, max, min) {
22108 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22109 if (offset < 0) throw new RangeError('Index out of range')
22110 }
22111
22112 function writeFloat (buf, value, offset, littleEndian, noAssert) {
22113 value = +value
22114 offset = offset >>> 0
22115 if (!noAssert) {
22116 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
22117 }
22118 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22119 return offset + 4
22120 }
22121
22122 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22123 return writeFloat(this, value, offset, true, noAssert)
22124 }
22125
22126 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22127 return writeFloat(this, value, offset, false, noAssert)
22128 }
22129
22130 function writeDouble (buf, value, offset, littleEndian, noAssert) {
22131 value = +value
22132 offset = offset >>> 0
22133 if (!noAssert) {
22134 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
22135 }
22136 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22137 return offset + 8
22138 }
22139
22140 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22141 return writeDouble(this, value, offset, true, noAssert)
22142 }
22143
22144 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22145 return writeDouble(this, value, offset, false, noAssert)
22146 }
22147
22148 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22149 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22150 if (!start) start = 0
22151 if (!end && end !== 0) end = this.length
22152 if (targetStart >= target.length) targetStart = target.length
22153 if (!targetStart) targetStart = 0
22154 if (end > 0 && end < start) end = start
22155
22156 // Copy 0 bytes; we're done
22157 if (end === start) return 0
22158 if (target.length === 0 || this.length === 0) return 0
22159
22160 // Fatal error conditions
22161 if (targetStart < 0) {
22162 throw new RangeError('targetStart out of bounds')
22163 }
22164 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22165 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22166
22167 // Are we oob?
22168 if (end > this.length) end = this.length
22169 if (target.length - targetStart < end - start) {
22170 end = target.length - targetStart + start
22171 }
22172
22173 var len = end - start
22174 var i
22175
22176 if (this === target && start < targetStart && targetStart < end) {
22177 // descending copy from end
22178 for (i = len - 1; i >= 0; --i) {
22179 target[i + targetStart] = this[i + start]
22180 }
22181 } else if (len < 1000) {
22182 // ascending copy from start
22183 for (i = 0; i < len; ++i) {
22184 target[i + targetStart] = this[i + start]
22185 }
22186 } else {
22187 Uint8Array.prototype.set.call(
22188 target,
22189 this.subarray(start, start + len),
22190 targetStart
22191 )
22192 }
22193
22194 return len
22195 }
22196
22197 // Usage:
22198 // buffer.fill(number[, offset[, end]])
22199 // buffer.fill(buffer[, offset[, end]])
22200 // buffer.fill(string[, offset[, end]][, encoding])
22201 Buffer.prototype.fill = function fill (val, start, end, encoding) {
22202 // Handle string cases:
22203 if (typeof val === 'string') {
22204 if (typeof start === 'string') {
22205 encoding = start
22206 start = 0
22207 end = this.length
22208 } else if (typeof end === 'string') {
22209 encoding = end
22210 end = this.length
22211 }
22212 if (val.length === 1) {
22213 var code = val.charCodeAt(0)
22214 if (code < 256) {
22215 val = code
22216 }
22217 }
22218 if (encoding !== undefined && typeof encoding !== 'string') {
22219 throw new TypeError('encoding must be a string')
22220 }
22221 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22222 throw new TypeError('Unknown encoding: ' + encoding)
22223 }
22224 } else if (typeof val === 'number') {
22225 val = val & 255
22226 }
22227
22228 // Invalid ranges are not set to a default, so can range check early.
22229 if (start < 0 || this.length < start || this.length < end) {
22230 throw new RangeError('Out of range index')
22231 }
22232
22233 if (end <= start) {
22234 return this
22235 }
22236
22237 start = start >>> 0
22238 end = end === undefined ? this.length : end >>> 0
22239
22240 if (!val) val = 0
22241
22242 var i
22243 if (typeof val === 'number') {
22244 for (i = start; i < end; ++i) {
22245 this[i] = val
22246 }
22247 } else {
22248 var bytes = Buffer.isBuffer(val)
22249 ? val
22250 : new Buffer(val, encoding)
22251 var len = bytes.length
22252 for (i = 0; i < end - start; ++i) {
22253 this[i + start] = bytes[i % len]
22254 }
22255 }
22256
22257 return this
22258 }
22259
22260 // HELPER FUNCTIONS
22261 // ================
22262
22263 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22264
22265 function base64clean (str) {
22266 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22267 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22268 // Node converts strings with length < 2 to ''
22269 if (str.length < 2) return ''
22270 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22271 while (str.length % 4 !== 0) {
22272 str = str + '='
22273 }
22274 return str
22275 }
22276
22277 function stringtrim (str) {
22278 if (str.trim) return str.trim()
22279 return str.replace(/^\s+|\s+$/g, '')
22280 }
22281
22282 function toHex (n) {
22283 if (n < 16) return '0' + n.toString(16)
22284 return n.toString(16)
22285 }
22286
22287 function utf8ToBytes (string, units) {
22288 units = units || Infinity
22289 var codePoint
22290 var length = string.length
22291 var leadSurrogate = null
22292 var bytes = []
22293
22294 for (var i = 0; i < length; ++i) {
22295 codePoint = string.charCodeAt(i)
22296
22297 // is surrogate component
22298 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22299 // last char was a lead
22300 if (!leadSurrogate) {
22301 // no lead yet
22302 if (codePoint > 0xDBFF) {
22303 // unexpected trail
22304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22305 continue
22306 } else if (i + 1 === length) {
22307 // unpaired lead
22308 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22309 continue
22310 }
22311
22312 // valid lead
22313 leadSurrogate = codePoint
22314
22315 continue
22316 }
22317
22318 // 2 leads in a row
22319 if (codePoint < 0xDC00) {
22320 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22321 leadSurrogate = codePoint
22322 continue
22323 }
22324
22325 // valid surrogate pair
22326 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22327 } else if (leadSurrogate) {
22328 // valid bmp char, but last char was a lead
22329 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22330 }
22331
22332 leadSurrogate = null
22333
22334 // encode utf8
22335 if (codePoint < 0x80) {
22336 if ((units -= 1) < 0) break
22337 bytes.push(codePoint)
22338 } else if (codePoint < 0x800) {
22339 if ((units -= 2) < 0) break
22340 bytes.push(
22341 codePoint >> 0x6 | 0xC0,
22342 codePoint & 0x3F | 0x80
22343 )
22344 } else if (codePoint < 0x10000) {
22345 if ((units -= 3) < 0) break
22346 bytes.push(
22347 codePoint >> 0xC | 0xE0,
22348 codePoint >> 0x6 & 0x3F | 0x80,
22349 codePoint & 0x3F | 0x80
22350 )
22351 } else if (codePoint < 0x110000) {
22352 if ((units -= 4) < 0) break
22353 bytes.push(
22354 codePoint >> 0x12 | 0xF0,
22355 codePoint >> 0xC & 0x3F | 0x80,
22356 codePoint >> 0x6 & 0x3F | 0x80,
22357 codePoint & 0x3F | 0x80
22358 )
22359 } else {
22360 throw new Error('Invalid code point')
22361 }
22362 }
22363
22364 return bytes
22365 }
22366
22367 function asciiToBytes (str) {
22368 var byteArray = []
22369 for (var i = 0; i < str.length; ++i) {
22370 // Node's code seems to be doing this and not & 0x7F..
22371 byteArray.push(str.charCodeAt(i) & 0xFF)
22372 }
22373 return byteArray
22374 }
22375
22376 function utf16leToBytes (str, units) {
22377 var c, hi, lo
22378 var byteArray = []
22379 for (var i = 0; i < str.length; ++i) {
22380 if ((units -= 2) < 0) break
22381
22382 c = str.charCodeAt(i)
22383 hi = c >> 8
22384 lo = c % 256
22385 byteArray.push(lo)
22386 byteArray.push(hi)
22387 }
22388
22389 return byteArray
22390 }
22391
22392 function base64ToBytes (str) {
22393 return base64.toByteArray(base64clean(str))
22394 }
22395
22396 function blitBuffer (src, dst, offset, length) {
22397 for (var i = 0; i < length; ++i) {
22398 if ((i + offset >= dst.length) || (i >= src.length)) break
22399 dst[i + offset] = src[i]
22400 }
22401 return i
22402 }
22403
22404 function isnan (val) {
22405 return val !== val // eslint-disable-line no-self-compare
22406 }
22407
22408 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22409 (function (Buffer){
22410 // Copyright Joyent, Inc. and other Node contributors.
22411 //
22412 // Permission is hereby granted, free of charge, to any person obtaining a
22413 // copy of this software and associated documentation files (the
22414 // "Software"), to deal in the Software without restriction, including
22415 // without limitation the rights to use, copy, modify, merge, publish,
22416 // distribute, sublicense, and/or sell copies of the Software, and to permit
22417 // persons to whom the Software is furnished to do so, subject to the
22418 // following conditions:
22419 //
22420 // The above copyright notice and this permission notice shall be included
22421 // in all copies or substantial portions of the Software.
22422 //
22423 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22424 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22425 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22426 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22427 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22428 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22429 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22430
22431 // NOTE: These type checking functions intentionally don't use `instanceof`
22432 // because it is fragile and can be easily faked with `Object.create()`.
22433
22434 function isArray(arg) {
22435 if (Array.isArray) {
22436 return Array.isArray(arg);
22437 }
22438 return objectToString(arg) === '[object Array]';
22439 }
22440 exports.isArray = isArray;
22441
22442 function isBoolean(arg) {
22443 return typeof arg === 'boolean';
22444 }
22445 exports.isBoolean = isBoolean;
22446
22447 function isNull(arg) {
22448 return arg === null;
22449 }
22450 exports.isNull = isNull;
22451
22452 function isNullOrUndefined(arg) {
22453 return arg == null;
22454 }
22455 exports.isNullOrUndefined = isNullOrUndefined;
22456
22457 function isNumber(arg) {
22458 return typeof arg === 'number';
22459 }
22460 exports.isNumber = isNumber;
22461
22462 function isString(arg) {
22463 return typeof arg === 'string';
22464 }
22465 exports.isString = isString;
22466
22467 function isSymbol(arg) {
22468 return typeof arg === 'symbol';
22469 }
22470 exports.isSymbol = isSymbol;
22471
22472 function isUndefined(arg) {
22473 return arg === void 0;
22474 }
22475 exports.isUndefined = isUndefined;
22476
22477 function isRegExp(re) {
22478 return objectToString(re) === '[object RegExp]';
22479 }
22480 exports.isRegExp = isRegExp;
22481
22482 function isObject(arg) {
22483 return typeof arg === 'object' && arg !== null;
22484 }
22485 exports.isObject = isObject;
22486
22487 function isDate(d) {
22488 return objectToString(d) === '[object Date]';
22489 }
22490 exports.isDate = isDate;
22491
22492 function isError(e) {
22493 return (objectToString(e) === '[object Error]' || e instanceof Error);
22494 }
22495 exports.isError = isError;
22496
22497 function isFunction(arg) {
22498 return typeof arg === 'function';
22499 }
22500 exports.isFunction = isFunction;
22501
22502 function isPrimitive(arg) {
22503 return arg === null ||
22504 typeof arg === 'boolean' ||
22505 typeof arg === 'number' ||
22506 typeof arg === 'string' ||
22507 typeof arg === 'symbol' || // ES6 symbol
22508 typeof arg === 'undefined';
22509 }
22510 exports.isPrimitive = isPrimitive;
22511
22512 exports.isBuffer = Buffer.isBuffer;
22513
22514 function objectToString(o) {
22515 return Object.prototype.toString.call(o);
22516 }
22517
22518 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22519 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22520 // Copyright Joyent, Inc. and other Node contributors.
22521 //
22522 // Permission is hereby granted, free of charge, to any person obtaining a
22523 // copy of this software and associated documentation files (the
22524 // "Software"), to deal in the Software without restriction, including
22525 // without limitation the rights to use, copy, modify, merge, publish,
22526 // distribute, sublicense, and/or sell copies of the Software, and to permit
22527 // persons to whom the Software is furnished to do so, subject to the
22528 // following conditions:
22529 //
22530 // The above copyright notice and this permission notice shall be included
22531 // in all copies or substantial portions of the Software.
22532 //
22533 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22534 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22535 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22536 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22537 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22538 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22539 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22540
22541 function EventEmitter() {
22542 this._events = this._events || {};
22543 this._maxListeners = this._maxListeners || undefined;
22544 }
22545 module.exports = EventEmitter;
22546
22547 // Backwards-compat with node 0.10.x
22548 EventEmitter.EventEmitter = EventEmitter;
22549
22550 EventEmitter.prototype._events = undefined;
22551 EventEmitter.prototype._maxListeners = undefined;
22552
22553 // By default EventEmitters will print a warning if more than 10 listeners are
22554 // added to it. This is a useful default which helps finding memory leaks.
22555 EventEmitter.defaultMaxListeners = 10;
22556
22557 // Obviously not all Emitters should be limited to 10. This function allows
22558 // that to be increased. Set to zero for unlimited.
22559 EventEmitter.prototype.setMaxListeners = function(n) {
22560 if (!isNumber(n) || n < 0 || isNaN(n))
22561 throw TypeError('n must be a positive number');
22562 this._maxListeners = n;
22563 return this;
22564 };
22565
22566 EventEmitter.prototype.emit = function(type) {
22567 var er, handler, len, args, i, listeners;
22568
22569 if (!this._events)
22570 this._events = {};
22571
22572 // If there is no 'error' event listener then throw.
22573 if (type === 'error') {
22574 if (!this._events.error ||
22575 (isObject(this._events.error) && !this._events.error.length)) {
22576 er = arguments[1];
22577 if (er instanceof Error) {
22578 throw er; // Unhandled 'error' event
22579 } else {
22580 // At least give some kind of context to the user
22581 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22582 err.context = er;
22583 throw err;
22584 }
22585 }
22586 }
22587
22588 handler = this._events[type];
22589
22590 if (isUndefined(handler))
22591 return false;
22592
22593 if (isFunction(handler)) {
22594 switch (arguments.length) {
22595 // fast cases
22596 case 1:
22597 handler.call(this);
22598 break;
22599 case 2:
22600 handler.call(this, arguments[1]);
22601 break;
22602 case 3:
22603 handler.call(this, arguments[1], arguments[2]);
22604 break;
22605 // slower
22606 default:
22607 args = Array.prototype.slice.call(arguments, 1);
22608 handler.apply(this, args);
22609 }
22610 } else if (isObject(handler)) {
22611 args = Array.prototype.slice.call(arguments, 1);
22612 listeners = handler.slice();
22613 len = listeners.length;
22614 for (i = 0; i < len; i++)
22615 listeners[i].apply(this, args);
22616 }
22617
22618 return true;
22619 };
22620
22621 EventEmitter.prototype.addListener = function(type, listener) {
22622 var m;
22623
22624 if (!isFunction(listener))
22625 throw TypeError('listener must be a function');
22626
22627 if (!this._events)
22628 this._events = {};
22629
22630 // To avoid recursion in the case that type === "newListener"! Before
22631 // adding it to the listeners, first emit "newListener".
22632 if (this._events.newListener)
22633 this.emit('newListener', type,
22634 isFunction(listener.listener) ?
22635 listener.listener : listener);
22636
22637 if (!this._events[type])
22638 // Optimize the case of one listener. Don't need the extra array object.
22639 this._events[type] = listener;
22640 else if (isObject(this._events[type]))
22641 // If we've already got an array, just append.
22642 this._events[type].push(listener);
22643 else
22644 // Adding the second element, need to change to array.
22645 this._events[type] = [this._events[type], listener];
22646
22647 // Check for listener leak
22648 if (isObject(this._events[type]) && !this._events[type].warned) {
22649 if (!isUndefined(this._maxListeners)) {
22650 m = this._maxListeners;
22651 } else {
22652 m = EventEmitter.defaultMaxListeners;
22653 }
22654
22655 if (m && m > 0 && this._events[type].length > m) {
22656 this._events[type].warned = true;
22657 console.error('(node) warning: possible EventEmitter memory ' +
22658 'leak detected. %d listeners added. ' +
22659 'Use emitter.setMaxListeners() to increase limit.',
22660 this._events[type].length);
22661 if (typeof console.trace === 'function') {
22662 // not supported in IE 10
22663 console.trace();
22664 }
22665 }
22666 }
22667
22668 return this;
22669 };
22670
22671 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
22672
22673 EventEmitter.prototype.once = function(type, listener) {
22674 if (!isFunction(listener))
22675 throw TypeError('listener must be a function');
22676
22677 var fired = false;
22678
22679 function g() {
22680 this.removeListener(type, g);
22681
22682 if (!fired) {
22683 fired = true;
22684 listener.apply(this, arguments);
22685 }
22686 }
22687
22688 g.listener = listener;
22689 this.on(type, g);
22690
22691 return this;
22692 };
22693
22694 // emits a 'removeListener' event iff the listener was removed
22695 EventEmitter.prototype.removeListener = function(type, listener) {
22696 var list, position, length, i;
22697
22698 if (!isFunction(listener))
22699 throw TypeError('listener must be a function');
22700
22701 if (!this._events || !this._events[type])
22702 return this;
22703
22704 list = this._events[type];
22705 length = list.length;
22706 position = -1;
22707
22708 if (list === listener ||
22709 (isFunction(list.listener) && list.listener === listener)) {
22710 delete this._events[type];
22711 if (this._events.removeListener)
22712 this.emit('removeListener', type, listener);
22713
22714 } else if (isObject(list)) {
22715 for (i = length; i-- > 0;) {
22716 if (list[i] === listener ||
22717 (list[i].listener && list[i].listener === listener)) {
22718 position = i;
22719 break;
22720 }
22721 }
22722
22723 if (position < 0)
22724 return this;
22725
22726 if (list.length === 1) {
22727 list.length = 0;
22728 delete this._events[type];
22729 } else {
22730 list.splice(position, 1);
22731 }
22732
22733 if (this._events.removeListener)
22734 this.emit('removeListener', type, listener);
22735 }
22736
22737 return this;
22738 };
22739
22740 EventEmitter.prototype.removeAllListeners = function(type) {
22741 var key, listeners;
22742
22743 if (!this._events)
22744 return this;
22745
22746 // not listening for removeListener, no need to emit
22747 if (!this._events.removeListener) {
22748 if (arguments.length === 0)
22749 this._events = {};
22750 else if (this._events[type])
22751 delete this._events[type];
22752 return this;
22753 }
22754
22755 // emit removeListener for all listeners on all events
22756 if (arguments.length === 0) {
22757 for (key in this._events) {
22758 if (key === 'removeListener') continue;
22759 this.removeAllListeners(key);
22760 }
22761 this.removeAllListeners('removeListener');
22762 this._events = {};
22763 return this;
22764 }
22765
22766 listeners = this._events[type];
22767
22768 if (isFunction(listeners)) {
22769 this.removeListener(type, listeners);
22770 } else if (listeners) {
22771 // LIFO order
22772 while (listeners.length)
22773 this.removeListener(type, listeners[listeners.length - 1]);
22774 }
22775 delete this._events[type];
22776
22777 return this;
22778 };
22779
22780 EventEmitter.prototype.listeners = function(type) {
22781 var ret;
22782 if (!this._events || !this._events[type])
22783 ret = [];
22784 else if (isFunction(this._events[type]))
22785 ret = [this._events[type]];
22786 else
22787 ret = this._events[type].slice();
22788 return ret;
22789 };
22790
22791 EventEmitter.prototype.listenerCount = function(type) {
22792 if (this._events) {
22793 var evlistener = this._events[type];
22794
22795 if (isFunction(evlistener))
22796 return 1;
22797 else if (evlistener)
22798 return evlistener.length;
22799 }
22800 return 0;
22801 };
22802
22803 EventEmitter.listenerCount = function(emitter, type) {
22804 return emitter.listenerCount(type);
22805 };
22806
22807 function isFunction(arg) {
22808 return typeof arg === 'function';
22809 }
22810
22811 function isNumber(arg) {
22812 return typeof arg === 'number';
22813 }
22814
22815 function isObject(arg) {
22816 return typeof arg === 'object' && arg !== null;
22817 }
22818
22819 function isUndefined(arg) {
22820 return arg === void 0;
22821 }
22822
22823 },{}],8:[function(require,module,exports){
22824 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22825 var e, m
22826 var eLen = nBytes * 8 - mLen - 1
22827 var eMax = (1 << eLen) - 1
22828 var eBias = eMax >> 1
22829 var nBits = -7
22830 var i = isLE ? (nBytes - 1) : 0
22831 var d = isLE ? -1 : 1
22832 var s = buffer[offset + i]
22833
22834 i += d
22835
22836 e = s & ((1 << (-nBits)) - 1)
22837 s >>= (-nBits)
22838 nBits += eLen
22839 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22840
22841 m = e & ((1 << (-nBits)) - 1)
22842 e >>= (-nBits)
22843 nBits += mLen
22844 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22845
22846 if (e === 0) {
22847 e = 1 - eBias
22848 } else if (e === eMax) {
22849 return m ? NaN : ((s ? -1 : 1) * Infinity)
22850 } else {
22851 m = m + Math.pow(2, mLen)
22852 e = e - eBias
22853 }
22854 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
22855 }
22856
22857 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22858 var e, m, c
22859 var eLen = nBytes * 8 - mLen - 1
22860 var eMax = (1 << eLen) - 1
22861 var eBias = eMax >> 1
22862 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22863 var i = isLE ? 0 : (nBytes - 1)
22864 var d = isLE ? 1 : -1
22865 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
22866
22867 value = Math.abs(value)
22868
22869 if (isNaN(value) || value === Infinity) {
22870 m = isNaN(value) ? 1 : 0
22871 e = eMax
22872 } else {
22873 e = Math.floor(Math.log(value) / Math.LN2)
22874 if (value * (c = Math.pow(2, -e)) < 1) {
22875 e--
22876 c *= 2
22877 }
22878 if (e + eBias >= 1) {
22879 value += rt / c
22880 } else {
22881 value += rt * Math.pow(2, 1 - eBias)
22882 }
22883 if (value * c >= 2) {
22884 e++
22885 c /= 2
22886 }
22887
22888 if (e + eBias >= eMax) {
22889 m = 0
22890 e = eMax
22891 } else if (e + eBias >= 1) {
22892 m = (value * c - 1) * Math.pow(2, mLen)
22893 e = e + eBias
22894 } else {
22895 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22896 e = 0
22897 }
22898 }
22899
22900 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
22901
22902 e = (e << mLen) | m
22903 eLen += mLen
22904 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
22905
22906 buffer[offset + i - d] |= s * 128
22907 }
22908
22909 },{}],9:[function(require,module,exports){
22910 if (typeof Object.create === 'function') {
22911 // implementation from standard node.js 'util' module
22912 module.exports = function inherits(ctor, superCtor) {
22913 ctor.super_ = superCtor
22914 ctor.prototype = Object.create(superCtor.prototype, {
22915 constructor: {
22916 value: ctor,
22917 enumerable: false,
22918 writable: true,
22919 configurable: true
22920 }
22921 });
22922 };
22923 } else {
22924 // old school shim for old browsers
22925 module.exports = function inherits(ctor, superCtor) {
22926 ctor.super_ = superCtor
22927 var TempCtor = function () {}
22928 TempCtor.prototype = superCtor.prototype
22929 ctor.prototype = new TempCtor()
22930 ctor.prototype.constructor = ctor
22931 }
22932 }
22933
22934 },{}],10:[function(require,module,exports){
22935 /*!
22936 * Determine if an object is a Buffer
22937 *
22938 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22939 * @license MIT
22940 */
22941
22942 // The _isBuffer check is for Safari 5-7 support, because it's missing
22943 // Object.prototype.constructor. Remove this eventually
22944 module.exports = function (obj) {
22945 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
22946 }
22947
22948 function isBuffer (obj) {
22949 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22950 }
22951
22952 // For Node v0.10 support. Remove this eventually.
22953 function isSlowBuffer (obj) {
22954 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22955 }
22956
22957 },{}],11:[function(require,module,exports){
22958 var toString = {}.toString;
22959
22960 module.exports = Array.isArray || function (arr) {
22961 return toString.call(arr) == '[object Array]';
22962 };
22963
22964 },{}],12:[function(require,module,exports){
22965 (function (process){
22966 'use strict';
22967
22968 if (!process.version ||
22969 process.version.indexOf('v0.') === 0 ||
22970 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22971 module.exports = nextTick;
22972 } else {
22973 module.exports = process.nextTick;
22974 }
22975
22976 function nextTick(fn, arg1, arg2, arg3) {
22977 if (typeof fn !== 'function') {
22978 throw new TypeError('"callback" argument must be a function');
22979 }
22980 var len = arguments.length;
22981 var args, i;
22982 switch (len) {
22983 case 0:
22984 case 1:
22985 return process.nextTick(fn);
22986 case 2:
22987 return process.nextTick(function afterTickOne() {
22988 fn.call(null, arg1);
22989 });
22990 case 3:
22991 return process.nextTick(function afterTickTwo() {
22992 fn.call(null, arg1, arg2);
22993 });
22994 case 4:
22995 return process.nextTick(function afterTickThree() {
22996 fn.call(null, arg1, arg2, arg3);
22997 });
22998 default:
22999 args = new Array(len - 1);
23000 i = 0;
23001 while (i < args.length) {
23002 args[i++] = arguments[i];
23003 }
23004 return process.nextTick(function afterTick() {
23005 fn.apply(null, args);
23006 });
23007 }
23008 }
23009
23010 }).call(this,require('_process'))
23011 },{"_process":13}],13:[function(require,module,exports){
23012 // shim for using process in browser
23013 var process = module.exports = {};
23014
23015 // cached from whatever global is present so that test runners that stub it
23016 // don't break things. But we need to wrap it in a try catch in case it is
23017 // wrapped in strict mode code which doesn't define any globals. It's inside a
23018 // function because try/catches deoptimize in certain engines.
23019
23020 var cachedSetTimeout;
23021 var cachedClearTimeout;
23022
23023 function defaultSetTimout() {
23024 throw new Error('setTimeout has not been defined');
23025 }
23026 function defaultClearTimeout () {
23027 throw new Error('clearTimeout has not been defined');
23028 }
23029 (function () {
23030 try {
23031 if (typeof setTimeout === 'function') {
23032 cachedSetTimeout = setTimeout;
23033 } else {
23034 cachedSetTimeout = defaultSetTimout;
23035 }
23036 } catch (e) {
23037 cachedSetTimeout = defaultSetTimout;
23038 }
23039 try {
23040 if (typeof clearTimeout === 'function') {
23041 cachedClearTimeout = clearTimeout;
23042 } else {
23043 cachedClearTimeout = defaultClearTimeout;
23044 }
23045 } catch (e) {
23046 cachedClearTimeout = defaultClearTimeout;
23047 }
23048 } ())
23049 function runTimeout(fun) {
23050 if (cachedSetTimeout === setTimeout) {
23051 //normal enviroments in sane situations
23052 return setTimeout(fun, 0);
23053 }
23054 // if setTimeout wasn't available but was latter defined
23055 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23056 cachedSetTimeout = setTimeout;
23057 return setTimeout(fun, 0);
23058 }
23059 try {
23060 // when when somebody has screwed with setTimeout but no I.E. maddness
23061 return cachedSetTimeout(fun, 0);
23062 } catch(e){
23063 try {
23064 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23065 return cachedSetTimeout.call(null, fun, 0);
23066 } catch(e){
23067 // 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
23068 return cachedSetTimeout.call(this, fun, 0);
23069 }
23070 }
23071
23072
23073 }
23074 function runClearTimeout(marker) {
23075 if (cachedClearTimeout === clearTimeout) {
23076 //normal enviroments in sane situations
23077 return clearTimeout(marker);
23078 }
23079 // if clearTimeout wasn't available but was latter defined
23080 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23081 cachedClearTimeout = clearTimeout;
23082 return clearTimeout(marker);
23083 }
23084 try {
23085 // when when somebody has screwed with setTimeout but no I.E. maddness
23086 return cachedClearTimeout(marker);
23087 } catch (e){
23088 try {
23089 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23090 return cachedClearTimeout.call(null, marker);
23091 } catch (e){
23092 // 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.
23093 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23094 return cachedClearTimeout.call(this, marker);
23095 }
23096 }
23097
23098
23099
23100 }
23101 var queue = [];
23102 var draining = false;
23103 var currentQueue;
23104 var queueIndex = -1;
23105
23106 function cleanUpNextTick() {
23107 if (!draining || !currentQueue) {
23108 return;
23109 }
23110 draining = false;
23111 if (currentQueue.length) {
23112 queue = currentQueue.concat(queue);
23113 } else {
23114 queueIndex = -1;
23115 }
23116 if (queue.length) {
23117 drainQueue();
23118 }
23119 }
23120
23121 function drainQueue() {
23122 if (draining) {
23123 return;
23124 }
23125 var timeout = runTimeout(cleanUpNextTick);
23126 draining = true;
23127
23128 var len = queue.length;
23129 while(len) {
23130 currentQueue = queue;
23131 queue = [];
23132 while (++queueIndex < len) {
23133 if (currentQueue) {
23134 currentQueue[queueIndex].run();
23135 }
23136 }
23137 queueIndex = -1;
23138 len = queue.length;
23139 }
23140 currentQueue = null;
23141 draining = false;
23142 runClearTimeout(timeout);
23143 }
23144
23145 process.nextTick = function (fun) {
23146 var args = new Array(arguments.length - 1);
23147 if (arguments.length > 1) {
23148 for (var i = 1; i < arguments.length; i++) {
23149 args[i - 1] = arguments[i];
23150 }
23151 }
23152 queue.push(new Item(fun, args));
23153 if (queue.length === 1 && !draining) {
23154 runTimeout(drainQueue);
23155 }
23156 };
23157
23158 // v8 likes predictible objects
23159 function Item(fun, array) {
23160 this.fun = fun;
23161 this.array = array;
23162 }
23163 Item.prototype.run = function () {
23164 this.fun.apply(null, this.array);
23165 };
23166 process.title = 'browser';
23167 process.browser = true;
23168 process.env = {};
23169 process.argv = [];
23170 process.version = ''; // empty string to avoid regexp issues
23171 process.versions = {};
23172
23173 function noop() {}
23174
23175 process.on = noop;
23176 process.addListener = noop;
23177 process.once = noop;
23178 process.off = noop;
23179 process.removeListener = noop;
23180 process.removeAllListeners = noop;
23181 process.emit = noop;
23182
23183 process.binding = function (name) {
23184 throw new Error('process.binding is not supported');
23185 };
23186
23187 process.cwd = function () { return '/' };
23188 process.chdir = function (dir) {
23189 throw new Error('process.chdir is not supported');
23190 };
23191 process.umask = function() { return 0; };
23192
23193 },{}],14:[function(require,module,exports){
23194 module.exports = require("./lib/_stream_duplex.js")
23195
23196 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23197 // a duplex stream is just a stream that is both readable and writable.
23198 // Since JS doesn't have multiple prototypal inheritance, this class
23199 // prototypally inherits from Readable, and then parasitically from
23200 // Writable.
23201
23202 'use strict';
23203
23204 /*<replacement>*/
23205
23206 var objectKeys = Object.keys || function (obj) {
23207 var keys = [];
23208 for (var key in obj) {
23209 keys.push(key);
23210 }return keys;
23211 };
23212 /*</replacement>*/
23213
23214 module.exports = Duplex;
23215
23216 /*<replacement>*/
23217 var processNextTick = require('process-nextick-args');
23218 /*</replacement>*/
23219
23220 /*<replacement>*/
23221 var util = require('core-util-is');
23222 util.inherits = require('inherits');
23223 /*</replacement>*/
23224
23225 var Readable = require('./_stream_readable');
23226 var Writable = require('./_stream_writable');
23227
23228 util.inherits(Duplex, Readable);
23229
23230 var keys = objectKeys(Writable.prototype);
23231 for (var v = 0; v < keys.length; v++) {
23232 var method = keys[v];
23233 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
23234 }
23235
23236 function Duplex(options) {
23237 if (!(this instanceof Duplex)) return new Duplex(options);
23238
23239 Readable.call(this, options);
23240 Writable.call(this, options);
23241
23242 if (options && options.readable === false) this.readable = false;
23243
23244 if (options && options.writable === false) this.writable = false;
23245
23246 this.allowHalfOpen = true;
23247 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
23248
23249 this.once('end', onend);
23250 }
23251
23252 // the no-half-open enforcer
23253 function onend() {
23254 // if we allow half-open state, or if the writable side ended,
23255 // then we're ok.
23256 if (this.allowHalfOpen || this._writableState.ended) return;
23257
23258 // no more data can be written.
23259 // But allow more writes to happen in this tick.
23260 processNextTick(onEndNT, this);
23261 }
23262
23263 function onEndNT(self) {
23264 self.end();
23265 }
23266
23267 function forEach(xs, f) {
23268 for (var i = 0, l = xs.length; i < l; i++) {
23269 f(xs[i], i);
23270 }
23271 }
23272 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23273 // a passthrough stream.
23274 // basically just the most minimal sort of Transform stream.
23275 // Every written chunk gets output as-is.
23276
23277 'use strict';
23278
23279 module.exports = PassThrough;
23280
23281 var Transform = require('./_stream_transform');
23282
23283 /*<replacement>*/
23284 var util = require('core-util-is');
23285 util.inherits = require('inherits');
23286 /*</replacement>*/
23287
23288 util.inherits(PassThrough, Transform);
23289
23290 function PassThrough(options) {
23291 if (!(this instanceof PassThrough)) return new PassThrough(options);
23292
23293 Transform.call(this, options);
23294 }
23295
23296 PassThrough.prototype._transform = function (chunk, encoding, cb) {
23297 cb(null, chunk);
23298 };
23299 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23300 (function (process){
23301 'use strict';
23302
23303 module.exports = Readable;
23304
23305 /*<replacement>*/
23306 var processNextTick = require('process-nextick-args');
23307 /*</replacement>*/
23308
23309 /*<replacement>*/
23310 var isArray = require('isarray');
23311 /*</replacement>*/
23312
23313 /*<replacement>*/
23314 var Duplex;
23315 /*</replacement>*/
23316
23317 Readable.ReadableState = ReadableState;
23318
23319 /*<replacement>*/
23320 var EE = require('events').EventEmitter;
23321
23322 var EElistenerCount = function (emitter, type) {
23323 return emitter.listeners(type).length;
23324 };
23325 /*</replacement>*/
23326
23327 /*<replacement>*/
23328 var Stream;
23329 (function () {
23330 try {
23331 Stream = require('st' + 'ream');
23332 } catch (_) {} finally {
23333 if (!Stream) Stream = require('events').EventEmitter;
23334 }
23335 })();
23336 /*</replacement>*/
23337
23338 var Buffer = require('buffer').Buffer;
23339 /*<replacement>*/
23340 var bufferShim = require('buffer-shims');
23341 /*</replacement>*/
23342
23343 /*<replacement>*/
23344 var util = require('core-util-is');
23345 util.inherits = require('inherits');
23346 /*</replacement>*/
23347
23348 /*<replacement>*/
23349 var debugUtil = require('util');
23350 var debug = void 0;
23351 if (debugUtil && debugUtil.debuglog) {
23352 debug = debugUtil.debuglog('stream');
23353 } else {
23354 debug = function () {};
23355 }
23356 /*</replacement>*/
23357
23358 var BufferList = require('./internal/streams/BufferList');
23359 var StringDecoder;
23360
23361 util.inherits(Readable, Stream);
23362
23363 function prependListener(emitter, event, fn) {
23364 // Sadly this is not cacheable as some libraries bundle their own
23365 // event emitter implementation with them.
23366 if (typeof emitter.prependListener === 'function') {
23367 return emitter.prependListener(event, fn);
23368 } else {
23369 // This is a hack to make sure that our error handler is attached before any
23370 // userland ones. NEVER DO THIS. This is here only because this code needs
23371 // to continue to work with older versions of Node.js that do not include
23372 // the prependListener() method. The goal is to eventually remove this hack.
23373 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]];
23374 }
23375 }
23376
23377 function ReadableState(options, stream) {
23378 Duplex = Duplex || require('./_stream_duplex');
23379
23380 options = options || {};
23381
23382 // object stream flag. Used to make read(n) ignore n and to
23383 // make all the buffer merging and length checks go away
23384 this.objectMode = !!options.objectMode;
23385
23386 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
23387
23388 // the point at which it stops calling _read() to fill the buffer
23389 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23390 var hwm = options.highWaterMark;
23391 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23392 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
23393
23394 // cast to ints.
23395 this.highWaterMark = ~ ~this.highWaterMark;
23396
23397 // A linked list is used to store data chunks instead of an array because the
23398 // linked list can remove elements from the beginning faster than
23399 // array.shift()
23400 this.buffer = new BufferList();
23401 this.length = 0;
23402 this.pipes = null;
23403 this.pipesCount = 0;
23404 this.flowing = null;
23405 this.ended = false;
23406 this.endEmitted = false;
23407 this.reading = false;
23408
23409 // a flag to be able to tell if the onwrite cb is called immediately,
23410 // or on a later tick. We set this to true at first, because any
23411 // actions that shouldn't happen until "later" should generally also
23412 // not happen before the first write call.
23413 this.sync = true;
23414
23415 // whenever we return null, then we set a flag to say
23416 // that we're awaiting a 'readable' event emission.
23417 this.needReadable = false;
23418 this.emittedReadable = false;
23419 this.readableListening = false;
23420 this.resumeScheduled = false;
23421
23422 // Crypto is kind of old and crusty. Historically, its default string
23423 // encoding is 'binary' so we have to make this configurable.
23424 // Everything else in the universe uses 'utf8', though.
23425 this.defaultEncoding = options.defaultEncoding || 'utf8';
23426
23427 // when piping, we only care about 'readable' events that happen
23428 // after read()ing all the bytes and not getting any pushback.
23429 this.ranOut = false;
23430
23431 // the number of writers that are awaiting a drain event in .pipe()s
23432 this.awaitDrain = 0;
23433
23434 // if true, a maybeReadMore has been scheduled
23435 this.readingMore = false;
23436
23437 this.decoder = null;
23438 this.encoding = null;
23439 if (options.encoding) {
23440 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23441 this.decoder = new StringDecoder(options.encoding);
23442 this.encoding = options.encoding;
23443 }
23444 }
23445
23446 function Readable(options) {
23447 Duplex = Duplex || require('./_stream_duplex');
23448
23449 if (!(this instanceof Readable)) return new Readable(options);
23450
23451 this._readableState = new ReadableState(options, this);
23452
23453 // legacy
23454 this.readable = true;
23455
23456 if (options && typeof options.read === 'function') this._read = options.read;
23457
23458 Stream.call(this);
23459 }
23460
23461 // Manually shove something into the read() buffer.
23462 // This returns true if the highWaterMark has not been hit yet,
23463 // similar to how Writable.write() returns true if you should
23464 // write() some more.
23465 Readable.prototype.push = function (chunk, encoding) {
23466 var state = this._readableState;
23467
23468 if (!state.objectMode && typeof chunk === 'string') {
23469 encoding = encoding || state.defaultEncoding;
23470 if (encoding !== state.encoding) {
23471 chunk = bufferShim.from(chunk, encoding);
23472 encoding = '';
23473 }
23474 }
23475
23476 return readableAddChunk(this, state, chunk, encoding, false);
23477 };
23478
23479 // Unshift should *always* be something directly out of read()
23480 Readable.prototype.unshift = function (chunk) {
23481 var state = this._readableState;
23482 return readableAddChunk(this, state, chunk, '', true);
23483 };
23484
23485 Readable.prototype.isPaused = function () {
23486 return this._readableState.flowing === false;
23487 };
23488
23489 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23490 var er = chunkInvalid(state, chunk);
23491 if (er) {
23492 stream.emit('error', er);
23493 } else if (chunk === null) {
23494 state.reading = false;
23495 onEofChunk(stream, state);
23496 } else if (state.objectMode || chunk && chunk.length > 0) {
23497 if (state.ended && !addToFront) {
23498 var e = new Error('stream.push() after EOF');
23499 stream.emit('error', e);
23500 } else if (state.endEmitted && addToFront) {
23501 var _e = new Error('stream.unshift() after end event');
23502 stream.emit('error', _e);
23503 } else {
23504 var skipAdd;
23505 if (state.decoder && !addToFront && !encoding) {
23506 chunk = state.decoder.write(chunk);
23507 skipAdd = !state.objectMode && chunk.length === 0;
23508 }
23509
23510 if (!addToFront) state.reading = false;
23511
23512 // Don't add to the buffer if we've decoded to an empty string chunk and
23513 // we're not in object mode
23514 if (!skipAdd) {
23515 // if we want the data now, just emit it.
23516 if (state.flowing && state.length === 0 && !state.sync) {
23517 stream.emit('data', chunk);
23518 stream.read(0);
23519 } else {
23520 // update the buffer info.
23521 state.length += state.objectMode ? 1 : chunk.length;
23522 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
23523
23524 if (state.needReadable) emitReadable(stream);
23525 }
23526 }
23527
23528 maybeReadMore(stream, state);
23529 }
23530 } else if (!addToFront) {
23531 state.reading = false;
23532 }
23533
23534 return needMoreData(state);
23535 }
23536
23537 // if it's past the high water mark, we can push in some more.
23538 // Also, if we have no data yet, we can stand some
23539 // more bytes. This is to work around cases where hwm=0,
23540 // such as the repl. Also, if the push() triggered a
23541 // readable event, and the user called read(largeNumber) such that
23542 // needReadable was set, then we ought to push more, so that another
23543 // 'readable' event will be triggered.
23544 function needMoreData(state) {
23545 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23546 }
23547
23548 // backwards compatibility.
23549 Readable.prototype.setEncoding = function (enc) {
23550 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23551 this._readableState.decoder = new StringDecoder(enc);
23552 this._readableState.encoding = enc;
23553 return this;
23554 };
23555
23556 // Don't raise the hwm > 8MB
23557 var MAX_HWM = 0x800000;
23558 function computeNewHighWaterMark(n) {
23559 if (n >= MAX_HWM) {
23560 n = MAX_HWM;
23561 } else {
23562 // Get the next highest power of 2 to prevent increasing hwm excessively in
23563 // tiny amounts
23564 n--;
23565 n |= n >>> 1;
23566 n |= n >>> 2;
23567 n |= n >>> 4;
23568 n |= n >>> 8;
23569 n |= n >>> 16;
23570 n++;
23571 }
23572 return n;
23573 }
23574
23575 // This function is designed to be inlinable, so please take care when making
23576 // changes to the function body.
23577 function howMuchToRead(n, state) {
23578 if (n <= 0 || state.length === 0 && state.ended) return 0;
23579 if (state.objectMode) return 1;
23580 if (n !== n) {
23581 // Only flow one buffer at a time
23582 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23583 }
23584 // If we're asking for more than the current hwm, then raise the hwm.
23585 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23586 if (n <= state.length) return n;
23587 // Don't have enough
23588 if (!state.ended) {
23589 state.needReadable = true;
23590 return 0;
23591 }
23592 return state.length;
23593 }
23594
23595 // you can override either this method, or the async _read(n) below.
23596 Readable.prototype.read = function (n) {
23597 debug('read', n);
23598 n = parseInt(n, 10);
23599 var state = this._readableState;
23600 var nOrig = n;
23601
23602 if (n !== 0) state.emittedReadable = false;
23603
23604 // if we're doing read(0) to trigger a readable event, but we
23605 // already have a bunch of data in the buffer, then just trigger
23606 // the 'readable' event and move on.
23607 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23608 debug('read: emitReadable', state.length, state.ended);
23609 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23610 return null;
23611 }
23612
23613 n = howMuchToRead(n, state);
23614
23615 // if we've ended, and we're now clear, then finish it up.
23616 if (n === 0 && state.ended) {
23617 if (state.length === 0) endReadable(this);
23618 return null;
23619 }
23620
23621 // All the actual chunk generation logic needs to be
23622 // *below* the call to _read. The reason is that in certain
23623 // synthetic stream cases, such as passthrough streams, _read
23624 // may be a completely synchronous operation which may change
23625 // the state of the read buffer, providing enough data when
23626 // before there was *not* enough.
23627 //
23628 // So, the steps are:
23629 // 1. Figure out what the state of things will be after we do
23630 // a read from the buffer.
23631 //
23632 // 2. If that resulting state will trigger a _read, then call _read.
23633 // Note that this may be asynchronous, or synchronous. Yes, it is
23634 // deeply ugly to write APIs this way, but that still doesn't mean
23635 // that the Readable class should behave improperly, as streams are
23636 // designed to be sync/async agnostic.
23637 // Take note if the _read call is sync or async (ie, if the read call
23638 // has returned yet), so that we know whether or not it's safe to emit
23639 // 'readable' etc.
23640 //
23641 // 3. Actually pull the requested chunks out of the buffer and return.
23642
23643 // if we need a readable event, then we need to do some reading.
23644 var doRead = state.needReadable;
23645 debug('need readable', doRead);
23646
23647 // if we currently have less than the highWaterMark, then also read some
23648 if (state.length === 0 || state.length - n < state.highWaterMark) {
23649 doRead = true;
23650 debug('length less than watermark', doRead);
23651 }
23652
23653 // however, if we've ended, then there's no point, and if we're already
23654 // reading, then it's unnecessary.
23655 if (state.ended || state.reading) {
23656 doRead = false;
23657 debug('reading or ended', doRead);
23658 } else if (doRead) {
23659 debug('do read');
23660 state.reading = true;
23661 state.sync = true;
23662 // if the length is currently zero, then we *need* a readable event.
23663 if (state.length === 0) state.needReadable = true;
23664 // call internal read method
23665 this._read(state.highWaterMark);
23666 state.sync = false;
23667 // If _read pushed data synchronously, then `reading` will be false,
23668 // and we need to re-evaluate how much data we can return to the user.
23669 if (!state.reading) n = howMuchToRead(nOrig, state);
23670 }
23671
23672 var ret;
23673 if (n > 0) ret = fromList(n, state);else ret = null;
23674
23675 if (ret === null) {
23676 state.needReadable = true;
23677 n = 0;
23678 } else {
23679 state.length -= n;
23680 }
23681
23682 if (state.length === 0) {
23683 // If we have nothing in the buffer, then we want to know
23684 // as soon as we *do* get something into the buffer.
23685 if (!state.ended) state.needReadable = true;
23686
23687 // If we tried to read() past the EOF, then emit end on the next tick.
23688 if (nOrig !== n && state.ended) endReadable(this);
23689 }
23690
23691 if (ret !== null) this.emit('data', ret);
23692
23693 return ret;
23694 };
23695
23696 function chunkInvalid(state, chunk) {
23697 var er = null;
23698 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23699 er = new TypeError('Invalid non-string/buffer chunk');
23700 }
23701 return er;
23702 }
23703
23704 function onEofChunk(stream, state) {
23705 if (state.ended) return;
23706 if (state.decoder) {
23707 var chunk = state.decoder.end();
23708 if (chunk && chunk.length) {
23709 state.buffer.push(chunk);
23710 state.length += state.objectMode ? 1 : chunk.length;
23711 }
23712 }
23713 state.ended = true;
23714
23715 // emit 'readable' now to make sure it gets picked up.
23716 emitReadable(stream);
23717 }
23718
23719 // Don't emit readable right away in sync mode, because this can trigger
23720 // another read() call => stack overflow. This way, it might trigger
23721 // a nextTick recursion warning, but that's not so bad.
23722 function emitReadable(stream) {
23723 var state = stream._readableState;
23724 state.needReadable = false;
23725 if (!state.emittedReadable) {
23726 debug('emitReadable', state.flowing);
23727 state.emittedReadable = true;
23728 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23729 }
23730 }
23731
23732 function emitReadable_(stream) {
23733 debug('emit readable');
23734 stream.emit('readable');
23735 flow(stream);
23736 }
23737
23738 // at this point, the user has presumably seen the 'readable' event,
23739 // and called read() to consume some data. that may have triggered
23740 // in turn another _read(n) call, in which case reading = true if
23741 // it's in progress.
23742 // However, if we're not ended, or reading, and the length < hwm,
23743 // then go ahead and try to read some more preemptively.
23744 function maybeReadMore(stream, state) {
23745 if (!state.readingMore) {
23746 state.readingMore = true;
23747 processNextTick(maybeReadMore_, stream, state);
23748 }
23749 }
23750
23751 function maybeReadMore_(stream, state) {
23752 var len = state.length;
23753 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23754 debug('maybeReadMore read 0');
23755 stream.read(0);
23756 if (len === state.length)
23757 // didn't get any data, stop spinning.
23758 break;else len = state.length;
23759 }
23760 state.readingMore = false;
23761 }
23762
23763 // abstract method. to be overridden in specific implementation classes.
23764 // call cb(er, data) where data is <= n in length.
23765 // for virtual (non-string, non-buffer) streams, "length" is somewhat
23766 // arbitrary, and perhaps not very meaningful.
23767 Readable.prototype._read = function (n) {
23768 this.emit('error', new Error('_read() is not implemented'));
23769 };
23770
23771 Readable.prototype.pipe = function (dest, pipeOpts) {
23772 var src = this;
23773 var state = this._readableState;
23774
23775 switch (state.pipesCount) {
23776 case 0:
23777 state.pipes = dest;
23778 break;
23779 case 1:
23780 state.pipes = [state.pipes, dest];
23781 break;
23782 default:
23783 state.pipes.push(dest);
23784 break;
23785 }
23786 state.pipesCount += 1;
23787 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
23788
23789 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
23790
23791 var endFn = doEnd ? onend : cleanup;
23792 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
23793
23794 dest.on('unpipe', onunpipe);
23795 function onunpipe(readable) {
23796 debug('onunpipe');
23797 if (readable === src) {
23798 cleanup();
23799 }
23800 }
23801
23802 function onend() {
23803 debug('onend');
23804 dest.end();
23805 }
23806
23807 // when the dest drains, it reduces the awaitDrain counter
23808 // on the source. This would be more elegant with a .once()
23809 // handler in flow(), but adding and removing repeatedly is
23810 // too slow.
23811 var ondrain = pipeOnDrain(src);
23812 dest.on('drain', ondrain);
23813
23814 var cleanedUp = false;
23815 function cleanup() {
23816 debug('cleanup');
23817 // cleanup event handlers once the pipe is broken
23818 dest.removeListener('close', onclose);
23819 dest.removeListener('finish', onfinish);
23820 dest.removeListener('drain', ondrain);
23821 dest.removeListener('error', onerror);
23822 dest.removeListener('unpipe', onunpipe);
23823 src.removeListener('end', onend);
23824 src.removeListener('end', cleanup);
23825 src.removeListener('data', ondata);
23826
23827 cleanedUp = true;
23828
23829 // if the reader is waiting for a drain event from this
23830 // specific writer, then it would cause it to never start
23831 // flowing again.
23832 // So, if this is awaiting a drain, then we just call it now.
23833 // If we don't know, then assume that we are waiting for one.
23834 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23835 }
23836
23837 // If the user pushes more data while we're writing to dest then we'll end up
23838 // in ondata again. However, we only want to increase awaitDrain once because
23839 // dest will only emit one 'drain' event for the multiple writes.
23840 // => Introduce a guard on increasing awaitDrain.
23841 var increasedAwaitDrain = false;
23842 src.on('data', ondata);
23843 function ondata(chunk) {
23844 debug('ondata');
23845 increasedAwaitDrain = false;
23846 var ret = dest.write(chunk);
23847 if (false === ret && !increasedAwaitDrain) {
23848 // If the user unpiped during `dest.write()`, it is possible
23849 // to get stuck in a permanently paused state if that write
23850 // also returned false.
23851 // => Check whether `dest` is still a piping destination.
23852 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23853 debug('false write response, pause', src._readableState.awaitDrain);
23854 src._readableState.awaitDrain++;
23855 increasedAwaitDrain = true;
23856 }
23857 src.pause();
23858 }
23859 }
23860
23861 // if the dest has an error, then stop piping into it.
23862 // however, don't suppress the throwing behavior for this.
23863 function onerror(er) {
23864 debug('onerror', er);
23865 unpipe();
23866 dest.removeListener('error', onerror);
23867 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23868 }
23869
23870 // Make sure our error handler is attached before userland ones.
23871 prependListener(dest, 'error', onerror);
23872
23873 // Both close and finish should trigger unpipe, but only once.
23874 function onclose() {
23875 dest.removeListener('finish', onfinish);
23876 unpipe();
23877 }
23878 dest.once('close', onclose);
23879 function onfinish() {
23880 debug('onfinish');
23881 dest.removeListener('close', onclose);
23882 unpipe();
23883 }
23884 dest.once('finish', onfinish);
23885
23886 function unpipe() {
23887 debug('unpipe');
23888 src.unpipe(dest);
23889 }
23890
23891 // tell the dest that it's being piped to
23892 dest.emit('pipe', src);
23893
23894 // start the flow if it hasn't been started already.
23895 if (!state.flowing) {
23896 debug('pipe resume');
23897 src.resume();
23898 }
23899
23900 return dest;
23901 };
23902
23903 function pipeOnDrain(src) {
23904 return function () {
23905 var state = src._readableState;
23906 debug('pipeOnDrain', state.awaitDrain);
23907 if (state.awaitDrain) state.awaitDrain--;
23908 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23909 state.flowing = true;
23910 flow(src);
23911 }
23912 };
23913 }
23914
23915 Readable.prototype.unpipe = function (dest) {
23916 var state = this._readableState;
23917
23918 // if we're not piping anywhere, then do nothing.
23919 if (state.pipesCount === 0) return this;
23920
23921 // just one destination. most common case.
23922 if (state.pipesCount === 1) {
23923 // passed in one, but it's not the right one.
23924 if (dest && dest !== state.pipes) return this;
23925
23926 if (!dest) dest = state.pipes;
23927
23928 // got a match.
23929 state.pipes = null;
23930 state.pipesCount = 0;
23931 state.flowing = false;
23932 if (dest) dest.emit('unpipe', this);
23933 return this;
23934 }
23935
23936 // slow case. multiple pipe destinations.
23937
23938 if (!dest) {
23939 // remove all.
23940 var dests = state.pipes;
23941 var len = state.pipesCount;
23942 state.pipes = null;
23943 state.pipesCount = 0;
23944 state.flowing = false;
23945
23946 for (var i = 0; i < len; i++) {
23947 dests[i].emit('unpipe', this);
23948 }return this;
23949 }
23950
23951 // try to find the right one.
23952 var index = indexOf(state.pipes, dest);
23953 if (index === -1) return this;
23954
23955 state.pipes.splice(index, 1);
23956 state.pipesCount -= 1;
23957 if (state.pipesCount === 1) state.pipes = state.pipes[0];
23958
23959 dest.emit('unpipe', this);
23960
23961 return this;
23962 };
23963
23964 // set up data events if they are asked for
23965 // Ensure readable listeners eventually get something
23966 Readable.prototype.on = function (ev, fn) {
23967 var res = Stream.prototype.on.call(this, ev, fn);
23968
23969 if (ev === 'data') {
23970 // Start flowing on next tick if stream isn't explicitly paused
23971 if (this._readableState.flowing !== false) this.resume();
23972 } else if (ev === 'readable') {
23973 var state = this._readableState;
23974 if (!state.endEmitted && !state.readableListening) {
23975 state.readableListening = state.needReadable = true;
23976 state.emittedReadable = false;
23977 if (!state.reading) {
23978 processNextTick(nReadingNextTick, this);
23979 } else if (state.length) {
23980 emitReadable(this, state);
23981 }
23982 }
23983 }
23984
23985 return res;
23986 };
23987 Readable.prototype.addListener = Readable.prototype.on;
23988
23989 function nReadingNextTick(self) {
23990 debug('readable nexttick read 0');
23991 self.read(0);
23992 }
23993
23994 // pause() and resume() are remnants of the legacy readable stream API
23995 // If the user uses them, then switch into old mode.
23996 Readable.prototype.resume = function () {
23997 var state = this._readableState;
23998 if (!state.flowing) {
23999 debug('resume');
24000 state.flowing = true;
24001 resume(this, state);
24002 }
24003 return this;
24004 };
24005
24006 function resume(stream, state) {
24007 if (!state.resumeScheduled) {
24008 state.resumeScheduled = true;
24009 processNextTick(resume_, stream, state);
24010 }
24011 }
24012
24013 function resume_(stream, state) {
24014 if (!state.reading) {
24015 debug('resume read 0');
24016 stream.read(0);
24017 }
24018
24019 state.resumeScheduled = false;
24020 state.awaitDrain = 0;
24021 stream.emit('resume');
24022 flow(stream);
24023 if (state.flowing && !state.reading) stream.read(0);
24024 }
24025
24026 Readable.prototype.pause = function () {
24027 debug('call pause flowing=%j', this._readableState.flowing);
24028 if (false !== this._readableState.flowing) {
24029 debug('pause');
24030 this._readableState.flowing = false;
24031 this.emit('pause');
24032 }
24033 return this;
24034 };
24035
24036 function flow(stream) {
24037 var state = stream._readableState;
24038 debug('flow', state.flowing);
24039 while (state.flowing && stream.read() !== null) {}
24040 }
24041
24042 // wrap an old-style stream as the async data source.
24043 // This is *not* part of the readable stream interface.
24044 // It is an ugly unfortunate mess of history.
24045 Readable.prototype.wrap = function (stream) {
24046 var state = this._readableState;
24047 var paused = false;
24048
24049 var self = this;
24050 stream.on('end', function () {
24051 debug('wrapped end');
24052 if (state.decoder && !state.ended) {
24053 var chunk = state.decoder.end();
24054 if (chunk && chunk.length) self.push(chunk);
24055 }
24056
24057 self.push(null);
24058 });
24059
24060 stream.on('data', function (chunk) {
24061 debug('wrapped data');
24062 if (state.decoder) chunk = state.decoder.write(chunk);
24063
24064 // don't skip over falsy values in objectMode
24065 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
24066
24067 var ret = self.push(chunk);
24068 if (!ret) {
24069 paused = true;
24070 stream.pause();
24071 }
24072 });
24073
24074 // proxy all the other methods.
24075 // important when wrapping filters and duplexes.
24076 for (var i in stream) {
24077 if (this[i] === undefined && typeof stream[i] === 'function') {
24078 this[i] = function (method) {
24079 return function () {
24080 return stream[method].apply(stream, arguments);
24081 };
24082 }(i);
24083 }
24084 }
24085
24086 // proxy certain important events.
24087 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24088 forEach(events, function (ev) {
24089 stream.on(ev, self.emit.bind(self, ev));
24090 });
24091
24092 // when we try to consume some more bytes, simply unpause the
24093 // underlying stream.
24094 self._read = function (n) {
24095 debug('wrapped _read', n);
24096 if (paused) {
24097 paused = false;
24098 stream.resume();
24099 }
24100 };
24101
24102 return self;
24103 };
24104
24105 // exposed for testing purposes only.
24106 Readable._fromList = fromList;
24107
24108 // Pluck off n bytes from an array of buffers.
24109 // Length is the combined lengths of all the buffers in the list.
24110 // This function is designed to be inlinable, so please take care when making
24111 // changes to the function body.
24112 function fromList(n, state) {
24113 // nothing buffered
24114 if (state.length === 0) return null;
24115
24116 var ret;
24117 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24118 // read it all, truncate the list
24119 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);
24120 state.buffer.clear();
24121 } else {
24122 // read part of list
24123 ret = fromListPartial(n, state.buffer, state.decoder);
24124 }
24125
24126 return ret;
24127 }
24128
24129 // Extracts only enough buffered data to satisfy the amount requested.
24130 // This function is designed to be inlinable, so please take care when making
24131 // changes to the function body.
24132 function fromListPartial(n, list, hasStrings) {
24133 var ret;
24134 if (n < list.head.data.length) {
24135 // slice is the same for buffers and strings
24136 ret = list.head.data.slice(0, n);
24137 list.head.data = list.head.data.slice(n);
24138 } else if (n === list.head.data.length) {
24139 // first chunk is a perfect match
24140 ret = list.shift();
24141 } else {
24142 // result spans more than one buffer
24143 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24144 }
24145 return ret;
24146 }
24147
24148 // Copies a specified amount of characters from the list of buffered data
24149 // chunks.
24150 // This function is designed to be inlinable, so please take care when making
24151 // changes to the function body.
24152 function copyFromBufferString(n, list) {
24153 var p = list.head;
24154 var c = 1;
24155 var ret = p.data;
24156 n -= ret.length;
24157 while (p = p.next) {
24158 var str = p.data;
24159 var nb = n > str.length ? str.length : n;
24160 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24161 n -= nb;
24162 if (n === 0) {
24163 if (nb === str.length) {
24164 ++c;
24165 if (p.next) list.head = p.next;else list.head = list.tail = null;
24166 } else {
24167 list.head = p;
24168 p.data = str.slice(nb);
24169 }
24170 break;
24171 }
24172 ++c;
24173 }
24174 list.length -= c;
24175 return ret;
24176 }
24177
24178 // Copies a specified amount of bytes from the list of buffered data chunks.
24179 // This function is designed to be inlinable, so please take care when making
24180 // changes to the function body.
24181 function copyFromBuffer(n, list) {
24182 var ret = bufferShim.allocUnsafe(n);
24183 var p = list.head;
24184 var c = 1;
24185 p.data.copy(ret);
24186 n -= p.data.length;
24187 while (p = p.next) {
24188 var buf = p.data;
24189 var nb = n > buf.length ? buf.length : n;
24190 buf.copy(ret, ret.length - n, 0, nb);
24191 n -= nb;
24192 if (n === 0) {
24193 if (nb === buf.length) {
24194 ++c;
24195 if (p.next) list.head = p.next;else list.head = list.tail = null;
24196 } else {
24197 list.head = p;
24198 p.data = buf.slice(nb);
24199 }
24200 break;
24201 }
24202 ++c;
24203 }
24204 list.length -= c;
24205 return ret;
24206 }
24207
24208 function endReadable(stream) {
24209 var state = stream._readableState;
24210
24211 // If we get here before consuming all the bytes, then that is a
24212 // bug in node. Should never happen.
24213 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
24214
24215 if (!state.endEmitted) {
24216 state.ended = true;
24217 processNextTick(endReadableNT, state, stream);
24218 }
24219 }
24220
24221 function endReadableNT(state, stream) {
24222 // Check that we didn't get one last unshift.
24223 if (!state.endEmitted && state.length === 0) {
24224 state.endEmitted = true;
24225 stream.readable = false;
24226 stream.emit('end');
24227 }
24228 }
24229
24230 function forEach(xs, f) {
24231 for (var i = 0, l = xs.length; i < l; i++) {
24232 f(xs[i], i);
24233 }
24234 }
24235
24236 function indexOf(xs, x) {
24237 for (var i = 0, l = xs.length; i < l; i++) {
24238 if (xs[i] === x) return i;
24239 }
24240 return -1;
24241 }
24242 }).call(this,require('_process'))
24243 },{"./_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){
24244 // a transform stream is a readable/writable stream where you do
24245 // something with the data. Sometimes it's called a "filter",
24246 // but that's not a great name for it, since that implies a thing where
24247 // some bits pass through, and others are simply ignored. (That would
24248 // be a valid example of a transform, of course.)
24249 //
24250 // While the output is causally related to the input, it's not a
24251 // necessarily symmetric or synchronous transformation. For example,
24252 // a zlib stream might take multiple plain-text writes(), and then
24253 // emit a single compressed chunk some time in the future.
24254 //
24255 // Here's how this works:
24256 //
24257 // The Transform stream has all the aspects of the readable and writable
24258 // stream classes. When you write(chunk), that calls _write(chunk,cb)
24259 // internally, and returns false if there's a lot of pending writes
24260 // buffered up. When you call read(), that calls _read(n) until
24261 // there's enough pending readable data buffered up.
24262 //
24263 // In a transform stream, the written data is placed in a buffer. When
24264 // _read(n) is called, it transforms the queued up data, calling the
24265 // buffered _write cb's as it consumes chunks. If consuming a single
24266 // written chunk would result in multiple output chunks, then the first
24267 // outputted bit calls the readcb, and subsequent chunks just go into
24268 // the read buffer, and will cause it to emit 'readable' if necessary.
24269 //
24270 // This way, back-pressure is actually determined by the reading side,
24271 // since _read has to be called to start processing a new chunk. However,
24272 // a pathological inflate type of transform can cause excessive buffering
24273 // here. For example, imagine a stream where every byte of input is
24274 // interpreted as an integer from 0-255, and then results in that many
24275 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24276 // 1kb of data being output. In this case, you could write a very small
24277 // amount of input, and end up with a very large amount of output. In
24278 // such a pathological inflating mechanism, there'd be no way to tell
24279 // the system to stop doing the transform. A single 4MB write could
24280 // cause the system to run out of memory.
24281 //
24282 // However, even in such a pathological case, only a single written chunk
24283 // would be consumed, and then the rest would wait (un-transformed) until
24284 // the results of the previous transformed chunk were consumed.
24285
24286 'use strict';
24287
24288 module.exports = Transform;
24289
24290 var Duplex = require('./_stream_duplex');
24291
24292 /*<replacement>*/
24293 var util = require('core-util-is');
24294 util.inherits = require('inherits');
24295 /*</replacement>*/
24296
24297 util.inherits(Transform, Duplex);
24298
24299 function TransformState(stream) {
24300 this.afterTransform = function (er, data) {
24301 return afterTransform(stream, er, data);
24302 };
24303
24304 this.needTransform = false;
24305 this.transforming = false;
24306 this.writecb = null;
24307 this.writechunk = null;
24308 this.writeencoding = null;
24309 }
24310
24311 function afterTransform(stream, er, data) {
24312 var ts = stream._transformState;
24313 ts.transforming = false;
24314
24315 var cb = ts.writecb;
24316
24317 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
24318
24319 ts.writechunk = null;
24320 ts.writecb = null;
24321
24322 if (data !== null && data !== undefined) stream.push(data);
24323
24324 cb(er);
24325
24326 var rs = stream._readableState;
24327 rs.reading = false;
24328 if (rs.needReadable || rs.length < rs.highWaterMark) {
24329 stream._read(rs.highWaterMark);
24330 }
24331 }
24332
24333 function Transform(options) {
24334 if (!(this instanceof Transform)) return new Transform(options);
24335
24336 Duplex.call(this, options);
24337
24338 this._transformState = new TransformState(this);
24339
24340 var stream = this;
24341
24342 // start out asking for a readable event once data is transformed.
24343 this._readableState.needReadable = true;
24344
24345 // we have implemented the _read method, and done the other things
24346 // that Readable wants before the first _read call, so unset the
24347 // sync guard flag.
24348 this._readableState.sync = false;
24349
24350 if (options) {
24351 if (typeof options.transform === 'function') this._transform = options.transform;
24352
24353 if (typeof options.flush === 'function') this._flush = options.flush;
24354 }
24355
24356 // When the writable side finishes, then flush out anything remaining.
24357 this.once('prefinish', function () {
24358 if (typeof this._flush === 'function') this._flush(function (er, data) {
24359 done(stream, er, data);
24360 });else done(stream);
24361 });
24362 }
24363
24364 Transform.prototype.push = function (chunk, encoding) {
24365 this._transformState.needTransform = false;
24366 return Duplex.prototype.push.call(this, chunk, encoding);
24367 };
24368
24369 // This is the part where you do stuff!
24370 // override this function in implementation classes.
24371 // 'chunk' is an input chunk.
24372 //
24373 // Call `push(newChunk)` to pass along transformed output
24374 // to the readable side. You may call 'push' zero or more times.
24375 //
24376 // Call `cb(err)` when you are done with this chunk. If you pass
24377 // an error, then that'll put the hurt on the whole operation. If you
24378 // never call cb(), then you'll never get another chunk.
24379 Transform.prototype._transform = function (chunk, encoding, cb) {
24380 throw new Error('_transform() is not implemented');
24381 };
24382
24383 Transform.prototype._write = function (chunk, encoding, cb) {
24384 var ts = this._transformState;
24385 ts.writecb = cb;
24386 ts.writechunk = chunk;
24387 ts.writeencoding = encoding;
24388 if (!ts.transforming) {
24389 var rs = this._readableState;
24390 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24391 }
24392 };
24393
24394 // Doesn't matter what the args are here.
24395 // _transform does all the work.
24396 // That we got here means that the readable side wants more data.
24397 Transform.prototype._read = function (n) {
24398 var ts = this._transformState;
24399
24400 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24401 ts.transforming = true;
24402 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24403 } else {
24404 // mark that we need a transform, so that any data that comes in
24405 // will get processed, now that we've asked for it.
24406 ts.needTransform = true;
24407 }
24408 };
24409
24410 function done(stream, er, data) {
24411 if (er) return stream.emit('error', er);
24412
24413 if (data !== null && data !== undefined) stream.push(data);
24414
24415 // if there's nothing in the write buffer, then that means
24416 // that nothing more will ever be provided
24417 var ws = stream._writableState;
24418 var ts = stream._transformState;
24419
24420 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
24421
24422 if (ts.transforming) throw new Error('Calling transform done when still transforming');
24423
24424 return stream.push(null);
24425 }
24426 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
24427 (function (process){
24428 // A bit simpler than readable streams.
24429 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
24430 // the drain event emission and buffering.
24431
24432 'use strict';
24433
24434 module.exports = Writable;
24435
24436 /*<replacement>*/
24437 var processNextTick = require('process-nextick-args');
24438 /*</replacement>*/
24439
24440 /*<replacement>*/
24441 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
24442 /*</replacement>*/
24443
24444 /*<replacement>*/
24445 var Duplex;
24446 /*</replacement>*/
24447
24448 Writable.WritableState = WritableState;
24449
24450 /*<replacement>*/
24451 var util = require('core-util-is');
24452 util.inherits = require('inherits');
24453 /*</replacement>*/
24454
24455 /*<replacement>*/
24456 var internalUtil = {
24457 deprecate: require('util-deprecate')
24458 };
24459 /*</replacement>*/
24460
24461 /*<replacement>*/
24462 var Stream;
24463 (function () {
24464 try {
24465 Stream = require('st' + 'ream');
24466 } catch (_) {} finally {
24467 if (!Stream) Stream = require('events').EventEmitter;
24468 }
24469 })();
24470 /*</replacement>*/
24471
24472 var Buffer = require('buffer').Buffer;
24473 /*<replacement>*/
24474 var bufferShim = require('buffer-shims');
24475 /*</replacement>*/
24476
24477 util.inherits(Writable, Stream);
24478
24479 function nop() {}
24480
24481 function WriteReq(chunk, encoding, cb) {
24482 this.chunk = chunk;
24483 this.encoding = encoding;
24484 this.callback = cb;
24485 this.next = null;
24486 }
24487
24488 function WritableState(options, stream) {
24489 Duplex = Duplex || require('./_stream_duplex');
24490
24491 options = options || {};
24492
24493 // object stream flag to indicate whether or not this stream
24494 // contains buffers or objects.
24495 this.objectMode = !!options.objectMode;
24496
24497 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24498
24499 // the point at which write() starts returning false
24500 // Note: 0 is a valid value, means that we always return false if
24501 // the entire buffer is not flushed immediately on write()
24502 var hwm = options.highWaterMark;
24503 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24504 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
24505
24506 // cast to ints.
24507 this.highWaterMark = ~ ~this.highWaterMark;
24508
24509 // drain event flag.
24510 this.needDrain = false;
24511 // at the start of calling end()
24512 this.ending = false;
24513 // when end() has been called, and returned
24514 this.ended = false;
24515 // when 'finish' is emitted
24516 this.finished = false;
24517
24518 // should we decode strings into buffers before passing to _write?
24519 // this is here so that some node-core streams can optimize string
24520 // handling at a lower level.
24521 var noDecode = options.decodeStrings === false;
24522 this.decodeStrings = !noDecode;
24523
24524 // Crypto is kind of old and crusty. Historically, its default string
24525 // encoding is 'binary' so we have to make this configurable.
24526 // Everything else in the universe uses 'utf8', though.
24527 this.defaultEncoding = options.defaultEncoding || 'utf8';
24528
24529 // not an actual buffer we keep track of, but a measurement
24530 // of how much we're waiting to get pushed to some underlying
24531 // socket or file.
24532 this.length = 0;
24533
24534 // a flag to see when we're in the middle of a write.
24535 this.writing = false;
24536
24537 // when true all writes will be buffered until .uncork() call
24538 this.corked = 0;
24539
24540 // a flag to be able to tell if the onwrite cb is called immediately,
24541 // or on a later tick. We set this to true at first, because any
24542 // actions that shouldn't happen until "later" should generally also
24543 // not happen before the first write call.
24544 this.sync = true;
24545
24546 // a flag to know if we're processing previously buffered items, which
24547 // may call the _write() callback in the same tick, so that we don't
24548 // end up in an overlapped onwrite situation.
24549 this.bufferProcessing = false;
24550
24551 // the callback that's passed to _write(chunk,cb)
24552 this.onwrite = function (er) {
24553 onwrite(stream, er);
24554 };
24555
24556 // the callback that the user supplies to write(chunk,encoding,cb)
24557 this.writecb = null;
24558
24559 // the amount that is being written when _write is called.
24560 this.writelen = 0;
24561
24562 this.bufferedRequest = null;
24563 this.lastBufferedRequest = null;
24564
24565 // number of pending user-supplied write callbacks
24566 // this must be 0 before 'finish' can be emitted
24567 this.pendingcb = 0;
24568
24569 // emit prefinish if the only thing we're waiting for is _write cbs
24570 // This is relevant for synchronous Transform streams
24571 this.prefinished = false;
24572
24573 // True if the error was already emitted and should not be thrown again
24574 this.errorEmitted = false;
24575
24576 // count buffered requests
24577 this.bufferedRequestCount = 0;
24578
24579 // allocate the first CorkedRequest, there is always
24580 // one allocated and free to use, and we maintain at most two
24581 this.corkedRequestsFree = new CorkedRequest(this);
24582 }
24583
24584 WritableState.prototype.getBuffer = function getBuffer() {
24585 var current = this.bufferedRequest;
24586 var out = [];
24587 while (current) {
24588 out.push(current);
24589 current = current.next;
24590 }
24591 return out;
24592 };
24593
24594 (function () {
24595 try {
24596 Object.defineProperty(WritableState.prototype, 'buffer', {
24597 get: internalUtil.deprecate(function () {
24598 return this.getBuffer();
24599 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24600 });
24601 } catch (_) {}
24602 })();
24603
24604 // Test _writableState for inheritance to account for Duplex streams,
24605 // whose prototype chain only points to Readable.
24606 var realHasInstance;
24607 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24608 realHasInstance = Function.prototype[Symbol.hasInstance];
24609 Object.defineProperty(Writable, Symbol.hasInstance, {
24610 value: function (object) {
24611 if (realHasInstance.call(this, object)) return true;
24612
24613 return object && object._writableState instanceof WritableState;
24614 }
24615 });
24616 } else {
24617 realHasInstance = function (object) {
24618 return object instanceof this;
24619 };
24620 }
24621
24622 function Writable(options) {
24623 Duplex = Duplex || require('./_stream_duplex');
24624
24625 // Writable ctor is applied to Duplexes, too.
24626 // `realHasInstance` is necessary because using plain `instanceof`
24627 // would return false, as no `_writableState` property is attached.
24628
24629 // Trying to use the custom `instanceof` for Writable here will also break the
24630 // Node.js LazyTransform implementation, which has a non-trivial getter for
24631 // `_writableState` that would lead to infinite recursion.
24632 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24633 return new Writable(options);
24634 }
24635
24636 this._writableState = new WritableState(options, this);
24637
24638 // legacy.
24639 this.writable = true;
24640
24641 if (options) {
24642 if (typeof options.write === 'function') this._write = options.write;
24643
24644 if (typeof options.writev === 'function') this._writev = options.writev;
24645 }
24646
24647 Stream.call(this);
24648 }
24649
24650 // Otherwise people can pipe Writable streams, which is just wrong.
24651 Writable.prototype.pipe = function () {
24652 this.emit('error', new Error('Cannot pipe, not readable'));
24653 };
24654
24655 function writeAfterEnd(stream, cb) {
24656 var er = new Error('write after end');
24657 // TODO: defer error events consistently everywhere, not just the cb
24658 stream.emit('error', er);
24659 processNextTick(cb, er);
24660 }
24661
24662 // If we get something that is not a buffer, string, null, or undefined,
24663 // and we're not in objectMode, then that's an error.
24664 // Otherwise stream chunks are all considered to be of length=1, and the
24665 // watermarks determine how many objects to keep in the buffer, rather than
24666 // how many bytes or characters.
24667 function validChunk(stream, state, chunk, cb) {
24668 var valid = true;
24669 var er = false;
24670 // Always throw error if a null is written
24671 // if we are not in object mode then throw
24672 // if it is not a buffer, string, or undefined.
24673 if (chunk === null) {
24674 er = new TypeError('May not write null values to stream');
24675 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24676 er = new TypeError('Invalid non-string/buffer chunk');
24677 }
24678 if (er) {
24679 stream.emit('error', er);
24680 processNextTick(cb, er);
24681 valid = false;
24682 }
24683 return valid;
24684 }
24685
24686 Writable.prototype.write = function (chunk, encoding, cb) {
24687 var state = this._writableState;
24688 var ret = false;
24689
24690 if (typeof encoding === 'function') {
24691 cb = encoding;
24692 encoding = null;
24693 }
24694
24695 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
24696
24697 if (typeof cb !== 'function') cb = nop;
24698
24699 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24700 state.pendingcb++;
24701 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24702 }
24703
24704 return ret;
24705 };
24706
24707 Writable.prototype.cork = function () {
24708 var state = this._writableState;
24709
24710 state.corked++;
24711 };
24712
24713 Writable.prototype.uncork = function () {
24714 var state = this._writableState;
24715
24716 if (state.corked) {
24717 state.corked--;
24718
24719 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24720 }
24721 };
24722
24723 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24724 // node::ParseEncoding() requires lower case.
24725 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24726 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);
24727 this._writableState.defaultEncoding = encoding;
24728 return this;
24729 };
24730
24731 function decodeChunk(state, chunk, encoding) {
24732 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24733 chunk = bufferShim.from(chunk, encoding);
24734 }
24735 return chunk;
24736 }
24737
24738 // if we're already writing something, then just put this
24739 // in the queue, and wait our turn. Otherwise, call _write
24740 // If we return false, then we need a drain event, so set that flag.
24741 function writeOrBuffer(stream, state, chunk, encoding, cb) {
24742 chunk = decodeChunk(state, chunk, encoding);
24743
24744 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24745 var len = state.objectMode ? 1 : chunk.length;
24746
24747 state.length += len;
24748
24749 var ret = state.length < state.highWaterMark;
24750 // we must ensure that previous needDrain will not be reset to false.
24751 if (!ret) state.needDrain = true;
24752
24753 if (state.writing || state.corked) {
24754 var last = state.lastBufferedRequest;
24755 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24756 if (last) {
24757 last.next = state.lastBufferedRequest;
24758 } else {
24759 state.bufferedRequest = state.lastBufferedRequest;
24760 }
24761 state.bufferedRequestCount += 1;
24762 } else {
24763 doWrite(stream, state, false, len, chunk, encoding, cb);
24764 }
24765
24766 return ret;
24767 }
24768
24769 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24770 state.writelen = len;
24771 state.writecb = cb;
24772 state.writing = true;
24773 state.sync = true;
24774 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24775 state.sync = false;
24776 }
24777
24778 function onwriteError(stream, state, sync, er, cb) {
24779 --state.pendingcb;
24780 if (sync) processNextTick(cb, er);else cb(er);
24781
24782 stream._writableState.errorEmitted = true;
24783 stream.emit('error', er);
24784 }
24785
24786 function onwriteStateUpdate(state) {
24787 state.writing = false;
24788 state.writecb = null;
24789 state.length -= state.writelen;
24790 state.writelen = 0;
24791 }
24792
24793 function onwrite(stream, er) {
24794 var state = stream._writableState;
24795 var sync = state.sync;
24796 var cb = state.writecb;
24797
24798 onwriteStateUpdate(state);
24799
24800 if (er) onwriteError(stream, state, sync, er, cb);else {
24801 // Check if we're actually ready to finish, but don't emit yet
24802 var finished = needFinish(state);
24803
24804 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24805 clearBuffer(stream, state);
24806 }
24807
24808 if (sync) {
24809 /*<replacement>*/
24810 asyncWrite(afterWrite, stream, state, finished, cb);
24811 /*</replacement>*/
24812 } else {
24813 afterWrite(stream, state, finished, cb);
24814 }
24815 }
24816 }
24817
24818 function afterWrite(stream, state, finished, cb) {
24819 if (!finished) onwriteDrain(stream, state);
24820 state.pendingcb--;
24821 cb();
24822 finishMaybe(stream, state);
24823 }
24824
24825 // Must force callback to be called on nextTick, so that we don't
24826 // emit 'drain' before the write() consumer gets the 'false' return
24827 // value, and has a chance to attach a 'drain' listener.
24828 function onwriteDrain(stream, state) {
24829 if (state.length === 0 && state.needDrain) {
24830 state.needDrain = false;
24831 stream.emit('drain');
24832 }
24833 }
24834
24835 // if there's something in the buffer waiting, then process it
24836 function clearBuffer(stream, state) {
24837 state.bufferProcessing = true;
24838 var entry = state.bufferedRequest;
24839
24840 if (stream._writev && entry && entry.next) {
24841 // Fast case, write everything using _writev()
24842 var l = state.bufferedRequestCount;
24843 var buffer = new Array(l);
24844 var holder = state.corkedRequestsFree;
24845 holder.entry = entry;
24846
24847 var count = 0;
24848 while (entry) {
24849 buffer[count] = entry;
24850 entry = entry.next;
24851 count += 1;
24852 }
24853
24854 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
24855
24856 // doWrite is almost always async, defer these to save a bit of time
24857 // as the hot path ends with doWrite
24858 state.pendingcb++;
24859 state.lastBufferedRequest = null;
24860 if (holder.next) {
24861 state.corkedRequestsFree = holder.next;
24862 holder.next = null;
24863 } else {
24864 state.corkedRequestsFree = new CorkedRequest(state);
24865 }
24866 } else {
24867 // Slow case, write chunks one-by-one
24868 while (entry) {
24869 var chunk = entry.chunk;
24870 var encoding = entry.encoding;
24871 var cb = entry.callback;
24872 var len = state.objectMode ? 1 : chunk.length;
24873
24874 doWrite(stream, state, false, len, chunk, encoding, cb);
24875 entry = entry.next;
24876 // if we didn't call the onwrite immediately, then
24877 // it means that we need to wait until it does.
24878 // also, that means that the chunk and cb are currently
24879 // being processed, so move the buffer counter past them.
24880 if (state.writing) {
24881 break;
24882 }
24883 }
24884
24885 if (entry === null) state.lastBufferedRequest = null;
24886 }
24887
24888 state.bufferedRequestCount = 0;
24889 state.bufferedRequest = entry;
24890 state.bufferProcessing = false;
24891 }
24892
24893 Writable.prototype._write = function (chunk, encoding, cb) {
24894 cb(new Error('_write() is not implemented'));
24895 };
24896
24897 Writable.prototype._writev = null;
24898
24899 Writable.prototype.end = function (chunk, encoding, cb) {
24900 var state = this._writableState;
24901
24902 if (typeof chunk === 'function') {
24903 cb = chunk;
24904 chunk = null;
24905 encoding = null;
24906 } else if (typeof encoding === 'function') {
24907 cb = encoding;
24908 encoding = null;
24909 }
24910
24911 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
24912
24913 // .end() fully uncorks
24914 if (state.corked) {
24915 state.corked = 1;
24916 this.uncork();
24917 }
24918
24919 // ignore unnecessary end() calls.
24920 if (!state.ending && !state.finished) endWritable(this, state, cb);
24921 };
24922
24923 function needFinish(state) {
24924 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24925 }
24926
24927 function prefinish(stream, state) {
24928 if (!state.prefinished) {
24929 state.prefinished = true;
24930 stream.emit('prefinish');
24931 }
24932 }
24933
24934 function finishMaybe(stream, state) {
24935 var need = needFinish(state);
24936 if (need) {
24937 if (state.pendingcb === 0) {
24938 prefinish(stream, state);
24939 state.finished = true;
24940 stream.emit('finish');
24941 } else {
24942 prefinish(stream, state);
24943 }
24944 }
24945 return need;
24946 }
24947
24948 function endWritable(stream, state, cb) {
24949 state.ending = true;
24950 finishMaybe(stream, state);
24951 if (cb) {
24952 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
24953 }
24954 state.ended = true;
24955 stream.writable = false;
24956 }
24957
24958 // It seems a linked list but it is not
24959 // there will be only 2 of these for each stream
24960 function CorkedRequest(state) {
24961 var _this = this;
24962
24963 this.next = null;
24964 this.entry = null;
24965
24966 this.finish = function (err) {
24967 var entry = _this.entry;
24968 _this.entry = null;
24969 while (entry) {
24970 var cb = entry.callback;
24971 state.pendingcb--;
24972 cb(err);
24973 entry = entry.next;
24974 }
24975 if (state.corkedRequestsFree) {
24976 state.corkedRequestsFree.next = _this;
24977 } else {
24978 state.corkedRequestsFree = _this;
24979 }
24980 };
24981 }
24982 }).call(this,require('_process'))
24983 },{"./_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){
24984 'use strict';
24985
24986 var Buffer = require('buffer').Buffer;
24987 /*<replacement>*/
24988 var bufferShim = require('buffer-shims');
24989 /*</replacement>*/
24990
24991 module.exports = BufferList;
24992
24993 function BufferList() {
24994 this.head = null;
24995 this.tail = null;
24996 this.length = 0;
24997 }
24998
24999 BufferList.prototype.push = function (v) {
25000 var entry = { data: v, next: null };
25001 if (this.length > 0) this.tail.next = entry;else this.head = entry;
25002 this.tail = entry;
25003 ++this.length;
25004 };
25005
25006 BufferList.prototype.unshift = function (v) {
25007 var entry = { data: v, next: this.head };
25008 if (this.length === 0) this.tail = entry;
25009 this.head = entry;
25010 ++this.length;
25011 };
25012
25013 BufferList.prototype.shift = function () {
25014 if (this.length === 0) return;
25015 var ret = this.head.data;
25016 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
25017 --this.length;
25018 return ret;
25019 };
25020
25021 BufferList.prototype.clear = function () {
25022 this.head = this.tail = null;
25023 this.length = 0;
25024 };
25025
25026 BufferList.prototype.join = function (s) {
25027 if (this.length === 0) return '';
25028 var p = this.head;
25029 var ret = '' + p.data;
25030 while (p = p.next) {
25031 ret += s + p.data;
25032 }return ret;
25033 };
25034
25035 BufferList.prototype.concat = function (n) {
25036 if (this.length === 0) return bufferShim.alloc(0);
25037 if (this.length === 1) return this.head.data;
25038 var ret = bufferShim.allocUnsafe(n >>> 0);
25039 var p = this.head;
25040 var i = 0;
25041 while (p) {
25042 p.data.copy(ret, i);
25043 i += p.data.length;
25044 p = p.next;
25045 }
25046 return ret;
25047 };
25048 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25049 module.exports = require("./lib/_stream_passthrough.js")
25050
25051 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25052 (function (process){
25053 var Stream = (function (){
25054 try {
25055 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25056 } catch(_){}
25057 }());
25058 exports = module.exports = require('./lib/_stream_readable.js');
25059 exports.Stream = Stream || exports;
25060 exports.Readable = exports;
25061 exports.Writable = require('./lib/_stream_writable.js');
25062 exports.Duplex = require('./lib/_stream_duplex.js');
25063 exports.Transform = require('./lib/_stream_transform.js');
25064 exports.PassThrough = require('./lib/_stream_passthrough.js');
25065
25066 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25067 module.exports = Stream;
25068 }
25069
25070 }).call(this,require('_process'))
25071 },{"./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){
25072 module.exports = require("./lib/_stream_transform.js")
25073
25074 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25075 module.exports = require("./lib/_stream_writable.js")
25076
25077 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25078 // Copyright Joyent, Inc. and other Node contributors.
25079 //
25080 // Permission is hereby granted, free of charge, to any person obtaining a
25081 // copy of this software and associated documentation files (the
25082 // "Software"), to deal in the Software without restriction, including
25083 // without limitation the rights to use, copy, modify, merge, publish,
25084 // distribute, sublicense, and/or sell copies of the Software, and to permit
25085 // persons to whom the Software is furnished to do so, subject to the
25086 // following conditions:
25087 //
25088 // The above copyright notice and this permission notice shall be included
25089 // in all copies or substantial portions of the Software.
25090 //
25091 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25092 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25093 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25094 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25095 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25096 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25097 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25098
25099 module.exports = Stream;
25100
25101 var EE = require('events').EventEmitter;
25102 var inherits = require('inherits');
25103
25104 inherits(Stream, EE);
25105 Stream.Readable = require('readable-stream/readable.js');
25106 Stream.Writable = require('readable-stream/writable.js');
25107 Stream.Duplex = require('readable-stream/duplex.js');
25108 Stream.Transform = require('readable-stream/transform.js');
25109 Stream.PassThrough = require('readable-stream/passthrough.js');
25110
25111 // Backwards-compat with node 0.4.x
25112 Stream.Stream = Stream;
25113
25114
25115
25116 // old-style streams. Note that the pipe method (the only relevant
25117 // part of this class) is overridden in the Readable class.
25118
25119 function Stream() {
25120 EE.call(this);
25121 }
25122
25123 Stream.prototype.pipe = function(dest, options) {
25124 var source = this;
25125
25126 function ondata(chunk) {
25127 if (dest.writable) {
25128 if (false === dest.write(chunk) && source.pause) {
25129 source.pause();
25130 }
25131 }
25132 }
25133
25134 source.on('data', ondata);
25135
25136 function ondrain() {
25137 if (source.readable && source.resume) {
25138 source.resume();
25139 }
25140 }
25141
25142 dest.on('drain', ondrain);
25143
25144 // If the 'end' option is not supplied, dest.end() will be called when
25145 // source gets the 'end' or 'close' events. Only dest.end() once.
25146 if (!dest._isStdio && (!options || options.end !== false)) {
25147 source.on('end', onend);
25148 source.on('close', onclose);
25149 }
25150
25151 var didOnEnd = false;
25152 function onend() {
25153 if (didOnEnd) return;
25154 didOnEnd = true;
25155
25156 dest.end();
25157 }
25158
25159
25160 function onclose() {
25161 if (didOnEnd) return;
25162 didOnEnd = true;
25163
25164 if (typeof dest.destroy === 'function') dest.destroy();
25165 }
25166
25167 // don't leave dangling pipes when there are errors.
25168 function onerror(er) {
25169 cleanup();
25170 if (EE.listenerCount(this, 'error') === 0) {
25171 throw er; // Unhandled stream error in pipe.
25172 }
25173 }
25174
25175 source.on('error', onerror);
25176 dest.on('error', onerror);
25177
25178 // remove all the event listeners that were added.
25179 function cleanup() {
25180 source.removeListener('data', ondata);
25181 dest.removeListener('drain', ondrain);
25182
25183 source.removeListener('end', onend);
25184 source.removeListener('close', onclose);
25185
25186 source.removeListener('error', onerror);
25187 dest.removeListener('error', onerror);
25188
25189 source.removeListener('end', cleanup);
25190 source.removeListener('close', cleanup);
25191
25192 dest.removeListener('close', cleanup);
25193 }
25194
25195 source.on('end', cleanup);
25196 source.on('close', cleanup);
25197
25198 dest.on('close', cleanup);
25199
25200 dest.emit('pipe', source);
25201
25202 // Allow for unix-like usage: A.pipe(B).pipe(C)
25203 return dest;
25204 };
25205
25206 },{"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){
25207 // Copyright Joyent, Inc. and other Node contributors.
25208 //
25209 // Permission is hereby granted, free of charge, to any person obtaining a
25210 // copy of this software and associated documentation files (the
25211 // "Software"), to deal in the Software without restriction, including
25212 // without limitation the rights to use, copy, modify, merge, publish,
25213 // distribute, sublicense, and/or sell copies of the Software, and to permit
25214 // persons to whom the Software is furnished to do so, subject to the
25215 // following conditions:
25216 //
25217 // The above copyright notice and this permission notice shall be included
25218 // in all copies or substantial portions of the Software.
25219 //
25220 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25221 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25222 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25223 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25224 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25225 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25226 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25227
25228 var Buffer = require('buffer').Buffer;
25229
25230 var isBufferEncoding = Buffer.isEncoding
25231 || function(encoding) {
25232 switch (encoding && encoding.toLowerCase()) {
25233 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;
25234 default: return false;
25235 }
25236 }
25237
25238
25239 function assertEncoding(encoding) {
25240 if (encoding && !isBufferEncoding(encoding)) {
25241 throw new Error('Unknown encoding: ' + encoding);
25242 }
25243 }
25244
25245 // StringDecoder provides an interface for efficiently splitting a series of
25246 // buffers into a series of JS strings without breaking apart multi-byte
25247 // characters. CESU-8 is handled as part of the UTF-8 encoding.
25248 //
25249 // @TODO Handling all encodings inside a single object makes it very difficult
25250 // to reason about this code, so it should be split up in the future.
25251 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25252 // points as used by CESU-8.
25253 var StringDecoder = exports.StringDecoder = function(encoding) {
25254 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25255 assertEncoding(encoding);
25256 switch (this.encoding) {
25257 case 'utf8':
25258 // CESU-8 represents each of Surrogate Pair by 3-bytes
25259 this.surrogateSize = 3;
25260 break;
25261 case 'ucs2':
25262 case 'utf16le':
25263 // UTF-16 represents each of Surrogate Pair by 2-bytes
25264 this.surrogateSize = 2;
25265 this.detectIncompleteChar = utf16DetectIncompleteChar;
25266 break;
25267 case 'base64':
25268 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25269 this.surrogateSize = 3;
25270 this.detectIncompleteChar = base64DetectIncompleteChar;
25271 break;
25272 default:
25273 this.write = passThroughWrite;
25274 return;
25275 }
25276
25277 // Enough space to store all bytes of a single character. UTF-8 needs 4
25278 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25279 this.charBuffer = new Buffer(6);
25280 // Number of bytes received for the current incomplete multi-byte character.
25281 this.charReceived = 0;
25282 // Number of bytes expected for the current incomplete multi-byte character.
25283 this.charLength = 0;
25284 };
25285
25286
25287 // write decodes the given buffer and returns it as JS string that is
25288 // guaranteed to not contain any partial multi-byte characters. Any partial
25289 // character found at the end of the buffer is buffered up, and will be
25290 // returned when calling write again with the remaining bytes.
25291 //
25292 // Note: Converting a Buffer containing an orphan surrogate to a String
25293 // currently works, but converting a String to a Buffer (via `new Buffer`, or
25294 // Buffer#write) will replace incomplete surrogates with the unicode
25295 // replacement character. See https://codereview.chromium.org/121173009/ .
25296 StringDecoder.prototype.write = function(buffer) {
25297 var charStr = '';
25298 // if our last write ended with an incomplete multibyte character
25299 while (this.charLength) {
25300 // determine how many remaining bytes this buffer has to offer for this char
25301 var available = (buffer.length >= this.charLength - this.charReceived) ?
25302 this.charLength - this.charReceived :
25303 buffer.length;
25304
25305 // add the new bytes to the char buffer
25306 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25307 this.charReceived += available;
25308
25309 if (this.charReceived < this.charLength) {
25310 // still not enough chars in this buffer? wait for more ...
25311 return '';
25312 }
25313
25314 // remove bytes belonging to the current character from the buffer
25315 buffer = buffer.slice(available, buffer.length);
25316
25317 // get the character that was split
25318 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25319
25320 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25321 var charCode = charStr.charCodeAt(charStr.length - 1);
25322 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25323 this.charLength += this.surrogateSize;
25324 charStr = '';
25325 continue;
25326 }
25327 this.charReceived = this.charLength = 0;
25328
25329 // if there are no more bytes in this buffer, just emit our char
25330 if (buffer.length === 0) {
25331 return charStr;
25332 }
25333 break;
25334 }
25335
25336 // determine and set charLength / charReceived
25337 this.detectIncompleteChar(buffer);
25338
25339 var end = buffer.length;
25340 if (this.charLength) {
25341 // buffer the incomplete character bytes we got
25342 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25343 end -= this.charReceived;
25344 }
25345
25346 charStr += buffer.toString(this.encoding, 0, end);
25347
25348 var end = charStr.length - 1;
25349 var charCode = charStr.charCodeAt(end);
25350 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25351 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25352 var size = this.surrogateSize;
25353 this.charLength += size;
25354 this.charReceived += size;
25355 this.charBuffer.copy(this.charBuffer, size, 0, size);
25356 buffer.copy(this.charBuffer, 0, 0, size);
25357 return charStr.substring(0, end);
25358 }
25359
25360 // or just emit the charStr
25361 return charStr;
25362 };
25363
25364 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
25365 // the end of the given buffer. If so, it sets this.charLength to the byte
25366 // length that character, and sets this.charReceived to the number of bytes
25367 // that are available for this character.
25368 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25369 // determine how many bytes we have to check at the end of this buffer
25370 var i = (buffer.length >= 3) ? 3 : buffer.length;
25371
25372 // Figure out if one of the last i bytes of our buffer announces an
25373 // incomplete char.
25374 for (; i > 0; i--) {
25375 var c = buffer[buffer.length - i];
25376
25377 // See http://en.wikipedia.org/wiki/UTF-8#Description
25378
25379 // 110XXXXX
25380 if (i == 1 && c >> 5 == 0x06) {
25381 this.charLength = 2;
25382 break;
25383 }
25384
25385 // 1110XXXX
25386 if (i <= 2 && c >> 4 == 0x0E) {
25387 this.charLength = 3;
25388 break;
25389 }
25390
25391 // 11110XXX
25392 if (i <= 3 && c >> 3 == 0x1E) {
25393 this.charLength = 4;
25394 break;
25395 }
25396 }
25397 this.charReceived = i;
25398 };
25399
25400 StringDecoder.prototype.end = function(buffer) {
25401 var res = '';
25402 if (buffer && buffer.length)
25403 res = this.write(buffer);
25404
25405 if (this.charReceived) {
25406 var cr = this.charReceived;
25407 var buf = this.charBuffer;
25408 var enc = this.encoding;
25409 res += buf.slice(0, cr).toString(enc);
25410 }
25411
25412 return res;
25413 };
25414
25415 function passThroughWrite(buffer) {
25416 return buffer.toString(this.encoding);
25417 }
25418
25419 function utf16DetectIncompleteChar(buffer) {
25420 this.charReceived = buffer.length % 2;
25421 this.charLength = this.charReceived ? 2 : 0;
25422 }
25423
25424 function base64DetectIncompleteChar(buffer) {
25425 this.charReceived = buffer.length % 3;
25426 this.charLength = this.charReceived ? 3 : 0;
25427 }
25428
25429 },{"buffer":5}],27:[function(require,module,exports){
25430 (function (global){
25431
25432 /**
25433 * Module exports.
25434 */
25435
25436 module.exports = deprecate;
25437
25438 /**
25439 * Mark that a method should not be used.
25440 * Returns a modified function which warns once by default.
25441 *
25442 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25443 *
25444 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25445 * will throw an Error when invoked.
25446 *
25447 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25448 * will invoke `console.trace()` instead of `console.error()`.
25449 *
25450 * @param {Function} fn - the function to deprecate
25451 * @param {String} msg - the string to print to the console when `fn` is invoked
25452 * @returns {Function} a new "deprecated" version of `fn`
25453 * @api public
25454 */
25455
25456 function deprecate (fn, msg) {
25457 if (config('noDeprecation')) {
25458 return fn;
25459 }
25460
25461 var warned = false;
25462 function deprecated() {
25463 if (!warned) {
25464 if (config('throwDeprecation')) {
25465 throw new Error(msg);
25466 } else if (config('traceDeprecation')) {
25467 console.trace(msg);
25468 } else {
25469 console.warn(msg);
25470 }
25471 warned = true;
25472 }
25473 return fn.apply(this, arguments);
25474 }
25475
25476 return deprecated;
25477 }
25478
25479 /**
25480 * Checks `localStorage` for boolean values for the given `name`.
25481 *
25482 * @param {String} name
25483 * @returns {Boolean}
25484 * @api private
25485 */
25486
25487 function config (name) {
25488 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25489 try {
25490 if (!global.localStorage) return false;
25491 } catch (_) {
25492 return false;
25493 }
25494 var val = global.localStorage[name];
25495 if (null == val) return false;
25496 return String(val).toLowerCase() === 'true';
25497 }
25498
25499 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25500 },{}],28:[function(require,module,exports){
25501 arguments[4][9][0].apply(exports,arguments)
25502 },{"dup":9}],29:[function(require,module,exports){
25503 module.exports = function isBuffer(arg) {
25504 return arg && typeof arg === 'object'
25505 && typeof arg.copy === 'function'
25506 && typeof arg.fill === 'function'
25507 && typeof arg.readUInt8 === 'function';
25508 }
25509 },{}],30:[function(require,module,exports){
25510 (function (process,global){
25511 // Copyright Joyent, Inc. and other Node contributors.
25512 //
25513 // Permission is hereby granted, free of charge, to any person obtaining a
25514 // copy of this software and associated documentation files (the
25515 // "Software"), to deal in the Software without restriction, including
25516 // without limitation the rights to use, copy, modify, merge, publish,
25517 // distribute, sublicense, and/or sell copies of the Software, and to permit
25518 // persons to whom the Software is furnished to do so, subject to the
25519 // following conditions:
25520 //
25521 // The above copyright notice and this permission notice shall be included
25522 // in all copies or substantial portions of the Software.
25523 //
25524 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25525 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25526 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25527 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25528 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25529 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25530 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25531
25532 var formatRegExp = /%[sdj%]/g;
25533 exports.format = function(f) {
25534 if (!isString(f)) {
25535 var objects = [];
25536 for (var i = 0; i < arguments.length; i++) {
25537 objects.push(inspect(arguments[i]));
25538 }
25539 return objects.join(' ');
25540 }
25541
25542 var i = 1;
25543 var args = arguments;
25544 var len = args.length;
25545 var str = String(f).replace(formatRegExp, function(x) {
25546 if (x === '%%') return '%';
25547 if (i >= len) return x;
25548 switch (x) {
25549 case '%s': return String(args[i++]);
25550 case '%d': return Number(args[i++]);
25551 case '%j':
25552 try {
25553 return JSON.stringify(args[i++]);
25554 } catch (_) {
25555 return '[Circular]';
25556 }
25557 default:
25558 return x;
25559 }
25560 });
25561 for (var x = args[i]; i < len; x = args[++i]) {
25562 if (isNull(x) || !isObject(x)) {
25563 str += ' ' + x;
25564 } else {
25565 str += ' ' + inspect(x);
25566 }
25567 }
25568 return str;
25569 };
25570
25571
25572 // Mark that a method should not be used.
25573 // Returns a modified function which warns once by default.
25574 // If --no-deprecation is set, then it is a no-op.
25575 exports.deprecate = function(fn, msg) {
25576 // Allow for deprecating things in the process of starting up.
25577 if (isUndefined(global.process)) {
25578 return function() {
25579 return exports.deprecate(fn, msg).apply(this, arguments);
25580 };
25581 }
25582
25583 if (process.noDeprecation === true) {
25584 return fn;
25585 }
25586
25587 var warned = false;
25588 function deprecated() {
25589 if (!warned) {
25590 if (process.throwDeprecation) {
25591 throw new Error(msg);
25592 } else if (process.traceDeprecation) {
25593 console.trace(msg);
25594 } else {
25595 console.error(msg);
25596 }
25597 warned = true;
25598 }
25599 return fn.apply(this, arguments);
25600 }
25601
25602 return deprecated;
25603 };
25604
25605
25606 var debugs = {};
25607 var debugEnviron;
25608 exports.debuglog = function(set) {
25609 if (isUndefined(debugEnviron))
25610 debugEnviron = process.env.NODE_DEBUG || '';
25611 set = set.toUpperCase();
25612 if (!debugs[set]) {
25613 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25614 var pid = process.pid;
25615 debugs[set] = function() {
25616 var msg = exports.format.apply(exports, arguments);
25617 console.error('%s %d: %s', set, pid, msg);
25618 };
25619 } else {
25620 debugs[set] = function() {};
25621 }
25622 }
25623 return debugs[set];
25624 };
25625
25626
25627 /**
25628 * Echos the value of a value. Trys to print the value out
25629 * in the best way possible given the different types.
25630 *
25631 * @param {Object} obj The object to print out.
25632 * @param {Object} opts Optional options object that alters the output.
25633 */
25634 /* legacy: obj, showHidden, depth, colors*/
25635 function inspect(obj, opts) {
25636 // default options
25637 var ctx = {
25638 seen: [],
25639 stylize: stylizeNoColor
25640 };
25641 // legacy...
25642 if (arguments.length >= 3) ctx.depth = arguments[2];
25643 if (arguments.length >= 4) ctx.colors = arguments[3];
25644 if (isBoolean(opts)) {
25645 // legacy...
25646 ctx.showHidden = opts;
25647 } else if (opts) {
25648 // got an "options" object
25649 exports._extend(ctx, opts);
25650 }
25651 // set default options
25652 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25653 if (isUndefined(ctx.depth)) ctx.depth = 2;
25654 if (isUndefined(ctx.colors)) ctx.colors = false;
25655 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25656 if (ctx.colors) ctx.stylize = stylizeWithColor;
25657 return formatValue(ctx, obj, ctx.depth);
25658 }
25659 exports.inspect = inspect;
25660
25661
25662 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25663 inspect.colors = {
25664 'bold' : [1, 22],
25665 'italic' : [3, 23],
25666 'underline' : [4, 24],
25667 'inverse' : [7, 27],
25668 'white' : [37, 39],
25669 'grey' : [90, 39],
25670 'black' : [30, 39],
25671 'blue' : [34, 39],
25672 'cyan' : [36, 39],
25673 'green' : [32, 39],
25674 'magenta' : [35, 39],
25675 'red' : [31, 39],
25676 'yellow' : [33, 39]
25677 };
25678
25679 // Don't use 'blue' not visible on cmd.exe
25680 inspect.styles = {
25681 'special': 'cyan',
25682 'number': 'yellow',
25683 'boolean': 'yellow',
25684 'undefined': 'grey',
25685 'null': 'bold',
25686 'string': 'green',
25687 'date': 'magenta',
25688 // "name": intentionally not styling
25689 'regexp': 'red'
25690 };
25691
25692
25693 function stylizeWithColor(str, styleType) {
25694 var style = inspect.styles[styleType];
25695
25696 if (style) {
25697 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25698 '\u001b[' + inspect.colors[style][1] + 'm';
25699 } else {
25700 return str;
25701 }
25702 }
25703
25704
25705 function stylizeNoColor(str, styleType) {
25706 return str;
25707 }
25708
25709
25710 function arrayToHash(array) {
25711 var hash = {};
25712
25713 array.forEach(function(val, idx) {
25714 hash[val] = true;
25715 });
25716
25717 return hash;
25718 }
25719
25720
25721 function formatValue(ctx, value, recurseTimes) {
25722 // Provide a hook for user-specified inspect functions.
25723 // Check that value is an object with an inspect function on it
25724 if (ctx.customInspect &&
25725 value &&
25726 isFunction(value.inspect) &&
25727 // Filter out the util module, it's inspect function is special
25728 value.inspect !== exports.inspect &&
25729 // Also filter out any prototype objects using the circular check.
25730 !(value.constructor && value.constructor.prototype === value)) {
25731 var ret = value.inspect(recurseTimes, ctx);
25732 if (!isString(ret)) {
25733 ret = formatValue(ctx, ret, recurseTimes);
25734 }
25735 return ret;
25736 }
25737
25738 // Primitive types cannot have properties
25739 var primitive = formatPrimitive(ctx, value);
25740 if (primitive) {
25741 return primitive;
25742 }
25743
25744 // Look up the keys of the object.
25745 var keys = Object.keys(value);
25746 var visibleKeys = arrayToHash(keys);
25747
25748 if (ctx.showHidden) {
25749 keys = Object.getOwnPropertyNames(value);
25750 }
25751
25752 // IE doesn't make error fields non-enumerable
25753 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25754 if (isError(value)
25755 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25756 return formatError(value);
25757 }
25758
25759 // Some type of object without properties can be shortcutted.
25760 if (keys.length === 0) {
25761 if (isFunction(value)) {
25762 var name = value.name ? ': ' + value.name : '';
25763 return ctx.stylize('[Function' + name + ']', 'special');
25764 }
25765 if (isRegExp(value)) {
25766 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25767 }
25768 if (isDate(value)) {
25769 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25770 }
25771 if (isError(value)) {
25772 return formatError(value);
25773 }
25774 }
25775
25776 var base = '', array = false, braces = ['{', '}'];
25777
25778 // Make Array say that they are Array
25779 if (isArray(value)) {
25780 array = true;
25781 braces = ['[', ']'];
25782 }
25783
25784 // Make functions say that they are functions
25785 if (isFunction(value)) {
25786 var n = value.name ? ': ' + value.name : '';
25787 base = ' [Function' + n + ']';
25788 }
25789
25790 // Make RegExps say that they are RegExps
25791 if (isRegExp(value)) {
25792 base = ' ' + RegExp.prototype.toString.call(value);
25793 }
25794
25795 // Make dates with properties first say the date
25796 if (isDate(value)) {
25797 base = ' ' + Date.prototype.toUTCString.call(value);
25798 }
25799
25800 // Make error with message first say the error
25801 if (isError(value)) {
25802 base = ' ' + formatError(value);
25803 }
25804
25805 if (keys.length === 0 && (!array || value.length == 0)) {
25806 return braces[0] + base + braces[1];
25807 }
25808
25809 if (recurseTimes < 0) {
25810 if (isRegExp(value)) {
25811 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25812 } else {
25813 return ctx.stylize('[Object]', 'special');
25814 }
25815 }
25816
25817 ctx.seen.push(value);
25818
25819 var output;
25820 if (array) {
25821 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25822 } else {
25823 output = keys.map(function(key) {
25824 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25825 });
25826 }
25827
25828 ctx.seen.pop();
25829
25830 return reduceToSingleString(output, base, braces);
25831 }
25832
25833
25834 function formatPrimitive(ctx, value) {
25835 if (isUndefined(value))
25836 return ctx.stylize('undefined', 'undefined');
25837 if (isString(value)) {
25838 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25839 .replace(/'/g, "\\'")
25840 .replace(/\\"/g, '"') + '\'';
25841 return ctx.stylize(simple, 'string');
25842 }
25843 if (isNumber(value))
25844 return ctx.stylize('' + value, 'number');
25845 if (isBoolean(value))
25846 return ctx.stylize('' + value, 'boolean');
25847 // For some reason typeof null is "object", so special case here.
25848 if (isNull(value))
25849 return ctx.stylize('null', 'null');
25850 }
25851
25852
25853 function formatError(value) {
25854 return '[' + Error.prototype.toString.call(value) + ']';
25855 }
25856
25857
25858 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25859 var output = [];
25860 for (var i = 0, l = value.length; i < l; ++i) {
25861 if (hasOwnProperty(value, String(i))) {
25862 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25863 String(i), true));
25864 } else {
25865 output.push('');
25866 }
25867 }
25868 keys.forEach(function(key) {
25869 if (!key.match(/^\d+$/)) {
25870 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25871 key, true));
25872 }
25873 });
25874 return output;
25875 }
25876
25877
25878 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25879 var name, str, desc;
25880 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25881 if (desc.get) {
25882 if (desc.set) {
25883 str = ctx.stylize('[Getter/Setter]', 'special');
25884 } else {
25885 str = ctx.stylize('[Getter]', 'special');
25886 }
25887 } else {
25888 if (desc.set) {
25889 str = ctx.stylize('[Setter]', 'special');
25890 }
25891 }
25892 if (!hasOwnProperty(visibleKeys, key)) {
25893 name = '[' + key + ']';
25894 }
25895 if (!str) {
25896 if (ctx.seen.indexOf(desc.value) < 0) {
25897 if (isNull(recurseTimes)) {
25898 str = formatValue(ctx, desc.value, null);
25899 } else {
25900 str = formatValue(ctx, desc.value, recurseTimes - 1);
25901 }
25902 if (str.indexOf('\n') > -1) {
25903 if (array) {
25904 str = str.split('\n').map(function(line) {
25905 return ' ' + line;
25906 }).join('\n').substr(2);
25907 } else {
25908 str = '\n' + str.split('\n').map(function(line) {
25909 return ' ' + line;
25910 }).join('\n');
25911 }
25912 }
25913 } else {
25914 str = ctx.stylize('[Circular]', 'special');
25915 }
25916 }
25917 if (isUndefined(name)) {
25918 if (array && key.match(/^\d+$/)) {
25919 return str;
25920 }
25921 name = JSON.stringify('' + key);
25922 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25923 name = name.substr(1, name.length - 2);
25924 name = ctx.stylize(name, 'name');
25925 } else {
25926 name = name.replace(/'/g, "\\'")
25927 .replace(/\\"/g, '"')
25928 .replace(/(^"|"$)/g, "'");
25929 name = ctx.stylize(name, 'string');
25930 }
25931 }
25932
25933 return name + ': ' + str;
25934 }
25935
25936
25937 function reduceToSingleString(output, base, braces) {
25938 var numLinesEst = 0;
25939 var length = output.reduce(function(prev, cur) {
25940 numLinesEst++;
25941 if (cur.indexOf('\n') >= 0) numLinesEst++;
25942 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25943 }, 0);
25944
25945 if (length > 60) {
25946 return braces[0] +
25947 (base === '' ? '' : base + '\n ') +
25948 ' ' +
25949 output.join(',\n ') +
25950 ' ' +
25951 braces[1];
25952 }
25953
25954 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25955 }
25956
25957
25958 // NOTE: These type checking functions intentionally don't use `instanceof`
25959 // because it is fragile and can be easily faked with `Object.create()`.
25960 function isArray(ar) {
25961 return Array.isArray(ar);
25962 }
25963 exports.isArray = isArray;
25964
25965 function isBoolean(arg) {
25966 return typeof arg === 'boolean';
25967 }
25968 exports.isBoolean = isBoolean;
25969
25970 function isNull(arg) {
25971 return arg === null;
25972 }
25973 exports.isNull = isNull;
25974
25975 function isNullOrUndefined(arg) {
25976 return arg == null;
25977 }
25978 exports.isNullOrUndefined = isNullOrUndefined;
25979
25980 function isNumber(arg) {
25981 return typeof arg === 'number';
25982 }
25983 exports.isNumber = isNumber;
25984
25985 function isString(arg) {
25986 return typeof arg === 'string';
25987 }
25988 exports.isString = isString;
25989
25990 function isSymbol(arg) {
25991 return typeof arg === 'symbol';
25992 }
25993 exports.isSymbol = isSymbol;
25994
25995 function isUndefined(arg) {
25996 return arg === void 0;
25997 }
25998 exports.isUndefined = isUndefined;
25999
26000 function isRegExp(re) {
26001 return isObject(re) && objectToString(re) === '[object RegExp]';
26002 }
26003 exports.isRegExp = isRegExp;
26004
26005 function isObject(arg) {
26006 return typeof arg === 'object' && arg !== null;
26007 }
26008 exports.isObject = isObject;
26009
26010 function isDate(d) {
26011 return isObject(d) && objectToString(d) === '[object Date]';
26012 }
26013 exports.isDate = isDate;
26014
26015 function isError(e) {
26016 return isObject(e) &&
26017 (objectToString(e) === '[object Error]' || e instanceof Error);
26018 }
26019 exports.isError = isError;
26020
26021 function isFunction(arg) {
26022 return typeof arg === 'function';
26023 }
26024 exports.isFunction = isFunction;
26025
26026 function isPrimitive(arg) {
26027 return arg === null ||
26028 typeof arg === 'boolean' ||
26029 typeof arg === 'number' ||
26030 typeof arg === 'string' ||
26031 typeof arg === 'symbol' || // ES6 symbol
26032 typeof arg === 'undefined';
26033 }
26034 exports.isPrimitive = isPrimitive;
26035
26036 exports.isBuffer = require('./support/isBuffer');
26037
26038 function objectToString(o) {
26039 return Object.prototype.toString.call(o);
26040 }
26041
26042
26043 function pad(n) {
26044 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26045 }
26046
26047
26048 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26049 'Oct', 'Nov', 'Dec'];
26050
26051 // 26 Feb 16:19:34
26052 function timestamp() {
26053 var d = new Date();
26054 var time = [pad(d.getHours()),
26055 pad(d.getMinutes()),
26056 pad(d.getSeconds())].join(':');
26057 return [d.getDate(), months[d.getMonth()], time].join(' ');
26058 }
26059
26060
26061 // log is just a thin wrapper to console.log that prepends a timestamp
26062 exports.log = function() {
26063 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
26064 };
26065
26066
26067 /**
26068 * Inherit the prototype methods from one constructor into another.
26069 *
26070 * The Function.prototype.inherits from lang.js rewritten as a standalone
26071 * function (not on Function.prototype). NOTE: If this file is to be loaded
26072 * during bootstrapping this function needs to be rewritten using some native
26073 * functions as prototype setup using normal JavaScript does not work as
26074 * expected during bootstrapping (see mirror.js in r114903).
26075 *
26076 * @param {function} ctor Constructor function which needs to inherit the
26077 * prototype.
26078 * @param {function} superCtor Constructor function to inherit prototype from.
26079 */
26080 exports.inherits = require('inherits');
26081
26082 exports._extend = function(origin, add) {
26083 // Don't do anything if add isn't an object
26084 if (!add || !isObject(add)) return origin;
26085
26086 var keys = Object.keys(add);
26087 var i = keys.length;
26088 while (i--) {
26089 origin[keys[i]] = add[keys[i]];
26090 }
26091 return origin;
26092 };
26093
26094 function hasOwnProperty(obj, prop) {
26095 return Object.prototype.hasOwnProperty.call(obj, prop);
26096 }
26097
26098 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26099 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26100 (function (Buffer){
26101 const createKeccakHash = require('keccak')
26102 const secp256k1 = require('secp256k1')
26103 const assert = require('assert')
26104 const rlp = require('rlp')
26105 const BN = require('bn.js')
26106 const createHash = require('create-hash')
26107 Object.assign(exports, require('ethjs-util'))
26108
26109 /**
26110 * the max integer that this VM can handle (a ```BN```)
26111 * @var {BN} MAX_INTEGER
26112 */
26113 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
26114
26115 /**
26116 * 2^256 (a ```BN```)
26117 * @var {BN} TWO_POW256
26118 */
26119 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
26120
26121 /**
26122 * SHA3-256 hash of null (a ```String```)
26123 * @var {String} SHA3_NULL_S
26124 */
26125 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
26126
26127 /**
26128 * SHA3-256 hash of null (a ```Buffer```)
26129 * @var {Buffer} SHA3_NULL
26130 */
26131 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
26132
26133 /**
26134 * SHA3-256 of an RLP of an empty array (a ```String```)
26135 * @var {String} SHA3_RLP_ARRAY_S
26136 */
26137 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
26138
26139 /**
26140 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26141 * @var {Buffer} SHA3_RLP_ARRAY
26142 */
26143 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
26144
26145 /**
26146 * SHA3-256 hash of the RLP of null (a ```String```)
26147 * @var {String} SHA3_RLP_S
26148 */
26149 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
26150
26151 /**
26152 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26153 * @var {Buffer} SHA3_RLP
26154 */
26155 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
26156
26157 /**
26158 * [`BN`](https://github.com/indutny/bn.js)
26159 * @var {Function}
26160 */
26161 exports.BN = BN
26162
26163 /**
26164 * [`rlp`](https://github.com/ethereumjs/rlp)
26165 * @var {Function}
26166 */
26167 exports.rlp = rlp
26168
26169 /**
26170 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26171 * @var {Object}
26172 */
26173 exports.secp256k1 = secp256k1
26174
26175 /**
26176 * Returns a buffer filled with 0s
26177 * @method zeros
26178 * @param {Number} bytes the number of bytes the buffer should be
26179 * @return {Buffer}
26180 */
26181 exports.zeros = function (bytes) {
26182 return Buffer.allocUnsafe(bytes).fill(0)
26183 }
26184
26185 /**
26186 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26187 * Or it truncates the beginning if it exceeds.
26188 * @method lsetLength
26189 * @param {Buffer|Array} msg the value to pad
26190 * @param {Number} length the number of bytes the output should be
26191 * @param {Boolean} [right=false] whether to start padding form the left or right
26192 * @return {Buffer|Array}
26193 */
26194 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26195 var buf = exports.zeros(length)
26196 msg = exports.toBuffer(msg)
26197 if (right) {
26198 if (msg.length < length) {
26199 msg.copy(buf)
26200 return buf
26201 }
26202 return msg.slice(0, length)
26203 } else {
26204 if (msg.length < length) {
26205 msg.copy(buf, length - msg.length)
26206 return buf
26207 }
26208 return msg.slice(-length)
26209 }
26210 }
26211
26212 /**
26213 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26214 * Or it truncates the beginning if it exceeds.
26215 * @param {Buffer|Array} msg the value to pad
26216 * @param {Number} length the number of bytes the output should be
26217 * @return {Buffer|Array}
26218 */
26219 exports.setLengthRight = function (msg, length) {
26220 return exports.setLength(msg, length, true)
26221 }
26222
26223 /**
26224 * Trims leading zeros from a `Buffer` or an `Array`
26225 * @param {Buffer|Array|String} a
26226 * @return {Buffer|Array|String}
26227 */
26228 exports.unpad = exports.stripZeros = function (a) {
26229 a = exports.stripHexPrefix(a)
26230 var first = a[0]
26231 while (a.length > 0 && first.toString() === '0') {
26232 a = a.slice(1)
26233 first = a[0]
26234 }
26235 return a
26236 }
26237 /**
26238 * 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.
26239 * @param {*} v the value
26240 */
26241 exports.toBuffer = function (v) {
26242 if (!Buffer.isBuffer(v)) {
26243 if (Array.isArray(v)) {
26244 v = Buffer.from(v)
26245 } else if (typeof v === 'string') {
26246 if (exports.isHexPrefixed(v)) {
26247 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26248 } else {
26249 v = Buffer.from(v)
26250 }
26251 } else if (typeof v === 'number') {
26252 v = exports.intToBuffer(v)
26253 } else if (v === null || v === undefined) {
26254 v = Buffer.allocUnsafe(0)
26255 } else if (v.toArray) {
26256 // converts a BN to a Buffer
26257 v = Buffer.from(v.toArray())
26258 } else {
26259 throw new Error('invalid type')
26260 }
26261 }
26262 return v
26263 }
26264
26265 /**
26266 * Converts a `Buffer` to a `Number`
26267 * @param {Buffer} buf
26268 * @return {Number}
26269 * @throws If the input number exceeds 53 bits.
26270 */
26271 exports.bufferToInt = function (buf) {
26272 return new BN(exports.toBuffer(buf)).toNumber()
26273 }
26274
26275 /**
26276 * Converts a `Buffer` into a hex `String`
26277 * @param {Buffer} buf
26278 * @return {String}
26279 */
26280 exports.bufferToHex = function (buf) {
26281 buf = exports.toBuffer(buf)
26282 return '0x' + buf.toString('hex')
26283 }
26284
26285 /**
26286 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26287 * @param {Buffer} num
26288 * @return {BN}
26289 */
26290 exports.fromSigned = function (num) {
26291 return new BN(num).fromTwos(256)
26292 }
26293
26294 /**
26295 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26296 * @param {BN} num
26297 * @return {Buffer}
26298 */
26299 exports.toUnsigned = function (num) {
26300 return Buffer.from(num.toTwos(256).toArray())
26301 }
26302
26303 /**
26304 * Creates SHA-3 hash of the input
26305 * @param {Buffer|Array|String|Number} a the input data
26306 * @param {Number} [bits=256] the SHA width
26307 * @return {Buffer}
26308 */
26309 exports.sha3 = function (a, bits) {
26310 a = exports.toBuffer(a)
26311 if (!bits) bits = 256
26312
26313 return createKeccakHash('keccak' + bits).update(a).digest()
26314 }
26315
26316 /**
26317 * Creates SHA256 hash of the input
26318 * @param {Buffer|Array|String|Number} a the input data
26319 * @return {Buffer}
26320 */
26321 exports.sha256 = function (a) {
26322 a = exports.toBuffer(a)
26323 return createHash('sha256').update(a).digest()
26324 }
26325
26326 /**
26327 * Creates RIPEMD160 hash of the input
26328 * @param {Buffer|Array|String|Number} a the input data
26329 * @param {Boolean} padded whether it should be padded to 256 bits or not
26330 * @return {Buffer}
26331 */
26332 exports.ripemd160 = function (a, padded) {
26333 a = exports.toBuffer(a)
26334 var hash = createHash('rmd160').update(a).digest()
26335 if (padded === true) {
26336 return exports.setLength(hash, 32)
26337 } else {
26338 return hash
26339 }
26340 }
26341
26342 /**
26343 * Creates SHA-3 hash of the RLP encoded version of the input
26344 * @param {Buffer|Array|String|Number} a the input data
26345 * @return {Buffer}
26346 */
26347 exports.rlphash = function (a) {
26348 return exports.sha3(rlp.encode(a))
26349 }
26350
26351 /**
26352 * Checks if the private key satisfies the rules of the curve secp256k1.
26353 * @param {Buffer} privateKey
26354 * @return {Boolean}
26355 */
26356 exports.isValidPrivate = function (privateKey) {
26357 return secp256k1.privateKeyVerify(privateKey)
26358 }
26359
26360 /**
26361 * Checks if the public key satisfies the rules of the curve secp256k1
26362 * and the requirements of Ethereum.
26363 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26364 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26365 * @return {Boolean}
26366 */
26367 exports.isValidPublic = function (publicKey, sanitize) {
26368 if (publicKey.length === 64) {
26369 // Convert to SEC1 for secp256k1
26370 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26371 }
26372
26373 if (!sanitize) {
26374 return false
26375 }
26376
26377 return secp256k1.publicKeyVerify(publicKey)
26378 }
26379
26380 /**
26381 * Returns the ethereum address of a given public key.
26382 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26383 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26384 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26385 * @return {Buffer}
26386 */
26387 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26388 pubKey = exports.toBuffer(pubKey)
26389 if (sanitize && (pubKey.length !== 64)) {
26390 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
26391 }
26392 assert(pubKey.length === 64)
26393 // Only take the lower 160bits of the hash
26394 return exports.sha3(pubKey).slice(-20)
26395 }
26396
26397 /**
26398 * Returns the ethereum public key of a given private key
26399 * @param {Buffer} privateKey A private key must be 256 bits wide
26400 * @return {Buffer}
26401 */
26402 var privateToPublic = exports.privateToPublic = function (privateKey) {
26403 privateKey = exports.toBuffer(privateKey)
26404 // skip the type flag and use the X, Y points
26405 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26406 }
26407
26408 /**
26409 * Converts a public key to the Ethereum format.
26410 * @param {Buffer} publicKey
26411 * @return {Buffer}
26412 */
26413 exports.importPublic = function (publicKey) {
26414 publicKey = exports.toBuffer(publicKey)
26415 if (publicKey.length !== 64) {
26416 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
26417 }
26418 return publicKey
26419 }
26420
26421 /**
26422 * ECDSA sign
26423 * @param {Buffer} msgHash
26424 * @param {Buffer} privateKey
26425 * @return {Object}
26426 */
26427 exports.ecsign = function (msgHash, privateKey) {
26428 var sig = secp256k1.sign(msgHash, privateKey)
26429
26430 var ret = {}
26431 ret.r = sig.signature.slice(0, 32)
26432 ret.s = sig.signature.slice(32, 64)
26433 ret.v = sig.recovery + 27
26434 return ret
26435 }
26436
26437 /**
26438 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26439 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26440 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26441 * used to produce the signature.
26442 * @param message
26443 * @returns {Buffer} hash
26444 */
26445 exports.hashPersonalMessage = function (message) {
26446 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26447 return exports.sha3(Buffer.concat([prefix, message]))
26448 }
26449
26450 /**
26451 * ECDSA public key recovery from signature
26452 * @param {Buffer} msgHash
26453 * @param {Number} v
26454 * @param {Buffer} r
26455 * @param {Buffer} s
26456 * @return {Buffer} publicKey
26457 */
26458 exports.ecrecover = function (msgHash, v, r, s) {
26459 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26460 var recovery = v - 27
26461 if (recovery !== 0 && recovery !== 1) {
26462 throw new Error('Invalid signature v value')
26463 }
26464 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26465 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
26466 }
26467
26468 /**
26469 * Convert signature parameters into the format of `eth_sign` RPC method
26470 * @param {Number} v
26471 * @param {Buffer} r
26472 * @param {Buffer} s
26473 * @return {String} sig
26474 */
26475 exports.toRpcSig = function (v, r, s) {
26476 // NOTE: with potential introduction of chainId this might need to be updated
26477 if (v !== 27 && v !== 28) {
26478 throw new Error('Invalid recovery id')
26479 }
26480
26481 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26482 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26483 return exports.bufferToHex(Buffer.concat([
26484 exports.setLengthLeft(r, 32),
26485 exports.setLengthLeft(s, 32),
26486 exports.toBuffer(v - 27)
26487 ]))
26488 }
26489
26490 /**
26491 * Convert signature format of the `eth_sign` RPC method to signature parameters
26492 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26493 * @param {String} sig
26494 * @return {Object}
26495 */
26496 exports.fromRpcSig = function (sig) {
26497 sig = exports.toBuffer(sig)
26498
26499 // NOTE: with potential introduction of chainId this might need to be updated
26500 if (sig.length !== 65) {
26501 throw new Error('Invalid signature length')
26502 }
26503
26504 var v = sig[64]
26505 // support both versions of `eth_sign` responses
26506 if (v < 27) {
26507 v += 27
26508 }
26509
26510 return {
26511 v: v,
26512 r: sig.slice(0, 32),
26513 s: sig.slice(32, 64)
26514 }
26515 }
26516
26517 /**
26518 * Returns the ethereum address of a given private key
26519 * @param {Buffer} privateKey A private key must be 256 bits wide
26520 * @return {Buffer}
26521 */
26522 exports.privateToAddress = function (privateKey) {
26523 return exports.publicToAddress(privateToPublic(privateKey))
26524 }
26525
26526 /**
26527 * Checks if the address is a valid. Accepts checksummed addresses too
26528 * @param {String} address
26529 * @return {Boolean}
26530 */
26531 exports.isValidAddress = function (address) {
26532 return /^0x[0-9a-fA-F]{40}$/i.test(address)
26533 }
26534
26535 /**
26536 * Returns a checksummed address
26537 * @param {String} address
26538 * @return {String}
26539 */
26540 exports.toChecksumAddress = function (address) {
26541 address = exports.stripHexPrefix(address).toLowerCase()
26542 var hash = exports.sha3(address).toString('hex')
26543 var ret = '0x'
26544
26545 for (var i = 0; i < address.length; i++) {
26546 if (parseInt(hash[i], 16) >= 8) {
26547 ret += address[i].toUpperCase()
26548 } else {
26549 ret += address[i]
26550 }
26551 }
26552
26553 return ret
26554 }
26555
26556 /**
26557 * Checks if the address is a valid checksummed address
26558 * @param {Buffer} address
26559 * @return {Boolean}
26560 */
26561 exports.isValidChecksumAddress = function (address) {
26562 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
26563 }
26564
26565 /**
26566 * Generates an address of a newly created contract
26567 * @param {Buffer} from the address which is creating this new address
26568 * @param {Buffer} nonce the nonce of the from account
26569 * @return {Buffer}
26570 */
26571 exports.generateAddress = function (from, nonce) {
26572 from = exports.toBuffer(from)
26573 nonce = new BN(nonce)
26574
26575 if (nonce.isZero()) {
26576 // in RLP we want to encode null in the case of zero nonce
26577 // read the RLP documentation for an answer if you dare
26578 nonce = null
26579 } else {
26580 nonce = Buffer.from(nonce.toArray())
26581 }
26582
26583 // Only take the lower 160bits of the hash
26584 return exports.rlphash([from, nonce]).slice(-20)
26585 }
26586
26587 /**
26588 * Returns true if the supplied address belongs to a precompiled account
26589 * @param {Buffer|String} address
26590 * @return {Boolean}
26591 */
26592 exports.isPrecompiled = function (address) {
26593 var a = exports.unpad(address)
26594 return a.length === 1 && a[0] > 0 && a[0] < 5
26595 }
26596
26597 /**
26598 * Adds "0x" to a given `String` if it does not already start with "0x"
26599 * @param {String} str
26600 * @return {String}
26601 */
26602 exports.addHexPrefix = function (str) {
26603 if (typeof str !== 'string') {
26604 return str
26605 }
26606
26607 return exports.isHexPrefixed(str) ? str : '0x' + str
26608 }
26609
26610 /**
26611 * Validate ECDSA signature
26612 * @method isValidSignature
26613 * @param {Buffer} v
26614 * @param {Buffer} r
26615 * @param {Buffer} s
26616 * @param {Boolean} [homestead=true]
26617 * @return {Boolean}
26618 */
26619
26620 exports.isValidSignature = function (v, r, s, homestead) {
26621 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26622 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26623
26624 if (r.length !== 32 || s.length !== 32) {
26625 return false
26626 }
26627
26628 if (v !== 27 && v !== 28) {
26629 return false
26630 }
26631
26632 r = new BN(r)
26633 s = new BN(s)
26634
26635 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26636 return false
26637 }
26638
26639 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26640 return false
26641 }
26642
26643 return true
26644 }
26645
26646 /**
26647 * Converts a `Buffer` or `Array` to JSON
26648 * @param {Buffer|Array} ba
26649 * @return {Array|String|null}
26650 */
26651 exports.baToJSON = function (ba) {
26652 if (Buffer.isBuffer(ba)) {
26653 return '0x' + ba.toString('hex')
26654 } else if (ba instanceof Array) {
26655 var array = []
26656 for (var i = 0; i < ba.length; i++) {
26657 array.push(exports.baToJSON(ba[i]))
26658 }
26659 return array
26660 }
26661 }
26662
26663 /**
26664 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26665 * @param {Object} self the `Object` to define properties on
26666 * @param {Array} fields an array fields to define. Fields can contain:
26667 * * `name` - the name of the properties
26668 * * `length` - the number of bytes the field can have
26669 * * `allowLess` - if the field can be less than the length
26670 * * `allowEmpty`
26671 * @param {*} data data to be validated against the definitions
26672 */
26673 exports.defineProperties = function (self, fields, data) {
26674 self.raw = []
26675 self._fields = []
26676
26677 // attach the `toJSON`
26678 self.toJSON = function (label) {
26679 if (label) {
26680 var obj = {}
26681 self._fields.forEach(function (field) {
26682 obj[field] = '0x' + self[field].toString('hex')
26683 })
26684 return obj
26685 }
26686 return exports.baToJSON(this.raw)
26687 }
26688
26689 self.serialize = function serialize () {
26690 return rlp.encode(self.raw)
26691 }
26692
26693 fields.forEach(function (field, i) {
26694 self._fields.push(field.name)
26695 function getter () {
26696 return self.raw[i]
26697 }
26698 function setter (v) {
26699 v = exports.toBuffer(v)
26700
26701 if (v.toString('hex') === '00' && !field.allowZero) {
26702 v = Buffer.allocUnsafe(0)
26703 }
26704
26705 if (field.allowLess && field.length) {
26706 v = exports.stripZeros(v)
26707 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26708 } else if (!(field.allowZero && v.length === 0) && field.length) {
26709 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26710 }
26711
26712 self.raw[i] = v
26713 }
26714
26715 Object.defineProperty(self, field.name, {
26716 enumerable: true,
26717 configurable: true,
26718 get: getter,
26719 set: setter
26720 })
26721
26722 if (field.default) {
26723 self[field.name] = field.default
26724 }
26725
26726 // attach alias
26727 if (field.alias) {
26728 Object.defineProperty(self, field.alias, {
26729 enumerable: false,
26730 configurable: true,
26731 set: setter,
26732 get: getter
26733 })
26734 }
26735 })
26736
26737 // if the constuctor is passed data
26738 if (data) {
26739 if (typeof data === 'string') {
26740 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26741 }
26742
26743 if (Buffer.isBuffer(data)) {
26744 data = rlp.decode(data)
26745 }
26746
26747 if (Array.isArray(data)) {
26748 if (data.length > self._fields.length) {
26749 throw (new Error('wrong number of fields in data'))
26750 }
26751
26752 // make sure all the items are buffers
26753 data.forEach(function (d, i) {
26754 self[self._fields[i]] = exports.toBuffer(d)
26755 })
26756 } else if (typeof data === 'object') {
26757 const keys = Object.keys(data)
26758 fields.forEach(function (field) {
26759 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26760 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26761 })
26762 } else {
26763 throw new Error('invalid data')
26764 }
26765 }
26766 }
26767
26768 }).call(this,require("buffer").Buffer)
26769 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26770 (function (Buffer){
26771 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26772 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26773 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
26774
26775 function check (buffer) {
26776 if (buffer.length < 8) return false
26777 if (buffer.length > 72) return false
26778 if (buffer[0] !== 0x30) return false
26779 if (buffer[1] !== buffer.length - 2) return false
26780 if (buffer[2] !== 0x02) return false
26781
26782 var lenR = buffer[3]
26783 if (lenR === 0) return false
26784 if (5 + lenR >= buffer.length) return false
26785 if (buffer[4 + lenR] !== 0x02) return false
26786
26787 var lenS = buffer[5 + lenR]
26788 if (lenS === 0) return false
26789 if ((6 + lenR + lenS) !== buffer.length) return false
26790
26791 if (buffer[4] & 0x80) return false
26792 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26793
26794 if (buffer[lenR + 6] & 0x80) return false
26795 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26796 return true
26797 }
26798
26799 function decode (buffer) {
26800 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26801 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26802 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26803 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26804 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26805
26806 var lenR = buffer[3]
26807 if (lenR === 0) throw new Error('R length is zero')
26808 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26809 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26810
26811 var lenS = buffer[5 + lenR]
26812 if (lenS === 0) throw new Error('S length is zero')
26813 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26814
26815 if (buffer[4] & 0x80) throw new Error('R value is negative')
26816 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26817
26818 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26819 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26820
26821 // non-BIP66 - extract R, S values
26822 return {
26823 r: buffer.slice(4, 4 + lenR),
26824 s: buffer.slice(6 + lenR)
26825 }
26826 }
26827
26828 /*
26829 * Expects r and s to be positive DER integers.
26830 *
26831 * The DER format uses the most significant bit as a sign bit (& 0x80).
26832 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26833 *
26834 * Examples:
26835 *
26836 * 0 => 0x00
26837 * 1 => 0x01
26838 * -1 => 0xff
26839 * 127 => 0x7f
26840 * -127 => 0x81
26841 * 128 => 0x0080
26842 * -128 => 0x80
26843 * 255 => 0x00ff
26844 * -255 => 0xff01
26845 * 16300 => 0x3fac
26846 * -16300 => 0xc054
26847 * 62300 => 0x00f35c
26848 * -62300 => 0xff0ca4
26849 */
26850 function encode (r, s) {
26851 var lenR = r.length
26852 var lenS = s.length
26853 if (lenR === 0) throw new Error('R length is zero')
26854 if (lenS === 0) throw new Error('S length is zero')
26855 if (lenR > 33) throw new Error('R length is too long')
26856 if (lenS > 33) throw new Error('S length is too long')
26857 if (r[0] & 0x80) throw new Error('R value is negative')
26858 if (s[0] & 0x80) throw new Error('S value is negative')
26859 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26860 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26861
26862 var signature = new Buffer(6 + lenR + lenS)
26863
26864 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26865 signature[0] = 0x30
26866 signature[1] = signature.length - 2
26867 signature[2] = 0x02
26868 signature[3] = r.length
26869 r.copy(signature, 4)
26870 signature[4 + lenR] = 0x02
26871 signature[5 + lenR] = s.length
26872 s.copy(signature, 6 + lenR)
26873
26874 return signature
26875 }
26876
26877 module.exports = {
26878 check: check,
26879 decode: decode,
26880 encode: encode
26881 }
26882
26883 }).call(this,require("buffer").Buffer)
26884 },{"buffer":5}],33:[function(require,module,exports){
26885 (function (module, exports) {
26886 'use strict';
26887
26888 // Utils
26889 function assert (val, msg) {
26890 if (!val) throw new Error(msg || 'Assertion failed');
26891 }
26892
26893 // Could use `inherits` module, but don't want to move from single file
26894 // architecture yet.
26895 function inherits (ctor, superCtor) {
26896 ctor.super_ = superCtor;
26897 var TempCtor = function () {};
26898 TempCtor.prototype = superCtor.prototype;
26899 ctor.prototype = new TempCtor();
26900 ctor.prototype.constructor = ctor;
26901 }
26902
26903 // BN
26904
26905 function BN (number, base, endian) {
26906 if (BN.isBN(number)) {
26907 return number;
26908 }
26909
26910 this.negative = 0;
26911 this.words = null;
26912 this.length = 0;
26913
26914 // Reduction context
26915 this.red = null;
26916
26917 if (number !== null) {
26918 if (base === 'le' || base === 'be') {
26919 endian = base;
26920 base = 10;
26921 }
26922
26923 this._init(number || 0, base || 10, endian || 'be');
26924 }
26925 }
26926 if (typeof module === 'object') {
26927 module.exports = BN;
26928 } else {
26929 exports.BN = BN;
26930 }
26931
26932 BN.BN = BN;
26933 BN.wordSize = 26;
26934
26935 var Buffer;
26936 try {
26937 Buffer = require('buf' + 'fer').Buffer;
26938 } catch (e) {
26939 }
26940
26941 BN.isBN = function isBN (num) {
26942 if (num instanceof BN) {
26943 return true;
26944 }
26945
26946 return num !== null && typeof num === 'object' &&
26947 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26948 };
26949
26950 BN.max = function max (left, right) {
26951 if (left.cmp(right) > 0) return left;
26952 return right;
26953 };
26954
26955 BN.min = function min (left, right) {
26956 if (left.cmp(right) < 0) return left;
26957 return right;
26958 };
26959
26960 BN.prototype._init = function init (number, base, endian) {
26961 if (typeof number === 'number') {
26962 return this._initNumber(number, base, endian);
26963 }
26964
26965 if (typeof number === 'object') {
26966 return this._initArray(number, base, endian);
26967 }
26968
26969 if (base === 'hex') {
26970 base = 16;
26971 }
26972 assert(base === (base | 0) && base >= 2 && base <= 36);
26973
26974 number = number.toString().replace(/\s+/g, '');
26975 var start = 0;
26976 if (number[0] === '-') {
26977 start++;
26978 }
26979
26980 if (base === 16) {
26981 this._parseHex(number, start);
26982 } else {
26983 this._parseBase(number, base, start);
26984 }
26985
26986 if (number[0] === '-') {
26987 this.negative = 1;
26988 }
26989
26990 this.strip();
26991
26992 if (endian !== 'le') return;
26993
26994 this._initArray(this.toArray(), base, endian);
26995 };
26996
26997 BN.prototype._initNumber = function _initNumber (number, base, endian) {
26998 if (number < 0) {
26999 this.negative = 1;
27000 number = -number;
27001 }
27002 if (number < 0x4000000) {
27003 this.words = [ number & 0x3ffffff ];
27004 this.length = 1;
27005 } else if (number < 0x10000000000000) {
27006 this.words = [
27007 number & 0x3ffffff,
27008 (number / 0x4000000) & 0x3ffffff
27009 ];
27010 this.length = 2;
27011 } else {
27012 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
27013 this.words = [
27014 number & 0x3ffffff,
27015 (number / 0x4000000) & 0x3ffffff,
27016 1
27017 ];
27018 this.length = 3;
27019 }
27020
27021 if (endian !== 'le') return;
27022
27023 // Reverse the bytes
27024 this._initArray(this.toArray(), base, endian);
27025 };
27026
27027 BN.prototype._initArray = function _initArray (number, base, endian) {
27028 // Perhaps a Uint8Array
27029 assert(typeof number.length === 'number');
27030 if (number.length <= 0) {
27031 this.words = [ 0 ];
27032 this.length = 1;
27033 return this;
27034 }
27035
27036 this.length = Math.ceil(number.length / 3);
27037 this.words = new Array(this.length);
27038 for (var i = 0; i < this.length; i++) {
27039 this.words[i] = 0;
27040 }
27041
27042 var j, w;
27043 var off = 0;
27044 if (endian === 'be') {
27045 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27046 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27047 this.words[j] |= (w << off) & 0x3ffffff;
27048 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27049 off += 24;
27050 if (off >= 26) {
27051 off -= 26;
27052 j++;
27053 }
27054 }
27055 } else if (endian === 'le') {
27056 for (i = 0, j = 0; i < number.length; i += 3) {
27057 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27058 this.words[j] |= (w << off) & 0x3ffffff;
27059 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27060 off += 24;
27061 if (off >= 26) {
27062 off -= 26;
27063 j++;
27064 }
27065 }
27066 }
27067 return this.strip();
27068 };
27069
27070 function parseHex (str, start, end) {
27071 var r = 0;
27072 var len = Math.min(str.length, end);
27073 for (var i = start; i < len; i++) {
27074 var c = str.charCodeAt(i) - 48;
27075
27076 r <<= 4;
27077
27078 // 'a' - 'f'
27079 if (c >= 49 && c <= 54) {
27080 r |= c - 49 + 0xa;
27081
27082 // 'A' - 'F'
27083 } else if (c >= 17 && c <= 22) {
27084 r |= c - 17 + 0xa;
27085
27086 // '0' - '9'
27087 } else {
27088 r |= c & 0xf;
27089 }
27090 }
27091 return r;
27092 }
27093
27094 BN.prototype._parseHex = function _parseHex (number, start) {
27095 // Create possibly bigger array to ensure that it fits the number
27096 this.length = Math.ceil((number.length - start) / 6);
27097 this.words = new Array(this.length);
27098 for (var i = 0; i < this.length; i++) {
27099 this.words[i] = 0;
27100 }
27101
27102 var j, w;
27103 // Scan 24-bit chunks and add them to the number
27104 var off = 0;
27105 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27106 w = parseHex(number, i, i + 6);
27107 this.words[j] |= (w << off) & 0x3ffffff;
27108 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27109 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27110 off += 24;
27111 if (off >= 26) {
27112 off -= 26;
27113 j++;
27114 }
27115 }
27116 if (i + 6 !== start) {
27117 w = parseHex(number, start, i + 6);
27118 this.words[j] |= (w << off) & 0x3ffffff;
27119 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27120 }
27121 this.strip();
27122 };
27123
27124 function parseBase (str, start, end, mul) {
27125 var r = 0;
27126 var len = Math.min(str.length, end);
27127 for (var i = start; i < len; i++) {
27128 var c = str.charCodeAt(i) - 48;
27129
27130 r *= mul;
27131
27132 // 'a'
27133 if (c >= 49) {
27134 r += c - 49 + 0xa;
27135
27136 // 'A'
27137 } else if (c >= 17) {
27138 r += c - 17 + 0xa;
27139
27140 // '0' - '9'
27141 } else {
27142 r += c;
27143 }
27144 }
27145 return r;
27146 }
27147
27148 BN.prototype._parseBase = function _parseBase (number, base, start) {
27149 // Initialize as zero
27150 this.words = [ 0 ];
27151 this.length = 1;
27152
27153 // Find length of limb in base
27154 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27155 limbLen++;
27156 }
27157 limbLen--;
27158 limbPow = (limbPow / base) | 0;
27159
27160 var total = number.length - start;
27161 var mod = total % limbLen;
27162 var end = Math.min(total, total - mod) + start;
27163
27164 var word = 0;
27165 for (var i = start; i < end; i += limbLen) {
27166 word = parseBase(number, i, i + limbLen, base);
27167
27168 this.imuln(limbPow);
27169 if (this.words[0] + word < 0x4000000) {
27170 this.words[0] += word;
27171 } else {
27172 this._iaddn(word);
27173 }
27174 }
27175
27176 if (mod !== 0) {
27177 var pow = 1;
27178 word = parseBase(number, i, number.length, base);
27179
27180 for (i = 0; i < mod; i++) {
27181 pow *= base;
27182 }
27183
27184 this.imuln(pow);
27185 if (this.words[0] + word < 0x4000000) {
27186 this.words[0] += word;
27187 } else {
27188 this._iaddn(word);
27189 }
27190 }
27191 };
27192
27193 BN.prototype.copy = function copy (dest) {
27194 dest.words = new Array(this.length);
27195 for (var i = 0; i < this.length; i++) {
27196 dest.words[i] = this.words[i];
27197 }
27198 dest.length = this.length;
27199 dest.negative = this.negative;
27200 dest.red = this.red;
27201 };
27202
27203 BN.prototype.clone = function clone () {
27204 var r = new BN(null);
27205 this.copy(r);
27206 return r;
27207 };
27208
27209 BN.prototype._expand = function _expand (size) {
27210 while (this.length < size) {
27211 this.words[this.length++] = 0;
27212 }
27213 return this;
27214 };
27215
27216 // Remove leading `0` from `this`
27217 BN.prototype.strip = function strip () {
27218 while (this.length > 1 && this.words[this.length - 1] === 0) {
27219 this.length--;
27220 }
27221 return this._normSign();
27222 };
27223
27224 BN.prototype._normSign = function _normSign () {
27225 // -0 = 0
27226 if (this.length === 1 && this.words[0] === 0) {
27227 this.negative = 0;
27228 }
27229 return this;
27230 };
27231
27232 BN.prototype.inspect = function inspect () {
27233 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27234 };
27235
27236 /*
27237
27238 var zeros = [];
27239 var groupSizes = [];
27240 var groupBases = [];
27241
27242 var s = '';
27243 var i = -1;
27244 while (++i < BN.wordSize) {
27245 zeros[i] = s;
27246 s += '0';
27247 }
27248 groupSizes[0] = 0;
27249 groupSizes[1] = 0;
27250 groupBases[0] = 0;
27251 groupBases[1] = 0;
27252 var base = 2 - 1;
27253 while (++base < 36 + 1) {
27254 var groupSize = 0;
27255 var groupBase = 1;
27256 while (groupBase < (1 << BN.wordSize) / base) {
27257 groupBase *= base;
27258 groupSize += 1;
27259 }
27260 groupSizes[base] = groupSize;
27261 groupBases[base] = groupBase;
27262 }
27263
27264 */
27265
27266 var zeros = [
27267 '',
27268 '0',
27269 '00',
27270 '000',
27271 '0000',
27272 '00000',
27273 '000000',
27274 '0000000',
27275 '00000000',
27276 '000000000',
27277 '0000000000',
27278 '00000000000',
27279 '000000000000',
27280 '0000000000000',
27281 '00000000000000',
27282 '000000000000000',
27283 '0000000000000000',
27284 '00000000000000000',
27285 '000000000000000000',
27286 '0000000000000000000',
27287 '00000000000000000000',
27288 '000000000000000000000',
27289 '0000000000000000000000',
27290 '00000000000000000000000',
27291 '000000000000000000000000',
27292 '0000000000000000000000000'
27293 ];
27294
27295 var groupSizes = [
27296 0, 0,
27297 25, 16, 12, 11, 10, 9, 8,
27298 8, 7, 7, 7, 7, 6, 6,
27299 6, 6, 6, 6, 6, 5, 5,
27300 5, 5, 5, 5, 5, 5, 5,
27301 5, 5, 5, 5, 5, 5, 5
27302 ];
27303
27304 var groupBases = [
27305 0, 0,
27306 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27307 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27308 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27309 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27310 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27311 ];
27312
27313 BN.prototype.toString = function toString (base, padding) {
27314 base = base || 10;
27315 padding = padding | 0 || 1;
27316
27317 var out;
27318 if (base === 16 || base === 'hex') {
27319 out = '';
27320 var off = 0;
27321 var carry = 0;
27322 for (var i = 0; i < this.length; i++) {
27323 var w = this.words[i];
27324 var word = (((w << off) | carry) & 0xffffff).toString(16);
27325 carry = (w >>> (24 - off)) & 0xffffff;
27326 if (carry !== 0 || i !== this.length - 1) {
27327 out = zeros[6 - word.length] + word + out;
27328 } else {
27329 out = word + out;
27330 }
27331 off += 2;
27332 if (off >= 26) {
27333 off -= 26;
27334 i--;
27335 }
27336 }
27337 if (carry !== 0) {
27338 out = carry.toString(16) + out;
27339 }
27340 while (out.length % padding !== 0) {
27341 out = '0' + out;
27342 }
27343 if (this.negative !== 0) {
27344 out = '-' + out;
27345 }
27346 return out;
27347 }
27348
27349 if (base === (base | 0) && base >= 2 && base <= 36) {
27350 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27351 var groupSize = groupSizes[base];
27352 // var groupBase = Math.pow(base, groupSize);
27353 var groupBase = groupBases[base];
27354 out = '';
27355 var c = this.clone();
27356 c.negative = 0;
27357 while (!c.isZero()) {
27358 var r = c.modn(groupBase).toString(base);
27359 c = c.idivn(groupBase);
27360
27361 if (!c.isZero()) {
27362 out = zeros[groupSize - r.length] + r + out;
27363 } else {
27364 out = r + out;
27365 }
27366 }
27367 if (this.isZero()) {
27368 out = '0' + out;
27369 }
27370 while (out.length % padding !== 0) {
27371 out = '0' + out;
27372 }
27373 if (this.negative !== 0) {
27374 out = '-' + out;
27375 }
27376 return out;
27377 }
27378
27379 assert(false, 'Base should be between 2 and 36');
27380 };
27381
27382 BN.prototype.toNumber = function toNumber () {
27383 var ret = this.words[0];
27384 if (this.length === 2) {
27385 ret += this.words[1] * 0x4000000;
27386 } else if (this.length === 3 && this.words[2] === 0x01) {
27387 // NOTE: at this stage it is known that the top bit is set
27388 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27389 } else if (this.length > 2) {
27390 assert(false, 'Number can only safely store up to 53 bits');
27391 }
27392 return (this.negative !== 0) ? -ret : ret;
27393 };
27394
27395 BN.prototype.toJSON = function toJSON () {
27396 return this.toString(16);
27397 };
27398
27399 BN.prototype.toBuffer = function toBuffer (endian, length) {
27400 assert(typeof Buffer !== 'undefined');
27401 return this.toArrayLike(Buffer, endian, length);
27402 };
27403
27404 BN.prototype.toArray = function toArray (endian, length) {
27405 return this.toArrayLike(Array, endian, length);
27406 };
27407
27408 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27409 var byteLength = this.byteLength();
27410 var reqLength = length || Math.max(1, byteLength);
27411 assert(byteLength <= reqLength, 'byte array longer than desired length');
27412 assert(reqLength > 0, 'Requested array length <= 0');
27413
27414 this.strip();
27415 var littleEndian = endian === 'le';
27416 var res = new ArrayType(reqLength);
27417
27418 var b, i;
27419 var q = this.clone();
27420 if (!littleEndian) {
27421 // Assume big-endian
27422 for (i = 0; i < reqLength - byteLength; i++) {
27423 res[i] = 0;
27424 }
27425
27426 for (i = 0; !q.isZero(); i++) {
27427 b = q.andln(0xff);
27428 q.iushrn(8);
27429
27430 res[reqLength - i - 1] = b;
27431 }
27432 } else {
27433 for (i = 0; !q.isZero(); i++) {
27434 b = q.andln(0xff);
27435 q.iushrn(8);
27436
27437 res[i] = b;
27438 }
27439
27440 for (; i < reqLength; i++) {
27441 res[i] = 0;
27442 }
27443 }
27444
27445 return res;
27446 };
27447
27448 if (Math.clz32) {
27449 BN.prototype._countBits = function _countBits (w) {
27450 return 32 - Math.clz32(w);
27451 };
27452 } else {
27453 BN.prototype._countBits = function _countBits (w) {
27454 var t = w;
27455 var r = 0;
27456 if (t >= 0x1000) {
27457 r += 13;
27458 t >>>= 13;
27459 }
27460 if (t >= 0x40) {
27461 r += 7;
27462 t >>>= 7;
27463 }
27464 if (t >= 0x8) {
27465 r += 4;
27466 t >>>= 4;
27467 }
27468 if (t >= 0x02) {
27469 r += 2;
27470 t >>>= 2;
27471 }
27472 return r + t;
27473 };
27474 }
27475
27476 BN.prototype._zeroBits = function _zeroBits (w) {
27477 // Short-cut
27478 if (w === 0) return 26;
27479
27480 var t = w;
27481 var r = 0;
27482 if ((t & 0x1fff) === 0) {
27483 r += 13;
27484 t >>>= 13;
27485 }
27486 if ((t & 0x7f) === 0) {
27487 r += 7;
27488 t >>>= 7;
27489 }
27490 if ((t & 0xf) === 0) {
27491 r += 4;
27492 t >>>= 4;
27493 }
27494 if ((t & 0x3) === 0) {
27495 r += 2;
27496 t >>>= 2;
27497 }
27498 if ((t & 0x1) === 0) {
27499 r++;
27500 }
27501 return r;
27502 };
27503
27504 // Return number of used bits in a BN
27505 BN.prototype.bitLength = function bitLength () {
27506 var w = this.words[this.length - 1];
27507 var hi = this._countBits(w);
27508 return (this.length - 1) * 26 + hi;
27509 };
27510
27511 function toBitArray (num) {
27512 var w = new Array(num.bitLength());
27513
27514 for (var bit = 0; bit < w.length; bit++) {
27515 var off = (bit / 26) | 0;
27516 var wbit = bit % 26;
27517
27518 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
27519 }
27520
27521 return w;
27522 }
27523
27524 // Number of trailing zero bits
27525 BN.prototype.zeroBits = function zeroBits () {
27526 if (this.isZero()) return 0;
27527
27528 var r = 0;
27529 for (var i = 0; i < this.length; i++) {
27530 var b = this._zeroBits(this.words[i]);
27531 r += b;
27532 if (b !== 26) break;
27533 }
27534 return r;
27535 };
27536
27537 BN.prototype.byteLength = function byteLength () {
27538 return Math.ceil(this.bitLength() / 8);
27539 };
27540
27541 BN.prototype.toTwos = function toTwos (width) {
27542 if (this.negative !== 0) {
27543 return this.abs().inotn(width).iaddn(1);
27544 }
27545 return this.clone();
27546 };
27547
27548 BN.prototype.fromTwos = function fromTwos (width) {
27549 if (this.testn(width - 1)) {
27550 return this.notn(width).iaddn(1).ineg();
27551 }
27552 return this.clone();
27553 };
27554
27555 BN.prototype.isNeg = function isNeg () {
27556 return this.negative !== 0;
27557 };
27558
27559 // Return negative clone of `this`
27560 BN.prototype.neg = function neg () {
27561 return this.clone().ineg();
27562 };
27563
27564 BN.prototype.ineg = function ineg () {
27565 if (!this.isZero()) {
27566 this.negative ^= 1;
27567 }
27568
27569 return this;
27570 };
27571
27572 // Or `num` with `this` in-place
27573 BN.prototype.iuor = function iuor (num) {
27574 while (this.length < num.length) {
27575 this.words[this.length++] = 0;
27576 }
27577
27578 for (var i = 0; i < num.length; i++) {
27579 this.words[i] = this.words[i] | num.words[i];
27580 }
27581
27582 return this.strip();
27583 };
27584
27585 BN.prototype.ior = function ior (num) {
27586 assert((this.negative | num.negative) === 0);
27587 return this.iuor(num);
27588 };
27589
27590 // Or `num` with `this`
27591 BN.prototype.or = function or (num) {
27592 if (this.length > num.length) return this.clone().ior(num);
27593 return num.clone().ior(this);
27594 };
27595
27596 BN.prototype.uor = function uor (num) {
27597 if (this.length > num.length) return this.clone().iuor(num);
27598 return num.clone().iuor(this);
27599 };
27600
27601 // And `num` with `this` in-place
27602 BN.prototype.iuand = function iuand (num) {
27603 // b = min-length(num, this)
27604 var b;
27605 if (this.length > num.length) {
27606 b = num;
27607 } else {
27608 b = this;
27609 }
27610
27611 for (var i = 0; i < b.length; i++) {
27612 this.words[i] = this.words[i] & num.words[i];
27613 }
27614
27615 this.length = b.length;
27616
27617 return this.strip();
27618 };
27619
27620 BN.prototype.iand = function iand (num) {
27621 assert((this.negative | num.negative) === 0);
27622 return this.iuand(num);
27623 };
27624
27625 // And `num` with `this`
27626 BN.prototype.and = function and (num) {
27627 if (this.length > num.length) return this.clone().iand(num);
27628 return num.clone().iand(this);
27629 };
27630
27631 BN.prototype.uand = function uand (num) {
27632 if (this.length > num.length) return this.clone().iuand(num);
27633 return num.clone().iuand(this);
27634 };
27635
27636 // Xor `num` with `this` in-place
27637 BN.prototype.iuxor = function iuxor (num) {
27638 // a.length > b.length
27639 var a;
27640 var b;
27641 if (this.length > num.length) {
27642 a = this;
27643 b = num;
27644 } else {
27645 a = num;
27646 b = this;
27647 }
27648
27649 for (var i = 0; i < b.length; i++) {
27650 this.words[i] = a.words[i] ^ b.words[i];
27651 }
27652
27653 if (this !== a) {
27654 for (; i < a.length; i++) {
27655 this.words[i] = a.words[i];
27656 }
27657 }
27658
27659 this.length = a.length;
27660
27661 return this.strip();
27662 };
27663
27664 BN.prototype.ixor = function ixor (num) {
27665 assert((this.negative | num.negative) === 0);
27666 return this.iuxor(num);
27667 };
27668
27669 // Xor `num` with `this`
27670 BN.prototype.xor = function xor (num) {
27671 if (this.length > num.length) return this.clone().ixor(num);
27672 return num.clone().ixor(this);
27673 };
27674
27675 BN.prototype.uxor = function uxor (num) {
27676 if (this.length > num.length) return this.clone().iuxor(num);
27677 return num.clone().iuxor(this);
27678 };
27679
27680 // Not ``this`` with ``width`` bitwidth
27681 BN.prototype.inotn = function inotn (width) {
27682 assert(typeof width === 'number' && width >= 0);
27683
27684 var bytesNeeded = Math.ceil(width / 26) | 0;
27685 var bitsLeft = width % 26;
27686
27687 // Extend the buffer with leading zeroes
27688 this._expand(bytesNeeded);
27689
27690 if (bitsLeft > 0) {
27691 bytesNeeded--;
27692 }
27693
27694 // Handle complete words
27695 for (var i = 0; i < bytesNeeded; i++) {
27696 this.words[i] = ~this.words[i] & 0x3ffffff;
27697 }
27698
27699 // Handle the residue
27700 if (bitsLeft > 0) {
27701 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
27702 }
27703
27704 // And remove leading zeroes
27705 return this.strip();
27706 };
27707
27708 BN.prototype.notn = function notn (width) {
27709 return this.clone().inotn(width);
27710 };
27711
27712 // Set `bit` of `this`
27713 BN.prototype.setn = function setn (bit, val) {
27714 assert(typeof bit === 'number' && bit >= 0);
27715
27716 var off = (bit / 26) | 0;
27717 var wbit = bit % 26;
27718
27719 this._expand(off + 1);
27720
27721 if (val) {
27722 this.words[off] = this.words[off] | (1 << wbit);
27723 } else {
27724 this.words[off] = this.words[off] & ~(1 << wbit);
27725 }
27726
27727 return this.strip();
27728 };
27729
27730 // Add `num` to `this` in-place
27731 BN.prototype.iadd = function iadd (num) {
27732 var r;
27733
27734 // negative + positive
27735 if (this.negative !== 0 && num.negative === 0) {
27736 this.negative = 0;
27737 r = this.isub(num);
27738 this.negative ^= 1;
27739 return this._normSign();
27740
27741 // positive + negative
27742 } else if (this.negative === 0 && num.negative !== 0) {
27743 num.negative = 0;
27744 r = this.isub(num);
27745 num.negative = 1;
27746 return r._normSign();
27747 }
27748
27749 // a.length > b.length
27750 var a, b;
27751 if (this.length > num.length) {
27752 a = this;
27753 b = num;
27754 } else {
27755 a = num;
27756 b = this;
27757 }
27758
27759 var carry = 0;
27760 for (var i = 0; i < b.length; i++) {
27761 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27762 this.words[i] = r & 0x3ffffff;
27763 carry = r >>> 26;
27764 }
27765 for (; carry !== 0 && i < a.length; i++) {
27766 r = (a.words[i] | 0) + carry;
27767 this.words[i] = r & 0x3ffffff;
27768 carry = r >>> 26;
27769 }
27770
27771 this.length = a.length;
27772 if (carry !== 0) {
27773 this.words[this.length] = carry;
27774 this.length++;
27775 // Copy the rest of the words
27776 } else if (a !== this) {
27777 for (; i < a.length; i++) {
27778 this.words[i] = a.words[i];
27779 }
27780 }
27781
27782 return this;
27783 };
27784
27785 // Add `num` to `this`
27786 BN.prototype.add = function add (num) {
27787 var res;
27788 if (num.negative !== 0 && this.negative === 0) {
27789 num.negative = 0;
27790 res = this.sub(num);
27791 num.negative ^= 1;
27792 return res;
27793 } else if (num.negative === 0 && this.negative !== 0) {
27794 this.negative = 0;
27795 res = num.sub(this);
27796 this.negative = 1;
27797 return res;
27798 }
27799
27800 if (this.length > num.length) return this.clone().iadd(num);
27801
27802 return num.clone().iadd(this);
27803 };
27804
27805 // Subtract `num` from `this` in-place
27806 BN.prototype.isub = function isub (num) {
27807 // this - (-num) = this + num
27808 if (num.negative !== 0) {
27809 num.negative = 0;
27810 var r = this.iadd(num);
27811 num.negative = 1;
27812 return r._normSign();
27813
27814 // -this - num = -(this + num)
27815 } else if (this.negative !== 0) {
27816 this.negative = 0;
27817 this.iadd(num);
27818 this.negative = 1;
27819 return this._normSign();
27820 }
27821
27822 // At this point both numbers are positive
27823 var cmp = this.cmp(num);
27824
27825 // Optimization - zeroify
27826 if (cmp === 0) {
27827 this.negative = 0;
27828 this.length = 1;
27829 this.words[0] = 0;
27830 return this;
27831 }
27832
27833 // a > b
27834 var a, b;
27835 if (cmp > 0) {
27836 a = this;
27837 b = num;
27838 } else {
27839 a = num;
27840 b = this;
27841 }
27842
27843 var carry = 0;
27844 for (var i = 0; i < b.length; i++) {
27845 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27846 carry = r >> 26;
27847 this.words[i] = r & 0x3ffffff;
27848 }
27849 for (; carry !== 0 && i < a.length; i++) {
27850 r = (a.words[i] | 0) + carry;
27851 carry = r >> 26;
27852 this.words[i] = r & 0x3ffffff;
27853 }
27854
27855 // Copy rest of the words
27856 if (carry === 0 && i < a.length && a !== this) {
27857 for (; i < a.length; i++) {
27858 this.words[i] = a.words[i];
27859 }
27860 }
27861
27862 this.length = Math.max(this.length, i);
27863
27864 if (a !== this) {
27865 this.negative = 1;
27866 }
27867
27868 return this.strip();
27869 };
27870
27871 // Subtract `num` from `this`
27872 BN.prototype.sub = function sub (num) {
27873 return this.clone().isub(num);
27874 };
27875
27876 function smallMulTo (self, num, out) {
27877 out.negative = num.negative ^ self.negative;
27878 var len = (self.length + num.length) | 0;
27879 out.length = len;
27880 len = (len - 1) | 0;
27881
27882 // Peel one iteration (compiler can't do it, because of code complexity)
27883 var a = self.words[0] | 0;
27884 var b = num.words[0] | 0;
27885 var r = a * b;
27886
27887 var lo = r & 0x3ffffff;
27888 var carry = (r / 0x4000000) | 0;
27889 out.words[0] = lo;
27890
27891 for (var k = 1; k < len; k++) {
27892 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27893 // note that ncarry could be >= 0x3ffffff
27894 var ncarry = carry >>> 26;
27895 var rword = carry & 0x3ffffff;
27896 var maxJ = Math.min(k, num.length - 1);
27897 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27898 var i = (k - j) | 0;
27899 a = self.words[i] | 0;
27900 b = num.words[j] | 0;
27901 r = a * b + rword;
27902 ncarry += (r / 0x4000000) | 0;
27903 rword = r & 0x3ffffff;
27904 }
27905 out.words[k] = rword | 0;
27906 carry = ncarry | 0;
27907 }
27908 if (carry !== 0) {
27909 out.words[k] = carry | 0;
27910 } else {
27911 out.length--;
27912 }
27913
27914 return out.strip();
27915 }
27916
27917 // TODO(indutny): it may be reasonable to omit it for users who don't need
27918 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27919 // multiplication (like elliptic secp256k1).
27920 var comb10MulTo = function comb10MulTo (self, num, out) {
27921 var a = self.words;
27922 var b = num.words;
27923 var o = out.words;
27924 var c = 0;
27925 var lo;
27926 var mid;
27927 var hi;
27928 var a0 = a[0] | 0;
27929 var al0 = a0 & 0x1fff;
27930 var ah0 = a0 >>> 13;
27931 var a1 = a[1] | 0;
27932 var al1 = a1 & 0x1fff;
27933 var ah1 = a1 >>> 13;
27934 var a2 = a[2] | 0;
27935 var al2 = a2 & 0x1fff;
27936 var ah2 = a2 >>> 13;
27937 var a3 = a[3] | 0;
27938 var al3 = a3 & 0x1fff;
27939 var ah3 = a3 >>> 13;
27940 var a4 = a[4] | 0;
27941 var al4 = a4 & 0x1fff;
27942 var ah4 = a4 >>> 13;
27943 var a5 = a[5] | 0;
27944 var al5 = a5 & 0x1fff;
27945 var ah5 = a5 >>> 13;
27946 var a6 = a[6] | 0;
27947 var al6 = a6 & 0x1fff;
27948 var ah6 = a6 >>> 13;
27949 var a7 = a[7] | 0;
27950 var al7 = a7 & 0x1fff;
27951 var ah7 = a7 >>> 13;
27952 var a8 = a[8] | 0;
27953 var al8 = a8 & 0x1fff;
27954 var ah8 = a8 >>> 13;
27955 var a9 = a[9] | 0;
27956 var al9 = a9 & 0x1fff;
27957 var ah9 = a9 >>> 13;
27958 var b0 = b[0] | 0;
27959 var bl0 = b0 & 0x1fff;
27960 var bh0 = b0 >>> 13;
27961 var b1 = b[1] | 0;
27962 var bl1 = b1 & 0x1fff;
27963 var bh1 = b1 >>> 13;
27964 var b2 = b[2] | 0;
27965 var bl2 = b2 & 0x1fff;
27966 var bh2 = b2 >>> 13;
27967 var b3 = b[3] | 0;
27968 var bl3 = b3 & 0x1fff;
27969 var bh3 = b3 >>> 13;
27970 var b4 = b[4] | 0;
27971 var bl4 = b4 & 0x1fff;
27972 var bh4 = b4 >>> 13;
27973 var b5 = b[5] | 0;
27974 var bl5 = b5 & 0x1fff;
27975 var bh5 = b5 >>> 13;
27976 var b6 = b[6] | 0;
27977 var bl6 = b6 & 0x1fff;
27978 var bh6 = b6 >>> 13;
27979 var b7 = b[7] | 0;
27980 var bl7 = b7 & 0x1fff;
27981 var bh7 = b7 >>> 13;
27982 var b8 = b[8] | 0;
27983 var bl8 = b8 & 0x1fff;
27984 var bh8 = b8 >>> 13;
27985 var b9 = b[9] | 0;
27986 var bl9 = b9 & 0x1fff;
27987 var bh9 = b9 >>> 13;
27988
27989 out.negative = self.negative ^ num.negative;
27990 out.length = 19;
27991 /* k = 0 */
27992 lo = Math.imul(al0, bl0);
27993 mid = Math.imul(al0, bh0);
27994 mid = (mid + Math.imul(ah0, bl0)) | 0;
27995 hi = Math.imul(ah0, bh0);
27996 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27997 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
27998 w0 &= 0x3ffffff;
27999 /* k = 1 */
28000 lo = Math.imul(al1, bl0);
28001 mid = Math.imul(al1, bh0);
28002 mid = (mid + Math.imul(ah1, bl0)) | 0;
28003 hi = Math.imul(ah1, bh0);
28004 lo = (lo + Math.imul(al0, bl1)) | 0;
28005 mid = (mid + Math.imul(al0, bh1)) | 0;
28006 mid = (mid + Math.imul(ah0, bl1)) | 0;
28007 hi = (hi + Math.imul(ah0, bh1)) | 0;
28008 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28009 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
28010 w1 &= 0x3ffffff;
28011 /* k = 2 */
28012 lo = Math.imul(al2, bl0);
28013 mid = Math.imul(al2, bh0);
28014 mid = (mid + Math.imul(ah2, bl0)) | 0;
28015 hi = Math.imul(ah2, bh0);
28016 lo = (lo + Math.imul(al1, bl1)) | 0;
28017 mid = (mid + Math.imul(al1, bh1)) | 0;
28018 mid = (mid + Math.imul(ah1, bl1)) | 0;
28019 hi = (hi + Math.imul(ah1, bh1)) | 0;
28020 lo = (lo + Math.imul(al0, bl2)) | 0;
28021 mid = (mid + Math.imul(al0, bh2)) | 0;
28022 mid = (mid + Math.imul(ah0, bl2)) | 0;
28023 hi = (hi + Math.imul(ah0, bh2)) | 0;
28024 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28025 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
28026 w2 &= 0x3ffffff;
28027 /* k = 3 */
28028 lo = Math.imul(al3, bl0);
28029 mid = Math.imul(al3, bh0);
28030 mid = (mid + Math.imul(ah3, bl0)) | 0;
28031 hi = Math.imul(ah3, bh0);
28032 lo = (lo + Math.imul(al2, bl1)) | 0;
28033 mid = (mid + Math.imul(al2, bh1)) | 0;
28034 mid = (mid + Math.imul(ah2, bl1)) | 0;
28035 hi = (hi + Math.imul(ah2, bh1)) | 0;
28036 lo = (lo + Math.imul(al1, bl2)) | 0;
28037 mid = (mid + Math.imul(al1, bh2)) | 0;
28038 mid = (mid + Math.imul(ah1, bl2)) | 0;
28039 hi = (hi + Math.imul(ah1, bh2)) | 0;
28040 lo = (lo + Math.imul(al0, bl3)) | 0;
28041 mid = (mid + Math.imul(al0, bh3)) | 0;
28042 mid = (mid + Math.imul(ah0, bl3)) | 0;
28043 hi = (hi + Math.imul(ah0, bh3)) | 0;
28044 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28045 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28046 w3 &= 0x3ffffff;
28047 /* k = 4 */
28048 lo = Math.imul(al4, bl0);
28049 mid = Math.imul(al4, bh0);
28050 mid = (mid + Math.imul(ah4, bl0)) | 0;
28051 hi = Math.imul(ah4, bh0);
28052 lo = (lo + Math.imul(al3, bl1)) | 0;
28053 mid = (mid + Math.imul(al3, bh1)) | 0;
28054 mid = (mid + Math.imul(ah3, bl1)) | 0;
28055 hi = (hi + Math.imul(ah3, bh1)) | 0;
28056 lo = (lo + Math.imul(al2, bl2)) | 0;
28057 mid = (mid + Math.imul(al2, bh2)) | 0;
28058 mid = (mid + Math.imul(ah2, bl2)) | 0;
28059 hi = (hi + Math.imul(ah2, bh2)) | 0;
28060 lo = (lo + Math.imul(al1, bl3)) | 0;
28061 mid = (mid + Math.imul(al1, bh3)) | 0;
28062 mid = (mid + Math.imul(ah1, bl3)) | 0;
28063 hi = (hi + Math.imul(ah1, bh3)) | 0;
28064 lo = (lo + Math.imul(al0, bl4)) | 0;
28065 mid = (mid + Math.imul(al0, bh4)) | 0;
28066 mid = (mid + Math.imul(ah0, bl4)) | 0;
28067 hi = (hi + Math.imul(ah0, bh4)) | 0;
28068 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28069 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28070 w4 &= 0x3ffffff;
28071 /* k = 5 */
28072 lo = Math.imul(al5, bl0);
28073 mid = Math.imul(al5, bh0);
28074 mid = (mid + Math.imul(ah5, bl0)) | 0;
28075 hi = Math.imul(ah5, bh0);
28076 lo = (lo + Math.imul(al4, bl1)) | 0;
28077 mid = (mid + Math.imul(al4, bh1)) | 0;
28078 mid = (mid + Math.imul(ah4, bl1)) | 0;
28079 hi = (hi + Math.imul(ah4, bh1)) | 0;
28080 lo = (lo + Math.imul(al3, bl2)) | 0;
28081 mid = (mid + Math.imul(al3, bh2)) | 0;
28082 mid = (mid + Math.imul(ah3, bl2)) | 0;
28083 hi = (hi + Math.imul(ah3, bh2)) | 0;
28084 lo = (lo + Math.imul(al2, bl3)) | 0;
28085 mid = (mid + Math.imul(al2, bh3)) | 0;
28086 mid = (mid + Math.imul(ah2, bl3)) | 0;
28087 hi = (hi + Math.imul(ah2, bh3)) | 0;
28088 lo = (lo + Math.imul(al1, bl4)) | 0;
28089 mid = (mid + Math.imul(al1, bh4)) | 0;
28090 mid = (mid + Math.imul(ah1, bl4)) | 0;
28091 hi = (hi + Math.imul(ah1, bh4)) | 0;
28092 lo = (lo + Math.imul(al0, bl5)) | 0;
28093 mid = (mid + Math.imul(al0, bh5)) | 0;
28094 mid = (mid + Math.imul(ah0, bl5)) | 0;
28095 hi = (hi + Math.imul(ah0, bh5)) | 0;
28096 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28097 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28098 w5 &= 0x3ffffff;
28099 /* k = 6 */
28100 lo = Math.imul(al6, bl0);
28101 mid = Math.imul(al6, bh0);
28102 mid = (mid + Math.imul(ah6, bl0)) | 0;
28103 hi = Math.imul(ah6, bh0);
28104 lo = (lo + Math.imul(al5, bl1)) | 0;
28105 mid = (mid + Math.imul(al5, bh1)) | 0;
28106 mid = (mid + Math.imul(ah5, bl1)) | 0;
28107 hi = (hi + Math.imul(ah5, bh1)) | 0;
28108 lo = (lo + Math.imul(al4, bl2)) | 0;
28109 mid = (mid + Math.imul(al4, bh2)) | 0;
28110 mid = (mid + Math.imul(ah4, bl2)) | 0;
28111 hi = (hi + Math.imul(ah4, bh2)) | 0;
28112 lo = (lo + Math.imul(al3, bl3)) | 0;
28113 mid = (mid + Math.imul(al3, bh3)) | 0;
28114 mid = (mid + Math.imul(ah3, bl3)) | 0;
28115 hi = (hi + Math.imul(ah3, bh3)) | 0;
28116 lo = (lo + Math.imul(al2, bl4)) | 0;
28117 mid = (mid + Math.imul(al2, bh4)) | 0;
28118 mid = (mid + Math.imul(ah2, bl4)) | 0;
28119 hi = (hi + Math.imul(ah2, bh4)) | 0;
28120 lo = (lo + Math.imul(al1, bl5)) | 0;
28121 mid = (mid + Math.imul(al1, bh5)) | 0;
28122 mid = (mid + Math.imul(ah1, bl5)) | 0;
28123 hi = (hi + Math.imul(ah1, bh5)) | 0;
28124 lo = (lo + Math.imul(al0, bl6)) | 0;
28125 mid = (mid + Math.imul(al0, bh6)) | 0;
28126 mid = (mid + Math.imul(ah0, bl6)) | 0;
28127 hi = (hi + Math.imul(ah0, bh6)) | 0;
28128 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28129 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28130 w6 &= 0x3ffffff;
28131 /* k = 7 */
28132 lo = Math.imul(al7, bl0);
28133 mid = Math.imul(al7, bh0);
28134 mid = (mid + Math.imul(ah7, bl0)) | 0;
28135 hi = Math.imul(ah7, bh0);
28136 lo = (lo + Math.imul(al6, bl1)) | 0;
28137 mid = (mid + Math.imul(al6, bh1)) | 0;
28138 mid = (mid + Math.imul(ah6, bl1)) | 0;
28139 hi = (hi + Math.imul(ah6, bh1)) | 0;
28140 lo = (lo + Math.imul(al5, bl2)) | 0;
28141 mid = (mid + Math.imul(al5, bh2)) | 0;
28142 mid = (mid + Math.imul(ah5, bl2)) | 0;
28143 hi = (hi + Math.imul(ah5, bh2)) | 0;
28144 lo = (lo + Math.imul(al4, bl3)) | 0;
28145 mid = (mid + Math.imul(al4, bh3)) | 0;
28146 mid = (mid + Math.imul(ah4, bl3)) | 0;
28147 hi = (hi + Math.imul(ah4, bh3)) | 0;
28148 lo = (lo + Math.imul(al3, bl4)) | 0;
28149 mid = (mid + Math.imul(al3, bh4)) | 0;
28150 mid = (mid + Math.imul(ah3, bl4)) | 0;
28151 hi = (hi + Math.imul(ah3, bh4)) | 0;
28152 lo = (lo + Math.imul(al2, bl5)) | 0;
28153 mid = (mid + Math.imul(al2, bh5)) | 0;
28154 mid = (mid + Math.imul(ah2, bl5)) | 0;
28155 hi = (hi + Math.imul(ah2, bh5)) | 0;
28156 lo = (lo + Math.imul(al1, bl6)) | 0;
28157 mid = (mid + Math.imul(al1, bh6)) | 0;
28158 mid = (mid + Math.imul(ah1, bl6)) | 0;
28159 hi = (hi + Math.imul(ah1, bh6)) | 0;
28160 lo = (lo + Math.imul(al0, bl7)) | 0;
28161 mid = (mid + Math.imul(al0, bh7)) | 0;
28162 mid = (mid + Math.imul(ah0, bl7)) | 0;
28163 hi = (hi + Math.imul(ah0, bh7)) | 0;
28164 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28165 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28166 w7 &= 0x3ffffff;
28167 /* k = 8 */
28168 lo = Math.imul(al8, bl0);
28169 mid = Math.imul(al8, bh0);
28170 mid = (mid + Math.imul(ah8, bl0)) | 0;
28171 hi = Math.imul(ah8, bh0);
28172 lo = (lo + Math.imul(al7, bl1)) | 0;
28173 mid = (mid + Math.imul(al7, bh1)) | 0;
28174 mid = (mid + Math.imul(ah7, bl1)) | 0;
28175 hi = (hi + Math.imul(ah7, bh1)) | 0;
28176 lo = (lo + Math.imul(al6, bl2)) | 0;
28177 mid = (mid + Math.imul(al6, bh2)) | 0;
28178 mid = (mid + Math.imul(ah6, bl2)) | 0;
28179 hi = (hi + Math.imul(ah6, bh2)) | 0;
28180 lo = (lo + Math.imul(al5, bl3)) | 0;
28181 mid = (mid + Math.imul(al5, bh3)) | 0;
28182 mid = (mid + Math.imul(ah5, bl3)) | 0;
28183 hi = (hi + Math.imul(ah5, bh3)) | 0;
28184 lo = (lo + Math.imul(al4, bl4)) | 0;
28185 mid = (mid + Math.imul(al4, bh4)) | 0;
28186 mid = (mid + Math.imul(ah4, bl4)) | 0;
28187 hi = (hi + Math.imul(ah4, bh4)) | 0;
28188 lo = (lo + Math.imul(al3, bl5)) | 0;
28189 mid = (mid + Math.imul(al3, bh5)) | 0;
28190 mid = (mid + Math.imul(ah3, bl5)) | 0;
28191 hi = (hi + Math.imul(ah3, bh5)) | 0;
28192 lo = (lo + Math.imul(al2, bl6)) | 0;
28193 mid = (mid + Math.imul(al2, bh6)) | 0;
28194 mid = (mid + Math.imul(ah2, bl6)) | 0;
28195 hi = (hi + Math.imul(ah2, bh6)) | 0;
28196 lo = (lo + Math.imul(al1, bl7)) | 0;
28197 mid = (mid + Math.imul(al1, bh7)) | 0;
28198 mid = (mid + Math.imul(ah1, bl7)) | 0;
28199 hi = (hi + Math.imul(ah1, bh7)) | 0;
28200 lo = (lo + Math.imul(al0, bl8)) | 0;
28201 mid = (mid + Math.imul(al0, bh8)) | 0;
28202 mid = (mid + Math.imul(ah0, bl8)) | 0;
28203 hi = (hi + Math.imul(ah0, bh8)) | 0;
28204 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28205 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28206 w8 &= 0x3ffffff;
28207 /* k = 9 */
28208 lo = Math.imul(al9, bl0);
28209 mid = Math.imul(al9, bh0);
28210 mid = (mid + Math.imul(ah9, bl0)) | 0;
28211 hi = Math.imul(ah9, bh0);
28212 lo = (lo + Math.imul(al8, bl1)) | 0;
28213 mid = (mid + Math.imul(al8, bh1)) | 0;
28214 mid = (mid + Math.imul(ah8, bl1)) | 0;
28215 hi = (hi + Math.imul(ah8, bh1)) | 0;
28216 lo = (lo + Math.imul(al7, bl2)) | 0;
28217 mid = (mid + Math.imul(al7, bh2)) | 0;
28218 mid = (mid + Math.imul(ah7, bl2)) | 0;
28219 hi = (hi + Math.imul(ah7, bh2)) | 0;
28220 lo = (lo + Math.imul(al6, bl3)) | 0;
28221 mid = (mid + Math.imul(al6, bh3)) | 0;
28222 mid = (mid + Math.imul(ah6, bl3)) | 0;
28223 hi = (hi + Math.imul(ah6, bh3)) | 0;
28224 lo = (lo + Math.imul(al5, bl4)) | 0;
28225 mid = (mid + Math.imul(al5, bh4)) | 0;
28226 mid = (mid + Math.imul(ah5, bl4)) | 0;
28227 hi = (hi + Math.imul(ah5, bh4)) | 0;
28228 lo = (lo + Math.imul(al4, bl5)) | 0;
28229 mid = (mid + Math.imul(al4, bh5)) | 0;
28230 mid = (mid + Math.imul(ah4, bl5)) | 0;
28231 hi = (hi + Math.imul(ah4, bh5)) | 0;
28232 lo = (lo + Math.imul(al3, bl6)) | 0;
28233 mid = (mid + Math.imul(al3, bh6)) | 0;
28234 mid = (mid + Math.imul(ah3, bl6)) | 0;
28235 hi = (hi + Math.imul(ah3, bh6)) | 0;
28236 lo = (lo + Math.imul(al2, bl7)) | 0;
28237 mid = (mid + Math.imul(al2, bh7)) | 0;
28238 mid = (mid + Math.imul(ah2, bl7)) | 0;
28239 hi = (hi + Math.imul(ah2, bh7)) | 0;
28240 lo = (lo + Math.imul(al1, bl8)) | 0;
28241 mid = (mid + Math.imul(al1, bh8)) | 0;
28242 mid = (mid + Math.imul(ah1, bl8)) | 0;
28243 hi = (hi + Math.imul(ah1, bh8)) | 0;
28244 lo = (lo + Math.imul(al0, bl9)) | 0;
28245 mid = (mid + Math.imul(al0, bh9)) | 0;
28246 mid = (mid + Math.imul(ah0, bl9)) | 0;
28247 hi = (hi + Math.imul(ah0, bh9)) | 0;
28248 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28249 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28250 w9 &= 0x3ffffff;
28251 /* k = 10 */
28252 lo = Math.imul(al9, bl1);
28253 mid = Math.imul(al9, bh1);
28254 mid = (mid + Math.imul(ah9, bl1)) | 0;
28255 hi = Math.imul(ah9, bh1);
28256 lo = (lo + Math.imul(al8, bl2)) | 0;
28257 mid = (mid + Math.imul(al8, bh2)) | 0;
28258 mid = (mid + Math.imul(ah8, bl2)) | 0;
28259 hi = (hi + Math.imul(ah8, bh2)) | 0;
28260 lo = (lo + Math.imul(al7, bl3)) | 0;
28261 mid = (mid + Math.imul(al7, bh3)) | 0;
28262 mid = (mid + Math.imul(ah7, bl3)) | 0;
28263 hi = (hi + Math.imul(ah7, bh3)) | 0;
28264 lo = (lo + Math.imul(al6, bl4)) | 0;
28265 mid = (mid + Math.imul(al6, bh4)) | 0;
28266 mid = (mid + Math.imul(ah6, bl4)) | 0;
28267 hi = (hi + Math.imul(ah6, bh4)) | 0;
28268 lo = (lo + Math.imul(al5, bl5)) | 0;
28269 mid = (mid + Math.imul(al5, bh5)) | 0;
28270 mid = (mid + Math.imul(ah5, bl5)) | 0;
28271 hi = (hi + Math.imul(ah5, bh5)) | 0;
28272 lo = (lo + Math.imul(al4, bl6)) | 0;
28273 mid = (mid + Math.imul(al4, bh6)) | 0;
28274 mid = (mid + Math.imul(ah4, bl6)) | 0;
28275 hi = (hi + Math.imul(ah4, bh6)) | 0;
28276 lo = (lo + Math.imul(al3, bl7)) | 0;
28277 mid = (mid + Math.imul(al3, bh7)) | 0;
28278 mid = (mid + Math.imul(ah3, bl7)) | 0;
28279 hi = (hi + Math.imul(ah3, bh7)) | 0;
28280 lo = (lo + Math.imul(al2, bl8)) | 0;
28281 mid = (mid + Math.imul(al2, bh8)) | 0;
28282 mid = (mid + Math.imul(ah2, bl8)) | 0;
28283 hi = (hi + Math.imul(ah2, bh8)) | 0;
28284 lo = (lo + Math.imul(al1, bl9)) | 0;
28285 mid = (mid + Math.imul(al1, bh9)) | 0;
28286 mid = (mid + Math.imul(ah1, bl9)) | 0;
28287 hi = (hi + Math.imul(ah1, bh9)) | 0;
28288 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28289 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28290 w10 &= 0x3ffffff;
28291 /* k = 11 */
28292 lo = Math.imul(al9, bl2);
28293 mid = Math.imul(al9, bh2);
28294 mid = (mid + Math.imul(ah9, bl2)) | 0;
28295 hi = Math.imul(ah9, bh2);
28296 lo = (lo + Math.imul(al8, bl3)) | 0;
28297 mid = (mid + Math.imul(al8, bh3)) | 0;
28298 mid = (mid + Math.imul(ah8, bl3)) | 0;
28299 hi = (hi + Math.imul(ah8, bh3)) | 0;
28300 lo = (lo + Math.imul(al7, bl4)) | 0;
28301 mid = (mid + Math.imul(al7, bh4)) | 0;
28302 mid = (mid + Math.imul(ah7, bl4)) | 0;
28303 hi = (hi + Math.imul(ah7, bh4)) | 0;
28304 lo = (lo + Math.imul(al6, bl5)) | 0;
28305 mid = (mid + Math.imul(al6, bh5)) | 0;
28306 mid = (mid + Math.imul(ah6, bl5)) | 0;
28307 hi = (hi + Math.imul(ah6, bh5)) | 0;
28308 lo = (lo + Math.imul(al5, bl6)) | 0;
28309 mid = (mid + Math.imul(al5, bh6)) | 0;
28310 mid = (mid + Math.imul(ah5, bl6)) | 0;
28311 hi = (hi + Math.imul(ah5, bh6)) | 0;
28312 lo = (lo + Math.imul(al4, bl7)) | 0;
28313 mid = (mid + Math.imul(al4, bh7)) | 0;
28314 mid = (mid + Math.imul(ah4, bl7)) | 0;
28315 hi = (hi + Math.imul(ah4, bh7)) | 0;
28316 lo = (lo + Math.imul(al3, bl8)) | 0;
28317 mid = (mid + Math.imul(al3, bh8)) | 0;
28318 mid = (mid + Math.imul(ah3, bl8)) | 0;
28319 hi = (hi + Math.imul(ah3, bh8)) | 0;
28320 lo = (lo + Math.imul(al2, bl9)) | 0;
28321 mid = (mid + Math.imul(al2, bh9)) | 0;
28322 mid = (mid + Math.imul(ah2, bl9)) | 0;
28323 hi = (hi + Math.imul(ah2, bh9)) | 0;
28324 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28325 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28326 w11 &= 0x3ffffff;
28327 /* k = 12 */
28328 lo = Math.imul(al9, bl3);
28329 mid = Math.imul(al9, bh3);
28330 mid = (mid + Math.imul(ah9, bl3)) | 0;
28331 hi = Math.imul(ah9, bh3);
28332 lo = (lo + Math.imul(al8, bl4)) | 0;
28333 mid = (mid + Math.imul(al8, bh4)) | 0;
28334 mid = (mid + Math.imul(ah8, bl4)) | 0;
28335 hi = (hi + Math.imul(ah8, bh4)) | 0;
28336 lo = (lo + Math.imul(al7, bl5)) | 0;
28337 mid = (mid + Math.imul(al7, bh5)) | 0;
28338 mid = (mid + Math.imul(ah7, bl5)) | 0;
28339 hi = (hi + Math.imul(ah7, bh5)) | 0;
28340 lo = (lo + Math.imul(al6, bl6)) | 0;
28341 mid = (mid + Math.imul(al6, bh6)) | 0;
28342 mid = (mid + Math.imul(ah6, bl6)) | 0;
28343 hi = (hi + Math.imul(ah6, bh6)) | 0;
28344 lo = (lo + Math.imul(al5, bl7)) | 0;
28345 mid = (mid + Math.imul(al5, bh7)) | 0;
28346 mid = (mid + Math.imul(ah5, bl7)) | 0;
28347 hi = (hi + Math.imul(ah5, bh7)) | 0;
28348 lo = (lo + Math.imul(al4, bl8)) | 0;
28349 mid = (mid + Math.imul(al4, bh8)) | 0;
28350 mid = (mid + Math.imul(ah4, bl8)) | 0;
28351 hi = (hi + Math.imul(ah4, bh8)) | 0;
28352 lo = (lo + Math.imul(al3, bl9)) | 0;
28353 mid = (mid + Math.imul(al3, bh9)) | 0;
28354 mid = (mid + Math.imul(ah3, bl9)) | 0;
28355 hi = (hi + Math.imul(ah3, bh9)) | 0;
28356 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28357 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28358 w12 &= 0x3ffffff;
28359 /* k = 13 */
28360 lo = Math.imul(al9, bl4);
28361 mid = Math.imul(al9, bh4);
28362 mid = (mid + Math.imul(ah9, bl4)) | 0;
28363 hi = Math.imul(ah9, bh4);
28364 lo = (lo + Math.imul(al8, bl5)) | 0;
28365 mid = (mid + Math.imul(al8, bh5)) | 0;
28366 mid = (mid + Math.imul(ah8, bl5)) | 0;
28367 hi = (hi + Math.imul(ah8, bh5)) | 0;
28368 lo = (lo + Math.imul(al7, bl6)) | 0;
28369 mid = (mid + Math.imul(al7, bh6)) | 0;
28370 mid = (mid + Math.imul(ah7, bl6)) | 0;
28371 hi = (hi + Math.imul(ah7, bh6)) | 0;
28372 lo = (lo + Math.imul(al6, bl7)) | 0;
28373 mid = (mid + Math.imul(al6, bh7)) | 0;
28374 mid = (mid + Math.imul(ah6, bl7)) | 0;
28375 hi = (hi + Math.imul(ah6, bh7)) | 0;
28376 lo = (lo + Math.imul(al5, bl8)) | 0;
28377 mid = (mid + Math.imul(al5, bh8)) | 0;
28378 mid = (mid + Math.imul(ah5, bl8)) | 0;
28379 hi = (hi + Math.imul(ah5, bh8)) | 0;
28380 lo = (lo + Math.imul(al4, bl9)) | 0;
28381 mid = (mid + Math.imul(al4, bh9)) | 0;
28382 mid = (mid + Math.imul(ah4, bl9)) | 0;
28383 hi = (hi + Math.imul(ah4, bh9)) | 0;
28384 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28385 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28386 w13 &= 0x3ffffff;
28387 /* k = 14 */
28388 lo = Math.imul(al9, bl5);
28389 mid = Math.imul(al9, bh5);
28390 mid = (mid + Math.imul(ah9, bl5)) | 0;
28391 hi = Math.imul(ah9, bh5);
28392 lo = (lo + Math.imul(al8, bl6)) | 0;
28393 mid = (mid + Math.imul(al8, bh6)) | 0;
28394 mid = (mid + Math.imul(ah8, bl6)) | 0;
28395 hi = (hi + Math.imul(ah8, bh6)) | 0;
28396 lo = (lo + Math.imul(al7, bl7)) | 0;
28397 mid = (mid + Math.imul(al7, bh7)) | 0;
28398 mid = (mid + Math.imul(ah7, bl7)) | 0;
28399 hi = (hi + Math.imul(ah7, bh7)) | 0;
28400 lo = (lo + Math.imul(al6, bl8)) | 0;
28401 mid = (mid + Math.imul(al6, bh8)) | 0;
28402 mid = (mid + Math.imul(ah6, bl8)) | 0;
28403 hi = (hi + Math.imul(ah6, bh8)) | 0;
28404 lo = (lo + Math.imul(al5, bl9)) | 0;
28405 mid = (mid + Math.imul(al5, bh9)) | 0;
28406 mid = (mid + Math.imul(ah5, bl9)) | 0;
28407 hi = (hi + Math.imul(ah5, bh9)) | 0;
28408 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28409 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28410 w14 &= 0x3ffffff;
28411 /* k = 15 */
28412 lo = Math.imul(al9, bl6);
28413 mid = Math.imul(al9, bh6);
28414 mid = (mid + Math.imul(ah9, bl6)) | 0;
28415 hi = Math.imul(ah9, bh6);
28416 lo = (lo + Math.imul(al8, bl7)) | 0;
28417 mid = (mid + Math.imul(al8, bh7)) | 0;
28418 mid = (mid + Math.imul(ah8, bl7)) | 0;
28419 hi = (hi + Math.imul(ah8, bh7)) | 0;
28420 lo = (lo + Math.imul(al7, bl8)) | 0;
28421 mid = (mid + Math.imul(al7, bh8)) | 0;
28422 mid = (mid + Math.imul(ah7, bl8)) | 0;
28423 hi = (hi + Math.imul(ah7, bh8)) | 0;
28424 lo = (lo + Math.imul(al6, bl9)) | 0;
28425 mid = (mid + Math.imul(al6, bh9)) | 0;
28426 mid = (mid + Math.imul(ah6, bl9)) | 0;
28427 hi = (hi + Math.imul(ah6, bh9)) | 0;
28428 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28429 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28430 w15 &= 0x3ffffff;
28431 /* k = 16 */
28432 lo = Math.imul(al9, bl7);
28433 mid = Math.imul(al9, bh7);
28434 mid = (mid + Math.imul(ah9, bl7)) | 0;
28435 hi = Math.imul(ah9, bh7);
28436 lo = (lo + Math.imul(al8, bl8)) | 0;
28437 mid = (mid + Math.imul(al8, bh8)) | 0;
28438 mid = (mid + Math.imul(ah8, bl8)) | 0;
28439 hi = (hi + Math.imul(ah8, bh8)) | 0;
28440 lo = (lo + Math.imul(al7, bl9)) | 0;
28441 mid = (mid + Math.imul(al7, bh9)) | 0;
28442 mid = (mid + Math.imul(ah7, bl9)) | 0;
28443 hi = (hi + Math.imul(ah7, bh9)) | 0;
28444 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28445 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28446 w16 &= 0x3ffffff;
28447 /* k = 17 */
28448 lo = Math.imul(al9, bl8);
28449 mid = Math.imul(al9, bh8);
28450 mid = (mid + Math.imul(ah9, bl8)) | 0;
28451 hi = Math.imul(ah9, bh8);
28452 lo = (lo + Math.imul(al8, bl9)) | 0;
28453 mid = (mid + Math.imul(al8, bh9)) | 0;
28454 mid = (mid + Math.imul(ah8, bl9)) | 0;
28455 hi = (hi + Math.imul(ah8, bh9)) | 0;
28456 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28457 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28458 w17 &= 0x3ffffff;
28459 /* k = 18 */
28460 lo = Math.imul(al9, bl9);
28461 mid = Math.imul(al9, bh9);
28462 mid = (mid + Math.imul(ah9, bl9)) | 0;
28463 hi = Math.imul(ah9, bh9);
28464 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28465 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28466 w18 &= 0x3ffffff;
28467 o[0] = w0;
28468 o[1] = w1;
28469 o[2] = w2;
28470 o[3] = w3;
28471 o[4] = w4;
28472 o[5] = w5;
28473 o[6] = w6;
28474 o[7] = w7;
28475 o[8] = w8;
28476 o[9] = w9;
28477 o[10] = w10;
28478 o[11] = w11;
28479 o[12] = w12;
28480 o[13] = w13;
28481 o[14] = w14;
28482 o[15] = w15;
28483 o[16] = w16;
28484 o[17] = w17;
28485 o[18] = w18;
28486 if (c !== 0) {
28487 o[19] = c;
28488 out.length++;
28489 }
28490 return out;
28491 };
28492
28493 // Polyfill comb
28494 if (!Math.imul) {
28495 comb10MulTo = smallMulTo;
28496 }
28497
28498 function bigMulTo (self, num, out) {
28499 out.negative = num.negative ^ self.negative;
28500 out.length = self.length + num.length;
28501
28502 var carry = 0;
28503 var hncarry = 0;
28504 for (var k = 0; k < out.length - 1; k++) {
28505 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28506 // note that ncarry could be >= 0x3ffffff
28507 var ncarry = hncarry;
28508 hncarry = 0;
28509 var rword = carry & 0x3ffffff;
28510 var maxJ = Math.min(k, num.length - 1);
28511 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28512 var i = k - j;
28513 var a = self.words[i] | 0;
28514 var b = num.words[j] | 0;
28515 var r = a * b;
28516
28517 var lo = r & 0x3ffffff;
28518 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28519 lo = (lo + rword) | 0;
28520 rword = lo & 0x3ffffff;
28521 ncarry = (ncarry + (lo >>> 26)) | 0;
28522
28523 hncarry += ncarry >>> 26;
28524 ncarry &= 0x3ffffff;
28525 }
28526 out.words[k] = rword;
28527 carry = ncarry;
28528 ncarry = hncarry;
28529 }
28530 if (carry !== 0) {
28531 out.words[k] = carry;
28532 } else {
28533 out.length--;
28534 }
28535
28536 return out.strip();
28537 }
28538
28539 function jumboMulTo (self, num, out) {
28540 var fftm = new FFTM();
28541 return fftm.mulp(self, num, out);
28542 }
28543
28544 BN.prototype.mulTo = function mulTo (num, out) {
28545 var res;
28546 var len = this.length + num.length;
28547 if (this.length === 10 && num.length === 10) {
28548 res = comb10MulTo(this, num, out);
28549 } else if (len < 63) {
28550 res = smallMulTo(this, num, out);
28551 } else if (len < 1024) {
28552 res = bigMulTo(this, num, out);
28553 } else {
28554 res = jumboMulTo(this, num, out);
28555 }
28556
28557 return res;
28558 };
28559
28560 // Cooley-Tukey algorithm for FFT
28561 // slightly revisited to rely on looping instead of recursion
28562
28563 function FFTM (x, y) {
28564 this.x = x;
28565 this.y = y;
28566 }
28567
28568 FFTM.prototype.makeRBT = function makeRBT (N) {
28569 var t = new Array(N);
28570 var l = BN.prototype._countBits(N) - 1;
28571 for (var i = 0; i < N; i++) {
28572 t[i] = this.revBin(i, l, N);
28573 }
28574
28575 return t;
28576 };
28577
28578 // Returns binary-reversed representation of `x`
28579 FFTM.prototype.revBin = function revBin (x, l, N) {
28580 if (x === 0 || x === N - 1) return x;
28581
28582 var rb = 0;
28583 for (var i = 0; i < l; i++) {
28584 rb |= (x & 1) << (l - i - 1);
28585 x >>= 1;
28586 }
28587
28588 return rb;
28589 };
28590
28591 // Performs "tweedling" phase, therefore 'emulating'
28592 // behaviour of the recursive algorithm
28593 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28594 for (var i = 0; i < N; i++) {
28595 rtws[i] = rws[rbt[i]];
28596 itws[i] = iws[rbt[i]];
28597 }
28598 };
28599
28600 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28601 this.permute(rbt, rws, iws, rtws, itws, N);
28602
28603 for (var s = 1; s < N; s <<= 1) {
28604 var l = s << 1;
28605
28606 var rtwdf = Math.cos(2 * Math.PI / l);
28607 var itwdf = Math.sin(2 * Math.PI / l);
28608
28609 for (var p = 0; p < N; p += l) {
28610 var rtwdf_ = rtwdf;
28611 var itwdf_ = itwdf;
28612
28613 for (var j = 0; j < s; j++) {
28614 var re = rtws[p + j];
28615 var ie = itws[p + j];
28616
28617 var ro = rtws[p + j + s];
28618 var io = itws[p + j + s];
28619
28620 var rx = rtwdf_ * ro - itwdf_ * io;
28621
28622 io = rtwdf_ * io + itwdf_ * ro;
28623 ro = rx;
28624
28625 rtws[p + j] = re + ro;
28626 itws[p + j] = ie + io;
28627
28628 rtws[p + j + s] = re - ro;
28629 itws[p + j + s] = ie - io;
28630
28631 /* jshint maxdepth : false */
28632 if (j !== l) {
28633 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28634
28635 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28636 rtwdf_ = rx;
28637 }
28638 }
28639 }
28640 }
28641 };
28642
28643 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28644 var N = Math.max(m, n) | 1;
28645 var odd = N & 1;
28646 var i = 0;
28647 for (N = N / 2 | 0; N; N = N >>> 1) {
28648 i++;
28649 }
28650
28651 return 1 << i + 1 + odd;
28652 };
28653
28654 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28655 if (N <= 1) return;
28656
28657 for (var i = 0; i < N / 2; i++) {
28658 var t = rws[i];
28659
28660 rws[i] = rws[N - i - 1];
28661 rws[N - i - 1] = t;
28662
28663 t = iws[i];
28664
28665 iws[i] = -iws[N - i - 1];
28666 iws[N - i - 1] = -t;
28667 }
28668 };
28669
28670 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28671 var carry = 0;
28672 for (var i = 0; i < N / 2; i++) {
28673 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28674 Math.round(ws[2 * i] / N) +
28675 carry;
28676
28677 ws[i] = w & 0x3ffffff;
28678
28679 if (w < 0x4000000) {
28680 carry = 0;
28681 } else {
28682 carry = w / 0x4000000 | 0;
28683 }
28684 }
28685
28686 return ws;
28687 };
28688
28689 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28690 var carry = 0;
28691 for (var i = 0; i < len; i++) {
28692 carry = carry + (ws[i] | 0);
28693
28694 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28695 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28696 }
28697
28698 // Pad with zeroes
28699 for (i = 2 * len; i < N; ++i) {
28700 rws[i] = 0;
28701 }
28702
28703 assert(carry === 0);
28704 assert((carry & ~0x1fff) === 0);
28705 };
28706
28707 FFTM.prototype.stub = function stub (N) {
28708 var ph = new Array(N);
28709 for (var i = 0; i < N; i++) {
28710 ph[i] = 0;
28711 }
28712
28713 return ph;
28714 };
28715
28716 FFTM.prototype.mulp = function mulp (x, y, out) {
28717 var N = 2 * this.guessLen13b(x.length, y.length);
28718
28719 var rbt = this.makeRBT(N);
28720
28721 var _ = this.stub(N);
28722
28723 var rws = new Array(N);
28724 var rwst = new Array(N);
28725 var iwst = new Array(N);
28726
28727 var nrws = new Array(N);
28728 var nrwst = new Array(N);
28729 var niwst = new Array(N);
28730
28731 var rmws = out.words;
28732 rmws.length = N;
28733
28734 this.convert13b(x.words, x.length, rws, N);
28735 this.convert13b(y.words, y.length, nrws, N);
28736
28737 this.transform(rws, _, rwst, iwst, N, rbt);
28738 this.transform(nrws, _, nrwst, niwst, N, rbt);
28739
28740 for (var i = 0; i < N; i++) {
28741 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28742 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28743 rwst[i] = rx;
28744 }
28745
28746 this.conjugate(rwst, iwst, N);
28747 this.transform(rwst, iwst, rmws, _, N, rbt);
28748 this.conjugate(rmws, _, N);
28749 this.normalize13b(rmws, N);
28750
28751 out.negative = x.negative ^ y.negative;
28752 out.length = x.length + y.length;
28753 return out.strip();
28754 };
28755
28756 // Multiply `this` by `num`
28757 BN.prototype.mul = function mul (num) {
28758 var out = new BN(null);
28759 out.words = new Array(this.length + num.length);
28760 return this.mulTo(num, out);
28761 };
28762
28763 // Multiply employing FFT
28764 BN.prototype.mulf = function mulf (num) {
28765 var out = new BN(null);
28766 out.words = new Array(this.length + num.length);
28767 return jumboMulTo(this, num, out);
28768 };
28769
28770 // In-place Multiplication
28771 BN.prototype.imul = function imul (num) {
28772 return this.clone().mulTo(num, this);
28773 };
28774
28775 BN.prototype.imuln = function imuln (num) {
28776 assert(typeof num === 'number');
28777 assert(num < 0x4000000);
28778
28779 // Carry
28780 var carry = 0;
28781 for (var i = 0; i < this.length; i++) {
28782 var w = (this.words[i] | 0) * num;
28783 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28784 carry >>= 26;
28785 carry += (w / 0x4000000) | 0;
28786 // NOTE: lo is 27bit maximum
28787 carry += lo >>> 26;
28788 this.words[i] = lo & 0x3ffffff;
28789 }
28790
28791 if (carry !== 0) {
28792 this.words[i] = carry;
28793 this.length++;
28794 }
28795
28796 return this;
28797 };
28798
28799 BN.prototype.muln = function muln (num) {
28800 return this.clone().imuln(num);
28801 };
28802
28803 // `this` * `this`
28804 BN.prototype.sqr = function sqr () {
28805 return this.mul(this);
28806 };
28807
28808 // `this` * `this` in-place
28809 BN.prototype.isqr = function isqr () {
28810 return this.imul(this.clone());
28811 };
28812
28813 // Math.pow(`this`, `num`)
28814 BN.prototype.pow = function pow (num) {
28815 var w = toBitArray(num);
28816 if (w.length === 0) return new BN(1);
28817
28818 // Skip leading zeroes
28819 var res = this;
28820 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28821 if (w[i] !== 0) break;
28822 }
28823
28824 if (++i < w.length) {
28825 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28826 if (w[i] === 0) continue;
28827
28828 res = res.mul(q);
28829 }
28830 }
28831
28832 return res;
28833 };
28834
28835 // Shift-left in-place
28836 BN.prototype.iushln = function iushln (bits) {
28837 assert(typeof bits === 'number' && bits >= 0);
28838 var r = bits % 26;
28839 var s = (bits - r) / 26;
28840 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28841 var i;
28842
28843 if (r !== 0) {
28844 var carry = 0;
28845
28846 for (i = 0; i < this.length; i++) {
28847 var newCarry = this.words[i] & carryMask;
28848 var c = ((this.words[i] | 0) - newCarry) << r;
28849 this.words[i] = c | carry;
28850 carry = newCarry >>> (26 - r);
28851 }
28852
28853 if (carry) {
28854 this.words[i] = carry;
28855 this.length++;
28856 }
28857 }
28858
28859 if (s !== 0) {
28860 for (i = this.length - 1; i >= 0; i--) {
28861 this.words[i + s] = this.words[i];
28862 }
28863
28864 for (i = 0; i < s; i++) {
28865 this.words[i] = 0;
28866 }
28867
28868 this.length += s;
28869 }
28870
28871 return this.strip();
28872 };
28873
28874 BN.prototype.ishln = function ishln (bits) {
28875 // TODO(indutny): implement me
28876 assert(this.negative === 0);
28877 return this.iushln(bits);
28878 };
28879
28880 // Shift-right in-place
28881 // NOTE: `hint` is a lowest bit before trailing zeroes
28882 // NOTE: if `extended` is present - it will be filled with destroyed bits
28883 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28884 assert(typeof bits === 'number' && bits >= 0);
28885 var h;
28886 if (hint) {
28887 h = (hint - (hint % 26)) / 26;
28888 } else {
28889 h = 0;
28890 }
28891
28892 var r = bits % 26;
28893 var s = Math.min((bits - r) / 26, this.length);
28894 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28895 var maskedWords = extended;
28896
28897 h -= s;
28898 h = Math.max(0, h);
28899
28900 // Extended mode, copy masked part
28901 if (maskedWords) {
28902 for (var i = 0; i < s; i++) {
28903 maskedWords.words[i] = this.words[i];
28904 }
28905 maskedWords.length = s;
28906 }
28907
28908 if (s === 0) {
28909 // No-op, we should not move anything at all
28910 } else if (this.length > s) {
28911 this.length -= s;
28912 for (i = 0; i < this.length; i++) {
28913 this.words[i] = this.words[i + s];
28914 }
28915 } else {
28916 this.words[0] = 0;
28917 this.length = 1;
28918 }
28919
28920 var carry = 0;
28921 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28922 var word = this.words[i] | 0;
28923 this.words[i] = (carry << (26 - r)) | (word >>> r);
28924 carry = word & mask;
28925 }
28926
28927 // Push carried bits as a mask
28928 if (maskedWords && carry !== 0) {
28929 maskedWords.words[maskedWords.length++] = carry;
28930 }
28931
28932 if (this.length === 0) {
28933 this.words[0] = 0;
28934 this.length = 1;
28935 }
28936
28937 return this.strip();
28938 };
28939
28940 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28941 // TODO(indutny): implement me
28942 assert(this.negative === 0);
28943 return this.iushrn(bits, hint, extended);
28944 };
28945
28946 // Shift-left
28947 BN.prototype.shln = function shln (bits) {
28948 return this.clone().ishln(bits);
28949 };
28950
28951 BN.prototype.ushln = function ushln (bits) {
28952 return this.clone().iushln(bits);
28953 };
28954
28955 // Shift-right
28956 BN.prototype.shrn = function shrn (bits) {
28957 return this.clone().ishrn(bits);
28958 };
28959
28960 BN.prototype.ushrn = function ushrn (bits) {
28961 return this.clone().iushrn(bits);
28962 };
28963
28964 // Test if n bit is set
28965 BN.prototype.testn = function testn (bit) {
28966 assert(typeof bit === 'number' && bit >= 0);
28967 var r = bit % 26;
28968 var s = (bit - r) / 26;
28969 var q = 1 << r;
28970
28971 // Fast case: bit is much higher than all existing words
28972 if (this.length <= s) return false;
28973
28974 // Check bit and return
28975 var w = this.words[s];
28976
28977 return !!(w & q);
28978 };
28979
28980 // Return only lowers bits of number (in-place)
28981 BN.prototype.imaskn = function imaskn (bits) {
28982 assert(typeof bits === 'number' && bits >= 0);
28983 var r = bits % 26;
28984 var s = (bits - r) / 26;
28985
28986 assert(this.negative === 0, 'imaskn works only with positive numbers');
28987
28988 if (this.length <= s) {
28989 return this;
28990 }
28991
28992 if (r !== 0) {
28993 s++;
28994 }
28995 this.length = Math.min(s, this.length);
28996
28997 if (r !== 0) {
28998 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28999 this.words[this.length - 1] &= mask;
29000 }
29001
29002 return this.strip();
29003 };
29004
29005 // Return only lowers bits of number
29006 BN.prototype.maskn = function maskn (bits) {
29007 return this.clone().imaskn(bits);
29008 };
29009
29010 // Add plain number `num` to `this`
29011 BN.prototype.iaddn = function iaddn (num) {
29012 assert(typeof num === 'number');
29013 assert(num < 0x4000000);
29014 if (num < 0) return this.isubn(-num);
29015
29016 // Possible sign change
29017 if (this.negative !== 0) {
29018 if (this.length === 1 && (this.words[0] | 0) < num) {
29019 this.words[0] = num - (this.words[0] | 0);
29020 this.negative = 0;
29021 return this;
29022 }
29023
29024 this.negative = 0;
29025 this.isubn(num);
29026 this.negative = 1;
29027 return this;
29028 }
29029
29030 // Add without checks
29031 return this._iaddn(num);
29032 };
29033
29034 BN.prototype._iaddn = function _iaddn (num) {
29035 this.words[0] += num;
29036
29037 // Carry
29038 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29039 this.words[i] -= 0x4000000;
29040 if (i === this.length - 1) {
29041 this.words[i + 1] = 1;
29042 } else {
29043 this.words[i + 1]++;
29044 }
29045 }
29046 this.length = Math.max(this.length, i + 1);
29047
29048 return this;
29049 };
29050
29051 // Subtract plain number `num` from `this`
29052 BN.prototype.isubn = function isubn (num) {
29053 assert(typeof num === 'number');
29054 assert(num < 0x4000000);
29055 if (num < 0) return this.iaddn(-num);
29056
29057 if (this.negative !== 0) {
29058 this.negative = 0;
29059 this.iaddn(num);
29060 this.negative = 1;
29061 return this;
29062 }
29063
29064 this.words[0] -= num;
29065
29066 if (this.length === 1 && this.words[0] < 0) {
29067 this.words[0] = -this.words[0];
29068 this.negative = 1;
29069 } else {
29070 // Carry
29071 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29072 this.words[i] += 0x4000000;
29073 this.words[i + 1] -= 1;
29074 }
29075 }
29076
29077 return this.strip();
29078 };
29079
29080 BN.prototype.addn = function addn (num) {
29081 return this.clone().iaddn(num);
29082 };
29083
29084 BN.prototype.subn = function subn (num) {
29085 return this.clone().isubn(num);
29086 };
29087
29088 BN.prototype.iabs = function iabs () {
29089 this.negative = 0;
29090
29091 return this;
29092 };
29093
29094 BN.prototype.abs = function abs () {
29095 return this.clone().iabs();
29096 };
29097
29098 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29099 var len = num.length + shift;
29100 var i;
29101
29102 this._expand(len);
29103
29104 var w;
29105 var carry = 0;
29106 for (i = 0; i < num.length; i++) {
29107 w = (this.words[i + shift] | 0) + carry;
29108 var right = (num.words[i] | 0) * mul;
29109 w -= right & 0x3ffffff;
29110 carry = (w >> 26) - ((right / 0x4000000) | 0);
29111 this.words[i + shift] = w & 0x3ffffff;
29112 }
29113 for (; i < this.length - shift; i++) {
29114 w = (this.words[i + shift] | 0) + carry;
29115 carry = w >> 26;
29116 this.words[i + shift] = w & 0x3ffffff;
29117 }
29118
29119 if (carry === 0) return this.strip();
29120
29121 // Subtraction overflow
29122 assert(carry === -1);
29123 carry = 0;
29124 for (i = 0; i < this.length; i++) {
29125 w = -(this.words[i] | 0) + carry;
29126 carry = w >> 26;
29127 this.words[i] = w & 0x3ffffff;
29128 }
29129 this.negative = 1;
29130
29131 return this.strip();
29132 };
29133
29134 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29135 var shift = this.length - num.length;
29136
29137 var a = this.clone();
29138 var b = num;
29139
29140 // Normalize
29141 var bhi = b.words[b.length - 1] | 0;
29142 var bhiBits = this._countBits(bhi);
29143 shift = 26 - bhiBits;
29144 if (shift !== 0) {
29145 b = b.ushln(shift);
29146 a.iushln(shift);
29147 bhi = b.words[b.length - 1] | 0;
29148 }
29149
29150 // Initialize quotient
29151 var m = a.length - b.length;
29152 var q;
29153
29154 if (mode !== 'mod') {
29155 q = new BN(null);
29156 q.length = m + 1;
29157 q.words = new Array(q.length);
29158 for (var i = 0; i < q.length; i++) {
29159 q.words[i] = 0;
29160 }
29161 }
29162
29163 var diff = a.clone()._ishlnsubmul(b, 1, m);
29164 if (diff.negative === 0) {
29165 a = diff;
29166 if (q) {
29167 q.words[m] = 1;
29168 }
29169 }
29170
29171 for (var j = m - 1; j >= 0; j--) {
29172 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29173 (a.words[b.length + j - 1] | 0);
29174
29175 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29176 // (0x7ffffff)
29177 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
29178
29179 a._ishlnsubmul(b, qj, j);
29180 while (a.negative !== 0) {
29181 qj--;
29182 a.negative = 0;
29183 a._ishlnsubmul(b, 1, j);
29184 if (!a.isZero()) {
29185 a.negative ^= 1;
29186 }
29187 }
29188 if (q) {
29189 q.words[j] = qj;
29190 }
29191 }
29192 if (q) {
29193 q.strip();
29194 }
29195 a.strip();
29196
29197 // Denormalize
29198 if (mode !== 'div' && shift !== 0) {
29199 a.iushrn(shift);
29200 }
29201
29202 return {
29203 div: q || null,
29204 mod: a
29205 };
29206 };
29207
29208 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29209 // to `div` to request div only, or be absent to
29210 // request both div & mod
29211 // 2) `positive` is true if unsigned mod is requested
29212 BN.prototype.divmod = function divmod (num, mode, positive) {
29213 assert(!num.isZero());
29214
29215 if (this.isZero()) {
29216 return {
29217 div: new BN(0),
29218 mod: new BN(0)
29219 };
29220 }
29221
29222 var div, mod, res;
29223 if (this.negative !== 0 && num.negative === 0) {
29224 res = this.neg().divmod(num, mode);
29225
29226 if (mode !== 'mod') {
29227 div = res.div.neg();
29228 }
29229
29230 if (mode !== 'div') {
29231 mod = res.mod.neg();
29232 if (positive && mod.negative !== 0) {
29233 mod.iadd(num);
29234 }
29235 }
29236
29237 return {
29238 div: div,
29239 mod: mod
29240 };
29241 }
29242
29243 if (this.negative === 0 && num.negative !== 0) {
29244 res = this.divmod(num.neg(), mode);
29245
29246 if (mode !== 'mod') {
29247 div = res.div.neg();
29248 }
29249
29250 return {
29251 div: div,
29252 mod: res.mod
29253 };
29254 }
29255
29256 if ((this.negative & num.negative) !== 0) {
29257 res = this.neg().divmod(num.neg(), mode);
29258
29259 if (mode !== 'div') {
29260 mod = res.mod.neg();
29261 if (positive && mod.negative !== 0) {
29262 mod.isub(num);
29263 }
29264 }
29265
29266 return {
29267 div: res.div,
29268 mod: mod
29269 };
29270 }
29271
29272 // Both numbers are positive at this point
29273
29274 // Strip both numbers to approximate shift value
29275 if (num.length > this.length || this.cmp(num) < 0) {
29276 return {
29277 div: new BN(0),
29278 mod: this
29279 };
29280 }
29281
29282 // Very short reduction
29283 if (num.length === 1) {
29284 if (mode === 'div') {
29285 return {
29286 div: this.divn(num.words[0]),
29287 mod: null
29288 };
29289 }
29290
29291 if (mode === 'mod') {
29292 return {
29293 div: null,
29294 mod: new BN(this.modn(num.words[0]))
29295 };
29296 }
29297
29298 return {
29299 div: this.divn(num.words[0]),
29300 mod: new BN(this.modn(num.words[0]))
29301 };
29302 }
29303
29304 return this._wordDiv(num, mode);
29305 };
29306
29307 // Find `this` / `num`
29308 BN.prototype.div = function div (num) {
29309 return this.divmod(num, 'div', false).div;
29310 };
29311
29312 // Find `this` % `num`
29313 BN.prototype.mod = function mod (num) {
29314 return this.divmod(num, 'mod', false).mod;
29315 };
29316
29317 BN.prototype.umod = function umod (num) {
29318 return this.divmod(num, 'mod', true).mod;
29319 };
29320
29321 // Find Round(`this` / `num`)
29322 BN.prototype.divRound = function divRound (num) {
29323 var dm = this.divmod(num);
29324
29325 // Fast case - exact division
29326 if (dm.mod.isZero()) return dm.div;
29327
29328 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
29329
29330 var half = num.ushrn(1);
29331 var r2 = num.andln(1);
29332 var cmp = mod.cmp(half);
29333
29334 // Round down
29335 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
29336
29337 // Round up
29338 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29339 };
29340
29341 BN.prototype.modn = function modn (num) {
29342 assert(num <= 0x3ffffff);
29343 var p = (1 << 26) % num;
29344
29345 var acc = 0;
29346 for (var i = this.length - 1; i >= 0; i--) {
29347 acc = (p * acc + (this.words[i] | 0)) % num;
29348 }
29349
29350 return acc;
29351 };
29352
29353 // In-place division by number
29354 BN.prototype.idivn = function idivn (num) {
29355 assert(num <= 0x3ffffff);
29356
29357 var carry = 0;
29358 for (var i = this.length - 1; i >= 0; i--) {
29359 var w = (this.words[i] | 0) + carry * 0x4000000;
29360 this.words[i] = (w / num) | 0;
29361 carry = w % num;
29362 }
29363
29364 return this.strip();
29365 };
29366
29367 BN.prototype.divn = function divn (num) {
29368 return this.clone().idivn(num);
29369 };
29370
29371 BN.prototype.egcd = function egcd (p) {
29372 assert(p.negative === 0);
29373 assert(!p.isZero());
29374
29375 var x = this;
29376 var y = p.clone();
29377
29378 if (x.negative !== 0) {
29379 x = x.umod(p);
29380 } else {
29381 x = x.clone();
29382 }
29383
29384 // A * x + B * y = x
29385 var A = new BN(1);
29386 var B = new BN(0);
29387
29388 // C * x + D * y = y
29389 var C = new BN(0);
29390 var D = new BN(1);
29391
29392 var g = 0;
29393
29394 while (x.isEven() && y.isEven()) {
29395 x.iushrn(1);
29396 y.iushrn(1);
29397 ++g;
29398 }
29399
29400 var yp = y.clone();
29401 var xp = x.clone();
29402
29403 while (!x.isZero()) {
29404 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29405 if (i > 0) {
29406 x.iushrn(i);
29407 while (i-- > 0) {
29408 if (A.isOdd() || B.isOdd()) {
29409 A.iadd(yp);
29410 B.isub(xp);
29411 }
29412
29413 A.iushrn(1);
29414 B.iushrn(1);
29415 }
29416 }
29417
29418 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29419 if (j > 0) {
29420 y.iushrn(j);
29421 while (j-- > 0) {
29422 if (C.isOdd() || D.isOdd()) {
29423 C.iadd(yp);
29424 D.isub(xp);
29425 }
29426
29427 C.iushrn(1);
29428 D.iushrn(1);
29429 }
29430 }
29431
29432 if (x.cmp(y) >= 0) {
29433 x.isub(y);
29434 A.isub(C);
29435 B.isub(D);
29436 } else {
29437 y.isub(x);
29438 C.isub(A);
29439 D.isub(B);
29440 }
29441 }
29442
29443 return {
29444 a: C,
29445 b: D,
29446 gcd: y.iushln(g)
29447 };
29448 };
29449
29450 // This is reduced incarnation of the binary EEA
29451 // above, designated to invert members of the
29452 // _prime_ fields F(p) at a maximal speed
29453 BN.prototype._invmp = function _invmp (p) {
29454 assert(p.negative === 0);
29455 assert(!p.isZero());
29456
29457 var a = this;
29458 var b = p.clone();
29459
29460 if (a.negative !== 0) {
29461 a = a.umod(p);
29462 } else {
29463 a = a.clone();
29464 }
29465
29466 var x1 = new BN(1);
29467 var x2 = new BN(0);
29468
29469 var delta = b.clone();
29470
29471 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29472 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29473 if (i > 0) {
29474 a.iushrn(i);
29475 while (i-- > 0) {
29476 if (x1.isOdd()) {
29477 x1.iadd(delta);
29478 }
29479
29480 x1.iushrn(1);
29481 }
29482 }
29483
29484 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29485 if (j > 0) {
29486 b.iushrn(j);
29487 while (j-- > 0) {
29488 if (x2.isOdd()) {
29489 x2.iadd(delta);
29490 }
29491
29492 x2.iushrn(1);
29493 }
29494 }
29495
29496 if (a.cmp(b) >= 0) {
29497 a.isub(b);
29498 x1.isub(x2);
29499 } else {
29500 b.isub(a);
29501 x2.isub(x1);
29502 }
29503 }
29504
29505 var res;
29506 if (a.cmpn(1) === 0) {
29507 res = x1;
29508 } else {
29509 res = x2;
29510 }
29511
29512 if (res.cmpn(0) < 0) {
29513 res.iadd(p);
29514 }
29515
29516 return res;
29517 };
29518
29519 BN.prototype.gcd = function gcd (num) {
29520 if (this.isZero()) return num.abs();
29521 if (num.isZero()) return this.abs();
29522
29523 var a = this.clone();
29524 var b = num.clone();
29525 a.negative = 0;
29526 b.negative = 0;
29527
29528 // Remove common factor of two
29529 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29530 a.iushrn(1);
29531 b.iushrn(1);
29532 }
29533
29534 do {
29535 while (a.isEven()) {
29536 a.iushrn(1);
29537 }
29538 while (b.isEven()) {
29539 b.iushrn(1);
29540 }
29541
29542 var r = a.cmp(b);
29543 if (r < 0) {
29544 // Swap `a` and `b` to make `a` always bigger than `b`
29545 var t = a;
29546 a = b;
29547 b = t;
29548 } else if (r === 0 || b.cmpn(1) === 0) {
29549 break;
29550 }
29551
29552 a.isub(b);
29553 } while (true);
29554
29555 return b.iushln(shift);
29556 };
29557
29558 // Invert number in the field F(num)
29559 BN.prototype.invm = function invm (num) {
29560 return this.egcd(num).a.umod(num);
29561 };
29562
29563 BN.prototype.isEven = function isEven () {
29564 return (this.words[0] & 1) === 0;
29565 };
29566
29567 BN.prototype.isOdd = function isOdd () {
29568 return (this.words[0] & 1) === 1;
29569 };
29570
29571 // And first word and num
29572 BN.prototype.andln = function andln (num) {
29573 return this.words[0] & num;
29574 };
29575
29576 // Increment at the bit position in-line
29577 BN.prototype.bincn = function bincn (bit) {
29578 assert(typeof bit === 'number');
29579 var r = bit % 26;
29580 var s = (bit - r) / 26;
29581 var q = 1 << r;
29582
29583 // Fast case: bit is much higher than all existing words
29584 if (this.length <= s) {
29585 this._expand(s + 1);
29586 this.words[s] |= q;
29587 return this;
29588 }
29589
29590 // Add bit and propagate, if needed
29591 var carry = q;
29592 for (var i = s; carry !== 0 && i < this.length; i++) {
29593 var w = this.words[i] | 0;
29594 w += carry;
29595 carry = w >>> 26;
29596 w &= 0x3ffffff;
29597 this.words[i] = w;
29598 }
29599 if (carry !== 0) {
29600 this.words[i] = carry;
29601 this.length++;
29602 }
29603 return this;
29604 };
29605
29606 BN.prototype.isZero = function isZero () {
29607 return this.length === 1 && this.words[0] === 0;
29608 };
29609
29610 BN.prototype.cmpn = function cmpn (num) {
29611 var negative = num < 0;
29612
29613 if (this.negative !== 0 && !negative) return -1;
29614 if (this.negative === 0 && negative) return 1;
29615
29616 this.strip();
29617
29618 var res;
29619 if (this.length > 1) {
29620 res = 1;
29621 } else {
29622 if (negative) {
29623 num = -num;
29624 }
29625
29626 assert(num <= 0x3ffffff, 'Number is too big');
29627
29628 var w = this.words[0] | 0;
29629 res = w === num ? 0 : w < num ? -1 : 1;
29630 }
29631 if (this.negative !== 0) return -res | 0;
29632 return res;
29633 };
29634
29635 // Compare two numbers and return:
29636 // 1 - if `this` > `num`
29637 // 0 - if `this` == `num`
29638 // -1 - if `this` < `num`
29639 BN.prototype.cmp = function cmp (num) {
29640 if (this.negative !== 0 && num.negative === 0) return -1;
29641 if (this.negative === 0 && num.negative !== 0) return 1;
29642
29643 var res = this.ucmp(num);
29644 if (this.negative !== 0) return -res | 0;
29645 return res;
29646 };
29647
29648 // Unsigned comparison
29649 BN.prototype.ucmp = function ucmp (num) {
29650 // At this point both numbers have the same sign
29651 if (this.length > num.length) return 1;
29652 if (this.length < num.length) return -1;
29653
29654 var res = 0;
29655 for (var i = this.length - 1; i >= 0; i--) {
29656 var a = this.words[i] | 0;
29657 var b = num.words[i] | 0;
29658
29659 if (a === b) continue;
29660 if (a < b) {
29661 res = -1;
29662 } else if (a > b) {
29663 res = 1;
29664 }
29665 break;
29666 }
29667 return res;
29668 };
29669
29670 BN.prototype.gtn = function gtn (num) {
29671 return this.cmpn(num) === 1;
29672 };
29673
29674 BN.prototype.gt = function gt (num) {
29675 return this.cmp(num) === 1;
29676 };
29677
29678 BN.prototype.gten = function gten (num) {
29679 return this.cmpn(num) >= 0;
29680 };
29681
29682 BN.prototype.gte = function gte (num) {
29683 return this.cmp(num) >= 0;
29684 };
29685
29686 BN.prototype.ltn = function ltn (num) {
29687 return this.cmpn(num) === -1;
29688 };
29689
29690 BN.prototype.lt = function lt (num) {
29691 return this.cmp(num) === -1;
29692 };
29693
29694 BN.prototype.lten = function lten (num) {
29695 return this.cmpn(num) <= 0;
29696 };
29697
29698 BN.prototype.lte = function lte (num) {
29699 return this.cmp(num) <= 0;
29700 };
29701
29702 BN.prototype.eqn = function eqn (num) {
29703 return this.cmpn(num) === 0;
29704 };
29705
29706 BN.prototype.eq = function eq (num) {
29707 return this.cmp(num) === 0;
29708 };
29709
29710 //
29711 // A reduce context, could be using montgomery or something better, depending
29712 // on the `m` itself.
29713 //
29714 BN.red = function red (num) {
29715 return new Red(num);
29716 };
29717
29718 BN.prototype.toRed = function toRed (ctx) {
29719 assert(!this.red, 'Already a number in reduction context');
29720 assert(this.negative === 0, 'red works only with positives');
29721 return ctx.convertTo(this)._forceRed(ctx);
29722 };
29723
29724 BN.prototype.fromRed = function fromRed () {
29725 assert(this.red, 'fromRed works only with numbers in reduction context');
29726 return this.red.convertFrom(this);
29727 };
29728
29729 BN.prototype._forceRed = function _forceRed (ctx) {
29730 this.red = ctx;
29731 return this;
29732 };
29733
29734 BN.prototype.forceRed = function forceRed (ctx) {
29735 assert(!this.red, 'Already a number in reduction context');
29736 return this._forceRed(ctx);
29737 };
29738
29739 BN.prototype.redAdd = function redAdd (num) {
29740 assert(this.red, 'redAdd works only with red numbers');
29741 return this.red.add(this, num);
29742 };
29743
29744 BN.prototype.redIAdd = function redIAdd (num) {
29745 assert(this.red, 'redIAdd works only with red numbers');
29746 return this.red.iadd(this, num);
29747 };
29748
29749 BN.prototype.redSub = function redSub (num) {
29750 assert(this.red, 'redSub works only with red numbers');
29751 return this.red.sub(this, num);
29752 };
29753
29754 BN.prototype.redISub = function redISub (num) {
29755 assert(this.red, 'redISub works only with red numbers');
29756 return this.red.isub(this, num);
29757 };
29758
29759 BN.prototype.redShl = function redShl (num) {
29760 assert(this.red, 'redShl works only with red numbers');
29761 return this.red.shl(this, num);
29762 };
29763
29764 BN.prototype.redMul = function redMul (num) {
29765 assert(this.red, 'redMul works only with red numbers');
29766 this.red._verify2(this, num);
29767 return this.red.mul(this, num);
29768 };
29769
29770 BN.prototype.redIMul = function redIMul (num) {
29771 assert(this.red, 'redMul works only with red numbers');
29772 this.red._verify2(this, num);
29773 return this.red.imul(this, num);
29774 };
29775
29776 BN.prototype.redSqr = function redSqr () {
29777 assert(this.red, 'redSqr works only with red numbers');
29778 this.red._verify1(this);
29779 return this.red.sqr(this);
29780 };
29781
29782 BN.prototype.redISqr = function redISqr () {
29783 assert(this.red, 'redISqr works only with red numbers');
29784 this.red._verify1(this);
29785 return this.red.isqr(this);
29786 };
29787
29788 // Square root over p
29789 BN.prototype.redSqrt = function redSqrt () {
29790 assert(this.red, 'redSqrt works only with red numbers');
29791 this.red._verify1(this);
29792 return this.red.sqrt(this);
29793 };
29794
29795 BN.prototype.redInvm = function redInvm () {
29796 assert(this.red, 'redInvm works only with red numbers');
29797 this.red._verify1(this);
29798 return this.red.invm(this);
29799 };
29800
29801 // Return negative clone of `this` % `red modulo`
29802 BN.prototype.redNeg = function redNeg () {
29803 assert(this.red, 'redNeg works only with red numbers');
29804 this.red._verify1(this);
29805 return this.red.neg(this);
29806 };
29807
29808 BN.prototype.redPow = function redPow (num) {
29809 assert(this.red && !num.red, 'redPow(normalNum)');
29810 this.red._verify1(this);
29811 return this.red.pow(this, num);
29812 };
29813
29814 // Prime numbers with efficient reduction
29815 var primes = {
29816 k256: null,
29817 p224: null,
29818 p192: null,
29819 p25519: null
29820 };
29821
29822 // Pseudo-Mersenne prime
29823 function MPrime (name, p) {
29824 // P = 2 ^ N - K
29825 this.name = name;
29826 this.p = new BN(p, 16);
29827 this.n = this.p.bitLength();
29828 this.k = new BN(1).iushln(this.n).isub(this.p);
29829
29830 this.tmp = this._tmp();
29831 }
29832
29833 MPrime.prototype._tmp = function _tmp () {
29834 var tmp = new BN(null);
29835 tmp.words = new Array(Math.ceil(this.n / 13));
29836 return tmp;
29837 };
29838
29839 MPrime.prototype.ireduce = function ireduce (num) {
29840 // Assumes that `num` is less than `P^2`
29841 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29842 var r = num;
29843 var rlen;
29844
29845 do {
29846 this.split(r, this.tmp);
29847 r = this.imulK(r);
29848 r = r.iadd(this.tmp);
29849 rlen = r.bitLength();
29850 } while (rlen > this.n);
29851
29852 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29853 if (cmp === 0) {
29854 r.words[0] = 0;
29855 r.length = 1;
29856 } else if (cmp > 0) {
29857 r.isub(this.p);
29858 } else {
29859 r.strip();
29860 }
29861
29862 return r;
29863 };
29864
29865 MPrime.prototype.split = function split (input, out) {
29866 input.iushrn(this.n, 0, out);
29867 };
29868
29869 MPrime.prototype.imulK = function imulK (num) {
29870 return num.imul(this.k);
29871 };
29872
29873 function K256 () {
29874 MPrime.call(
29875 this,
29876 'k256',
29877 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29878 }
29879 inherits(K256, MPrime);
29880
29881 K256.prototype.split = function split (input, output) {
29882 // 256 = 9 * 26 + 22
29883 var mask = 0x3fffff;
29884
29885 var outLen = Math.min(input.length, 9);
29886 for (var i = 0; i < outLen; i++) {
29887 output.words[i] = input.words[i];
29888 }
29889 output.length = outLen;
29890
29891 if (input.length <= 9) {
29892 input.words[0] = 0;
29893 input.length = 1;
29894 return;
29895 }
29896
29897 // Shift by 9 limbs
29898 var prev = input.words[9];
29899 output.words[output.length++] = prev & mask;
29900
29901 for (i = 10; i < input.length; i++) {
29902 var next = input.words[i] | 0;
29903 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29904 prev = next;
29905 }
29906 prev >>>= 22;
29907 input.words[i - 10] = prev;
29908 if (prev === 0 && input.length > 10) {
29909 input.length -= 10;
29910 } else {
29911 input.length -= 9;
29912 }
29913 };
29914
29915 K256.prototype.imulK = function imulK (num) {
29916 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29917 num.words[num.length] = 0;
29918 num.words[num.length + 1] = 0;
29919 num.length += 2;
29920
29921 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29922 var lo = 0;
29923 for (var i = 0; i < num.length; i++) {
29924 var w = num.words[i] | 0;
29925 lo += w * 0x3d1;
29926 num.words[i] = lo & 0x3ffffff;
29927 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29928 }
29929
29930 // Fast length reduction
29931 if (num.words[num.length - 1] === 0) {
29932 num.length--;
29933 if (num.words[num.length - 1] === 0) {
29934 num.length--;
29935 }
29936 }
29937 return num;
29938 };
29939
29940 function P224 () {
29941 MPrime.call(
29942 this,
29943 'p224',
29944 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29945 }
29946 inherits(P224, MPrime);
29947
29948 function P192 () {
29949 MPrime.call(
29950 this,
29951 'p192',
29952 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29953 }
29954 inherits(P192, MPrime);
29955
29956 function P25519 () {
29957 // 2 ^ 255 - 19
29958 MPrime.call(
29959 this,
29960 '25519',
29961 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29962 }
29963 inherits(P25519, MPrime);
29964
29965 P25519.prototype.imulK = function imulK (num) {
29966 // K = 0x13
29967 var carry = 0;
29968 for (var i = 0; i < num.length; i++) {
29969 var hi = (num.words[i] | 0) * 0x13 + carry;
29970 var lo = hi & 0x3ffffff;
29971 hi >>>= 26;
29972
29973 num.words[i] = lo;
29974 carry = hi;
29975 }
29976 if (carry !== 0) {
29977 num.words[num.length++] = carry;
29978 }
29979 return num;
29980 };
29981
29982 // Exported mostly for testing purposes, use plain name instead
29983 BN._prime = function prime (name) {
29984 // Cached version of prime
29985 if (primes[name]) return primes[name];
29986
29987 var prime;
29988 if (name === 'k256') {
29989 prime = new K256();
29990 } else if (name === 'p224') {
29991 prime = new P224();
29992 } else if (name === 'p192') {
29993 prime = new P192();
29994 } else if (name === 'p25519') {
29995 prime = new P25519();
29996 } else {
29997 throw new Error('Unknown prime ' + name);
29998 }
29999 primes[name] = prime;
30000
30001 return prime;
30002 };
30003
30004 //
30005 // Base reduction engine
30006 //
30007 function Red (m) {
30008 if (typeof m === 'string') {
30009 var prime = BN._prime(m);
30010 this.m = prime.p;
30011 this.prime = prime;
30012 } else {
30013 assert(m.gtn(1), 'modulus must be greater than 1');
30014 this.m = m;
30015 this.prime = null;
30016 }
30017 }
30018
30019 Red.prototype._verify1 = function _verify1 (a) {
30020 assert(a.negative === 0, 'red works only with positives');
30021 assert(a.red, 'red works only with red numbers');
30022 };
30023
30024 Red.prototype._verify2 = function _verify2 (a, b) {
30025 assert((a.negative | b.negative) === 0, 'red works only with positives');
30026 assert(a.red && a.red === b.red,
30027 'red works only with red numbers');
30028 };
30029
30030 Red.prototype.imod = function imod (a) {
30031 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
30032 return a.umod(this.m)._forceRed(this);
30033 };
30034
30035 Red.prototype.neg = function neg (a) {
30036 if (a.isZero()) {
30037 return a.clone();
30038 }
30039
30040 return this.m.sub(a)._forceRed(this);
30041 };
30042
30043 Red.prototype.add = function add (a, b) {
30044 this._verify2(a, b);
30045
30046 var res = a.add(b);
30047 if (res.cmp(this.m) >= 0) {
30048 res.isub(this.m);
30049 }
30050 return res._forceRed(this);
30051 };
30052
30053 Red.prototype.iadd = function iadd (a, b) {
30054 this._verify2(a, b);
30055
30056 var res = a.iadd(b);
30057 if (res.cmp(this.m) >= 0) {
30058 res.isub(this.m);
30059 }
30060 return res;
30061 };
30062
30063 Red.prototype.sub = function sub (a, b) {
30064 this._verify2(a, b);
30065
30066 var res = a.sub(b);
30067 if (res.cmpn(0) < 0) {
30068 res.iadd(this.m);
30069 }
30070 return res._forceRed(this);
30071 };
30072
30073 Red.prototype.isub = function isub (a, b) {
30074 this._verify2(a, b);
30075
30076 var res = a.isub(b);
30077 if (res.cmpn(0) < 0) {
30078 res.iadd(this.m);
30079 }
30080 return res;
30081 };
30082
30083 Red.prototype.shl = function shl (a, num) {
30084 this._verify1(a);
30085 return this.imod(a.ushln(num));
30086 };
30087
30088 Red.prototype.imul = function imul (a, b) {
30089 this._verify2(a, b);
30090 return this.imod(a.imul(b));
30091 };
30092
30093 Red.prototype.mul = function mul (a, b) {
30094 this._verify2(a, b);
30095 return this.imod(a.mul(b));
30096 };
30097
30098 Red.prototype.isqr = function isqr (a) {
30099 return this.imul(a, a.clone());
30100 };
30101
30102 Red.prototype.sqr = function sqr (a) {
30103 return this.mul(a, a);
30104 };
30105
30106 Red.prototype.sqrt = function sqrt (a) {
30107 if (a.isZero()) return a.clone();
30108
30109 var mod3 = this.m.andln(3);
30110 assert(mod3 % 2 === 1);
30111
30112 // Fast case
30113 if (mod3 === 3) {
30114 var pow = this.m.add(new BN(1)).iushrn(2);
30115 return this.pow(a, pow);
30116 }
30117
30118 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30119 //
30120 // Find Q and S, that Q * 2 ^ S = (P - 1)
30121 var q = this.m.subn(1);
30122 var s = 0;
30123 while (!q.isZero() && q.andln(1) === 0) {
30124 s++;
30125 q.iushrn(1);
30126 }
30127 assert(!q.isZero());
30128
30129 var one = new BN(1).toRed(this);
30130 var nOne = one.redNeg();
30131
30132 // Find quadratic non-residue
30133 // NOTE: Max is such because of generalized Riemann hypothesis.
30134 var lpow = this.m.subn(1).iushrn(1);
30135 var z = this.m.bitLength();
30136 z = new BN(2 * z * z).toRed(this);
30137
30138 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30139 z.redIAdd(nOne);
30140 }
30141
30142 var c = this.pow(z, q);
30143 var r = this.pow(a, q.addn(1).iushrn(1));
30144 var t = this.pow(a, q);
30145 var m = s;
30146 while (t.cmp(one) !== 0) {
30147 var tmp = t;
30148 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30149 tmp = tmp.redSqr();
30150 }
30151 assert(i < m);
30152 var b = this.pow(c, new BN(1).iushln(m - i - 1));
30153
30154 r = r.redMul(b);
30155 c = b.redSqr();
30156 t = t.redMul(c);
30157 m = i;
30158 }
30159
30160 return r;
30161 };
30162
30163 Red.prototype.invm = function invm (a) {
30164 var inv = a._invmp(this.m);
30165 if (inv.negative !== 0) {
30166 inv.negative = 0;
30167 return this.imod(inv).redNeg();
30168 } else {
30169 return this.imod(inv);
30170 }
30171 };
30172
30173 Red.prototype.pow = function pow (a, num) {
30174 if (num.isZero()) return new BN(1);
30175 if (num.cmpn(1) === 0) return a.clone();
30176
30177 var windowSize = 4;
30178 var wnd = new Array(1 << windowSize);
30179 wnd[0] = new BN(1).toRed(this);
30180 wnd[1] = a;
30181 for (var i = 2; i < wnd.length; i++) {
30182 wnd[i] = this.mul(wnd[i - 1], a);
30183 }
30184
30185 var res = wnd[0];
30186 var current = 0;
30187 var currentLen = 0;
30188 var start = num.bitLength() % 26;
30189 if (start === 0) {
30190 start = 26;
30191 }
30192
30193 for (i = num.length - 1; i >= 0; i--) {
30194 var word = num.words[i];
30195 for (var j = start - 1; j >= 0; j--) {
30196 var bit = (word >> j) & 1;
30197 if (res !== wnd[0]) {
30198 res = this.sqr(res);
30199 }
30200
30201 if (bit === 0 && current === 0) {
30202 currentLen = 0;
30203 continue;
30204 }
30205
30206 current <<= 1;
30207 current |= bit;
30208 currentLen++;
30209 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
30210
30211 res = this.mul(res, wnd[current]);
30212 currentLen = 0;
30213 current = 0;
30214 }
30215 start = 26;
30216 }
30217
30218 return res;
30219 };
30220
30221 Red.prototype.convertTo = function convertTo (num) {
30222 var r = num.umod(this.m);
30223
30224 return r === num ? r.clone() : r;
30225 };
30226
30227 Red.prototype.convertFrom = function convertFrom (num) {
30228 var res = num.clone();
30229 res.red = null;
30230 return res;
30231 };
30232
30233 //
30234 // Montgomery method engine
30235 //
30236
30237 BN.mont = function mont (num) {
30238 return new Mont(num);
30239 };
30240
30241 function Mont (m) {
30242 Red.call(this, m);
30243
30244 this.shift = this.m.bitLength();
30245 if (this.shift % 26 !== 0) {
30246 this.shift += 26 - (this.shift % 26);
30247 }
30248
30249 this.r = new BN(1).iushln(this.shift);
30250 this.r2 = this.imod(this.r.sqr());
30251 this.rinv = this.r._invmp(this.m);
30252
30253 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30254 this.minv = this.minv.umod(this.r);
30255 this.minv = this.r.sub(this.minv);
30256 }
30257 inherits(Mont, Red);
30258
30259 Mont.prototype.convertTo = function convertTo (num) {
30260 return this.imod(num.ushln(this.shift));
30261 };
30262
30263 Mont.prototype.convertFrom = function convertFrom (num) {
30264 var r = this.imod(num.mul(this.rinv));
30265 r.red = null;
30266 return r;
30267 };
30268
30269 Mont.prototype.imul = function imul (a, b) {
30270 if (a.isZero() || b.isZero()) {
30271 a.words[0] = 0;
30272 a.length = 1;
30273 return a;
30274 }
30275
30276 var t = a.imul(b);
30277 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30278 var u = t.isub(c).iushrn(this.shift);
30279 var res = u;
30280
30281 if (u.cmp(this.m) >= 0) {
30282 res = u.isub(this.m);
30283 } else if (u.cmpn(0) < 0) {
30284 res = u.iadd(this.m);
30285 }
30286
30287 return res._forceRed(this);
30288 };
30289
30290 Mont.prototype.mul = function mul (a, b) {
30291 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
30292
30293 var t = a.mul(b);
30294 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30295 var u = t.isub(c).iushrn(this.shift);
30296 var res = u;
30297 if (u.cmp(this.m) >= 0) {
30298 res = u.isub(this.m);
30299 } else if (u.cmpn(0) < 0) {
30300 res = u.iadd(this.m);
30301 }
30302
30303 return res._forceRed(this);
30304 };
30305
30306 Mont.prototype.invm = function invm (a) {
30307 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30308 var res = this.imod(a._invmp(this.m).mul(this.r2));
30309 return res._forceRed(this);
30310 };
30311 })(typeof module === 'undefined' || module, this);
30312
30313 },{}],34:[function(require,module,exports){
30314 var r;
30315
30316 module.exports = function rand(len) {
30317 if (!r)
30318 r = new Rand(null);
30319
30320 return r.generate(len);
30321 };
30322
30323 function Rand(rand) {
30324 this.rand = rand;
30325 }
30326 module.exports.Rand = Rand;
30327
30328 Rand.prototype.generate = function generate(len) {
30329 return this._rand(len);
30330 };
30331
30332 if (typeof self === 'object') {
30333 if (self.crypto && self.crypto.getRandomValues) {
30334 // Modern browsers
30335 Rand.prototype._rand = function _rand(n) {
30336 var arr = new Uint8Array(n);
30337 self.crypto.getRandomValues(arr);
30338 return arr;
30339 };
30340 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30341 // IE
30342 Rand.prototype._rand = function _rand(n) {
30343 var arr = new Uint8Array(n);
30344 self.msCrypto.getRandomValues(arr);
30345 return arr;
30346 };
30347 } else {
30348 // Old junk
30349 Rand.prototype._rand = function() {
30350 throw new Error('Not implemented yet');
30351 };
30352 }
30353 } else {
30354 // Node.js or Web worker with no crypto support
30355 try {
30356 var crypto = require('crypto');
30357
30358 Rand.prototype._rand = function _rand(n) {
30359 return crypto.randomBytes(n);
30360 };
30361 } catch (e) {
30362 // Emulate crypto API using randy
30363 Rand.prototype._rand = function _rand(n) {
30364 var res = new Uint8Array(n);
30365 for (var i = 0; i < res.length; i++)
30366 res[i] = this.rand.getByte();
30367 return res;
30368 };
30369 }
30370 }
30371
30372 },{"crypto":3}],35:[function(require,module,exports){
30373 (function (Buffer){
30374 var Transform = require('stream').Transform
30375 var inherits = require('inherits')
30376 var StringDecoder = require('string_decoder').StringDecoder
30377 module.exports = CipherBase
30378 inherits(CipherBase, Transform)
30379 function CipherBase (hashMode) {
30380 Transform.call(this)
30381 this.hashMode = typeof hashMode === 'string'
30382 if (this.hashMode) {
30383 this[hashMode] = this._finalOrDigest
30384 } else {
30385 this.final = this._finalOrDigest
30386 }
30387 this._decoder = null
30388 this._encoding = null
30389 }
30390 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30391 if (typeof data === 'string') {
30392 data = new Buffer(data, inputEnc)
30393 }
30394 var outData = this._update(data)
30395 if (this.hashMode) {
30396 return this
30397 }
30398 if (outputEnc) {
30399 outData = this._toString(outData, outputEnc)
30400 }
30401 return outData
30402 }
30403
30404 CipherBase.prototype.setAutoPadding = function () {}
30405
30406 CipherBase.prototype.getAuthTag = function () {
30407 throw new Error('trying to get auth tag in unsupported state')
30408 }
30409
30410 CipherBase.prototype.setAuthTag = function () {
30411 throw new Error('trying to set auth tag in unsupported state')
30412 }
30413
30414 CipherBase.prototype.setAAD = function () {
30415 throw new Error('trying to set aad in unsupported state')
30416 }
30417
30418 CipherBase.prototype._transform = function (data, _, next) {
30419 var err
30420 try {
30421 if (this.hashMode) {
30422 this._update(data)
30423 } else {
30424 this.push(this._update(data))
30425 }
30426 } catch (e) {
30427 err = e
30428 } finally {
30429 next(err)
30430 }
30431 }
30432 CipherBase.prototype._flush = function (done) {
30433 var err
30434 try {
30435 this.push(this._final())
30436 } catch (e) {
30437 err = e
30438 } finally {
30439 done(err)
30440 }
30441 }
30442 CipherBase.prototype._finalOrDigest = function (outputEnc) {
30443 var outData = this._final() || new Buffer('')
30444 if (outputEnc) {
30445 outData = this._toString(outData, outputEnc, true)
30446 }
30447 return outData
30448 }
30449
30450 CipherBase.prototype._toString = function (value, enc, fin) {
30451 if (!this._decoder) {
30452 this._decoder = new StringDecoder(enc)
30453 this._encoding = enc
30454 }
30455 if (this._encoding !== enc) {
30456 throw new Error('can\'t switch encodings')
30457 }
30458 var out = this._decoder.write(value)
30459 if (fin) {
30460 out += this._decoder.end()
30461 }
30462 return out
30463 }
30464
30465 }).call(this,require("buffer").Buffer)
30466 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30467 (function (Buffer){
30468 'use strict';
30469 var inherits = require('inherits')
30470 var md5 = require('./md5')
30471 var rmd160 = require('ripemd160')
30472 var sha = require('sha.js')
30473
30474 var Base = require('cipher-base')
30475
30476 function HashNoConstructor(hash) {
30477 Base.call(this, 'digest')
30478
30479 this._hash = hash
30480 this.buffers = []
30481 }
30482
30483 inherits(HashNoConstructor, Base)
30484
30485 HashNoConstructor.prototype._update = function (data) {
30486 this.buffers.push(data)
30487 }
30488
30489 HashNoConstructor.prototype._final = function () {
30490 var buf = Buffer.concat(this.buffers)
30491 var r = this._hash(buf)
30492 this.buffers = null
30493
30494 return r
30495 }
30496
30497 function Hash(hash) {
30498 Base.call(this, 'digest')
30499
30500 this._hash = hash
30501 }
30502
30503 inherits(Hash, Base)
30504
30505 Hash.prototype._update = function (data) {
30506 this._hash.update(data)
30507 }
30508
30509 Hash.prototype._final = function () {
30510 return this._hash.digest()
30511 }
30512
30513 module.exports = function createHash (alg) {
30514 alg = alg.toLowerCase()
30515 if ('md5' === alg) return new HashNoConstructor(md5)
30516 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30517
30518 return new Hash(sha(alg))
30519 }
30520
30521 }).call(this,require("buffer").Buffer)
30522 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30523 (function (Buffer){
30524 'use strict';
30525 var intSize = 4;
30526 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30527 var chrsz = 8;
30528
30529 function toArray(buf, bigEndian) {
30530 if ((buf.length % intSize) !== 0) {
30531 var len = buf.length + (intSize - (buf.length % intSize));
30532 buf = Buffer.concat([buf, zeroBuffer], len);
30533 }
30534
30535 var arr = [];
30536 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30537 for (var i = 0; i < buf.length; i += intSize) {
30538 arr.push(fn.call(buf, i));
30539 }
30540 return arr;
30541 }
30542
30543 function toBuffer(arr, size, bigEndian) {
30544 var buf = new Buffer(size);
30545 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30546 for (var i = 0; i < arr.length; i++) {
30547 fn.call(buf, arr[i], i * 4, true);
30548 }
30549 return buf;
30550 }
30551
30552 function hash(buf, fn, hashSize, bigEndian) {
30553 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30554 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30555 return toBuffer(arr, hashSize, bigEndian);
30556 }
30557 exports.hash = hash;
30558 }).call(this,require("buffer").Buffer)
30559 },{"buffer":5}],38:[function(require,module,exports){
30560 'use strict';
30561 /*
30562 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30563 * Digest Algorithm, as defined in RFC 1321.
30564 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30565 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30566 * Distributed under the BSD License
30567 * See http://pajhome.org.uk/crypt/md5 for more info.
30568 */
30569
30570 var helpers = require('./helpers');
30571
30572 /*
30573 * Calculate the MD5 of an array of little-endian words, and a bit length
30574 */
30575 function core_md5(x, len)
30576 {
30577 /* append padding */
30578 x[len >> 5] |= 0x80 << ((len) % 32);
30579 x[(((len + 64) >>> 9) << 4) + 14] = len;
30580
30581 var a = 1732584193;
30582 var b = -271733879;
30583 var c = -1732584194;
30584 var d = 271733878;
30585
30586 for(var i = 0; i < x.length; i += 16)
30587 {
30588 var olda = a;
30589 var oldb = b;
30590 var oldc = c;
30591 var oldd = d;
30592
30593 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30594 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30595 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30596 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30597 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30598 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30599 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30600 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30601 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30602 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30603 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30604 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30605 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30606 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30607 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30608 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
30609
30610 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30611 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30612 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30613 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30614 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30615 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30616 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30617 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30618 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30619 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30620 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30621 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30622 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30623 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30624 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30625 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
30626
30627 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30628 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30629 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30630 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30631 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30632 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30633 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30634 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30635 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30636 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30637 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30638 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30639 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30640 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30641 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30642 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
30643
30644 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30645 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30646 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30647 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30648 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30649 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30650 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30651 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30652 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30653 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30654 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30655 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30656 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30657 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30658 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30659 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
30660
30661 a = safe_add(a, olda);
30662 b = safe_add(b, oldb);
30663 c = safe_add(c, oldc);
30664 d = safe_add(d, oldd);
30665 }
30666 return Array(a, b, c, d);
30667
30668 }
30669
30670 /*
30671 * These functions implement the four basic operations the algorithm uses.
30672 */
30673 function md5_cmn(q, a, b, x, s, t)
30674 {
30675 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
30676 }
30677 function md5_ff(a, b, c, d, x, s, t)
30678 {
30679 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
30680 }
30681 function md5_gg(a, b, c, d, x, s, t)
30682 {
30683 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
30684 }
30685 function md5_hh(a, b, c, d, x, s, t)
30686 {
30687 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30688 }
30689 function md5_ii(a, b, c, d, x, s, t)
30690 {
30691 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
30692 }
30693
30694 /*
30695 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30696 * to work around bugs in some JS interpreters.
30697 */
30698 function safe_add(x, y)
30699 {
30700 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30701 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30702 return (msw << 16) | (lsw & 0xFFFF);
30703 }
30704
30705 /*
30706 * Bitwise rotate a 32-bit number to the left.
30707 */
30708 function bit_rol(num, cnt)
30709 {
30710 return (num << cnt) | (num >>> (32 - cnt));
30711 }
30712
30713 module.exports = function md5(buf) {
30714 return helpers.hash(buf, core_md5, 16);
30715 };
30716 },{"./helpers":37}],39:[function(require,module,exports){
30717 'use strict';
30718
30719 var elliptic = exports;
30720
30721 elliptic.version = require('../package.json').version;
30722 elliptic.utils = require('./elliptic/utils');
30723 elliptic.rand = require('brorand');
30724 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30725 elliptic.curve = require('./elliptic/curve');
30726 elliptic.curves = require('./elliptic/curves');
30727
30728 // Protocols
30729 elliptic.ec = require('./elliptic/ec');
30730 elliptic.eddsa = require('./elliptic/eddsa');
30731
30732 },{"../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){
30733 'use strict';
30734
30735 var BN = require('bn.js');
30736 var elliptic = require('../../elliptic');
30737 var utils = elliptic.utils;
30738 var getNAF = utils.getNAF;
30739 var getJSF = utils.getJSF;
30740 var assert = utils.assert;
30741
30742 function BaseCurve(type, conf) {
30743 this.type = type;
30744 this.p = new BN(conf.p, 16);
30745
30746 // Use Montgomery, when there is no fast reduction for the prime
30747 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30748
30749 // Useful for many curves
30750 this.zero = new BN(0).toRed(this.red);
30751 this.one = new BN(1).toRed(this.red);
30752 this.two = new BN(2).toRed(this.red);
30753
30754 // Curve configuration, optional
30755 this.n = conf.n && new BN(conf.n, 16);
30756 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30757
30758 // Temporary arrays
30759 this._wnafT1 = new Array(4);
30760 this._wnafT2 = new Array(4);
30761 this._wnafT3 = new Array(4);
30762 this._wnafT4 = new Array(4);
30763
30764 // Generalized Greg Maxwell's trick
30765 var adjustCount = this.n && this.p.div(this.n);
30766 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30767 this.redN = null;
30768 } else {
30769 this._maxwellTrick = true;
30770 this.redN = this.n.toRed(this.red);
30771 }
30772 }
30773 module.exports = BaseCurve;
30774
30775 BaseCurve.prototype.point = function point() {
30776 throw new Error('Not implemented');
30777 };
30778
30779 BaseCurve.prototype.validate = function validate() {
30780 throw new Error('Not implemented');
30781 };
30782
30783 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30784 assert(p.precomputed);
30785 var doubles = p._getDoubles();
30786
30787 var naf = getNAF(k, 1);
30788 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30789 I /= 3;
30790
30791 // Translate into more windowed form
30792 var repr = [];
30793 for (var j = 0; j < naf.length; j += doubles.step) {
30794 var nafW = 0;
30795 for (var k = j + doubles.step - 1; k >= j; k--)
30796 nafW = (nafW << 1) + naf[k];
30797 repr.push(nafW);
30798 }
30799
30800 var a = this.jpoint(null, null, null);
30801 var b = this.jpoint(null, null, null);
30802 for (var i = I; i > 0; i--) {
30803 for (var j = 0; j < repr.length; j++) {
30804 var nafW = repr[j];
30805 if (nafW === i)
30806 b = b.mixedAdd(doubles.points[j]);
30807 else if (nafW === -i)
30808 b = b.mixedAdd(doubles.points[j].neg());
30809 }
30810 a = a.add(b);
30811 }
30812 return a.toP();
30813 };
30814
30815 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30816 var w = 4;
30817
30818 // Precompute window
30819 var nafPoints = p._getNAFPoints(w);
30820 w = nafPoints.wnd;
30821 var wnd = nafPoints.points;
30822
30823 // Get NAF form
30824 var naf = getNAF(k, w);
30825
30826 // Add `this`*(N+1) for every w-NAF index
30827 var acc = this.jpoint(null, null, null);
30828 for (var i = naf.length - 1; i >= 0; i--) {
30829 // Count zeroes
30830 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30831 k++;
30832 if (i >= 0)
30833 k++;
30834 acc = acc.dblp(k);
30835
30836 if (i < 0)
30837 break;
30838 var z = naf[i];
30839 assert(z !== 0);
30840 if (p.type === 'affine') {
30841 // J +- P
30842 if (z > 0)
30843 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30844 else
30845 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30846 } else {
30847 // J +- J
30848 if (z > 0)
30849 acc = acc.add(wnd[(z - 1) >> 1]);
30850 else
30851 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30852 }
30853 }
30854 return p.type === 'affine' ? acc.toP() : acc;
30855 };
30856
30857 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30858 points,
30859 coeffs,
30860 len,
30861 jacobianResult) {
30862 var wndWidth = this._wnafT1;
30863 var wnd = this._wnafT2;
30864 var naf = this._wnafT3;
30865
30866 // Fill all arrays
30867 var max = 0;
30868 for (var i = 0; i < len; i++) {
30869 var p = points[i];
30870 var nafPoints = p._getNAFPoints(defW);
30871 wndWidth[i] = nafPoints.wnd;
30872 wnd[i] = nafPoints.points;
30873 }
30874
30875 // Comb small window NAFs
30876 for (var i = len - 1; i >= 1; i -= 2) {
30877 var a = i - 1;
30878 var b = i;
30879 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30880 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30881 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30882 max = Math.max(naf[a].length, max);
30883 max = Math.max(naf[b].length, max);
30884 continue;
30885 }
30886
30887 var comb = [
30888 points[a], /* 1 */
30889 null, /* 3 */
30890 null, /* 5 */
30891 points[b] /* 7 */
30892 ];
30893
30894 // Try to avoid Projective points, if possible
30895 if (points[a].y.cmp(points[b].y) === 0) {
30896 comb[1] = points[a].add(points[b]);
30897 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30898 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30899 comb[1] = points[a].toJ().mixedAdd(points[b]);
30900 comb[2] = points[a].add(points[b].neg());
30901 } else {
30902 comb[1] = points[a].toJ().mixedAdd(points[b]);
30903 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30904 }
30905
30906 var index = [
30907 -3, /* -1 -1 */
30908 -1, /* -1 0 */
30909 -5, /* -1 1 */
30910 -7, /* 0 -1 */
30911 0, /* 0 0 */
30912 7, /* 0 1 */
30913 5, /* 1 -1 */
30914 1, /* 1 0 */
30915 3 /* 1 1 */
30916 ];
30917
30918 var jsf = getJSF(coeffs[a], coeffs[b]);
30919 max = Math.max(jsf[0].length, max);
30920 naf[a] = new Array(max);
30921 naf[b] = new Array(max);
30922 for (var j = 0; j < max; j++) {
30923 var ja = jsf[0][j] | 0;
30924 var jb = jsf[1][j] | 0;
30925
30926 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30927 naf[b][j] = 0;
30928 wnd[a] = comb;
30929 }
30930 }
30931
30932 var acc = this.jpoint(null, null, null);
30933 var tmp = this._wnafT4;
30934 for (var i = max; i >= 0; i--) {
30935 var k = 0;
30936
30937 while (i >= 0) {
30938 var zero = true;
30939 for (var j = 0; j < len; j++) {
30940 tmp[j] = naf[j][i] | 0;
30941 if (tmp[j] !== 0)
30942 zero = false;
30943 }
30944 if (!zero)
30945 break;
30946 k++;
30947 i--;
30948 }
30949 if (i >= 0)
30950 k++;
30951 acc = acc.dblp(k);
30952 if (i < 0)
30953 break;
30954
30955 for (var j = 0; j < len; j++) {
30956 var z = tmp[j];
30957 var p;
30958 if (z === 0)
30959 continue;
30960 else if (z > 0)
30961 p = wnd[j][(z - 1) >> 1];
30962 else if (z < 0)
30963 p = wnd[j][(-z - 1) >> 1].neg();
30964
30965 if (p.type === 'affine')
30966 acc = acc.mixedAdd(p);
30967 else
30968 acc = acc.add(p);
30969 }
30970 }
30971 // Zeroify references
30972 for (var i = 0; i < len; i++)
30973 wnd[i] = null;
30974
30975 if (jacobianResult)
30976 return acc;
30977 else
30978 return acc.toP();
30979 };
30980
30981 function BasePoint(curve, type) {
30982 this.curve = curve;
30983 this.type = type;
30984 this.precomputed = null;
30985 }
30986 BaseCurve.BasePoint = BasePoint;
30987
30988 BasePoint.prototype.eq = function eq(/*other*/) {
30989 throw new Error('Not implemented');
30990 };
30991
30992 BasePoint.prototype.validate = function validate() {
30993 return this.curve.validate(this);
30994 };
30995
30996 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
30997 bytes = utils.toArray(bytes, enc);
30998
30999 var len = this.p.byteLength();
31000
31001 // uncompressed, hybrid-odd, hybrid-even
31002 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
31003 bytes.length - 1 === 2 * len) {
31004 if (bytes[0] === 0x06)
31005 assert(bytes[bytes.length - 1] % 2 === 0);
31006 else if (bytes[0] === 0x07)
31007 assert(bytes[bytes.length - 1] % 2 === 1);
31008
31009 var res = this.point(bytes.slice(1, 1 + len),
31010 bytes.slice(1 + len, 1 + 2 * len));
31011
31012 return res;
31013 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
31014 bytes.length - 1 === len) {
31015 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
31016 }
31017 throw new Error('Unknown point format');
31018 };
31019
31020 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
31021 return this.encode(enc, true);
31022 };
31023
31024 BasePoint.prototype._encode = function _encode(compact) {
31025 var len = this.curve.p.byteLength();
31026 var x = this.getX().toArray('be', len);
31027
31028 if (compact)
31029 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
31030
31031 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
31032 };
31033
31034 BasePoint.prototype.encode = function encode(enc, compact) {
31035 return utils.encode(this._encode(compact), enc);
31036 };
31037
31038 BasePoint.prototype.precompute = function precompute(power) {
31039 if (this.precomputed)
31040 return this;
31041
31042 var precomputed = {
31043 doubles: null,
31044 naf: null,
31045 beta: null
31046 };
31047 precomputed.naf = this._getNAFPoints(8);
31048 precomputed.doubles = this._getDoubles(4, power);
31049 precomputed.beta = this._getBeta();
31050 this.precomputed = precomputed;
31051
31052 return this;
31053 };
31054
31055 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31056 if (!this.precomputed)
31057 return false;
31058
31059 var doubles = this.precomputed.doubles;
31060 if (!doubles)
31061 return false;
31062
31063 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31064 };
31065
31066 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31067 if (this.precomputed && this.precomputed.doubles)
31068 return this.precomputed.doubles;
31069
31070 var doubles = [ this ];
31071 var acc = this;
31072 for (var i = 0; i < power; i += step) {
31073 for (var j = 0; j < step; j++)
31074 acc = acc.dbl();
31075 doubles.push(acc);
31076 }
31077 return {
31078 step: step,
31079 points: doubles
31080 };
31081 };
31082
31083 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31084 if (this.precomputed && this.precomputed.naf)
31085 return this.precomputed.naf;
31086
31087 var res = [ this ];
31088 var max = (1 << wnd) - 1;
31089 var dbl = max === 1 ? null : this.dbl();
31090 for (var i = 1; i < max; i++)
31091 res[i] = res[i - 1].add(dbl);
31092 return {
31093 wnd: wnd,
31094 points: res
31095 };
31096 };
31097
31098 BasePoint.prototype._getBeta = function _getBeta() {
31099 return null;
31100 };
31101
31102 BasePoint.prototype.dblp = function dblp(k) {
31103 var r = this;
31104 for (var i = 0; i < k; i++)
31105 r = r.dbl();
31106 return r;
31107 };
31108
31109 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31110 'use strict';
31111
31112 var curve = require('../curve');
31113 var elliptic = require('../../elliptic');
31114 var BN = require('bn.js');
31115 var inherits = require('inherits');
31116 var Base = curve.base;
31117
31118 var assert = elliptic.utils.assert;
31119
31120 function EdwardsCurve(conf) {
31121 // NOTE: Important as we are creating point in Base.call()
31122 this.twisted = (conf.a | 0) !== 1;
31123 this.mOneA = this.twisted && (conf.a | 0) === -1;
31124 this.extended = this.mOneA;
31125
31126 Base.call(this, 'edwards', conf);
31127
31128 this.a = new BN(conf.a, 16).umod(this.red.m);
31129 this.a = this.a.toRed(this.red);
31130 this.c = new BN(conf.c, 16).toRed(this.red);
31131 this.c2 = this.c.redSqr();
31132 this.d = new BN(conf.d, 16).toRed(this.red);
31133 this.dd = this.d.redAdd(this.d);
31134
31135 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31136 this.oneC = (conf.c | 0) === 1;
31137 }
31138 inherits(EdwardsCurve, Base);
31139 module.exports = EdwardsCurve;
31140
31141 EdwardsCurve.prototype._mulA = function _mulA(num) {
31142 if (this.mOneA)
31143 return num.redNeg();
31144 else
31145 return this.a.redMul(num);
31146 };
31147
31148 EdwardsCurve.prototype._mulC = function _mulC(num) {
31149 if (this.oneC)
31150 return num;
31151 else
31152 return this.c.redMul(num);
31153 };
31154
31155 // Just for compatibility with Short curve
31156 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31157 return this.point(x, y, z, t);
31158 };
31159
31160 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31161 x = new BN(x, 16);
31162 if (!x.red)
31163 x = x.toRed(this.red);
31164
31165 var x2 = x.redSqr();
31166 var rhs = this.c2.redSub(this.a.redMul(x2));
31167 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31168
31169 var y2 = rhs.redMul(lhs.redInvm());
31170 var y = y2.redSqrt();
31171 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31172 throw new Error('invalid point');
31173
31174 var isOdd = y.fromRed().isOdd();
31175 if (odd && !isOdd || !odd && isOdd)
31176 y = y.redNeg();
31177
31178 return this.point(x, y);
31179 };
31180
31181 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31182 y = new BN(y, 16);
31183 if (!y.red)
31184 y = y.toRed(this.red);
31185
31186 // x^2 = (y^2 - 1) / (d y^2 + 1)
31187 var y2 = y.redSqr();
31188 var lhs = y2.redSub(this.one);
31189 var rhs = y2.redMul(this.d).redAdd(this.one);
31190 var x2 = lhs.redMul(rhs.redInvm());
31191
31192 if (x2.cmp(this.zero) === 0) {
31193 if (odd)
31194 throw new Error('invalid point');
31195 else
31196 return this.point(this.zero, y);
31197 }
31198
31199 var x = x2.redSqrt();
31200 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31201 throw new Error('invalid point');
31202
31203 if (x.isOdd() !== odd)
31204 x = x.redNeg();
31205
31206 return this.point(x, y);
31207 };
31208
31209 EdwardsCurve.prototype.validate = function validate(point) {
31210 if (point.isInfinity())
31211 return true;
31212
31213 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31214 point.normalize();
31215
31216 var x2 = point.x.redSqr();
31217 var y2 = point.y.redSqr();
31218 var lhs = x2.redMul(this.a).redAdd(y2);
31219 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
31220
31221 return lhs.cmp(rhs) === 0;
31222 };
31223
31224 function Point(curve, x, y, z, t) {
31225 Base.BasePoint.call(this, curve, 'projective');
31226 if (x === null && y === null && z === null) {
31227 this.x = this.curve.zero;
31228 this.y = this.curve.one;
31229 this.z = this.curve.one;
31230 this.t = this.curve.zero;
31231 this.zOne = true;
31232 } else {
31233 this.x = new BN(x, 16);
31234 this.y = new BN(y, 16);
31235 this.z = z ? new BN(z, 16) : this.curve.one;
31236 this.t = t && new BN(t, 16);
31237 if (!this.x.red)
31238 this.x = this.x.toRed(this.curve.red);
31239 if (!this.y.red)
31240 this.y = this.y.toRed(this.curve.red);
31241 if (!this.z.red)
31242 this.z = this.z.toRed(this.curve.red);
31243 if (this.t && !this.t.red)
31244 this.t = this.t.toRed(this.curve.red);
31245 this.zOne = this.z === this.curve.one;
31246
31247 // Use extended coordinates
31248 if (this.curve.extended && !this.t) {
31249 this.t = this.x.redMul(this.y);
31250 if (!this.zOne)
31251 this.t = this.t.redMul(this.z.redInvm());
31252 }
31253 }
31254 }
31255 inherits(Point, Base.BasePoint);
31256
31257 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31258 return Point.fromJSON(this, obj);
31259 };
31260
31261 EdwardsCurve.prototype.point = function point(x, y, z, t) {
31262 return new Point(this, x, y, z, t);
31263 };
31264
31265 Point.fromJSON = function fromJSON(curve, obj) {
31266 return new Point(curve, obj[0], obj[1], obj[2]);
31267 };
31268
31269 Point.prototype.inspect = function inspect() {
31270 if (this.isInfinity())
31271 return '<EC Point Infinity>';
31272 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31273 ' y: ' + this.y.fromRed().toString(16, 2) +
31274 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31275 };
31276
31277 Point.prototype.isInfinity = function isInfinity() {
31278 // XXX This code assumes that zero is always zero in red
31279 return this.x.cmpn(0) === 0 &&
31280 this.y.cmp(this.z) === 0;
31281 };
31282
31283 Point.prototype._extDbl = function _extDbl() {
31284 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31285 // #doubling-dbl-2008-hwcd
31286 // 4M + 4S
31287
31288 // A = X1^2
31289 var a = this.x.redSqr();
31290 // B = Y1^2
31291 var b = this.y.redSqr();
31292 // C = 2 * Z1^2
31293 var c = this.z.redSqr();
31294 c = c.redIAdd(c);
31295 // D = a * A
31296 var d = this.curve._mulA(a);
31297 // E = (X1 + Y1)^2 - A - B
31298 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31299 // G = D + B
31300 var g = d.redAdd(b);
31301 // F = G - C
31302 var f = g.redSub(c);
31303 // H = D - B
31304 var h = d.redSub(b);
31305 // X3 = E * F
31306 var nx = e.redMul(f);
31307 // Y3 = G * H
31308 var ny = g.redMul(h);
31309 // T3 = E * H
31310 var nt = e.redMul(h);
31311 // Z3 = F * G
31312 var nz = f.redMul(g);
31313 return this.curve.point(nx, ny, nz, nt);
31314 };
31315
31316 Point.prototype._projDbl = function _projDbl() {
31317 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31318 // #doubling-dbl-2008-bbjlp
31319 // #doubling-dbl-2007-bl
31320 // and others
31321 // Generally 3M + 4S or 2M + 4S
31322
31323 // B = (X1 + Y1)^2
31324 var b = this.x.redAdd(this.y).redSqr();
31325 // C = X1^2
31326 var c = this.x.redSqr();
31327 // D = Y1^2
31328 var d = this.y.redSqr();
31329
31330 var nx;
31331 var ny;
31332 var nz;
31333 if (this.curve.twisted) {
31334 // E = a * C
31335 var e = this.curve._mulA(c);
31336 // F = E + D
31337 var f = e.redAdd(d);
31338 if (this.zOne) {
31339 // X3 = (B - C - D) * (F - 2)
31340 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31341 // Y3 = F * (E - D)
31342 ny = f.redMul(e.redSub(d));
31343 // Z3 = F^2 - 2 * F
31344 nz = f.redSqr().redSub(f).redSub(f);
31345 } else {
31346 // H = Z1^2
31347 var h = this.z.redSqr();
31348 // J = F - 2 * H
31349 var j = f.redSub(h).redISub(h);
31350 // X3 = (B-C-D)*J
31351 nx = b.redSub(c).redISub(d).redMul(j);
31352 // Y3 = F * (E - D)
31353 ny = f.redMul(e.redSub(d));
31354 // Z3 = F * J
31355 nz = f.redMul(j);
31356 }
31357 } else {
31358 // E = C + D
31359 var e = c.redAdd(d);
31360 // H = (c * Z1)^2
31361 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31362 // J = E - 2 * H
31363 var j = e.redSub(h).redSub(h);
31364 // X3 = c * (B - E) * J
31365 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31366 // Y3 = c * E * (C - D)
31367 ny = this.curve._mulC(e).redMul(c.redISub(d));
31368 // Z3 = E * J
31369 nz = e.redMul(j);
31370 }
31371 return this.curve.point(nx, ny, nz);
31372 };
31373
31374 Point.prototype.dbl = function dbl() {
31375 if (this.isInfinity())
31376 return this;
31377
31378 // Double in extended coordinates
31379 if (this.curve.extended)
31380 return this._extDbl();
31381 else
31382 return this._projDbl();
31383 };
31384
31385 Point.prototype._extAdd = function _extAdd(p) {
31386 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31387 // #addition-add-2008-hwcd-3
31388 // 8M
31389
31390 // A = (Y1 - X1) * (Y2 - X2)
31391 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31392 // B = (Y1 + X1) * (Y2 + X2)
31393 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31394 // C = T1 * k * T2
31395 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31396 // D = Z1 * 2 * Z2
31397 var d = this.z.redMul(p.z.redAdd(p.z));
31398 // E = B - A
31399 var e = b.redSub(a);
31400 // F = D - C
31401 var f = d.redSub(c);
31402 // G = D + C
31403 var g = d.redAdd(c);
31404 // H = B + A
31405 var h = b.redAdd(a);
31406 // X3 = E * F
31407 var nx = e.redMul(f);
31408 // Y3 = G * H
31409 var ny = g.redMul(h);
31410 // T3 = E * H
31411 var nt = e.redMul(h);
31412 // Z3 = F * G
31413 var nz = f.redMul(g);
31414 return this.curve.point(nx, ny, nz, nt);
31415 };
31416
31417 Point.prototype._projAdd = function _projAdd(p) {
31418 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31419 // #addition-add-2008-bbjlp
31420 // #addition-add-2007-bl
31421 // 10M + 1S
31422
31423 // A = Z1 * Z2
31424 var a = this.z.redMul(p.z);
31425 // B = A^2
31426 var b = a.redSqr();
31427 // C = X1 * X2
31428 var c = this.x.redMul(p.x);
31429 // D = Y1 * Y2
31430 var d = this.y.redMul(p.y);
31431 // E = d * C * D
31432 var e = this.curve.d.redMul(c).redMul(d);
31433 // F = B - E
31434 var f = b.redSub(e);
31435 // G = B + E
31436 var g = b.redAdd(e);
31437 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31438 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31439 var nx = a.redMul(f).redMul(tmp);
31440 var ny;
31441 var nz;
31442 if (this.curve.twisted) {
31443 // Y3 = A * G * (D - a * C)
31444 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31445 // Z3 = F * G
31446 nz = f.redMul(g);
31447 } else {
31448 // Y3 = A * G * (D - C)
31449 ny = a.redMul(g).redMul(d.redSub(c));
31450 // Z3 = c * F * G
31451 nz = this.curve._mulC(f).redMul(g);
31452 }
31453 return this.curve.point(nx, ny, nz);
31454 };
31455
31456 Point.prototype.add = function add(p) {
31457 if (this.isInfinity())
31458 return p;
31459 if (p.isInfinity())
31460 return this;
31461
31462 if (this.curve.extended)
31463 return this._extAdd(p);
31464 else
31465 return this._projAdd(p);
31466 };
31467
31468 Point.prototype.mul = function mul(k) {
31469 if (this._hasDoubles(k))
31470 return this.curve._fixedNafMul(this, k);
31471 else
31472 return this.curve._wnafMul(this, k);
31473 };
31474
31475 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31476 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31477 };
31478
31479 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31480 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31481 };
31482
31483 Point.prototype.normalize = function normalize() {
31484 if (this.zOne)
31485 return this;
31486
31487 // Normalize coordinates
31488 var zi = this.z.redInvm();
31489 this.x = this.x.redMul(zi);
31490 this.y = this.y.redMul(zi);
31491 if (this.t)
31492 this.t = this.t.redMul(zi);
31493 this.z = this.curve.one;
31494 this.zOne = true;
31495 return this;
31496 };
31497
31498 Point.prototype.neg = function neg() {
31499 return this.curve.point(this.x.redNeg(),
31500 this.y,
31501 this.z,
31502 this.t && this.t.redNeg());
31503 };
31504
31505 Point.prototype.getX = function getX() {
31506 this.normalize();
31507 return this.x.fromRed();
31508 };
31509
31510 Point.prototype.getY = function getY() {
31511 this.normalize();
31512 return this.y.fromRed();
31513 };
31514
31515 Point.prototype.eq = function eq(other) {
31516 return this === other ||
31517 this.getX().cmp(other.getX()) === 0 &&
31518 this.getY().cmp(other.getY()) === 0;
31519 };
31520
31521 Point.prototype.eqXToP = function eqXToP(x) {
31522 var rx = x.toRed(this.curve.red).redMul(this.z);
31523 if (this.x.cmp(rx) === 0)
31524 return true;
31525
31526 var xc = x.clone();
31527 var t = this.curve.redN.redMul(this.z);
31528 for (;;) {
31529 xc.iadd(this.curve.n);
31530 if (xc.cmp(this.curve.p) >= 0)
31531 return false;
31532
31533 rx.redIAdd(t);
31534 if (this.x.cmp(rx) === 0)
31535 return true;
31536 }
31537 return false;
31538 };
31539
31540 // Compatibility with BaseCurve
31541 Point.prototype.toP = Point.prototype.normalize;
31542 Point.prototype.mixedAdd = Point.prototype.add;
31543
31544 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31545 'use strict';
31546
31547 var curve = exports;
31548
31549 curve.base = require('./base');
31550 curve.short = require('./short');
31551 curve.mont = require('./mont');
31552 curve.edwards = require('./edwards');
31553
31554 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31555 'use strict';
31556
31557 var curve = require('../curve');
31558 var BN = require('bn.js');
31559 var inherits = require('inherits');
31560 var Base = curve.base;
31561
31562 var elliptic = require('../../elliptic');
31563 var utils = elliptic.utils;
31564
31565 function MontCurve(conf) {
31566 Base.call(this, 'mont', conf);
31567
31568 this.a = new BN(conf.a, 16).toRed(this.red);
31569 this.b = new BN(conf.b, 16).toRed(this.red);
31570 this.i4 = new BN(4).toRed(this.red).redInvm();
31571 this.two = new BN(2).toRed(this.red);
31572 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
31573 }
31574 inherits(MontCurve, Base);
31575 module.exports = MontCurve;
31576
31577 MontCurve.prototype.validate = function validate(point) {
31578 var x = point.normalize().x;
31579 var x2 = x.redSqr();
31580 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31581 var y = rhs.redSqrt();
31582
31583 return y.redSqr().cmp(rhs) === 0;
31584 };
31585
31586 function Point(curve, x, z) {
31587 Base.BasePoint.call(this, curve, 'projective');
31588 if (x === null && z === null) {
31589 this.x = this.curve.one;
31590 this.z = this.curve.zero;
31591 } else {
31592 this.x = new BN(x, 16);
31593 this.z = new BN(z, 16);
31594 if (!this.x.red)
31595 this.x = this.x.toRed(this.curve.red);
31596 if (!this.z.red)
31597 this.z = this.z.toRed(this.curve.red);
31598 }
31599 }
31600 inherits(Point, Base.BasePoint);
31601
31602 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31603 return this.point(utils.toArray(bytes, enc), 1);
31604 };
31605
31606 MontCurve.prototype.point = function point(x, z) {
31607 return new Point(this, x, z);
31608 };
31609
31610 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31611 return Point.fromJSON(this, obj);
31612 };
31613
31614 Point.prototype.precompute = function precompute() {
31615 // No-op
31616 };
31617
31618 Point.prototype._encode = function _encode() {
31619 return this.getX().toArray('be', this.curve.p.byteLength());
31620 };
31621
31622 Point.fromJSON = function fromJSON(curve, obj) {
31623 return new Point(curve, obj[0], obj[1] || curve.one);
31624 };
31625
31626 Point.prototype.inspect = function inspect() {
31627 if (this.isInfinity())
31628 return '<EC Point Infinity>';
31629 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31630 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31631 };
31632
31633 Point.prototype.isInfinity = function isInfinity() {
31634 // XXX This code assumes that zero is always zero in red
31635 return this.z.cmpn(0) === 0;
31636 };
31637
31638 Point.prototype.dbl = function dbl() {
31639 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31640 // 2M + 2S + 4A
31641
31642 // A = X1 + Z1
31643 var a = this.x.redAdd(this.z);
31644 // AA = A^2
31645 var aa = a.redSqr();
31646 // B = X1 - Z1
31647 var b = this.x.redSub(this.z);
31648 // BB = B^2
31649 var bb = b.redSqr();
31650 // C = AA - BB
31651 var c = aa.redSub(bb);
31652 // X3 = AA * BB
31653 var nx = aa.redMul(bb);
31654 // Z3 = C * (BB + A24 * C)
31655 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31656 return this.curve.point(nx, nz);
31657 };
31658
31659 Point.prototype.add = function add() {
31660 throw new Error('Not supported on Montgomery curve');
31661 };
31662
31663 Point.prototype.diffAdd = function diffAdd(p, diff) {
31664 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31665 // 4M + 2S + 6A
31666
31667 // A = X2 + Z2
31668 var a = this.x.redAdd(this.z);
31669 // B = X2 - Z2
31670 var b = this.x.redSub(this.z);
31671 // C = X3 + Z3
31672 var c = p.x.redAdd(p.z);
31673 // D = X3 - Z3
31674 var d = p.x.redSub(p.z);
31675 // DA = D * A
31676 var da = d.redMul(a);
31677 // CB = C * B
31678 var cb = c.redMul(b);
31679 // X5 = Z1 * (DA + CB)^2
31680 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31681 // Z5 = X1 * (DA - CB)^2
31682 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31683 return this.curve.point(nx, nz);
31684 };
31685
31686 Point.prototype.mul = function mul(k) {
31687 var t = k.clone();
31688 var a = this; // (N / 2) * Q + Q
31689 var b = this.curve.point(null, null); // (N / 2) * Q
31690 var c = this; // Q
31691
31692 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31693 bits.push(t.andln(1));
31694
31695 for (var i = bits.length - 1; i >= 0; i--) {
31696 if (bits[i] === 0) {
31697 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31698 a = a.diffAdd(b, c);
31699 // N * Q = 2 * ((N / 2) * Q + Q))
31700 b = b.dbl();
31701 } else {
31702 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31703 b = a.diffAdd(b, c);
31704 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31705 a = a.dbl();
31706 }
31707 }
31708 return b;
31709 };
31710
31711 Point.prototype.mulAdd = function mulAdd() {
31712 throw new Error('Not supported on Montgomery curve');
31713 };
31714
31715 Point.prototype.jumlAdd = function jumlAdd() {
31716 throw new Error('Not supported on Montgomery curve');
31717 };
31718
31719 Point.prototype.eq = function eq(other) {
31720 return this.getX().cmp(other.getX()) === 0;
31721 };
31722
31723 Point.prototype.normalize = function normalize() {
31724 this.x = this.x.redMul(this.z.redInvm());
31725 this.z = this.curve.one;
31726 return this;
31727 };
31728
31729 Point.prototype.getX = function getX() {
31730 // Normalize coordinates
31731 this.normalize();
31732
31733 return this.x.fromRed();
31734 };
31735
31736 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
31737 'use strict';
31738
31739 var curve = require('../curve');
31740 var elliptic = require('../../elliptic');
31741 var BN = require('bn.js');
31742 var inherits = require('inherits');
31743 var Base = curve.base;
31744
31745 var assert = elliptic.utils.assert;
31746
31747 function ShortCurve(conf) {
31748 Base.call(this, 'short', conf);
31749
31750 this.a = new BN(conf.a, 16).toRed(this.red);
31751 this.b = new BN(conf.b, 16).toRed(this.red);
31752 this.tinv = this.two.redInvm();
31753
31754 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31755 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
31756
31757 // If the curve is endomorphic, precalculate beta and lambda
31758 this.endo = this._getEndomorphism(conf);
31759 this._endoWnafT1 = new Array(4);
31760 this._endoWnafT2 = new Array(4);
31761 }
31762 inherits(ShortCurve, Base);
31763 module.exports = ShortCurve;
31764
31765 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31766 // No efficient endomorphism
31767 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31768 return;
31769
31770 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31771 var beta;
31772 var lambda;
31773 if (conf.beta) {
31774 beta = new BN(conf.beta, 16).toRed(this.red);
31775 } else {
31776 var betas = this._getEndoRoots(this.p);
31777 // Choose the smallest beta
31778 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31779 beta = beta.toRed(this.red);
31780 }
31781 if (conf.lambda) {
31782 lambda = new BN(conf.lambda, 16);
31783 } else {
31784 // Choose the lambda that is matching selected beta
31785 var lambdas = this._getEndoRoots(this.n);
31786 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31787 lambda = lambdas[0];
31788 } else {
31789 lambda = lambdas[1];
31790 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31791 }
31792 }
31793
31794 // Get basis vectors, used for balanced length-two representation
31795 var basis;
31796 if (conf.basis) {
31797 basis = conf.basis.map(function(vec) {
31798 return {
31799 a: new BN(vec.a, 16),
31800 b: new BN(vec.b, 16)
31801 };
31802 });
31803 } else {
31804 basis = this._getEndoBasis(lambda);
31805 }
31806
31807 return {
31808 beta: beta,
31809 lambda: lambda,
31810 basis: basis
31811 };
31812 };
31813
31814 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31815 // Find roots of for x^2 + x + 1 in F
31816 // Root = (-1 +- Sqrt(-3)) / 2
31817 //
31818 var red = num === this.p ? this.red : BN.mont(num);
31819 var tinv = new BN(2).toRed(red).redInvm();
31820 var ntinv = tinv.redNeg();
31821
31822 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
31823
31824 var l1 = ntinv.redAdd(s).fromRed();
31825 var l2 = ntinv.redSub(s).fromRed();
31826 return [ l1, l2 ];
31827 };
31828
31829 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31830 // aprxSqrt >= sqrt(this.n)
31831 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31832
31833 // 3.74
31834 // Run EGCD, until r(L + 1) < aprxSqrt
31835 var u = lambda;
31836 var v = this.n.clone();
31837 var x1 = new BN(1);
31838 var y1 = new BN(0);
31839 var x2 = new BN(0);
31840 var y2 = new BN(1);
31841
31842 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31843 var a0;
31844 var b0;
31845 // First vector
31846 var a1;
31847 var b1;
31848 // Second vector
31849 var a2;
31850 var b2;
31851
31852 var prevR;
31853 var i = 0;
31854 var r;
31855 var x;
31856 while (u.cmpn(0) !== 0) {
31857 var q = v.div(u);
31858 r = v.sub(q.mul(u));
31859 x = x2.sub(q.mul(x1));
31860 var y = y2.sub(q.mul(y1));
31861
31862 if (!a1 && r.cmp(aprxSqrt) < 0) {
31863 a0 = prevR.neg();
31864 b0 = x1;
31865 a1 = r.neg();
31866 b1 = x;
31867 } else if (a1 && ++i === 2) {
31868 break;
31869 }
31870 prevR = r;
31871
31872 v = u;
31873 u = r;
31874 x2 = x1;
31875 x1 = x;
31876 y2 = y1;
31877 y1 = y;
31878 }
31879 a2 = r.neg();
31880 b2 = x;
31881
31882 var len1 = a1.sqr().add(b1.sqr());
31883 var len2 = a2.sqr().add(b2.sqr());
31884 if (len2.cmp(len1) >= 0) {
31885 a2 = a0;
31886 b2 = b0;
31887 }
31888
31889 // Normalize signs
31890 if (a1.negative) {
31891 a1 = a1.neg();
31892 b1 = b1.neg();
31893 }
31894 if (a2.negative) {
31895 a2 = a2.neg();
31896 b2 = b2.neg();
31897 }
31898
31899 return [
31900 { a: a1, b: b1 },
31901 { a: a2, b: b2 }
31902 ];
31903 };
31904
31905 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31906 var basis = this.endo.basis;
31907 var v1 = basis[0];
31908 var v2 = basis[1];
31909
31910 var c1 = v2.b.mul(k).divRound(this.n);
31911 var c2 = v1.b.neg().mul(k).divRound(this.n);
31912
31913 var p1 = c1.mul(v1.a);
31914 var p2 = c2.mul(v2.a);
31915 var q1 = c1.mul(v1.b);
31916 var q2 = c2.mul(v2.b);
31917
31918 // Calculate answer
31919 var k1 = k.sub(p1).sub(p2);
31920 var k2 = q1.add(q2).neg();
31921 return { k1: k1, k2: k2 };
31922 };
31923
31924 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31925 x = new BN(x, 16);
31926 if (!x.red)
31927 x = x.toRed(this.red);
31928
31929 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31930 var y = y2.redSqrt();
31931 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31932 throw new Error('invalid point');
31933
31934 // XXX Is there any way to tell if the number is odd without converting it
31935 // to non-red form?
31936 var isOdd = y.fromRed().isOdd();
31937 if (odd && !isOdd || !odd && isOdd)
31938 y = y.redNeg();
31939
31940 return this.point(x, y);
31941 };
31942
31943 ShortCurve.prototype.validate = function validate(point) {
31944 if (point.inf)
31945 return true;
31946
31947 var x = point.x;
31948 var y = point.y;
31949
31950 var ax = this.a.redMul(x);
31951 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31952 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31953 };
31954
31955 ShortCurve.prototype._endoWnafMulAdd =
31956 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31957 var npoints = this._endoWnafT1;
31958 var ncoeffs = this._endoWnafT2;
31959 for (var i = 0; i < points.length; i++) {
31960 var split = this._endoSplit(coeffs[i]);
31961 var p = points[i];
31962 var beta = p._getBeta();
31963
31964 if (split.k1.negative) {
31965 split.k1.ineg();
31966 p = p.neg(true);
31967 }
31968 if (split.k2.negative) {
31969 split.k2.ineg();
31970 beta = beta.neg(true);
31971 }
31972
31973 npoints[i * 2] = p;
31974 npoints[i * 2 + 1] = beta;
31975 ncoeffs[i * 2] = split.k1;
31976 ncoeffs[i * 2 + 1] = split.k2;
31977 }
31978 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
31979
31980 // Clean-up references to points and coefficients
31981 for (var j = 0; j < i * 2; j++) {
31982 npoints[j] = null;
31983 ncoeffs[j] = null;
31984 }
31985 return res;
31986 };
31987
31988 function Point(curve, x, y, isRed) {
31989 Base.BasePoint.call(this, curve, 'affine');
31990 if (x === null && y === null) {
31991 this.x = null;
31992 this.y = null;
31993 this.inf = true;
31994 } else {
31995 this.x = new BN(x, 16);
31996 this.y = new BN(y, 16);
31997 // Force redgomery representation when loading from JSON
31998 if (isRed) {
31999 this.x.forceRed(this.curve.red);
32000 this.y.forceRed(this.curve.red);
32001 }
32002 if (!this.x.red)
32003 this.x = this.x.toRed(this.curve.red);
32004 if (!this.y.red)
32005 this.y = this.y.toRed(this.curve.red);
32006 this.inf = false;
32007 }
32008 }
32009 inherits(Point, Base.BasePoint);
32010
32011 ShortCurve.prototype.point = function point(x, y, isRed) {
32012 return new Point(this, x, y, isRed);
32013 };
32014
32015 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
32016 return Point.fromJSON(this, obj, red);
32017 };
32018
32019 Point.prototype._getBeta = function _getBeta() {
32020 if (!this.curve.endo)
32021 return;
32022
32023 var pre = this.precomputed;
32024 if (pre && pre.beta)
32025 return pre.beta;
32026
32027 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
32028 if (pre) {
32029 var curve = this.curve;
32030 var endoMul = function(p) {
32031 return curve.point(p.x.redMul(curve.endo.beta), p.y);
32032 };
32033 pre.beta = beta;
32034 beta.precomputed = {
32035 beta: null,
32036 naf: pre.naf && {
32037 wnd: pre.naf.wnd,
32038 points: pre.naf.points.map(endoMul)
32039 },
32040 doubles: pre.doubles && {
32041 step: pre.doubles.step,
32042 points: pre.doubles.points.map(endoMul)
32043 }
32044 };
32045 }
32046 return beta;
32047 };
32048
32049 Point.prototype.toJSON = function toJSON() {
32050 if (!this.precomputed)
32051 return [ this.x, this.y ];
32052
32053 return [ this.x, this.y, this.precomputed && {
32054 doubles: this.precomputed.doubles && {
32055 step: this.precomputed.doubles.step,
32056 points: this.precomputed.doubles.points.slice(1)
32057 },
32058 naf: this.precomputed.naf && {
32059 wnd: this.precomputed.naf.wnd,
32060 points: this.precomputed.naf.points.slice(1)
32061 }
32062 } ];
32063 };
32064
32065 Point.fromJSON = function fromJSON(curve, obj, red) {
32066 if (typeof obj === 'string')
32067 obj = JSON.parse(obj);
32068 var res = curve.point(obj[0], obj[1], red);
32069 if (!obj[2])
32070 return res;
32071
32072 function obj2point(obj) {
32073 return curve.point(obj[0], obj[1], red);
32074 }
32075
32076 var pre = obj[2];
32077 res.precomputed = {
32078 beta: null,
32079 doubles: pre.doubles && {
32080 step: pre.doubles.step,
32081 points: [ res ].concat(pre.doubles.points.map(obj2point))
32082 },
32083 naf: pre.naf && {
32084 wnd: pre.naf.wnd,
32085 points: [ res ].concat(pre.naf.points.map(obj2point))
32086 }
32087 };
32088 return res;
32089 };
32090
32091 Point.prototype.inspect = function inspect() {
32092 if (this.isInfinity())
32093 return '<EC Point Infinity>';
32094 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32095 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32096 };
32097
32098 Point.prototype.isInfinity = function isInfinity() {
32099 return this.inf;
32100 };
32101
32102 Point.prototype.add = function add(p) {
32103 // O + P = P
32104 if (this.inf)
32105 return p;
32106
32107 // P + O = P
32108 if (p.inf)
32109 return this;
32110
32111 // P + P = 2P
32112 if (this.eq(p))
32113 return this.dbl();
32114
32115 // P + (-P) = O
32116 if (this.neg().eq(p))
32117 return this.curve.point(null, null);
32118
32119 // P + Q = O
32120 if (this.x.cmp(p.x) === 0)
32121 return this.curve.point(null, null);
32122
32123 var c = this.y.redSub(p.y);
32124 if (c.cmpn(0) !== 0)
32125 c = c.redMul(this.x.redSub(p.x).redInvm());
32126 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32127 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32128 return this.curve.point(nx, ny);
32129 };
32130
32131 Point.prototype.dbl = function dbl() {
32132 if (this.inf)
32133 return this;
32134
32135 // 2P = O
32136 var ys1 = this.y.redAdd(this.y);
32137 if (ys1.cmpn(0) === 0)
32138 return this.curve.point(null, null);
32139
32140 var a = this.curve.a;
32141
32142 var x2 = this.x.redSqr();
32143 var dyinv = ys1.redInvm();
32144 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
32145
32146 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32147 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32148 return this.curve.point(nx, ny);
32149 };
32150
32151 Point.prototype.getX = function getX() {
32152 return this.x.fromRed();
32153 };
32154
32155 Point.prototype.getY = function getY() {
32156 return this.y.fromRed();
32157 };
32158
32159 Point.prototype.mul = function mul(k) {
32160 k = new BN(k, 16);
32161
32162 if (this._hasDoubles(k))
32163 return this.curve._fixedNafMul(this, k);
32164 else if (this.curve.endo)
32165 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32166 else
32167 return this.curve._wnafMul(this, k);
32168 };
32169
32170 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32171 var points = [ this, p2 ];
32172 var coeffs = [ k1, k2 ];
32173 if (this.curve.endo)
32174 return this.curve._endoWnafMulAdd(points, coeffs);
32175 else
32176 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32177 };
32178
32179 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32180 var points = [ this, p2 ];
32181 var coeffs = [ k1, k2 ];
32182 if (this.curve.endo)
32183 return this.curve._endoWnafMulAdd(points, coeffs, true);
32184 else
32185 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32186 };
32187
32188 Point.prototype.eq = function eq(p) {
32189 return this === p ||
32190 this.inf === p.inf &&
32191 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32192 };
32193
32194 Point.prototype.neg = function neg(_precompute) {
32195 if (this.inf)
32196 return this;
32197
32198 var res = this.curve.point(this.x, this.y.redNeg());
32199 if (_precompute && this.precomputed) {
32200 var pre = this.precomputed;
32201 var negate = function(p) {
32202 return p.neg();
32203 };
32204 res.precomputed = {
32205 naf: pre.naf && {
32206 wnd: pre.naf.wnd,
32207 points: pre.naf.points.map(negate)
32208 },
32209 doubles: pre.doubles && {
32210 step: pre.doubles.step,
32211 points: pre.doubles.points.map(negate)
32212 }
32213 };
32214 }
32215 return res;
32216 };
32217
32218 Point.prototype.toJ = function toJ() {
32219 if (this.inf)
32220 return this.curve.jpoint(null, null, null);
32221
32222 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32223 return res;
32224 };
32225
32226 function JPoint(curve, x, y, z) {
32227 Base.BasePoint.call(this, curve, 'jacobian');
32228 if (x === null && y === null && z === null) {
32229 this.x = this.curve.one;
32230 this.y = this.curve.one;
32231 this.z = new BN(0);
32232 } else {
32233 this.x = new BN(x, 16);
32234 this.y = new BN(y, 16);
32235 this.z = new BN(z, 16);
32236 }
32237 if (!this.x.red)
32238 this.x = this.x.toRed(this.curve.red);
32239 if (!this.y.red)
32240 this.y = this.y.toRed(this.curve.red);
32241 if (!this.z.red)
32242 this.z = this.z.toRed(this.curve.red);
32243
32244 this.zOne = this.z === this.curve.one;
32245 }
32246 inherits(JPoint, Base.BasePoint);
32247
32248 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32249 return new JPoint(this, x, y, z);
32250 };
32251
32252 JPoint.prototype.toP = function toP() {
32253 if (this.isInfinity())
32254 return this.curve.point(null, null);
32255
32256 var zinv = this.z.redInvm();
32257 var zinv2 = zinv.redSqr();
32258 var ax = this.x.redMul(zinv2);
32259 var ay = this.y.redMul(zinv2).redMul(zinv);
32260
32261 return this.curve.point(ax, ay);
32262 };
32263
32264 JPoint.prototype.neg = function neg() {
32265 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32266 };
32267
32268 JPoint.prototype.add = function add(p) {
32269 // O + P = P
32270 if (this.isInfinity())
32271 return p;
32272
32273 // P + O = P
32274 if (p.isInfinity())
32275 return this;
32276
32277 // 12M + 4S + 7A
32278 var pz2 = p.z.redSqr();
32279 var z2 = this.z.redSqr();
32280 var u1 = this.x.redMul(pz2);
32281 var u2 = p.x.redMul(z2);
32282 var s1 = this.y.redMul(pz2.redMul(p.z));
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(p.z).redMul(h);
32301
32302 return this.curve.jpoint(nx, ny, nz);
32303 };
32304
32305 JPoint.prototype.mixedAdd = function mixedAdd(p) {
32306 // O + P = P
32307 if (this.isInfinity())
32308 return p.toJ();
32309
32310 // P + O = P
32311 if (p.isInfinity())
32312 return this;
32313
32314 // 8M + 3S + 7A
32315 var z2 = this.z.redSqr();
32316 var u1 = this.x;
32317 var u2 = p.x.redMul(z2);
32318 var s1 = this.y;
32319 var s2 = p.y.redMul(z2).redMul(this.z);
32320
32321 var h = u1.redSub(u2);
32322 var r = s1.redSub(s2);
32323 if (h.cmpn(0) === 0) {
32324 if (r.cmpn(0) !== 0)
32325 return this.curve.jpoint(null, null, null);
32326 else
32327 return this.dbl();
32328 }
32329
32330 var h2 = h.redSqr();
32331 var h3 = h2.redMul(h);
32332 var v = u1.redMul(h2);
32333
32334 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32335 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32336 var nz = this.z.redMul(h);
32337
32338 return this.curve.jpoint(nx, ny, nz);
32339 };
32340
32341 JPoint.prototype.dblp = function dblp(pow) {
32342 if (pow === 0)
32343 return this;
32344 if (this.isInfinity())
32345 return this;
32346 if (!pow)
32347 return this.dbl();
32348
32349 if (this.curve.zeroA || this.curve.threeA) {
32350 var r = this;
32351 for (var i = 0; i < pow; i++)
32352 r = r.dbl();
32353 return r;
32354 }
32355
32356 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32357 // N = 1 => 6M + 6S + 9A
32358 var a = this.curve.a;
32359 var tinv = this.curve.tinv;
32360
32361 var jx = this.x;
32362 var jy = this.y;
32363 var jz = this.z;
32364 var jz4 = jz.redSqr().redSqr();
32365
32366 // Reuse results
32367 var jyd = jy.redAdd(jy);
32368 for (var i = 0; i < pow; i++) {
32369 var jx2 = jx.redSqr();
32370 var jyd2 = jyd.redSqr();
32371 var jyd4 = jyd2.redSqr();
32372 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32373
32374 var t1 = jx.redMul(jyd2);
32375 var nx = c.redSqr().redISub(t1.redAdd(t1));
32376 var t2 = t1.redISub(nx);
32377 var dny = c.redMul(t2);
32378 dny = dny.redIAdd(dny).redISub(jyd4);
32379 var nz = jyd.redMul(jz);
32380 if (i + 1 < pow)
32381 jz4 = jz4.redMul(jyd4);
32382
32383 jx = nx;
32384 jz = nz;
32385 jyd = dny;
32386 }
32387
32388 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32389 };
32390
32391 JPoint.prototype.dbl = function dbl() {
32392 if (this.isInfinity())
32393 return this;
32394
32395 if (this.curve.zeroA)
32396 return this._zeroDbl();
32397 else if (this.curve.threeA)
32398 return this._threeDbl();
32399 else
32400 return this._dbl();
32401 };
32402
32403 JPoint.prototype._zeroDbl = function _zeroDbl() {
32404 var nx;
32405 var ny;
32406 var nz;
32407 // Z = 1
32408 if (this.zOne) {
32409 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32410 // #doubling-mdbl-2007-bl
32411 // 1M + 5S + 14A
32412
32413 // XX = X1^2
32414 var xx = this.x.redSqr();
32415 // YY = Y1^2
32416 var yy = this.y.redSqr();
32417 // YYYY = YY^2
32418 var yyyy = yy.redSqr();
32419 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32420 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32421 s = s.redIAdd(s);
32422 // M = 3 * XX + a; a = 0
32423 var m = xx.redAdd(xx).redIAdd(xx);
32424 // T = M ^ 2 - 2*S
32425 var t = m.redSqr().redISub(s).redISub(s);
32426
32427 // 8 * YYYY
32428 var yyyy8 = yyyy.redIAdd(yyyy);
32429 yyyy8 = yyyy8.redIAdd(yyyy8);
32430 yyyy8 = yyyy8.redIAdd(yyyy8);
32431
32432 // X3 = T
32433 nx = t;
32434 // Y3 = M * (S - T) - 8 * YYYY
32435 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32436 // Z3 = 2*Y1
32437 nz = this.y.redAdd(this.y);
32438 } else {
32439 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32440 // #doubling-dbl-2009-l
32441 // 2M + 5S + 13A
32442
32443 // A = X1^2
32444 var a = this.x.redSqr();
32445 // B = Y1^2
32446 var b = this.y.redSqr();
32447 // C = B^2
32448 var c = b.redSqr();
32449 // D = 2 * ((X1 + B)^2 - A - C)
32450 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32451 d = d.redIAdd(d);
32452 // E = 3 * A
32453 var e = a.redAdd(a).redIAdd(a);
32454 // F = E^2
32455 var f = e.redSqr();
32456
32457 // 8 * C
32458 var c8 = c.redIAdd(c);
32459 c8 = c8.redIAdd(c8);
32460 c8 = c8.redIAdd(c8);
32461
32462 // X3 = F - 2 * D
32463 nx = f.redISub(d).redISub(d);
32464 // Y3 = E * (D - X3) - 8 * C
32465 ny = e.redMul(d.redISub(nx)).redISub(c8);
32466 // Z3 = 2 * Y1 * Z1
32467 nz = this.y.redMul(this.z);
32468 nz = nz.redIAdd(nz);
32469 }
32470
32471 return this.curve.jpoint(nx, ny, nz);
32472 };
32473
32474 JPoint.prototype._threeDbl = function _threeDbl() {
32475 var nx;
32476 var ny;
32477 var nz;
32478 // Z = 1
32479 if (this.zOne) {
32480 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32481 // #doubling-mdbl-2007-bl
32482 // 1M + 5S + 15A
32483
32484 // XX = X1^2
32485 var xx = this.x.redSqr();
32486 // YY = Y1^2
32487 var yy = this.y.redSqr();
32488 // YYYY = YY^2
32489 var yyyy = yy.redSqr();
32490 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32491 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32492 s = s.redIAdd(s);
32493 // M = 3 * XX + a
32494 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32495 // T = M^2 - 2 * S
32496 var t = m.redSqr().redISub(s).redISub(s);
32497 // X3 = T
32498 nx = t;
32499 // Y3 = M * (S - T) - 8 * YYYY
32500 var yyyy8 = yyyy.redIAdd(yyyy);
32501 yyyy8 = yyyy8.redIAdd(yyyy8);
32502 yyyy8 = yyyy8.redIAdd(yyyy8);
32503 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32504 // Z3 = 2 * Y1
32505 nz = this.y.redAdd(this.y);
32506 } else {
32507 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32508 // 3M + 5S
32509
32510 // delta = Z1^2
32511 var delta = this.z.redSqr();
32512 // gamma = Y1^2
32513 var gamma = this.y.redSqr();
32514 // beta = X1 * gamma
32515 var beta = this.x.redMul(gamma);
32516 // alpha = 3 * (X1 - delta) * (X1 + delta)
32517 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32518 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32519 // X3 = alpha^2 - 8 * beta
32520 var beta4 = beta.redIAdd(beta);
32521 beta4 = beta4.redIAdd(beta4);
32522 var beta8 = beta4.redAdd(beta4);
32523 nx = alpha.redSqr().redISub(beta8);
32524 // Z3 = (Y1 + Z1)^2 - gamma - delta
32525 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32526 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32527 var ggamma8 = gamma.redSqr();
32528 ggamma8 = ggamma8.redIAdd(ggamma8);
32529 ggamma8 = ggamma8.redIAdd(ggamma8);
32530 ggamma8 = ggamma8.redIAdd(ggamma8);
32531 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32532 }
32533
32534 return this.curve.jpoint(nx, ny, nz);
32535 };
32536
32537 JPoint.prototype._dbl = function _dbl() {
32538 var a = this.curve.a;
32539
32540 // 4M + 6S + 10A
32541 var jx = this.x;
32542 var jy = this.y;
32543 var jz = this.z;
32544 var jz4 = jz.redSqr().redSqr();
32545
32546 var jx2 = jx.redSqr();
32547 var jy2 = jy.redSqr();
32548
32549 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32550
32551 var jxd4 = jx.redAdd(jx);
32552 jxd4 = jxd4.redIAdd(jxd4);
32553 var t1 = jxd4.redMul(jy2);
32554 var nx = c.redSqr().redISub(t1.redAdd(t1));
32555 var t2 = t1.redISub(nx);
32556
32557 var jyd8 = jy2.redSqr();
32558 jyd8 = jyd8.redIAdd(jyd8);
32559 jyd8 = jyd8.redIAdd(jyd8);
32560 jyd8 = jyd8.redIAdd(jyd8);
32561 var ny = c.redMul(t2).redISub(jyd8);
32562 var nz = jy.redAdd(jy).redMul(jz);
32563
32564 return this.curve.jpoint(nx, ny, nz);
32565 };
32566
32567 JPoint.prototype.trpl = function trpl() {
32568 if (!this.curve.zeroA)
32569 return this.dbl().add(this);
32570
32571 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32572 // 5M + 10S + ...
32573
32574 // XX = X1^2
32575 var xx = this.x.redSqr();
32576 // YY = Y1^2
32577 var yy = this.y.redSqr();
32578 // ZZ = Z1^2
32579 var zz = this.z.redSqr();
32580 // YYYY = YY^2
32581 var yyyy = yy.redSqr();
32582 // M = 3 * XX + a * ZZ2; a = 0
32583 var m = xx.redAdd(xx).redIAdd(xx);
32584 // MM = M^2
32585 var mm = m.redSqr();
32586 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32587 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32588 e = e.redIAdd(e);
32589 e = e.redAdd(e).redIAdd(e);
32590 e = e.redISub(mm);
32591 // EE = E^2
32592 var ee = e.redSqr();
32593 // T = 16*YYYY
32594 var t = yyyy.redIAdd(yyyy);
32595 t = t.redIAdd(t);
32596 t = t.redIAdd(t);
32597 t = t.redIAdd(t);
32598 // U = (M + E)^2 - MM - EE - T
32599 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32600 // X3 = 4 * (X1 * EE - 4 * YY * U)
32601 var yyu4 = yy.redMul(u);
32602 yyu4 = yyu4.redIAdd(yyu4);
32603 yyu4 = yyu4.redIAdd(yyu4);
32604 var nx = this.x.redMul(ee).redISub(yyu4);
32605 nx = nx.redIAdd(nx);
32606 nx = nx.redIAdd(nx);
32607 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32608 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32609 ny = ny.redIAdd(ny);
32610 ny = ny.redIAdd(ny);
32611 ny = ny.redIAdd(ny);
32612 // Z3 = (Z1 + E)^2 - ZZ - EE
32613 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32614
32615 return this.curve.jpoint(nx, ny, nz);
32616 };
32617
32618 JPoint.prototype.mul = function mul(k, kbase) {
32619 k = new BN(k, kbase);
32620
32621 return this.curve._wnafMul(this, k);
32622 };
32623
32624 JPoint.prototype.eq = function eq(p) {
32625 if (p.type === 'affine')
32626 return this.eq(p.toJ());
32627
32628 if (this === p)
32629 return true;
32630
32631 // x1 * z2^2 == x2 * z1^2
32632 var z2 = this.z.redSqr();
32633 var pz2 = p.z.redSqr();
32634 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32635 return false;
32636
32637 // y1 * z2^3 == y2 * z1^3
32638 var z3 = z2.redMul(this.z);
32639 var pz3 = pz2.redMul(p.z);
32640 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32641 };
32642
32643 JPoint.prototype.eqXToP = function eqXToP(x) {
32644 var zs = this.z.redSqr();
32645 var rx = x.toRed(this.curve.red).redMul(zs);
32646 if (this.x.cmp(rx) === 0)
32647 return true;
32648
32649 var xc = x.clone();
32650 var t = this.curve.redN.redMul(zs);
32651 for (;;) {
32652 xc.iadd(this.curve.n);
32653 if (xc.cmp(this.curve.p) >= 0)
32654 return false;
32655
32656 rx.redIAdd(t);
32657 if (this.x.cmp(rx) === 0)
32658 return true;
32659 }
32660 return false;
32661 };
32662
32663 JPoint.prototype.inspect = function inspect() {
32664 if (this.isInfinity())
32665 return '<EC JPoint Infinity>';
32666 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32667 ' y: ' + this.y.toString(16, 2) +
32668 ' z: ' + this.z.toString(16, 2) + '>';
32669 };
32670
32671 JPoint.prototype.isInfinity = function isInfinity() {
32672 // XXX This code assumes that zero is always zero in red
32673 return this.z.cmpn(0) === 0;
32674 };
32675
32676 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32677 'use strict';
32678
32679 var curves = exports;
32680
32681 var hash = require('hash.js');
32682 var elliptic = require('../elliptic');
32683
32684 var assert = elliptic.utils.assert;
32685
32686 function PresetCurve(options) {
32687 if (options.type === 'short')
32688 this.curve = new elliptic.curve.short(options);
32689 else if (options.type === 'edwards')
32690 this.curve = new elliptic.curve.edwards(options);
32691 else
32692 this.curve = new elliptic.curve.mont(options);
32693 this.g = this.curve.g;
32694 this.n = this.curve.n;
32695 this.hash = options.hash;
32696
32697 assert(this.g.validate(), 'Invalid curve');
32698 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32699 }
32700 curves.PresetCurve = PresetCurve;
32701
32702 function defineCurve(name, options) {
32703 Object.defineProperty(curves, name, {
32704 configurable: true,
32705 enumerable: true,
32706 get: function() {
32707 var curve = new PresetCurve(options);
32708 Object.defineProperty(curves, name, {
32709 configurable: true,
32710 enumerable: true,
32711 value: curve
32712 });
32713 return curve;
32714 }
32715 });
32716 }
32717
32718 defineCurve('p192', {
32719 type: 'short',
32720 prime: 'p192',
32721 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32722 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32723 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32724 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32725 hash: hash.sha256,
32726 gRed: false,
32727 g: [
32728 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32729 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32730 ]
32731 });
32732
32733 defineCurve('p224', {
32734 type: 'short',
32735 prime: 'p224',
32736 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32737 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32738 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32739 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32740 hash: hash.sha256,
32741 gRed: false,
32742 g: [
32743 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32744 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32745 ]
32746 });
32747
32748 defineCurve('p256', {
32749 type: 'short',
32750 prime: null,
32751 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32752 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32753 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32754 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32755 hash: hash.sha256,
32756 gRed: false,
32757 g: [
32758 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32759 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32760 ]
32761 });
32762
32763 defineCurve('p384', {
32764 type: 'short',
32765 prime: null,
32766 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32767 'fffffffe ffffffff 00000000 00000000 ffffffff',
32768 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32769 'fffffffe ffffffff 00000000 00000000 fffffffc',
32770 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32771 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32772 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32773 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32774 hash: hash.sha384,
32775 gRed: false,
32776 g: [
32777 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32778 '5502f25d bf55296c 3a545e38 72760ab7',
32779 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32780 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32781 ]
32782 });
32783
32784 defineCurve('p521', {
32785 type: 'short',
32786 prime: null,
32787 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32788 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32789 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32790 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32791 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32792 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32793 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32794 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32795 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32796 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32797 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32798 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32799 hash: hash.sha512,
32800 gRed: false,
32801 g: [
32802 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32803 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32804 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32805 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32806 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32807 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32808 ]
32809 });
32810
32811 defineCurve('curve25519', {
32812 type: 'mont',
32813 prime: 'p25519',
32814 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32815 a: '76d06',
32816 b: '1',
32817 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32818 hash: hash.sha256,
32819 gRed: false,
32820 g: [
32821 '9'
32822 ]
32823 });
32824
32825 defineCurve('ed25519', {
32826 type: 'edwards',
32827 prime: 'p25519',
32828 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32829 a: '-1',
32830 c: '1',
32831 // -121665 * (121666^(-1)) (mod P)
32832 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32833 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32834 hash: hash.sha256,
32835 gRed: false,
32836 g: [
32837 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32838
32839 // 4/5
32840 '6666666666666666666666666666666666666666666666666666666666666658'
32841 ]
32842 });
32843
32844 var pre;
32845 try {
32846 pre = require('./precomputed/secp256k1');
32847 } catch (e) {
32848 pre = undefined;
32849 }
32850
32851 defineCurve('secp256k1', {
32852 type: 'short',
32853 prime: 'k256',
32854 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32855 a: '0',
32856 b: '7',
32857 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32858 h: '1',
32859 hash: hash.sha256,
32860
32861 // Precomputed endomorphism
32862 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32863 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32864 basis: [
32865 {
32866 a: '3086d221a7d46bcde86c90e49284eb15',
32867 b: '-e4437ed6010e88286f547fa90abfe4c3'
32868 },
32869 {
32870 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32871 b: '3086d221a7d46bcde86c90e49284eb15'
32872 }
32873 ],
32874
32875 gRed: false,
32876 g: [
32877 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32878 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32879 pre
32880 ]
32881 });
32882
32883 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32884 'use strict';
32885
32886 var BN = require('bn.js');
32887 var elliptic = require('../../elliptic');
32888 var utils = elliptic.utils;
32889 var assert = utils.assert;
32890
32891 var KeyPair = require('./key');
32892 var Signature = require('./signature');
32893
32894 function EC(options) {
32895 if (!(this instanceof EC))
32896 return new EC(options);
32897
32898 // Shortcut `elliptic.ec(curve-name)`
32899 if (typeof options === 'string') {
32900 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32901
32902 options = elliptic.curves[options];
32903 }
32904
32905 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32906 if (options instanceof elliptic.curves.PresetCurve)
32907 options = { curve: options };
32908
32909 this.curve = options.curve.curve;
32910 this.n = this.curve.n;
32911 this.nh = this.n.ushrn(1);
32912 this.g = this.curve.g;
32913
32914 // Point on curve
32915 this.g = options.curve.g;
32916 this.g.precompute(options.curve.n.bitLength() + 1);
32917
32918 // Hash for function for DRBG
32919 this.hash = options.hash || options.curve.hash;
32920 }
32921 module.exports = EC;
32922
32923 EC.prototype.keyPair = function keyPair(options) {
32924 return new KeyPair(this, options);
32925 };
32926
32927 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32928 return KeyPair.fromPrivate(this, priv, enc);
32929 };
32930
32931 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32932 return KeyPair.fromPublic(this, pub, enc);
32933 };
32934
32935 EC.prototype.genKeyPair = function genKeyPair(options) {
32936 if (!options)
32937 options = {};
32938
32939 // Instantiate Hmac_DRBG
32940 var drbg = new elliptic.hmacDRBG({
32941 hash: this.hash,
32942 pers: options.pers,
32943 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32944 nonce: this.n.toArray()
32945 });
32946
32947 var bytes = this.n.byteLength();
32948 var ns2 = this.n.sub(new BN(2));
32949 do {
32950 var priv = new BN(drbg.generate(bytes));
32951 if (priv.cmp(ns2) > 0)
32952 continue;
32953
32954 priv.iaddn(1);
32955 return this.keyFromPrivate(priv);
32956 } while (true);
32957 };
32958
32959 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32960 var delta = msg.byteLength() * 8 - this.n.bitLength();
32961 if (delta > 0)
32962 msg = msg.ushrn(delta);
32963 if (!truncOnly && msg.cmp(this.n) >= 0)
32964 return msg.sub(this.n);
32965 else
32966 return msg;
32967 };
32968
32969 EC.prototype.sign = function sign(msg, key, enc, options) {
32970 if (typeof enc === 'object') {
32971 options = enc;
32972 enc = null;
32973 }
32974 if (!options)
32975 options = {};
32976
32977 key = this.keyFromPrivate(key, enc);
32978 msg = this._truncateToN(new BN(msg, 16));
32979
32980 // Zero-extend key to provide enough entropy
32981 var bytes = this.n.byteLength();
32982 var bkey = key.getPrivate().toArray('be', bytes);
32983
32984 // Zero-extend nonce to have the same byte size as N
32985 var nonce = msg.toArray('be', bytes);
32986
32987 // Instantiate Hmac_DRBG
32988 var drbg = new elliptic.hmacDRBG({
32989 hash: this.hash,
32990 entropy: bkey,
32991 nonce: nonce,
32992 pers: options.pers,
32993 persEnc: options.persEnc
32994 });
32995
32996 // Number of bytes to generate
32997 var ns1 = this.n.sub(new BN(1));
32998
32999 for (var iter = 0; true; iter++) {
33000 var k = options.k ?
33001 options.k(iter) :
33002 new BN(drbg.generate(this.n.byteLength()));
33003 k = this._truncateToN(k, true);
33004 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
33005 continue;
33006
33007 var kp = this.g.mul(k);
33008 if (kp.isInfinity())
33009 continue;
33010
33011 var kpX = kp.getX();
33012 var r = kpX.umod(this.n);
33013 if (r.cmpn(0) === 0)
33014 continue;
33015
33016 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
33017 s = s.umod(this.n);
33018 if (s.cmpn(0) === 0)
33019 continue;
33020
33021 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
33022 (kpX.cmp(r) !== 0 ? 2 : 0);
33023
33024 // Use complement of `s`, if it is > `n / 2`
33025 if (options.canonical && s.cmp(this.nh) > 0) {
33026 s = this.n.sub(s);
33027 recoveryParam ^= 1;
33028 }
33029
33030 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
33031 }
33032 };
33033
33034 EC.prototype.verify = function verify(msg, signature, key, enc) {
33035 msg = this._truncateToN(new BN(msg, 16));
33036 key = this.keyFromPublic(key, enc);
33037 signature = new Signature(signature, 'hex');
33038
33039 // Perform primitive values validation
33040 var r = signature.r;
33041 var s = signature.s;
33042 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33043 return false;
33044 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33045 return false;
33046
33047 // Validate signature
33048 var sinv = s.invm(this.n);
33049 var u1 = sinv.mul(msg).umod(this.n);
33050 var u2 = sinv.mul(r).umod(this.n);
33051
33052 if (!this.curve._maxwellTrick) {
33053 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33054 if (p.isInfinity())
33055 return false;
33056
33057 return p.getX().umod(this.n).cmp(r) === 0;
33058 }
33059
33060 // NOTE: Greg Maxwell's trick, inspired by:
33061 // https://git.io/vad3K
33062
33063 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33064 if (p.isInfinity())
33065 return false;
33066
33067 // Compare `p.x` of Jacobian point with `r`,
33068 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33069 // inverse of `p.z^2`
33070 return p.eqXToP(r);
33071 };
33072
33073 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33074 assert((3 & j) === j, 'The recovery param is more than two bits');
33075 signature = new Signature(signature, enc);
33076
33077 var n = this.n;
33078 var e = new BN(msg);
33079 var r = signature.r;
33080 var s = signature.s;
33081
33082 // A set LSB signifies that the y-coordinate is odd
33083 var isYOdd = j & 1;
33084 var isSecondKey = j >> 1;
33085 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33086 throw new Error('Unable to find sencond key candinate');
33087
33088 // 1.1. Let x = r + jn.
33089 if (isSecondKey)
33090 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33091 else
33092 r = this.curve.pointFromX(r, isYOdd);
33093
33094 var rInv = signature.r.invm(n);
33095 var s1 = n.sub(e).mul(rInv).umod(n);
33096 var s2 = s.mul(rInv).umod(n);
33097
33098 // 1.6.1 Compute Q = r^-1 (sR - eG)
33099 // Q = r^-1 (sR + -eG)
33100 return this.g.mulAdd(s1, r, s2);
33101 };
33102
33103 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33104 signature = new Signature(signature, enc);
33105 if (signature.recoveryParam !== null)
33106 return signature.recoveryParam;
33107
33108 for (var i = 0; i < 4; i++) {
33109 var Qprime;
33110 try {
33111 Qprime = this.recoverPubKey(e, signature, i);
33112 } catch (e) {
33113 continue;
33114 }
33115
33116 if (Qprime.eq(Q))
33117 return i;
33118 }
33119 throw new Error('Unable to find valid recovery factor');
33120 };
33121
33122 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33123 'use strict';
33124
33125 var BN = require('bn.js');
33126 var elliptic = require('../../elliptic');
33127 var utils = elliptic.utils;
33128 var assert = utils.assert;
33129
33130 function KeyPair(ec, options) {
33131 this.ec = ec;
33132 this.priv = null;
33133 this.pub = null;
33134
33135 // KeyPair(ec, { priv: ..., pub: ... })
33136 if (options.priv)
33137 this._importPrivate(options.priv, options.privEnc);
33138 if (options.pub)
33139 this._importPublic(options.pub, options.pubEnc);
33140 }
33141 module.exports = KeyPair;
33142
33143 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33144 if (pub instanceof KeyPair)
33145 return pub;
33146
33147 return new KeyPair(ec, {
33148 pub: pub,
33149 pubEnc: enc
33150 });
33151 };
33152
33153 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33154 if (priv instanceof KeyPair)
33155 return priv;
33156
33157 return new KeyPair(ec, {
33158 priv: priv,
33159 privEnc: enc
33160 });
33161 };
33162
33163 KeyPair.prototype.validate = function validate() {
33164 var pub = this.getPublic();
33165
33166 if (pub.isInfinity())
33167 return { result: false, reason: 'Invalid public key' };
33168 if (!pub.validate())
33169 return { result: false, reason: 'Public key is not a point' };
33170 if (!pub.mul(this.ec.curve.n).isInfinity())
33171 return { result: false, reason: 'Public key * N != O' };
33172
33173 return { result: true, reason: null };
33174 };
33175
33176 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33177 // compact is optional argument
33178 if (typeof compact === 'string') {
33179 enc = compact;
33180 compact = null;
33181 }
33182
33183 if (!this.pub)
33184 this.pub = this.ec.g.mul(this.priv);
33185
33186 if (!enc)
33187 return this.pub;
33188
33189 return this.pub.encode(enc, compact);
33190 };
33191
33192 KeyPair.prototype.getPrivate = function getPrivate(enc) {
33193 if (enc === 'hex')
33194 return this.priv.toString(16, 2);
33195 else
33196 return this.priv;
33197 };
33198
33199 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33200 this.priv = new BN(key, enc || 16);
33201
33202 // Ensure that the priv won't be bigger than n, otherwise we may fail
33203 // in fixed multiplication method
33204 this.priv = this.priv.umod(this.ec.curve.n);
33205 };
33206
33207 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33208 if (key.x || key.y) {
33209 // Montgomery points only have an `x` coordinate.
33210 // Weierstrass/Edwards points on the other hand have both `x` and
33211 // `y` coordinates.
33212 if (this.ec.curve.type === 'mont') {
33213 assert(key.x, 'Need x coordinate');
33214 } else if (this.ec.curve.type === 'short' ||
33215 this.ec.curve.type === 'edwards') {
33216 assert(key.x && key.y, 'Need both x and y coordinate');
33217 }
33218 this.pub = this.ec.curve.point(key.x, key.y);
33219 return;
33220 }
33221 this.pub = this.ec.curve.decodePoint(key, enc);
33222 };
33223
33224 // ECDH
33225 KeyPair.prototype.derive = function derive(pub) {
33226 return pub.mul(this.priv).getX();
33227 };
33228
33229 // ECDSA
33230 KeyPair.prototype.sign = function sign(msg, enc, options) {
33231 return this.ec.sign(msg, this, enc, options);
33232 };
33233
33234 KeyPair.prototype.verify = function verify(msg, signature) {
33235 return this.ec.verify(msg, signature, this);
33236 };
33237
33238 KeyPair.prototype.inspect = function inspect() {
33239 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33240 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33241 };
33242
33243 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33244 'use strict';
33245
33246 var BN = require('bn.js');
33247
33248 var elliptic = require('../../elliptic');
33249 var utils = elliptic.utils;
33250 var assert = utils.assert;
33251
33252 function Signature(options, enc) {
33253 if (options instanceof Signature)
33254 return options;
33255
33256 if (this._importDER(options, enc))
33257 return;
33258
33259 assert(options.r && options.s, 'Signature without r or s');
33260 this.r = new BN(options.r, 16);
33261 this.s = new BN(options.s, 16);
33262 if (options.recoveryParam === undefined)
33263 this.recoveryParam = null;
33264 else
33265 this.recoveryParam = options.recoveryParam;
33266 }
33267 module.exports = Signature;
33268
33269 function Position() {
33270 this.place = 0;
33271 }
33272
33273 function getLength(buf, p) {
33274 var initial = buf[p.place++];
33275 if (!(initial & 0x80)) {
33276 return initial;
33277 }
33278 var octetLen = initial & 0xf;
33279 var val = 0;
33280 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33281 val <<= 8;
33282 val |= buf[off];
33283 }
33284 p.place = off;
33285 return val;
33286 }
33287
33288 function rmPadding(buf) {
33289 var i = 0;
33290 var len = buf.length - 1;
33291 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33292 i++;
33293 }
33294 if (i === 0) {
33295 return buf;
33296 }
33297 return buf.slice(i);
33298 }
33299
33300 Signature.prototype._importDER = function _importDER(data, enc) {
33301 data = utils.toArray(data, enc);
33302 var p = new Position();
33303 if (data[p.place++] !== 0x30) {
33304 return false;
33305 }
33306 var len = getLength(data, p);
33307 if ((len + p.place) !== data.length) {
33308 return false;
33309 }
33310 if (data[p.place++] !== 0x02) {
33311 return false;
33312 }
33313 var rlen = getLength(data, p);
33314 var r = data.slice(p.place, rlen + p.place);
33315 p.place += rlen;
33316 if (data[p.place++] !== 0x02) {
33317 return false;
33318 }
33319 var slen = getLength(data, p);
33320 if (data.length !== slen + p.place) {
33321 return false;
33322 }
33323 var s = data.slice(p.place, slen + p.place);
33324 if (r[0] === 0 && (r[1] & 0x80)) {
33325 r = r.slice(1);
33326 }
33327 if (s[0] === 0 && (s[1] & 0x80)) {
33328 s = s.slice(1);
33329 }
33330
33331 this.r = new BN(r);
33332 this.s = new BN(s);
33333 this.recoveryParam = null;
33334
33335 return true;
33336 };
33337
33338 function constructLength(arr, len) {
33339 if (len < 0x80) {
33340 arr.push(len);
33341 return;
33342 }
33343 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33344 arr.push(octets | 0x80);
33345 while (--octets) {
33346 arr.push((len >>> (octets << 3)) & 0xff);
33347 }
33348 arr.push(len);
33349 }
33350
33351 Signature.prototype.toDER = function toDER(enc) {
33352 var r = this.r.toArray();
33353 var s = this.s.toArray();
33354
33355 // Pad values
33356 if (r[0] & 0x80)
33357 r = [ 0 ].concat(r);
33358 // Pad values
33359 if (s[0] & 0x80)
33360 s = [ 0 ].concat(s);
33361
33362 r = rmPadding(r);
33363 s = rmPadding(s);
33364
33365 while (!s[0] && !(s[1] & 0x80)) {
33366 s = s.slice(1);
33367 }
33368 var arr = [ 0x02 ];
33369 constructLength(arr, r.length);
33370 arr = arr.concat(r);
33371 arr.push(0x02);
33372 constructLength(arr, s.length);
33373 var backHalf = arr.concat(s);
33374 var res = [ 0x30 ];
33375 constructLength(res, backHalf.length);
33376 res = res.concat(backHalf);
33377 return utils.encode(res, enc);
33378 };
33379
33380 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33381 'use strict';
33382
33383 var hash = require('hash.js');
33384 var elliptic = require('../../elliptic');
33385 var utils = elliptic.utils;
33386 var assert = utils.assert;
33387 var parseBytes = utils.parseBytes;
33388 var KeyPair = require('./key');
33389 var Signature = require('./signature');
33390
33391 function EDDSA(curve) {
33392 assert(curve === 'ed25519', 'only tested with ed25519 so far');
33393
33394 if (!(this instanceof EDDSA))
33395 return new EDDSA(curve);
33396
33397 var curve = elliptic.curves[curve].curve;
33398 this.curve = curve;
33399 this.g = curve.g;
33400 this.g.precompute(curve.n.bitLength() + 1);
33401
33402 this.pointClass = curve.point().constructor;
33403 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33404 this.hash = hash.sha512;
33405 }
33406
33407 module.exports = EDDSA;
33408
33409 /**
33410 * @param {Array|String} message - message bytes
33411 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
33412 * @returns {Signature} - signature
33413 */
33414 EDDSA.prototype.sign = function sign(message, secret) {
33415 message = parseBytes(message);
33416 var key = this.keyFromSecret(secret);
33417 var r = this.hashInt(key.messagePrefix(), message);
33418 var R = this.g.mul(r);
33419 var Rencoded = this.encodePoint(R);
33420 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33421 .mul(key.priv());
33422 var S = r.add(s_).umod(this.curve.n);
33423 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33424 };
33425
33426 /**
33427 * @param {Array} message - message bytes
33428 * @param {Array|String|Signature} sig - sig bytes
33429 * @param {Array|String|Point|KeyPair} pub - public key
33430 * @returns {Boolean} - true if public key matches sig of message
33431 */
33432 EDDSA.prototype.verify = function verify(message, sig, pub) {
33433 message = parseBytes(message);
33434 sig = this.makeSignature(sig);
33435 var key = this.keyFromPublic(pub);
33436 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33437 var SG = this.g.mul(sig.S());
33438 var RplusAh = sig.R().add(key.pub().mul(h));
33439 return RplusAh.eq(SG);
33440 };
33441
33442 EDDSA.prototype.hashInt = function hashInt() {
33443 var hash = this.hash();
33444 for (var i = 0; i < arguments.length; i++)
33445 hash.update(arguments[i]);
33446 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33447 };
33448
33449 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33450 return KeyPair.fromPublic(this, pub);
33451 };
33452
33453 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33454 return KeyPair.fromSecret(this, secret);
33455 };
33456
33457 EDDSA.prototype.makeSignature = function makeSignature(sig) {
33458 if (sig instanceof Signature)
33459 return sig;
33460 return new Signature(this, sig);
33461 };
33462
33463 /**
33464 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33465 *
33466 * EDDSA defines methods for encoding and decoding points and integers. These are
33467 * helper convenience methods, that pass along to utility functions implied
33468 * parameters.
33469 *
33470 */
33471 EDDSA.prototype.encodePoint = function encodePoint(point) {
33472 var enc = point.getY().toArray('le', this.encodingLength);
33473 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33474 return enc;
33475 };
33476
33477 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33478 bytes = utils.parseBytes(bytes);
33479
33480 var lastIx = bytes.length - 1;
33481 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33482 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
33483
33484 var y = utils.intFromLE(normed);
33485 return this.curve.pointFromY(y, xIsOdd);
33486 };
33487
33488 EDDSA.prototype.encodeInt = function encodeInt(num) {
33489 return num.toArray('le', this.encodingLength);
33490 };
33491
33492 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33493 return utils.intFromLE(bytes);
33494 };
33495
33496 EDDSA.prototype.isPoint = function isPoint(val) {
33497 return val instanceof this.pointClass;
33498 };
33499
33500 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33501 'use strict';
33502
33503 var elliptic = require('../../elliptic');
33504 var utils = elliptic.utils;
33505 var assert = utils.assert;
33506 var parseBytes = utils.parseBytes;
33507 var cachedProperty = utils.cachedProperty;
33508
33509 /**
33510 * @param {EDDSA} eddsa - instance
33511 * @param {Object} params - public/private key parameters
33512 *
33513 * @param {Array<Byte>} [params.secret] - secret seed bytes
33514 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33515 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33516 *
33517 */
33518 function KeyPair(eddsa, params) {
33519 this.eddsa = eddsa;
33520 this._secret = parseBytes(params.secret);
33521 if (eddsa.isPoint(params.pub))
33522 this._pub = params.pub;
33523 else
33524 this._pubBytes = parseBytes(params.pub);
33525 }
33526
33527 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33528 if (pub instanceof KeyPair)
33529 return pub;
33530 return new KeyPair(eddsa, { pub: pub });
33531 };
33532
33533 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33534 if (secret instanceof KeyPair)
33535 return secret;
33536 return new KeyPair(eddsa, { secret: secret });
33537 };
33538
33539 KeyPair.prototype.secret = function secret() {
33540 return this._secret;
33541 };
33542
33543 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33544 return this.eddsa.encodePoint(this.pub());
33545 });
33546
33547 cachedProperty(KeyPair, 'pub', function pub() {
33548 if (this._pubBytes)
33549 return this.eddsa.decodePoint(this._pubBytes);
33550 return this.eddsa.g.mul(this.priv());
33551 });
33552
33553 cachedProperty(KeyPair, 'privBytes', function privBytes() {
33554 var eddsa = this.eddsa;
33555 var hash = this.hash();
33556 var lastIx = eddsa.encodingLength - 1;
33557
33558 var a = hash.slice(0, eddsa.encodingLength);
33559 a[0] &= 248;
33560 a[lastIx] &= 127;
33561 a[lastIx] |= 64;
33562
33563 return a;
33564 });
33565
33566 cachedProperty(KeyPair, 'priv', function priv() {
33567 return this.eddsa.decodeInt(this.privBytes());
33568 });
33569
33570 cachedProperty(KeyPair, 'hash', function hash() {
33571 return this.eddsa.hash().update(this.secret()).digest();
33572 });
33573
33574 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33575 return this.hash().slice(this.eddsa.encodingLength);
33576 });
33577
33578 KeyPair.prototype.sign = function sign(message) {
33579 assert(this._secret, 'KeyPair can only verify');
33580 return this.eddsa.sign(message, this);
33581 };
33582
33583 KeyPair.prototype.verify = function verify(message, sig) {
33584 return this.eddsa.verify(message, sig, this);
33585 };
33586
33587 KeyPair.prototype.getSecret = function getSecret(enc) {
33588 assert(this._secret, 'KeyPair is public only');
33589 return utils.encode(this.secret(), enc);
33590 };
33591
33592 KeyPair.prototype.getPublic = function getPublic(enc) {
33593 return utils.encode(this.pubBytes(), enc);
33594 };
33595
33596 module.exports = KeyPair;
33597
33598 },{"../../elliptic":39}],51:[function(require,module,exports){
33599 'use strict';
33600
33601 var BN = require('bn.js');
33602 var elliptic = require('../../elliptic');
33603 var utils = elliptic.utils;
33604 var assert = utils.assert;
33605 var cachedProperty = utils.cachedProperty;
33606 var parseBytes = utils.parseBytes;
33607
33608 /**
33609 * @param {EDDSA} eddsa - eddsa instance
33610 * @param {Array<Bytes>|Object} sig -
33611 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33612 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33613 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33614 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33615 */
33616 function Signature(eddsa, sig) {
33617 this.eddsa = eddsa;
33618
33619 if (typeof sig !== 'object')
33620 sig = parseBytes(sig);
33621
33622 if (Array.isArray(sig)) {
33623 sig = {
33624 R: sig.slice(0, eddsa.encodingLength),
33625 S: sig.slice(eddsa.encodingLength)
33626 };
33627 }
33628
33629 assert(sig.R && sig.S, 'Signature without R or S');
33630
33631 if (eddsa.isPoint(sig.R))
33632 this._R = sig.R;
33633 if (sig.S instanceof BN)
33634 this._S = sig.S;
33635
33636 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33637 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
33638 }
33639
33640 cachedProperty(Signature, 'S', function S() {
33641 return this.eddsa.decodeInt(this.Sencoded());
33642 });
33643
33644 cachedProperty(Signature, 'R', function R() {
33645 return this.eddsa.decodePoint(this.Rencoded());
33646 });
33647
33648 cachedProperty(Signature, 'Rencoded', function Rencoded() {
33649 return this.eddsa.encodePoint(this.R());
33650 });
33651
33652 cachedProperty(Signature, 'Sencoded', function Sencoded() {
33653 return this.eddsa.encodeInt(this.S());
33654 });
33655
33656 Signature.prototype.toBytes = function toBytes() {
33657 return this.Rencoded().concat(this.Sencoded());
33658 };
33659
33660 Signature.prototype.toHex = function toHex() {
33661 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33662 };
33663
33664 module.exports = Signature;
33665
33666 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33667 'use strict';
33668
33669 var hash = require('hash.js');
33670 var elliptic = require('../elliptic');
33671 var utils = elliptic.utils;
33672 var assert = utils.assert;
33673
33674 function HmacDRBG(options) {
33675 if (!(this instanceof HmacDRBG))
33676 return new HmacDRBG(options);
33677 this.hash = options.hash;
33678 this.predResist = !!options.predResist;
33679
33680 this.outLen = this.hash.outSize;
33681 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
33682
33683 this.reseed = null;
33684 this.reseedInterval = null;
33685 this.K = null;
33686 this.V = null;
33687
33688 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33689 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33690 var pers = utils.toArray(options.pers, options.persEnc);
33691 assert(entropy.length >= (this.minEntropy / 8),
33692 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33693 this._init(entropy, nonce, pers);
33694 }
33695 module.exports = HmacDRBG;
33696
33697 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33698 var seed = entropy.concat(nonce).concat(pers);
33699
33700 this.K = new Array(this.outLen / 8);
33701 this.V = new Array(this.outLen / 8);
33702 for (var i = 0; i < this.V.length; i++) {
33703 this.K[i] = 0x00;
33704 this.V[i] = 0x01;
33705 }
33706
33707 this._update(seed);
33708 this.reseed = 1;
33709 this.reseedInterval = 0x1000000000000; // 2^48
33710 };
33711
33712 HmacDRBG.prototype._hmac = function hmac() {
33713 return new hash.hmac(this.hash, this.K);
33714 };
33715
33716 HmacDRBG.prototype._update = function update(seed) {
33717 var kmac = this._hmac()
33718 .update(this.V)
33719 .update([ 0x00 ]);
33720 if (seed)
33721 kmac = kmac.update(seed);
33722 this.K = kmac.digest();
33723 this.V = this._hmac().update(this.V).digest();
33724 if (!seed)
33725 return;
33726
33727 this.K = this._hmac()
33728 .update(this.V)
33729 .update([ 0x01 ])
33730 .update(seed)
33731 .digest();
33732 this.V = this._hmac().update(this.V).digest();
33733 };
33734
33735 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33736 // Optional entropy enc
33737 if (typeof entropyEnc !== 'string') {
33738 addEnc = add;
33739 add = entropyEnc;
33740 entropyEnc = null;
33741 }
33742
33743 entropy = utils.toBuffer(entropy, entropyEnc);
33744 add = utils.toBuffer(add, addEnc);
33745
33746 assert(entropy.length >= (this.minEntropy / 8),
33747 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33748
33749 this._update(entropy.concat(add || []));
33750 this.reseed = 1;
33751 };
33752
33753 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33754 if (this.reseed > this.reseedInterval)
33755 throw new Error('Reseed is required');
33756
33757 // Optional encoding
33758 if (typeof enc !== 'string') {
33759 addEnc = add;
33760 add = enc;
33761 enc = null;
33762 }
33763
33764 // Optional additional data
33765 if (add) {
33766 add = utils.toArray(add, addEnc);
33767 this._update(add);
33768 }
33769
33770 var temp = [];
33771 while (temp.length < len) {
33772 this.V = this._hmac().update(this.V).digest();
33773 temp = temp.concat(this.V);
33774 }
33775
33776 var res = temp.slice(0, len);
33777 this._update(add);
33778 this.reseed++;
33779 return utils.encode(res, enc);
33780 };
33781
33782 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33783 module.exports = {
33784 doubles: {
33785 step: 4,
33786 points: [
33787 [
33788 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33789 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33790 ],
33791 [
33792 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33793 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33794 ],
33795 [
33796 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33797 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33798 ],
33799 [
33800 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33801 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33802 ],
33803 [
33804 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33805 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33806 ],
33807 [
33808 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33809 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33810 ],
33811 [
33812 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33813 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33814 ],
33815 [
33816 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33817 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33818 ],
33819 [
33820 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33821 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33822 ],
33823 [
33824 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33825 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33826 ],
33827 [
33828 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33829 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33830 ],
33831 [
33832 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33833 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33834 ],
33835 [
33836 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33837 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33838 ],
33839 [
33840 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33841 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33842 ],
33843 [
33844 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33845 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33846 ],
33847 [
33848 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33849 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33850 ],
33851 [
33852 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33853 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33854 ],
33855 [
33856 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33857 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33858 ],
33859 [
33860 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33861 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33862 ],
33863 [
33864 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33865 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33866 ],
33867 [
33868 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33869 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33870 ],
33871 [
33872 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33873 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33874 ],
33875 [
33876 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33877 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33878 ],
33879 [
33880 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33881 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33882 ],
33883 [
33884 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33885 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33886 ],
33887 [
33888 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33889 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33890 ],
33891 [
33892 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33893 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33894 ],
33895 [
33896 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33897 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33898 ],
33899 [
33900 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33901 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33902 ],
33903 [
33904 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33905 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33906 ],
33907 [
33908 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33909 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33910 ],
33911 [
33912 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33913 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33914 ],
33915 [
33916 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33917 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33918 ],
33919 [
33920 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33921 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33922 ],
33923 [
33924 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33925 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33926 ],
33927 [
33928 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33929 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33930 ],
33931 [
33932 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33933 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33934 ],
33935 [
33936 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33937 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33938 ],
33939 [
33940 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33941 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33942 ],
33943 [
33944 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33945 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33946 ],
33947 [
33948 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33949 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33950 ],
33951 [
33952 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33953 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33954 ],
33955 [
33956 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33957 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33958 ],
33959 [
33960 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33961 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33962 ],
33963 [
33964 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33965 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33966 ],
33967 [
33968 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33969 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33970 ],
33971 [
33972 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33973 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33974 ],
33975 [
33976 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33977 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33978 ],
33979 [
33980 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33981 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33982 ],
33983 [
33984 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33985 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33986 ],
33987 [
33988 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33989 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
33990 ],
33991 [
33992 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
33993 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
33994 ],
33995 [
33996 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
33997 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
33998 ],
33999 [
34000 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
34001 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
34002 ],
34003 [
34004 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
34005 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
34006 ],
34007 [
34008 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
34009 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
34010 ],
34011 [
34012 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
34013 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
34014 ],
34015 [
34016 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
34017 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
34018 ],
34019 [
34020 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
34021 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
34022 ],
34023 [
34024 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
34025 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
34026 ],
34027 [
34028 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
34029 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
34030 ],
34031 [
34032 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
34033 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
34034 ],
34035 [
34036 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34037 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34038 ],
34039 [
34040 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34041 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34042 ],
34043 [
34044 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34045 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34046 ]
34047 ]
34048 },
34049 naf: {
34050 wnd: 7,
34051 points: [
34052 [
34053 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34054 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34055 ],
34056 [
34057 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34058 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34059 ],
34060 [
34061 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34062 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34063 ],
34064 [
34065 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34066 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34067 ],
34068 [
34069 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34070 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34071 ],
34072 [
34073 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34074 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34075 ],
34076 [
34077 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34078 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34079 ],
34080 [
34081 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34082 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34083 ],
34084 [
34085 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34086 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34087 ],
34088 [
34089 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34090 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34091 ],
34092 [
34093 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34094 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34095 ],
34096 [
34097 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34098 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34099 ],
34100 [
34101 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34102 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34103 ],
34104 [
34105 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34106 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34107 ],
34108 [
34109 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34110 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34111 ],
34112 [
34113 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34114 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34115 ],
34116 [
34117 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34118 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34119 ],
34120 [
34121 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34122 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34123 ],
34124 [
34125 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34126 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34127 ],
34128 [
34129 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34130 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34131 ],
34132 [
34133 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34134 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34135 ],
34136 [
34137 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34138 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34139 ],
34140 [
34141 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34142 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34143 ],
34144 [
34145 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34146 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34147 ],
34148 [
34149 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34150 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34151 ],
34152 [
34153 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34154 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34155 ],
34156 [
34157 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34158 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34159 ],
34160 [
34161 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34162 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34163 ],
34164 [
34165 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34166 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34167 ],
34168 [
34169 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34170 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34171 ],
34172 [
34173 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34174 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34175 ],
34176 [
34177 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34178 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34179 ],
34180 [
34181 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34182 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34183 ],
34184 [
34185 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34186 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34187 ],
34188 [
34189 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34190 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34191 ],
34192 [
34193 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34194 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34195 ],
34196 [
34197 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34198 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34199 ],
34200 [
34201 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34202 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34203 ],
34204 [
34205 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34206 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34207 ],
34208 [
34209 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34210 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34211 ],
34212 [
34213 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34214 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34215 ],
34216 [
34217 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34218 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34219 ],
34220 [
34221 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34222 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34223 ],
34224 [
34225 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34226 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34227 ],
34228 [
34229 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34230 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34231 ],
34232 [
34233 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34234 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34235 ],
34236 [
34237 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34238 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34239 ],
34240 [
34241 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34242 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34243 ],
34244 [
34245 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34246 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34247 ],
34248 [
34249 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34250 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34251 ],
34252 [
34253 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34254 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34255 ],
34256 [
34257 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34258 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34259 ],
34260 [
34261 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34262 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34263 ],
34264 [
34265 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34266 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34267 ],
34268 [
34269 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34270 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34271 ],
34272 [
34273 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34274 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34275 ],
34276 [
34277 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34278 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34279 ],
34280 [
34281 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34282 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34283 ],
34284 [
34285 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34286 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34287 ],
34288 [
34289 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34290 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34291 ],
34292 [
34293 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34294 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34295 ],
34296 [
34297 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34298 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34299 ],
34300 [
34301 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34302 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34303 ],
34304 [
34305 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34306 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34307 ],
34308 [
34309 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34310 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34311 ],
34312 [
34313 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34314 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34315 ],
34316 [
34317 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34318 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34319 ],
34320 [
34321 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34322 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34323 ],
34324 [
34325 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34326 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34327 ],
34328 [
34329 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34330 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34331 ],
34332 [
34333 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34334 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34335 ],
34336 [
34337 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34338 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34339 ],
34340 [
34341 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34342 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34343 ],
34344 [
34345 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34346 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34347 ],
34348 [
34349 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34350 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34351 ],
34352 [
34353 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34354 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34355 ],
34356 [
34357 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34358 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34359 ],
34360 [
34361 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34362 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34363 ],
34364 [
34365 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34366 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34367 ],
34368 [
34369 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34370 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34371 ],
34372 [
34373 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34374 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34375 ],
34376 [
34377 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34378 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34379 ],
34380 [
34381 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34382 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34383 ],
34384 [
34385 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34386 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34387 ],
34388 [
34389 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34390 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34391 ],
34392 [
34393 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34394 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34395 ],
34396 [
34397 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34398 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34399 ],
34400 [
34401 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34402 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34403 ],
34404 [
34405 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34406 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34407 ],
34408 [
34409 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34410 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34411 ],
34412 [
34413 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34414 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34415 ],
34416 [
34417 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34418 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34419 ],
34420 [
34421 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34422 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34423 ],
34424 [
34425 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34426 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34427 ],
34428 [
34429 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34430 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34431 ],
34432 [
34433 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34434 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34435 ],
34436 [
34437 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34438 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34439 ],
34440 [
34441 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34442 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34443 ],
34444 [
34445 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34446 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34447 ],
34448 [
34449 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34450 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34451 ],
34452 [
34453 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34454 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34455 ],
34456 [
34457 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34458 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34459 ],
34460 [
34461 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34462 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34463 ],
34464 [
34465 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34466 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34467 ],
34468 [
34469 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34470 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34471 ],
34472 [
34473 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34474 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34475 ],
34476 [
34477 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34478 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34479 ],
34480 [
34481 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34482 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34483 ],
34484 [
34485 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34486 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34487 ],
34488 [
34489 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34490 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34491 ],
34492 [
34493 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34494 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34495 ],
34496 [
34497 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34498 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34499 ],
34500 [
34501 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34502 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34503 ],
34504 [
34505 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34506 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34507 ],
34508 [
34509 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34510 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34511 ],
34512 [
34513 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34514 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34515 ],
34516 [
34517 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34518 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34519 ],
34520 [
34521 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34522 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34523 ],
34524 [
34525 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34526 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34527 ],
34528 [
34529 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34530 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34531 ],
34532 [
34533 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34534 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34535 ],
34536 [
34537 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34538 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34539 ],
34540 [
34541 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34542 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34543 ],
34544 [
34545 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34546 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34547 ],
34548 [
34549 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34550 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34551 ],
34552 [
34553 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34554 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34555 ],
34556 [
34557 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34558 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34559 ]
34560 ]
34561 }
34562 };
34563
34564 },{}],54:[function(require,module,exports){
34565 'use strict';
34566
34567 var utils = exports;
34568 var BN = require('bn.js');
34569
34570 utils.assert = function assert(val, msg) {
34571 if (!val)
34572 throw new Error(msg || 'Assertion failed');
34573 };
34574
34575 function toArray(msg, enc) {
34576 if (Array.isArray(msg))
34577 return msg.slice();
34578 if (!msg)
34579 return [];
34580 var res = [];
34581 if (typeof msg !== 'string') {
34582 for (var i = 0; i < msg.length; i++)
34583 res[i] = msg[i] | 0;
34584 return res;
34585 }
34586 if (!enc) {
34587 for (var i = 0; i < msg.length; i++) {
34588 var c = msg.charCodeAt(i);
34589 var hi = c >> 8;
34590 var lo = c & 0xff;
34591 if (hi)
34592 res.push(hi, lo);
34593 else
34594 res.push(lo);
34595 }
34596 } else if (enc === 'hex') {
34597 msg = msg.replace(/[^a-z0-9]+/ig, '');
34598 if (msg.length % 2 !== 0)
34599 msg = '0' + msg;
34600 for (var i = 0; i < msg.length; i += 2)
34601 res.push(parseInt(msg[i] + msg[i + 1], 16));
34602 }
34603 return res;
34604 }
34605 utils.toArray = toArray;
34606
34607 function zero2(word) {
34608 if (word.length === 1)
34609 return '0' + word;
34610 else
34611 return word;
34612 }
34613 utils.zero2 = zero2;
34614
34615 function toHex(msg) {
34616 var res = '';
34617 for (var i = 0; i < msg.length; i++)
34618 res += zero2(msg[i].toString(16));
34619 return res;
34620 }
34621 utils.toHex = toHex;
34622
34623 utils.encode = function encode(arr, enc) {
34624 if (enc === 'hex')
34625 return toHex(arr);
34626 else
34627 return arr;
34628 };
34629
34630 // Represent num in a w-NAF form
34631 function getNAF(num, w) {
34632 var naf = [];
34633 var ws = 1 << (w + 1);
34634 var k = num.clone();
34635 while (k.cmpn(1) >= 0) {
34636 var z;
34637 if (k.isOdd()) {
34638 var mod = k.andln(ws - 1);
34639 if (mod > (ws >> 1) - 1)
34640 z = (ws >> 1) - mod;
34641 else
34642 z = mod;
34643 k.isubn(z);
34644 } else {
34645 z = 0;
34646 }
34647 naf.push(z);
34648
34649 // Optimization, shift by word if possible
34650 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34651 for (var i = 1; i < shift; i++)
34652 naf.push(0);
34653 k.iushrn(shift);
34654 }
34655
34656 return naf;
34657 }
34658 utils.getNAF = getNAF;
34659
34660 // Represent k1, k2 in a Joint Sparse Form
34661 function getJSF(k1, k2) {
34662 var jsf = [
34663 [],
34664 []
34665 ];
34666
34667 k1 = k1.clone();
34668 k2 = k2.clone();
34669 var d1 = 0;
34670 var d2 = 0;
34671 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34672
34673 // First phase
34674 var m14 = (k1.andln(3) + d1) & 3;
34675 var m24 = (k2.andln(3) + d2) & 3;
34676 if (m14 === 3)
34677 m14 = -1;
34678 if (m24 === 3)
34679 m24 = -1;
34680 var u1;
34681 if ((m14 & 1) === 0) {
34682 u1 = 0;
34683 } else {
34684 var m8 = (k1.andln(7) + d1) & 7;
34685 if ((m8 === 3 || m8 === 5) && m24 === 2)
34686 u1 = -m14;
34687 else
34688 u1 = m14;
34689 }
34690 jsf[0].push(u1);
34691
34692 var u2;
34693 if ((m24 & 1) === 0) {
34694 u2 = 0;
34695 } else {
34696 var m8 = (k2.andln(7) + d2) & 7;
34697 if ((m8 === 3 || m8 === 5) && m14 === 2)
34698 u2 = -m24;
34699 else
34700 u2 = m24;
34701 }
34702 jsf[1].push(u2);
34703
34704 // Second phase
34705 if (2 * d1 === u1 + 1)
34706 d1 = 1 - d1;
34707 if (2 * d2 === u2 + 1)
34708 d2 = 1 - d2;
34709 k1.iushrn(1);
34710 k2.iushrn(1);
34711 }
34712
34713 return jsf;
34714 }
34715 utils.getJSF = getJSF;
34716
34717 function cachedProperty(obj, name, computer) {
34718 var key = '_' + name;
34719 obj.prototype[name] = function cachedProperty() {
34720 return this[key] !== undefined ? this[key] :
34721 this[key] = computer.call(this);
34722 };
34723 }
34724 utils.cachedProperty = cachedProperty;
34725
34726 function parseBytes(bytes) {
34727 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34728 bytes;
34729 }
34730 utils.parseBytes = parseBytes;
34731
34732 function intFromLE(bytes) {
34733 return new BN(bytes, 'hex', 'le');
34734 }
34735 utils.intFromLE = intFromLE;
34736
34737
34738 },{"bn.js":33}],55:[function(require,module,exports){
34739 module.exports={
34740 "_args": [
34741 [
34742 {
34743 "raw": "elliptic@^6.2.3",
34744 "scope": null,
34745 "escapedName": "elliptic",
34746 "name": "elliptic",
34747 "rawSpec": "^6.2.3",
34748 "spec": ">=6.2.3 <7.0.0",
34749 "type": "range"
34750 },
34751 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34752 ]
34753 ],
34754 "_from": "elliptic@>=6.2.3 <7.0.0",
34755 "_id": "elliptic@6.3.3",
34756 "_inCache": true,
34757 "_location": "/elliptic",
34758 "_nodeVersion": "7.0.0",
34759 "_npmOperationalInternal": {
34760 "host": "packages-18-east.internal.npmjs.com",
34761 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34762 },
34763 "_npmUser": {
34764 "name": "indutny",
34765 "email": "fedor@indutny.com"
34766 },
34767 "_npmVersion": "3.10.8",
34768 "_phantomChildren": {},
34769 "_requested": {
34770 "raw": "elliptic@^6.2.3",
34771 "scope": null,
34772 "escapedName": "elliptic",
34773 "name": "elliptic",
34774 "rawSpec": "^6.2.3",
34775 "spec": ">=6.2.3 <7.0.0",
34776 "type": "range"
34777 },
34778 "_requiredBy": [
34779 "/browserify-sign",
34780 "/create-ecdh",
34781 "/secp256k1"
34782 ],
34783 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34784 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34785 "_shrinkwrap": null,
34786 "_spec": "elliptic@^6.2.3",
34787 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34788 "author": {
34789 "name": "Fedor Indutny",
34790 "email": "fedor@indutny.com"
34791 },
34792 "bugs": {
34793 "url": "https://github.com/indutny/elliptic/issues"
34794 },
34795 "dependencies": {
34796 "bn.js": "^4.4.0",
34797 "brorand": "^1.0.1",
34798 "hash.js": "^1.0.0",
34799 "inherits": "^2.0.1"
34800 },
34801 "description": "EC cryptography",
34802 "devDependencies": {
34803 "brfs": "^1.4.3",
34804 "coveralls": "^2.11.3",
34805 "grunt": "^0.4.5",
34806 "grunt-browserify": "^5.0.0",
34807 "grunt-cli": "^1.2.0",
34808 "grunt-contrib-connect": "^1.0.0",
34809 "grunt-contrib-copy": "^1.0.0",
34810 "grunt-contrib-uglify": "^1.0.1",
34811 "grunt-mocha-istanbul": "^3.0.1",
34812 "grunt-saucelabs": "^8.6.2",
34813 "istanbul": "^0.4.2",
34814 "jscs": "^2.9.0",
34815 "jshint": "^2.6.0",
34816 "mocha": "^2.1.0"
34817 },
34818 "directories": {},
34819 "dist": {
34820 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34821 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34822 },
34823 "files": [
34824 "lib"
34825 ],
34826 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34827 "homepage": "https://github.com/indutny/elliptic",
34828 "keywords": [
34829 "EC",
34830 "Elliptic",
34831 "curve",
34832 "Cryptography"
34833 ],
34834 "license": "MIT",
34835 "main": "lib/elliptic.js",
34836 "maintainers": [
34837 {
34838 "name": "indutny",
34839 "email": "fedor@indutny.com"
34840 }
34841 ],
34842 "name": "elliptic",
34843 "optionalDependencies": {},
34844 "readme": "ERROR: No README data found!",
34845 "repository": {
34846 "type": "git",
34847 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34848 },
34849 "scripts": {
34850 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34851 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34852 "lint": "npm run jscs && npm run jshint",
34853 "test": "npm run lint && npm run unit",
34854 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34855 "version": "grunt dist && git add dist/"
34856 },
34857 "version": "6.3.3"
34858 }
34859
34860 },{}],56:[function(require,module,exports){
34861 (function (Buffer){
34862 'use strict';
34863
34864 var isHexPrefixed = require('is-hex-prefixed');
34865 var stripHexPrefix = require('strip-hex-prefix');
34866
34867 /**
34868 * Pads a `String` to have an even length
34869 * @param {String} value
34870 * @return {String} output
34871 */
34872 function padToEven(value) {
34873 var a = value; // eslint-disable-line
34874
34875 if (typeof a !== 'string') {
34876 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34877 }
34878
34879 if (a.length % 2) {
34880 a = '0' + a;
34881 }
34882
34883 return a;
34884 }
34885
34886 /**
34887 * Converts a `Number` into a hex `String`
34888 * @param {Number} i
34889 * @return {String}
34890 */
34891 function intToHex(i) {
34892 var hex = i.toString(16); // eslint-disable-line
34893
34894 return '0x' + padToEven(hex);
34895 }
34896
34897 /**
34898 * Converts an `Number` to a `Buffer`
34899 * @param {Number} i
34900 * @return {Buffer}
34901 */
34902 function intToBuffer(i) {
34903 var hex = intToHex(i);
34904
34905 return new Buffer(hex.slice(2), 'hex');
34906 }
34907
34908 /**
34909 * Get the binary size of a string
34910 * @param {String} str
34911 * @return {Number}
34912 */
34913 function getBinarySize(str) {
34914 if (typeof str !== 'string') {
34915 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34916 }
34917
34918 return Buffer.byteLength(str, 'utf8');
34919 }
34920
34921 /**
34922 * Returns TRUE if the first specified array contains all elements
34923 * from the second one. FALSE otherwise.
34924 *
34925 * @param {array} superset
34926 * @param {array} subset
34927 *
34928 * @returns {boolean}
34929 */
34930 function arrayContainsArray(superset, subset, some) {
34931 if (Array.isArray(superset) !== true) {
34932 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34933 }
34934 if (Array.isArray(subset) !== true) {
34935 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
34936 }
34937
34938 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34939 return superset.indexOf(value) >= 0;
34940 });
34941 }
34942
34943 /**
34944 * Should be called to get utf8 from it's hex representation
34945 *
34946 * @method toUtf8
34947 * @param {String} string in hex
34948 * @returns {String} ascii string representation of hex value
34949 */
34950 function toUtf8(hex) {
34951 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
34952
34953 return bufferValue.toString('utf8');
34954 }
34955
34956 /**
34957 * Should be called to get ascii from it's hex representation
34958 *
34959 * @method toAscii
34960 * @param {String} string in hex
34961 * @returns {String} ascii string representation of hex value
34962 */
34963 function toAscii(hex) {
34964 var str = ''; // eslint-disable-line
34965 var i = 0,
34966 l = hex.length; // eslint-disable-line
34967
34968 if (hex.substring(0, 2) === '0x') {
34969 i = 2;
34970 }
34971
34972 for (; i < l; i += 2) {
34973 var code = parseInt(hex.substr(i, 2), 16);
34974 str += String.fromCharCode(code);
34975 }
34976
34977 return str;
34978 }
34979
34980 /**
34981 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34982 *
34983 * @method fromUtf8
34984 * @param {String} string
34985 * @param {Number} optional padding
34986 * @returns {String} hex representation of input string
34987 */
34988 function fromUtf8(stringValue) {
34989 var str = new Buffer(stringValue, 'utf8');
34990
34991 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
34992 }
34993
34994 /**
34995 * Should be called to get hex representation (prefixed by 0x) of ascii string
34996 *
34997 * @method fromAscii
34998 * @param {String} string
34999 * @param {Number} optional padding
35000 * @returns {String} hex representation of input string
35001 */
35002 function fromAscii(stringValue) {
35003 var hex = ''; // eslint-disable-line
35004 for (var i = 0; i < stringValue.length; i++) {
35005 // eslint-disable-line
35006 var code = stringValue.charCodeAt(i);
35007 var n = code.toString(16);
35008 hex += n.length < 2 ? '0' + n : n;
35009 }
35010
35011 return '0x' + hex;
35012 }
35013
35014 /**
35015 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
35016 *
35017 * @method getKeys get specific key from inner object array of objects
35018 * @param {String} params
35019 * @param {String} key
35020 * @param {Boolean} allowEmpty
35021 * @returns {Array} output just a simple array of output keys
35022 */
35023 function getKeys(params, key, allowEmpty) {
35024 if (!Array.isArray(params)) {
35025 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
35026 }
35027 if (typeof key !== 'string') {
35028 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
35029 }
35030
35031 var result = []; // eslint-disable-line
35032
35033 for (var i = 0; i < params.length; i++) {
35034 // eslint-disable-line
35035 var value = params[i][key]; // eslint-disable-line
35036 if (allowEmpty && !value) {
35037 value = '';
35038 } else if (typeof value !== 'string') {
35039 throw new Error('invalid abi');
35040 }
35041 result.push(value);
35042 }
35043
35044 return result;
35045 }
35046
35047 /**
35048 * Is the string a hex string.
35049 *
35050 * @method check if string is hex string of specific length
35051 * @param {String} value
35052 * @param {Number} length
35053 * @returns {Boolean} output the string is a hex string
35054 */
35055 function isHexString(value, length) {
35056 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35057 return false;
35058 }
35059
35060 if (length && value.length !== 2 + 2 * length) {
35061 return false;
35062 }
35063
35064 return true;
35065 }
35066
35067 module.exports = {
35068 arrayContainsArray: arrayContainsArray,
35069 intToBuffer: intToBuffer,
35070 getBinarySize: getBinarySize,
35071 isHexPrefixed: isHexPrefixed,
35072 stripHexPrefix: stripHexPrefix,
35073 padToEven: padToEven,
35074 intToHex: intToHex,
35075 fromAscii: fromAscii,
35076 fromUtf8: fromUtf8,
35077 toAscii: toAscii,
35078 toUtf8: toUtf8,
35079 getKeys: getKeys,
35080 isHexString: isHexString
35081 };
35082 }).call(this,require("buffer").Buffer)
35083 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35084 var hash = exports;
35085
35086 hash.utils = require('./hash/utils');
35087 hash.common = require('./hash/common');
35088 hash.sha = require('./hash/sha');
35089 hash.ripemd = require('./hash/ripemd');
35090 hash.hmac = require('./hash/hmac');
35091
35092 // Proxy hash functions to the main object
35093 hash.sha1 = hash.sha.sha1;
35094 hash.sha256 = hash.sha.sha256;
35095 hash.sha224 = hash.sha.sha224;
35096 hash.sha384 = hash.sha.sha384;
35097 hash.sha512 = hash.sha.sha512;
35098 hash.ripemd160 = hash.ripemd.ripemd160;
35099
35100 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35101 var hash = require('../hash');
35102 var utils = hash.utils;
35103 var assert = utils.assert;
35104
35105 function BlockHash() {
35106 this.pending = null;
35107 this.pendingTotal = 0;
35108 this.blockSize = this.constructor.blockSize;
35109 this.outSize = this.constructor.outSize;
35110 this.hmacStrength = this.constructor.hmacStrength;
35111 this.padLength = this.constructor.padLength / 8;
35112 this.endian = 'big';
35113
35114 this._delta8 = this.blockSize / 8;
35115 this._delta32 = this.blockSize / 32;
35116 }
35117 exports.BlockHash = BlockHash;
35118
35119 BlockHash.prototype.update = function update(msg, enc) {
35120 // Convert message to array, pad it, and join into 32bit blocks
35121 msg = utils.toArray(msg, enc);
35122 if (!this.pending)
35123 this.pending = msg;
35124 else
35125 this.pending = this.pending.concat(msg);
35126 this.pendingTotal += msg.length;
35127
35128 // Enough data, try updating
35129 if (this.pending.length >= this._delta8) {
35130 msg = this.pending;
35131
35132 // Process pending data in blocks
35133 var r = msg.length % this._delta8;
35134 this.pending = msg.slice(msg.length - r, msg.length);
35135 if (this.pending.length === 0)
35136 this.pending = null;
35137
35138 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35139 for (var i = 0; i < msg.length; i += this._delta32)
35140 this._update(msg, i, i + this._delta32);
35141 }
35142
35143 return this;
35144 };
35145
35146 BlockHash.prototype.digest = function digest(enc) {
35147 this.update(this._pad());
35148 assert(this.pending === null);
35149
35150 return this._digest(enc);
35151 };
35152
35153 BlockHash.prototype._pad = function pad() {
35154 var len = this.pendingTotal;
35155 var bytes = this._delta8;
35156 var k = bytes - ((len + this.padLength) % bytes);
35157 var res = new Array(k + this.padLength);
35158 res[0] = 0x80;
35159 for (var i = 1; i < k; i++)
35160 res[i] = 0;
35161
35162 // Append length
35163 len <<= 3;
35164 if (this.endian === 'big') {
35165 for (var t = 8; t < this.padLength; t++)
35166 res[i++] = 0;
35167
35168 res[i++] = 0;
35169 res[i++] = 0;
35170 res[i++] = 0;
35171 res[i++] = 0;
35172 res[i++] = (len >>> 24) & 0xff;
35173 res[i++] = (len >>> 16) & 0xff;
35174 res[i++] = (len >>> 8) & 0xff;
35175 res[i++] = len & 0xff;
35176 } else {
35177 res[i++] = len & 0xff;
35178 res[i++] = (len >>> 8) & 0xff;
35179 res[i++] = (len >>> 16) & 0xff;
35180 res[i++] = (len >>> 24) & 0xff;
35181 res[i++] = 0;
35182 res[i++] = 0;
35183 res[i++] = 0;
35184 res[i++] = 0;
35185
35186 for (var t = 8; t < this.padLength; t++)
35187 res[i++] = 0;
35188 }
35189
35190 return res;
35191 };
35192
35193 },{"../hash":57}],59:[function(require,module,exports){
35194 var hmac = exports;
35195
35196 var hash = require('../hash');
35197 var utils = hash.utils;
35198 var assert = utils.assert;
35199
35200 function Hmac(hash, key, enc) {
35201 if (!(this instanceof Hmac))
35202 return new Hmac(hash, key, enc);
35203 this.Hash = hash;
35204 this.blockSize = hash.blockSize / 8;
35205 this.outSize = hash.outSize / 8;
35206 this.inner = null;
35207 this.outer = null;
35208
35209 this._init(utils.toArray(key, enc));
35210 }
35211 module.exports = Hmac;
35212
35213 Hmac.prototype._init = function init(key) {
35214 // Shorten key, if needed
35215 if (key.length > this.blockSize)
35216 key = new this.Hash().update(key).digest();
35217 assert(key.length <= this.blockSize);
35218
35219 // Add padding to key
35220 for (var i = key.length; i < this.blockSize; i++)
35221 key.push(0);
35222
35223 for (var i = 0; i < key.length; i++)
35224 key[i] ^= 0x36;
35225 this.inner = new this.Hash().update(key);
35226
35227 // 0x36 ^ 0x5c = 0x6a
35228 for (var i = 0; i < key.length; i++)
35229 key[i] ^= 0x6a;
35230 this.outer = new this.Hash().update(key);
35231 };
35232
35233 Hmac.prototype.update = function update(msg, enc) {
35234 this.inner.update(msg, enc);
35235 return this;
35236 };
35237
35238 Hmac.prototype.digest = function digest(enc) {
35239 this.outer.update(this.inner.digest());
35240 return this.outer.digest(enc);
35241 };
35242
35243 },{"../hash":57}],60:[function(require,module,exports){
35244 var hash = require('../hash');
35245 var utils = hash.utils;
35246
35247 var rotl32 = utils.rotl32;
35248 var sum32 = utils.sum32;
35249 var sum32_3 = utils.sum32_3;
35250 var sum32_4 = utils.sum32_4;
35251 var BlockHash = hash.common.BlockHash;
35252
35253 function RIPEMD160() {
35254 if (!(this instanceof RIPEMD160))
35255 return new RIPEMD160();
35256
35257 BlockHash.call(this);
35258
35259 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35260 this.endian = 'little';
35261 }
35262 utils.inherits(RIPEMD160, BlockHash);
35263 exports.ripemd160 = RIPEMD160;
35264
35265 RIPEMD160.blockSize = 512;
35266 RIPEMD160.outSize = 160;
35267 RIPEMD160.hmacStrength = 192;
35268 RIPEMD160.padLength = 64;
35269
35270 RIPEMD160.prototype._update = function update(msg, start) {
35271 var A = this.h[0];
35272 var B = this.h[1];
35273 var C = this.h[2];
35274 var D = this.h[3];
35275 var E = this.h[4];
35276 var Ah = A;
35277 var Bh = B;
35278 var Ch = C;
35279 var Dh = D;
35280 var Eh = E;
35281 for (var j = 0; j < 80; j++) {
35282 var T = sum32(
35283 rotl32(
35284 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35285 s[j]),
35286 E);
35287 A = E;
35288 E = D;
35289 D = rotl32(C, 10);
35290 C = B;
35291 B = T;
35292 T = sum32(
35293 rotl32(
35294 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35295 sh[j]),
35296 Eh);
35297 Ah = Eh;
35298 Eh = Dh;
35299 Dh = rotl32(Ch, 10);
35300 Ch = Bh;
35301 Bh = T;
35302 }
35303 T = sum32_3(this.h[1], C, Dh);
35304 this.h[1] = sum32_3(this.h[2], D, Eh);
35305 this.h[2] = sum32_3(this.h[3], E, Ah);
35306 this.h[3] = sum32_3(this.h[4], A, Bh);
35307 this.h[4] = sum32_3(this.h[0], B, Ch);
35308 this.h[0] = T;
35309 };
35310
35311 RIPEMD160.prototype._digest = function digest(enc) {
35312 if (enc === 'hex')
35313 return utils.toHex32(this.h, 'little');
35314 else
35315 return utils.split32(this.h, 'little');
35316 };
35317
35318 function f(j, x, y, z) {
35319 if (j <= 15)
35320 return x ^ y ^ z;
35321 else if (j <= 31)
35322 return (x & y) | ((~x) & z);
35323 else if (j <= 47)
35324 return (x | (~y)) ^ z;
35325 else if (j <= 63)
35326 return (x & z) | (y & (~z));
35327 else
35328 return x ^ (y | (~z));
35329 }
35330
35331 function K(j) {
35332 if (j <= 15)
35333 return 0x00000000;
35334 else if (j <= 31)
35335 return 0x5a827999;
35336 else if (j <= 47)
35337 return 0x6ed9eba1;
35338 else if (j <= 63)
35339 return 0x8f1bbcdc;
35340 else
35341 return 0xa953fd4e;
35342 }
35343
35344 function Kh(j) {
35345 if (j <= 15)
35346 return 0x50a28be6;
35347 else if (j <= 31)
35348 return 0x5c4dd124;
35349 else if (j <= 47)
35350 return 0x6d703ef3;
35351 else if (j <= 63)
35352 return 0x7a6d76e9;
35353 else
35354 return 0x00000000;
35355 }
35356
35357 var r = [
35358 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35359 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35360 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35361 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35362 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35363 ];
35364
35365 var rh = [
35366 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35367 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35368 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35369 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35370 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35371 ];
35372
35373 var s = [
35374 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35375 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35376 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35377 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35378 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35379 ];
35380
35381 var sh = [
35382 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35383 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35384 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35385 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35386 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35387 ];
35388
35389 },{"../hash":57}],61:[function(require,module,exports){
35390 var hash = require('../hash');
35391 var utils = hash.utils;
35392 var assert = utils.assert;
35393
35394 var rotr32 = utils.rotr32;
35395 var rotl32 = utils.rotl32;
35396 var sum32 = utils.sum32;
35397 var sum32_4 = utils.sum32_4;
35398 var sum32_5 = utils.sum32_5;
35399 var rotr64_hi = utils.rotr64_hi;
35400 var rotr64_lo = utils.rotr64_lo;
35401 var shr64_hi = utils.shr64_hi;
35402 var shr64_lo = utils.shr64_lo;
35403 var sum64 = utils.sum64;
35404 var sum64_hi = utils.sum64_hi;
35405 var sum64_lo = utils.sum64_lo;
35406 var sum64_4_hi = utils.sum64_4_hi;
35407 var sum64_4_lo = utils.sum64_4_lo;
35408 var sum64_5_hi = utils.sum64_5_hi;
35409 var sum64_5_lo = utils.sum64_5_lo;
35410 var BlockHash = hash.common.BlockHash;
35411
35412 var sha256_K = [
35413 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35414 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35415 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35416 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35417 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35418 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35419 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35420 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35421 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35422 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35423 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35424 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35425 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35426 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35427 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35428 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35429 ];
35430
35431 var sha512_K = [
35432 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35433 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35434 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35435 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35436 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35437 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35438 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35439 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35440 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35441 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35442 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35443 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35444 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35445 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35446 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35447 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35448 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35449 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35450 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35451 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35452 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35453 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35454 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35455 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35456 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35457 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35458 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35459 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35460 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35461 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35462 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35463 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35464 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35465 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35466 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35467 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35468 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35469 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35470 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35471 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35472 ];
35473
35474 var sha1_K = [
35475 0x5A827999, 0x6ED9EBA1,
35476 0x8F1BBCDC, 0xCA62C1D6
35477 ];
35478
35479 function SHA256() {
35480 if (!(this instanceof SHA256))
35481 return new SHA256();
35482
35483 BlockHash.call(this);
35484 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35485 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35486 this.k = sha256_K;
35487 this.W = new Array(64);
35488 }
35489 utils.inherits(SHA256, BlockHash);
35490 exports.sha256 = SHA256;
35491
35492 SHA256.blockSize = 512;
35493 SHA256.outSize = 256;
35494 SHA256.hmacStrength = 192;
35495 SHA256.padLength = 64;
35496
35497 SHA256.prototype._update = function _update(msg, start) {
35498 var W = this.W;
35499
35500 for (var i = 0; i < 16; i++)
35501 W[i] = msg[start + i];
35502 for (; i < W.length; i++)
35503 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35504
35505 var a = this.h[0];
35506 var b = this.h[1];
35507 var c = this.h[2];
35508 var d = this.h[3];
35509 var e = this.h[4];
35510 var f = this.h[5];
35511 var g = this.h[6];
35512 var h = this.h[7];
35513
35514 assert(this.k.length === W.length);
35515 for (var i = 0; i < W.length; i++) {
35516 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35517 var T2 = sum32(s0_256(a), maj32(a, b, c));
35518 h = g;
35519 g = f;
35520 f = e;
35521 e = sum32(d, T1);
35522 d = c;
35523 c = b;
35524 b = a;
35525 a = sum32(T1, T2);
35526 }
35527
35528 this.h[0] = sum32(this.h[0], a);
35529 this.h[1] = sum32(this.h[1], b);
35530 this.h[2] = sum32(this.h[2], c);
35531 this.h[3] = sum32(this.h[3], d);
35532 this.h[4] = sum32(this.h[4], e);
35533 this.h[5] = sum32(this.h[5], f);
35534 this.h[6] = sum32(this.h[6], g);
35535 this.h[7] = sum32(this.h[7], h);
35536 };
35537
35538 SHA256.prototype._digest = function digest(enc) {
35539 if (enc === 'hex')
35540 return utils.toHex32(this.h, 'big');
35541 else
35542 return utils.split32(this.h, 'big');
35543 };
35544
35545 function SHA224() {
35546 if (!(this instanceof SHA224))
35547 return new SHA224();
35548
35549 SHA256.call(this);
35550 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35551 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35552 }
35553 utils.inherits(SHA224, SHA256);
35554 exports.sha224 = SHA224;
35555
35556 SHA224.blockSize = 512;
35557 SHA224.outSize = 224;
35558 SHA224.hmacStrength = 192;
35559 SHA224.padLength = 64;
35560
35561 SHA224.prototype._digest = function digest(enc) {
35562 // Just truncate output
35563 if (enc === 'hex')
35564 return utils.toHex32(this.h.slice(0, 7), 'big');
35565 else
35566 return utils.split32(this.h.slice(0, 7), 'big');
35567 };
35568
35569 function SHA512() {
35570 if (!(this instanceof SHA512))
35571 return new SHA512();
35572
35573 BlockHash.call(this);
35574 this.h = [ 0x6a09e667, 0xf3bcc908,
35575 0xbb67ae85, 0x84caa73b,
35576 0x3c6ef372, 0xfe94f82b,
35577 0xa54ff53a, 0x5f1d36f1,
35578 0x510e527f, 0xade682d1,
35579 0x9b05688c, 0x2b3e6c1f,
35580 0x1f83d9ab, 0xfb41bd6b,
35581 0x5be0cd19, 0x137e2179 ];
35582 this.k = sha512_K;
35583 this.W = new Array(160);
35584 }
35585 utils.inherits(SHA512, BlockHash);
35586 exports.sha512 = SHA512;
35587
35588 SHA512.blockSize = 1024;
35589 SHA512.outSize = 512;
35590 SHA512.hmacStrength = 192;
35591 SHA512.padLength = 128;
35592
35593 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35594 var W = this.W;
35595
35596 // 32 x 32bit words
35597 for (var i = 0; i < 32; i++)
35598 W[i] = msg[start + i];
35599 for (; i < W.length; i += 2) {
35600 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35601 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35602 var c1_hi = W[i - 14]; // i - 7
35603 var c1_lo = W[i - 13];
35604 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35605 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35606 var c3_hi = W[i - 32]; // i - 16
35607 var c3_lo = W[i - 31];
35608
35609 W[i] = sum64_4_hi(c0_hi, c0_lo,
35610 c1_hi, c1_lo,
35611 c2_hi, c2_lo,
35612 c3_hi, c3_lo);
35613 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35614 c1_hi, c1_lo,
35615 c2_hi, c2_lo,
35616 c3_hi, c3_lo);
35617 }
35618 };
35619
35620 SHA512.prototype._update = function _update(msg, start) {
35621 this._prepareBlock(msg, start);
35622
35623 var W = this.W;
35624
35625 var ah = this.h[0];
35626 var al = this.h[1];
35627 var bh = this.h[2];
35628 var bl = this.h[3];
35629 var ch = this.h[4];
35630 var cl = this.h[5];
35631 var dh = this.h[6];
35632 var dl = this.h[7];
35633 var eh = this.h[8];
35634 var el = this.h[9];
35635 var fh = this.h[10];
35636 var fl = this.h[11];
35637 var gh = this.h[12];
35638 var gl = this.h[13];
35639 var hh = this.h[14];
35640 var hl = this.h[15];
35641
35642 assert(this.k.length === W.length);
35643 for (var i = 0; i < W.length; i += 2) {
35644 var c0_hi = hh;
35645 var c0_lo = hl;
35646 var c1_hi = s1_512_hi(eh, el);
35647 var c1_lo = s1_512_lo(eh, el);
35648 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35649 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35650 var c3_hi = this.k[i];
35651 var c3_lo = this.k[i + 1];
35652 var c4_hi = W[i];
35653 var c4_lo = W[i + 1];
35654
35655 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35656 c1_hi, c1_lo,
35657 c2_hi, c2_lo,
35658 c3_hi, c3_lo,
35659 c4_hi, c4_lo);
35660 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35661 c1_hi, c1_lo,
35662 c2_hi, c2_lo,
35663 c3_hi, c3_lo,
35664 c4_hi, c4_lo);
35665
35666 var c0_hi = s0_512_hi(ah, al);
35667 var c0_lo = s0_512_lo(ah, al);
35668 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35669 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35670
35671 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35672 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35673
35674 hh = gh;
35675 hl = gl;
35676
35677 gh = fh;
35678 gl = fl;
35679
35680 fh = eh;
35681 fl = el;
35682
35683 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35684 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35685
35686 dh = ch;
35687 dl = cl;
35688
35689 ch = bh;
35690 cl = bl;
35691
35692 bh = ah;
35693 bl = al;
35694
35695 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35696 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35697 }
35698
35699 sum64(this.h, 0, ah, al);
35700 sum64(this.h, 2, bh, bl);
35701 sum64(this.h, 4, ch, cl);
35702 sum64(this.h, 6, dh, dl);
35703 sum64(this.h, 8, eh, el);
35704 sum64(this.h, 10, fh, fl);
35705 sum64(this.h, 12, gh, gl);
35706 sum64(this.h, 14, hh, hl);
35707 };
35708
35709 SHA512.prototype._digest = function digest(enc) {
35710 if (enc === 'hex')
35711 return utils.toHex32(this.h, 'big');
35712 else
35713 return utils.split32(this.h, 'big');
35714 };
35715
35716 function SHA384() {
35717 if (!(this instanceof SHA384))
35718 return new SHA384();
35719
35720 SHA512.call(this);
35721 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35722 0x629a292a, 0x367cd507,
35723 0x9159015a, 0x3070dd17,
35724 0x152fecd8, 0xf70e5939,
35725 0x67332667, 0xffc00b31,
35726 0x8eb44a87, 0x68581511,
35727 0xdb0c2e0d, 0x64f98fa7,
35728 0x47b5481d, 0xbefa4fa4 ];
35729 }
35730 utils.inherits(SHA384, SHA512);
35731 exports.sha384 = SHA384;
35732
35733 SHA384.blockSize = 1024;
35734 SHA384.outSize = 384;
35735 SHA384.hmacStrength = 192;
35736 SHA384.padLength = 128;
35737
35738 SHA384.prototype._digest = function digest(enc) {
35739 if (enc === 'hex')
35740 return utils.toHex32(this.h.slice(0, 12), 'big');
35741 else
35742 return utils.split32(this.h.slice(0, 12), 'big');
35743 };
35744
35745 function SHA1() {
35746 if (!(this instanceof SHA1))
35747 return new SHA1();
35748
35749 BlockHash.call(this);
35750 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35751 0x10325476, 0xc3d2e1f0 ];
35752 this.W = new Array(80);
35753 }
35754
35755 utils.inherits(SHA1, BlockHash);
35756 exports.sha1 = SHA1;
35757
35758 SHA1.blockSize = 512;
35759 SHA1.outSize = 160;
35760 SHA1.hmacStrength = 80;
35761 SHA1.padLength = 64;
35762
35763 SHA1.prototype._update = function _update(msg, start) {
35764 var W = this.W;
35765
35766 for (var i = 0; i < 16; i++)
35767 W[i] = msg[start + i];
35768
35769 for(; i < W.length; i++)
35770 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
35771
35772 var a = this.h[0];
35773 var b = this.h[1];
35774 var c = this.h[2];
35775 var d = this.h[3];
35776 var e = this.h[4];
35777
35778 for (var i = 0; i < W.length; i++) {
35779 var s = ~~(i / 20);
35780 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35781 e = d;
35782 d = c;
35783 c = rotl32(b, 30);
35784 b = a;
35785 a = t;
35786 }
35787
35788 this.h[0] = sum32(this.h[0], a);
35789 this.h[1] = sum32(this.h[1], b);
35790 this.h[2] = sum32(this.h[2], c);
35791 this.h[3] = sum32(this.h[3], d);
35792 this.h[4] = sum32(this.h[4], e);
35793 };
35794
35795 SHA1.prototype._digest = function digest(enc) {
35796 if (enc === 'hex')
35797 return utils.toHex32(this.h, 'big');
35798 else
35799 return utils.split32(this.h, 'big');
35800 };
35801
35802 function ch32(x, y, z) {
35803 return (x & y) ^ ((~x) & z);
35804 }
35805
35806 function maj32(x, y, z) {
35807 return (x & y) ^ (x & z) ^ (y & z);
35808 }
35809
35810 function p32(x, y, z) {
35811 return x ^ y ^ z;
35812 }
35813
35814 function s0_256(x) {
35815 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35816 }
35817
35818 function s1_256(x) {
35819 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
35820 }
35821
35822 function g0_256(x) {
35823 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35824 }
35825
35826 function g1_256(x) {
35827 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35828 }
35829
35830 function ft_1(s, x, y, z) {
35831 if (s === 0)
35832 return ch32(x, y, z);
35833 if (s === 1 || s === 3)
35834 return p32(x, y, z);
35835 if (s === 2)
35836 return maj32(x, y, z);
35837 }
35838
35839 function ch64_hi(xh, xl, yh, yl, zh, zl) {
35840 var r = (xh & yh) ^ ((~xh) & zh);
35841 if (r < 0)
35842 r += 0x100000000;
35843 return r;
35844 }
35845
35846 function ch64_lo(xh, xl, yh, yl, zh, zl) {
35847 var r = (xl & yl) ^ ((~xl) & zl);
35848 if (r < 0)
35849 r += 0x100000000;
35850 return r;
35851 }
35852
35853 function maj64_hi(xh, xl, yh, yl, zh, zl) {
35854 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35855 if (r < 0)
35856 r += 0x100000000;
35857 return r;
35858 }
35859
35860 function maj64_lo(xh, xl, yh, yl, zh, zl) {
35861 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35862 if (r < 0)
35863 r += 0x100000000;
35864 return r;
35865 }
35866
35867 function s0_512_hi(xh, xl) {
35868 var c0_hi = rotr64_hi(xh, xl, 28);
35869 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35870 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35871
35872 var r = c0_hi ^ c1_hi ^ c2_hi;
35873 if (r < 0)
35874 r += 0x100000000;
35875 return r;
35876 }
35877
35878 function s0_512_lo(xh, xl) {
35879 var c0_lo = rotr64_lo(xh, xl, 28);
35880 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35881 var c2_lo = rotr64_lo(xl, xh, 7); // 39
35882
35883 var r = c0_lo ^ c1_lo ^ c2_lo;
35884 if (r < 0)
35885 r += 0x100000000;
35886 return r;
35887 }
35888
35889 function s1_512_hi(xh, xl) {
35890 var c0_hi = rotr64_hi(xh, xl, 14);
35891 var c1_hi = rotr64_hi(xh, xl, 18);
35892 var c2_hi = rotr64_hi(xl, xh, 9); // 41
35893
35894 var r = c0_hi ^ c1_hi ^ c2_hi;
35895 if (r < 0)
35896 r += 0x100000000;
35897 return r;
35898 }
35899
35900 function s1_512_lo(xh, xl) {
35901 var c0_lo = rotr64_lo(xh, xl, 14);
35902 var c1_lo = rotr64_lo(xh, xl, 18);
35903 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35904
35905 var r = c0_lo ^ c1_lo ^ c2_lo;
35906 if (r < 0)
35907 r += 0x100000000;
35908 return r;
35909 }
35910
35911 function g0_512_hi(xh, xl) {
35912 var c0_hi = rotr64_hi(xh, xl, 1);
35913 var c1_hi = rotr64_hi(xh, xl, 8);
35914 var c2_hi = shr64_hi(xh, xl, 7);
35915
35916 var r = c0_hi ^ c1_hi ^ c2_hi;
35917 if (r < 0)
35918 r += 0x100000000;
35919 return r;
35920 }
35921
35922 function g0_512_lo(xh, xl) {
35923 var c0_lo = rotr64_lo(xh, xl, 1);
35924 var c1_lo = rotr64_lo(xh, xl, 8);
35925 var c2_lo = shr64_lo(xh, xl, 7);
35926
35927 var r = c0_lo ^ c1_lo ^ c2_lo;
35928 if (r < 0)
35929 r += 0x100000000;
35930 return r;
35931 }
35932
35933 function g1_512_hi(xh, xl) {
35934 var c0_hi = rotr64_hi(xh, xl, 19);
35935 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35936 var c2_hi = shr64_hi(xh, xl, 6);
35937
35938 var r = c0_hi ^ c1_hi ^ c2_hi;
35939 if (r < 0)
35940 r += 0x100000000;
35941 return r;
35942 }
35943
35944 function g1_512_lo(xh, xl) {
35945 var c0_lo = rotr64_lo(xh, xl, 19);
35946 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35947 var c2_lo = shr64_lo(xh, xl, 6);
35948
35949 var r = c0_lo ^ c1_lo ^ c2_lo;
35950 if (r < 0)
35951 r += 0x100000000;
35952 return r;
35953 }
35954
35955 },{"../hash":57}],62:[function(require,module,exports){
35956 var utils = exports;
35957 var inherits = require('inherits');
35958
35959 function toArray(msg, enc) {
35960 if (Array.isArray(msg))
35961 return msg.slice();
35962 if (!msg)
35963 return [];
35964 var res = [];
35965 if (typeof msg === 'string') {
35966 if (!enc) {
35967 for (var i = 0; i < msg.length; i++) {
35968 var c = msg.charCodeAt(i);
35969 var hi = c >> 8;
35970 var lo = c & 0xff;
35971 if (hi)
35972 res.push(hi, lo);
35973 else
35974 res.push(lo);
35975 }
35976 } else if (enc === 'hex') {
35977 msg = msg.replace(/[^a-z0-9]+/ig, '');
35978 if (msg.length % 2 !== 0)
35979 msg = '0' + msg;
35980 for (var i = 0; i < msg.length; i += 2)
35981 res.push(parseInt(msg[i] + msg[i + 1], 16));
35982 }
35983 } else {
35984 for (var i = 0; i < msg.length; i++)
35985 res[i] = msg[i] | 0;
35986 }
35987 return res;
35988 }
35989 utils.toArray = toArray;
35990
35991 function toHex(msg) {
35992 var res = '';
35993 for (var i = 0; i < msg.length; i++)
35994 res += zero2(msg[i].toString(16));
35995 return res;
35996 }
35997 utils.toHex = toHex;
35998
35999 function htonl(w) {
36000 var res = (w >>> 24) |
36001 ((w >>> 8) & 0xff00) |
36002 ((w << 8) & 0xff0000) |
36003 ((w & 0xff) << 24);
36004 return res >>> 0;
36005 }
36006 utils.htonl = htonl;
36007
36008 function toHex32(msg, endian) {
36009 var res = '';
36010 for (var i = 0; i < msg.length; i++) {
36011 var w = msg[i];
36012 if (endian === 'little')
36013 w = htonl(w);
36014 res += zero8(w.toString(16));
36015 }
36016 return res;
36017 }
36018 utils.toHex32 = toHex32;
36019
36020 function zero2(word) {
36021 if (word.length === 1)
36022 return '0' + word;
36023 else
36024 return word;
36025 }
36026 utils.zero2 = zero2;
36027
36028 function zero8(word) {
36029 if (word.length === 7)
36030 return '0' + word;
36031 else if (word.length === 6)
36032 return '00' + word;
36033 else if (word.length === 5)
36034 return '000' + word;
36035 else if (word.length === 4)
36036 return '0000' + word;
36037 else if (word.length === 3)
36038 return '00000' + word;
36039 else if (word.length === 2)
36040 return '000000' + word;
36041 else if (word.length === 1)
36042 return '0000000' + word;
36043 else
36044 return word;
36045 }
36046 utils.zero8 = zero8;
36047
36048 function join32(msg, start, end, endian) {
36049 var len = end - start;
36050 assert(len % 4 === 0);
36051 var res = new Array(len / 4);
36052 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36053 var w;
36054 if (endian === 'big')
36055 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36056 else
36057 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36058 res[i] = w >>> 0;
36059 }
36060 return res;
36061 }
36062 utils.join32 = join32;
36063
36064 function split32(msg, endian) {
36065 var res = new Array(msg.length * 4);
36066 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36067 var m = msg[i];
36068 if (endian === 'big') {
36069 res[k] = m >>> 24;
36070 res[k + 1] = (m >>> 16) & 0xff;
36071 res[k + 2] = (m >>> 8) & 0xff;
36072 res[k + 3] = m & 0xff;
36073 } else {
36074 res[k + 3] = m >>> 24;
36075 res[k + 2] = (m >>> 16) & 0xff;
36076 res[k + 1] = (m >>> 8) & 0xff;
36077 res[k] = m & 0xff;
36078 }
36079 }
36080 return res;
36081 }
36082 utils.split32 = split32;
36083
36084 function rotr32(w, b) {
36085 return (w >>> b) | (w << (32 - b));
36086 }
36087 utils.rotr32 = rotr32;
36088
36089 function rotl32(w, b) {
36090 return (w << b) | (w >>> (32 - b));
36091 }
36092 utils.rotl32 = rotl32;
36093
36094 function sum32(a, b) {
36095 return (a + b) >>> 0;
36096 }
36097 utils.sum32 = sum32;
36098
36099 function sum32_3(a, b, c) {
36100 return (a + b + c) >>> 0;
36101 }
36102 utils.sum32_3 = sum32_3;
36103
36104 function sum32_4(a, b, c, d) {
36105 return (a + b + c + d) >>> 0;
36106 }
36107 utils.sum32_4 = sum32_4;
36108
36109 function sum32_5(a, b, c, d, e) {
36110 return (a + b + c + d + e) >>> 0;
36111 }
36112 utils.sum32_5 = sum32_5;
36113
36114 function assert(cond, msg) {
36115 if (!cond)
36116 throw new Error(msg || 'Assertion failed');
36117 }
36118 utils.assert = assert;
36119
36120 utils.inherits = inherits;
36121
36122 function sum64(buf, pos, ah, al) {
36123 var bh = buf[pos];
36124 var bl = buf[pos + 1];
36125
36126 var lo = (al + bl) >>> 0;
36127 var hi = (lo < al ? 1 : 0) + ah + bh;
36128 buf[pos] = hi >>> 0;
36129 buf[pos + 1] = lo;
36130 }
36131 exports.sum64 = sum64;
36132
36133 function sum64_hi(ah, al, bh, bl) {
36134 var lo = (al + bl) >>> 0;
36135 var hi = (lo < al ? 1 : 0) + ah + bh;
36136 return hi >>> 0;
36137 };
36138 exports.sum64_hi = sum64_hi;
36139
36140 function sum64_lo(ah, al, bh, bl) {
36141 var lo = al + bl;
36142 return lo >>> 0;
36143 };
36144 exports.sum64_lo = sum64_lo;
36145
36146 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36147 var carry = 0;
36148 var lo = al;
36149 lo = (lo + bl) >>> 0;
36150 carry += lo < al ? 1 : 0;
36151 lo = (lo + cl) >>> 0;
36152 carry += lo < cl ? 1 : 0;
36153 lo = (lo + dl) >>> 0;
36154 carry += lo < dl ? 1 : 0;
36155
36156 var hi = ah + bh + ch + dh + carry;
36157 return hi >>> 0;
36158 };
36159 exports.sum64_4_hi = sum64_4_hi;
36160
36161 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36162 var lo = al + bl + cl + dl;
36163 return lo >>> 0;
36164 };
36165 exports.sum64_4_lo = sum64_4_lo;
36166
36167 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36168 var carry = 0;
36169 var lo = al;
36170 lo = (lo + bl) >>> 0;
36171 carry += lo < al ? 1 : 0;
36172 lo = (lo + cl) >>> 0;
36173 carry += lo < cl ? 1 : 0;
36174 lo = (lo + dl) >>> 0;
36175 carry += lo < dl ? 1 : 0;
36176 lo = (lo + el) >>> 0;
36177 carry += lo < el ? 1 : 0;
36178
36179 var hi = ah + bh + ch + dh + eh + carry;
36180 return hi >>> 0;
36181 };
36182 exports.sum64_5_hi = sum64_5_hi;
36183
36184 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36185 var lo = al + bl + cl + dl + el;
36186
36187 return lo >>> 0;
36188 };
36189 exports.sum64_5_lo = sum64_5_lo;
36190
36191 function rotr64_hi(ah, al, num) {
36192 var r = (al << (32 - num)) | (ah >>> num);
36193 return r >>> 0;
36194 };
36195 exports.rotr64_hi = rotr64_hi;
36196
36197 function rotr64_lo(ah, al, num) {
36198 var r = (ah << (32 - num)) | (al >>> num);
36199 return r >>> 0;
36200 };
36201 exports.rotr64_lo = rotr64_lo;
36202
36203 function shr64_hi(ah, al, num) {
36204 return ah >>> num;
36205 };
36206 exports.shr64_hi = shr64_hi;
36207
36208 function shr64_lo(ah, al, num) {
36209 var r = (ah << (32 - num)) | (al >>> num);
36210 return r >>> 0;
36211 };
36212 exports.shr64_lo = shr64_lo;
36213
36214 },{"inherits":63}],63:[function(require,module,exports){
36215 arguments[4][9][0].apply(exports,arguments)
36216 },{"dup":9}],64:[function(require,module,exports){
36217 /**
36218 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36219 * @param {String} str the string input value
36220 * @return {Boolean} a boolean if it is or is not hex prefixed
36221 * @throws if the str input is not a string
36222 */
36223 module.exports = function isHexPrefixed(str) {
36224 if (typeof str !== 'string') {
36225 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36226 }
36227
36228 return str.slice(0, 2) === '0x';
36229 }
36230
36231 },{}],65:[function(require,module,exports){
36232 'use strict'
36233 module.exports = require('./lib/api')(require('./lib/keccak'))
36234
36235 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36236 'use strict'
36237 var createKeccak = require('./keccak')
36238 var createShake = require('./shake')
36239
36240 module.exports = function (KeccakState) {
36241 var Keccak = createKeccak(KeccakState)
36242 var Shake = createShake(KeccakState)
36243
36244 return function (algorithm, options) {
36245 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36246 switch (hash) {
36247 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36248 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36249 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36250 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36251
36252 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36253 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36254 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36255 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36256
36257 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36258 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36259
36260 default: throw new Error('Invald algorithm: ' + algorithm)
36261 }
36262 }
36263 }
36264
36265 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
36266 (function (Buffer){
36267 'use strict'
36268 var Transform = require('stream').Transform
36269 var inherits = require('inherits')
36270
36271 module.exports = function (KeccakState) {
36272 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36273 Transform.call(this, options)
36274
36275 this._rate = rate
36276 this._capacity = capacity
36277 this._delimitedSuffix = delimitedSuffix
36278 this._hashBitLength = hashBitLength
36279 this._options = options
36280
36281 this._state = new KeccakState()
36282 this._state.initialize(rate, capacity)
36283 this._finalized = false
36284 }
36285
36286 inherits(Keccak, Transform)
36287
36288 Keccak.prototype._transform = function (chunk, encoding, callback) {
36289 var error = null
36290 try {
36291 this.update(chunk, encoding)
36292 } catch (err) {
36293 error = err
36294 }
36295
36296 callback(error)
36297 }
36298
36299 Keccak.prototype._flush = function (callback) {
36300 var error = null
36301 try {
36302 this.push(this.digest())
36303 } catch (err) {
36304 error = err
36305 }
36306
36307 callback(error)
36308 }
36309
36310 Keccak.prototype.update = function (data, encoding) {
36311 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36312 if (this._finalized) throw new Error('Digest already called')
36313 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36314
36315 this._state.absorb(data)
36316
36317 return this
36318 }
36319
36320 Keccak.prototype.digest = function (encoding) {
36321 if (this._finalized) throw new Error('Digest already called')
36322 this._finalized = true
36323
36324 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36325 var digest = this._state.squeeze(this._hashBitLength / 8)
36326 if (encoding !== undefined) digest = digest.toString(encoding)
36327
36328 this._resetState()
36329
36330 return digest
36331 }
36332
36333 // remove result from memory
36334 Keccak.prototype._resetState = function () {
36335 this._state.initialize(this._rate, this._capacity)
36336 return this
36337 }
36338
36339 // because sometimes we need hash right now and little later
36340 Keccak.prototype._clone = function () {
36341 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36342 this._state.copy(clone._state)
36343 clone._finalized = this._finalized
36344
36345 return clone
36346 }
36347
36348 return Keccak
36349 }
36350
36351 }).call(this,require("buffer").Buffer)
36352 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36353 (function (Buffer){
36354 'use strict'
36355 var Transform = require('stream').Transform
36356 var inherits = require('inherits')
36357
36358 module.exports = function (KeccakState) {
36359 function Shake (rate, capacity, delimitedSuffix, options) {
36360 Transform.call(this, options)
36361
36362 this._rate = rate
36363 this._capacity = capacity
36364 this._delimitedSuffix = delimitedSuffix
36365 this._options = options
36366
36367 this._state = new KeccakState()
36368 this._state.initialize(rate, capacity)
36369 this._finalized = false
36370 }
36371
36372 inherits(Shake, Transform)
36373
36374 Shake.prototype._transform = function (chunk, encoding, callback) {
36375 var error = null
36376 try {
36377 this.update(chunk, encoding)
36378 } catch (err) {
36379 error = err
36380 }
36381
36382 callback(error)
36383 }
36384
36385 Shake.prototype._flush = function () {}
36386
36387 Shake.prototype._read = function (size) {
36388 this.push(this.squeeze(size))
36389 }
36390
36391 Shake.prototype.update = function (data, encoding) {
36392 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36393 if (this._finalized) throw new Error('Squeeze already called')
36394 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36395
36396 this._state.absorb(data)
36397
36398 return this
36399 }
36400
36401 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36402 if (!this._finalized) {
36403 this._finalized = true
36404 this._state.absorbLastFewBits(this._delimitedSuffix)
36405 }
36406
36407 var data = this._state.squeeze(dataByteLength)
36408 if (encoding !== undefined) data = data.toString(encoding)
36409
36410 return data
36411 }
36412
36413 Shake.prototype._resetState = function () {
36414 this._state.initialize(this._rate, this._capacity)
36415 return this
36416 }
36417
36418 Shake.prototype._clone = function () {
36419 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36420 this._state.copy(clone._state)
36421 clone._finalized = this._finalized
36422
36423 return clone
36424 }
36425
36426 return Shake
36427 }
36428
36429 }).call(this,require("buffer").Buffer)
36430 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36431 'use strict'
36432 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]
36433
36434 exports.p1600 = function (s) {
36435 for (var round = 0; round < 24; ++round) {
36436 // theta
36437 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36438 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36439 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36440 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36441 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36442 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36443 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36444 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36445 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36446 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36447
36448 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36449 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36450 var t1slo0 = s[0] ^ lo
36451 var t1shi0 = s[1] ^ hi
36452 var t1slo5 = s[10] ^ lo
36453 var t1shi5 = s[11] ^ hi
36454 var t1slo10 = s[20] ^ lo
36455 var t1shi10 = s[21] ^ hi
36456 var t1slo15 = s[30] ^ lo
36457 var t1shi15 = s[31] ^ hi
36458 var t1slo20 = s[40] ^ lo
36459 var t1shi20 = s[41] ^ hi
36460 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36461 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36462 var t1slo1 = s[2] ^ lo
36463 var t1shi1 = s[3] ^ hi
36464 var t1slo6 = s[12] ^ lo
36465 var t1shi6 = s[13] ^ hi
36466 var t1slo11 = s[22] ^ lo
36467 var t1shi11 = s[23] ^ hi
36468 var t1slo16 = s[32] ^ lo
36469 var t1shi16 = s[33] ^ hi
36470 var t1slo21 = s[42] ^ lo
36471 var t1shi21 = s[43] ^ hi
36472 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36473 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36474 var t1slo2 = s[4] ^ lo
36475 var t1shi2 = s[5] ^ hi
36476 var t1slo7 = s[14] ^ lo
36477 var t1shi7 = s[15] ^ hi
36478 var t1slo12 = s[24] ^ lo
36479 var t1shi12 = s[25] ^ hi
36480 var t1slo17 = s[34] ^ lo
36481 var t1shi17 = s[35] ^ hi
36482 var t1slo22 = s[44] ^ lo
36483 var t1shi22 = s[45] ^ hi
36484 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36485 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36486 var t1slo3 = s[6] ^ lo
36487 var t1shi3 = s[7] ^ hi
36488 var t1slo8 = s[16] ^ lo
36489 var t1shi8 = s[17] ^ hi
36490 var t1slo13 = s[26] ^ lo
36491 var t1shi13 = s[27] ^ hi
36492 var t1slo18 = s[36] ^ lo
36493 var t1shi18 = s[37] ^ hi
36494 var t1slo23 = s[46] ^ lo
36495 var t1shi23 = s[47] ^ hi
36496 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36497 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36498 var t1slo4 = s[8] ^ lo
36499 var t1shi4 = s[9] ^ hi
36500 var t1slo9 = s[18] ^ lo
36501 var t1shi9 = s[19] ^ hi
36502 var t1slo14 = s[28] ^ lo
36503 var t1shi14 = s[29] ^ hi
36504 var t1slo19 = s[38] ^ lo
36505 var t1shi19 = s[39] ^ hi
36506 var t1slo24 = s[48] ^ lo
36507 var t1shi24 = s[49] ^ hi
36508
36509 // rho & pi
36510 var t2slo0 = t1slo0
36511 var t2shi0 = t1shi0
36512 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36513 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36514 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36515 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36516 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36517 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36518 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36519 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36520 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36521 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36522 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36523 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36524 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36525 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36526 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36527 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36528 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36529 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36530 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36531 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36532 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36533 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36534 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36535 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36536 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36537 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36538 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36539 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36540 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36541 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36542 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36543 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36544 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36545 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36546 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36547 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36548 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36549 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36550 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36551 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36552 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36553 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36554 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36555 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36556 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36557 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36558 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36559 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36560
36561 // chi
36562 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36563 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36564 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36565 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36566 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36567 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36568 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36569 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36570 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36571 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36572 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36573 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36574 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36575 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36576 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36577 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36578 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36579 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36580 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36581 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36582 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36583 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36584 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36585 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36586 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36587 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36588 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36589 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36590 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36591 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36592 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36593 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36594 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36595 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36596 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36597 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36598 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36599 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36600 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36601 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36602 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36603 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36604 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36605 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36606 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36607 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36608 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36609 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36610 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36611 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36612
36613 // iota
36614 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36615 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36616 }
36617 }
36618
36619 },{}],70:[function(require,module,exports){
36620 (function (Buffer){
36621 'use strict'
36622 var keccakState = require('./keccak-state-unroll')
36623
36624 function Keccak () {
36625 // much faster than `new Array(50)`
36626 this.state = [
36627 0, 0, 0, 0, 0,
36628 0, 0, 0, 0, 0,
36629 0, 0, 0, 0, 0,
36630 0, 0, 0, 0, 0,
36631 0, 0, 0, 0, 0
36632 ]
36633
36634 this.blockSize = null
36635 this.count = 0
36636 this.squeezing = false
36637 }
36638
36639 Keccak.prototype.initialize = function (rate, capacity) {
36640 for (var i = 0; i < 50; ++i) this.state[i] = 0
36641 this.blockSize = rate / 8
36642 this.count = 0
36643 this.squeezing = false
36644 }
36645
36646 Keccak.prototype.absorb = function (data) {
36647 for (var i = 0; i < data.length; ++i) {
36648 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36649 this.count += 1
36650 if (this.count === this.blockSize) {
36651 keccakState.p1600(this.state)
36652 this.count = 0
36653 }
36654 }
36655 }
36656
36657 Keccak.prototype.absorbLastFewBits = function (bits) {
36658 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36659 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36660 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36661 keccakState.p1600(this.state)
36662 this.count = 0
36663 this.squeezing = true
36664 }
36665
36666 Keccak.prototype.squeeze = function (length) {
36667 if (!this.squeezing) this.absorbLastFewBits(0x01)
36668
36669 var output = Buffer.allocUnsafe(length)
36670 for (var i = 0; i < length; ++i) {
36671 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36672 this.count += 1
36673 if (this.count === this.blockSize) {
36674 keccakState.p1600(this.state)
36675 this.count = 0
36676 }
36677 }
36678
36679 return output
36680 }
36681
36682 Keccak.prototype.copy = function (dest) {
36683 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36684 dest.blockSize = this.blockSize
36685 dest.count = this.count
36686 dest.squeezing = this.squeezing
36687 }
36688
36689 module.exports = Keccak
36690
36691 }).call(this,require("buffer").Buffer)
36692 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36693 (function (Buffer){
36694 /*
36695 CryptoJS v3.1.2
36696 code.google.com/p/crypto-js
36697 (c) 2009-2013 by Jeff Mott. All rights reserved.
36698 code.google.com/p/crypto-js/wiki/License
36699 */
36700 /** @preserve
36701 (c) 2012 by Cédric Mesnil. All rights reserved.
36702
36703 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
36704
36705 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36706 - 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.
36707
36708 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.
36709 */
36710
36711 // constants table
36712 var zl = [
36713 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36714 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36715 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36716 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36717 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36718 ]
36719
36720 var zr = [
36721 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36722 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36723 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36724 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36725 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36726 ]
36727
36728 var sl = [
36729 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36730 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36731 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36732 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36733 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36734 ]
36735
36736 var sr = [
36737 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36738 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36739 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36740 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36741 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36742 ]
36743
36744 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36745 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36746
36747 function bytesToWords (bytes) {
36748 var words = []
36749 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36750 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36751 }
36752 return words
36753 }
36754
36755 function wordsToBytes (words) {
36756 var bytes = []
36757 for (var b = 0; b < words.length * 32; b += 8) {
36758 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36759 }
36760 return bytes
36761 }
36762
36763 function processBlock (H, M, offset) {
36764 // swap endian
36765 for (var i = 0; i < 16; i++) {
36766 var offset_i = offset + i
36767 var M_offset_i = M[offset_i]
36768
36769 // Swap
36770 M[offset_i] = (
36771 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36772 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36773 )
36774 }
36775
36776 // Working variables
36777 var al, bl, cl, dl, el
36778 var ar, br, cr, dr, er
36779
36780 ar = al = H[0]
36781 br = bl = H[1]
36782 cr = cl = H[2]
36783 dr = dl = H[3]
36784 er = el = H[4]
36785
36786 // computation
36787 var t
36788 for (i = 0; i < 80; i += 1) {
36789 t = (al + M[offset + zl[i]]) | 0
36790 if (i < 16) {
36791 t += f1(bl, cl, dl) + hl[0]
36792 } else if (i < 32) {
36793 t += f2(bl, cl, dl) + hl[1]
36794 } else if (i < 48) {
36795 t += f3(bl, cl, dl) + hl[2]
36796 } else if (i < 64) {
36797 t += f4(bl, cl, dl) + hl[3]
36798 } else {// if (i<80) {
36799 t += f5(bl, cl, dl) + hl[4]
36800 }
36801 t = t | 0
36802 t = rotl(t, sl[i])
36803 t = (t + el) | 0
36804 al = el
36805 el = dl
36806 dl = rotl(cl, 10)
36807 cl = bl
36808 bl = t
36809
36810 t = (ar + M[offset + zr[i]]) | 0
36811 if (i < 16) {
36812 t += f5(br, cr, dr) + hr[0]
36813 } else if (i < 32) {
36814 t += f4(br, cr, dr) + hr[1]
36815 } else if (i < 48) {
36816 t += f3(br, cr, dr) + hr[2]
36817 } else if (i < 64) {
36818 t += f2(br, cr, dr) + hr[3]
36819 } else {// if (i<80) {
36820 t += f1(br, cr, dr) + hr[4]
36821 }
36822
36823 t = t | 0
36824 t = rotl(t, sr[i])
36825 t = (t + er) | 0
36826 ar = er
36827 er = dr
36828 dr = rotl(cr, 10)
36829 cr = br
36830 br = t
36831 }
36832
36833 // intermediate hash value
36834 t = (H[1] + cl + dr) | 0
36835 H[1] = (H[2] + dl + er) | 0
36836 H[2] = (H[3] + el + ar) | 0
36837 H[3] = (H[4] + al + br) | 0
36838 H[4] = (H[0] + bl + cr) | 0
36839 H[0] = t
36840 }
36841
36842 function f1 (x, y, z) {
36843 return ((x) ^ (y) ^ (z))
36844 }
36845
36846 function f2 (x, y, z) {
36847 return (((x) & (y)) | ((~x) & (z)))
36848 }
36849
36850 function f3 (x, y, z) {
36851 return (((x) | (~(y))) ^ (z))
36852 }
36853
36854 function f4 (x, y, z) {
36855 return (((x) & (z)) | ((y) & (~(z))))
36856 }
36857
36858 function f5 (x, y, z) {
36859 return ((x) ^ ((y) | (~(z))))
36860 }
36861
36862 function rotl (x, n) {
36863 return (x << n) | (x >>> (32 - n))
36864 }
36865
36866 function ripemd160 (message) {
36867 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
36868
36869 if (typeof message === 'string') {
36870 message = new Buffer(message, 'utf8')
36871 }
36872
36873 var m = bytesToWords(message)
36874
36875 var nBitsLeft = message.length * 8
36876 var nBitsTotal = message.length * 8
36877
36878 // Add padding
36879 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36880 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36881 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36882 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36883 )
36884
36885 for (var i = 0; i < m.length; i += 16) {
36886 processBlock(H, m, i)
36887 }
36888
36889 // swap endian
36890 for (i = 0; i < 5; i++) {
36891 // shortcut
36892 var H_i = H[i]
36893
36894 // Swap
36895 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36896 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
36897 }
36898
36899 var digestbytes = wordsToBytes(H)
36900 return new Buffer(digestbytes)
36901 }
36902
36903 module.exports = ripemd160
36904
36905 }).call(this,require("buffer").Buffer)
36906 },{"buffer":5}],72:[function(require,module,exports){
36907 (function (Buffer){
36908 const assert = require('assert')
36909 /**
36910 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36911 * This function takes in a data, convert it to buffer if not, and a length for recursion
36912 *
36913 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36914 * @returns {Buffer} - returns buffer of encoded data
36915 **/
36916 exports.encode = function (input) {
36917 if (input instanceof Array) {
36918 var output = []
36919 for (var i = 0; i < input.length; i++) {
36920 output.push(exports.encode(input[i]))
36921 }
36922 var buf = Buffer.concat(output)
36923 return Buffer.concat([encodeLength(buf.length, 192), buf])
36924 } else {
36925 input = toBuffer(input)
36926 if (input.length === 1 && input[0] < 128) {
36927 return input
36928 } else {
36929 return Buffer.concat([encodeLength(input.length, 128), input])
36930 }
36931 }
36932 }
36933
36934 function safeParseInt (v, base) {
36935 if (v.slice(0, 2) === '00') {
36936 throw (new Error('invalid RLP: extra zeros'))
36937 }
36938
36939 return parseInt(v, base)
36940 }
36941
36942 function encodeLength (len, offset) {
36943 if (len < 56) {
36944 return new Buffer([len + offset])
36945 } else {
36946 var hexLength = intToHex(len)
36947 var lLength = hexLength.length / 2
36948 var firstByte = intToHex(offset + 55 + lLength)
36949 return new Buffer(firstByte + hexLength, 'hex')
36950 }
36951 }
36952
36953 /**
36954 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36955 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36956 * @returns {Array} - returns decode Array of Buffers containg the original message
36957 **/
36958 exports.decode = function (input, stream) {
36959 if (!input || input.length === 0) {
36960 return new Buffer([])
36961 }
36962
36963 input = toBuffer(input)
36964 var decoded = _decode(input)
36965
36966 if (stream) {
36967 return decoded
36968 }
36969
36970 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36971 return decoded.data
36972 }
36973
36974 exports.getLength = function (input) {
36975 if (!input || input.length === 0) {
36976 return new Buffer([])
36977 }
36978
36979 input = toBuffer(input)
36980 var firstByte = input[0]
36981 if (firstByte <= 0x7f) {
36982 return input.length
36983 } else if (firstByte <= 0xb7) {
36984 return firstByte - 0x7f
36985 } else if (firstByte <= 0xbf) {
36986 return firstByte - 0xb6
36987 } else if (firstByte <= 0xf7) {
36988 // a list between 0-55 bytes long
36989 return firstByte - 0xbf
36990 } else {
36991 // a list over 55 bytes long
36992 var llength = firstByte - 0xf6
36993 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36994 return llength + length
36995 }
36996 }
36997
36998 function _decode (input) {
36999 var length, llength, data, innerRemainder, d
37000 var decoded = []
37001 var firstByte = input[0]
37002
37003 if (firstByte <= 0x7f) {
37004 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
37005 return {
37006 data: input.slice(0, 1),
37007 remainder: input.slice(1)
37008 }
37009 } else if (firstByte <= 0xb7) {
37010 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
37011 // The range of the first byte is [0x80, 0xb7]
37012 length = firstByte - 0x7f
37013
37014 // set 0x80 null to 0
37015 if (firstByte === 0x80) {
37016 data = new Buffer([])
37017 } else {
37018 data = input.slice(1, length)
37019 }
37020
37021 if (length === 2 && data[0] < 0x80) {
37022 throw new Error('invalid rlp encoding: byte must be less 0x80')
37023 }
37024
37025 return {
37026 data: data,
37027 remainder: input.slice(length)
37028 }
37029 } else if (firstByte <= 0xbf) {
37030 llength = firstByte - 0xb6
37031 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37032 data = input.slice(llength, length + llength)
37033 if (data.length < length) {
37034 throw (new Error('invalid RLP'))
37035 }
37036
37037 return {
37038 data: data,
37039 remainder: input.slice(length + llength)
37040 }
37041 } else if (firstByte <= 0xf7) {
37042 // a list between 0-55 bytes long
37043 length = firstByte - 0xbf
37044 innerRemainder = input.slice(1, length)
37045 while (innerRemainder.length) {
37046 d = _decode(innerRemainder)
37047 decoded.push(d.data)
37048 innerRemainder = d.remainder
37049 }
37050
37051 return {
37052 data: decoded,
37053 remainder: input.slice(length)
37054 }
37055 } else {
37056 // a list over 55 bytes long
37057 llength = firstByte - 0xf6
37058 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37059 var totalLength = llength + length
37060 if (totalLength > input.length) {
37061 throw new Error('invalid rlp: total length is larger than the data')
37062 }
37063
37064 innerRemainder = input.slice(llength, totalLength)
37065 if (innerRemainder.length === 0) {
37066 throw new Error('invalid rlp, List has a invalid length')
37067 }
37068
37069 while (innerRemainder.length) {
37070 d = _decode(innerRemainder)
37071 decoded.push(d.data)
37072 innerRemainder = d.remainder
37073 }
37074 return {
37075 data: decoded,
37076 remainder: input.slice(totalLength)
37077 }
37078 }
37079 }
37080
37081 function isHexPrefixed (str) {
37082 return str.slice(0, 2) === '0x'
37083 }
37084
37085 // Removes 0x from a given String
37086 function stripHexPrefix (str) {
37087 if (typeof str !== 'string') {
37088 return str
37089 }
37090 return isHexPrefixed(str) ? str.slice(2) : str
37091 }
37092
37093 function intToHex (i) {
37094 var hex = i.toString(16)
37095 if (hex.length % 2) {
37096 hex = '0' + hex
37097 }
37098
37099 return hex
37100 }
37101
37102 function padToEven (a) {
37103 if (a.length % 2) a = '0' + a
37104 return a
37105 }
37106
37107 function intToBuffer (i) {
37108 var hex = intToHex(i)
37109 return new Buffer(hex, 'hex')
37110 }
37111
37112 function toBuffer (v) {
37113 if (!Buffer.isBuffer(v)) {
37114 if (typeof v === 'string') {
37115 if (isHexPrefixed(v)) {
37116 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37117 } else {
37118 v = new Buffer(v)
37119 }
37120 } else if (typeof v === 'number') {
37121 if (!v) {
37122 v = new Buffer([])
37123 } else {
37124 v = intToBuffer(v)
37125 }
37126 } else if (v === null || v === undefined) {
37127 v = new Buffer([])
37128 } else if (v.toArray) {
37129 // converts a BN to a Buffer
37130 v = new Buffer(v.toArray())
37131 } else {
37132 throw new Error('invalid type')
37133 }
37134 }
37135 return v
37136 }
37137
37138 }).call(this,require("buffer").Buffer)
37139 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
37140 'use strict'
37141 module.exports = require('./lib')(require('./lib/elliptic'))
37142
37143 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37144 (function (Buffer){
37145 'use strict'
37146 var toString = Object.prototype.toString
37147
37148 // TypeError
37149 exports.isArray = function (value, message) {
37150 if (!Array.isArray(value)) throw TypeError(message)
37151 }
37152
37153 exports.isBoolean = function (value, message) {
37154 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37155 }
37156
37157 exports.isBuffer = function (value, message) {
37158 if (!Buffer.isBuffer(value)) throw TypeError(message)
37159 }
37160
37161 exports.isFunction = function (value, message) {
37162 if (toString.call(value) !== '[object Function]') throw TypeError(message)
37163 }
37164
37165 exports.isNumber = function (value, message) {
37166 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37167 }
37168
37169 exports.isObject = function (value, message) {
37170 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37171 }
37172
37173 // RangeError
37174 exports.isBufferLength = function (buffer, length, message) {
37175 if (buffer.length !== length) throw RangeError(message)
37176 }
37177
37178 exports.isBufferLength2 = function (buffer, length1, length2, message) {
37179 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
37180 }
37181
37182 exports.isLengthGTZero = function (value, message) {
37183 if (value.length === 0) throw RangeError(message)
37184 }
37185
37186 exports.isNumberInInterval = function (number, x, y, message) {
37187 if (number <= x || number >= y) throw RangeError(message)
37188 }
37189
37190 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37191 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
37192 (function (Buffer){
37193 'use strict'
37194 var bip66 = require('bip66')
37195
37196 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37197 // begin
37198 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37199 // private key
37200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37202 // middle
37203 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37204 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37205 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37206 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37207 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37208 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37209 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37210 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37211 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37212 // public key
37213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37215 0x00
37216 ])
37217
37218 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37219 // begin
37220 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37221 // private key
37222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37224 // middle
37225 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37226 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37227 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37228 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37229 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37230 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37231 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37232 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37233 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37234 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37235 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37236 // public key
37237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37241 0x00
37242 ])
37243
37244 var ZERO_BUFFER_32 = new Buffer([
37245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37247 ])
37248
37249 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37250 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37251 privateKey.copy(result, compressed ? 8 : 9)
37252 publicKey.copy(result, compressed ? 181 : 214)
37253 return result
37254 }
37255
37256 exports.privateKeyImport = function (privateKey) {
37257 var length = privateKey.length
37258
37259 // sequence header
37260 var index = 0
37261 if (length < index + 1 || privateKey[index] !== 0x30) return
37262 index += 1
37263
37264 // sequence length constructor
37265 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37266
37267 var lenb = privateKey[index] & 0x7f
37268 index += 1
37269 if (lenb < 1 || lenb > 2) return
37270 if (length < index + lenb) return
37271
37272 // sequence length
37273 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37274 index += lenb
37275 if (length < index + len) return
37276
37277 // sequence element 0: version number (=1)
37278 if (length < index + 3 ||
37279 privateKey[index] !== 0x02 ||
37280 privateKey[index + 1] !== 0x01 ||
37281 privateKey[index + 2] !== 0x01) {
37282 return
37283 }
37284 index += 3
37285
37286 // sequence element 1: octet string, up to 32 bytes
37287 if (length < index + 2 ||
37288 privateKey[index] !== 0x04 ||
37289 privateKey[index + 1] > 0x20 ||
37290 length < index + 2 + privateKey[index + 1]) {
37291 return
37292 }
37293
37294 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
37295 }
37296
37297 exports.signatureExport = function (sigObj) {
37298 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37299 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
37300
37301 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37302 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
37303
37304 return bip66.encode(r.slice(posR), s.slice(posS))
37305 }
37306
37307 exports.signatureImport = function (sig) {
37308 var r = new Buffer(ZERO_BUFFER_32)
37309 var s = new Buffer(ZERO_BUFFER_32)
37310
37311 try {
37312 var sigObj = bip66.decode(sig)
37313 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37314 if (sigObj.r.length > 32) throw new Error('R length is too long')
37315 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37316 if (sigObj.s.length > 32) throw new Error('S length is too long')
37317 } catch (err) {
37318 return
37319 }
37320
37321 sigObj.r.copy(r, 32 - sigObj.r.length)
37322 sigObj.s.copy(s, 32 - sigObj.s.length)
37323
37324 return { r: r, s: s }
37325 }
37326
37327 exports.signatureImportLax = function (sig) {
37328 var r = new Buffer(ZERO_BUFFER_32)
37329 var s = new Buffer(ZERO_BUFFER_32)
37330
37331 var length = sig.length
37332 var index = 0
37333
37334 // sequence tag byte
37335 if (sig[index++] !== 0x30) return
37336
37337 // sequence length byte
37338 var lenbyte = sig[index++]
37339 if (lenbyte & 0x80) {
37340 index += lenbyte - 0x80
37341 if (index > length) return
37342 }
37343
37344 // sequence tag byte for r
37345 if (sig[index++] !== 0x02) return
37346
37347 // length for r
37348 var rlen = sig[index++]
37349 if (rlen & 0x80) {
37350 lenbyte = rlen - 0x80
37351 if (index + lenbyte > length) return
37352 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37353 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
37354 }
37355 if (rlen > length - index) return
37356 var rindex = index
37357 index += rlen
37358
37359 // sequence tag byte for s
37360 if (sig[index++] !== 0x02) return
37361
37362 // length for s
37363 var slen = sig[index++]
37364 if (slen & 0x80) {
37365 lenbyte = slen - 0x80
37366 if (index + lenbyte > length) return
37367 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37368 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
37369 }
37370 if (slen > length - index) return
37371 var sindex = index
37372 index += slen
37373
37374 // ignore leading zeros in r
37375 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37376 // copy r value
37377 if (rlen > 32) return
37378 var rvalue = sig.slice(rindex, rindex + rlen)
37379 rvalue.copy(r, 32 - rvalue.length)
37380
37381 // ignore leading zeros in s
37382 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37383 // copy s value
37384 if (slen > 32) return
37385 var svalue = sig.slice(sindex, sindex + slen)
37386 svalue.copy(s, 32 - svalue.length)
37387
37388 return { r: r, s: s }
37389 }
37390
37391 }).call(this,require("buffer").Buffer)
37392 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37393 (function (Buffer){
37394 'use strict'
37395 var createHash = require('create-hash')
37396 var BN = require('bn.js')
37397 var EC = require('elliptic').ec
37398
37399 var messages = require('../messages.json')
37400
37401 var ec = new EC('secp256k1')
37402 var ecparams = ec.curve
37403
37404 function loadCompressedPublicKey (first, xBuffer) {
37405 var x = new BN(xBuffer)
37406
37407 // overflow
37408 if (x.cmp(ecparams.p) >= 0) return null
37409 x = x.toRed(ecparams.red)
37410
37411 // compute corresponding Y
37412 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37413 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37414
37415 return ec.keyPair({ pub: { x: x, y: y } })
37416 }
37417
37418 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37419 var x = new BN(xBuffer)
37420 var y = new BN(yBuffer)
37421
37422 // overflow
37423 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
37424
37425 x = x.toRed(ecparams.red)
37426 y = y.toRed(ecparams.red)
37427
37428 // is odd flag
37429 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
37430
37431 // x*x*x + b = y*y
37432 var x3 = x.redSqr().redIMul(x)
37433 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
37434
37435 return ec.keyPair({ pub: { x: x, y: y } })
37436 }
37437
37438 function loadPublicKey (publicKey) {
37439 var first = publicKey[0]
37440 switch (first) {
37441 case 0x02:
37442 case 0x03:
37443 if (publicKey.length !== 33) return null
37444 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37445 case 0x04:
37446 case 0x06:
37447 case 0x07:
37448 if (publicKey.length !== 65) return null
37449 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37450 default:
37451 return null
37452 }
37453 }
37454
37455 exports.privateKeyVerify = function (privateKey) {
37456 var bn = new BN(privateKey)
37457 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37458 }
37459
37460 exports.privateKeyExport = function (privateKey, compressed) {
37461 var d = new BN(privateKey)
37462 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
37463
37464 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37465 }
37466
37467 exports.privateKeyTweakAdd = function (privateKey, tweak) {
37468 var bn = new BN(tweak)
37469 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37470
37471 bn.iadd(new BN(privateKey))
37472 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37473 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37474
37475 return bn.toArrayLike(Buffer, 'be', 32)
37476 }
37477
37478 exports.privateKeyTweakMul = function (privateKey, tweak) {
37479 var bn = new BN(tweak)
37480 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37481
37482 bn.imul(new BN(privateKey))
37483 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37484
37485 return bn.toArrayLike(Buffer, 'be', 32)
37486 }
37487
37488 exports.publicKeyCreate = function (privateKey, compressed) {
37489 var d = new BN(privateKey)
37490 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37491
37492 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37493 }
37494
37495 exports.publicKeyConvert = function (publicKey, compressed) {
37496 var pair = loadPublicKey(publicKey)
37497 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37498
37499 return new Buffer(pair.getPublic(compressed, true))
37500 }
37501
37502 exports.publicKeyVerify = function (publicKey) {
37503 return loadPublicKey(publicKey) !== null
37504 }
37505
37506 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37507 var pair = loadPublicKey(publicKey)
37508 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37509
37510 tweak = new BN(tweak)
37511 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
37512
37513 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37514 }
37515
37516 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37517 var pair = loadPublicKey(publicKey)
37518 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37519
37520 tweak = new BN(tweak)
37521 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
37522
37523 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37524 }
37525
37526 exports.publicKeyCombine = function (publicKeys, compressed) {
37527 var pairs = new Array(publicKeys.length)
37528 for (var i = 0; i < publicKeys.length; ++i) {
37529 pairs[i] = loadPublicKey(publicKeys[i])
37530 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37531 }
37532
37533 var point = pairs[0].pub
37534 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37535 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
37536
37537 return new Buffer(point.encode(true, compressed))
37538 }
37539
37540 exports.signatureNormalize = function (signature) {
37541 var r = new BN(signature.slice(0, 32))
37542 var s = new BN(signature.slice(32, 64))
37543 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37544
37545 var result = new Buffer(signature)
37546 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37547
37548 return result
37549 }
37550
37551 exports.signatureExport = function (signature) {
37552 var r = signature.slice(0, 32)
37553 var s = signature.slice(32, 64)
37554 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37555
37556 return { r: r, s: s }
37557 }
37558
37559 exports.signatureImport = function (sigObj) {
37560 var r = new BN(sigObj.r)
37561 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37562
37563 var s = new BN(sigObj.s)
37564 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37565
37566 return Buffer.concat([
37567 r.toArrayLike(Buffer, 'be', 32),
37568 s.toArrayLike(Buffer, 'be', 32)
37569 ])
37570 }
37571
37572 exports.sign = function (message, privateKey, noncefn, data) {
37573 if (typeof noncefn === 'function') {
37574 var getNonce = noncefn
37575 noncefn = function (counter) {
37576 var nonce = getNonce(message, privateKey, null, data, counter)
37577 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
37578
37579 return new BN(nonce)
37580 }
37581 }
37582
37583 var d = new BN(privateKey)
37584 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
37585
37586 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37587 return {
37588 signature: Buffer.concat([
37589 result.r.toArrayLike(Buffer, 'be', 32),
37590 result.s.toArrayLike(Buffer, 'be', 32)
37591 ]),
37592 recovery: result.recoveryParam
37593 }
37594 }
37595
37596 exports.verify = function (message, signature, publicKey) {
37597 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37598
37599 var sigr = new BN(sigObj.r)
37600 var sigs = new BN(sigObj.s)
37601 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37602 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
37603
37604 var pair = loadPublicKey(publicKey)
37605 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37606
37607 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37608 }
37609
37610 exports.recover = function (message, signature, recovery, compressed) {
37611 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37612
37613 var sigr = new BN(sigObj.r)
37614 var sigs = new BN(sigObj.s)
37615 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37616
37617 try {
37618 if (sigr.isZero() || sigs.isZero()) throw new Error()
37619
37620 var point = ec.recoverPubKey(message, sigObj, recovery)
37621 return new Buffer(point.encode(true, compressed))
37622 } catch (err) {
37623 throw new Error(messages.ECDSA_RECOVER_FAIL)
37624 }
37625 }
37626
37627 exports.ecdh = function (publicKey, privateKey) {
37628 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37629 return createHash('sha256').update(shared).digest()
37630 }
37631
37632 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37633 var pair = loadPublicKey(publicKey)
37634 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37635
37636 var scalar = new BN(privateKey)
37637 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37638
37639 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
37640 }
37641
37642 }).call(this,require("buffer").Buffer)
37643 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37644 'use strict'
37645 var assert = require('./assert')
37646 var der = require('./der')
37647 var messages = require('./messages.json')
37648
37649 function initCompressedValue (value, defaultValue) {
37650 if (value === undefined) return defaultValue
37651
37652 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37653 return value
37654 }
37655
37656 module.exports = function (secp256k1) {
37657 return {
37658 privateKeyVerify: function (privateKey) {
37659 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37660 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37661 },
37662
37663 privateKeyExport: function (privateKey, compressed) {
37664 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37665 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37666
37667 compressed = initCompressedValue(compressed, true)
37668 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
37669
37670 return der.privateKeyExport(privateKey, publicKey, compressed)
37671 },
37672
37673 privateKeyImport: function (privateKey) {
37674 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37675
37676 privateKey = der.privateKeyImport(privateKey)
37677 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
37678
37679 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37680 },
37681
37682 privateKeyTweakAdd: function (privateKey, tweak) {
37683 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37684 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37685
37686 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37687 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37688
37689 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37690 },
37691
37692 privateKeyTweakMul: function (privateKey, tweak) {
37693 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37694 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37695
37696 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37697 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37698
37699 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37700 },
37701
37702 publicKeyCreate: function (privateKey, compressed) {
37703 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37704 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37705
37706 compressed = initCompressedValue(compressed, true)
37707
37708 return secp256k1.publicKeyCreate(privateKey, compressed)
37709 },
37710
37711 publicKeyConvert: function (publicKey, compressed) {
37712 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37713 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37714
37715 compressed = initCompressedValue(compressed, true)
37716
37717 return secp256k1.publicKeyConvert(publicKey, compressed)
37718 },
37719
37720 publicKeyVerify: function (publicKey) {
37721 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37722 return secp256k1.publicKeyVerify(publicKey)
37723 },
37724
37725 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37726 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37727 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37728
37729 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37730 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37731
37732 compressed = initCompressedValue(compressed, true)
37733
37734 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37735 },
37736
37737 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37738 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37739 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37740
37741 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37742 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37743
37744 compressed = initCompressedValue(compressed, true)
37745
37746 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37747 },
37748
37749 publicKeyCombine: function (publicKeys, compressed) {
37750 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37751 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37752 for (var i = 0; i < publicKeys.length; ++i) {
37753 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37754 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37755 }
37756
37757 compressed = initCompressedValue(compressed, true)
37758
37759 return secp256k1.publicKeyCombine(publicKeys, compressed)
37760 },
37761
37762 signatureNormalize: function (signature) {
37763 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37764 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37765
37766 return secp256k1.signatureNormalize(signature)
37767 },
37768
37769 signatureExport: function (signature) {
37770 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37771 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37772
37773 var sigObj = secp256k1.signatureExport(signature)
37774 return der.signatureExport(sigObj)
37775 },
37776
37777 signatureImport: function (sig) {
37778 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37779 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37780
37781 var sigObj = der.signatureImport(sig)
37782 if (sigObj) return secp256k1.signatureImport(sigObj)
37783
37784 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37785 },
37786
37787 signatureImportLax: function (sig) {
37788 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37789 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37790
37791 var sigObj = der.signatureImportLax(sig)
37792 if (sigObj) return secp256k1.signatureImport(sigObj)
37793
37794 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37795 },
37796
37797 sign: function (message, privateKey, options) {
37798 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37799 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37800
37801 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37802 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37803
37804 var data = null
37805 var noncefn = null
37806 if (options !== undefined) {
37807 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37808
37809 if (options.data !== undefined) {
37810 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37811 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37812 data = options.data
37813 }
37814
37815 if (options.noncefn !== undefined) {
37816 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37817 noncefn = options.noncefn
37818 }
37819 }
37820
37821 return secp256k1.sign(message, privateKey, noncefn, data)
37822 },
37823
37824 verify: function (message, signature, publicKey) {
37825 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37826 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37827
37828 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37829 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37830
37831 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37832 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37833
37834 return secp256k1.verify(message, signature, publicKey)
37835 },
37836
37837 recover: function (message, signature, recovery, compressed) {
37838 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37839 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37840
37841 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37842 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37843
37844 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37845 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
37846
37847 compressed = initCompressedValue(compressed, true)
37848
37849 return secp256k1.recover(message, signature, recovery, compressed)
37850 },
37851
37852 ecdh: function (publicKey, privateKey) {
37853 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37854 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37855
37856 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37857 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37858
37859 return secp256k1.ecdh(publicKey, privateKey)
37860 },
37861
37862 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37863 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37864 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37865
37866 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37867 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37868
37869 compressed = initCompressedValue(compressed, true)
37870
37871 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37872 }
37873 }
37874 }
37875
37876 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37877 module.exports={
37878 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37879 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37880 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37881 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37882 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37883 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37884 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37885 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37886 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37887 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37888 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37889 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37890 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37891 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37892 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37893 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37894 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37895 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37896 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37897 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37898 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37899 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37900 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37901 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37902 "MSG32_TYPE_INVALID": "message should be a Buffer",
37903 "MSG32_LENGTH_INVALID": "message length is invalid",
37904 "OPTIONS_TYPE_INVALID": "options should be an Object",
37905 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37906 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37907 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37908 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37909 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37910 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37911 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37912 }
37913
37914 },{}],79:[function(require,module,exports){
37915 (function (Buffer){
37916 // prototype class for hash functions
37917 function Hash (blockSize, finalSize) {
37918 this._block = new Buffer(blockSize)
37919 this._finalSize = finalSize
37920 this._blockSize = blockSize
37921 this._len = 0
37922 this._s = 0
37923 }
37924
37925 Hash.prototype.update = function (data, enc) {
37926 if (typeof data === 'string') {
37927 enc = enc || 'utf8'
37928 data = new Buffer(data, enc)
37929 }
37930
37931 var l = this._len += data.length
37932 var s = this._s || 0
37933 var f = 0
37934 var buffer = this._block
37935
37936 while (s < l) {
37937 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37938 var ch = (t - f)
37939
37940 for (var i = 0; i < ch; i++) {
37941 buffer[(s % this._blockSize) + i] = data[i + f]
37942 }
37943
37944 s += ch
37945 f += ch
37946
37947 if ((s % this._blockSize) === 0) {
37948 this._update(buffer)
37949 }
37950 }
37951 this._s = s
37952
37953 return this
37954 }
37955
37956 Hash.prototype.digest = function (enc) {
37957 // Suppose the length of the message M, in bits, is l
37958 var l = this._len * 8
37959
37960 // Append the bit 1 to the end of the message
37961 this._block[this._len % this._blockSize] = 0x80
37962
37963 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37964 this._block.fill(0, this._len % this._blockSize + 1)
37965
37966 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37967 this._update(this._block)
37968 this._block.fill(0)
37969 }
37970
37971 // to this append the block which is equal to the number l written in binary
37972 // TODO: handle case where l is > Math.pow(2, 29)
37973 this._block.writeInt32BE(l, this._blockSize - 4)
37974
37975 var hash = this._update(this._block) || this._hash()
37976
37977 return enc ? hash.toString(enc) : hash
37978 }
37979
37980 Hash.prototype._update = function () {
37981 throw new Error('_update must be implemented by subclass')
37982 }
37983
37984 module.exports = Hash
37985
37986 }).call(this,require("buffer").Buffer)
37987 },{"buffer":5}],80:[function(require,module,exports){
37988 var exports = module.exports = function SHA (algorithm) {
37989 algorithm = algorithm.toLowerCase()
37990
37991 var Algorithm = exports[algorithm]
37992 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
37993
37994 return new Algorithm()
37995 }
37996
37997 exports.sha = require('./sha')
37998 exports.sha1 = require('./sha1')
37999 exports.sha224 = require('./sha224')
38000 exports.sha256 = require('./sha256')
38001 exports.sha384 = require('./sha384')
38002 exports.sha512 = require('./sha512')
38003
38004 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
38005 (function (Buffer){
38006 /*
38007 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
38008 * in FIPS PUB 180-1
38009 * This source code is derived from sha1.js of the same repository.
38010 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
38011 * operation was added.
38012 */
38013
38014 var inherits = require('inherits')
38015 var Hash = require('./hash')
38016
38017 var K = [
38018 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38019 ]
38020
38021 var W = new Array(80)
38022
38023 function Sha () {
38024 this.init()
38025 this._w = W
38026
38027 Hash.call(this, 64, 56)
38028 }
38029
38030 inherits(Sha, Hash)
38031
38032 Sha.prototype.init = function () {
38033 this._a = 0x67452301
38034 this._b = 0xefcdab89
38035 this._c = 0x98badcfe
38036 this._d = 0x10325476
38037 this._e = 0xc3d2e1f0
38038
38039 return this
38040 }
38041
38042 function rotl5 (num) {
38043 return (num << 5) | (num >>> 27)
38044 }
38045
38046 function rotl30 (num) {
38047 return (num << 30) | (num >>> 2)
38048 }
38049
38050 function ft (s, b, c, d) {
38051 if (s === 0) return (b & c) | ((~b) & d)
38052 if (s === 2) return (b & c) | (b & d) | (c & d)
38053 return b ^ c ^ d
38054 }
38055
38056 Sha.prototype._update = function (M) {
38057 var W = this._w
38058
38059 var a = this._a | 0
38060 var b = this._b | 0
38061 var c = this._c | 0
38062 var d = this._d | 0
38063 var e = this._e | 0
38064
38065 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38066 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
38067
38068 for (var j = 0; j < 80; ++j) {
38069 var s = ~~(j / 20)
38070 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38071
38072 e = d
38073 d = c
38074 c = rotl30(b)
38075 b = a
38076 a = t
38077 }
38078
38079 this._a = (a + this._a) | 0
38080 this._b = (b + this._b) | 0
38081 this._c = (c + this._c) | 0
38082 this._d = (d + this._d) | 0
38083 this._e = (e + this._e) | 0
38084 }
38085
38086 Sha.prototype._hash = function () {
38087 var H = new Buffer(20)
38088
38089 H.writeInt32BE(this._a | 0, 0)
38090 H.writeInt32BE(this._b | 0, 4)
38091 H.writeInt32BE(this._c | 0, 8)
38092 H.writeInt32BE(this._d | 0, 12)
38093 H.writeInt32BE(this._e | 0, 16)
38094
38095 return H
38096 }
38097
38098 module.exports = Sha
38099
38100 }).call(this,require("buffer").Buffer)
38101 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38102 (function (Buffer){
38103 /*
38104 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38105 * in FIPS PUB 180-1
38106 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38107 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38108 * Distributed under the BSD License
38109 * See http://pajhome.org.uk/crypt/md5 for details.
38110 */
38111
38112 var inherits = require('inherits')
38113 var Hash = require('./hash')
38114
38115 var K = [
38116 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38117 ]
38118
38119 var W = new Array(80)
38120
38121 function Sha1 () {
38122 this.init()
38123 this._w = W
38124
38125 Hash.call(this, 64, 56)
38126 }
38127
38128 inherits(Sha1, Hash)
38129
38130 Sha1.prototype.init = function () {
38131 this._a = 0x67452301
38132 this._b = 0xefcdab89
38133 this._c = 0x98badcfe
38134 this._d = 0x10325476
38135 this._e = 0xc3d2e1f0
38136
38137 return this
38138 }
38139
38140 function rotl1 (num) {
38141 return (num << 1) | (num >>> 31)
38142 }
38143
38144 function rotl5 (num) {
38145 return (num << 5) | (num >>> 27)
38146 }
38147
38148 function rotl30 (num) {
38149 return (num << 30) | (num >>> 2)
38150 }
38151
38152 function ft (s, b, c, d) {
38153 if (s === 0) return (b & c) | ((~b) & d)
38154 if (s === 2) return (b & c) | (b & d) | (c & d)
38155 return b ^ c ^ d
38156 }
38157
38158 Sha1.prototype._update = function (M) {
38159 var W = this._w
38160
38161 var a = this._a | 0
38162 var b = this._b | 0
38163 var c = this._c | 0
38164 var d = this._d | 0
38165 var e = this._e | 0
38166
38167 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38168 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38169
38170 for (var j = 0; j < 80; ++j) {
38171 var s = ~~(j / 20)
38172 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38173
38174 e = d
38175 d = c
38176 c = rotl30(b)
38177 b = a
38178 a = t
38179 }
38180
38181 this._a = (a + this._a) | 0
38182 this._b = (b + this._b) | 0
38183 this._c = (c + this._c) | 0
38184 this._d = (d + this._d) | 0
38185 this._e = (e + this._e) | 0
38186 }
38187
38188 Sha1.prototype._hash = function () {
38189 var H = new Buffer(20)
38190
38191 H.writeInt32BE(this._a | 0, 0)
38192 H.writeInt32BE(this._b | 0, 4)
38193 H.writeInt32BE(this._c | 0, 8)
38194 H.writeInt32BE(this._d | 0, 12)
38195 H.writeInt32BE(this._e | 0, 16)
38196
38197 return H
38198 }
38199
38200 module.exports = Sha1
38201
38202 }).call(this,require("buffer").Buffer)
38203 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38204 (function (Buffer){
38205 /**
38206 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38207 * in FIPS 180-2
38208 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38209 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38210 *
38211 */
38212
38213 var inherits = require('inherits')
38214 var Sha256 = require('./sha256')
38215 var Hash = require('./hash')
38216
38217 var W = new Array(64)
38218
38219 function Sha224 () {
38220 this.init()
38221
38222 this._w = W // new Array(64)
38223
38224 Hash.call(this, 64, 56)
38225 }
38226
38227 inherits(Sha224, Sha256)
38228
38229 Sha224.prototype.init = function () {
38230 this._a = 0xc1059ed8
38231 this._b = 0x367cd507
38232 this._c = 0x3070dd17
38233 this._d = 0xf70e5939
38234 this._e = 0xffc00b31
38235 this._f = 0x68581511
38236 this._g = 0x64f98fa7
38237 this._h = 0xbefa4fa4
38238
38239 return this
38240 }
38241
38242 Sha224.prototype._hash = function () {
38243 var H = new Buffer(28)
38244
38245 H.writeInt32BE(this._a, 0)
38246 H.writeInt32BE(this._b, 4)
38247 H.writeInt32BE(this._c, 8)
38248 H.writeInt32BE(this._d, 12)
38249 H.writeInt32BE(this._e, 16)
38250 H.writeInt32BE(this._f, 20)
38251 H.writeInt32BE(this._g, 24)
38252
38253 return H
38254 }
38255
38256 module.exports = Sha224
38257
38258 }).call(this,require("buffer").Buffer)
38259 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38260 (function (Buffer){
38261 /**
38262 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38263 * in FIPS 180-2
38264 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38265 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38266 *
38267 */
38268
38269 var inherits = require('inherits')
38270 var Hash = require('./hash')
38271
38272 var K = [
38273 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38274 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38275 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38276 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38277 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38278 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38279 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38280 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38281 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38282 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38283 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38284 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38285 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38286 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38287 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38288 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38289 ]
38290
38291 var W = new Array(64)
38292
38293 function Sha256 () {
38294 this.init()
38295
38296 this._w = W // new Array(64)
38297
38298 Hash.call(this, 64, 56)
38299 }
38300
38301 inherits(Sha256, Hash)
38302
38303 Sha256.prototype.init = function () {
38304 this._a = 0x6a09e667
38305 this._b = 0xbb67ae85
38306 this._c = 0x3c6ef372
38307 this._d = 0xa54ff53a
38308 this._e = 0x510e527f
38309 this._f = 0x9b05688c
38310 this._g = 0x1f83d9ab
38311 this._h = 0x5be0cd19
38312
38313 return this
38314 }
38315
38316 function ch (x, y, z) {
38317 return z ^ (x & (y ^ z))
38318 }
38319
38320 function maj (x, y, z) {
38321 return (x & y) | (z & (x | y))
38322 }
38323
38324 function sigma0 (x) {
38325 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38326 }
38327
38328 function sigma1 (x) {
38329 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38330 }
38331
38332 function gamma0 (x) {
38333 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38334 }
38335
38336 function gamma1 (x) {
38337 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38338 }
38339
38340 Sha256.prototype._update = function (M) {
38341 var W = this._w
38342
38343 var a = this._a | 0
38344 var b = this._b | 0
38345 var c = this._c | 0
38346 var d = this._d | 0
38347 var e = this._e | 0
38348 var f = this._f | 0
38349 var g = this._g | 0
38350 var h = this._h | 0
38351
38352 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38353 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
38354
38355 for (var j = 0; j < 64; ++j) {
38356 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38357 var T2 = (sigma0(a) + maj(a, b, c)) | 0
38358
38359 h = g
38360 g = f
38361 f = e
38362 e = (d + T1) | 0
38363 d = c
38364 c = b
38365 b = a
38366 a = (T1 + T2) | 0
38367 }
38368
38369 this._a = (a + this._a) | 0
38370 this._b = (b + this._b) | 0
38371 this._c = (c + this._c) | 0
38372 this._d = (d + this._d) | 0
38373 this._e = (e + this._e) | 0
38374 this._f = (f + this._f) | 0
38375 this._g = (g + this._g) | 0
38376 this._h = (h + this._h) | 0
38377 }
38378
38379 Sha256.prototype._hash = function () {
38380 var H = new Buffer(32)
38381
38382 H.writeInt32BE(this._a, 0)
38383 H.writeInt32BE(this._b, 4)
38384 H.writeInt32BE(this._c, 8)
38385 H.writeInt32BE(this._d, 12)
38386 H.writeInt32BE(this._e, 16)
38387 H.writeInt32BE(this._f, 20)
38388 H.writeInt32BE(this._g, 24)
38389 H.writeInt32BE(this._h, 28)
38390
38391 return H
38392 }
38393
38394 module.exports = Sha256
38395
38396 }).call(this,require("buffer").Buffer)
38397 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38398 (function (Buffer){
38399 var inherits = require('inherits')
38400 var SHA512 = require('./sha512')
38401 var Hash = require('./hash')
38402
38403 var W = new Array(160)
38404
38405 function Sha384 () {
38406 this.init()
38407 this._w = W
38408
38409 Hash.call(this, 128, 112)
38410 }
38411
38412 inherits(Sha384, SHA512)
38413
38414 Sha384.prototype.init = function () {
38415 this._ah = 0xcbbb9d5d
38416 this._bh = 0x629a292a
38417 this._ch = 0x9159015a
38418 this._dh = 0x152fecd8
38419 this._eh = 0x67332667
38420 this._fh = 0x8eb44a87
38421 this._gh = 0xdb0c2e0d
38422 this._hh = 0x47b5481d
38423
38424 this._al = 0xc1059ed8
38425 this._bl = 0x367cd507
38426 this._cl = 0x3070dd17
38427 this._dl = 0xf70e5939
38428 this._el = 0xffc00b31
38429 this._fl = 0x68581511
38430 this._gl = 0x64f98fa7
38431 this._hl = 0xbefa4fa4
38432
38433 return this
38434 }
38435
38436 Sha384.prototype._hash = function () {
38437 var H = new Buffer(48)
38438
38439 function writeInt64BE (h, l, offset) {
38440 H.writeInt32BE(h, offset)
38441 H.writeInt32BE(l, offset + 4)
38442 }
38443
38444 writeInt64BE(this._ah, this._al, 0)
38445 writeInt64BE(this._bh, this._bl, 8)
38446 writeInt64BE(this._ch, this._cl, 16)
38447 writeInt64BE(this._dh, this._dl, 24)
38448 writeInt64BE(this._eh, this._el, 32)
38449 writeInt64BE(this._fh, this._fl, 40)
38450
38451 return H
38452 }
38453
38454 module.exports = Sha384
38455
38456 }).call(this,require("buffer").Buffer)
38457 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38458 (function (Buffer){
38459 var inherits = require('inherits')
38460 var Hash = require('./hash')
38461
38462 var K = [
38463 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38464 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38465 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38466 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38467 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38468 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38469 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38470 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38471 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38472 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38473 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38474 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38475 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38476 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38477 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38478 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38479 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38480 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38481 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38482 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38483 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38484 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38485 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38486 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38487 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38488 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38489 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38490 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38491 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38492 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38493 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38494 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38495 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38496 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38497 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38498 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38499 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38500 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38501 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38502 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38503 ]
38504
38505 var W = new Array(160)
38506
38507 function Sha512 () {
38508 this.init()
38509 this._w = W
38510
38511 Hash.call(this, 128, 112)
38512 }
38513
38514 inherits(Sha512, Hash)
38515
38516 Sha512.prototype.init = function () {
38517 this._ah = 0x6a09e667
38518 this._bh = 0xbb67ae85
38519 this._ch = 0x3c6ef372
38520 this._dh = 0xa54ff53a
38521 this._eh = 0x510e527f
38522 this._fh = 0x9b05688c
38523 this._gh = 0x1f83d9ab
38524 this._hh = 0x5be0cd19
38525
38526 this._al = 0xf3bcc908
38527 this._bl = 0x84caa73b
38528 this._cl = 0xfe94f82b
38529 this._dl = 0x5f1d36f1
38530 this._el = 0xade682d1
38531 this._fl = 0x2b3e6c1f
38532 this._gl = 0xfb41bd6b
38533 this._hl = 0x137e2179
38534
38535 return this
38536 }
38537
38538 function Ch (x, y, z) {
38539 return z ^ (x & (y ^ z))
38540 }
38541
38542 function maj (x, y, z) {
38543 return (x & y) | (z & (x | y))
38544 }
38545
38546 function sigma0 (x, xl) {
38547 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38548 }
38549
38550 function sigma1 (x, xl) {
38551 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38552 }
38553
38554 function Gamma0 (x, xl) {
38555 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
38556 }
38557
38558 function Gamma0l (x, xl) {
38559 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38560 }
38561
38562 function Gamma1 (x, xl) {
38563 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
38564 }
38565
38566 function Gamma1l (x, xl) {
38567 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
38568 }
38569
38570 function getCarry (a, b) {
38571 return (a >>> 0) < (b >>> 0) ? 1 : 0
38572 }
38573
38574 Sha512.prototype._update = function (M) {
38575 var W = this._w
38576
38577 var ah = this._ah | 0
38578 var bh = this._bh | 0
38579 var ch = this._ch | 0
38580 var dh = this._dh | 0
38581 var eh = this._eh | 0
38582 var fh = this._fh | 0
38583 var gh = this._gh | 0
38584 var hh = this._hh | 0
38585
38586 var al = this._al | 0
38587 var bl = this._bl | 0
38588 var cl = this._cl | 0
38589 var dl = this._dl | 0
38590 var el = this._el | 0
38591 var fl = this._fl | 0
38592 var gl = this._gl | 0
38593 var hl = this._hl | 0
38594
38595 for (var i = 0; i < 32; i += 2) {
38596 W[i] = M.readInt32BE(i * 4)
38597 W[i + 1] = M.readInt32BE(i * 4 + 4)
38598 }
38599 for (; i < 160; i += 2) {
38600 var xh = W[i - 15 * 2]
38601 var xl = W[i - 15 * 2 + 1]
38602 var gamma0 = Gamma0(xh, xl)
38603 var gamma0l = Gamma0l(xl, xh)
38604
38605 xh = W[i - 2 * 2]
38606 xl = W[i - 2 * 2 + 1]
38607 var gamma1 = Gamma1(xh, xl)
38608 var gamma1l = Gamma1l(xl, xh)
38609
38610 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38611 var Wi7h = W[i - 7 * 2]
38612 var Wi7l = W[i - 7 * 2 + 1]
38613
38614 var Wi16h = W[i - 16 * 2]
38615 var Wi16l = W[i - 16 * 2 + 1]
38616
38617 var Wil = (gamma0l + Wi7l) | 0
38618 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38619 Wil = (Wil + gamma1l) | 0
38620 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38621 Wil = (Wil + Wi16l) | 0
38622 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
38623
38624 W[i] = Wih
38625 W[i + 1] = Wil
38626 }
38627
38628 for (var j = 0; j < 160; j += 2) {
38629 Wih = W[j]
38630 Wil = W[j + 1]
38631
38632 var majh = maj(ah, bh, ch)
38633 var majl = maj(al, bl, cl)
38634
38635 var sigma0h = sigma0(ah, al)
38636 var sigma0l = sigma0(al, ah)
38637 var sigma1h = sigma1(eh, el)
38638 var sigma1l = sigma1(el, eh)
38639
38640 // t1 = h + sigma1 + ch + K[j] + W[j]
38641 var Kih = K[j]
38642 var Kil = K[j + 1]
38643
38644 var chh = Ch(eh, fh, gh)
38645 var chl = Ch(el, fl, gl)
38646
38647 var t1l = (hl + sigma1l) | 0
38648 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38649 t1l = (t1l + chl) | 0
38650 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38651 t1l = (t1l + Kil) | 0
38652 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38653 t1l = (t1l + Wil) | 0
38654 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
38655
38656 // t2 = sigma0 + maj
38657 var t2l = (sigma0l + majl) | 0
38658 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
38659
38660 hh = gh
38661 hl = gl
38662 gh = fh
38663 gl = fl
38664 fh = eh
38665 fl = el
38666 el = (dl + t1l) | 0
38667 eh = (dh + t1h + getCarry(el, dl)) | 0
38668 dh = ch
38669 dl = cl
38670 ch = bh
38671 cl = bl
38672 bh = ah
38673 bl = al
38674 al = (t1l + t2l) | 0
38675 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38676 }
38677
38678 this._al = (this._al + al) | 0
38679 this._bl = (this._bl + bl) | 0
38680 this._cl = (this._cl + cl) | 0
38681 this._dl = (this._dl + dl) | 0
38682 this._el = (this._el + el) | 0
38683 this._fl = (this._fl + fl) | 0
38684 this._gl = (this._gl + gl) | 0
38685 this._hl = (this._hl + hl) | 0
38686
38687 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38688 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38689 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38690 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38691 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38692 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38693 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38694 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
38695 }
38696
38697 Sha512.prototype._hash = function () {
38698 var H = new Buffer(64)
38699
38700 function writeInt64BE (h, l, offset) {
38701 H.writeInt32BE(h, offset)
38702 H.writeInt32BE(l, offset + 4)
38703 }
38704
38705 writeInt64BE(this._ah, this._al, 0)
38706 writeInt64BE(this._bh, this._bl, 8)
38707 writeInt64BE(this._ch, this._cl, 16)
38708 writeInt64BE(this._dh, this._dl, 24)
38709 writeInt64BE(this._eh, this._el, 32)
38710 writeInt64BE(this._fh, this._fl, 40)
38711 writeInt64BE(this._gh, this._gl, 48)
38712 writeInt64BE(this._hh, this._hl, 56)
38713
38714 return H
38715 }
38716
38717 module.exports = Sha512
38718
38719 }).call(this,require("buffer").Buffer)
38720 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38721 var isHexPrefixed = require('is-hex-prefixed');
38722
38723 /**
38724 * Removes '0x' from a given `String` is present
38725 * @param {String} str the string value
38726 * @return {String|Optional} a string by pass if necessary
38727 */
38728 module.exports = function stripHexPrefix(str) {
38729 if (typeof str !== 'string') {
38730 return str;
38731 }
38732
38733 return isHexPrefixed(str) ? str.slice(2) : str;
38734 }
38735
38736 },{"is-hex-prefixed":64}]},{},[31])(31)
38737 });</script>
38738 <script>function convertRippleAdrr(address) {
38739 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38740 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38741 )
38742 }
38743
38744 function convertRipplePriv(priv) {
38745 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
38746 }
38747
38748 </script>
38749 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
38750
38751 //// base.js
38752
38753 /** @fileOverview Javascript cryptography implementation.
38754 *
38755 * Crush to remove comments, shorten variable names and
38756 * generally reduce transmission size.
38757 *
38758 * @author Emily Stark
38759 * @author Mike Hamburg
38760 * @author Dan Boneh
38761 */
38762
38763 "use strict";
38764 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38765 /*global document, window, escape, unescape, module, require, Uint32Array */
38766
38767 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38768 var sjcl = {
38769 /** @namespace Symmetric ciphers. */
38770 cipher: {},
38771
38772 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38773 hash: {},
38774
38775 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38776 keyexchange: {},
38777
38778 /** @namespace Block cipher modes of operation. */
38779 mode: {},
38780
38781 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38782 misc: {},
38783
38784 /**
38785 * @namespace Bit array encoders and decoders.
38786 *
38787 * @description
38788 * The members of this namespace are functions which translate between
38789 * SJCL's bitArrays and other objects (usually strings). Because it
38790 * isn't always clear which direction is encoding and which is decoding,
38791 * the method names are "fromBits" and "toBits".
38792 */
38793 codec: {},
38794
38795 /** @namespace Exceptions. */
38796 exception: {
38797 /** @constructor Ciphertext is corrupt. */
38798 corrupt: function(message) {
38799 this.toString = function() { return "CORRUPT: "+this.message; };
38800 this.message = message;
38801 },
38802
38803 /** @constructor Invalid parameter. */
38804 invalid: function(message) {
38805 this.toString = function() { return "INVALID: "+this.message; };
38806 this.message = message;
38807 },
38808
38809 /** @constructor Bug or missing feature in SJCL. @constructor */
38810 bug: function(message) {
38811 this.toString = function() { return "BUG: "+this.message; };
38812 this.message = message;
38813 },
38814
38815 /** @constructor Something isn't ready. */
38816 notReady: function(message) {
38817 this.toString = function() { return "NOT READY: "+this.message; };
38818 this.message = message;
38819 }
38820 }
38821 };
38822
38823 if(typeof module !== 'undefined' && module.exports){
38824 module.exports = sjcl;
38825 }
38826 if (typeof define === "function") {
38827 define([], function () {
38828 return sjcl;
38829 });
38830 }
38831
38832
38833 //// bitArray.js
38834
38835 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38836 *
38837 * @author Emily Stark
38838 * @author Mike Hamburg
38839 * @author Dan Boneh
38840 */
38841
38842 /** @namespace Arrays of bits, encoded as arrays of Numbers.
38843 *
38844 * @description
38845 * <p>
38846 * These objects are the currency accepted by SJCL's crypto functions.
38847 * </p>
38848 *
38849 * <p>
38850 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38851 * but many of them can take arguments that are not a multiple of 4 bytes.
38852 * This library encodes arrays of bits (whose size need not be a multiple of 8
38853 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38854 * array of words, 32 bits at a time. Since the words are double-precision
38855 * floating point numbers, they fit some extra data. We use this (in a private,
38856 * possibly-changing manner) to encode the number of bits actually present
38857 * in the last word of the array.
38858 * </p>
38859 *
38860 * <p>
38861 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38862 * to ciphers like AES which want arrays of words.
38863 * </p>
38864 */
38865 sjcl.bitArray = {
38866 /**
38867 * Array slices in units of bits.
38868 * @param {bitArray} a The array to slice.
38869 * @param {Number} bstart The offset to the start of the slice, in bits.
38870 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38871 * slice until the end of the array.
38872 * @return {bitArray} The requested slice.
38873 */
38874 bitSlice: function (a, bstart, bend) {
38875 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38876 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38877 },
38878
38879 /**
38880 * Extract a number packed into a bit array.
38881 * @param {bitArray} a The array to slice.
38882 * @param {Number} bstart The offset to the start of the slice, in bits.
38883 * @param {Number} length The length of the number to extract.
38884 * @return {Number} The requested slice.
38885 */
38886 extract: function(a, bstart, blength) {
38887 // FIXME: this Math.floor is not necessary at all, but for some reason
38888 // seems to suppress a bug in the Chromium JIT.
38889 var x, sh = Math.floor((-bstart-blength) & 31);
38890 if ((bstart + blength - 1 ^ bstart) & -32) {
38891 // it crosses a boundary
38892 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38893 } else {
38894 // within a single word
38895 x = a[bstart/32|0] >>> sh;
38896 }
38897 return x & ((1<<blength) - 1);
38898 },
38899
38900 /**
38901 * Concatenate two bit arrays.
38902 * @param {bitArray} a1 The first array.
38903 * @param {bitArray} a2 The second array.
38904 * @return {bitArray} The concatenation of a1 and a2.
38905 */
38906 concat: function (a1, a2) {
38907 if (a1.length === 0 || a2.length === 0) {
38908 return a1.concat(a2);
38909 }
38910
38911 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38912 if (shift === 32) {
38913 return a1.concat(a2);
38914 } else {
38915 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
38916 }
38917 },
38918
38919 /**
38920 * Find the length of an array of bits.
38921 * @param {bitArray} a The array.
38922 * @return {Number} The length of a, in bits.
38923 */
38924 bitLength: function (a) {
38925 var l = a.length, x;
38926 if (l === 0) { return 0; }
38927 x = a[l - 1];
38928 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38929 },
38930
38931 /**
38932 * Truncate an array.
38933 * @param {bitArray} a The array.
38934 * @param {Number} len The length to truncate to, in bits.
38935 * @return {bitArray} A new array, truncated to len bits.
38936 */
38937 clamp: function (a, len) {
38938 if (a.length * 32 < len) { return a; }
38939 a = a.slice(0, Math.ceil(len / 32));
38940 var l = a.length;
38941 len = len & 31;
38942 if (l > 0 && len) {
38943 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38944 }
38945 return a;
38946 },
38947
38948 /**
38949 * Make a partial word for a bit array.
38950 * @param {Number} len The number of bits in the word.
38951 * @param {Number} x The bits.
38952 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38953 * @return {Number} The partial word.
38954 */
38955 partial: function (len, x, _end) {
38956 if (len === 32) { return x; }
38957 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38958 },
38959
38960 /**
38961 * Get the number of bits used by a partial word.
38962 * @param {Number} x The partial word.
38963 * @return {Number} The number of bits used by the partial word.
38964 */
38965 getPartial: function (x) {
38966 return Math.round(x/0x10000000000) || 32;
38967 },
38968
38969 /**
38970 * Compare two arrays for equality in a predictable amount of time.
38971 * @param {bitArray} a The first array.
38972 * @param {bitArray} b The second array.
38973 * @return {boolean} true if a == b; false otherwise.
38974 */
38975 equal: function (a, b) {
38976 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38977 return false;
38978 }
38979 var x = 0, i;
38980 for (i=0; i<a.length; i++) {
38981 x |= a[i]^b[i];
38982 }
38983 return (x === 0);
38984 },
38985
38986 /** Shift an array right.
38987 * @param {bitArray} a The array to shift.
38988 * @param {Number} shift The number of bits to shift.
38989 * @param {Number} [carry=0] A byte to carry in
38990 * @param {bitArray} [out=[]] An array to prepend to the output.
38991 * @private
38992 */
38993 _shiftRight: function (a, shift, carry, out) {
38994 var i, last2=0, shift2;
38995 if (out === undefined) { out = []; }
38996
38997 for (; shift >= 32; shift -= 32) {
38998 out.push(carry);
38999 carry = 0;
39000 }
39001 if (shift === 0) {
39002 return out.concat(a);
39003 }
39004
39005 for (i=0; i<a.length; i++) {
39006 out.push(carry | a[i]>>>shift);
39007 carry = a[i] << (32-shift);
39008 }
39009 last2 = a.length ? a[a.length-1] : 0;
39010 shift2 = sjcl.bitArray.getPartial(last2);
39011 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
39012 return out;
39013 },
39014
39015 /** xor a block of 4 words together.
39016 * @private
39017 */
39018 _xor4: function(x,y) {
39019 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
39020 },
39021
39022 /** byteswap a word array inplace.
39023 * (does not handle partial words)
39024 * @param {sjcl.bitArray} a word array
39025 * @return {sjcl.bitArray} byteswapped array
39026 */
39027 byteswapM: function(a) {
39028 var i, v, m = 0xff00;
39029 for (i = 0; i < a.length; ++i) {
39030 v = a[i];
39031 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
39032 }
39033 return a;
39034 }
39035 };
39036
39037
39038 //// codecString.js
39039
39040 /** @fileOverview Bit array codec implementations.
39041 *
39042 * @author Emily Stark
39043 * @author Mike Hamburg
39044 * @author Dan Boneh
39045 */
39046
39047 /** @namespace UTF-8 strings */
39048 sjcl.codec.utf8String = {
39049 /** Convert from a bitArray to a UTF-8 string. */
39050 fromBits: function (arr) {
39051 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39052 for (i=0; i<bl/8; i++) {
39053 if ((i&3) === 0) {
39054 tmp = arr[i/4];
39055 }
39056 out += String.fromCharCode(tmp >>> 24);
39057 tmp <<= 8;
39058 }
39059 return decodeURIComponent(escape(out));
39060 },
39061
39062 /** Convert from a UTF-8 string to a bitArray. */
39063 toBits: function (str) {
39064 str = unescape(encodeURIComponent(str));
39065 var out = [], i, tmp=0;
39066 for (i=0; i<str.length; i++) {
39067 tmp = tmp << 8 | str.charCodeAt(i);
39068 if ((i&3) === 3) {
39069 out.push(tmp);
39070 tmp = 0;
39071 }
39072 }
39073 if (i&3) {
39074 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
39075 }
39076 return out;
39077 }
39078 };
39079
39080
39081 //// codecHex.js
39082
39083 /** @fileOverview Bit array codec implementations.
39084 *
39085 * @author Emily Stark
39086 * @author Mike Hamburg
39087 * @author Dan Boneh
39088 */
39089
39090 /** @namespace Hexadecimal */
39091 sjcl.codec.hex = {
39092 /** Convert from a bitArray to a hex string. */
39093 fromBits: function (arr) {
39094 var out = "", i;
39095 for (i=0; i<arr.length; i++) {
39096 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
39097 }
39098 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39099 },
39100 /** Convert from a hex string to a bitArray. */
39101 toBits: function (str) {
39102 var i, out=[], len;
39103 str = str.replace(/\s|0x/g, "");
39104 len = str.length;
39105 str = str + "00000000";
39106 for (i=0; i<str.length; i+=8) {
39107 out.push(parseInt(str.substr(i,8),16)^0);
39108 }
39109 return sjcl.bitArray.clamp(out, len*4);
39110 }
39111 };
39112
39113
39114 //// sha512.js
39115
39116 /** @fileOverview Javascript SHA-512 implementation.
39117 *
39118 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39119 * SJCL by Stefan Thomas.
39120 *
39121 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
39122 * Released with New BSD License
39123 *
39124 * @author Emily Stark
39125 * @author Mike Hamburg
39126 * @author Dan Boneh
39127 * @author Jeff Mott
39128 * @author Stefan Thomas
39129 */
39130
39131 /**
39132 * Context for a SHA-512 operation in progress.
39133 * @constructor
39134 * @class Secure Hash Algorithm, 512 bits.
39135 */
39136 sjcl.hash.sha512 = function (hash) {
39137 if (!this._key[0]) { this._precompute(); }
39138 if (hash) {
39139 this._h = hash._h.slice(0);
39140 this._buffer = hash._buffer.slice(0);
39141 this._length = hash._length;
39142 } else {
39143 this.reset();
39144 }
39145 };
39146
39147 /**
39148 * Hash a string or an array of words.
39149 * @static
39150 * @param {bitArray|String} data the data to hash.
39151 * @return {bitArray} The hash value, an array of 16 big-endian words.
39152 */
39153 sjcl.hash.sha512.hash = function (data) {
39154 return (new sjcl.hash.sha512()).update(data).finalize();
39155 };
39156
39157 sjcl.hash.sha512.prototype = {
39158 /**
39159 * The hash's block size, in bits.
39160 * @constant
39161 */
39162 blockSize: 1024,
39163
39164 /**
39165 * Reset the hash state.
39166 * @return this
39167 */
39168 reset:function () {
39169 this._h = this._init.slice(0);
39170 this._buffer = [];
39171 this._length = 0;
39172 return this;
39173 },
39174
39175 /**
39176 * Input several words to the hash.
39177 * @param {bitArray|String} data the data to hash.
39178 * @return this
39179 */
39180 update: function (data) {
39181 if (typeof data === "string") {
39182 data = sjcl.codec.utf8String.toBits(data);
39183 }
39184 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39185 ol = this._length,
39186 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39187 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39188 this._block(b.splice(0,32));
39189 }
39190 return this;
39191 },
39192
39193 /**
39194 * Complete hashing and output the hash value.
39195 * @return {bitArray} The hash value, an array of 16 big-endian words.
39196 */
39197 finalize:function () {
39198 var i, b = this._buffer, h = this._h;
39199
39200 // Round out and push the buffer
39201 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39202
39203 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39204 for (i = b.length + 4; i & 31; i++) {
39205 b.push(0);
39206 }
39207
39208 // append the length
39209 b.push(0);
39210 b.push(0);
39211 b.push(Math.floor(this._length / 0x100000000));
39212 b.push(this._length | 0);
39213
39214 while (b.length) {
39215 this._block(b.splice(0,32));
39216 }
39217
39218 this.reset();
39219 return h;
39220 },
39221
39222 /**
39223 * The SHA-512 initialization vector, to be precomputed.
39224 * @private
39225 */
39226 _init:[],
39227
39228 /**
39229 * Least significant 24 bits of SHA512 initialization values.
39230 *
39231 * Javascript only has 53 bits of precision, so we compute the 40 most
39232 * significant bits and add the remaining 24 bits as constants.
39233 *
39234 * @private
39235 */
39236 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39237
39238 /*
39239 _init:
39240 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39241 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39242 */
39243
39244 /**
39245 * The SHA-512 hash key, to be precomputed.
39246 * @private
39247 */
39248 _key:[],
39249
39250 /**
39251 * Least significant 24 bits of SHA512 key values.
39252 * @private
39253 */
39254 _keyr:
39255 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39256 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39257 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39258 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39259 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39260 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39261 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39262 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39263 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39264 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39265
39266 /*
39267 _key:
39268 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39269 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39270 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39271 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39272 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39273 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39274 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39275 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39276 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39277 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39278 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39279 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39280 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39281 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39282 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39283 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39284 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39285 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39286 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39287 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39288 */
39289
39290 /**
39291 * Function to precompute _init and _key.
39292 * @private
39293 */
39294 _precompute: function () {
39295 // XXX: This code is for precomputing the SHA256 constants, change for
39296 // SHA512 and re-enable.
39297 var i = 0, prime = 2, factor;
39298
39299 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39300 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39301
39302 outer: for (; i<80; prime++) {
39303 for (factor=2; factor*factor <= prime; factor++) {
39304 if (prime % factor === 0) {
39305 // not a prime
39306 continue outer;
39307 }
39308 }
39309
39310 if (i<8) {
39311 this._init[i*2] = frac(Math.pow(prime, 1/2));
39312 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39313 }
39314 this._key[i*2] = frac(Math.pow(prime, 1/3));
39315 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39316 i++;
39317 }
39318 },
39319
39320 /**
39321 * Perform one cycle of SHA-512.
39322 * @param {bitArray} words one block of words.
39323 * @private
39324 */
39325 _block:function (words) {
39326 var i, wrh, wrl,
39327 w = words.slice(0),
39328 h = this._h,
39329 k = this._key,
39330 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39331 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39332 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39333 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39334
39335 // Working variables
39336 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39337 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39338 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39339 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39340
39341 for (i=0; i<80; i++) {
39342 // load up the input word for this round
39343 if (i<16) {
39344 wrh = w[i * 2];
39345 wrl = w[i * 2 + 1];
39346 } else {
39347 // Gamma0
39348 var gamma0xh = w[(i-15) * 2];
39349 var gamma0xl = w[(i-15) * 2 + 1];
39350 var gamma0h =
39351 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39352 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39353 (gamma0xh >>> 7);
39354 var gamma0l =
39355 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39356 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39357 ((gamma0xh << 25) | (gamma0xl >>> 7));
39358
39359 // Gamma1
39360 var gamma1xh = w[(i-2) * 2];
39361 var gamma1xl = w[(i-2) * 2 + 1];
39362 var gamma1h =
39363 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39364 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39365 (gamma1xh >>> 6);
39366 var gamma1l =
39367 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39368 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39369 ((gamma1xh << 26) | (gamma1xl >>> 6));
39370
39371 // Shortcuts
39372 var wr7h = w[(i-7) * 2];
39373 var wr7l = w[(i-7) * 2 + 1];
39374
39375 var wr16h = w[(i-16) * 2];
39376 var wr16l = w[(i-16) * 2 + 1];
39377
39378 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39379 wrl = gamma0l + wr7l;
39380 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39381 wrl += gamma1l;
39382 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39383 wrl += wr16l;
39384 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39385 }
39386
39387 w[i*2] = wrh |= 0;
39388 w[i*2 + 1] = wrl |= 0;
39389
39390 // Ch
39391 var chh = (eh & fh) ^ (~eh & gh);
39392 var chl = (el & fl) ^ (~el & gl);
39393
39394 // Maj
39395 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39396 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39397
39398 // Sigma0
39399 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39400 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39401
39402 // Sigma1
39403 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39404 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39405
39406 // K(round)
39407 var krh = k[i*2];
39408 var krl = k[i*2+1];
39409
39410 // t1 = h + sigma1 + ch + K(round) + W(round)
39411 var t1l = hl + sigma1l;
39412 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39413 t1l += chl;
39414 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39415 t1l += krl;
39416 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39417 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39418 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39419
39420 // t2 = sigma0 + maj
39421 var t2l = sigma0l + majl;
39422 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39423
39424 // Update working variables
39425 hh = gh;
39426 hl = gl;
39427 gh = fh;
39428 gl = fl;
39429 fh = eh;
39430 fl = el;
39431 el = (dl + t1l) | 0;
39432 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39433 dh = ch;
39434 dl = cl;
39435 ch = bh;
39436 cl = bl;
39437 bh = ah;
39438 bl = al;
39439 al = (t1l + t2l) | 0;
39440 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39441 }
39442
39443 // Intermediate hash
39444 h0l = h[1] = (h0l + al) | 0;
39445 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39446 h1l = h[3] = (h1l + bl) | 0;
39447 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39448 h2l = h[5] = (h2l + cl) | 0;
39449 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39450 h3l = h[7] = (h3l + dl) | 0;
39451 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39452 h4l = h[9] = (h4l + el) | 0;
39453 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39454 h5l = h[11] = (h5l + fl) | 0;
39455 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39456 h6l = h[13] = (h6l + gl) | 0;
39457 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39458 h7l = h[15] = (h7l + hl) | 0;
39459 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39460 }
39461 };
39462
39463
39464 //// hmac.js
39465
39466 /** @fileOverview HMAC implementation.
39467 *
39468 * @author Emily Stark
39469 * @author Mike Hamburg
39470 * @author Dan Boneh
39471 */
39472
39473 /** HMAC with the specified hash function.
39474 * @constructor
39475 * @param {bitArray} key the key for HMAC.
39476 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39477 */
39478 sjcl.misc.hmac = function (key, Hash) {
39479 this._hash = Hash = Hash || sjcl.hash.sha256;
39480 var exKey = [[],[]], i,
39481 bs = Hash.prototype.blockSize / 32;
39482 this._baseHash = [new Hash(), new Hash()];
39483
39484 if (key.length > bs) {
39485 key = Hash.hash(key);
39486 }
39487
39488 for (i=0; i<bs; i++) {
39489 exKey[0][i] = key[i]^0x36363636;
39490 exKey[1][i] = key[i]^0x5C5C5C5C;
39491 }
39492
39493 this._baseHash[0].update(exKey[0]);
39494 this._baseHash[1].update(exKey[1]);
39495 this._resultHash = new Hash(this._baseHash[0]);
39496 };
39497
39498 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
39499 * @param {bitArray|String} data The data to mac.
39500 */
39501 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39502 if (!this._updated) {
39503 this.update(data);
39504 return this.digest(data);
39505 } else {
39506 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39507 }
39508 };
39509
39510 sjcl.misc.hmac.prototype.reset = function () {
39511 this._resultHash = new this._hash(this._baseHash[0]);
39512 this._updated = false;
39513 };
39514
39515 sjcl.misc.hmac.prototype.update = function (data) {
39516 this._updated = true;
39517 this._resultHash.update(data);
39518 };
39519
39520 sjcl.misc.hmac.prototype.digest = function () {
39521 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39522
39523 this.reset();
39524
39525 return result;
39526 };
39527
39528
39529 //// pbkdf2.js
39530
39531
39532 /** @fileOverview Password-based key-derivation function, version 2.0.
39533 *
39534 * @author Emily Stark
39535 * @author Mike Hamburg
39536 * @author Dan Boneh
39537 */
39538
39539 /** Password-Based Key-Derivation Function, version 2.0.
39540 *
39541 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39542 *
39543 * This is the method specified by RSA's PKCS #5 standard.
39544 *
39545 * @param {bitArray|String} password The password.
39546 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39547 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39548 * @param {Number} [length] The length of the derived key. Defaults to the
39549 output size of the hash function.
39550 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39551 * @return {bitArray} the derived key.
39552 */
39553 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39554 count = count || 1000;
39555
39556 if (length < 0 || count < 0) {
39557 throw sjcl.exception.invalid("invalid params to pbkdf2");
39558 }
39559
39560 if (typeof password === "string") {
39561 password = sjcl.codec.utf8String.toBits(password);
39562 }
39563
39564 if (typeof salt === "string") {
39565 salt = sjcl.codec.utf8String.toBits(salt);
39566 }
39567
39568 Prff = Prff || sjcl.misc.hmac;
39569
39570 var prf = new Prff(password),
39571 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39572
39573 for (k = 1; 32 * out.length < (length || 1); k++) {
39574 u = ui = prf.encrypt(b.concat(salt,[k]));
39575
39576 for (i=1; i<count; i++) {
39577 ui = prf.encrypt(ui);
39578 for (j=0; j<ui.length; j++) {
39579 u[j] ^= ui[j];
39580 }
39581 }
39582
39583 out = out.concat(u);
39584 }
39585
39586 if (length) { out = b.clamp(out, length); }
39587
39588 return out;
39589 };
39590
39591
39592 //// sha256.js
39593
39594 /** @fileOverview Javascript SHA-256 implementation.
39595 *
39596 * An older version of this implementation is available in the public
39597 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39598 * Stanford University 2008-2010 and BSD-licensed for liability
39599 * reasons.
39600 *
39601 * Special thanks to Aldo Cortesi for pointing out several bugs in
39602 * this code.
39603 *
39604 * @author Emily Stark
39605 * @author Mike Hamburg
39606 * @author Dan Boneh
39607 */
39608
39609 /**
39610 * Context for a SHA-256 operation in progress.
39611 * @constructor
39612 * @class Secure Hash Algorithm, 256 bits.
39613 */
39614 sjcl.hash.sha256 = function (hash) {
39615 if (!this._key[0]) { this._precompute(); }
39616 if (hash) {
39617 this._h = hash._h.slice(0);
39618 this._buffer = hash._buffer.slice(0);
39619 this._length = hash._length;
39620 } else {
39621 this.reset();
39622 }
39623 };
39624
39625 /**
39626 * Hash a string or an array of words.
39627 * @static
39628 * @param {bitArray|String} data the data to hash.
39629 * @return {bitArray} The hash value, an array of 16 big-endian words.
39630 */
39631 sjcl.hash.sha256.hash = function (data) {
39632 return (new sjcl.hash.sha256()).update(data).finalize();
39633 };
39634
39635 sjcl.hash.sha256.prototype = {
39636 /**
39637 * The hash's block size, in bits.
39638 * @constant
39639 */
39640 blockSize: 512,
39641
39642 /**
39643 * Reset the hash state.
39644 * @return this
39645 */
39646 reset:function () {
39647 this._h = this._init.slice(0);
39648 this._buffer = [];
39649 this._length = 0;
39650 return this;
39651 },
39652
39653 /**
39654 * Input several words to the hash.
39655 * @param {bitArray|String} data the data to hash.
39656 * @return this
39657 */
39658 update: function (data) {
39659 if (typeof data === "string") {
39660 data = sjcl.codec.utf8String.toBits(data);
39661 }
39662 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39663 ol = this._length,
39664 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39665 for (i = 512+ol & -512; i <= nl; i+= 512) {
39666 this._block(b.splice(0,16));
39667 }
39668 return this;
39669 },
39670
39671 /**
39672 * Complete hashing and output the hash value.
39673 * @return {bitArray} The hash value, an array of 8 big-endian words.
39674 */
39675 finalize:function () {
39676 var i, b = this._buffer, h = this._h;
39677
39678 // Round out and push the buffer
39679 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39680
39681 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39682 for (i = b.length + 2; i & 15; i++) {
39683 b.push(0);
39684 }
39685
39686 // append the length
39687 b.push(Math.floor(this._length / 0x100000000));
39688 b.push(this._length | 0);
39689
39690 while (b.length) {
39691 this._block(b.splice(0,16));
39692 }
39693
39694 this.reset();
39695 return h;
39696 },
39697
39698 /**
39699 * The SHA-256 initialization vector, to be precomputed.
39700 * @private
39701 */
39702 _init:[],
39703 /*
39704 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39705 */
39706
39707 /**
39708 * The SHA-256 hash key, to be precomputed.
39709 * @private
39710 */
39711 _key:[],
39712 /*
39713 _key:
39714 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39715 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39716 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39717 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39718 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39719 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39720 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39721 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39722 */
39723
39724
39725 /**
39726 * Function to precompute _init and _key.
39727 * @private
39728 */
39729 _precompute: function () {
39730 var i = 0, prime = 2, factor;
39731
39732 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39733
39734 outer: for (; i<64; prime++) {
39735 for (factor=2; factor*factor <= prime; factor++) {
39736 if (prime % factor === 0) {
39737 // not a prime
39738 continue outer;
39739 }
39740 }
39741
39742 if (i<8) {
39743 this._init[i] = frac(Math.pow(prime, 1/2));
39744 }
39745 this._key[i] = frac(Math.pow(prime, 1/3));
39746 i++;
39747 }
39748 },
39749
39750 /**
39751 * Perform one cycle of SHA-256.
39752 * @param {bitArray} words one block of words.
39753 * @private
39754 */
39755 _block:function (words) {
39756 var i, tmp, a, b,
39757 w = words.slice(0),
39758 h = this._h,
39759 k = this._key,
39760 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39761 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39762
39763 /* Rationale for placement of |0 :
39764 * If a value can overflow is original 32 bits by a factor of more than a few
39765 * million (2^23 ish), there is a possibility that it might overflow the
39766 * 53-bit mantissa and lose precision.
39767 *
39768 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39769 * propagates around the loop, and on the hash state h[]. I don't believe
39770 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39771 * (for h4 anyway), and better safe than sorry.
39772 *
39773 * The clamps on h[] are necessary for the output to be correct even in the
39774 * common case and for short inputs.
39775 */
39776 for (i=0; i<64; i++) {
39777 // load up the input word for this round
39778 if (i<16) {
39779 tmp = w[i];
39780 } else {
39781 a = w[(i+1 ) & 15];
39782 b = w[(i+14) & 15];
39783 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39784 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39785 w[i&15] + w[(i+9) & 15]) | 0;
39786 }
39787
39788 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39789
39790 // shift register
39791 h7 = h6; h6 = h5; h5 = h4;
39792 h4 = h3 + tmp | 0;
39793 h3 = h2; h2 = h1; h1 = h0;
39794
39795 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39796 }
39797
39798 h[0] = h[0]+h0 | 0;
39799 h[1] = h[1]+h1 | 0;
39800 h[2] = h[2]+h2 | 0;
39801 h[3] = h[3]+h3 | 0;
39802 h[4] = h[4]+h4 | 0;
39803 h[5] = h[5]+h5 | 0;
39804 h[6] = h[6]+h6 | 0;
39805 h[7] = h[7]+h7 | 0;
39806 }
39807 };
39808 </script>
39809 <script>// An extremely basic translation library
39810 //
39811 // Example usage:
39812 //
39813 // Set some html to be translated. Do this using the 'data-translate' attribute:
39814 //
39815 // <div data-translate>Test</div>
39816 // <div data-translate-html><em>keep em tag</em></div>
39817 // <input data-translate-placeholder placeholder="Example placeholder">
39818 // <span data-translate-title title="Example title"></span>
39819 //
39820 // Obtain all the phrases to be translated via js debug console:
39821 //
39822 // Translate.phrasesAsJson();
39823 //
39824 // Use that template to translate the phrases into another language.
39825 // Leave the key the same. Change the value to the new language.
39826 //
39827 // Create a js file to load the new phrases. In this example for Spanish,
39828 // es.js will contain the following code:
39829 //
39830 // Translate.loadForeignPhrases("es", {
39831 // "Test": "Test in Spanish",
39832 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
39833 // "Example placeholder": "Example placeholder in Spanish"
39834 // "Example title": "Example title in Spanish"
39835 // });
39836 //
39837 // In your UI put a listener for clicking on the Spanish button:
39838 //
39839 // mySpanishButton.addEventListener("click", function() {
39840 // Translate.setLanguage("es");
39841 // });
39842 // myEnglishButton.addEventListener("click", function() {
39843 // Translate.setLanguage("en");
39844 // });
39845
39846 Translate = new (function() {
39847
39848 var defaultLanguage = "en";
39849
39850 var allPhrases = {};
39851 allPhrases[defaultLanguage] = {};
39852
39853 // Node types
39854
39855 var text = {
39856 selector: "[data-translate]",
39857 getKey: function() {
39858 return this.textContent.trim().replace(/\s+/g, " ");
39859 },
39860 setPhrase: function(p) {
39861 this.textContent = p;
39862 },
39863 }
39864
39865 var html = {
39866 selector: "[data-translate-html]",
39867 getKey: function() {
39868 return this.innerHTML.trim().replace(/\s+/g, " ");
39869 },
39870 setPhrase: function(p) {
39871 this.innerHTML = p;
39872 },
39873 }
39874
39875 var placeholder = {
39876 selector: "[data-translate-placeholder]",
39877 getKey: function() {
39878 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39879 },
39880 setPhrase: function(p) {
39881 this.setAttribute("placeholder", p);
39882 },
39883 }
39884
39885 var title = {
39886 selector: "[data-translate-title]",
39887 getKey: function() {
39888 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39889 },
39890 setPhrase: function(p) {
39891 this.setAttribute("title", p);
39892 },
39893 }
39894
39895 // Get elements to be translated
39896 var allEls = getEls(text)
39897 .concat(getEls(html))
39898 .concat(getEls(placeholder))
39899 .concat(getEls(title));
39900
39901 // Provides access to phrases from a non-default language.
39902 // See phrases_en.js for example usage.
39903 this.loadForeignPhrases = function(language, phrases) {
39904 allPhrases[language] = phrases;
39905 }
39906
39907 // Displays a different language, eg "en" or "fr"
39908 this.setLanguage = function(language) {
39909 for (var i=0; i<allEls.length; i++) {
39910 var el = allEls[i];
39911 var key = el.key;
39912 if (!(language in allPhrases)) {
39913 console.log(language + " not in allPhrases");
39914 return;
39915 }
39916 if (!(key in allPhrases[language])) {
39917 console.log(language + " does not contain phrase: " + key);
39918 return;
39919 }
39920 var phrase = allPhrases[language][key];
39921 el.setPhrase(phrase);
39922 }
39923 }
39924
39925 // Converts the phrases to a key-pair json file.
39926 // This is a good way to export phrases for use in translation tools.
39927 this.phrasesAsJson = function(language) {
39928 var keys = [];
39929 for (var i=0; i<allEls.length; i++) {
39930 var el = allEls[i];
39931 var key = el.key;
39932 keys.push(key);
39933 }
39934 keys.sort();
39935 var output = {};
39936 for (var i=0; i<keys.length; i++) {
39937 var key = keys[i];
39938 var translated = "";
39939 if (language in allPhrases && key in allPhrases[language]) {
39940 translated = allPhrases[language][key];
39941 }
39942 output[key] = translated;
39943 }
39944 return JSON.stringify(output, null, 2);
39945 }
39946
39947 function getEls(nodeType) {
39948 var nodes = document.querySelectorAll(nodeType.selector);
39949 var els = [];
39950 for (var i=0; i<nodes.length; i++) {
39951 var node = nodes[i];
39952 node.getKey = nodeType.getKey;
39953 node.setPhrase = nodeType.setPhrase;
39954 node.key = node.getKey();
39955 allPhrases[defaultLanguage][node.key] = node.key;
39956 els.push(node);
39957 }
39958 return els;
39959 }
39960
39961 })();
39962 </script>
39963 <script>Translate.loadForeignPhrases("en",
39964 {
39965 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39966 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39967 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39968 "<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).",
39969 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39970 "Account": "Account",
39971 "Address": "Address",
39972 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39973 "BIP32 Derivation Path": "BIP32 Derivation Path",
39974 "BIP32 Extended Key": "BIP32 Extended Key",
39975 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39976 "BIP32 Root Key": "BIP32 Root Key",
39977 "BIP39 Mnemonic": "BIP39 Mnemonic",
39978 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39979 "BIP39 Seed": "BIP39 Seed",
39980 "Base 10": "Base 10",
39981 "Base 6": "Base 6",
39982 "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.",
39983 "Binary": "Binary",
39984 "Bitcoin Core": "Bitcoin Core",
39985 "Bits Per Event": "Bits Per Event",
39986 "Block Explorers": "Block Explorers",
39987 "Can be used with": "Can be used with",
39988 "Card": "Card",
39989 "Coin": "Coin",
39990 "Dice": "Dice",
39991 "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.",
39992 "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.",
39993 "Entropy": "Entropy",
39994 "Entropy Type": "Entropy Type",
39995 "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.",
39996 "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>.",
39997 "Event Count": "Event Count",
39998 "External / Internal": "External / Internal",
39999 "Filtered Entropy": "Filtered Entropy",
40000 "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>",
40001 "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>.",
40002 "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>.",
40003 "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>",
40004 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
40005 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
40006 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
40007 "Get the source code from the repository": "Get the source code from the repository",
40008 "Hex": "Hex",
40009 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
40010 "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.",
40011 "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.",
40012 "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.",
40013 "Libraries": "Libraries",
40014 "Mnemonic Language": "Mnemonic Language",
40015 "Mnemonic Length": "Mnemonic Length",
40016 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
40017 "More info": "More info",
40018 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
40019 "Mycelium Wallet": "Mycelium Wallet",
40020 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
40021 "Offline Usage": "Offline Usage",
40022 "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.",
40023 "Path": "Path",
40024 "Private Key": "Private Key",
40025 "Private Keys": "Private Keys",
40026 "Public Key": "Public Key",
40027 "Purpose": "Purpose",
40028 "Raw Binary": "Raw Binary",
40029 "Read more": "Read more",
40030 "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>",
40031 "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>",
40032 "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>",
40033 "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>",
40034 "Show": "Show",
40035 "Show more rows": "Show more rows",
40036 "Strength": "Strength",
40037 "Supply my own source of entropy": "Supply my own source of entropy",
40038 "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.",
40039 "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>.",
40040 "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.",
40041 "This project is 100% open-source code": "This project is 100% open-source code",
40042 "Toggle": "Toggle",
40043 "Total Bits": "Total Bits",
40044 "Use hardened addresses": "Use hardened addresses",
40045 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40046 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40047 "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>.",
40048 "Valid entropy values include:": "Valid entropy values include:",
40049 "Warning": "Warning",
40050 "Word Count": "Word Count",
40051 "You are not a good source of entropy.": "You are not a good source of entropy.",
40052 "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).",
40053 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40054 "words": "words"
40055 }
40056 );
40057 </script>
40058 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40059 WORDLISTS["english"] = [
40060 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40061 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40062 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40063 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40064 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40065 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40066 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40067 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40068 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40069 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40070 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40071 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40072 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40073 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40074 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40075 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40076 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40077 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40078 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40079 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40080 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40081 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40082 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40083 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40084 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40085 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40086 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40087 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40088 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40089 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40090 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40091 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40092 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40093 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40094 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40095 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40096 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40097 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40098 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40099 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40100 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40101 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40102 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40103 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40104 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40105 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40106 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40107 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40108 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40109 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40110 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40111 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40112 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40113 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40114 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40115 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40116 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40117 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40118 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40119 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40120 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40121 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40122 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40123 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40124 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40125 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40126 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40127 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40128 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40129 "film","filter","final","find","fine","finger","finish","fire","firm","first",
40130 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40131 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40132 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40133 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40134 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40135 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40136 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40137 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40138 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40139 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40140 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40141 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40142 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40143 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40144 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40145 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40146 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40147 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40148 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40149 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40150 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40151 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40152 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40153 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40154 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40155 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40156 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40157 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40158 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40159 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40160 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40161 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40162 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40163 "liar","liberty","library","license","life","lift","light","like","limb","limit",
40164 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40165 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40166 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40167 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40168 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40169 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40170 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40171 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40172 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40173 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40174 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40175 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40176 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40177 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40178 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40179 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
40180 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40181 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40182 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40183 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
40184 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40185 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40186 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40187 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40188 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40189 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40190 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40191 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40192 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40193 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40194 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
40195 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40196 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40197 "prize","problem","process","produce","profit","program","project","promote","proof","property",
40198 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40199 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40200 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40201 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40202 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40203 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40204 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40205 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40206 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40207 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40208 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40209 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40210 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40211 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40212 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40213 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40214 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40215 "scrub","sea","search","season","seat","second","secret","section","security","seed",
40216 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40217 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40218 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40219 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40220 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40221 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40222 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40223 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40224 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40225 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40226 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40227 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40228 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40229 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40230 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40231 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40232 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40233 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40234 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40235 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40236 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40237 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40238 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40239 "thank","that","theme","then","theory","there","they","thing","this","thought",
40240 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40241 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40242 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40243 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40244 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40245 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40246 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40247 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40248 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40249 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40250 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40251 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40252 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40253 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40254 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40255 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40256 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40257 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40258 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40259 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40260 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40261 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40262 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40263 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40264 "yellow","you","young","youth","zebra","zero","zone","zoo"]
40265 </script>
40266 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40267 WORDLISTS["japanese"] = [
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 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
40438 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
40439 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
40440 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
40441 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
40442 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
40443 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
40444 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
40445 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
40446 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
40447 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
40448 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
40449 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
40450 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
40451 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
40452 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
40453 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
40454 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
40455 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
40456 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
40457 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
40458 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
40459 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
40460 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
40461 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
40462 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
40463 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
40464 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
40465 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
40466 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
40467 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
40468 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
40469 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
40470 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
40471 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
40472 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
40473 </script>
40474 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40475 WORDLISTS["spanish"] = [
40476 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40477 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40478 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40479 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40480 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40481 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40482 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40483 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40484 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40485 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40486 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40487 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40488 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40489 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40490 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40491 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40492 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40493 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40494 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40495 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40496 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40497 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40498 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40499 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40500 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40501 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40502 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40503 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40504 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40505 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40506 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40507 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40508 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40509 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40510 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40511 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40512 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40513 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40514 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40515 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40516 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40517 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40518 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40519 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40520 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40521 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40522 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40523 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40524 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40525 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40526 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40527 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40528 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40529 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40530 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40531 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40532 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40533 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40534 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40535 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40536 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40537 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40538 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40539 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40540 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40541 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40542 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40543 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40544 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40545 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40546 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40547 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40548 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40549 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40550 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40551 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40552 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40553 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40554 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40555 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40556 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40557 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40558 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40559 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40560 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40561 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40562 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40563 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40564 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40565 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40566 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40567 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40568 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40569 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40570 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40571 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40572 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40573 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40574 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40575 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40576 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40577 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40578 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40579 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40580 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40581 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40582 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40583 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40584 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40585 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40586 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40587 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40588 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40589 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40590 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40591 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40592 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40593 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40594 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40595 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40596 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40597 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40598 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40599 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40600 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40601 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40602 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40603 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40604 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40605 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40606 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40607 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40608 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40609 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40610 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40611 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40612 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40613 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40614 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40615 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40616 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40617 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40618 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40619 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40620 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40621 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40622 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40623 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40624 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40625 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40626 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40627 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40628 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40629 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40630 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40631 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40632 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40633 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40634 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40635 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40636 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40637 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40638 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40639 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40640 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40641 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40642 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40643 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40644 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40645 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40646 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40647 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40648 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40649 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40650 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40651 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40652 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40653 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40654 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40655 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40656 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40657 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40658 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40659 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40660 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40661 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40662 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40663 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40664 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40665 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40666 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40667 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40668 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40669 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40670 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40671 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40672 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40673 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40674 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40675 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40676 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40677 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40678 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40679 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40680 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40681 </script>
40682 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40683 WORDLISTS["chinese_simplified"] = [
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 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
40854 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
40855 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
40856 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
40857 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
40858 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
40859 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
40860 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
40861 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
40862 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
40863 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
40864 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
40865 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
40866 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
40867 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
40868 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
40869 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
40870 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
40871 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
40872 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
40873 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
40874 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
40875 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
40876 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
40877 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
40878 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
40879 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
40880 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
40881 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
40882 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
40883 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
40884 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
40885 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
40886 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
40887 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
40888 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
40889 </script>
40890 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40891 WORDLISTS["chinese_traditional"] = [
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 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
41062 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
41063 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
41064 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
41065 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
41066 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
41067 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
41068 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
41069 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
41070 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
41071 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
41072 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
41073 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
41074 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
41075 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
41076 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
41077 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
41078 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
41079 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
41080 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
41081 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
41082 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
41083 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
41084 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
41085 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
41086 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
41087 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
41088 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
41089 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
41090 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
41091 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
41092 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
41093 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
41094 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
41095 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
41096 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
41097 </script>
41098 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41099 WORDLISTS["french"] = [
41100 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41101 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41102 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41103 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41104 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41105 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41106 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41107 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41108 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41109 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41110 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41111 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41112 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41113 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41114 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41115 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41116 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41117 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41118 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41119 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41120 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41121 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41122 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41123 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41124 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41125 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41126 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41127 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41128 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41129 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41130 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41131 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41132 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41133 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41134 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41135 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41136 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41137 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41138 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41139 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41140 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41141 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41142 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41143 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41144 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41145 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41146 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41147 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41148 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41149 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41150 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41151 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41152 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41153 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41154 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41155 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41156 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41157 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41158 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41159 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41160 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41161 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41162 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41163 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41164 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41165 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41166 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41167 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41168 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41169 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41170 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41171 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41172 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41173 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41174 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41175 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41176 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41177 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41178 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41179 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41180 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41181 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41182 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41183 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41184 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41185 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41186 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41187 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41188 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41189 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41190 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41191 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41192 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41193 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41194 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41195 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41196 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41197 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41198 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41199 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41200 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41201 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41202 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41203 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41204 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41205 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41206 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41207 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41208 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41209 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41210 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41211 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41212 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41213 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41214 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41215 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41216 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41217 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41218 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41219 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41220 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41221 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41222 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41223 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41224 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41225 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41226 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41227 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41228 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41229 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41230 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41231 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41232 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41233 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41234 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41235 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41236 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41237 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41238 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41239 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41240 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41241 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41242 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41243 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41244 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41245 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41246 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41247 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41248 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41249 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41250 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41251 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41252 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41253 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41254 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41255 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41256 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41257 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41258 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41259 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41260 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41261 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41262 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41263 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41264 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41265 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41266 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41267 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41268 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41269 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41270 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41271 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41272 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41273 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41274 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41275 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41276 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41277 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41278 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41279 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41280 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41281 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41282 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41283 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41284 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41285 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41286 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41287 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41288 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41289 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41290 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41291 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41292 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41293 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41294 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41295 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41296 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41297 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41298 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41299 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41300 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41301 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41302 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41303 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41304 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41305 </script>
41306 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41307 WORDLISTS["italian"] = [
41308 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41309 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41310 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41311 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41312 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41313 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41314 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41315 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41316 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41317 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41318 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41319 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41320 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41321 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41322 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41323 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41324 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41325 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41326 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41327 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41328 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41329 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41330 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41331 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41332 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41333 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41334 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41335 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41336 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41337 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41338 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41339 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41340 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41341 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41342 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41343 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41344 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41345 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41346 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41347 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41348 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41349 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41350 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41351 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41352 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41353 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41354 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41355 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41356 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41357 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41358 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41359 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41360 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41361 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41362 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41363 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41364 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41365 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41366 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41367 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41368 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41369 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41370 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41371 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41372 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41373 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41374 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41375 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41376 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41377 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41378 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41379 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41380 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41381 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41382 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41383 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41384 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41385 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41386 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41387 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41388 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41389 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41390 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41391 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41392 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41393 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41394 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41395 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41396 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41397 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41398 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41399 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41400 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41401 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41402 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41403 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41404 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41405 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41406 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41407 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41408 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41409 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41410 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41411 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41412 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41413 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41414 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41415 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41416 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41417 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41418 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41419 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41420 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41421 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41422 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41423 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41424 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41425 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41426 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41427 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41428 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41429 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41430 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41431 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41432 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41433 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41434 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41435 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41436 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41437 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41438 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41439 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41440 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41441 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41442 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41443 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41444 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41445 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41446 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41447 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41448 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41449 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41450 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41451 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41452 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41453 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41454 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41455 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41456 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41457 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41458 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41459 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41460 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41461 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41462 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41463 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41464 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41465 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41466 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41467 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41468 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41469 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41470 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41471 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41472 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41473 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41474 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41475 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41476 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41477 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41478 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41479 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41480 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41481 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41482 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41483 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41484 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41485 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41486 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41487 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41488 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41489 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41490 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41491 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41492 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41493 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41494 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41495 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41496 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41497 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41498 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41499 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41500 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41501 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41502 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41503 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41504 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41505 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41506 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41507 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41508 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41509 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41510 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41511 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41512 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
41513 </script>
41514 <script>/*
41515 * Copyright (c) 2013 Pavol Rusnak
41516 *
41517 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41518 * this software and associated documentation files (the "Software"), to deal in
41519 * the Software without restriction, including without limitation the rights to
41520 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41521 * of the Software, and to permit persons to whom the Software is furnished to do
41522 * so, subject to the following conditions:
41523 *
41524 * The above copyright notice and this permission notice shall be included in all
41525 * copies or substantial portions of the Software.
41526 *
41527 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41528 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41529 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41530 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41531 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41532 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41533 */
41534
41535 /*
41536 * Javascript port from python by Ian Coleman
41537 *
41538 * Requires code from sjcl
41539 * https://github.com/bitwiseshiftleft/sjcl
41540 */
41541
41542 var Mnemonic = function(language) {
41543
41544 var PBKDF2_ROUNDS = 2048;
41545 var RADIX = 2048;
41546
41547 var self = this;
41548 var wordlist = [];
41549
41550 var hmacSHA512 = function(key) {
41551 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41552 this.encrypt = function() {
41553 return hasher.encrypt.apply(hasher, arguments);
41554 };
41555 };
41556
41557 function init() {
41558 wordlist = WORDLISTS[language];
41559 if (wordlist.length != RADIX) {
41560 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41561 throw err;
41562 }
41563 }
41564
41565 self.generate = function(strength) {
41566 strength = strength || 128;
41567 var r = strength % 32;
41568 if (r > 0) {
41569 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41570 }
41571 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41572 if (!hasStrongCrypto) {
41573 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41574 }
41575 var buffer = new Uint8Array(strength / 8);
41576 var data = crypto.getRandomValues(buffer);
41577 return self.toMnemonic(data);
41578 }
41579
41580 self.toMnemonic = function(byteArray) {
41581 if (byteArray.length % 4 > 0) {
41582 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
41583 }
41584
41585 //h = hashlib.sha256(data).hexdigest()
41586 var data = byteArrayToWordArray(byteArray);
41587 var hash = sjcl.hash.sha256.hash(data);
41588 var h = sjcl.codec.hex.fromBits(hash);
41589
41590 // b is a binary string, eg '00111010101100...'
41591 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41592 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41593 //
41594 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41595 // c = bin(int(h, 16))[2:].zfill(256)
41596 // d = c[:len(data) * 8 / 32]
41597 var a = byteArrayToBinaryString(byteArray);
41598 var c = zfill(hexStringToBinaryString(h), 256);
41599 var d = c.substring(0, byteArray.length * 8 / 32);
41600 // b = line1 + line2
41601 var b = a + d;
41602
41603 var result = [];
41604 var blen = b.length / 11;
41605 for (var i=0; i<blen; i++) {
41606 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41607 result.push(wordlist[idx]);
41608 }
41609 return self.joinWords(result);
41610 }
41611
41612 self.check = function(mnemonic) {
41613 var mnemonic = self.splitWords(mnemonic);
41614 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
41615 return false
41616 }
41617 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41618 var idx = [];
41619 for (var i=0; i<mnemonic.length; i++) {
41620 var word = mnemonic[i];
41621 var wordIndex = wordlist.indexOf(word);
41622 if (wordIndex == -1) {
41623 return false;
41624 }
41625 var binaryIndex = zfill(wordIndex.toString(2), 11);
41626 idx.push(binaryIndex);
41627 }
41628 var b = idx.join('');
41629 var l = b.length;
41630 //d = b[:l / 33 * 32]
41631 //h = b[-l / 33:]
41632 var d = b.substring(0, l / 33 * 32);
41633 var h = b.substring(l - l / 33, l);
41634 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
41635 var nd = binaryStringToWordArray(d);
41636 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
41637 var ndHash = sjcl.hash.sha256.hash(nd);
41638 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41639 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
41640 var nh = ndBstr.substring(0,l/33);
41641 return h == nh;
41642 }
41643
41644 self.toSeed = function(mnemonic, passphrase) {
41645 passphrase = passphrase || '';
41646 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41647 var mnemonicNormalized = self.normalizeString(mnemonic);
41648 passphrase = self.normalizeString(passphrase)
41649 passphrase = "mnemonic" + passphrase;
41650 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
41651 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41652 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41653 var hashHex = sjcl.codec.hex.fromBits(result);
41654 return hashHex;
41655 }
41656
41657 self.splitWords = function(mnemonic) {
41658 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41659 }
41660
41661 self.joinWords = function(words) {
41662 // Set space correctly depending on the language
41663 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41664 var space = " ";
41665 if (language == "japanese") {
41666 space = "\u3000"; // ideographic space
41667 }
41668 return words.join(space);
41669 }
41670
41671 self.normalizeString = function(str) {
41672 if (typeof str.normalize == "function") {
41673 return str.normalize("NFKD");
41674 }
41675 else {
41676 // TODO decide how to handle this in the future.
41677 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41678 return str;
41679 }
41680 }
41681
41682 function byteArrayToWordArray(data) {
41683 var a = [];
41684 for (var i=0; i<data.length/4; i++) {
41685 v = 0;
41686 v += data[i*4 + 0] << 8 * 3;
41687 v += data[i*4 + 1] << 8 * 2;
41688 v += data[i*4 + 2] << 8 * 1;
41689 v += data[i*4 + 3] << 8 * 0;
41690 a.push(v);
41691 }
41692 return a;
41693 }
41694
41695 function byteArrayToBinaryString(data) {
41696 var bin = "";
41697 for (var i=0; i<data.length; i++) {
41698 bin += zfill(data[i].toString(2), 8);
41699 }
41700 return bin;
41701 }
41702
41703 function hexStringToBinaryString(hexString) {
41704 binaryString = "";
41705 for (var i=0; i<hexString.length; i++) {
41706 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41707 }
41708 return binaryString;
41709 }
41710
41711 function binaryStringToWordArray(binary) {
41712 var aLen = binary.length / 32;
41713 var a = [];
41714 for (var i=0; i<aLen; i++) {
41715 var valueStr = binary.substring(0,32);
41716 var value = parseInt(valueStr, 2);
41717 a.push(value);
41718 binary = binary.slice(32);
41719 }
41720 return a;
41721 }
41722
41723 // Pad a numeric string on the left with zero digits until the given width
41724 // is reached.
41725 // Note this differs to the python implementation because it does not
41726 // handle numbers starting with a sign.
41727 function zfill(source, length) {
41728 source = source.toString();
41729 while (source.length < length) {
41730 source = '0' + source;
41731 }
41732 return source;
41733 }
41734
41735 init();
41736
41737 }
41738 </script>
41739 <script>/*
41740 JavaScript BigInteger library version 0.9.1
41741 http://silentmatt.com/biginteger/
41742
41743 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41744 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41745 Licensed under the MIT license.
41746
41747 Support for arbitrary internal representation base was added by
41748 Vitaly Magerya.
41749 */
41750
41751 /*
41752 File: biginteger.js
41753
41754 Exports:
41755
41756 <BigInteger>
41757 */
41758 (function(exports) {
41759 "use strict";
41760 /*
41761 Class: BigInteger
41762 An arbitrarily-large integer.
41763
41764 <BigInteger> objects should be considered immutable. None of the "built-in"
41765 methods modify *this* or their arguments. All properties should be
41766 considered private.
41767
41768 All the methods of <BigInteger> instances can be called "statically". The
41769 static versions are convenient if you don't already have a <BigInteger>
41770 object.
41771
41772 As an example, these calls are equivalent.
41773
41774 > BigInteger(4).multiply(5); // returns BigInteger(20);
41775 > BigInteger.multiply(4, 5); // returns BigInteger(20);
41776
41777 > var a = 42;
41778 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41779 */
41780
41781 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
41782
41783 /*
41784 Constructor: BigInteger()
41785 Convert a value to a <BigInteger>.
41786
41787 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41788 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41789 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41790 without a radix argument.
41791
41792 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41793 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41794 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41795 > var n3 = BigInteger(n2); // Return n2, unchanged
41796
41797 The constructor form only takes an array and a sign. *n* must be an
41798 array of numbers in little-endian order, where each digit is between 0
41799 and BigInteger.base. The second parameter sets the sign: -1 for
41800 negative, +1 for positive, or 0 for zero. The array is *not copied and
41801 may be modified*. If the array contains only zeros, the sign parameter
41802 is ignored and is forced to zero.
41803
41804 > new BigInteger([5], -1): create a new BigInteger with value -5
41805
41806 Parameters:
41807
41808 n - Value to convert to a <BigInteger>.
41809
41810 Returns:
41811
41812 A <BigInteger> value.
41813
41814 See Also:
41815
41816 <parse>, <BigInteger>
41817 */
41818 function BigInteger(n, s, token) {
41819 if (token !== CONSTRUCT) {
41820 if (n instanceof BigInteger) {
41821 return n;
41822 }
41823 else if (typeof n === "undefined") {
41824 return ZERO;
41825 }
41826 return BigInteger.parse(n);
41827 }
41828
41829 n = n || []; // Provide the nullary constructor for subclasses.
41830 while (n.length && !n[n.length - 1]) {
41831 --n.length;
41832 }
41833 this._d = n;
41834 this._s = n.length ? (s || 1) : 0;
41835 }
41836
41837 BigInteger._construct = function(n, s) {
41838 return new BigInteger(n, s, CONSTRUCT);
41839 };
41840
41841 // Base-10 speedup hacks in parse, toString, exp10 and log functions
41842 // require base to be a power of 10. 10^7 is the largest such power
41843 // that won't cause a precision loss when digits are multiplied.
41844 var BigInteger_base = 10000000;
41845 var BigInteger_base_log10 = 7;
41846
41847 BigInteger.base = BigInteger_base;
41848 BigInteger.base_log10 = BigInteger_base_log10;
41849
41850 var ZERO = new BigInteger([], 0, CONSTRUCT);
41851 // Constant: ZERO
41852 // <BigInteger> 0.
41853 BigInteger.ZERO = ZERO;
41854
41855 var ONE = new BigInteger([1], 1, CONSTRUCT);
41856 // Constant: ONE
41857 // <BigInteger> 1.
41858 BigInteger.ONE = ONE;
41859
41860 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41861 // Constant: M_ONE
41862 // <BigInteger> -1.
41863 BigInteger.M_ONE = M_ONE;
41864
41865 // Constant: _0
41866 // Shortcut for <ZERO>.
41867 BigInteger._0 = ZERO;
41868
41869 // Constant: _1
41870 // Shortcut for <ONE>.
41871 BigInteger._1 = ONE;
41872
41873 /*
41874 Constant: small
41875 Array of <BigIntegers> from 0 to 36.
41876
41877 These are used internally for parsing, but useful when you need a "small"
41878 <BigInteger>.
41879
41880 See Also:
41881
41882 <ZERO>, <ONE>, <_0>, <_1>
41883 */
41884 BigInteger.small = [
41885 ZERO,
41886 ONE,
41887 /* Assuming BigInteger_base > 36 */
41888 new BigInteger( [2], 1, CONSTRUCT),
41889 new BigInteger( [3], 1, CONSTRUCT),
41890 new BigInteger( [4], 1, CONSTRUCT),
41891 new BigInteger( [5], 1, CONSTRUCT),
41892 new BigInteger( [6], 1, CONSTRUCT),
41893 new BigInteger( [7], 1, CONSTRUCT),
41894 new BigInteger( [8], 1, CONSTRUCT),
41895 new BigInteger( [9], 1, CONSTRUCT),
41896 new BigInteger([10], 1, CONSTRUCT),
41897 new BigInteger([11], 1, CONSTRUCT),
41898 new BigInteger([12], 1, CONSTRUCT),
41899 new BigInteger([13], 1, CONSTRUCT),
41900 new BigInteger([14], 1, CONSTRUCT),
41901 new BigInteger([15], 1, CONSTRUCT),
41902 new BigInteger([16], 1, CONSTRUCT),
41903 new BigInteger([17], 1, CONSTRUCT),
41904 new BigInteger([18], 1, CONSTRUCT),
41905 new BigInteger([19], 1, CONSTRUCT),
41906 new BigInteger([20], 1, CONSTRUCT),
41907 new BigInteger([21], 1, CONSTRUCT),
41908 new BigInteger([22], 1, CONSTRUCT),
41909 new BigInteger([23], 1, CONSTRUCT),
41910 new BigInteger([24], 1, CONSTRUCT),
41911 new BigInteger([25], 1, CONSTRUCT),
41912 new BigInteger([26], 1, CONSTRUCT),
41913 new BigInteger([27], 1, CONSTRUCT),
41914 new BigInteger([28], 1, CONSTRUCT),
41915 new BigInteger([29], 1, CONSTRUCT),
41916 new BigInteger([30], 1, CONSTRUCT),
41917 new BigInteger([31], 1, CONSTRUCT),
41918 new BigInteger([32], 1, CONSTRUCT),
41919 new BigInteger([33], 1, CONSTRUCT),
41920 new BigInteger([34], 1, CONSTRUCT),
41921 new BigInteger([35], 1, CONSTRUCT),
41922 new BigInteger([36], 1, CONSTRUCT)
41923 ];
41924
41925 // Used for parsing/radix conversion
41926 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41927
41928 /*
41929 Method: toString
41930 Convert a <BigInteger> to a string.
41931
41932 When *base* is greater than 10, letters are upper case.
41933
41934 Parameters:
41935
41936 base - Optional base to represent the number in (default is base 10).
41937 Must be between 2 and 36 inclusive, or an Error will be thrown.
41938
41939 Returns:
41940
41941 The string representation of the <BigInteger>.
41942 */
41943 BigInteger.prototype.toString = function(base) {
41944 base = +base || 10;
41945 if (base < 2 || base > 36) {
41946 throw new Error("illegal radix " + base + ".");
41947 }
41948 if (this._s === 0) {
41949 return "0";
41950 }
41951 if (base === 10) {
41952 var str = this._s < 0 ? "-" : "";
41953 str += this._d[this._d.length - 1].toString();
41954 for (var i = this._d.length - 2; i >= 0; i--) {
41955 var group = this._d[i].toString();
41956 while (group.length < BigInteger_base_log10) group = '0' + group;
41957 str += group;
41958 }
41959 return str;
41960 }
41961 else {
41962 var numerals = BigInteger.digits;
41963 base = BigInteger.small[base];
41964 var sign = this._s;
41965
41966 var n = this.abs();
41967 var digits = [];
41968 var digit;
41969
41970 while (n._s !== 0) {
41971 var divmod = n.divRem(base);
41972 n = divmod[0];
41973 digit = divmod[1];
41974 // TODO: This could be changed to unshift instead of reversing at the end.
41975 // Benchmark both to compare speeds.
41976 digits.push(numerals[digit.valueOf()]);
41977 }
41978 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41979 }
41980 };
41981
41982 // Verify strings for parsing
41983 BigInteger.radixRegex = [
41984 /^$/,
41985 /^$/,
41986 /^[01]*$/,
41987 /^[012]*$/,
41988 /^[0-3]*$/,
41989 /^[0-4]*$/,
41990 /^[0-5]*$/,
41991 /^[0-6]*$/,
41992 /^[0-7]*$/,
41993 /^[0-8]*$/,
41994 /^[0-9]*$/,
41995 /^[0-9aA]*$/,
41996 /^[0-9abAB]*$/,
41997 /^[0-9abcABC]*$/,
41998 /^[0-9a-dA-D]*$/,
41999 /^[0-9a-eA-E]*$/,
42000 /^[0-9a-fA-F]*$/,
42001 /^[0-9a-gA-G]*$/,
42002 /^[0-9a-hA-H]*$/,
42003 /^[0-9a-iA-I]*$/,
42004 /^[0-9a-jA-J]*$/,
42005 /^[0-9a-kA-K]*$/,
42006 /^[0-9a-lA-L]*$/,
42007 /^[0-9a-mA-M]*$/,
42008 /^[0-9a-nA-N]*$/,
42009 /^[0-9a-oA-O]*$/,
42010 /^[0-9a-pA-P]*$/,
42011 /^[0-9a-qA-Q]*$/,
42012 /^[0-9a-rA-R]*$/,
42013 /^[0-9a-sA-S]*$/,
42014 /^[0-9a-tA-T]*$/,
42015 /^[0-9a-uA-U]*$/,
42016 /^[0-9a-vA-V]*$/,
42017 /^[0-9a-wA-W]*$/,
42018 /^[0-9a-xA-X]*$/,
42019 /^[0-9a-yA-Y]*$/,
42020 /^[0-9a-zA-Z]*$/
42021 ];
42022
42023 /*
42024 Function: parse
42025 Parse a string into a <BigInteger>.
42026
42027 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
42028 *base* is not provided, it will be guessed based on the leading characters
42029 of *s* as follows:
42030
42031 - "0x" or "0X": *base* = 16
42032 - "0c" or "0C": *base* = 8
42033 - "0b" or "0B": *base* = 2
42034 - else: *base* = 10
42035
42036 If no base is provided, or *base* is 10, the number can be in exponential
42037 form. For example, these are all valid:
42038
42039 > BigInteger.parse("1e9"); // Same as "1000000000"
42040 > BigInteger.parse("1.234*10^3"); // Same as 1234
42041 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42042
42043 If any characters fall outside the range defined by the radix, an exception
42044 will be thrown.
42045
42046 Parameters:
42047
42048 s - The string to parse.
42049 base - Optional radix (default is to guess based on *s*).
42050
42051 Returns:
42052
42053 a <BigInteger> instance.
42054 */
42055 BigInteger.parse = function(s, base) {
42056 // Expands a number in exponential form to decimal form.
42057 // expandExponential("-13.441*10^5") === "1344100";
42058 // expandExponential("1.12300e-1") === "0.112300";
42059 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42060 function expandExponential(str) {
42061 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42062
42063 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42064 c = +c;
42065 var l = c < 0;
42066 var i = n.length + c;
42067 x = (l ? n : f).length;
42068 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42069 var z = (new Array(c + 1)).join("0");
42070 var r = n + f;
42071 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42072 });
42073 }
42074
42075 s = s.toString();
42076 if (typeof base === "undefined" || +base === 10) {
42077 s = expandExponential(s);
42078 }
42079
42080 var prefixRE;
42081 if (typeof base === "undefined") {
42082 prefixRE = '0[xcb]';
42083 }
42084 else if (base == 16) {
42085 prefixRE = '0x';
42086 }
42087 else if (base == 8) {
42088 prefixRE = '0c';
42089 }
42090 else if (base == 2) {
42091 prefixRE = '0b';
42092 }
42093 else {
42094 prefixRE = '';
42095 }
42096 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42097 if (parts) {
42098 var sign = parts[1] || "+";
42099 var baseSection = parts[2] || "";
42100 var digits = parts[3] || "";
42101
42102 if (typeof base === "undefined") {
42103 // Guess base
42104 if (baseSection === "0x" || baseSection === "0X") { // Hex
42105 base = 16;
42106 }
42107 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42108 base = 8;
42109 }
42110 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42111 base = 2;
42112 }
42113 else {
42114 base = 10;
42115 }
42116 }
42117 else if (base < 2 || base > 36) {
42118 throw new Error("Illegal radix " + base + ".");
42119 }
42120
42121 base = +base;
42122
42123 // Check for digits outside the range
42124 if (!(BigInteger.radixRegex[base].test(digits))) {
42125 throw new Error("Bad digit for radix " + base);
42126 }
42127
42128 // Strip leading zeros, and convert to array
42129 digits = digits.replace(/^0+/, "").split("");
42130 if (digits.length === 0) {
42131 return ZERO;
42132 }
42133
42134 // Get the sign (we know it's not zero)
42135 sign = (sign === "-") ? -1 : 1;
42136
42137 // Optimize 10
42138 if (base == 10) {
42139 var d = [];
42140 while (digits.length >= BigInteger_base_log10) {
42141 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42142 }
42143 d.push(parseInt(digits.join(''), 10));
42144 return new BigInteger(d, sign, CONSTRUCT);
42145 }
42146
42147 // Do the conversion
42148 var d = ZERO;
42149 base = BigInteger.small[base];
42150 var small = BigInteger.small;
42151 for (var i = 0; i < digits.length; i++) {
42152 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42153 }
42154 return new BigInteger(d._d, sign, CONSTRUCT);
42155 }
42156 else {
42157 throw new Error("Invalid BigInteger format: " + s);
42158 }
42159 };
42160
42161 /*
42162 Function: add
42163 Add two <BigIntegers>.
42164
42165 Parameters:
42166
42167 n - The number to add to *this*. Will be converted to a <BigInteger>.
42168
42169 Returns:
42170
42171 The numbers added together.
42172
42173 See Also:
42174
42175 <subtract>, <multiply>, <quotient>, <next>
42176 */
42177 BigInteger.prototype.add = function(n) {
42178 if (this._s === 0) {
42179 return BigInteger(n);
42180 }
42181
42182 n = BigInteger(n);
42183 if (n._s === 0) {
42184 return this;
42185 }
42186 if (this._s !== n._s) {
42187 n = n.negate();
42188 return this.subtract(n);
42189 }
42190
42191 var a = this._d;
42192 var b = n._d;
42193 var al = a.length;
42194 var bl = b.length;
42195 var sum = new Array(Math.max(al, bl) + 1);
42196 var size = Math.min(al, bl);
42197 var carry = 0;
42198 var digit;
42199
42200 for (var i = 0; i < size; i++) {
42201 digit = a[i] + b[i] + carry;
42202 sum[i] = digit % BigInteger_base;
42203 carry = (digit / BigInteger_base) | 0;
42204 }
42205 if (bl > al) {
42206 a = b;
42207 al = bl;
42208 }
42209 for (i = size; carry && i < al; i++) {
42210 digit = a[i] + carry;
42211 sum[i] = digit % BigInteger_base;
42212 carry = (digit / BigInteger_base) | 0;
42213 }
42214 if (carry) {
42215 sum[i] = carry;
42216 }
42217
42218 for ( ; i < al; i++) {
42219 sum[i] = a[i];
42220 }
42221
42222 return new BigInteger(sum, this._s, CONSTRUCT);
42223 };
42224
42225 /*
42226 Function: negate
42227 Get the additive inverse of a <BigInteger>.
42228
42229 Returns:
42230
42231 A <BigInteger> with the same magnatude, but with the opposite sign.
42232
42233 See Also:
42234
42235 <abs>
42236 */
42237 BigInteger.prototype.negate = function() {
42238 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42239 };
42240
42241 /*
42242 Function: abs
42243 Get the absolute value of a <BigInteger>.
42244
42245 Returns:
42246
42247 A <BigInteger> with the same magnatude, but always positive (or zero).
42248
42249 See Also:
42250
42251 <negate>
42252 */
42253 BigInteger.prototype.abs = function() {
42254 return (this._s < 0) ? this.negate() : this;
42255 };
42256
42257 /*
42258 Function: subtract
42259 Subtract two <BigIntegers>.
42260
42261 Parameters:
42262
42263 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42264
42265 Returns:
42266
42267 The *n* subtracted from *this*.
42268
42269 See Also:
42270
42271 <add>, <multiply>, <quotient>, <prev>
42272 */
42273 BigInteger.prototype.subtract = function(n) {
42274 if (this._s === 0) {
42275 return BigInteger(n).negate();
42276 }
42277
42278 n = BigInteger(n);
42279 if (n._s === 0) {
42280 return this;
42281 }
42282 if (this._s !== n._s) {
42283 n = n.negate();
42284 return this.add(n);
42285 }
42286
42287 var m = this;
42288 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42289 if (this._s < 0) {
42290 m = new BigInteger(n._d, 1, CONSTRUCT);
42291 n = new BigInteger(this._d, 1, CONSTRUCT);
42292 }
42293
42294 // Both are positive => a - b
42295 var sign = m.compareAbs(n);
42296 if (sign === 0) {
42297 return ZERO;
42298 }
42299 else if (sign < 0) {
42300 // swap m and n
42301 var t = n;
42302 n = m;
42303 m = t;
42304 }
42305
42306 // a > b
42307 var a = m._d;
42308 var b = n._d;
42309 var al = a.length;
42310 var bl = b.length;
42311 var diff = new Array(al); // al >= bl since a > b
42312 var borrow = 0;
42313 var i;
42314 var digit;
42315
42316 for (i = 0; i < bl; i++) {
42317 digit = a[i] - borrow - b[i];
42318 if (digit < 0) {
42319 digit += BigInteger_base;
42320 borrow = 1;
42321 }
42322 else {
42323 borrow = 0;
42324 }
42325 diff[i] = digit;
42326 }
42327 for (i = bl; i < al; i++) {
42328 digit = a[i] - borrow;
42329 if (digit < 0) {
42330 digit += BigInteger_base;
42331 }
42332 else {
42333 diff[i++] = digit;
42334 break;
42335 }
42336 diff[i] = digit;
42337 }
42338 for ( ; i < al; i++) {
42339 diff[i] = a[i];
42340 }
42341
42342 return new BigInteger(diff, sign, CONSTRUCT);
42343 };
42344
42345 (function() {
42346 function addOne(n, sign) {
42347 var a = n._d;
42348 var sum = a.slice();
42349 var carry = true;
42350 var i = 0;
42351
42352 while (true) {
42353 var digit = (a[i] || 0) + 1;
42354 sum[i] = digit % BigInteger_base;
42355 if (digit <= BigInteger_base - 1) {
42356 break;
42357 }
42358 ++i;
42359 }
42360
42361 return new BigInteger(sum, sign, CONSTRUCT);
42362 }
42363
42364 function subtractOne(n, sign) {
42365 var a = n._d;
42366 var sum = a.slice();
42367 var borrow = true;
42368 var i = 0;
42369
42370 while (true) {
42371 var digit = (a[i] || 0) - 1;
42372 if (digit < 0) {
42373 sum[i] = digit + BigInteger_base;
42374 }
42375 else {
42376 sum[i] = digit;
42377 break;
42378 }
42379 ++i;
42380 }
42381
42382 return new BigInteger(sum, sign, CONSTRUCT);
42383 }
42384
42385 /*
42386 Function: next
42387 Get the next <BigInteger> (add one).
42388
42389 Returns:
42390
42391 *this* + 1.
42392
42393 See Also:
42394
42395 <add>, <prev>
42396 */
42397 BigInteger.prototype.next = function() {
42398 switch (this._s) {
42399 case 0:
42400 return ONE;
42401 case -1:
42402 return subtractOne(this, -1);
42403 // case 1:
42404 default:
42405 return addOne(this, 1);
42406 }
42407 };
42408
42409 /*
42410 Function: prev
42411 Get the previous <BigInteger> (subtract one).
42412
42413 Returns:
42414
42415 *this* - 1.
42416
42417 See Also:
42418
42419 <next>, <subtract>
42420 */
42421 BigInteger.prototype.prev = function() {
42422 switch (this._s) {
42423 case 0:
42424 return M_ONE;
42425 case -1:
42426 return addOne(this, -1);
42427 // case 1:
42428 default:
42429 return subtractOne(this, 1);
42430 }
42431 };
42432 })();
42433
42434 /*
42435 Function: compareAbs
42436 Compare the absolute value of two <BigIntegers>.
42437
42438 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42439
42440 Parameters:
42441
42442 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42443
42444 Returns:
42445
42446 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42447
42448 See Also:
42449
42450 <compare>, <abs>
42451 */
42452 BigInteger.prototype.compareAbs = function(n) {
42453 if (this === n) {
42454 return 0;
42455 }
42456
42457 if (!(n instanceof BigInteger)) {
42458 if (!isFinite(n)) {
42459 return(isNaN(n) ? n : -1);
42460 }
42461 n = BigInteger(n);
42462 }
42463
42464 if (this._s === 0) {
42465 return (n._s !== 0) ? -1 : 0;
42466 }
42467 if (n._s === 0) {
42468 return 1;
42469 }
42470
42471 var l = this._d.length;
42472 var nl = n._d.length;
42473 if (l < nl) {
42474 return -1;
42475 }
42476 else if (l > nl) {
42477 return 1;
42478 }
42479
42480 var a = this._d;
42481 var b = n._d;
42482 for (var i = l-1; i >= 0; i--) {
42483 if (a[i] !== b[i]) {
42484 return a[i] < b[i] ? -1 : 1;
42485 }
42486 }
42487
42488 return 0;
42489 };
42490
42491 /*
42492 Function: compare
42493 Compare two <BigIntegers>.
42494
42495 Parameters:
42496
42497 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42498
42499 Returns:
42500
42501 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42502
42503 See Also:
42504
42505 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42506 */
42507 BigInteger.prototype.compare = function(n) {
42508 if (this === n) {
42509 return 0;
42510 }
42511
42512 n = BigInteger(n);
42513
42514 if (this._s === 0) {
42515 return -n._s;
42516 }
42517
42518 if (this._s === n._s) { // both positive or both negative
42519 var cmp = this.compareAbs(n);
42520 return cmp * this._s;
42521 }
42522 else {
42523 return this._s;
42524 }
42525 };
42526
42527 /*
42528 Function: isUnit
42529 Return true iff *this* is either 1 or -1.
42530
42531 Returns:
42532
42533 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42534
42535 See Also:
42536
42537 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42538 <BigInteger.ONE>, <BigInteger.M_ONE>
42539 */
42540 BigInteger.prototype.isUnit = function() {
42541 return this === ONE ||
42542 this === M_ONE ||
42543 (this._d.length === 1 && this._d[0] === 1);
42544 };
42545
42546 /*
42547 Function: multiply
42548 Multiply two <BigIntegers>.
42549
42550 Parameters:
42551
42552 n - The number to multiply *this* by. Will be converted to a
42553 <BigInteger>.
42554
42555 Returns:
42556
42557 The numbers multiplied together.
42558
42559 See Also:
42560
42561 <add>, <subtract>, <quotient>, <square>
42562 */
42563 BigInteger.prototype.multiply = function(n) {
42564 // TODO: Consider adding Karatsuba multiplication for large numbers
42565 if (this._s === 0) {
42566 return ZERO;
42567 }
42568
42569 n = BigInteger(n);
42570 if (n._s === 0) {
42571 return ZERO;
42572 }
42573 if (this.isUnit()) {
42574 if (this._s < 0) {
42575 return n.negate();
42576 }
42577 return n;
42578 }
42579 if (n.isUnit()) {
42580 if (n._s < 0) {
42581 return this.negate();
42582 }
42583 return this;
42584 }
42585 if (this === n) {
42586 return this.square();
42587 }
42588
42589 var r = (this._d.length >= n._d.length);
42590 var a = (r ? this : n)._d; // a will be longer than b
42591 var b = (r ? n : this)._d;
42592 var al = a.length;
42593 var bl = b.length;
42594
42595 var pl = al + bl;
42596 var partial = new Array(pl);
42597 var i;
42598 for (i = 0; i < pl; i++) {
42599 partial[i] = 0;
42600 }
42601
42602 for (i = 0; i < bl; i++) {
42603 var carry = 0;
42604 var bi = b[i];
42605 var jlimit = al + i;
42606 var digit;
42607 for (var j = i; j < jlimit; j++) {
42608 digit = partial[j] + bi * a[j - i] + carry;
42609 carry = (digit / BigInteger_base) | 0;
42610 partial[j] = (digit % BigInteger_base) | 0;
42611 }
42612 if (carry) {
42613 digit = partial[j] + carry;
42614 carry = (digit / BigInteger_base) | 0;
42615 partial[j] = digit % BigInteger_base;
42616 }
42617 }
42618 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42619 };
42620
42621 // Multiply a BigInteger by a single-digit native number
42622 // Assumes that this and n are >= 0
42623 // This is not really intended to be used outside the library itself
42624 BigInteger.prototype.multiplySingleDigit = function(n) {
42625 if (n === 0 || this._s === 0) {
42626 return ZERO;
42627 }
42628 if (n === 1) {
42629 return this;
42630 }
42631
42632 var digit;
42633 if (this._d.length === 1) {
42634 digit = this._d[0] * n;
42635 if (digit >= BigInteger_base) {
42636 return new BigInteger([(digit % BigInteger_base)|0,
42637 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42638 }
42639 return new BigInteger([digit], 1, CONSTRUCT);
42640 }
42641
42642 if (n === 2) {
42643 return this.add(this);
42644 }
42645 if (this.isUnit()) {
42646 return new BigInteger([n], 1, CONSTRUCT);
42647 }
42648
42649 var a = this._d;
42650 var al = a.length;
42651
42652 var pl = al + 1;
42653 var partial = new Array(pl);
42654 for (var i = 0; i < pl; i++) {
42655 partial[i] = 0;
42656 }
42657
42658 var carry = 0;
42659 for (var j = 0; j < al; j++) {
42660 digit = n * a[j] + carry;
42661 carry = (digit / BigInteger_base) | 0;
42662 partial[j] = (digit % BigInteger_base) | 0;
42663 }
42664 if (carry) {
42665 partial[j] = carry;
42666 }
42667
42668 return new BigInteger(partial, 1, CONSTRUCT);
42669 };
42670
42671 /*
42672 Function: square
42673 Multiply a <BigInteger> by itself.
42674
42675 This is slightly faster than regular multiplication, since it removes the
42676 duplicated multiplcations.
42677
42678 Returns:
42679
42680 > this.multiply(this)
42681
42682 See Also:
42683 <multiply>
42684 */
42685 BigInteger.prototype.square = function() {
42686 // Normally, squaring a 10-digit number would take 100 multiplications.
42687 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42688 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42689 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42690
42691 if (this._s === 0) {
42692 return ZERO;
42693 }
42694 if (this.isUnit()) {
42695 return ONE;
42696 }
42697
42698 var digits = this._d;
42699 var length = digits.length;
42700 var imult1 = new Array(length + length + 1);
42701 var product, carry, k;
42702 var i;
42703
42704 // Calculate diagonal
42705 for (i = 0; i < length; i++) {
42706 k = i * 2;
42707 product = digits[i] * digits[i];
42708 carry = (product / BigInteger_base) | 0;
42709 imult1[k] = product % BigInteger_base;
42710 imult1[k + 1] = carry;
42711 }
42712
42713 // Calculate repeating part
42714 for (i = 0; i < length; i++) {
42715 carry = 0;
42716 k = i * 2 + 1;
42717 for (var j = i + 1; j < length; j++, k++) {
42718 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42719 carry = (product / BigInteger_base) | 0;
42720 imult1[k] = product % BigInteger_base;
42721 }
42722 k = length + i;
42723 var digit = carry + imult1[k];
42724 carry = (digit / BigInteger_base) | 0;
42725 imult1[k] = digit % BigInteger_base;
42726 imult1[k + 1] += carry;
42727 }
42728
42729 return new BigInteger(imult1, 1, CONSTRUCT);
42730 };
42731
42732 /*
42733 Function: quotient
42734 Divide two <BigIntegers> and truncate towards zero.
42735
42736 <quotient> throws an exception if *n* is zero.
42737
42738 Parameters:
42739
42740 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42741
42742 Returns:
42743
42744 The *this* / *n*, truncated to an integer.
42745
42746 See Also:
42747
42748 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42749 */
42750 BigInteger.prototype.quotient = function(n) {
42751 return this.divRem(n)[0];
42752 };
42753
42754 /*
42755 Function: divide
42756 Deprecated synonym for <quotient>.
42757 */
42758 BigInteger.prototype.divide = BigInteger.prototype.quotient;
42759
42760 /*
42761 Function: remainder
42762 Calculate the remainder of two <BigIntegers>.
42763
42764 <remainder> throws an exception if *n* is zero.
42765
42766 Parameters:
42767
42768 n - The remainder after *this* is divided *this* by *n*. Will be
42769 converted to a <BigInteger>.
42770
42771 Returns:
42772
42773 *this* % *n*.
42774
42775 See Also:
42776
42777 <divRem>, <quotient>
42778 */
42779 BigInteger.prototype.remainder = function(n) {
42780 return this.divRem(n)[1];
42781 };
42782
42783 /*
42784 Function: divRem
42785 Calculate the integer quotient and remainder of two <BigIntegers>.
42786
42787 <divRem> throws an exception if *n* is zero.
42788
42789 Parameters:
42790
42791 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42792
42793 Returns:
42794
42795 A two-element array containing the quotient and the remainder.
42796
42797 > a.divRem(b)
42798
42799 is exactly equivalent to
42800
42801 > [a.quotient(b), a.remainder(b)]
42802
42803 except it is faster, because they are calculated at the same time.
42804
42805 See Also:
42806
42807 <quotient>, <remainder>
42808 */
42809 BigInteger.prototype.divRem = function(n) {
42810 n = BigInteger(n);
42811 if (n._s === 0) {
42812 throw new Error("Divide by zero");
42813 }
42814 if (this._s === 0) {
42815 return [ZERO, ZERO];
42816 }
42817 if (n._d.length === 1) {
42818 return this.divRemSmall(n._s * n._d[0]);
42819 }
42820
42821 // Test for easy cases -- |n1| <= |n2|
42822 switch (this.compareAbs(n)) {
42823 case 0: // n1 == n2
42824 return [this._s === n._s ? ONE : M_ONE, ZERO];
42825 case -1: // |n1| < |n2|
42826 return [ZERO, this];
42827 }
42828
42829 var sign = this._s * n._s;
42830 var a = n.abs();
42831 var b_digits = this._d;
42832 var b_index = b_digits.length;
42833 var digits = n._d.length;
42834 var quot = [];
42835 var guess;
42836
42837 var part = new BigInteger([], 0, CONSTRUCT);
42838
42839 while (b_index) {
42840 part._d.unshift(b_digits[--b_index]);
42841 part = new BigInteger(part._d, 1, CONSTRUCT);
42842
42843 if (part.compareAbs(n) < 0) {
42844 quot.push(0);
42845 continue;
42846 }
42847 if (part._s === 0) {
42848 guess = 0;
42849 }
42850 else {
42851 var xlen = part._d.length, ylen = a._d.length;
42852 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42853 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42854 if (part._d.length > a._d.length) {
42855 // The length of part._d can either match a._d length,
42856 // or exceed it by one.
42857 highx = (highx+1)*BigInteger_base;
42858 }
42859 guess = Math.ceil(highx/highy);
42860 }
42861 do {
42862 var check = a.multiplySingleDigit(guess);
42863 if (check.compareAbs(part) <= 0) {
42864 break;
42865 }
42866 guess--;
42867 } while (guess);
42868
42869 quot.push(guess);
42870 if (!guess) {
42871 continue;
42872 }
42873 var diff = part.subtract(check);
42874 part._d = diff._d.slice();
42875 }
42876
42877 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42878 new BigInteger(part._d, this._s, CONSTRUCT)];
42879 };
42880
42881 // Throws an exception if n is outside of (-BigInteger.base, -1] or
42882 // [1, BigInteger.base). It's not necessary to call this, since the
42883 // other division functions will call it if they are able to.
42884 BigInteger.prototype.divRemSmall = function(n) {
42885 var r;
42886 n = +n;
42887 if (n === 0) {
42888 throw new Error("Divide by zero");
42889 }
42890
42891 var n_s = n < 0 ? -1 : 1;
42892 var sign = this._s * n_s;
42893 n = Math.abs(n);
42894
42895 if (n < 1 || n >= BigInteger_base) {
42896 throw new Error("Argument out of range");
42897 }
42898
42899 if (this._s === 0) {
42900 return [ZERO, ZERO];
42901 }
42902
42903 if (n === 1 || n === -1) {
42904 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42905 }
42906
42907 // 2 <= n < BigInteger_base
42908
42909 // divide a single digit by a single digit
42910 if (this._d.length === 1) {
42911 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42912 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42913 if (sign < 0) {
42914 q = q.negate();
42915 }
42916 if (this._s < 0) {
42917 r = r.negate();
42918 }
42919 return [q, r];
42920 }
42921
42922 var digits = this._d.slice();
42923 var quot = new Array(digits.length);
42924 var part = 0;
42925 var diff = 0;
42926 var i = 0;
42927 var guess;
42928
42929 while (digits.length) {
42930 part = part * BigInteger_base + digits[digits.length - 1];
42931 if (part < n) {
42932 quot[i++] = 0;
42933 digits.pop();
42934 diff = BigInteger_base * diff + part;
42935 continue;
42936 }
42937 if (part === 0) {
42938 guess = 0;
42939 }
42940 else {
42941 guess = (part / n) | 0;
42942 }
42943
42944 var check = n * guess;
42945 diff = part - check;
42946 quot[i++] = guess;
42947 if (!guess) {
42948 digits.pop();
42949 continue;
42950 }
42951
42952 digits.pop();
42953 part = diff;
42954 }
42955
42956 r = new BigInteger([diff], 1, CONSTRUCT);
42957 if (this._s < 0) {
42958 r = r.negate();
42959 }
42960 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42961 };
42962
42963 /*
42964 Function: isEven
42965 Return true iff *this* is divisible by two.
42966
42967 Note that <BigInteger.ZERO> is even.
42968
42969 Returns:
42970
42971 true if *this* is even, false otherwise.
42972
42973 See Also:
42974
42975 <isOdd>
42976 */
42977 BigInteger.prototype.isEven = function() {
42978 var digits = this._d;
42979 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42980 };
42981
42982 /*
42983 Function: isOdd
42984 Return true iff *this* is not divisible by two.
42985
42986 Returns:
42987
42988 true if *this* is odd, false otherwise.
42989
42990 See Also:
42991
42992 <isEven>
42993 */
42994 BigInteger.prototype.isOdd = function() {
42995 return !this.isEven();
42996 };
42997
42998 /*
42999 Function: sign
43000 Get the sign of a <BigInteger>.
43001
43002 Returns:
43003
43004 * -1 if *this* < 0
43005 * 0 if *this* == 0
43006 * +1 if *this* > 0
43007
43008 See Also:
43009
43010 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
43011 */
43012 BigInteger.prototype.sign = function() {
43013 return this._s;
43014 };
43015
43016 /*
43017 Function: isPositive
43018 Return true iff *this* > 0.
43019
43020 Returns:
43021
43022 true if *this*.compare(<BigInteger.ZERO>) == 1.
43023
43024 See Also:
43025
43026 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
43027 */
43028 BigInteger.prototype.isPositive = function() {
43029 return this._s > 0;
43030 };
43031
43032 /*
43033 Function: isNegative
43034 Return true iff *this* < 0.
43035
43036 Returns:
43037
43038 true if *this*.compare(<BigInteger.ZERO>) == -1.
43039
43040 See Also:
43041
43042 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43043 */
43044 BigInteger.prototype.isNegative = function() {
43045 return this._s < 0;
43046 };
43047
43048 /*
43049 Function: isZero
43050 Return true iff *this* == 0.
43051
43052 Returns:
43053
43054 true if *this*.compare(<BigInteger.ZERO>) == 0.
43055
43056 See Also:
43057
43058 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43059 */
43060 BigInteger.prototype.isZero = function() {
43061 return this._s === 0;
43062 };
43063
43064 /*
43065 Function: exp10
43066 Multiply a <BigInteger> by a power of 10.
43067
43068 This is equivalent to, but faster than
43069
43070 > if (n >= 0) {
43071 > return this.multiply(BigInteger("1e" + n));
43072 > }
43073 > else { // n <= 0
43074 > return this.quotient(BigInteger("1e" + -n));
43075 > }
43076
43077 Parameters:
43078
43079 n - The power of 10 to multiply *this* by. *n* is converted to a
43080 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43081 (0x7FFFFFFF), or an exception will be thrown.
43082
43083 Returns:
43084
43085 *this* * (10 ** *n*), truncated to an integer if necessary.
43086
43087 See Also:
43088
43089 <pow>, <multiply>
43090 */
43091 BigInteger.prototype.exp10 = function(n) {
43092 n = +n;
43093 if (n === 0) {
43094 return this;
43095 }
43096 if (Math.abs(n) > Number(MAX_EXP)) {
43097 throw new Error("exponent too large in BigInteger.exp10");
43098 }
43099 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43100 if (this._s === 0) {
43101 return ZERO;
43102 }
43103 if (n > 0) {
43104 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43105
43106 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43107 k._d.unshift(0);
43108 }
43109 if (n == 0)
43110 return k;
43111 k._s = 1;
43112 k = k.multiplySingleDigit(Math.pow(10, n));
43113 return (this._s < 0 ? k.negate() : k);
43114 } else if (-n >= this._d.length*BigInteger_base_log10) {
43115 return ZERO;
43116 } else {
43117 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43118
43119 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43120 k._d.shift();
43121 }
43122 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43123 }
43124 };
43125
43126 /*
43127 Function: pow
43128 Raise a <BigInteger> to a power.
43129
43130 In this implementation, 0**0 is 1.
43131
43132 Parameters:
43133
43134 n - The exponent to raise *this* by. *n* must be no greater than
43135 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43136
43137 Returns:
43138
43139 *this* raised to the *nth* power.
43140
43141 See Also:
43142
43143 <modPow>
43144 */
43145 BigInteger.prototype.pow = function(n) {
43146 if (this.isUnit()) {
43147 if (this._s > 0) {
43148 return this;
43149 }
43150 else {
43151 return BigInteger(n).isOdd() ? this : this.negate();
43152 }
43153 }
43154
43155 n = BigInteger(n);
43156 if (n._s === 0) {
43157 return ONE;
43158 }
43159 else if (n._s < 0) {
43160 if (this._s === 0) {
43161 throw new Error("Divide by zero");
43162 }
43163 else {
43164 return ZERO;
43165 }
43166 }
43167 if (this._s === 0) {
43168 return ZERO;
43169 }
43170 if (n.isUnit()) {
43171 return this;
43172 }
43173
43174 if (n.compareAbs(MAX_EXP) > 0) {
43175 throw new Error("exponent too large in BigInteger.pow");
43176 }
43177 var x = this;
43178 var aux = ONE;
43179 var two = BigInteger.small[2];
43180
43181 while (n.isPositive()) {
43182 if (n.isOdd()) {
43183 aux = aux.multiply(x);
43184 if (n.isUnit()) {
43185 return aux;
43186 }
43187 }
43188 x = x.square();
43189 n = n.quotient(two);
43190 }
43191
43192 return aux;
43193 };
43194
43195 /*
43196 Function: modPow
43197 Raise a <BigInteger> to a power (mod m).
43198
43199 Because it is reduced by a modulus, <modPow> is not limited by
43200 <BigInteger.MAX_EXP> like <pow>.
43201
43202 Parameters:
43203
43204 exponent - The exponent to raise *this* by. Must be positive.
43205 modulus - The modulus.
43206
43207 Returns:
43208
43209 *this* ^ *exponent* (mod *modulus*).
43210
43211 See Also:
43212
43213 <pow>, <mod>
43214 */
43215 BigInteger.prototype.modPow = function(exponent, modulus) {
43216 var result = ONE;
43217 var base = this;
43218
43219 while (exponent.isPositive()) {
43220 if (exponent.isOdd()) {
43221 result = result.multiply(base).remainder(modulus);
43222 }
43223
43224 exponent = exponent.quotient(BigInteger.small[2]);
43225 if (exponent.isPositive()) {
43226 base = base.square().remainder(modulus);
43227 }
43228 }
43229
43230 return result;
43231 };
43232
43233 /*
43234 Function: log
43235 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43236
43237 This is equivalent to
43238
43239 > Math.log(this.toJSValue())
43240
43241 but handles values outside of the native number range.
43242
43243 Returns:
43244
43245 log( *this* )
43246
43247 See Also:
43248
43249 <toJSValue>
43250 */
43251 BigInteger.prototype.log = function() {
43252 switch (this._s) {
43253 case 0: return -Infinity;
43254 case -1: return NaN;
43255 default: // Fall through.
43256 }
43257
43258 var l = this._d.length;
43259
43260 if (l*BigInteger_base_log10 < 30) {
43261 return Math.log(this.valueOf());
43262 }
43263
43264 var N = Math.ceil(30/BigInteger_base_log10);
43265 var firstNdigits = this._d.slice(l - N);
43266 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43267 };
43268
43269 /*
43270 Function: valueOf
43271 Convert a <BigInteger> to a native JavaScript integer.
43272
43273 This is called automatically by JavaScipt to convert a <BigInteger> to a
43274 native value.
43275
43276 Returns:
43277
43278 > parseInt(this.toString(), 10)
43279
43280 See Also:
43281
43282 <toString>, <toJSValue>
43283 */
43284 BigInteger.prototype.valueOf = function() {
43285 return parseInt(this.toString(), 10);
43286 };
43287
43288 /*
43289 Function: toJSValue
43290 Convert a <BigInteger> to a native JavaScript integer.
43291
43292 This is the same as valueOf, but more explicitly named.
43293
43294 Returns:
43295
43296 > parseInt(this.toString(), 10)
43297
43298 See Also:
43299
43300 <toString>, <valueOf>
43301 */
43302 BigInteger.prototype.toJSValue = function() {
43303 return parseInt(this.toString(), 10);
43304 };
43305
43306 var MAX_EXP = BigInteger(0x7FFFFFFF);
43307 // Constant: MAX_EXP
43308 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43309 BigInteger.MAX_EXP = MAX_EXP;
43310
43311 (function() {
43312 function makeUnary(fn) {
43313 return function(a) {
43314 return fn.call(BigInteger(a));
43315 };
43316 }
43317
43318 function makeBinary(fn) {
43319 return function(a, b) {
43320 return fn.call(BigInteger(a), BigInteger(b));
43321 };
43322 }
43323
43324 function makeTrinary(fn) {
43325 return function(a, b, c) {
43326 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43327 };
43328 }
43329
43330 (function() {
43331 var i, fn;
43332 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43333 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43334 var trinary = ["modPow"];
43335
43336 for (i = 0; i < unary.length; i++) {
43337 fn = unary[i];
43338 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43339 }
43340
43341 for (i = 0; i < binary.length; i++) {
43342 fn = binary[i];
43343 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43344 }
43345
43346 for (i = 0; i < trinary.length; i++) {
43347 fn = trinary[i];
43348 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43349 }
43350
43351 BigInteger.exp10 = function(x, n) {
43352 return BigInteger(x).exp10(n);
43353 };
43354 })();
43355 })();
43356
43357 exports.BigInteger = BigInteger;
43358 })(typeof exports !== 'undefined' ? exports : this);
43359 </script>
43360 <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){
43361 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;
43362
43363 },{}],2:[function(require,module,exports){
43364 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;
43365
43366 },{"./scoring":6}],3:[function(require,module,exports){
43367 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(","),
43368 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(","),
43369 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(","),
43370 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(","),
43371 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;
43372
43373 },{}],4:[function(require,module,exports){
43374 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;
43375
43376 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43377 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;
43378
43379 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43380 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;
43381
43382 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
43383 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;
43384
43385 },{}]},{},[4])(4)
43386 });
43387 //# sourceMappingURL=zxcvbn.js.map
43388 </script>
43389 <script>/*
43390 * Detects entropy from a string.
43391 *
43392 * Formats include:
43393 * binary [0-1]
43394 * base 6 [0-5]
43395 * dice 6 [1-6]
43396 * decimal [0-9]
43397 * hexadecimal [0-9A-F]
43398 * card [A2-9TJQK][CDHS]
43399 *
43400 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43401 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43402 * entropy.
43403 */
43404
43405 window.Entropy = new (function() {
43406
43407 var TWO = new BigInteger(2);
43408
43409 // matchers returns an array of the matched events for each type of entropy.
43410 // eg
43411 // matchers.binary("010") returns ["0", "1", "0"]
43412 // matchers.binary("a10") returns ["1", "0"]
43413 // matchers.hex("a10") returns ["a", "1", "0"]
43414 var matchers = {
43415 binary: function(str) {
43416 return str.match(/[0-1]/gi) || [];
43417 },
43418 base6: function(str) {
43419 return str.match(/[0-5]/gi) || [];
43420 },
43421 dice: function(str) {
43422 return str.match(/[1-6]/gi) || []; // ie dice numbers
43423 },
43424 base10: function(str) {
43425 return str.match(/[0-9]/gi) || [];
43426 },
43427 hex: function(str) {
43428 return str.match(/[0-9A-F]/gi) || [];
43429 },
43430 card: function(str) {
43431 // Format is NumberSuit, eg
43432 // AH ace of hearts
43433 // 8C eight of clubs
43434 // TD ten of diamonds
43435 // JS jack of spades
43436 // QH queen of hearts
43437 // KC king of clubs
43438 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43439 }
43440 }
43441
43442 // Convert array of cards from ["ac", "4d", "ks"]
43443 // to numbers between 0 and 51 [0, 16, 51]
43444 function convertCardsToInts(cards) {
43445 var ints = [];
43446 var values = "a23456789tjqk";
43447 var suits = "cdhs";
43448 for (var i=0; i<cards.length; i++) {
43449 var card = cards[i].toLowerCase();
43450 var value = card[0];
43451 var suit = card[1];
43452 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43453 ints.push(asInt);
43454 }
43455 return ints;
43456 }
43457
43458 this.fromString = function(rawEntropyStr) {
43459 // Find type of entropy being used (binary, hex, dice etc)
43460 var base = getBase(rawEntropyStr);
43461 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43462 // This is done by changing all 6s to 0s
43463 if (base.str == "dice") {
43464 var newParts = [];
43465 var newInts = [];
43466 for (var i=0; i<base.parts.length; i++) {
43467 var c = base.parts[i];
43468 if ("12345".indexOf(c) > -1) {
43469 newParts[i] = base.parts[i];
43470 newInts[i] = base.ints[i];
43471 }
43472 else {
43473 newParts[i] = "0";
43474 newInts[i] = 0;
43475 }
43476 }
43477 base.str = "base 6 (dice)";
43478 base.ints = newInts;
43479 base.parts = newParts;
43480 base.matcher = matchers.base6;
43481 }
43482 // Detect empty entropy
43483 if (base.parts.length == 0) {
43484 return {
43485 binaryStr: "",
43486 cleanStr: "",
43487 cleanHtml: "",
43488 base: base,
43489 };
43490 }
43491 // Convert base.ints to BigInteger.
43492 // Due to using unusual bases, eg cards of base52, this is not as simple as
43493 // using BigInteger.parse()
43494 var entropyInt = BigInteger.ZERO;
43495 for (var i=base.ints.length-1; i>=0; i--) {
43496 var thisInt = BigInteger.parse(base.ints[i]);
43497 var power = (base.ints.length - 1) - i;
43498 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43499 entropyInt = entropyInt.add(additionalEntropy);
43500 }
43501 // Convert entropy to binary
43502 var entropyBin = entropyInt.toString(2);
43503 // If the first integer is small, it must be padded with zeros.
43504 // Otherwise the chance of the first bit being 1 is 100%, which is
43505 // obviously incorrect.
43506 // This is not perfect for non-2^n bases.
43507 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43508 while (entropyBin.length < expectedBits) {
43509 entropyBin = "0" + entropyBin;
43510 }
43511 // Calculate the number of bits per event
43512 var bitsPerEvent = Math.log2(base.asInt);
43513 // Cards binary must be handled differently, since they're not replaced
43514 if (base.asInt == 52) {
43515 var cardEntropy = processCardEntropy(base.parts);
43516 entropyBin = cardEntropy.binaryStr;
43517 bitsPerEvent = cardEntropy.bitsPerEvent;
43518 }
43519 // Supply a 'filtered' entropy string for display purposes
43520 var entropyClean = base.parts.join("");
43521 var entropyHtml = base.parts.join("");
43522 if (base.asInt == 52) {
43523 entropyClean = base.parts.join(" ").toUpperCase();
43524 entropyClean = entropyClean.replace(/C/g, "\u2663");
43525 entropyClean = entropyClean.replace(/D/g, "\u2666");
43526 entropyClean = entropyClean.replace(/H/g, "\u2665");
43527 entropyClean = entropyClean.replace(/S/g, "\u2660");
43528 entropyHtml = base.parts.join(" ").toUpperCase();
43529 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43530 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43531 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43532 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43533 }
43534 // Return the result
43535 var e = {
43536 binaryStr: entropyBin,
43537 cleanStr: entropyClean,
43538 cleanHtml: entropyHtml,
43539 bitsPerEvent: bitsPerEvent,
43540 base: base,
43541 }
43542 return e;
43543 }
43544
43545 function getSortedDeck() {
43546 var s = [];
43547 var suits = "CDHS";
43548 var values = "A23456789TJQK";
43549 for (var i=0; i<suits.length; i++) {
43550 for (var j=0; j<values.length; j++) {
43551 s.push(values[j]+suits[i]);
43552 }
43553 }
43554 return s;
43555 }
43556
43557 function getBase(str) {
43558 // Need to get the lowest base for the supplied entropy.
43559 // This prevents interpreting, say, dice rolls as hexadecimal.
43560 var binaryMatches = matchers.binary(str);
43561 var hexMatches = matchers.hex(str);
43562 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43563 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43564 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43565 return {
43566 ints: ints,
43567 parts: binaryMatches,
43568 matcher: matchers.binary,
43569 asInt: 2,
43570 str: "binary",
43571 }
43572 }
43573 var cardMatches = matchers.card(str);
43574 if (cardMatches.length >= hexMatches.length / 2) {
43575 var ints = convertCardsToInts(cardMatches);
43576 return {
43577 ints: ints,
43578 parts: cardMatches,
43579 matcher: matchers.card,
43580 asInt: 52,
43581 str: "card",
43582 }
43583 }
43584 var diceMatches = matchers.dice(str);
43585 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43586 var ints = diceMatches.map(function(i) { return parseInt(i) });
43587 return {
43588 ints: ints,
43589 parts: diceMatches,
43590 matcher: matchers.dice,
43591 asInt: 6,
43592 str: "dice",
43593 }
43594 }
43595 var base6Matches = matchers.base6(str);
43596 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43597 var ints = base6Matches.map(function(i) { return parseInt(i) });
43598 return {
43599 ints: ints,
43600 parts: base6Matches,
43601 matcher: matchers.base6,
43602 asInt: 6,
43603 str: "base 6",
43604 }
43605 }
43606 var base10Matches = matchers.base10(str);
43607 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43608 var ints = base10Matches.map(function(i) { return parseInt(i) });
43609 return {
43610 ints: ints,
43611 parts: base10Matches,
43612 matcher: matchers.base10,
43613 asInt: 10,
43614 str: "base 10",
43615 }
43616 }
43617 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43618 return {
43619 ints: ints,
43620 parts: hexMatches,
43621 matcher: matchers.hex,
43622 asInt: 16,
43623 str: "hexadecimal",
43624 }
43625 }
43626
43627 // Assume cards are NOT replaced.
43628 // Additional entropy decreases as more cards are used. This means
43629 // total possible entropy is measured using n!, not base^n.
43630 // eg the second last card can be only one of two, not one of fifty two
43631 // so the added entropy for that card is only one bit at most
43632 function processCardEntropy(cards) {
43633 // Track how many instances of each card have been used, and thus
43634 // how many decks are in use.
43635 var cardCounts = {};
43636 var numberOfDecks = 0;
43637 // Work out number of decks by max(duplicates)
43638 for (var i=0; i<cards.length; i++) {
43639 // Get the card that was drawn
43640 var cardLower = cards[i];
43641 var card = cardLower.toUpperCase();
43642 // Initialize the count for this card if needed
43643 if (!(card in cardCounts)) {
43644 cardCounts[card] = 0;
43645 }
43646 cardCounts[card] += 1;
43647 // See if this is max(duplicates)
43648 if (cardCounts[card] > numberOfDecks) {
43649 numberOfDecks = cardCounts[card];
43650 }
43651 }
43652 // Work out the total number of bits for this many decks
43653 // See http://crypto.stackexchange.com/q/41886
43654 var gainedBits = 0;
43655 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43656 // which becomes infinity for numberOfDecks > 4
43657 for (var i=1; i<=52*numberOfDecks; i++) {
43658 gainedBits = gainedBits + Math.log2(i);
43659 }
43660 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43661 var maxBits = gainedBits - lostBits;
43662 // Convert the drawn cards to a binary representation.
43663 // The exact technique for doing this is unclear.
43664 // See
43665 // http://crypto.stackexchange.com/a/41896
43666 // "I even doubt that this is well defined (only the average entropy
43667 // is, I believe)."
43668 // See
43669 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43670 // "The binary representation can be the first log(permutations,2) bits
43671 // of the sha-2 hash of the normalized deck string."
43672 //
43673 // In this specific implementation, the first N bits of the hash of the
43674 // normalized cards string is being used. Uppercase, no spaces; eg
43675 // sha256("AH8DQSTC2H")
43676 var totalCards = numberOfDecks * 52;
43677 var percentUsed = cards.length / totalCards;
43678 // Calculate the average number of bits of entropy for the number of
43679 // cards drawn.
43680 var numberOfBits = Math.floor(maxBits * percentUsed);
43681 // Create a normalized string of the selected cards
43682 var normalizedCards = cards.join("").toUpperCase();
43683 // Convert to binary using the SHA256 hash of the normalized cards.
43684 // If the number of bits is more than 256, multiple hashes
43685 // are used until the required number of bits is reached.
43686 var entropyBin = "";
43687 var iterations = 0;
43688 while (entropyBin.length < numberOfBits) {
43689 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
43690 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43691 for (var i=0; i<hashHex.length; i++) {
43692 var decimal = parseInt(hashHex[i], 16);
43693 var binary = decimal.toString(2);
43694 while (binary.length < 4) {
43695 binary = "0" + binary;
43696 }
43697 entropyBin = entropyBin + binary;
43698 }
43699 iterations = iterations + 1;
43700 }
43701 // Truncate to the appropriate number of bits.
43702 entropyBin = entropyBin.substring(0, numberOfBits);
43703 // Get the number of bits per event
43704 bitsPerEvent = maxBits / totalCards;
43705 return {
43706 binaryStr: entropyBin,
43707 bitsPerEvent: bitsPerEvent,
43708 }
43709 }
43710
43711 // Polyfill for Math.log2
43712 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43713 Math.log2 = Math.log2 || function(x) {
43714 // The polyfill isn't good enough because of the poor accuracy of
43715 // Math.LOG2E
43716 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43717 // So instead use the BigInteger library to get it right.
43718 return BigInteger.log(x) / BigInteger.log(2);
43719 };
43720
43721 // Depends on BigInteger
43722 function factorial(n) {
43723 if (n == 0) {
43724 return 1;
43725 }
43726 f = BigInteger.ONE;
43727 for (var i=1; i<=n; i++) {
43728 f = f.multiply(new BigInteger(i));
43729 }
43730 return f;
43731 }
43732
43733 })();
43734 </script>
43735 <script>(function() {
43736
43737 // mnemonics is populated as required by getLanguage
43738 var mnemonics = { "english": new Mnemonic("english") };
43739 var mnemonic = mnemonics["english"];
43740 var seed = null;
43741 var bip32RootKey = null;
43742 var bip32ExtendedKey = null;
43743 var network = bitcoin.networks.bitcoin;
43744 var addressRowTemplate = $("#address-row-template");
43745
43746 var showIndex = true;
43747 var showAddress = true;
43748 var showPubKey = true;
43749 var showPrivKey = true;
43750 var showQr = false;
43751
43752 var entropyChangeTimeoutEvent = null;
43753 var phraseChangeTimeoutEvent = null;
43754 var rootKeyChangedTimeoutEvent = null;
43755
43756 var generationProcesses = [];
43757
43758 var DOM = {};
43759 DOM.network = $(".network");
43760 DOM.bip32Client = $("#bip32-client");
43761 DOM.phraseNetwork = $("#network-phrase");
43762 DOM.useEntropy = $(".use-entropy");
43763 DOM.entropyContainer = $(".entropy-container");
43764 DOM.entropy = $(".entropy");
43765 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43766 DOM.entropyType = DOM.entropyContainer.find(".type");
43767 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
43768 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43769 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43770 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43771 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43772 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43773 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43774 DOM.phrase = $(".phrase");
43775 DOM.passphrase = $(".passphrase");
43776 DOM.generateContainer = $(".generate-container");
43777 DOM.generate = $(".generate");
43778 DOM.seed = $(".seed");
43779 DOM.rootKey = $(".root-key");
43780 DOM.extendedPrivKey = $(".extended-priv-key");
43781 DOM.extendedPubKey = $(".extended-pub-key");
43782 DOM.bip32tab = $("#bip32-tab");
43783 DOM.bip44tab = $("#bip44-tab");
43784 DOM.bip32panel = $("#bip32");
43785 DOM.bip44panel = $("#bip44");
43786 DOM.bip32path = $("#bip32-path");
43787 DOM.bip44path = $("#bip44-path");
43788 DOM.bip44purpose = $("#bip44 .purpose");
43789 DOM.bip44coin = $("#bip44 .coin");
43790 DOM.bip44account = $("#bip44 .account");
43791 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43792 DOM.bip44accountXpub = $("#bip44 .account-xpub");
43793 DOM.bip44change = $("#bip44 .change");
43794 DOM.generatedStrength = $(".generate-container .strength");
43795 DOM.hardenedAddresses = $(".hardened-addresses");
43796 DOM.addresses = $(".addresses");
43797 DOM.rowsToAdd = $(".rows-to-add");
43798 DOM.more = $(".more");
43799 DOM.feedback = $(".feedback");
43800 DOM.tab = $(".derivation-type a");
43801 DOM.indexToggle = $(".index-toggle");
43802 DOM.addressToggle = $(".address-toggle");
43803 DOM.publicKeyToggle = $(".public-key-toggle");
43804 DOM.privateKeyToggle = $(".private-key-toggle");
43805 DOM.languages = $(".languages a");
43806 DOM.qrContainer = $(".qr-container");
43807 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
43808 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43809 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43810 DOM.showQrEls = $("[data-show-qr]");
43811
43812 function init() {
43813 // Events
43814 DOM.network.on("change", networkChanged);
43815 DOM.bip32Client.on("change", bip32ClientChanged);
43816 DOM.useEntropy.on("change", setEntropyVisibility);
43817 DOM.entropy.on("input", delayedEntropyChanged);
43818 DOM.entropyMnemonicLength.on("change", entropyChanged);
43819 DOM.phrase.on("input", delayedPhraseChanged);
43820 DOM.passphrase.on("input", delayedPhraseChanged);
43821 DOM.generate.on("click", generateClicked);
43822 DOM.more.on("click", showMore);
43823 DOM.rootKey.on("input", delayedRootKeyChanged);
43824 DOM.bip32path.on("input", calcForDerivationPath);
43825 DOM.bip44purpose.on("input", calcForDerivationPath);
43826 DOM.bip44coin.on("input", calcForDerivationPath);
43827 DOM.bip44account.on("input", calcForDerivationPath);
43828 DOM.bip44change.on("input", calcForDerivationPath);
43829 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43830 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43831 DOM.indexToggle.on("click", toggleIndexes);
43832 DOM.addressToggle.on("click", toggleAddresses);
43833 DOM.publicKeyToggle.on("click", togglePublicKeys);
43834 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43835 DOM.languages.on("click", languageChanged);
43836 setQrEvents(DOM.showQrEls);
43837 disableForms();
43838 hidePending();
43839 hideValidationError();
43840 populateNetworkSelect();
43841 populateClientSelect();
43842 }
43843
43844 // Event handlers
43845
43846 function networkChanged(e) {
43847 var networkIndex = e.target.value;
43848 networks[networkIndex].onSelect();
43849 if (seed != null) {
43850 phraseChanged();
43851 }
43852 else {
43853 rootKeyChanged();
43854 }
43855 }
43856
43857 function bip32ClientChanged(e) {
43858 var clientIndex = DOM.bip32Client.val();
43859 if (clientIndex == "custom") {
43860 DOM.bip32path.prop("readonly", false);
43861 }
43862 else {
43863 DOM.bip32path.prop("readonly", true);
43864 clients[clientIndex].onSelect();
43865 if (seed != null) {
43866 phraseChanged();
43867 }
43868 else {
43869 rootKeyChanged();
43870 }
43871 }
43872 }
43873
43874 function setEntropyVisibility() {
43875 if (isUsingOwnEntropy()) {
43876 DOM.entropyContainer.removeClass("hidden");
43877 DOM.generateContainer.addClass("hidden");
43878 DOM.phrase.prop("readonly", true);
43879 DOM.entropy.focus();
43880 entropyChanged();
43881 }
43882 else {
43883 DOM.entropyContainer.addClass("hidden");
43884 DOM.generateContainer.removeClass("hidden");
43885 DOM.phrase.prop("readonly", false);
43886 hidePending();
43887 }
43888 }
43889
43890 function delayedPhraseChanged() {
43891 hideValidationError();
43892 showPending();
43893 if (phraseChangeTimeoutEvent != null) {
43894 clearTimeout(phraseChangeTimeoutEvent);
43895 }
43896 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43897 }
43898
43899 function phraseChanged() {
43900 showPending();
43901 hideValidationError();
43902 setMnemonicLanguage();
43903 // Get the mnemonic phrase
43904 var phrase = DOM.phrase.val();
43905 var errorText = findPhraseErrors(phrase);
43906 if (errorText) {
43907 showValidationError(errorText);
43908 return;
43909 }
43910 // Calculate and display
43911 var passphrase = DOM.passphrase.val();
43912 calcBip32RootKeyFromSeed(phrase, passphrase);
43913 calcForDerivationPath();
43914 hidePending();
43915 }
43916
43917 function delayedEntropyChanged() {
43918 hideValidationError();
43919 showPending();
43920 if (entropyChangeTimeoutEvent != null) {
43921 clearTimeout(entropyChangeTimeoutEvent);
43922 }
43923 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43924 }
43925
43926 function entropyChanged() {
43927 // If blank entropy, clear mnemonic, addresses, errors
43928 if (DOM.entropy.val().trim().length == 0) {
43929 clearDisplay();
43930 clearEntropyFeedback();
43931 DOM.phrase.val("");
43932 showValidationError("Blank entropy");
43933 return;
43934 }
43935 // Get the current phrase to detect changes
43936 var phrase = DOM.phrase.val();
43937 // Set the phrase from the entropy
43938 setMnemonicFromEntropy();
43939 // Recalc addresses if the phrase has changed
43940 var newPhrase = DOM.phrase.val();
43941 if (newPhrase != phrase) {
43942 if (newPhrase.length == 0) {
43943 clearDisplay();
43944 }
43945 else {
43946 phraseChanged();
43947 }
43948 }
43949 else {
43950 hidePending();
43951 }
43952 }
43953
43954 function delayedRootKeyChanged() {
43955 // Warn if there is an existing mnemonic or passphrase.
43956 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43957 if (!confirm("This will clear existing mnemonic and passphrase")) {
43958 DOM.rootKey.val(bip32RootKey);
43959 return
43960 }
43961 }
43962 hideValidationError();
43963 showPending();
43964 // Clear existing mnemonic and passphrase
43965 DOM.phrase.val("");
43966 DOM.passphrase.val("");
43967 seed = null;
43968 if (rootKeyChangedTimeoutEvent != null) {
43969 clearTimeout(rootKeyChangedTimeoutEvent);
43970 }
43971 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43972 }
43973
43974 function rootKeyChanged() {
43975 showPending();
43976 hideValidationError();
43977 // Validate the root key TODO
43978 var rootKeyBase58 = DOM.rootKey.val();
43979 var errorText = validateRootKey(rootKeyBase58);
43980 if (errorText) {
43981 showValidationError(errorText);
43982 return;
43983 }
43984 // Calculate and display
43985 calcBip32RootKeyFromBase58(rootKeyBase58);
43986 calcForDerivationPath();
43987 }
43988
43989 function calcForDerivationPath() {
43990 showPending();
43991 clearAddressesList();
43992 hideValidationError();
43993 // Get the derivation path
43994 var derivationPath = getDerivationPath();
43995 var errorText = findDerivationPathErrors(derivationPath);
43996 if (errorText) {
43997 showValidationError(errorText);
43998 return;
43999 }
44000 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
44001 if (bip44TabSelected()) {
44002 displayBip44Info();
44003 }
44004 displayBip32Info();
44005 hidePending();
44006 }
44007
44008 function generateClicked() {
44009 if (isUsingOwnEntropy()) {
44010 return;
44011 }
44012 clearDisplay();
44013 showPending();
44014 setTimeout(function() {
44015 setMnemonicLanguage();
44016 var phrase = generateRandomPhrase();
44017 if (!phrase) {
44018 return;
44019 }
44020 phraseChanged();
44021 }, 50);
44022 }
44023
44024 function languageChanged() {
44025 setTimeout(function() {
44026 setMnemonicLanguage();
44027 if (DOM.phrase.val().length > 0) {
44028 var newPhrase = convertPhraseToNewLanguage();
44029 DOM.phrase.val(newPhrase);
44030 phraseChanged();
44031 }
44032 else {
44033 DOM.generate.trigger("click");
44034 }
44035 }, 50);
44036 }
44037
44038 function toggleIndexes() {
44039 showIndex = !showIndex;
44040 $("td.index span").toggleClass("invisible");
44041 }
44042
44043 function toggleAddresses() {
44044 showAddress = !showAddress;
44045 $("td.address span").toggleClass("invisible");
44046 }
44047
44048 function togglePublicKeys() {
44049 showPubKey = !showPubKey;
44050 $("td.pubkey span").toggleClass("invisible");
44051 }
44052
44053 function togglePrivateKeys() {
44054 showPrivKey = !showPrivKey;
44055 $("td.privkey span").toggleClass("invisible");
44056 }
44057
44058 // Private methods
44059
44060 function generateRandomPhrase() {
44061 if (!hasStrongRandom()) {
44062 var errorText = "This browser does not support strong randomness";
44063 showValidationError(errorText);
44064 return;
44065 }
44066 var numWords = parseInt(DOM.generatedStrength.val());
44067 var strength = numWords / 3 * 32;
44068 var words = mnemonic.generate(strength);
44069 DOM.phrase.val(words);
44070 return words;
44071 }
44072
44073 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44074 seed = mnemonic.toSeed(phrase, passphrase);
44075 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44076 }
44077
44078 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44079 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44080 }
44081
44082 function calcBip32ExtendedKey(path) {
44083 // Check there's a root key to derive from
44084 if (!bip32RootKey) {
44085 return bip32RootKey;
44086 }
44087 var extendedKey = bip32RootKey;
44088 // Derive the key from the path
44089 var pathBits = path.split("/");
44090 for (var i=0; i<pathBits.length; i++) {
44091 var bit = pathBits[i];
44092 var index = parseInt(bit);
44093 if (isNaN(index)) {
44094 continue;
44095 }
44096 var hardened = bit[bit.length-1] == "'";
44097 var isPriv = "privKey" in extendedKey;
44098 var invalidDerivationPath = hardened && !isPriv;
44099 if (invalidDerivationPath) {
44100 extendedKey = null;
44101 }
44102 else if (hardened) {
44103 extendedKey = extendedKey.deriveHardened(index);
44104 }
44105 else {
44106 extendedKey = extendedKey.derive(index);
44107 }
44108 }
44109 return extendedKey
44110 }
44111
44112 function showValidationError(errorText) {
44113 DOM.feedback
44114 .text(errorText)
44115 .show();
44116 }
44117
44118 function hideValidationError() {
44119 DOM.feedback
44120 .text("")
44121 .hide();
44122 }
44123
44124 function findPhraseErrors(phrase) {
44125 // Preprocess the words
44126 phrase = mnemonic.normalizeString(phrase);
44127 var words = phraseToWordArray(phrase);
44128 // Detect blank phrase
44129 if (words.length == 0) {
44130 return "Blank mnemonic";
44131 }
44132 // Check each word
44133 for (var i=0; i<words.length; i++) {
44134 var word = words[i];
44135 var language = getLanguage();
44136 if (WORDLISTS[language].indexOf(word) == -1) {
44137 console.log("Finding closest match to " + word);
44138 var nearestWord = findNearestWord(word);
44139 return word + " not in wordlist, did you mean " + nearestWord + "?";
44140 }
44141 }
44142 // Check the words are valid
44143 var properPhrase = wordArrayToPhrase(words);
44144 var isValid = mnemonic.check(properPhrase);
44145 if (!isValid) {
44146 return "Invalid mnemonic";
44147 }
44148 return false;
44149 }
44150
44151 function validateRootKey(rootKeyBase58) {
44152 try {
44153 bitcoin.HDNode.fromBase58(rootKeyBase58);
44154 }
44155 catch (e) {
44156 return "Invalid root key";
44157 }
44158 return "";
44159 }
44160
44161 function getDerivationPath() {
44162 if (bip44TabSelected()) {
44163 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44164 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44165 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44166 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44167 var path = "m/";
44168 path += purpose + "'/";
44169 path += coin + "'/";
44170 path += account + "'/";
44171 path += change;
44172 DOM.bip44path.val(path);
44173 var derivationPath = DOM.bip44path.val();
44174 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44175 return derivationPath;
44176 }
44177 else if (bip32TabSelected()) {
44178 var derivationPath = DOM.bip32path.val();
44179 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44180 return derivationPath;
44181 }
44182 else {
44183 console.log("Unknown derivation path");
44184 }
44185 }
44186
44187 function findDerivationPathErrors(path) {
44188 // TODO is not perfect but is better than nothing
44189 // Inspired by
44190 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44191 // and
44192 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44193 var maxDepth = 255; // TODO verify this!!
44194 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44195 if (path[0] != "m") {
44196 return "First character must be 'm'";
44197 }
44198 if (path.length > 1) {
44199 if (path[1] != "/") {
44200 return "Separator must be '/'";
44201 }
44202 var indexes = path.split("/");
44203 if (indexes.length > maxDepth) {
44204 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44205 }
44206 for (var depth = 1; depth<indexes.length; depth++) {
44207 var index = indexes[depth];
44208 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44209 if (invalidChars.length > 0) {
44210 return "Invalid characters " + invalidChars + " found at depth " + depth;
44211 }
44212 var indexValue = parseInt(index.replace("'", ""));
44213 if (isNaN(depth)) {
44214 return "Invalid number at depth " + depth;
44215 }
44216 if (indexValue > maxIndexValue) {
44217 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44218 }
44219 }
44220 }
44221 // Check root key exists or else derivation path is useless!
44222 if (!bip32RootKey) {
44223 return "No root key";
44224 }
44225 // Check no hardened derivation path when using xpub keys
44226 var hardened = path.indexOf("'") > -1;
44227 var isXpubkey = !("privKey" in bip32RootKey);
44228 if (hardened && isXpubkey) {
44229 return "Hardened derivation path is invalid with xpub key";
44230 }
44231 return false;
44232 }
44233
44234 function displayBip44Info() {
44235 // Get the derivation path for the account
44236 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44237 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44238 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44239 var path = "m/";
44240 path += purpose + "'/";
44241 path += coin + "'/";
44242 path += account + "'/";
44243 // Calculate the account extended keys
44244 var accountExtendedKey = calcBip32ExtendedKey(path);
44245 var accountXprv = accountExtendedKey.toBase58();
44246 var accountXpub = accountExtendedKey.toBase58(false);
44247 // Display the extended keys
44248 DOM.bip44accountXprv.val(accountXprv);
44249 DOM.bip44accountXpub.val(accountXpub);
44250 }
44251
44252 function displayBip32Info() {
44253 // Display the key
44254 DOM.seed.val(seed);
44255 var rootKey = bip32RootKey.toBase58();
44256 DOM.rootKey.val(rootKey);
44257 var xprvkeyB58 = "NA";
44258 if (bip32ExtendedKey.privKey) {
44259 xprvkeyB58 = bip32ExtendedKey.toBase58();
44260 }
44261 var extendedPrivKey = xprvkeyB58;
44262 DOM.extendedPrivKey.val(extendedPrivKey);
44263 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44264 DOM.extendedPubKey.val(extendedPubKey);
44265 // Display the addresses and privkeys
44266 clearAddressesList();
44267 displayAddresses(0, 20);
44268 }
44269
44270 function displayAddresses(start, total) {
44271 generationProcesses.push(new (function() {
44272
44273 var rows = [];
44274
44275 this.stop = function() {
44276 for (var i=0; i<rows.length; i++) {
44277 rows[i].shouldGenerate = false;
44278 }
44279 }
44280
44281 for (var i=0; i<total; i++) {
44282 var index = i + start;
44283 rows.push(new TableRow(index));
44284 }
44285
44286 })());
44287 }
44288
44289 function TableRow(index) {
44290
44291 var self = this;
44292 this.shouldGenerate = true;
44293 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44294
44295 function init() {
44296 calculateValues();
44297 }
44298
44299 function calculateValues() {
44300 setTimeout(function() {
44301 if (!self.shouldGenerate) {
44302 return;
44303 }
44304 var key = "";
44305 if (useHardenedAddresses) {
44306 key = bip32ExtendedKey.deriveHardened(index);
44307 }
44308 else {
44309 key = bip32ExtendedKey.derive(index);
44310 }
44311 var address = key.getAddress().toString();
44312 var privkey = "NA";
44313 if (key.privKey) {
44314 privkey = key.privKey.toWIF(network);
44315 }
44316 var pubkey = key.pubKey.toHex();
44317 var indexText = getDerivationPath() + "/" + index;
44318 if (useHardenedAddresses) {
44319 indexText = indexText + "'";
44320 }
44321 // Ethereum values are different
44322 if (networks[DOM.network.val()].name == "Ethereum") {
44323 var privKeyBuffer = key.privKey.d.toBuffer();
44324 privkey = privKeyBuffer.toString('hex');
44325 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
44326 var hexAddress = addressBuffer.toString('hex');
44327 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44328 address = ethUtil.addHexPrefix(checksumAddress);
44329 privkey = ethUtil.addHexPrefix(privkey);
44330 pubkey = ethUtil.addHexPrefix(pubkey);
44331 }
44332 // Ripple values are different
44333 if (networks[DOM.network.val()].name == "Ripple") {
44334 privkey = convertRipplePriv(privkey);
44335 address = convertRippleAdrr(address);
44336 }
44337 addAddressToList(indexText, address, pubkey, privkey);
44338 }, 50)
44339 }
44340
44341 init();
44342
44343 }
44344
44345 function showMore() {
44346 var start = DOM.addresses.children().length;
44347 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44348 if (isNaN(rowsToAdd)) {
44349 rowsToAdd = 20;
44350 DOM.rowsToAdd.val("20");
44351 }
44352 if (rowsToAdd > 200) {
44353 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44354 msg += "Do you want to continue?";
44355 if (!confirm(msg)) {
44356 return;
44357 }
44358 }
44359 displayAddresses(start, rowsToAdd);
44360 }
44361
44362 function clearDisplay() {
44363 clearAddressesList();
44364 clearKey();
44365 hideValidationError();
44366 }
44367
44368 function clearAddressesList() {
44369 DOM.addresses.empty();
44370 stopGenerating();
44371 }
44372
44373 function stopGenerating() {
44374 while (generationProcesses.length > 0) {
44375 var generation = generationProcesses.shift();
44376 generation.stop();
44377 }
44378 }
44379
44380 function clearKey() {
44381 DOM.rootKey.val("");
44382 DOM.extendedPrivKey.val("");
44383 DOM.extendedPubKey.val("");
44384 }
44385
44386 function addAddressToList(indexText, address, pubkey, privkey) {
44387 var row = $(addressRowTemplate.html());
44388 // Elements
44389 var indexCell = row.find(".index span");
44390 var addressCell = row.find(".address span");
44391 var pubkeyCell = row.find(".pubkey span");
44392 var privkeyCell = row.find(".privkey span");
44393 // Content
44394 indexCell.text(indexText);
44395 addressCell.text(address);
44396 pubkeyCell.text(pubkey);
44397 privkeyCell.text(privkey);
44398 // Visibility
44399 if (!showIndex) {
44400 indexCell.addClass("invisible");
44401 }
44402 if (!showAddress) {
44403 addressCell.addClass("invisible");
44404 }
44405 if (!showPubKey) {
44406 pubkeyCell.addClass("invisible");
44407 }
44408 if (!showPrivKey) {
44409 privkeyCell.addClass("invisible");
44410 }
44411 DOM.addresses.append(row);
44412 var rowShowQrEls = row.find("[data-show-qr]");
44413 setQrEvents(rowShowQrEls);
44414 }
44415
44416 function hasStrongRandom() {
44417 return 'crypto' in window && window['crypto'] !== null;
44418 }
44419
44420 function disableForms() {
44421 $("form").on("submit", function(e) {
44422 e.preventDefault();
44423 });
44424 }
44425
44426 function parseIntNoNaN(val, defaultVal) {
44427 var v = parseInt(val);
44428 if (isNaN(v)) {
44429 return defaultVal;
44430 }
44431 return v;
44432 }
44433
44434 function showPending() {
44435 DOM.feedback
44436 .text("Calculating...")
44437 .show();
44438 }
44439
44440 function findNearestWord(word) {
44441 var language = getLanguage();
44442 var words = WORDLISTS[language];
44443 var minDistance = 99;
44444 var closestWord = words[0];
44445 for (var i=0; i<words.length; i++) {
44446 var comparedTo = words[i];
44447 if (comparedTo.indexOf(word) == 0) {
44448 return comparedTo;
44449 }
44450 var distance = Levenshtein.get(word, comparedTo);
44451 if (distance < minDistance) {
44452 closestWord = comparedTo;
44453 minDistance = distance;
44454 }
44455 }
44456 return closestWord;
44457 }
44458
44459 function hidePending() {
44460 DOM.feedback
44461 .text("")
44462 .hide();
44463 }
44464
44465 function populateNetworkSelect() {
44466 for (var i=0; i<networks.length; i++) {
44467 var network = networks[i];
44468 var option = $("<option>");
44469 option.attr("value", i);
44470 option.text(network.name);
44471 DOM.phraseNetwork.append(option);
44472 }
44473 }
44474
44475 function populateClientSelect() {
44476 for (var i=0; i<clients.length; i++) {
44477 var client = clients[i];
44478 var option = $("<option>");
44479 option.attr("value", i);
44480 option.text(client.name);
44481 DOM.bip32Client.append(option);
44482 }
44483 }
44484
44485 function getLanguage() {
44486 var defaultLanguage = "english";
44487 // Try to get from existing phrase
44488 var language = getLanguageFromPhrase();
44489 // Try to get from url if not from phrase
44490 if (language.length == 0) {
44491 language = getLanguageFromUrl();
44492 }
44493 // Default to English if no other option
44494 if (language.length == 0) {
44495 language = defaultLanguage;
44496 }
44497 return language;
44498 }
44499
44500 function getLanguageFromPhrase(phrase) {
44501 // Check if how many words from existing phrase match a language.
44502 var language = "";
44503 if (!phrase) {
44504 phrase = DOM.phrase.val();
44505 }
44506 if (phrase.length > 0) {
44507 var words = phraseToWordArray(phrase);
44508 var languageMatches = {};
44509 for (l in WORDLISTS) {
44510 // Track how many words match in this language
44511 languageMatches[l] = 0;
44512 for (var i=0; i<words.length; i++) {
44513 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44514 if (wordInLanguage) {
44515 languageMatches[l]++;
44516 }
44517 }
44518 // Find languages with most word matches.
44519 // This is made difficult due to commonalities between Chinese
44520 // simplified vs traditional.
44521 var mostMatches = 0;
44522 var mostMatchedLanguages = [];
44523 for (var l in languageMatches) {
44524 var numMatches = languageMatches[l];
44525 if (numMatches > mostMatches) {
44526 mostMatches = numMatches;
44527 mostMatchedLanguages = [l];
44528 }
44529 else if (numMatches == mostMatches) {
44530 mostMatchedLanguages.push(l);
44531 }
44532 }
44533 }
44534 if (mostMatchedLanguages.length > 0) {
44535 // Use first language and warn if multiple detected
44536 language = mostMatchedLanguages[0];
44537 if (mostMatchedLanguages.length > 1) {
44538 console.warn("Multiple possible languages");
44539 console.warn(mostMatchedLanguages);
44540 }
44541 }
44542 }
44543 return language;
44544 }
44545
44546 function getLanguageFromUrl() {
44547 for (var language in WORDLISTS) {
44548 if (window.location.hash.indexOf(language) > -1) {
44549 return language;
44550 }
44551 }
44552 return "";
44553 }
44554
44555 function setMnemonicLanguage() {
44556 var language = getLanguage();
44557 // Load the bip39 mnemonic generator for this language if required
44558 if (!(language in mnemonics)) {
44559 mnemonics[language] = new Mnemonic(language);
44560 }
44561 mnemonic = mnemonics[language];
44562 }
44563
44564 function convertPhraseToNewLanguage() {
44565 var oldLanguage = getLanguageFromPhrase();
44566 var newLanguage = getLanguageFromUrl();
44567 var oldPhrase = DOM.phrase.val();
44568 var oldWords = phraseToWordArray(oldPhrase);
44569 var newWords = [];
44570 for (var i=0; i<oldWords.length; i++) {
44571 var oldWord = oldWords[i];
44572 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44573 var newWord = WORDLISTS[newLanguage][index];
44574 newWords.push(newWord);
44575 }
44576 newPhrase = wordArrayToPhrase(newWords);
44577 return newPhrase;
44578 }
44579
44580 // TODO look at jsbip39 - mnemonic.splitWords
44581 function phraseToWordArray(phrase) {
44582 var words = phrase.split(/\s/g);
44583 var noBlanks = [];
44584 for (var i=0; i<words.length; i++) {
44585 var word = words[i];
44586 if (word.length > 0) {
44587 noBlanks.push(word);
44588 }
44589 }
44590 return noBlanks;
44591 }
44592
44593 // TODO look at jsbip39 - mnemonic.joinWords
44594 function wordArrayToPhrase(words) {
44595 var phrase = words.join(" ");
44596 var language = getLanguageFromPhrase(phrase);
44597 if (language == "japanese") {
44598 phrase = words.join("\u3000");
44599 }
44600 return phrase;
44601 }
44602
44603 function isUsingOwnEntropy() {
44604 return DOM.useEntropy.prop("checked");
44605 }
44606
44607 function setMnemonicFromEntropy() {
44608 clearEntropyFeedback();
44609 // Get entropy value
44610 var entropyStr = DOM.entropy.val();
44611 // Work out minimum base for entropy
44612 var entropy = Entropy.fromString(entropyStr);
44613 if (entropy.binaryStr.length == 0) {
44614 return;
44615 }
44616 // Show entropy details
44617 showEntropyFeedback(entropy);
44618 // Use entropy hash if not using raw entropy
44619 var bits = entropy.binaryStr;
44620 var mnemonicLength = DOM.entropyMnemonicLength.val();
44621 if (mnemonicLength != "raw") {
44622 // Get bits by hashing entropy with SHA256
44623 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44624 var hex = sjcl.codec.hex.fromBits(hash);
44625 bits = BigInteger.parse(hex, 16).toString(2);
44626 while (bits.length % 256 != 0) {
44627 bits = "0" + bits;
44628 }
44629 // Truncate hash to suit number of words
44630 mnemonicLength = parseInt(mnemonicLength);
44631 var numberOfBits = 32 * mnemonicLength / 3;
44632 bits = bits.substring(0, numberOfBits);
44633 }
44634 // Discard trailing entropy
44635 var bitsToUse = Math.floor(bits.length / 32) * 32;
44636 var start = bits.length - bitsToUse;
44637 var binaryStr = bits.substring(start);
44638 // Convert entropy string to numeric array
44639 var entropyArr = [];
44640 for (var i=0; i<binaryStr.length / 8; i++) {
44641 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44642 var entropyByte = parseInt(byteAsBits, 2);
44643 entropyArr.push(entropyByte)
44644 }
44645 // Convert entropy array to mnemonic
44646 var phrase = mnemonic.toMnemonic(entropyArr);
44647 // Set the mnemonic in the UI
44648 DOM.phrase.val(phrase);
44649 }
44650
44651 function clearEntropyFeedback() {
44652 DOM.entropyCrackTime.text("...");
44653 DOM.entropyType.text("");
44654 DOM.entropyWordCount.text("0");
44655 DOM.entropyEventCount.text("0");
44656 DOM.entropyBitsPerEvent.text("0");
44657 DOM.entropyBits.text("0");
44658 DOM.entropyFiltered.html("&nbsp;");
44659 DOM.entropyBinary.html("&nbsp;");
44660 }
44661
44662 function showEntropyFeedback(entropy) {
44663 var numberOfBits = entropy.binaryStr.length;
44664 var timeToCrack = "unknown";
44665 try {
44666 var z = zxcvbn(entropy.base.parts.join(""));
44667 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
44668 if (z.feedback.warning != "") {
44669 timeToCrack = timeToCrack + " - " + z.feedback.warning;
44670 };
44671 }
44672 catch (e) {
44673 console.log("Error detecting entropy strength with zxcvbn:");
44674 console.log(e);
44675 }
44676 var entropyTypeStr = getEntropyTypeStr(entropy);
44677 var wordCount = Math.floor(numberOfBits / 32) * 3;
44678 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
44679 DOM.entropyFiltered.html(entropy.cleanHtml);
44680 DOM.entropyType.text(entropyTypeStr);
44681 DOM.entropyCrackTime.text(timeToCrack);
44682 DOM.entropyEventCount.text(entropy.base.ints.length);
44683 DOM.entropyBits.text(numberOfBits);
44684 DOM.entropyWordCount.text(wordCount);
44685 DOM.entropyBinary.text(entropy.binaryStr);
44686 DOM.entropyBitsPerEvent.text(bitsPerEvent);
44687 }
44688
44689 function getEntropyTypeStr(entropy) {
44690 var typeStr = entropy.base.str;
44691 // Add some detail if these are cards
44692 if (entropy.base.asInt == 52) {
44693 var cardDetail = []; // array of message strings
44694 // Detect duplicates
44695 var dupes = [];
44696 var dupeTracker = {};
44697 for (var i=0; i<entropy.base.parts.length; i++) {
44698 var card = entropy.base.parts[i];
44699 var cardUpper = card.toUpperCase();
44700 if (cardUpper in dupeTracker) {
44701 dupes.push(card);
44702 }
44703 dupeTracker[cardUpper] = true;
44704 }
44705 if (dupes.length > 0) {
44706 var dupeWord = "duplicates";
44707 if (dupes.length == 1) {
44708 dupeWord = "duplicate";
44709 }
44710 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44711 if (dupes.length > 3) {
44712 msg += "...";
44713 }
44714 cardDetail.push(msg);
44715 }
44716 // Detect full deck
44717 var uniqueCards = [];
44718 for (var uniqueCard in dupeTracker) {
44719 uniqueCards.push(uniqueCard);
44720 }
44721 if (uniqueCards.length == 52) {
44722 cardDetail.unshift("full deck");
44723 }
44724 // Detect missing cards
44725 var values = "A23456789TJQK";
44726 var suits = "CDHS";
44727 var missingCards = [];
44728 for (var i=0; i<suits.length; i++) {
44729 for (var j=0; j<values.length; j++) {
44730 var card = values[j] + suits[i];
44731 if (!(card in dupeTracker)) {
44732 missingCards.push(card);
44733 }
44734 }
44735 }
44736 // Display missing cards if six or less, ie clearly going for full deck
44737 if (missingCards.length > 0 && missingCards.length <= 6) {
44738 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44739 if (missingCards.length > 3) {
44740 msg += "...";
44741 }
44742 cardDetail.push(msg);
44743 }
44744 // Add card details to typeStr
44745 if (cardDetail.length > 0) {
44746 typeStr += " (" + cardDetail.join(", ") + ")";
44747 }
44748 }
44749 return typeStr;
44750 }
44751
44752 function setQrEvents(els) {
44753 els.on("mouseenter", createQr);
44754 els.on("mouseleave", destroyQr);
44755 els.on("click", toggleQr);
44756 }
44757
44758 function createQr(e) {
44759 var content = e.target.textContent || e.target.value;
44760 if (content) {
44761 var size = 130;
44762 DOM.qrImage.qrcode({width: size, height: size, text: content});
44763 if (!showQr) {
44764 DOM.qrHider.addClass("hidden");
44765 }
44766 else {
44767 DOM.qrHider.removeClass("hidden");
44768 }
44769 DOM.qrContainer.removeClass("hidden");
44770 }
44771 }
44772
44773 function destroyQr() {
44774 DOM.qrImage.text("");
44775 DOM.qrContainer.addClass("hidden");
44776 }
44777
44778 function toggleQr() {
44779 showQr = !showQr;
44780 DOM.qrHider.toggleClass("hidden");
44781 DOM.qrHint.toggleClass("hidden");
44782 }
44783
44784 function bip44TabSelected() {
44785 return DOM.bip44tab.hasClass("active");
44786 }
44787
44788 function bip32TabSelected() {
44789 return DOM.bip32tab.hasClass("active");
44790 }
44791
44792 var networks = [
44793 {
44794 name: "Bitcoin",
44795 onSelect: function() {
44796 network = bitcoin.networks.bitcoin;
44797 DOM.bip44coin.val(0);
44798 },
44799 },
44800 {
44801 name: "Bitcoin Testnet",
44802 onSelect: function() {
44803 network = bitcoin.networks.testnet;
44804 DOM.bip44coin.val(1);
44805 },
44806 },
44807 {
44808 name: "CLAM",
44809 onSelect: function() {
44810 network = bitcoin.networks.clam;
44811 DOM.bip44coin.val(23);
44812 },
44813 },
44814 {
44815 name: "Dogecoin",
44816 onSelect: function() {
44817 network = bitcoin.networks.dogecoin;
44818 DOM.bip44coin.val(3);
44819 },
44820 },
44821 {
44822 name: "DASH",
44823 onSelect: function() {
44824 network = bitcoin.networks.dash;
44825 DOM.bip44coin.val(5);
44826 },
44827 },
44828 {
44829 name: "DASH Testnet",
44830 onSelect: function() {
44831 network = bitcoin.networks.dashtn;
44832 DOM.bip44coin.val(1);
44833 },
44834 },
44835 {
44836 name: "Ethereum",
44837 onSelect: function() {
44838 network = bitcoin.networks.bitcoin;
44839 DOM.bip44coin.val(60);
44840 },
44841 },
44842 {
44843 name: "GAME",
44844 onSelect: function() {
44845 network = bitcoin.networks.game;
44846 DOM.bip44coin.val(101);
44847 },
44848 },
44849 {
44850 name: "Jumbucks",
44851 onSelect: function() {
44852 network = bitcoin.networks.jumbucks;
44853 DOM.bip44coin.val(26);
44854 },
44855 },
44856 {
44857 name: "Litecoin",
44858 onSelect: function() {
44859 network = bitcoin.networks.litecoin;
44860 DOM.bip44coin.val(2);
44861 },
44862 },
44863 {
44864 name: "Namecoin",
44865 onSelect: function() {
44866 network = bitcoin.networks.namecoin;
44867 DOM.bip44coin.val(7);
44868 },
44869 },
44870 {
44871 name: "Peercoin",
44872 onSelect: function() {
44873 network = bitcoin.networks.peercoin;
44874 DOM.bip44coin.val(6);
44875 },
44876 },
44877 {
44878 name: "Ripple",
44879 onSelect: function() {
44880 network = bitcoin.networks.bitcoin;
44881 DOM.bip44coin.val(144);
44882 },
44883 },
44884 {
44885 name: "ShadowCash",
44886 onSelect: function() {
44887 network = bitcoin.networks.shadow;
44888 DOM.bip44coin.val(35);
44889 },
44890 },
44891 {
44892 name: "ShadowCash Testnet",
44893 onSelect: function() {
44894 network = bitcoin.networks.shadowtn;
44895 DOM.bip44coin.val(1);
44896 },
44897 },
44898 {
44899 name: "Slimcoin",
44900 onSelect: function() {
44901 network = bitcoin.networks.slimcoin;
44902 DOM.bip44coin.val(63);
44903 },
44904 },
44905 {
44906 name: "Slimcoin Testnet",
44907 onSelect: function() {
44908 network = bitcoin.networks.slimcointn;
44909 DOM.bip44coin.val(111);
44910 },
44911 },
44912 {
44913 name: "Viacoin",
44914 onSelect: function() {
44915 network = bitcoin.networks.viacoin;
44916 DOM.bip44coin.val(14);
44917 },
44918 },
44919 {
44920 name: "Viacoin Testnet",
44921 onSelect: function() {
44922 network = bitcoin.networks.viacointestnet;
44923 DOM.bip44coin.val(1);
44924 },
44925 },
44926 ]
44927
44928 var clients = [
44929 {
44930 name: "Bitcoin Core",
44931 onSelect: function() {
44932 DOM.bip32path.val("m/0'/0'");
44933 DOM.hardenedAddresses.prop('checked', true);
44934 },
44935 },
44936 {
44937 name: "blockchain.info",
44938 onSelect: function() {
44939 DOM.bip32path.val("m/44'/0'/0'");
44940 DOM.hardenedAddresses.prop('checked', false);
44941 },
44942 },
44943 {
44944 name: "MultiBit HD",
44945 onSelect: function() {
44946 DOM.bip32path.val("m/0'/0");
44947 DOM.hardenedAddresses.prop('checked', false);
44948 },
44949 }
44950 ]
44951
44952 init();
44953
44954 })();
44955 </script>
44956 </body>
44957 </html>