2016-11-28 11:42:58 +01:00
/ * *
* CyberChef - The Cyber Swiss Army Knife
*
* @ copyright Crown Copyright 2016
* @ license Apache - 2.0
*
* Copyright 2016 Crown Copyright
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
"use strict" ; function BigInteger ( a , b , c ) { null != a && ( "number" == typeof a ? this . fromNumber ( a , b , c ) : null == b && "string" != typeof a ? this . fromString ( a , 256 ) : this . fromString ( a , b ) ) } function nbi ( ) { return new BigInteger ( null ) } function am1 ( a , b , c , d , e , f ) { for ( ; -- f >= 0 ; ) { var g = b * this [ a ++ ] + c [ d ] + e ; e = Math . floor ( g / 67108864 ) , c [ d ++ ] = 67108863 & g } return e } function am2 ( a , b , c , d , e , f ) { for ( var g = 32767 & b , h = b >> 15 ; -- f >= 0 ; ) { var i = 32767 & this [ a ] , j = this [ a ++ ] >> 15 , k = h * i + j * g ; i = g * i + ( ( 32767 & k ) << 15 ) + c [ d ] + ( 1073741823 & e ) , e = ( i >>> 30 ) + ( k >>> 15 ) + h * j + ( e >>> 30 ) , c [ d ++ ] = 1073741823 & i } return e } function am3 ( a , b , c , d , e , f ) { for ( var g = 16383 & b , h = b >> 14 ; -- f >= 0 ; ) { var i = 16383 & this [ a ] , j = this [ a ++ ] >> 14 , k = h * i + j * g ; i = g * i + ( ( 16383 & k ) << 14 ) + c [ d ] + e , e = ( i >> 28 ) + ( k >> 14 ) + h * j , c [ d ++ ] = 268435455 & i } return e } function int2char ( a ) { return BI _RM . charAt ( a ) } function intAt ( a , b ) { var c = BI _RC [ a . charCodeAt ( b ) ] ; return null == c ? - 1 : c } function bnpCopyTo ( a ) { for ( var b = this . t - 1 ; b >= 0 ; -- b ) a [ b ] = this [ b ] ; a . t = this . t , a . s = this . s } function bnpFromInt ( a ) { this . t = 1 , this . s = a < 0 ? - 1 : 0 , a > 0 ? this [ 0 ] = a : a < - 1 ? this [ 0 ] = a + this . DV : this . t = 0 } function nbv ( a ) { var b = nbi ( ) ; return b . fromInt ( a ) , b } function bnpFromString ( a , b ) { var c ; if ( 16 == b ) c = 4 ; else if ( 8 == b ) c = 3 ; else if ( 256 == b ) c = 8 ; else if ( 2 == b ) c = 1 ; else if ( 32 == b ) c = 5 ; else { if ( 4 != b ) return void this . fromRadix ( a , b ) ; c = 2 } this . t = 0 , this . s = 0 ; for ( var d = a . length , e = ! 1 , f = 0 ; -- d >= 0 ; ) { var g = 8 == c ? 255 & a [ d ] : intAt ( a , d ) ; g < 0 ? "-" == a . charAt ( d ) && ( e = ! 0 ) : ( e = ! 1 , 0 == f ? this [ this . t ++ ] = g : f + c > this . DB ? ( this [ this . t - 1 ] |= ( g & ( 1 << this . DB - f ) - 1 ) << f , this [ this . t ++ ] = g >> this . DB - f ) : this [ this . t - 1 ] |= g << f , f += c , f >= this . DB && ( f -= this . DB ) ) } 8 == c && 0 != ( 128 & a [ 0 ] ) && ( this . s = - 1 , f > 0 && ( this [ this . t - 1 ] |= ( 1 << this . DB - f ) - 1 << f ) ) , this . clamp ( ) , e && BigInteger . ZERO . subTo ( this , this ) } function bnpClamp ( ) { for ( var a = this . s & this . DM ; this . t > 0 && this [ this . t - 1 ] == a ; ) -- this . t } function bnToString ( a ) { if ( this . s < 0 ) return "-" + this . negate ( ) . toString ( a ) ; var b ; if ( 16 == a ) b = 4 ; else if ( 8 == a ) b = 3 ; else if ( 2 == a ) b = 1 ; else if ( 32 == a ) b = 5 ; else { if ( 4 != a ) return this . toRadix ( a ) ; b = 2 } var c , d = ( 1 << b ) - 1 , e = ! 1 , f = "" , g = this . t , h = this . DB - g * this . DB % b ; if ( g -- > 0 ) for ( h < this . DB && ( c = this [ g ] >> h ) > 0 && ( e = ! 0 , f = int2char ( c ) ) ; g >= 0 ; ) h < b ? ( c = ( this [ g ] & ( 1 << h ) - 1 ) << b - h , c |= this [ -- g ] >> ( h += this . DB - b ) ) : ( c = this [ g ] >> ( h -= b ) & d , h <= 0 && ( h += this . DB , -- g ) ) , c > 0 && ( e = ! 0 ) , e && ( f += int2char ( c ) ) ; return e ? f : "0" } function bnNegate ( ) { var a = nbi ( ) ; return BigInteger . ZERO . subTo ( this , a ) , a } function bnAbs ( ) { return this . s < 0 ? this . negate ( ) : this } function bnCompareTo ( a ) { var b = this . s - a . s ; if ( 0 != b ) return b ; var c = this . t ; if ( b = c - a . t , 0 != b ) return this . s < 0 ? - b : b ; for ( ; -- c >= 0 ; ) if ( 0 != ( b = this [ c ] - a [ c ] ) ) return b ; return 0 } function nbits ( a ) { var b , c = 1 ; return 0 != ( b = a >>> 16 ) && ( a = b , c += 16 ) , 0 != ( b = a >> 8 ) && ( a = b , c += 8 ) , 0 != ( b = a >> 4 ) && ( a = b , c += 4 ) , 0 != ( b = a >> 2 ) && ( a = b , c += 2 ) , 0 != ( b = a >> 1 ) && ( a = b , c += 1 ) , c } function bnBitLength ( ) { return this . t <= 0 ? 0 : this . DB * ( this . t - 1 ) + nbits ( this [ this . t - 1 ] ^ this . s & this . DM ) } function bnpDLShiftTo ( a , b ) { var c ; for ( c = this . t - 1 ; c >= 0 ; -- c ) b [ c + a ] = this [ c ] ; for ( c = a - 1 ; c >= 0 ; -- c ) b [ c ] = 0 ; b . t = this . t + a , b . s = this . s } function bnpDRShiftTo ( a , b ) { for ( var c = a ; c < this . t ; ++ c ) b [ c - a ] = this [ c ] ; b . t = Math . max ( this . t - a , 0 ) , b . s = this . s } function bnpLShiftTo ( a , b ) { var c , d = a % this . DB , e = this . DB - d , f = ( 1 << e ) - 1 , g = Math . floor ( a / this . DB ) , h = this . s << d & this . DM ; for ( c = this . t - 1 ; c >= 0 ; -- c ) b [ c + g + 1 ] = this [ c ] >> e | h , h = ( this [ c ] & f ) << d ; for ( c = g - 1 ; c >= 0 ; -- c ) b [ c ] = 0 ; b [ g ] = h , b . t = this . t + g + 1 , b . s = this . s , b . clamp ( ) } function bnpRShiftTo ( a , b ) { b . s = this . s ; var c = Math . floor ( a / this . DB ) ; if ( c >= this . t ) return void ( b . t = 0 ) ; var d = a % this . DB , e = this . DB - d , f = ( 1 << d ) - 1 ; b [ 0 ] = this [ c ] >> d ; for ( var g = c + 1 ; g < this . t ; ++ g ) b [ g - c - 1 ] |= ( this [ g ] & f ) << e , b [ g - c ] = this [ g ] >> d ; d > 0 && ( b [ this . t - c - 1 ] |= ( this . s & f ) << e ) , b . t = this . t - c , b . clamp ( ) } function bnpSubTo ( a , b ) { for ( var c = 0 , d = 0 , e = Math . min ( a . t , this . t ) ; c < e ; ) d += this [ c ] - a [ c ] , b [ c ++ ] = d & this . DM , d >>= this . DB ; if ( a . t < this . t ) { for ( d -= a . s ; c < this . t ; ) d += this [ c ] , b [ c ++ ] = d & this . DM , d >>= this . DB ; d += this . s } else { for ( d += this . s ; c < a . t ; ) d -= a [ c ] , b [ c ++ ] = d & this . DM , d >>= this . DB ; d -= a . s } b . s = d < 0 ? - 1 : 0 , d < - 1 ? b [ c ++ ] = this . DV + d : d > 0 && ( b [ c ++ ] = d ) , b . t = c , b . clamp ( ) } function bnpMultiplyTo ( a , b ) { var c = this . abs ( ) , d = a . abs ( ) , e = c . t ; for ( b . t = e + d . t ; -- e >= 0 ; ) b [ e ] = 0 ; for ( e = 0 ; e < d . t ; ++ e ) b [ e + c . t ] = c . am ( 0 , d [ e ] , b , e , 0 , c . t ) ; b . s = 0 , b . clamp ( ) , this . s != a . s && BigInteger . ZERO . subTo ( b , b ) } function bnpSquareTo ( a ) { for ( var b = this . abs ( ) , c = a . t = 2 * b . t ; -- c >= 0 ; ) a [ c ] = 0 ; for ( c = 0 ; c < b . t - 1 ; ++ c ) {
=== === === === === === === === === === === === === === === === === === === === === === === ===
The 'jsrsasign' ( RSA - Sign JavaScript Library ) License
Copyright ( c ) 2010 - 2013 Kenji Urushima
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the "Software" ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software .
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 .
* /
function X509 ( ) { this . subjectPublicKeyRSA = null , this . subjectPublicKeyRSA _hN = null , this . subjectPublicKeyRSA _hE = null , this . hex = null , this . getSerialNumberHex = function ( ) { return ASN1HEX . getDecendantHexVByNthList ( this . hex , 0 , [ 0 , 1 ] ) } , this . getIssuerHex = function ( ) { return ASN1HEX . getDecendantHexTLVByNthList ( this . hex , 0 , [ 0 , 3 ] ) } , this . getIssuerString = function ( ) { return X509 . hex2dn ( ASN1HEX . getDecendantHexTLVByNthList ( this . hex , 0 , [ 0 , 3 ] ) ) } , this . getSubjectHex = function ( ) { return ASN1HEX . getDecendantHexTLVByNthList ( this . hex , 0 , [ 0 , 5 ] ) } , this . getSubjectString = function ( ) { return X509 . hex2dn ( ASN1HEX . getDecendantHexTLVByNthList ( this . hex , 0 , [ 0 , 5 ] ) ) } , this . getNotBefore = function ( ) { var a = ASN1HEX . getDecendantHexVByNthList ( this . hex , 0 , [ 0 , 4 , 0 ] ) ; return a = a . replace ( /(..)/g , "%$1" ) , a = decodeURIComponent ( a ) } , this . getNotAfter = function ( ) { var a = ASN1HEX . getDecendantHexVByNthList ( this . hex , 0 , [ 0 , 4 , 1 ] ) ; return a = a . replace ( /(..)/g , "%$1" ) , a = decodeURIComponent ( a ) } , this . readCertPEM = function ( a ) { var b = X509 . pemToHex ( a ) , c = X509 . getPublicKeyHexArrayFromCertHex ( b ) , d = new RSAKey ; d . setPublic ( c [ 0 ] , c [ 1 ] ) , this . subjectPublicKeyRSA = d , this . subjectPublicKeyRSA _hN = c [ 0 ] , this . subjectPublicKeyRSA _hE = c [ 1 ] , this . hex = b } , this . readCertPEMWithoutRSAInit = function ( a ) { var b = X509 . pemToHex ( a ) , c = X509 . getPublicKeyHexArrayFromCertHex ( b ) ; this . subjectPublicKeyRSA . setPublic ( c [ 0 ] , c [ 1 ] ) , this . subjectPublicKeyRSA _hN = c [ 0 ] , this . subjectPublicKeyRSA _hE = c [ 1 ] , this . hex = b } } / * * @ license
=== === === === === === === === === === === === === === === === === === === === === === === ===
Bootstrap v3 . 3.6 ( http : //getbootstrap.com)
Copyright 2011 - 2016 Twitter , Inc .
Licensed under the MIT license
* /
if ( 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 ) { function c ( a ) { var b = a . length , c = _ . type ( a ) ; return "function" !== c && ! _ . isWindow ( a ) && ( ! ( 1 !== a . nodeType || ! b ) || ( "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a ) ) } function d ( a , b , c ) { if ( _ . isFunction ( b ) ) return _ . grep ( a , function ( a , d ) { return ! ! b . call ( a , d , a ) !== c } ) ; if ( b . nodeType ) return _ . grep ( a , function ( a ) { return a === b !== c } ) ; if ( "string" == typeof b ) { if ( ha . test ( b ) ) return _ . filter ( b , a , c ) ; b = _ . filter ( b , a ) } return _ . grep ( a , function ( a ) { return U . call ( b , a ) >= 0 !== c } ) } function e ( a , b ) { for ( ; ( a = a [ b ] ) && 1 !== a . nodeType ; ) ; return a } function f ( a ) { var b = oa [ a ] = { } ; return _ . each ( a . match ( na ) || [ ] , function ( a , c ) { b [ c ] = ! 0 } ) , b } function g ( ) { Z . removeEventListener ( "DOMContentLoaded" , g , ! 1 ) , a . removeEventListener ( "load" , g , ! 1 ) , _ . ready ( ) } function h ( ) { Object . defineProperty ( this . cache = { } , 0 , { get : function ( ) { return { } } } ) , this . expando = _ . expando + Math . random ( ) } function i ( a , b , c ) { var d ; if ( void 0 === c && 1 === a . nodeType ) if ( d = "data-" + b . replace ( ua , "-$1" ) . toLowerCase ( ) , c = a . getAttribute ( d ) , "string" == typeof c ) { try { c = "true" === c || "false" !== c && ( "null" === c ? null : + c + "" === c ? + c : ta . test ( c ) ? _ . parseJSON ( c ) : c ) } catch ( a ) { } sa . set ( a , b , c ) } else c = void 0 ; return c } function j ( ) { return ! 0 } function k ( ) { return ! 1 } function l ( ) { try { return Z . activeElement } catch ( a ) { } } function m ( a , b ) { return _ . nodeName ( a , "table" ) && _ . nodeName ( 11 !== b . nodeType ? b : b . firstChild , "tr" ) ? a . getElementsByTagName ( "tbody" ) [ 0 ] || a . appendChild ( a . ownerDocument . createElement ( "tbody" ) ) : a } function n ( a ) { return a . type = ( null !== a . getAttribute ( "type" ) ) + "/" + a . type , a } function o ( a ) { var b = Ka . exec ( a . type ) ; return b ? a . type = b [ 1 ] : a . removeAttribute ( "type" ) , a } function p ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) ra . set ( a [ c ] , "globalEval" , ! b || ra . get ( b [ c ] , "globalEval" ) ) } function q ( a , b ) { var c , d , e , f , g , h , i , j ; if ( 1 === b . nodeType ) { if ( ra . hasData ( a ) && ( f = ra . access ( a ) , g = ra . set ( b , f ) , j = f . events ) ) { delete g . handle , g . events = { } ; for ( e in j ) for ( c = 0 , d = j [ e ] . length ; c < d ; c ++ ) _ . event . add ( b , e , j [ e ] [ c ] ) } sa . hasData ( a ) && ( h = sa . access ( a ) , i = _ . extend ( { } , h ) , sa . set ( b , i ) ) } } function r ( a , b ) { var c = a . getElementsByTagName ? a . getElementsByTagName ( b || "*" ) : a . querySelectorAll ? a . querySelectorAll ( b || "*" ) : [ ] ; return void 0 === b || b && _ . nodeName ( a , b ) ? _ . merge ( [ a ] , c ) : c } function s ( a , b ) { var c = b . nodeName . toLowerCase ( ) ; "input" === c && ya . test ( a . type ) ? b . checked = a . checked : "input" !== c && "textarea" !== c || ( b . defaultValue = a . defaultValue ) } function t ( b , c ) { var d , e = _ ( c . createElement ( b ) ) . appendTo ( c . body ) , f = a . getDefaultComputedStyle && ( d = a . getDefaultComputedStyle ( e [ 0 ] ) ) ? d . display : _ . css ( e [ 0 ] , "display" ) ; return e . detach ( ) , f } function u ( a ) { var b = Z , c = Oa [ a ] ; return c || ( c = t ( a , b ) , "none" !== c && c || ( Na = ( Na || _ ( "<iframe frameborder='0' width='0' height='0'/>" ) ) . appendTo ( b . documentElement ) , b = Na [ 0 ] . contentDocument , b . write ( ) , b . close ( ) , c = t ( a , b ) , Na . detach ( ) ) , Oa [ a ] = c ) , c } function v ( a , b , c ) { var d , e , f , g , h = a . style ; return c = c || Ra ( a ) , c && ( g = c . getPropertyValue ( b ) || c [ b ] ) , c && ( "" !== g || _ . contains ( a . ownerDocument , a ) || ( g = _ . style ( a , b ) ) , Qa . test ( g ) && Pa . 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 w ( a , b ) { return { get : function ( ) { return a ( ) ? void delete this . get : ( this . get = b ) . apply ( this , arguments ) } } } function x ( a , b ) { if ( b in a ) return b ; for ( var c = b [ 0 ] . toUpperCase ( ) + b . slice ( 1 ) , d = b , e = Xa . length ; e -- ; ) if ( b = Xa [ e ] + c , b in a ) return b ; return d } function y ( a , b , c ) { var d = Ta . exec ( b ) ; return d ? Math . max ( 0 , d [ 1 ] - ( c || 0 ) ) + ( d [ 2 ] || "px" ) : b } function z ( a , b , c , d , e ) { for ( var f = c === ( d ? "border" : "content" ) ? 4 : "width" === b ? 1 : 0 , g = 0 ; f < 4 ; f += 2 ) "margin" === c && ( g += _ . css ( a , c + wa [ f ] , ! 0 , e ) ) , d ? ( "content" === c && ( g -= _ . css ( a , "padding" + wa [ f ] , ! 0 , e ) ) , "margin" !== c && ( g -= _ . css ( a , "border" + wa [ f ] + "Width" , ! 0 , e ) ) ) : ( g += _ . css ( a , "padding" + wa [ f ] , ! 0 , e ) , "padding" !== c && ( g += _ . css ( a , "border" + wa [ f ] + "Width" , ! 0 , e ) ) ) ; return g } function A ( a , b , c ) { var d = ! 0 , e = "width" === b ? a . offsetWidth : a . offsetHeight , f = Ra ( a ) , g = "border-box" === _ . css ( a , "boxSizing" , ! 1 , f ) ; if ( e <= 0 || null == e ) { if ( e = v ( a , b , f ) , ( e < 0 || null == e ) && ( e = a . style [ b ] ) , Qa . test ( e ) ) ret
} ) ) ; for ( b = 0 ; b < c ; b ++ ) _ . find ( a , e [ b ] , d ) ; return d = this . pushStack ( c > 1 ? _ . unique ( d ) : d ) , d . selector = this . selector ? this . selector + " " + a : a , d } , filter : function ( a ) { return this . pushStack ( d ( this , a || [ ] , ! 1 ) ) } , not : function ( a ) { return this . pushStack ( d ( this , a || [ ] , ! 0 ) ) } , is : function ( a ) { return ! ! d ( this , "string" == typeof a && fa . test ( a ) ? _ ( a ) : a || [ ] , ! 1 ) . length } } ) ; var ia , ja = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ , ka = _ . 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 ] : ja . exec ( a ) , ! c || ! c [ 1 ] && b ) return ! b || b . jquery ? ( b || ia ) . find ( a ) : this . constructor ( b ) . find ( a ) ; if ( c [ 1 ] ) { if ( b = b instanceof _ ? b [ 0 ] : b , _ . merge ( this , _ . parseHTML ( c [ 1 ] , b && b . nodeType ? b . ownerDocument || b : Z , ! 0 ) ) , ga . test ( c [ 1 ] ) && _ . isPlainObject ( b ) ) for ( c in b ) _ . isFunction ( this [ c ] ) ? this [ c ] ( b [ c ] ) : this . attr ( c , b [ c ] ) ; return this } return d = Z . getElementById ( c [ 2 ] ) , d && d . parentNode && ( this . length = 1 , this [ 0 ] = d ) , this . context = Z , this . selector = a , this } return a . nodeType ? ( this . context = this [ 0 ] = a , this . length = 1 , this ) : _ . isFunction ( a ) ? "undefined" != typeof ia . ready ? ia . ready ( a ) : a ( _ ) : ( void 0 !== a . selector && ( this . selector = a . selector , this . context = a . context ) , _ . makeArray ( a , this ) ) } ; ka . prototype = _ . fn , ia = _ ( Z ) ; var la = /^(?:parents|prev(?:Until|All))/ , ma = { children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; _ . extend ( { dir : function ( a , b , c ) { for ( var d = [ ] , e = void 0 !== c ; ( a = a [ b ] ) && 9 !== a . nodeType ; ) if ( 1 === a . nodeType ) { if ( e && _ ( 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 } } ) , _ . fn . extend ( { has : function ( a ) { var b = _ ( a , this ) , c = b . length ; return this . filter ( function ( ) { for ( var a = 0 ; a < c ; a ++ ) if ( _ . contains ( this , b [ a ] ) ) return ! 0 } ) } , closest : function ( a , b ) { for ( var c , d = 0 , e = this . length , f = [ ] , g = fa . test ( a ) || "string" != typeof a ? _ ( a , b || this . context ) : 0 ; d < e ; d ++ ) for ( c = this [ d ] ; c && c !== b ; c = c . parentNode ) if ( c . nodeType < 11 && ( g ? g . index ( c ) > - 1 : 1 === c . nodeType && _ . find . matchesSelector ( c , a ) ) ) { f . push ( c ) ; break } return this . pushStack ( f . length > 1 ? _ . unique ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? U . call ( _ ( a ) , this [ 0 ] ) : U . call ( this , a . jquery ? a [ 0 ] : a ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { return this . pushStack ( _ . unique ( _ . merge ( this . get ( ) , _ ( a , b ) ) ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , _ . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return _ . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { return _ . dir ( a , "parentNode" , c ) } , next : function ( a ) { return e ( a , "nextSibling" ) } , prev : function ( a ) { return e ( a , "previousSibling" ) } , nextAll : function ( a ) { return _ . dir ( a , "nextSibling" ) } , prevAll : function ( a ) { return _ . dir ( a , "previousSibling" ) } , nextUntil : function ( a , b , c ) { return _ . dir ( a , "nextSibling" , c ) } , prevUntil : function ( a , b , c ) { return _ . dir ( a , "previousSibling" , c ) } , siblings : function ( a ) { return _ . sibling ( ( a . parentNode || { } ) . firstChild , a ) } , children : function ( a ) { return _ . sibling ( a . firstChild ) } , contents : function ( a ) { return a . contentDocument || _ . merge ( [ ] , a . childNodes ) } } , function ( a , b ) { _ . fn [ a ] = function ( c , d ) { var e = _ . map ( this , b , c ) ; return "Until" !== a . slice ( - 5 ) && ( d = c ) , d && "string" == typeof d && ( e = _ . filter ( d , e ) ) , this . length > 1 && ( ma [ a ] || _ . unique ( e ) , la . test ( a ) && e . reverse ( ) ) , this . pushStack ( e ) } } ) ; var na = /\S+/g , oa = { } ; _ . Callbacks = function ( a ) { a = "string" == typeof a ? oa [ a ] || f ( a ) : _ . extend ( { } , a ) ; var b , c , d , e , g , h , i = [ ] , j = ! a . once && [ ] , k = function ( f ) { for ( b = a . memory && f , c = ! 0 , h = e || 0 , e = 0 , g = i . length , d = ! 0 ; i && h < g ; h ++ ) if ( i [ h ] . apply ( f [ 0 ] , f [ 1 ] ) === ! 1 && a . stopOnFalse ) { b = ! 1 ; break } d = ! 1 , i && ( j ? j . length && k ( j . shift ( ) ) : b ? i = [ ] : l . disable ( ) ) } , l = { add : function ( ) { if ( i ) { var c = i . length ; ! function b ( c ) { _ . each ( c , function ( c , d ) { var e = _ . type ( d ) ; "function" === e ? a . unique && l . has ( d ) || i . push ( d ) : d && d . length && "string" !== e && b ( d ) } ) } ( arguments ) , d ? g = i . length : b && ( e = c , k ( b ) ) } return this } , remove : function ( ) { return i && _ . each ( arguments , function ( a , b ) { for ( var c ; ( c = _ . inArray ( b , i , c ) ) > - 1 ; ) i . splice ( c , 1 ) , d && ( c <= g && g -- , c <= h && h -- ) } ) , this } , has : function ( a ) { return a ? _ . inArray ( a , i ) > - 1 : ! ( ! i || ! i . length ) } , empty : function ( ) { return i = [ ] , g = 0 , this } , disable : function ( ) { return i = j = b = void 0 , this } , disabled : function ( ) { return ! i } , lock : function ( ) { return j = void 0 , b || l
_ . fn [ b ] = function ( a , d , e ) { return null == a || "boolean" == typeof a ? c . apply ( this , arguments ) : this . animate ( E ( b , ! 0 ) , a , d , e ) } } ) , _ . each ( { slideDown : E ( "show" ) , slideUp : E ( "hide" ) , slideToggle : E ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( a , b ) { _ . fn [ a ] = function ( a , c , d ) { return this . animate ( b , a , c , d ) } } ) , _ . timers = [ ] , _ . fx . tick = function ( ) { var a , b = 0 , c = _ . timers ; for ( Ya = _ . now ( ) ; b < c . length ; b ++ ) a = c [ b ] , a ( ) || c [ b ] !== a || c . splice ( b -- , 1 ) ; c . length || _ . fx . stop ( ) , Ya = void 0 } , _ . fx . timer = function ( a ) { _ . timers . push ( a ) , a ( ) ? _ . fx . start ( ) : _ . timers . pop ( ) } , _ . fx . interval = 13 , _ . fx . start = function ( ) { Za || ( Za = setInterval ( _ . fx . tick , _ . fx . interval ) ) } , _ . fx . stop = function ( ) { clearInterval ( Za ) , Za = null } , _ . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , _ . fn . delay = function ( a , b ) { return a = _ . fx ? _ . 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 = Z . createElement ( "input" ) , b = Z . createElement ( "select" ) , c = b . appendChild ( Z . createElement ( "option" ) ) ; a . type = "checkbox" , Y . checkOn = "" !== a . value , Y . optSelected = c . selected , b . disabled = ! 0 , Y . optDisabled = ! c . disabled , a = Z . createElement ( "input" ) , a . value = "t" , a . type = "radio" , Y . radioValue = "t" === a . value } ( ) ; var db , eb , fb = _ . expr . attrHandle ; _ . fn . extend ( { attr : function ( a , b ) { return qa ( this , _ . attr , a , b , arguments . length > 1 ) } , removeAttr : function ( a ) { return this . each ( function ( ) { _ . removeAttr ( this , a ) } ) } } ) , _ . extend ( { attr : function ( a , b , c ) { var d , e , f = a . nodeType ; if ( a && 3 !== f && 8 !== f && 2 !== f ) return typeof a . getAttribute === za ? _ . prop ( a , b , c ) : ( 1 === f && _ . isXMLDoc ( a ) || ( b = b . toLowerCase ( ) , d = _ . attrHooks [ b ] || ( _ . expr . match . bool . test ( b ) ? eb : db ) ) , void 0 === c ? d && "get" in d && null !== ( e = d . get ( a , b ) ) ? e : ( e = _ . 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 _ . removeAttr ( a , b ) ) } , removeAttr : function ( a , b ) { var c , d , e = 0 , f = b && b . match ( na ) ; if ( f && 1 === a . nodeType ) for ( ; c = f [ e ++ ] ; ) d = _ . propFix [ c ] || c , _ . expr . match . bool . test ( c ) && ( a [ d ] = ! 1 ) , a . removeAttribute ( c ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! Y . radioValue && "radio" === b && _ . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } } ) , eb = { set : function ( a , b , c ) { return b === ! 1 ? _ . removeAttr ( a , c ) : a . setAttribute ( c , c ) , c } } , _ . each ( _ . expr . match . bool . source . match ( /\w+/g ) , function ( a , b ) { var c = fb [ b ] || _ . find . attr ; fb [ b ] = function ( a , b , d ) { var e , f ; return d || ( f = fb [ b ] , fb [ b ] = e , e = null != c ( a , b , d ) ? b . toLowerCase ( ) : null , fb [ b ] = f ) , e } } ) ; var gb = /^(?:input|select|textarea|button)$/i ; _ . fn . extend ( { prop : function ( a , b ) { return qa ( this , _ . prop , a , b , arguments . length > 1 ) } , removeProp : function ( a ) { return this . each ( function ( ) { delete this [ _ . propFix [ a ] || a ] } ) } } ) , _ . 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 || ! _ . isXMLDoc ( a ) , f && ( b = _ . propFix [ b ] || b , e = _ . 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" ) || gb . test ( a . nodeName ) || a . href ? a . tabIndex : - 1 } } } } ) , Y . optSelected || ( _ . propHooks . selected = { get : function ( a ) { var b = a . parentNode ; return b && b . parentNode && b . parentNode . selectedIndex , null } } ) , _ . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { _ . propFix [ this . toLowerCase ( ) ] = this } ) ; var hb = /[\t\r\n\f]/g ; _ . fn . extend ( { addClass : function ( a ) { var b , c , d , e , f , g , h = "string" == typeof a && a , i = 0 , j = this . length ; if ( _ . isFunction ( a ) ) return this . each ( function ( b ) { _ ( this ) . addClass ( a . call ( this , b , this . className ) ) } ) ; if ( h ) for ( b = ( a || "" ) . match ( na ) || [ ] ; i < j ; i ++ ) if ( c = this [ i ] , d = 1 === c . nodeType && ( c . className ? ( " " + c . className + " " ) . replace ( hb , " " ) : " " ) ) { for ( f = 0 ; e = b [ f ++ ] ; ) d . indexOf ( " " + e + " " ) < 0 && ( d += e + " " ) ; g = _ . 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 ( _ . isFunction ( a ) ) return this . each ( function ( b ) { _ ( this ) . removeClass ( a . call ( this , b , this . className ) ) } ) ; if ( h ) for ( b = ( a || "" ) . match ( na ) || [ ] ; i < j ; i ++ ) if ( c = this [ i ] , d = 1 === c . nodeType && ( c . className ? ( " " + c . className + "
a ( b ) . on ( "click.bs.dropdown" , this . toggle ) } ; g . VERSION = "3.3.6" , g . prototype . toggle = function ( d ) { var e = a ( this ) ; if ( ! e . is ( ".disabled, :disabled" ) ) { var f = b ( e ) , g = f . hasClass ( "open" ) ; if ( c ( ) , ! g ) { "ontouchstart" in document . documentElement && ! f . closest ( ".navbar-nav" ) . length && a ( document . createElement ( "div" ) ) . addClass ( "dropdown-backdrop" ) . insertAfter ( a ( this ) ) . on ( "click" , c ) ; var h = { relatedTarget : this } ; if ( f . trigger ( d = a . Event ( "show.bs.dropdown" , h ) ) , d . isDefaultPrevented ( ) ) return ; e . trigger ( "focus" ) . attr ( "aria-expanded" , "true" ) , f . toggleClass ( "open" ) . trigger ( a . Event ( "shown.bs.dropdown" , h ) ) } return ! 1 } } , g . prototype . keydown = function ( c ) { if ( /(38|40|27|32)/ . test ( c . which ) && ! /input|textarea/i . test ( c . target . tagName ) ) { var d = a ( this ) ; if ( c . preventDefault ( ) , c . stopPropagation ( ) , ! d . is ( ".disabled, :disabled" ) ) { var e = b ( d ) , g = e . hasClass ( "open" ) ; if ( ! g && 27 != c . which || g && 27 == c . which ) return 27 == c . which && e . find ( f ) . trigger ( "focus" ) , d . trigger ( "click" ) ; var h = " li:not(.disabled):visible a" , i = e . find ( ".dropdown-menu" + h ) ; if ( i . length ) { var j = i . index ( c . target ) ; 38 == c . which && j > 0 && j -- , 40 == c . which && 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" , c ) . 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 , g . prototype . keydown ) . on ( "keydown.bs.dropdown.data-api" , ".dropdown-menu" , g . prototype . keydown ) } ( jQuery ) , + function ( a ) { 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 . $dialog = this . $element . find ( ".modal-dialog" ) , this . $backdrop = null , this . isShown = null , this . originalBodyPad = null , this . scrollbarWidth = 0 , this . ignoreBackdropClick = ! 1 , 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.3.6" , c . TRANSITION _DURATION = 300 , c . BACKDROP _TRANSITION _DURATION = 150 , 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 d = this , e = a . Event ( "show.bs.modal" , { relatedTarget : b } ) ; this . $element . trigger ( e ) , this . isShown || e . isDefaultPrevented ( ) || ( this . isShown = ! 0 , this . checkScrollbar ( ) , this . setScrollbar ( ) , this . $body . addClass ( "modal-open" ) , this . escape ( ) , this . resize ( ) , this . $element . on ( "click.dismiss.bs.modal" , '[data-dismiss="modal"]' , a . proxy ( this . hide , this ) ) , this . $dialog . on ( "mousedown.dismiss.bs.modal" , function ( ) { d . $element . one ( "mouseup.dismiss.bs.modal" , function ( b ) { a ( b . target ) . is ( d . $element ) && ( d . ignoreBackdropClick = ! 0 ) } ) } ) , this . backdrop ( function ( ) { var e = a . support . transition && d . $element . hasClass ( "fade" ) ; d . $element . parent ( ) . length || d . $element . appendTo ( d . $body ) , d . $element . show ( ) . scrollTop ( 0 ) , d . adjustDialog ( ) , e && d . $element [ 0 ] . offsetWidth , d . $element . addClass ( "in" ) , d . enforceFocus ( ) ; var f = a . Event ( "shown.bs.modal" , { relatedTarget : b } ) ; e ? d . $dialog . one ( "bsTransitionEnd" , function ( ) { d . $element . trigger ( "focus" ) . trigger ( f ) } ) . emulateTransitionEnd ( c . TRANSITION _DURATION ) : d . $element . trigger ( "focus" ) . trigger ( f ) } ) ) } , 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 . escape ( ) , this . resize ( ) , a ( document ) . off ( "focusin.bs.modal" ) , this . $element . removeClass ( "in" ) . off ( "click.dismiss.bs.modal" ) . off ( "mouseup.dismiss.bs.modal" ) , this . $dialog . off ( "mousedown.dismiss.bs.modal" ) , a . support . transition && this . $element . hasClass ( "fade" ) ? this . $element . one ( "bsTransitionEnd" , a . proxy ( this . hideModal , this ) ) . emulateTransitionEnd ( c . TRANSITION _DURATION ) : this . hideModal ( ) ) } , c . prototype . enforceFocus = function ( ) { a ( document ) . off ( "focusin.bs.modal" ) . on ( "focusin.bs.modal" , a . proxy ( function ( a ) { document === a . target || this . $element [ 0
=== === === === === === === === === === === === === === === === === === === === === === === ===
bootstrap - switch - v3 . 1.0
http : //www.bootstrap-switch.org
Copyright 2012 - 2013 Mattia Larentis
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
function ( ) { var a = [ ] . slice ; ! function ( b , c ) { var d ; return d = function ( ) { function a ( a , c ) { null == c && ( c = { } ) , this . $element = b ( a ) , this . options = b . extend ( { } , b . fn . bootstrapSwitch . defaults , { state : this . $element . is ( ":checked" ) , size : this . $element . data ( "size" ) , animate : this . $element . data ( "animate" ) , disabled : this . $element . is ( ":disabled" ) , readonly : this . $element . is ( "[readonly]" ) , indeterminate : this . $element . data ( "indeterminate" ) , inverse : this . $element . data ( "inverse" ) , radioAllOff : this . $element . data ( "radio-all-off" ) , onColor : this . $element . data ( "on-color" ) , offColor : this . $element . data ( "off-color" ) , onText : this . $element . data ( "on-text" ) , offText : this . $element . data ( "off-text" ) , labelText : this . $element . data ( "label-text" ) , baseClass : this . $element . data ( "base-class" ) , wrapperClass : this . $element . data ( "wrapper-class" ) } , c ) , this . $wrapper = b ( "<div>" , { class : function ( a ) { return function ( ) { var b ; return b = [ "" + a . options . baseClass ] . concat ( a . _getClasses ( a . options . wrapperClass ) ) , b . push ( a . options . state ? "" + a . options . baseClass + "-on" : "" + a . options . baseClass + "-off" ) , null != a . options . size && b . push ( "" + a . options . baseClass + "-" + a . options . size ) , a . options . animate && b . push ( "" + a . options . baseClass + "-animate" ) , a . options . disabled && b . push ( "" + a . options . baseClass + "-disabled" ) , a . options . readonly && b . push ( "" + a . options . baseClass + "-readonly" ) , a . options . indeterminate && b . push ( "" + a . options . baseClass + "-indeterminate" ) , a . options . inverse && b . push ( "" + a . options . baseClass + "-inverse" ) , a . $element . attr ( "id" ) && b . push ( "" + a . options . baseClass + "-id-" + a . $element . attr ( "id" ) ) , b . join ( " " ) } } ( this ) ( ) } ) , this . $container = b ( "<div>" , { class : "" + this . options . baseClass + "-container" } ) , this . $on = b ( "<span>" , { html : this . options . onText , class : "" + this . options . baseClass + "-handle-on " + this . options . baseClass + "-" + this . options . onColor } ) , this . $off = b ( "<span>" , { html : this . options . offText , class : "" + this . options . baseClass + "-handle-off " + this . options . baseClass + "-" + this . options . offColor } ) , this . $label = b ( "<label>" , { html : this . options . labelText , class : "" + this . options . baseClass + "-label" } ) , this . options . indeterminate && this . $element . prop ( "indeterminate" , ! 0 ) , this . $element . on ( "init.bootstrapSwitch" , function ( b ) { return function ( ) { return b . options . onInit . apply ( a , arguments ) } } ( this ) ) , this . $element . on ( "switchChange.bootstrapSwitch" , function ( b ) { return function ( ) { return b . options . onSwitchChange . apply ( a , arguments ) } } ( this ) ) , this . $container = this . $element . wrap ( this . $container ) . parent ( ) , this . $wrapper = this . $container . wrap ( this . $wrapper ) . parent ( ) , this . $element . before ( this . options . inverse ? this . $off : this . $on ) . before ( this . $label ) . before ( this . options . inverse ? this . $on : this . $off ) . trigger ( "init.bootstrapSwitch" ) , this . _elementHandlers ( ) , this . _handleHandlers ( ) , this . _labelHandlers ( ) , this . _formHandler ( ) } return a . prototype . _constructor = a , a . prototype . state = function ( a , b ) { return "undefined" == typeof a ? this . options . state : this . options . disabled || this . options . readonly ? this . $element : this . options . state && ! this . options . radioAllOff && this . $element . is ( ":radio" ) ? this . $element : ( this . options . indeterminate ? ( this . indeterminate ( ! 1 ) , a = ! 0 ) : a = ! ! a , this . $element . prop ( "checked" , a ) . trigger ( "change.bootstrapSwitch" , b ) , this . $element ) } , a . prototype . toggleState = function ( a ) { return this . options . disabled || this . options . readonly ? this . $element : this . options . indeterminate ? ( this . indeterminate ( ! 1 ) , this . state ( ! 0 ) ) : this . $element . prop ( "checked" , ! this . options . state ) . trigger ( "change.bootstrapSwitch" , a ) } , a . prototype . size = function ( a ) { return "undefined" == typeof a ? this . options . size : ( null != this . options . size && this . $wrapper . removeClass ( "" + this . options . baseClass + "-" + this . options . size ) , a && this . $wrapper . addClass ( "" + this . options . baseClass + "-" + a ) , this . options . size = a , this . $element ) } , a . prototype . animate = function ( a ) { return "undefined" == typeof a ? this . options . animate : ( a = ! ! a , this . $wrapper [ a ? "addClass" : "removeClass" ] ( "" + this . options . baseClass + "-animate" ) , this . options . animate = a , this . $element ) } , a . prototype . toggleAnimate = function ( ) { return this . $wrapper . toggleClass ( "" + this . options . baseClass + "-animate" ) , this . options . animate = ! this . options . animate , this . $element } , a . prototype . disabled = function ( a ) { return "undefined" == typeof a ? this . options . disabled : ( a = ! ! a , this . $wrapper [ a ? " addCl
=== === === === === === === === === === === === === === === === === === === === === === === ===
Copyright ( c ) 2011 , Yahoo ! Inc . All rights reserved .
Code licensed under the BSD License :
http : //developer.yahoo.com/yui/license.html
version : 2.9 . 0
* /
var typeof _yahoo = typeof YAHOO ; if ( "undefined" == typeof _yahoo || ! YAHOO ) var YAHOO = { } ; YAHOO . namespace = function ( ) { var a , b , c , d = arguments , e = null ; for ( a = 0 ; a < d . length ; a += 1 ) for ( c = ( "" + d [ a ] ) . split ( "." ) , e = YAHOO , b = "YAHOO" == c [ 0 ] ? 1 : 0 ; b < c . length ; b += 1 ) e [ c [ b ] ] = e [ c [ b ] ] || { } , e = e [ c [ b ] ] ; return e } , YAHOO . log = function ( a , b , c ) { var d = YAHOO . widget . Logger ; return ! ( ! d || ! d . log ) && d . log ( a , b , c ) } , YAHOO . register = function ( a , b , c ) { var d , e , f , g , h , i = YAHOO . env . modules ; for ( i [ a ] || ( i [ a ] = { versions : [ ] , builds : [ ] } ) , d = i [ a ] , e = c . version , f = c . build , g = YAHOO . env . listeners , d . name = a , d . version = e , d . build = f , d . versions . push ( e ) , d . builds . push ( f ) , d . mainClass = b , h = 0 ; h < g . length ; h += 1 ) g [ h ] ( d ) ; b ? ( b . VERSION = e , b . BUILD = f ) : YAHOO . log ( "mainClass is undefined for module " + a , "warn" ) } , YAHOO . env = YAHOO . env || { modules : [ ] , listeners : [ ] } , YAHOO . env . getVersion = function ( a ) { return YAHOO . env . modules [ a ] || null } , YAHOO . env . parseUA = function ( a ) { var b , c = function ( a ) { var b = 0 ; return parseFloat ( a . replace ( /\./g , function ( ) { return 1 == b ++ ? "" : "." } ) ) } , d = navigator , e = { ie : 0 , opera : 0 , gecko : 0 , webkit : 0 , chrome : 0 , mobile : null , air : 0 , ipad : 0 , iphone : 0 , ipod : 0 , ios : null , android : 0 , webos : 0 , caja : d && d . cajaVersion , secure : ! 1 , os : null } , f = a || navigator && navigator . userAgent , g = window && window . location , h = g && g . href ; return e . secure = h && 0 === h . toLowerCase ( ) . indexOf ( "https" ) , f && ( /windows|win32/i . test ( f ) ? e . os = "windows" : /macintosh/i . test ( f ) ? e . os = "macintosh" : /rhino/i . test ( f ) && ( e . os = "rhino" ) , /KHTML/ . test ( f ) && ( e . webkit = 1 ) , b = f . match ( /AppleWebKit\/([^\s]*)/ ) , b && b [ 1 ] && ( e . webkit = c ( b [ 1 ] ) , / Mobile\// . test ( f ) ? ( e . mobile = "Apple" , b = f . match ( /OS ([^\s]*)/ ) , b && b [ 1 ] && ( b = c ( b [ 1 ] . replace ( "_" , "." ) ) ) , e . ios = b , e . ipad = e . ipod = e . iphone = 0 , b = f . match ( /iPad|iPod|iPhone/ ) , b && b [ 0 ] && ( e [ b [ 0 ] . toLowerCase ( ) ] = e . ios ) ) : ( b = f . match ( /NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/ ) , b && ( e . mobile = b [ 0 ] ) , /webOS/ . test ( f ) && ( e . mobile = "WebOS" , b = f . match ( /webOS\/([^\s]*);/ ) , b && b [ 1 ] && ( e . webos = c ( b [ 1 ] ) ) ) , / Android/ . test ( f ) && ( e . mobile = "Android" , b = f . match ( /Android ([^\s]*);/ ) , b && b [ 1 ] && ( e . android = c ( b [ 1 ] ) ) ) ) , b = f . match ( /Chrome\/([^\s]*)/ ) , b && b [ 1 ] ? e . chrome = c ( b [ 1 ] ) : ( b = f . match ( /AdobeAIR\/([^\s]*)/ ) , b && ( e . air = b [ 0 ] ) ) ) , e . webkit || ( b = f . match ( /Opera[\s\/]([^\s]*)/ ) , b && b [ 1 ] ? ( e . opera = c ( b [ 1 ] ) , b = f . match ( /Version\/([^\s]*)/ ) , b && b [ 1 ] && ( e . opera = c ( b [ 1 ] ) ) , b = f . match ( /Opera Mini[^;]*/ ) , b && ( e . mobile = b [ 0 ] ) ) : ( b = f . match ( /MSIE\s([^;]*)/ ) , b && b [ 1 ] ? e . ie = c ( b [ 1 ] ) : ( b = f . match ( /Gecko\/([^\s]*)/ ) , b && ( e . gecko = 1 , b = f . match ( /rv:([^\s\)]*)/ ) , b && b [ 1 ] && ( e . gecko = c ( b [ 1 ] ) ) ) ) ) ) ) , e } , YAHOO . env . ua = YAHOO . env . parseUA ( ) , function ( ) { if ( YAHOO . namespace ( "util" , "widget" , "example" ) , "undefined" != typeof YAHOO _config ) { var a , b = YAHOO _config . listener , c = YAHOO . env . listeners , d = ! 0 ; if ( b ) { for ( a = 0 ; a < c . length ; a ++ ) if ( c [ a ] == b ) { d = ! 1 ; break } d && c . push ( b ) } } } ( ) , YAHOO . lang = YAHOO . lang || { } , function ( ) { var a = YAHOO . lang , b = Object . prototype , c = "[object Array]" , d = "[object Function]" , e = "[object Object]" , f = [ ] , g = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ , "'" : "'" , "/" : "/" , "`" : "`" } , h = [ "toString" , "valueOf" ] , i = { isArray : function ( a ) { return b . toString . apply ( a ) === c } , isBoolean : function ( a ) { return "boolean" == typeof a } , isFunction : function ( a ) { return "function" == typeof a || b . toString . apply ( a ) === d } , isNull : function ( a ) { return null === a } , isNumber : function ( a ) { return "number" == typeof a && isFinite ( a ) } , isObject : function ( b ) { return b && ( "object" == typeof b || a . isFunction ( b ) ) || ! 1 } , isString : function ( a ) { return "string" == typeof a } , isUndefined : function ( a ) { return "undefined" == typeof a } , _IEEnumFix : YAHOO . env . ua . ie ? function ( c , d ) { var e , f , g ; for ( e = 0 ; e < h . length ; e += 1 ) f = h [ e ] , g = d [ f ] , a . isFunction ( g ) && g != b [ f ] && ( c [ f ] = g ) } : function ( ) { } , escapeHTML : function ( a ) { return a . replace ( /[&<>"'\/`]/g , function ( a ) { return g [ a ] } ) } , extend : function ( c , d , e ) { if ( ! d || ! c ) throw new Error ( "extend failed, please check that all dependencies are included." ) ; var f , g = function ( ) { } ; if ( g . prototype = d . prototype , c . prototype = new g , c . prototype . constructor = c , c . superclass = d . prototype , d . prototype . constructor == b . constructor && ( d . prototype . constructor = d ) , e ) { for ( f in e ) a . hasOwnProperty ( e , f ) && ( c . prototype [ f ] = e [ f ] ) ; a . _IEEnumFix ( c . prototype , e ) } } , augmentObject : function ( b , c ) { if ( ! c || ! b ) throw new Error ( "Absorb failed, verify dependencies." ) ; var d , e , f = arguments , g = f [ 2 ] ; if ( g && g !== ! 0 ) for ( d = 2 ; d < f . length ; d += 1 ) b [ f [ d ] ] = c [ f [
=== === === === === === === === === === === === === === === === === === === === === === === ===
Snowfall jquery plugin version 1.51 Dec 2 nd 2012
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
Developed by Jason Brown for any bugs or questions email me at loktar69 @ hotmail
info on the plugin is located on Somethinghitme . com
* /
Date . now || ( Date . now = function ( ) { return ( new Date ) . getTime ( ) } ) , function ( ) { for ( var a = [ "webkit" , "moz" ] , b = 0 ; b < a . length && ! window . requestAnimationFrame ; ++ b ) { var c = a [ b ] ; window . requestAnimationFrame = window [ c + "RequestAnimationFrame" ] , window . cancelAnimationFrame = window [ c + "CancelAnimationFrame" ] || window [ c + "CancelRequestAnimationFrame" ] } if ( /iP(ad|hone|od).*OS 6/ . test ( window . navigator . userAgent ) || ! window . requestAnimationFrame || ! window . cancelAnimationFrame ) { var d = 0 ; window . requestAnimationFrame = function ( a ) { var b = Date . now ( ) , c = Math . max ( d + 16 , b ) ; return setTimeout ( function ( ) { a ( d = c ) } , c - b ) } , window . cancelAnimationFrame = clearTimeout } } ( ) , function ( a ) { a . snowfall = function ( b , c ) { function d ( d , e , f , g ) { this . x = d , this . y = e , this . size = f , this . speed = g , this . step = 0 , this . stepSize = h ( 1 , 10 ) / 100 , c . collection && ( this . target = o [ h ( 0 , o . length - 1 ) ] ) ; var i = null ; c . image ? ( i = document . createElement ( "img" ) , i . src = c . image ) : ( i = document . createElement ( "div" ) , a ( i ) . css ( { background : c . flakeColor } ) ) , a ( i ) . attr ( { class : "snowfall-flakes" } ) . css ( { width : this . size , height : this . size , position : c . flakePosition , top : this . y , left : this . x , fontSize : 0 , zIndex : c . flakeIndex } ) , a ( b ) . get ( 0 ) . tagName === a ( document ) . get ( 0 ) . tagName ? ( a ( "body" ) . append ( a ( i ) ) , b = a ( "body" ) ) : a ( b ) . append ( a ( i ) ) , this . element = i , this . update = function ( ) { if ( this . y += this . speed , this . y > j - ( this . size + 6 ) && this . reset ( ) , this . element . style . top = this . y + "px" , this . element . style . left = this . x + "px" , this . step += this . stepSize , v === ! 1 ? this . x += Math . cos ( this . step ) : this . x += v + Math . cos ( this . step ) , c . collection && this . x > this . target . x && this . x < this . target . width + this . target . x && this . y > this . target . y && this . y < this . target . height + this . target . y ) { var a = this . target . element . getContext ( "2d" ) , b = this . x - this . target . x , d = this . y - this . target . y , e = this . target . colData ; if ( void 0 !== e [ parseInt ( b ) ] [ parseInt ( d + this . speed + this . size ) ] || d + this . speed + this . size > this . target . height ) if ( d + this . speed + this . size > this . target . height ) { for ( ; d + this . speed + this . size > this . target . height && this . speed > 0 ; ) this . speed *= . 5 ; a . fillStyle = "#fff" , a . shadowOffsetX = 1 , a . shadowOffsetY = 1 , a . shadowColor = "#000" , a . shadowBlur = 1 , void 0 == e [ parseInt ( b ) ] [ parseInt ( d + this . speed + this . size ) ] ? ( e [ parseInt ( b ) ] [ parseInt ( d + this . speed + this . size ) ] = 1 , a . beginPath ( ) , a . arc ( b , d + this . speed + this . size , this . size / 2 , 0 , 2 * Math . PI , ! 0 ) , a . closePath ( ) , a . fill ( ) ) : ( e [ parseInt ( b ) ] [ parseInt ( d + this . speed ) ] = 1 , a . beginPath ( ) , a . arc ( b , d + this . speed + this . size , this . size , 0 , 2 * Math . PI , ! 0 ) , a . closePath ( ) , a . fill ( ) ) , this . reset ( ) } else this . speed = 1 , this . stepSize = 0 , parseInt ( b ) + 1 < this . target . width && void 0 == e [ parseInt ( b ) + 1 ] [ parseInt ( d ) + 1 ] ? this . x ++ : parseInt ( b ) - 1 > 0 && void 0 == e [ parseInt ( b ) - 1 ] [ parseInt ( d ) + 1 ] ? this . x -- : ( a . fillStyle = "#fff" , a . shadowOffsetX = - 4 , a . shadowOffsetY = - 4 , a . shadowColor = "#000" , a . shadowBlur = 4 , a . beginPath ( ) , a . arc ( b , d + this . speed + this . size , this . size , 0 , 2 * Math . PI , ! 0 ) , a . closePath ( ) , a . fill ( ) , e [ parseInt ( b ) ] [ parseInt ( d ) ] = 1 , this . reset ( ) ) } ( this . x + this . size > k - l || this . x < l ) && this . reset ( ) } , this . reset = function ( ) { this . y = 0 , this . x = h ( l , k - l ) , this . stepSize = h ( 1 , 10 ) / 100 , this . size = h ( 100 * c . minSize , 100 * c . maxSize ) / 100 , this . element . style . width = this . size + "px" , this . element . style . height = this . size + "px" , this . speed = h ( c . minSpeed , c . maxSpeed ) } } function e ( ) { for ( i = 0 ; i < f . length ; i += 1 ) f [ i ] . update ( ) ; m = requestAnimationFrame ( function ( ) { e ( ) } ) } var f = [ ] , g = { flakeCount : 35 , flakeColor : "#ffffff" , flakePosition : "absolute" , flakeIndex : 999999 , minSize : 1 , maxSize : 2 , minSpeed : 1 , maxSpeed : 5 , round : ! 1 , shadow : ! 1 , collection : ! 1 , collectionHeight : 40 , deviceorientation : ! 1 } , c = a . extend ( g , c ) , h = function ( a , b ) { return Math . round ( a + Math . random ( ) * ( b - a ) ) } ; a ( b ) . data ( "snowfall" , this ) ; var i = 0 , j = a ( b ) . height ( ) , k = a ( b ) . width ( ) , l = 0 , m = 0 ; if ( c . collection !== ! 1 ) { var n = document . createElement ( "canvas" ) ; if ( n . getContext && n . getContext ( "2d" ) ) for ( var o = [ ] , p = a ( c . collection ) , q = c . collectionHeight , i = 0 ; i < p . length ; i ++ ) { var r = p [ i ] . getBoundingClientRect ( ) , s = a ( "<canvas/>" , { class : "snowfall-canvas" } ) , t = [ ] ; if ( r . top - q > 0 ) { a ( "body" ) . append ( s ) , s . css ( { position : c . flakePosition , left : r . left + "px" , top : r . top - q + "px" } ) . prop ( { width : r . width , height : q } ) ; for ( var u = 0 ; u < r . width ; u ++ ) t [ u ] = [ ] ; o . push ( { element : s . get ( 0 ) , x : r . left , y : r . top - q , width : r . width , height : q , colData : t } ) } } else c . collection = ! 1 } for ( a ( b ) . get ( 0 ) . tagName === a ( document ) . get ( 0 ) . ta
=== === === === === === === === === === === === === === === === === === === === === === === ===
CryptoJS v3 . 1.2
code . google . com / p / crypto - js
( c ) 2009 - 2013 by Jeff Mott . All rights reserved .
code . google . com / p / crypto - js / wiki / License
* /
var CryptoJS = CryptoJS || function ( a , b ) { var c = { } , d = c . lib = { } , e = d . Base = function ( ) { function a ( ) { } return { extend : function ( b ) { a . prototype = this ; var c = new a ; return b && c . mixIn ( b ) , c . hasOwnProperty ( "init" ) || ( c . init = function ( ) { c . $super . init . apply ( this , arguments ) } ) , c . init . prototype = c , c . $super = this , c } , create : function ( ) { var a = this . extend ( ) ; return a . init . apply ( a , arguments ) , a } , init : function ( ) { } , mixIn : function ( a ) { for ( var b in a ) a . hasOwnProperty ( b ) && ( this [ b ] = a [ b ] ) ; a . hasOwnProperty ( "toString" ) && ( this . toString = a . toString ) } , clone : function ( ) { return this . init . prototype . extend ( this ) } } } ( ) , f = d . WordArray = e . extend ( { init : function ( a , c ) { a = this . words = a || [ ] , c != b ? this . sigBytes = c : this . sigBytes = 4 * a . length } , toString : function ( a ) { return ( a || h ) . stringify ( this ) } , concat : function ( a ) { var b = this . words , c = a . words , d = this . sigBytes , e = a . sigBytes ; if ( this . clamp ( ) , d % 4 ) for ( var f = 0 ; f < e ; f ++ ) { var g = c [ f >>> 2 ] >>> 24 - f % 4 * 8 & 255 ; b [ d + f >>> 2 ] |= g << 24 - ( d + f ) % 4 * 8 } else if ( c . length > 65535 ) for ( var f = 0 ; f < e ; f += 4 ) b [ d + f >>> 2 ] = c [ f >>> 2 ] ; else b . push . apply ( b , c ) ; return this . sigBytes += e , this } , clamp : function ( ) { var b = this . words , c = this . sigBytes ; b [ c >>> 2 ] &= 4294967295 << 32 - c % 4 * 8 , b . length = a . ceil ( c / 4 ) } , clone : function ( ) { var a = e . clone . call ( this ) ; return a . words = this . words . slice ( 0 ) , a } , random : function ( b ) { for ( var c = [ ] , d = 0 ; d < b ; d += 4 ) c . push ( 4294967296 * a . random ( ) | 0 ) ; return new f . init ( c , b ) } } ) , g = c . enc = { } , h = g . Hex = { stringify : function ( a ) { for ( var b = a . words , c = a . sigBytes , d = [ ] , e = 0 ; e < c ; e ++ ) { var f = b [ e >>> 2 ] >>> 24 - e % 4 * 8 & 255 ; d . push ( ( f >>> 4 ) . toString ( 16 ) ) , d . push ( ( 15 & f ) . toString ( 16 ) ) } return d . join ( "" ) } , parse : function ( a ) { for ( var b = a . length , c = [ ] , d = 0 ; d < b ; d += 2 ) c [ d >>> 3 ] |= parseInt ( a . substr ( d , 2 ) , 16 ) << 24 - d % 8 * 4 ; return new f . init ( c , b / 2 ) } } , i = g . Latin1 = { stringify : function ( a ) { for ( var b = a . words , c = a . sigBytes , d = [ ] , e = 0 ; e < c ; e ++ ) { var f = b [ e >>> 2 ] >>> 24 - e % 4 * 8 & 255 ; d . push ( String . fromCharCode ( f ) ) } return d . join ( "" ) } , parse : function ( a ) { for ( var b = a . length , c = [ ] , d = 0 ; d < b ; d ++ ) c [ d >>> 2 ] |= ( 255 & a . charCodeAt ( d ) ) << 24 - d % 4 * 8 ; return new f . init ( c , b ) } } , j = g . Utf8 = { stringify : function ( a ) { try { return decodeURIComponent ( escape ( i . stringify ( a ) ) ) } catch ( a ) { throw new Error ( "Malformed UTF-8 data" ) } } , parse : function ( a ) { return i . parse ( unescape ( encodeURIComponent ( a ) ) ) } } , k = d . BufferedBlockAlgorithm = e . extend ( { reset : function ( ) { this . _data = new f . init , this . _nDataBytes = 0 } , _append : function ( a ) { "string" == typeof a && ( a = j . parse ( a ) ) , this . _data . concat ( a ) , this . _nDataBytes += a . sigBytes } , _process : function ( b ) { var c = this . _data , d = c . words , e = c . sigBytes , g = this . blockSize , h = 4 * g , i = e / h ; i = b ? a . ceil ( i ) : a . max ( ( 0 | i ) - this . _minBufferSize , 0 ) ; var j = i * g , k = a . min ( 4 * j , e ) ; if ( j ) { for ( var l = 0 ; l < j ; l += g ) this . _doProcessBlock ( d , l ) ; var m = d . splice ( 0 , j ) ; c . sigBytes -= k } return new f . init ( m , k ) } , clone : function ( ) { var a = e . clone . call ( this ) ; return a . _data = this . _data . clone ( ) , a } , _minBufferSize : 0 } ) , l = ( d . Hasher = k . extend ( { cfg : e . extend ( ) , init : function ( a ) { this . cfg = this . cfg . extend ( a ) , this . reset ( ) } , reset : function ( ) { k . reset . call ( this ) , this . _doReset ( ) } , update : function ( a ) { return this . _append ( a ) , this . _process ( ) , this } , finalize : function ( a ) { a && this . _append ( a ) ; var b = this . _doFinalize ( ) ; return b } , blockSize : 16 , _createHelper : function ( a ) { return function ( b , c ) { return new a . init ( c ) . finalize ( b ) } } , _createHmacHelper : function ( a ) { return function ( b , c ) { return new l . HMAC . init ( a , c ) . finalize ( b ) } } } ) , c . algo = { } ) ; return c } ( Math ) ; ! function ( a ) { var b = CryptoJS , c = b . lib , d = c . Base , e = c . WordArray , f = b . x64 = { } ; f . Word = d . extend ( { init : function ( a , b ) { this . high = a , this . low = b } } ) , f . WordArray = d . extend ( { init : function ( b , c ) { b = this . words = b || [ ] , c != a ? this . sigBytes = c : this . sigBytes = 8 * b . length } , toX32 : function ( ) { for ( var a = this . words , b = a . length , c = [ ] , d = 0 ; d < b ; d ++ ) { var f = a [ d ] ; c . push ( f . high ) , c . push ( f . low ) } return e . create ( c , this . sigBytes ) } , clone : function ( ) { for ( var a = d . clone . call ( this ) , b = a . words = this . words . slice ( 0 ) , c = b . length , e = 0 ; e < c ; e ++ ) b [ e ] = b [ e ] . clone ( ) ; return a } } ) } ( ) , function ( ) { var a = CryptoJS , b = a . lib , c = b . WordArray , d = a . enc ; d . Base64 = { stringify : function ( a ) { var b = a . words , c = a . sigBytes , d = this . _map ; a . clamp ( ) ; for ( var e = [ ] , f = 0 ; f < c ; f += 3 ) for ( var g = b [ f >>> 2 ] >>> 24 - f % 4 * 8 & 255 , h = b [ f + 1 >>> 2 ] >>> 24 - ( f + 1 ) % 4 * 8 & 255 , i = b [ f + 2 >>> 2 ] >>> 24 - ( f + 2 ) % 4 * 8 & 255 , j = g << 16 | h << 8 | i , k = 0 ; k < 4 && f + . 75 * k < c ; k ++ ) e . push ( d . charAt ( j >>> 6 * ( 3 - k ) & 63 ) ) ; var l = d . charAt ( 64 ) ; if ( l ) for ( ; e . length % 4 ; ) e . push ( l ) ; r
=== === === === === === === === === === === === === === === === === === === === === === === ===
CryptoJS . mode . CTRGladman
Counter block mode compatible with Dr Brian Gladman fileenc . c
derived from CryptoJS . mode . CTR
Jan Hruby jhruby . web @ gmail . com
* /
CryptoJS . mode . CTRGladman = function ( ) { function a ( a ) { if ( 255 === ( a >> 24 & 255 ) ) { var b = a >> 16 & 255 , c = a >> 8 & 255 , d = 255 & a ; 255 === b ? ( b = 0 , 255 === c ? ( c = 0 , 255 === d ? d = 0 : ++ d ) : ++ c ) : ++ b , a = 0 , a += b << 16 , a += c << 8 , a += d } else a += 1 << 24 ; return a } function b ( b ) { return 0 === ( b [ 0 ] = a ( b [ 0 ] ) ) && ( b [ 1 ] = a ( b [ 1 ] ) ) , b } var c = CryptoJS . lib . BlockCipherMode . extend ( ) , d = c . Encryptor = c . extend ( { processBlock : function ( a , c ) { var d = this . _cipher , e = d . blockSize , f = this . _iv , g = this . _counter ; f && ( g = this . _counter = f . slice ( 0 ) , this . _iv = void 0 ) , b ( g ) ; var h = g . slice ( 0 ) ; d . encryptBlock ( h , 0 ) ; for ( var i = 0 ; i < e ; i ++ ) a [ c + i ] ^= h [ i ] } } ) ; return c . Decryptor = d , c } ( ) , CryptoJS . mode . CTR = function ( ) { var a = CryptoJS . lib . BlockCipherMode . extend ( ) , b = a . Encryptor = a . extend ( { processBlock : function ( a , b ) { var c = this . _cipher , d = c . blockSize , e = this . _iv , f = this . _counter ; e && ( f = this . _counter = e . slice ( 0 ) , this . _iv = void 0 ) ; var g = f . slice ( 0 ) ; c . encryptBlock ( g , 0 ) , f [ d - 1 ] = f [ d - 1 ] + 1 | 0 ; for ( var h = 0 ; h < d ; h ++ ) a [ b + h ] ^= g [ h ] } } ) ; return a . Decryptor = b , a } ( ) , CryptoJS . mode . ECB = function ( ) { var a = CryptoJS . lib . BlockCipherMode . extend ( ) ; return a . Encryptor = a . extend ( { processBlock : function ( a , b ) { this . _cipher . encryptBlock ( a , b ) } } ) , a . Decryptor = a . extend ( { processBlock : function ( a , b ) { this . _cipher . decryptBlock ( a , b ) } } ) , a } ( ) , CryptoJS . mode . OFB = function ( ) { var a = CryptoJS . lib . BlockCipherMode . extend ( ) , b = a . Encryptor = a . extend ( { processBlock : function ( a , b ) { var c = this . _cipher , d = c . blockSize , e = this . _iv , f = this . _keystream ; e && ( f = this . _keystream = e . slice ( 0 ) , this . _iv = void 0 ) , c . encryptBlock ( f , 0 ) ; for ( var g = 0 ; g < d ; g ++ ) a [ b + g ] ^= f [ g ] } } ) ; return a . Decryptor = b , a } ( ) , function ( a ) { var b = CryptoJS , c = b . lib , d = c . CipherParams , e = b . enc , f = e . Hex , g = b . format ; g . Hex = { stringify : function ( a ) { return a . ciphertext . toString ( f ) } , parse : function ( a ) { var b = f . parse ( a ) ; return d . create ( { ciphertext : b } ) } } } ( ) , function ( ) { if ( "function" == typeof ArrayBuffer ) { var a = CryptoJS , b = a . lib , c = b . WordArray , d = c . init , e = c . init = function ( a ) { if ( a instanceof ArrayBuffer && ( a = new Uint8Array ( a ) ) , ( a instanceof Int8Array || a instanceof Uint8ClampedArray || a instanceof Int16Array || a instanceof Uint16Array || a instanceof Int32Array || a instanceof Uint32Array || a instanceof Float32Array || a instanceof Float64Array ) && ( a = new Uint8Array ( a . buffer , a . byteOffset , a . byteLength ) ) , a instanceof Uint8Array ) { for ( var b = a . byteLength , c = [ ] , e = 0 ; e < b ; e ++ ) c [ e >>> 2 ] |= a [ e ] << 24 - e % 4 * 8 ; d . call ( this , c , b ) } else d . apply ( this , arguments ) } ; e . prototype = c } } ( ) , CryptoJS . pad . AnsiX923 = { pad : function ( a , b ) { var c = a . sigBytes , d = 4 * b , e = d - c % d , f = c + e - 1 ; a . clamp ( ) , a . words [ f >>> 2 ] |= e << 24 - f % 4 * 8 , a . sigBytes += e } , unpad : function ( a ) { var b = 255 & a . words [ a . sigBytes - 1 >>> 2 ] ; a . sigBytes -= b } } , CryptoJS . pad . Iso10126 = { pad : function ( a , b ) { var c = 4 * b , d = c - a . sigBytes % c ; a . concat ( CryptoJS . lib . WordArray . random ( d - 1 ) ) . concat ( CryptoJS . lib . WordArray . create ( [ d << 24 ] , 1 ) ) } , unpad : function ( a ) { var b = 255 & a . words [ a . sigBytes - 1 >>> 2 ] ; a . sigBytes -= b } } , CryptoJS . pad . Iso97971 = { pad : function ( a , b ) { a . concat ( CryptoJS . lib . WordArray . create ( [ 2147483648 ] , 1 ) ) , CryptoJS . pad . ZeroPadding . pad ( a , b ) } , unpad : function ( a ) { CryptoJS . pad . ZeroPadding . unpad ( a ) , a . sigBytes -- } } , CryptoJS . pad . NoPadding = { pad : function ( ) { } , unpad : function ( ) { } } , CryptoJS . pad . ZeroPadding = { pad : function ( a , b ) { var c = 4 * b ; a . clamp ( ) , a . sigBytes += c - ( a . sigBytes % c || c ) } , unpad : function ( a ) { for ( var b = a . words , c = a . sigBytes - 1 ; ! ( b [ c >>> 2 ] >>> 24 - c % 4 * 8 & 255 ) ; ) c -- ; a . sigBytes = c + 1 } } , function ( ) { var a = CryptoJS , b = a . lib , c = b . BlockCipher , d = a . algo , e = [ ] , f = [ ] , g = [ ] , h = [ ] , i = [ ] , j = [ ] , k = [ ] , l = [ ] , m = [ ] , n = [ ] ; ! function ( ) { for ( var a = [ ] , b = 0 ; b < 256 ; b ++ ) b < 128 ? a [ b ] = b << 1 : a [ b ] = b << 1 ^ 283 ; for ( var c = 0 , d = 0 , b = 0 ; b < 256 ; b ++ ) { var o = d ^ d << 1 ^ d << 2 ^ d << 3 ^ d << 4 ; o = o >>> 8 ^ 255 & o ^ 99 , e [ c ] = o , f [ o ] = c ; var p = a [ c ] , q = a [ p ] , r = a [ q ] , s = 257 * a [ o ] ^ 16843008 * o ; g [ c ] = s << 24 | s >>> 8 , h [ c ] = s << 16 | s >>> 16 , i [ c ] = s << 8 | s >>> 24 , j [ c ] = s ; var s = 16843009 * r ^ 65537 * q ^ 257 * p ^ 16843008 * c ; k [ o ] = s << 24 | s >>> 8 , l [ o ] = s << 16 | s >>> 16 , m [ o ] = s << 8 | s >>> 24 , n [ o ] = s , c ? ( c = p ^ a [ a [ a [ r ^ p ] ] ] , d ^= a [ a [ d ] ] ) : c = d = 1 } } ( ) ; var o = [ 0 , 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128 , 27 , 54 ] , p = d . AES = c . extend ( { _doReset : function ( ) { for ( var a = this . _key , b = a . words , c = a . sigBytes / 4 , d = this . _nRounds = c + 6 , f = 4 * ( d + 1 ) , g = this . _keySchedule = [ ] , h = 0 ; h < f ; h ++ ) if ( h < c ) g [ h ] = b [ h ] ; else { var i = g [ h - 1 ] ; h % c ? c > 6 && h % c == 4 && ( i = e [ i >>> 24 ] << 24 | e [ i >>> 16 & 255 ] << 16 | e [ i >>> 8 & 255 ] << 8 | e [ 255 & i ] ) : ( i = i << 8 | i >>> 24 , i = e [ i >>> 24 ] << 24 | e [ i >>> 16 & 255 ] << 16 | e [ i >>> 8 & 255 ] << 8 | e [ 255 & i ] , i ^= o [ h / c | 0 ] << 24 ) , g [ h ]
=== === === === === === === === === === === === === === === === === === === === === === === ===
RIPEMD160
( c ) 2012 by Cédric Mesnil . All rights reserved .
Redistribution and use in source and binary forms , with or without modification , are permitted provided that the following conditions are met :
- Redistributions of source code must retain the above copyright notice , this list of conditions and the following disclaimer .
- 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 .
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 .
* /
function ( a ) { function b ( a , b , c ) { return a ^ b ^ c } function c ( a , b , c ) { return a & b | ~ a & c } function d ( a , b , c ) { return ( a | ~ b ) ^ c } function e ( a , b , c ) { return a & c | b & ~ c } function f ( a , b , c ) { return a ^ ( b | ~ c ) } function g ( a , b ) { return a << b | a >>> 32 - b } var h = CryptoJS , i = h . lib , j = i . WordArray , k = i . Hasher , l = h . algo , m = j . create ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 7 , 4 , 13 , 1 , 10 , 6 , 15 , 3 , 12 , 0 , 9 , 5 , 2 , 14 , 11 , 8 , 3 , 10 , 14 , 4 , 9 , 15 , 8 , 1 , 2 , 7 , 0 , 6 , 13 , 11 , 5 , 12 , 1 , 9 , 11 , 10 , 0 , 8 , 12 , 4 , 13 , 3 , 7 , 15 , 14 , 5 , 6 , 2 , 4 , 0 , 5 , 9 , 7 , 12 , 2 , 10 , 14 , 1 , 3 , 8 , 11 , 6 , 15 , 13 ] ) , n = j . create ( [ 5 , 14 , 7 , 0 , 9 , 2 , 11 , 4 , 13 , 6 , 15 , 8 , 1 , 10 , 3 , 12 , 6 , 11 , 3 , 7 , 0 , 13 , 5 , 10 , 14 , 15 , 8 , 12 , 4 , 9 , 1 , 2 , 15 , 5 , 1 , 3 , 7 , 14 , 6 , 9 , 11 , 8 , 12 , 2 , 10 , 0 , 4 , 13 , 8 , 6 , 4 , 1 , 3 , 11 , 15 , 0 , 5 , 12 , 2 , 13 , 9 , 7 , 10 , 14 , 12 , 15 , 10 , 4 , 1 , 5 , 8 , 7 , 6 , 2 , 13 , 14 , 0 , 3 , 9 , 11 ] ) , o = j . create ( [ 11 , 14 , 15 , 12 , 5 , 8 , 7 , 9 , 11 , 13 , 14 , 15 , 6 , 7 , 9 , 8 , 7 , 6 , 8 , 13 , 11 , 9 , 7 , 15 , 7 , 12 , 15 , 9 , 11 , 7 , 13 , 12 , 11 , 13 , 6 , 7 , 14 , 9 , 13 , 15 , 14 , 8 , 13 , 6 , 5 , 12 , 7 , 5 , 11 , 12 , 14 , 15 , 14 , 15 , 9 , 8 , 9 , 14 , 5 , 6 , 8 , 6 , 5 , 12 , 9 , 15 , 5 , 11 , 6 , 8 , 13 , 12 , 5 , 12 , 13 , 14 , 11 , 8 , 5 , 6 ] ) , p = j . create ( [ 8 , 9 , 9 , 11 , 13 , 15 , 15 , 5 , 7 , 7 , 8 , 11 , 14 , 14 , 12 , 6 , 9 , 13 , 15 , 7 , 12 , 8 , 9 , 11 , 7 , 7 , 12 , 7 , 6 , 15 , 13 , 11 , 9 , 7 , 15 , 11 , 8 , 6 , 6 , 14 , 12 , 13 , 5 , 14 , 13 , 13 , 7 , 5 , 15 , 5 , 8 , 11 , 14 , 14 , 6 , 14 , 6 , 9 , 12 , 9 , 12 , 5 , 15 , 8 , 8 , 5 , 12 , 9 , 12 , 5 , 14 , 6 , 8 , 13 , 6 , 5 , 15 , 13 , 11 , 11 ] ) , q = j . create ( [ 0 , 1518500249 , 1859775393 , 2400959708 , 2840853838 ] ) , r = j . create ( [ 1352829926 , 1548603684 , 1836072691 , 2053994217 , 0 ] ) , s = l . RIPEMD160 = k . extend ( { _doReset : function ( ) { this . _hash = j . create ( [ 1732584193 , 4023233417 , 2562383102 , 271733878 , 3285377520 ] ) } , _doProcessBlock : function ( a , h ) { for ( var i = 0 ; i < 16 ; i ++ ) { var j = h + i , k = a [ j ] ; a [ j ] = 16711935 & ( k << 8 | k >>> 24 ) | 4278255360 & ( k << 24 | k >>> 8 ) } var l , s , t , u , v , w , x , y , z , A , B = this . _hash . words , C = q . words , D = r . words , E = m . words , F = n . words , G = o . words , H = p . words ; w = l = B [ 0 ] , x = s = B [ 1 ] , y = t = B [ 2 ] , z = u = B [ 3 ] , A = v = B [ 4 ] ; for ( var I , i = 0 ; i < 80 ; i += 1 ) I = l + a [ h + E [ i ] ] | 0 , I += i < 16 ? b ( s , t , u ) + C [ 0 ] : i < 32 ? c ( s , t , u ) + C [ 1 ] : i < 48 ? d ( s , t , u ) + C [ 2 ] : i < 64 ? e ( s , t , u ) + C [ 3 ] : f ( s , t , u ) + C [ 4 ] , I = 0 | I , I = g ( I , G [ i ] ) , I = I + v | 0 , l = v , v = u , u = g ( t , 10 ) , t = s , s = I , I = w + a [ h + F [ i ] ] | 0 , I += i < 16 ? f ( x , y , z ) + D [ 0 ] : i < 32 ? e ( x , y , z ) + D [ 1 ] : i < 48 ? d ( x , y , z ) + D [ 2 ] : i < 64 ? c ( x , y , z ) + D [ 3 ] : b ( x , y , z ) + D [ 4 ] , I = 0 | I , I = g ( I , H [ i ] ) , I = I + A | 0 , w = A , A = z , z = g ( y , 10 ) , y = x , x = I ; I = B [ 1 ] + t + z | 0 , B [ 1 ] = B [ 2 ] + u + A | 0 , B [ 2 ] = B [ 3 ] + v + w | 0 , B [ 3 ] = B [ 4 ] + l + x | 0 , B [ 4 ] = B [ 0 ] + s + y | 0 , B [ 0 ] = I } , _doFinalize : function ( ) { var a = this . _data , b = a . words , c = 8 * this . _nDataBytes , d = 8 * a . sigBytes ; b [ d >>> 5 ] |= 128 << 24 - d % 32 , b [ ( d + 64 >>> 9 << 4 ) + 14 ] = 16711935 & ( c << 8 | c >>> 24 ) | 4278255360 & ( c << 24 | c >>> 8 ) , a . sigBytes = 4 * ( b . length + 1 ) , this . _process ( ) ; for ( var e = this . _hash , f = e . words , g = 0 ; g < 5 ; g ++ ) { var h = f [ g ] ; f [ g ] = 16711935 & ( h << 8 | h >>> 24 ) | 4278255360 & ( h << 24 | h >>> 8 ) } return e } , clone : function ( ) { var a = k . clone . call ( this ) ; return a . _hash = this . _hash . clone ( ) , a } } ) ; h . RIPEMD160 = k . _createHelper ( s ) , h . HmacRIPEMD160 = k . _createHmacHelper ( s ) } ( Math ) , function ( ) { var a = CryptoJS , b = a . lib , c = b . WordArray , d = b . Hasher , e = a . algo , f = [ ] , g = e . SHA1 = d . extend ( { _doReset : function ( ) { this . _hash = new c . init ( [ 1732584193 , 4023233417 , 2562383102 , 271733878 , 3285377520 ] ) } , _doProcessBlock : function ( a , b ) { for ( var c = this . _hash . words , d = c [ 0 ] , e = c [ 1 ] , g = c [ 2 ] , h = c [ 3 ] , i = c [ 4 ] , j = 0 ; j < 80 ; j ++ ) { if ( j < 16 ) f [ j ] = 0 | a [ b + j ] ; else { var k = f [ j - 3 ] ^ f [ j - 8 ] ^ f [ j - 14 ] ^ f [ j - 16 ] ; f [ j ] = k << 1 | k >>> 31 } var l = ( d << 5 | d >>> 27 ) + i + f [ j ] ; l += j < 20 ? ( e & g | ~ e & h ) + 1518500249 : j < 40 ? ( e ^ g ^ h ) + 1859775393 : j < 60 ? ( e & g | e & h | g & h ) - 1894007588 : ( e ^ g ^ h ) - 899497514 , i = h , h = g , g = e << 30 | e >>> 2 , e = d , d = l } c [ 0 ] = c [ 0 ] + d | 0 , c [ 1 ] = c [ 1 ] + e | 0 , c [ 2 ] = c [ 2 ] + g | 0 , c [ 3 ] = c [ 3 ] + h | 0 , c [ 4 ] = c [ 4 ] + i | 0 } , _doFinalize : function ( ) { var a = this . _data , b = a . words , c = 8 * this . _nDataBytes , d = 8 * a . sigBytes ; return b [ d >>> 5 ] |= 128 << 24 - d % 32 , b [ ( d + 64 >>> 9 << 4 ) + 14 ] = Math . floor ( c / 4294967296 ) , b [ ( d + 64 >>> 9 << 4 ) + 15 ] = c , a . sigBytes = 4 * b . length , this . _process ( ) , this . _hash } , clone : function ( ) { var a = d . clone . call ( this ) ; return a . _hash = this . _hash . clone ( ) , a } } ) ; a . SHA1 = d . _createHelper ( g ) , a . HmacSHA1 = d . _createHmacHelper ( g ) } ( ) , function ( a ) { var b = CryptoJS , c = b . lib , d = c . WordArray , e = c . Hasher , f = b . algo , g = [ ] , h = [ ] ; ! function ( ) { function b ( b ) { for ( var c = a . sqrt ( b ) , d = 2 ; d <= c ; d ++ ) if ( ! ( b % d ) ) return ! 1 ; return ! 0 } function c ( a ) { return 4294967296 * ( a - ( 0 | a ) ) | 0 } for ( var d = 2 , e = 0 ; e < 64 ; ) b ( d ) && ( e < 8 && ( g [ e ] = c ( a . pow ( d , . 5 ) ) ) , h [ e ] = c ( a . pow ( d , 1 / 3 ) ) , e ++ ) , d ++ } ( ) ; var i = [ ] , j = f . SHA256 = e . extend ( { _doReset : function ( ) { this . _hash = new d . init ( g . slice ( 0 ) ) } , _doProcessBlock : function ( a , b ) { for ( var c = this . _hash . words , d = c [ 0 ] , e = c [ 1 ] , f = c [ 2 ] , g = c [ 3 ] , j = c [ 4 ] , k = c [ 5 ] , l = c [ 6 ] , m = c [ 7 ] , n = 0 ; n < 64 ; n ++ ) { if ( n < 16 ) i [ n ] = 0 | a [ b + n ] ; else { var o = i [ n - 15 ] , p = ( o << 25 | o >>
=== === === === === === === === === === === === === === === === === === === === === === === ===
Copyright ( c ) 2005 Tom Wu
All Rights Reserved .
Basic JavaScript BN library - subset useful for RSA encryption .
This software is covered under the following copyright :
Copyright ( c ) 2003 - 2005 Tom Wu
All Rights Reserved .
Permission is hereby granted , free of charge , to any person obtaining
a copy of this software and associated documentation files ( the
"Software" ) , to deal in the Software without restriction , including
without limitation the rights to use , copy , modify , merge , publish ,
distribute , sublicense , and / or sell copies of the Software , and to
permit persons to whom the Software is furnished to do so , subject to
the following conditions :
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND ,
EXPRESS , IMPLIED OR OTHERWISE , INCLUDING WITHOUT LIMITATION , ANY
WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE .
IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL , INCIDENTAL ,
INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND , OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE , DATA OR PROFITS , WHETHER OR NOT ADVISED OF
THE POSSIBILITY OF DAMAGE , AND ON ANY THEORY OF LIABILITY , ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE .
In addition , the following condition applies :
All redistributions must retain an intact copy of this copyright notice
and disclaimer .
Address all questions regarding this license to :
Tom Wu
tjw @ cs . Stanford . EDU
* /
var dbits , canary = 0xdeadbeefcafe , j _lm = 15715070 == ( 16777215 & canary ) ; j _lm && "Microsoft Internet Explorer" == navigator . appName ? ( BigInteger . prototype . am = am2 , dbits = 30 ) : j _lm && "Netscape" != navigator . appName ? ( BigInteger . prototype . am = am1 , dbits = 26 ) : ( BigInteger . prototype . am = am3 , dbits = 28 ) , BigInteger . prototype . DB = dbits , BigInteger . prototype . DM = ( 1 << dbits ) - 1 , BigInteger . prototype . DV = 1 << dbits ; var BI _FP = 52 ; BigInteger . prototype . FV = Math . pow ( 2 , BI _FP ) , BigInteger . prototype . F1 = BI _FP - dbits , BigInteger . prototype . F2 = 2 * dbits - BI _FP ; var BI _RM = "0123456789abcdefghijklmnopqrstuvwxyz" , BI _RC = new Array , rr , vv ; for ( rr = "0" . charCodeAt ( 0 ) , vv = 0 ; vv <= 9 ; ++ vv ) BI _RC [ rr ++ ] = vv ; for ( rr = "a" . charCodeAt ( 0 ) , vv = 10 ; vv < 36 ; ++ vv ) BI _RC [ rr ++ ] = vv ; for ( rr = "A" . charCodeAt ( 0 ) , vv = 10 ; vv < 36 ; ++ vv ) BI _RC [ rr ++ ] = vv ; Classic . prototype . convert = cConvert , Classic . prototype . revert = cRevert , Classic . prototype . reduce = cReduce , Classic . prototype . mulTo = cMulTo , Classic . prototype . sqrTo = cSqrTo , Montgomery . prototype . convert = montConvert , Montgomery . prototype . revert = montRevert , Montgomery . prototype . reduce = montReduce , Montgomery . prototype . mulTo = montMulTo , Montgomery . prototype . sqrTo = montSqrTo , BigInteger . prototype . copyTo = bnpCopyTo , BigInteger . prototype . fromInt = bnpFromInt , BigInteger . prototype . fromString = bnpFromString , BigInteger . prototype . clamp = bnpClamp , BigInteger . prototype . dlShiftTo = bnpDLShiftTo , BigInteger . prototype . drShiftTo = bnpDRShiftTo , BigInteger . prototype . lShiftTo = bnpLShiftTo , BigInteger . prototype . rShiftTo = bnpRShiftTo , BigInteger . prototype . subTo = bnpSubTo , BigInteger . prototype . multiplyTo = bnpMultiplyTo , BigInteger . prototype . squareTo = bnpSquareTo , BigInteger . prototype . divRemTo = bnpDivRemTo , BigInteger . prototype . invDigit = bnpInvDigit , BigInteger . prototype . isEven = bnpIsEven , BigInteger . prototype . exp = bnpExp , BigInteger . prototype . toString = bnToString , BigInteger . prototype . negate = bnNegate , BigInteger . prototype . abs = bnAbs , BigInteger . prototype . compareTo = bnCompareTo , BigInteger . prototype . bitLength = bnBitLength , BigInteger . prototype . mod = bnMod , BigInteger . prototype . modPowInt = bnModPowInt , BigInteger . ZERO = nbv ( 0 ) , BigInteger . ONE = nbv ( 1 ) , NullExp . prototype . convert = nNop , NullExp . prototype . revert = nNop , NullExp . prototype . mulTo = nMulTo , NullExp . prototype . sqrTo = nSqrTo , Barrett . prototype . convert = barrettConvert , Barrett . prototype . revert = barrettRevert , Barrett . prototype . reduce = barrettReduce , Barrett . prototype . mulTo = barrettMulTo , Barrett . prototype . sqrTo = barrettSqrTo ; var lowprimes = [ 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71 , 73 , 79 , 83 , 89 , 97 , 101 , 103 , 107 , 109 , 113 , 127 , 131 , 137 , 139 , 149 , 151 , 157 , 163 , 167 , 173 , 179 , 181 , 191 , 193 , 197 , 199 , 211 , 223 , 227 , 229 , 233 , 239 , 241 , 251 , 257 , 263 , 269 , 271 , 277 , 281 , 283 , 293 , 307 , 311 , 313 , 317 , 331 , 337 , 347 , 349 , 353 , 359 , 367 , 373 , 379 , 383 , 389 , 397 , 401 , 409 , 419 , 421 , 431 , 433 , 439 , 443 , 449 , 457 , 461 , 463 , 467 , 479 , 487 , 491 , 499 , 503 , 509 , 521 , 523 , 541 , 547 , 557 , 563 , 569 , 571 , 577 , 587 , 593 , 599 , 601 , 607 , 613 , 617 , 619 , 631 , 641 , 643 , 647 , 653 , 659 , 661 , 673 , 677 , 683 , 691 , 701 , 709 , 719 , 727 , 733 , 739 , 743 , 751 , 757 , 761 , 769 , 773 , 787 , 797 , 809 , 811 , 821 , 823 , 827 , 829 , 839 , 853 , 857 , 859 , 863 , 877 , 881 , 883 , 887 , 907 , 911 , 919 , 929 , 937 , 941 , 947 , 953 , 967 , 971 , 977 , 983 , 991 , 997 ] , lplim = ( 1 << 26 ) / lowprimes [ lowprimes . length - 1 ] ; BigInteger . prototype . chunkSize = bnpChunkSize , BigInteger . prototype . toRadix = bnpToRadix , BigInteger . prototype . fromRadix = bnpFromRadix , BigInteger . prototype . fromNumber = bnpFromNumber , BigInteger . prototype . bitwiseTo = bnpBitwiseTo , BigInteger . prototype . changeBit = bnpChangeBit , BigInteger . prototype . addTo = bnpAddTo , BigInteger . prototype . dMultiply = bnpDMultiply , BigInteger . prototype . dAddOffset = bnpDAddOffset , BigInteger . prototype . multiplyLowerTo = bnpMultiplyLowerTo , BigInteger . prototype . multiplyUpperTo = bnpMultiplyUpperTo , BigInteger . prototype . modInt = bnpModInt , BigInteger . prototype . millerRabin = bnpMillerRabin , BigInteger . prototype . clone = bnClone , BigInteger . prototype . intValue = bnIntValue , BigInteger . prototype . byteValue = bnByteValue , BigInteger . prototype . shortValue = bnShortValue , BigInteger . prototype . signum = bnSigNum , BigInteger . prototype . toByteArray = bnToByteArray , BigInteger . prototype . equals = bnEquals , BigInteger . prototype . min = bnMin , BigInteger . prototype . max = bnMax , BigInteger . prototype . and = bnAnd , BigInteger . prototype . or = bnOr , BigInteger . prototype . xor = bnXor , BigInteger . prototype . andNot = b
} ) ; return this . hTLV = d . getEncodedHex ( ) , this . isModified = ! 1 , this . hTLV } , this . _initialize ( ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . TBSCertificate , KJUR . asn1 . ASN1Object ) , KJUR . asn1 . x509 . Extension = function ( a ) { KJUR . asn1 . x509 . Extension . superclass . constructor . call ( this ) ; this . getEncodedHex = function ( ) { var a = new KJUR . asn1 . DERObjectIdentifier ( { oid : this . oid } ) , b = new KJUR . asn1 . DEROctetString ( { hex : this . getExtnValueHex ( ) } ) , c = new Array ; c . push ( a ) , this . critical && c . push ( new KJUR . asn1 . DERBoolean ) , c . push ( b ) ; var d = new KJUR . asn1 . DERSequence ( { array : c } ) ; return d . getEncodedHex ( ) } , this . critical = ! 1 , "undefined" != typeof a && "undefined" != typeof a . critical && ( this . critical = a . critical ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . Extension , KJUR . asn1 . ASN1Object ) , KJUR . asn1 . x509 . KeyUsage = function ( a ) { KJUR . asn1 . x509 . KeyUsage . superclass . constructor . call ( this , a ) , this . getExtnValueHex = function ( ) { return this . asn1ExtnValue . getEncodedHex ( ) } , this . oid = "2.5.29.15" , "undefined" != typeof a && "undefined" != typeof a . bin && ( this . asn1ExtnValue = new KJUR . asn1 . DERBitString ( a ) ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . KeyUsage , KJUR . asn1 . x509 . Extension ) , KJUR . asn1 . x509 . BasicConstraints = function ( a ) { KJUR . asn1 . x509 . BasicConstraints . superclass . constructor . call ( this , a ) ; this . getExtnValueHex = function ( ) { var a = new Array ; this . cA && a . push ( new KJUR . asn1 . DERBoolean ) , this . pathLen > - 1 && a . push ( new KJUR . asn1 . DERInteger ( { int : this . pathLen } ) ) ; var b = new KJUR . asn1 . DERSequence ( { array : a } ) ; return this . asn1ExtnValue = b , this . asn1ExtnValue . getEncodedHex ( ) } , this . oid = "2.5.29.19" , this . cA = ! 1 , this . pathLen = - 1 , "undefined" != typeof a && ( "undefined" != typeof a . cA && ( this . cA = a . cA ) , "undefined" != typeof a . pathLen && ( this . pathLen = a . pathLen ) ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . BasicConstraints , KJUR . asn1 . x509 . Extension ) , KJUR . asn1 . x509 . CRLDistributionPoints = function ( a ) { KJUR . asn1 . x509 . CRLDistributionPoints . superclass . constructor . call ( this , a ) , this . getExtnValueHex = function ( ) { return this . asn1ExtnValue . getEncodedHex ( ) } , this . setByDPArray = function ( a ) { this . asn1ExtnValue = new KJUR . asn1 . DERSequence ( { array : a } ) } , this . setByOneURI = function ( a ) { var b = new KJUR . asn1 . x509 . GeneralNames ( [ { uri : a } ] ) , c = new KJUR . asn1 . x509 . DistributionPointName ( b ) , d = new KJUR . asn1 . x509 . DistributionPoint ( { dpobj : c } ) ; this . setByDPArray ( [ d ] ) } , this . oid = "2.5.29.31" , "undefined" != typeof a && ( "undefined" != typeof a . array ? this . setByDPArray ( a . array ) : "undefined" != typeof a . uri && this . setByOneURI ( a . uri ) ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . CRLDistributionPoints , KJUR . asn1 . x509 . Extension ) , KJUR . asn1 . x509 . ExtKeyUsage = function ( a ) { KJUR . asn1 . x509 . ExtKeyUsage . superclass . constructor . call ( this , a ) , this . setPurposeArray = function ( a ) { this . asn1ExtnValue = new KJUR . asn1 . DERSequence ; for ( var b = 0 ; b < a . length ; b ++ ) { var c = new KJUR . asn1 . DERObjectIdentifier ( a [ b ] ) ; this . asn1ExtnValue . appendASN1Object ( c ) } } , this . getExtnValueHex = function ( ) { return this . asn1ExtnValue . getEncodedHex ( ) } , this . oid = "2.5.29.37" , "undefined" != typeof a && "undefined" != typeof a . array && this . setPurposeArray ( a . array ) } , YAHOO . lang . extend ( KJUR . asn1 . x509 . ExtKeyUsage , KJUR . asn1 . x509 . Extension ) , KJUR . asn1 . x509 . AuthorityKeyIdentifier = function ( a ) { KJUR . asn1 . x509 . AuthorityKeyIdentifier . superclass . constructor . call ( this , a ) , this . asn1KID = null , this . asn1CertIssuer = null , this . asn1CertSN = null , this . getExtnValueHex = function ( ) { var a = new Array ; this . asn1KID && a . push ( new KJUR . asn1 . DERTaggedObject ( { explicit : ! 1 , tag : "80" , obj : this . asn1KID } ) ) , this . asn1CertIssuer && a . push ( new KJUR . asn1 . DERTaggedObject ( { explicit : ! 1 , tag : "a1" , obj : this . asn1CertIssuer } ) ) , this . asn1CertSN && a . push ( new KJUR . asn1 . DERTaggedObject ( { explicit : ! 1 , tag : "82" , obj : this . asn1CertSN } ) ) ; var b = new KJUR . asn1 . DERSequence ( { array : a } ) ; return this . asn1ExtnValue = b , this . asn1ExtnValue . getEncodedHex ( ) } , this . setKIDByParam = function ( a ) { this . asn1KID = new KJUR . asn1 . DEROctetString ( a ) } , this . setCertIssuerByParam = function ( a ) { this . asn1CertIssuer = new KJUR . asn1 . x509 . X500Name ( a ) } , this . setCertSNByParam = function ( a ) { this . asn1CertSN = new KJUR . asn1 . DERInteger ( a ) } , this . oid = "2.5.29.35" , "undefined" != typeof a && ( "undefined" != typeof a . kid && this . setKIDByParam ( a . kid ) , "undefined" != typeof a . issuer && this . setCertIssuerByParam ( a . issuer ) , "undefined" != typeof a . sn && this . setCertSNByParam ( a . sn ) ) } , YAHOO . lang . extend ( KJUR .
this . sign ( ) } , this . verify = function ( a ) { if ( this . sHashHex = this . md . digest ( ) , "undefined" != typeof this . ecpubhex && "undefined" != typeof this . eccurvename ) { var b = new KJUR . crypto . ECDSA ( { curve : this . eccurvename } ) ; return b . verifyHex ( this . sHashHex , a , this . ecpubhex ) } if ( this . pubKey instanceof RSAKey && "rsaandmgf1" == this . pubkeyAlgName ) return this . pubKey . verifyWithMessageHashPSS ( this . sHashHex , a , this . mdAlgName , this . pssSaltLen ) ; if ( this . pubKey instanceof RSAKey && "rsa" == this . pubkeyAlgName ) return this . pubKey . verifyWithMessageHash ( this . sHashHex , a ) ; if ( this . pubKey instanceof KJUR . crypto . ECDSA ) return this . pubKey . verifyWithMessageHash ( this . sHashHex , a ) ; if ( this . pubKey instanceof KJUR . crypto . DSA ) return this . pubKey . verifyWithMessageHash ( this . sHashHex , a ) ; throw "Signature: unsupported public key alg: " + this . pubkeyAlgName } } } , this . init = function ( a , b ) { throw "init(key, pass) not supported for this alg:prov=" + this . algProvName } , this . initVerifyByPublicKey = function ( a ) { throw "initVerifyByPublicKey(rsaPubKeyy) not supported for this alg:prov=" + this . algProvName } , this . initVerifyByCertificatePEM = function ( a ) { throw "initVerifyByCertificatePEM(certPEM) not supported for this alg:prov=" + this . algProvName } , this . initSign = function ( a ) { throw "initSign(prvKey) not supported for this alg:prov=" + this . algProvName } , this . updateString = function ( a ) { throw "updateString(str) not supported for this alg:prov=" + this . algProvName } , this . updateHex = function ( a ) { throw "updateHex(hex) not supported for this alg:prov=" + this . algProvName } , this . sign = function ( ) { throw "sign() not supported for this alg:prov=" + this . algProvName } , this . signString = function ( a ) { throw "digestString(str) not supported for this alg:prov=" + this . algProvName } , this . signHex = function ( a ) { throw "digestHex(hex) not supported for this alg:prov=" + this . algProvName } , this . verify = function ( a ) { throw "verify(hSigVal) not supported for this alg:prov=" + this . algProvName } , this . initParams = a , void 0 !== a && ( void 0 !== a . alg && ( this . algName = a . alg , void 0 === a . prov ? this . provName = KJUR . crypto . Util . DEFAULTPROVIDER [ this . algName ] : this . provName = a . prov , this . algProvName = this . algName + ":" + this . provName , this . setAlgAndProvider ( this . algName , this . provName ) , this . _setAlgNames ( ) ) , void 0 !== a . psssaltlen && ( this . pssSaltLen = a . psssaltlen ) , void 0 !== a . prvkeypem ) ) { if ( void 0 !== a . prvkeypas ) throw "both prvkeypem and prvkeypas parameters not supported" ; try { var b = new RSAKey ; b . readPrivateKeyFromPEMString ( a . prvkeypem ) , this . initSign ( b ) } catch ( a ) { throw "fatal error to load pem private key: " + a } } } , KJUR . crypto . OID = new function ( ) { this . oidhex2name = { "2a864886f70d010101" : "rsaEncryption" , "2a8648ce3d0201" : "ecPublicKey" , "2a8648ce380401" : "dsa" , "2a8648ce3d030107" : "secp256r1" , "2b8104001f" : "secp192k1" , "2b81040021" : "secp224r1" , "2b8104000a" : "secp256k1" , "2b81040023" : "secp521r1" , "2b81040022" : "secp384r1" , "2a8648ce380403" : "SHA1withDSA" , "608648016503040301" : "SHA224withDSA" , "608648016503040302" : "SHA256withDSA" } } , "undefined" != typeof KJUR && KJUR || ( KJUR = { } ) , "undefined" != typeof KJUR . crypto && KJUR . crypto || ( KJUR . crypto = { } ) , KJUR . crypto . DSA = function ( ) { function a ( a , b , c , e , f , g ) { var h = KJUR . crypto . Util . hashString ( b , a . toLowerCase ( ) ) , h = h . substr ( 0 , f . bitLength ( ) / 4 ) , i = new BigInteger ( h , 16 ) , j = d ( BigInteger . ONE . add ( BigInteger . ONE ) , f . subtract ( BigInteger . ONE ) ) , k = c . modPow ( j , e ) . mod ( f ) , l = j . modInverse ( f ) . multiply ( i . add ( g . multiply ( k ) ) ) . mod ( f ) , m = new Array ; return m [ 0 ] = k , m [ 1 ] = l , m } function b ( a ) { var b = openpgp . config . config . prefer _hash _algorithm ; switch ( Math . round ( a . bitLength ( ) / 8 ) ) { case 20 : return 2 != b && b > 11 && 10 != b && b < 8 ? 2 : b ; case 28 : return b > 11 && b < 8 ? 11 : b ; case 32 : return b > 10 && b < 8 ? 8 : b ; default : return util . print _debug ( "DSA select hash algorithm: returning null for an unknown length of q" ) , null } } function c ( a , b , c , d , e , f , g , h ) { var i = KJUR . crypto . Util . hashString ( d , a . toLowerCase ( ) ) , i = i . substr ( 0 , f . bitLength ( ) / 4 ) , j = new BigInteger ( i , 16 ) ; if ( BigInteger . ZERO . compareTo ( b ) > 0 || b . compareTo ( f ) > 0 || BigInteger . ZERO . compareTo ( c ) > 0 || c . compareTo ( f ) > 0 ) return util . print _error ( "invalid DSA Signature" ) , null ; var k = c . modInverse ( f ) , l = j . multiply ( k ) . mod ( f ) , m = b . multiply ( k ) . mod ( f ) , n = g . modPow ( l , e ) . multiply ( h . modPow ( m , e ) ) . mod ( e ) . mod ( f ) ; return 0 == n . compareTo ( b ) } function d ( a , b ) { if ( ! ( b . compareTo ( a ) <= 0 ) ) { for ( var c = b . subtr
var k = KEYUTIL . getHexFromPEM ( a , "RSA PRIVATE KEY" ) ; return KEYUTIL . getKey ( k , null , "pkcs5prv" ) } if ( a . indexOf ( "-END DSA PRIVATE KEY-" ) != - 1 && a . indexOf ( "4,ENCRYPTED" ) == - 1 ) { var l = this . getHexFromPEM ( a , "DSA PRIVATE KEY" ) , m = ASN1HEX . getVbyList ( l , 0 , [ 1 ] , "02" ) , n = ASN1HEX . getVbyList ( l , 0 , [ 2 ] , "02" ) , o = ASN1HEX . getVbyList ( l , 0 , [ 3 ] , "02" ) , p = ASN1HEX . getVbyList ( l , 0 , [ 4 ] , "02" ) , q = ASN1HEX . getVbyList ( l , 0 , [ 5 ] , "02" ) , d = new KJUR . crypto . DSA ; return d . setPrivate ( new BigInteger ( m , 16 ) , new BigInteger ( n , 16 ) , new BigInteger ( o , 16 ) , new BigInteger ( p , 16 ) , new BigInteger ( q , 16 ) ) , d } if ( a . indexOf ( "-END PRIVATE KEY-" ) != - 1 ) return KEYUTIL . getKeyFromPlainPrivatePKCS8PEM ( a ) ; if ( a . indexOf ( "-END RSA PRIVATE KEY-" ) != - 1 && a . indexOf ( "4,ENCRYPTED" ) != - 1 ) return KEYUTIL . getRSAKeyFromEncryptedPKCS5PEM ( a , b ) ; if ( a . indexOf ( "-END EC PRIVATE KEY-" ) != - 1 && a . indexOf ( "4,ENCRYPTED" ) != - 1 ) { var l = KEYUTIL . getDecryptedKeyHex ( a , b ) , d = ASN1HEX . getVbyList ( l , 0 , [ 1 ] , "04" ) , r = ASN1HEX . getVbyList ( l , 0 , [ 2 , 0 ] , "06" ) , s = ASN1HEX . getVbyList ( l , 0 , [ 3 , 0 ] , "03" ) . substr ( 2 ) , t = "" ; if ( void 0 === KJUR . crypto . OID . oidhex2name [ r ] ) throw "undefined OID(hex) in KJUR.crypto.OID: " + r ; t = KJUR . crypto . OID . oidhex2name [ r ] ; var e = new KJUR . crypto . ECDSA ( { name : t } ) ; return e . setPublicKeyHex ( s ) , e . setPrivateKeyHex ( d ) , e . isPublic = ! 1 , e } if ( a . indexOf ( "-END DSA PRIVATE KEY-" ) != - 1 && a . indexOf ( "4,ENCRYPTED" ) != - 1 ) { var l = KEYUTIL . getDecryptedKeyHex ( a , b ) , m = ASN1HEX . getVbyList ( l , 0 , [ 1 ] , "02" ) , n = ASN1HEX . getVbyList ( l , 0 , [ 2 ] , "02" ) , o = ASN1HEX . getVbyList ( l , 0 , [ 3 ] , "02" ) , p = ASN1HEX . getVbyList ( l , 0 , [ 4 ] , "02" ) , q = ASN1HEX . getVbyList ( l , 0 , [ 5 ] , "02" ) , d = new KJUR . crypto . DSA ; return d . setPrivate ( new BigInteger ( m , 16 ) , new BigInteger ( n , 16 ) , new BigInteger ( o , 16 ) , new BigInteger ( p , 16 ) , new BigInteger ( q , 16 ) ) , d } if ( a . indexOf ( "-END ENCRYPTED PRIVATE KEY-" ) != - 1 ) return KEYUTIL . getKeyFromEncryptedPKCS8PEM ( a , b ) ; throw "not supported argument" } , KEYUTIL . generateKeypair = function ( a , b ) { if ( "RSA" == a ) { var c = b , d = new RSAKey ; d . generate ( c , "10001" ) , d . isPrivate = ! 0 , d . isPublic = ! 0 ; var e = new RSAKey , f = d . n . toString ( 16 ) , g = d . e . toString ( 16 ) ; e . setPublic ( f , g ) , e . isPrivate = ! 1 , e . isPublic = ! 0 ; var h = { } ; return h . prvKeyObj = d , h . pubKeyObj = e , h } if ( "EC" == a ) { var i = b , j = new KJUR . crypto . ECDSA ( { curve : i } ) , k = j . generateKeyPairHex ( ) , d = new KJUR . crypto . ECDSA ( { curve : i } ) ; d . setPrivateKeyHex ( k . ecprvhex ) , d . isPrivate = ! 0 , d . isPublic = ! 1 ; var e = new KJUR . crypto . ECDSA ( { curve : i } ) ; e . setPublicKeyHex ( k . ecpubhex ) , e . isPrivate = ! 1 , e . isPublic = ! 0 ; var h = { } ; return h . prvKeyObj = d , h . pubKeyObj = e , h } throw "unknown algorithm: " + a } , KEYUTIL . getPEM = function ( a , b , c , d , e ) { function f ( a ) { var b = KJUR . asn1 . ASN1Util . newObject ( { seq : [ { int : 0 } , { int : { bigint : a . n } } , { int : a . e } , { int : { bigint : a . d } } , { int : { bigint : a . p } } , { int : { bigint : a . q } } , { int : { bigint : a . dmp1 } } , { int : { bigint : a . dmq1 } } , { int : { bigint : a . coeff } } ] } ) ; return b } function g ( a ) { var b = KJUR . asn1 . ASN1Util . newObject ( { seq : [ { int : 1 } , { octstr : { hex : a . prvKeyHex } } , { tag : [ "a0" , ! 0 , { oid : { name : a . curveName } } ] } , { tag : [ "a1" , ! 0 , { bitstr : { hex : "00" + a . pubKeyHex } } ] } ] } ) ; return b } function h ( a ) { var b = KJUR . asn1 . ASN1Util . newObject ( { seq : [ { int : 0 } , { int : { bigint : a . p } } , { int : { bigint : a . q } } , { int : { bigint : a . g } } , { int : { bigint : a . y } } , { int : { bigint : a . x } } ] } ) ; return b } var i = KJUR . asn1 , j = KJUR . crypto ; if ( ( "undefined" != typeof RSAKey && a instanceof RSAKey || "undefined" != typeof j . DSA && a instanceof j . DSA || "undefined" != typeof j . ECDSA && a instanceof j . ECDSA ) && 1 == a . isPublic && ( void 0 === b || "PKCS8PUB" == b ) ) { var k = new KJUR . asn1 . x509 . SubjectPublicKeyInfo ( a ) , l = k . getEncodedHex ( ) ; return i . ASN1Util . getPEMStringFromHex ( l , "PUBLIC KEY" ) } if ( "PKCS1PRV" == b && "undefined" != typeof RSAKey && a instanceof RSAKey && ( void 0 === c || null == c ) && 1 == a . isPrivate ) { var k = f ( a ) , l = k . getEncodedHex ( ) ; return i . ASN1Util . getPEMStringFromHex ( l , "RSA PRIVATE KEY" ) } if ( "PKCS1PRV" == b && "undefined" != typeof RSAKey && a instanceof KJUR . crypto . ECDSA && ( void 0 === c || null == c ) && 1 == a . isPrivate ) { var m = new KJUR . asn1 . DERObjectIdentifier ( { name : a . curveName } ) , n = m . getEncodedHex ( ) , o = g ( a ) , p = o . getEncodedHex ( ) , q = "" ; return q += i . ASN1Util . getPEMStringFromHex ( n , "EC PARAMETERS" ) , q += i . ASN1Util . getPEMStringFromHex ( p , "EC PRIVATE KEY" ) } if ( "PKCS1PRV" == b && "undefined" != typeof KJUR . crypto . DSA && a instanceof KJUR . crypto . DSA && ( void 0 === c || null == c ) && 1 == a . isPrivate ) { var k = h ( a ) , l = k . getEncodedHex ( ) ; return i . ASN1Util . getPEMStringFromHex ( l
=== === === === === === === === === === === === === === === === === === === === === === === ===
Blowfish . js from Dojo Toolkit 1.8 . 1
Cut of by Sladex ( xslade @ gmail . com )
Created based on the C # implementation by Marcus Hahn ( http : //www.hotpixel.net/)
Unsigned math based on Paul Johnstone and Peter Wood patches .
2005 - 12 - 08
The Dojo Toolkit ( including this package ) is dual licensed under BSD 3 - Clause and AFL .
The Dojo Toolkit is Copyright ( c ) 2005 - 2016 , The Dojo Foundation . All rights reserved .
* /
function ( a ) { var b = { } ; b . cipherModes = { ECB : 0 , CBC : 1 , PCBC : 2 , CFB : 3 , OFB : 4 , CTR : 5 } , b . outputTypes = { Base64 : 0 , Hex : 1 , String : 2 , Raw : 3 } ; var c = { } , d = "=" , e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ; c . encode = function ( a ) { for ( var b = [ ] , c = a . length , f = c % 3 , g = c - f , h = 0 ; h < g ; ) { var i = a [ h ++ ] << 16 | a [ h ++ ] << 8 | a [ h ++ ] ; b . push ( e . charAt ( i >>> 18 & 63 ) ) , b . push ( e . charAt ( i >>> 12 & 63 ) ) , b . push ( e . charAt ( i >>> 6 & 63 ) ) , b . push ( e . charAt ( 63 & i ) ) } switch ( f ) { case 2 : var i = a [ h ++ ] << 16 | a [ h ++ ] << 8 ; b . push ( e . charAt ( i >>> 18 & 63 ) ) , b . push ( e . charAt ( i >>> 12 & 63 ) ) , b . push ( e . charAt ( i >>> 6 & 63 ) ) , b . push ( d ) ; break ; case 1 : var i = a [ h ++ ] << 16 ; b . push ( e . charAt ( i >>> 18 & 63 ) ) , b . push ( e . charAt ( i >>> 12 & 63 ) ) , b . push ( d ) , b . push ( d ) } return b . join ( "" ) } , c . decode = function ( a ) { for ( var b = a . split ( "" ) , c = [ ] , f = b . length ; b [ -- f ] == d ; ) ; for ( var g = 0 ; g < f ; ) { var h = e . indexOf ( b [ g ++ ] ) << 18 ; g <= f && ( h |= e . indexOf ( b [ g ++ ] ) << 12 ) , g <= f && ( h |= e . indexOf ( b [ g ++ ] ) << 6 ) , g <= f && ( h |= e . indexOf ( b [ g ++ ] ) ) , c . push ( h >>> 16 & 255 ) , c . push ( h >>> 8 & 255 ) , c . push ( 255 & h ) } for ( ; 0 == c [ c . length - 1 ] ; ) c . pop ( ) ; return c } ; var f = { } ; f . isString = function ( a ) { return "string" == typeof a || a instanceof String } ; var g = { } ; g . map = function ( a , b , c , d ) { var e = 0 , f = a && a . length || 0 , g = new ( d || Array ) ( f ) ; if ( f && "string" == typeof a && ( a = a . split ( "" ) ) , "string" == typeof b && ( b = cache [ b ] || buildFn ( b ) ) , c ) for ( ; e < f ; ++ e ) g [ e ] = b . call ( c , a [ e ] , e , a ) ; else for ( ; e < f ; ++ e ) g [ e ] = b ( a [ e ] , e , a ) ; return g } , b . Blowfish = new function ( ) { function a ( a , b ) { return ( a >> 16 ^ b >> 16 ) << 16 | 65535 & ( 65535 & a ^ 65535 & b ) } function d ( a , b ) { var c = b . s3 [ 255 & a ] ; a >>= 8 ; var d = b . s2 [ 255 & a ] ; a >>= 8 ; var e = b . s1 [ 255 & a ] ; a >>= 8 ; var f = b . s0 [ 255 & a ] , g = ( f >> 16 ) + ( e >> 16 ) + ( ( 65535 & f ) + ( 65535 & e ) >> 16 ) << 16 | ( 65535 & f ) + ( 65535 & e ) & 65535 ; return g = ( g >> 16 ^ d >> 16 ) << 16 | 65535 & ( 65535 & g ^ 65535 & d ) , ( g >> 16 ) + ( c >> 16 ) + ( ( 65535 & g ) + ( 65535 & c ) >> 16 ) << 16 | ( 65535 & g ) + ( 65535 & c ) & 65535 } function e ( b , c ) { var e = b . left , f = b . right ; e = a ( e , c . p [ 0 ] ) , f = a ( f , a ( d ( e , c ) , c . p [ 1 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 2 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 3 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 4 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 5 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 6 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 7 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 8 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 9 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 10 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 11 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 12 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 13 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 14 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 15 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 16 ] ) ) , b . right = e , b . left = a ( f , c . p [ 17 ] ) } function h ( b , c ) { var e = b . left , f = b . right ; e = a ( e , c . p [ 17 ] ) , f = a ( f , a ( d ( e , c ) , c . p [ 16 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 15 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 14 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 13 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 12 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 11 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 10 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 9 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 8 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 7 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 6 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 5 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 4 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 3 ] ) ) , f = a ( f , a ( d ( e , c ) , c . p [ 2 ] ) ) , e = a ( e , a ( d ( f , c ) , c . p [ 1 ] ) ) , b . right = e , b . left = a ( f , c . p [ 0 ] ) } function i ( a ) { var b = a ; f . isString ( b ) && ( b = g . map ( b . split ( "" ) , function ( a ) { return 255 & a . charCodeAt ( 0 ) } ) ) ; var c , d , h , i = 0 , k = 0 , l = { left : 0 , right : 0 } , m = { p : g . map ( n . p . slice ( 0 ) , function ( a ) { var c , d = b . length ; for ( c = 0 ; c < 4 ; c ++ ) k = k * j | b [ i ++ % d ] ; return ( a >> 16 ^ k >> 16 ) << 16 | 65535 & ( 65535 & a ^ 65535 & k ) } ) , s0 : n . s0 . slice ( 0 ) , s1 : n . s1 . slice ( 0 ) , s2 : n . s2 . slice ( 0 ) , s3 : n . s3 . slice ( 0 ) } ; for ( c = 0 , h = m . p . length ; c < h ; ) e ( l , m ) , m . p [ c ++ ] = l . left , m . p [ c ++ ] = l . right ; for ( c = 0 ; c < 4 ; c ++ ) for ( d = 0 , h = m [ "s" + c ] . length ; d < h ; ) e ( l , m ) , m [ "s" + c ] [ d ++ ] = l . left , m [ "s" + c ] [ d ++ ] = l . right ; return m } var j = ( Math . pow ( 2 , 2 ) , Math . pow ( 2 , 3 ) , Math . pow ( 2 , 4 ) , Math . pow ( 2 , 8 ) ) , k = Math . pow ( 2 , 16 ) , l = Math . pow ( 2 , 24 ) , m = null , n = { p : [ 608135816 , 2242054355 , 320440878 , 57701188 , 2752067618 , 698298832 , 137296536 , 3964562569 , 1160258022 , 953160567 , 3193202383 , 887688300 , 3232508343 , 3380367581 , 1065670069 , 3041331479 , 2450970073 , 2306472731 ] , s0 : [ 3509652390 , 2564797868 , 805139163 , 3491422135 , 3101798381 , 1780907670 , 3128725573 , 4046225305 , 614570311 , 3012652279 , 134345442 , 2240740374 , 1667834072 , 1901547113 , 2757295779 , 4103290238 , 227898511 , 1921955416 , 1904987480 , 2182433518 , 2069144605 , 3260701109 , 2620446009 , 720527379 , 3318853667 , 677414384 , 3393288472 , 3101374703 , 2390351024 , 1614419982 , 1822297739 , 2954791486 , 3608508353 , 3174124327 , 2024746970 , 1432378464 , 3864339955 , 2857741204 , 1464375394 , 1676153920 , 1439316330 , 715854006 , 3033291828 , 289532110 , 2706671279 , 2087905683 , 3018724369 , 1668267050 , 732546397 , 1947742710 , 3462151702 , 2609353502 , 2950085171 , 1814351708 , 2050118529 , 680887927 , 999245976 , 1800124847 , 330091
k = c . length ) ; j -- ; ) c [ f ] = c [ f ++ - i ] ; for ( ; 8 <= this . c ; ) this . c -= 8 , this . d -- ; this . a = f } , c . prototype . e = function ( ) { var a , b , c = new ( h ? Uint8Array : Array ) ( this . a - 32768 ) , d = this . a - 32768 , e = this . b ; if ( h ) c . set ( e . subarray ( 32768 , c . length ) ) ; else for ( a = 0 , b = c . length ; a < b ; ++ a ) c [ a ] = e [ a + 32768 ] ; if ( this . g . push ( c ) , this . k += c . length , h ) e . set ( e . subarray ( d , d + 32768 ) ) ; else for ( a = 0 ; 32768 > a ; ++ a ) e [ a ] = e [ d + a ] ; return this . a = 32768 , e } , c . prototype . v = function ( a ) { var b , c , d , e , f = this . input . length / this . d + 1 | 0 , g = this . input , i = this . b ; return a && ( "number" == typeof a . o && ( f = a . o ) , "number" == typeof a . r && ( f += a . r ) ) , 2 > f ? ( c = ( g . length - this . d ) / this . n [ 2 ] , e = 258 * ( c / 2 ) | 0 , d = e < i . length ? i . length + e : i . length << 1 ) : d = i . length * f , h ? ( b = new Uint8Array ( d ) , b . set ( i ) ) : b = i , this . b = b } , c . prototype . m = function ( ) { var a , b , c , d , e , f = 0 , g = this . b , i = this . g , j = new ( h ? Uint8Array : Array ) ( this . k + ( this . a - 32768 ) ) ; if ( 0 === i . length ) return h ? this . b . subarray ( 32768 , this . a ) : this . b . slice ( 32768 , this . a ) ; for ( b = 0 , c = i . length ; b < c ; ++ b ) for ( a = i [ b ] , d = 0 , e = a . length ; d < e ; ++ d ) j [ f ++ ] = a [ d ] ; for ( b = 32768 , c = this . a ; b < c ; ++ b ) j [ f ++ ] = g [ b ] ; return this . g = [ ] , this . buffer = j } , c . prototype . s = function ( ) { var a , b = this . a ; return h ? this . q ? ( a = new Uint8Array ( b ) , a . set ( this . b . subarray ( 0 , b ) ) ) : a = this . b . subarray ( 0 , b ) : ( this . b . length > b && ( this . b . length = b ) , a = this . b ) , this . buffer = a } , a ( "Zlib.RawInflate" , c ) , a ( "Zlib.RawInflate.prototype.decompress" , c . prototype . u ) ; var C , D , E , F , G = { ADAPTIVE : j , BLOCK : i } ; if ( Object . keys ) C = Object . keys ( G ) ; else for ( D in C = [ ] , E = 0 , G ) C [ E ++ ] = D ; for ( E = 0 , F = C . length ; E < F ; ++ E ) D = C [ E ] , a ( "Zlib.RawInflate.BufferType." + D , G [ D ] ) } . call ( this ) , function ( ) { function a ( a , b ) { var c = a . split ( "." ) , d = s ; ! ( c [ 0 ] in d ) && d . execScript && d . execScript ( "var " + c [ 0 ] ) ; for ( var e ; c . length && ( e = c . shift ( ) ) ; ) c . length || b === q ? d = d [ e ] ? d [ e ] : d [ e ] = { } : d [ e ] = b } function b ( a , b ) { if ( this . index = "number" == typeof b ? b : 0 , this . f = 0 , this . buffer = a instanceof ( t ? Uint8Array : Array ) ? a : new ( t ? Uint8Array : Array ) ( 32768 ) , 2 * this . buffer . length <= this . index ) throw Error ( "invalid index" ) ; this . buffer . length <= this . index && c ( this ) } function c ( a ) { var b , c = a . buffer , d = c . length , e = new ( t ? Uint8Array : Array ) ( d << 1 ) ; if ( t ) e . set ( c ) ; else for ( b = 0 ; b < d ; ++ b ) e [ b ] = c [ b ] ; return a . buffer = e } function d ( a ) { var b , c = q , d = "number" == typeof c ? c : c = 0 , e = a . length ; for ( b = - 1 , d = 7 & e ; d -- ; ++ c ) b = b >>> 8 ^ B [ 255 & ( b ^ a [ c ] ) ] ; for ( d = e >> 3 ; d -- ; c += 8 ) b = b >>> 8 ^ B [ 255 & ( b ^ a [ c ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 1 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 2 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 3 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 4 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 5 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 6 ] ) ] , b = b >>> 8 ^ B [ 255 & ( b ^ a [ c + 7 ] ) ] ; return ( 4294967295 ^ b ) >>> 0 } function e ( a ) { this . buffer = new ( t ? Uint16Array : Array ) ( 2 * a ) , this . length = 0 } function f ( a , b ) { this . k = D , this . l = 0 , this . input = t && a instanceof Array ? new Uint8Array ( a ) : a , this . e = 0 , b && ( b . lazy && ( this . l = b . lazy ) , "number" == typeof b . compressionType && ( this . k = b . compressionType ) , b . outputBuffer && ( this . c = t && b . outputBuffer instanceof Array ? new Uint8Array ( b . outputBuffer ) : b . outputBuffer ) , "number" == typeof b . outputIndex && ( this . e = b . outputIndex ) ) , this . c || ( this . c = new ( t ? Uint8Array : Array ) ( 32768 ) ) } function g ( a , b ) { this . length = a , this . n = b } function h ( a , b ) { function c ( a , b ) { var c , d = a . n , e = [ ] , f = 0 ; c = G [ a . length ] , e [ f ++ ] = 65535 & c , e [ f ++ ] = c >> 16 & 255 , e [ f ++ ] = c >> 24 ; var g ; switch ( r ) { case 1 === d : g = [ 0 , d - 1 , 0 ] ; break ; case 2 === d : g = [ 1 , d - 2 , 0 ] ; break ; case 3 === d : g = [ 2 , d - 3 , 0 ] ; break ; case 4 === d : g = [ 3 , d - 4 , 0 ] ; break ; case 6 >= d : g = [ 4 , d - 5 , 1 ] ; break ; case 8 >= d : g = [ 5 , d - 7 , 1 ] ; break ; case 12 >= d : g = [ 6 , d - 9 , 2 ] ; break ; case 16 >= d : g = [ 7 , d - 13 , 2 ] ; break ; case 24 >= d : g = [ 8 , d - 17 , 3 ] ; break ; case 32 >= d : g = [ 9 , d - 25 , 3 ] ; break ; case 48 >= d : g = [ 10 , d - 33 , 4 ] ; break ; case 64 >= d : g = [ 11 , d - 49 , 4 ] ; break ; case 96 >= d : g = [ 12 , d - 65 , 5 ] ; break ; case 128 >= d : g = [ 13 , d - 97 , 5 ] ; break ; case 192 >= d : g = [ 14 , d - 129 , 6 ] ; break ; case 256 >= d : g = [ 15 , d - 193 , 6 ] ; break ; case 384 >= d : g = [ 16 , d - 257 , 7 ] ; break ; case 512 >= d : g = [ 17 , d - 385 , 7 ] ; break ; case 768 >= d : g = [ 18 , d - 513 , 8 ] ; break ; case 1024 >= d : g = [ 19 , d - 769 , 8 ] ; break ; case 1536 >= d : g = [ 20 , d - 1025 , 9 ] ; break ; case 2048 >= d : g = [ 21 , d - 1537 , 9 ] ; break ; case 3072 >= d : g = [ 22 , d - 2049 , 10 ] ; break ; case 4096 >= d : g = [ 23 , d - 3073 , 10 ] ; break ; case 6144 >= d : g = [ 24 , d - 4097 , 11 ] ; break ; case 8192 >= d : g = [ 25 , d - 6145 , 11 ] ; break ; case 12288 >= d : g = [ 26 , d - 8193 , 12 ] ; break ; case 16384 >= d : g = [ 27 , d - 12289 , 12 ] ; break ; case 24576 >= d : g = [ 28 , d - 16385 , 13 ] ; break ; case 32768 >= d : g = [ 29 , d - 24577 , 13 ] ; break ; default : throw "invalid distance" } c = g , e [ f ++ ] = c [ 0 ] , e [ f ++ ] = c [ 1 ] , e [ f ++ ] = c [ 2 ]
} ) . r ( ) ; break ; default : a ( Error ( "unknown compression type" ) ) } if ( this . ca ) { var v , x = o , y = "number" == typeof x ? x : x = 0 , z = j . length ; for ( v = - 1 , y = 7 & z ; y -- ; ++ x ) v = v >>> 8 ^ w [ 255 & ( v ^ j [ x ] ) ] ; for ( y = z >> 3 ; y -- ; x += 8 ) v = v >>> 8 ^ w [ 255 & ( v ^ j [ x ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 1 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 2 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 3 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 4 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 5 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 6 ] ) ] , v = v >>> 8 ^ w [ 255 & ( v ^ j [ x + 7 ] ) ] ; n = ( 4294967295 ^ v ) >>> 0 , g . p !== n && a ( Error ( "wrong crc: file=0x" + g . p . toString ( 16 ) + ", data=0x" + n . toString ( 16 ) ) ) } return j } , n . M = function ( a ) { this . j = a } , n . k = h . prototype . k , n . T = h . prototype . U , n . s = h . prototype . s , b ( "Zlib.Unzip" , i ) , b ( "Zlib.Unzip.prototype.decompress" , i . prototype . r ) , b ( "Zlib.Unzip.prototype.getFilenames" , i . prototype . Z ) , b ( "Zlib.Unzip.prototype.setPassword" , i . prototype . M ) } . call ( this ) , / * * @ l i c e n s e
=== === === === === === === === === === === === === === === === === === === === === === === ===
zlib . js 2012 - imaya [ https : //github.com/imaya/zlib.js ] The MIT License
* /
function ( ) { function a ( a ) { throw a } function b ( a , b ) { var c = a . split ( "." ) , d = A ; ! ( c [ 0 ] in d ) && d . execScript && d . execScript ( "var " + c [ 0 ] ) ; for ( var e ; c . length && ( e = c . shift ( ) ) ; ) c . length || b === y ? d = d [ e ] ? d [ e ] : d [ e ] = { } : d [ e ] = b } function c ( b , c ) { this . index = "number" == typeof c ? c : 0 , this . m = 0 , this . buffer = b instanceof ( B ? Uint8Array : Array ) ? b : new ( B ? Uint8Array : Array ) ( 32768 ) , 2 * this . buffer . length <= this . index && a ( Error ( "invalid index" ) ) , this . buffer . length <= this . index && this . f ( ) } function d ( a , b , c ) { var d , e = "number" == typeof b ? b : b = 0 , f = "number" == typeof c ? c : a . length ; for ( d = - 1 , e = 7 & f ; e -- ; ++ b ) d = d >>> 8 ^ J [ 255 & ( d ^ a [ b ] ) ] ; for ( e = f >> 3 ; e -- ; b += 8 ) d = d >>> 8 ^ J [ 255 & ( d ^ a [ b ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 1 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 2 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 3 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 4 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 5 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 6 ] ) ] , d = d >>> 8 ^ J [ 255 & ( d ^ a [ b + 7 ] ) ] ; return ( 4294967295 ^ d ) >>> 0 } function e ( ) { } function f ( a ) { this . buffer = new ( B ? Uint16Array : Array ) ( 2 * a ) , this . length = 0 } function g ( a ) { var b , c , d , e , f , g , h , i , j , k , l = a . length , m = 0 , n = Number . POSITIVE _INFINITY ; for ( i = 0 ; i < l ; ++ i ) a [ i ] > m && ( m = a [ i ] ) , a [ i ] < n && ( n = a [ i ] ) ; for ( b = 1 << m , c = new ( B ? Uint32Array : Array ) ( b ) , d = 1 , e = 0 , f = 2 ; d <= m ; ) { for ( i = 0 ; i < l ; ++ i ) if ( a [ i ] === d ) { for ( g = 0 , h = e , j = 0 ; j < d ; ++ j ) g = g << 1 | 1 & h , h >>= 1 ; for ( k = d << 16 | i , j = g ; j < b ; j += f ) c [ j ] = k ; ++ e } ++ d , e <<= 1 , f <<= 1 } return [ c , m , n ] } function h ( a , b ) { this . k = L , this . I = 0 , this . input = B && a instanceof Array ? new Uint8Array ( a ) : a , this . b = 0 , b && ( b . lazy && ( this . I = b . lazy ) , "number" == typeof b . compressionType && ( this . k = b . compressionType ) , b . outputBuffer && ( this . a = B && b . outputBuffer instanceof Array ? new Uint8Array ( b . outputBuffer ) : b . outputBuffer ) , "number" == typeof b . outputIndex && ( this . b = b . outputIndex ) ) , this . a || ( this . a = new ( B ? Uint8Array : Array ) ( 32768 ) ) } function i ( a , b ) { this . length = a , this . Q = b } function j ( b , c ) { function d ( b , c ) { var d , e = b . Q , f = [ ] , g = 0 ; d = P [ b . length ] , f [ g ++ ] = 65535 & d , f [ g ++ ] = d >> 16 & 255 , f [ g ++ ] = d >> 24 ; var h ; switch ( z ) { case 1 === e : h = [ 0 , e - 1 , 0 ] ; break ; case 2 === e : h = [ 1 , e - 2 , 0 ] ; break ; case 3 === e : h = [ 2 , e - 3 , 0 ] ; break ; case 4 === e : h = [ 3 , e - 4 , 0 ] ; break ; case 6 >= e : h = [ 4 , e - 5 , 1 ] ; break ; case 8 >= e : h = [ 5 , e - 7 , 1 ] ; break ; case 12 >= e : h = [ 6 , e - 9 , 2 ] ; break ; case 16 >= e : h = [ 7 , e - 13 , 2 ] ; break ; case 24 >= e : h = [ 8 , e - 17 , 3 ] ; break ; case 32 >= e : h = [ 9 , e - 25 , 3 ] ; break ; case 48 >= e : h = [ 10 , e - 33 , 4 ] ; break ; case 64 >= e : h = [ 11 , e - 49 , 4 ] ; break ; case 96 >= e : h = [ 12 , e - 65 , 5 ] ; break ; case 128 >= e : h = [ 13 , e - 97 , 5 ] ; break ; case 192 >= e : h = [ 14 , e - 129 , 6 ] ; break ; case 256 >= e : h = [ 15 , e - 193 , 6 ] ; break ; case 384 >= e : h = [ 16 , e - 257 , 7 ] ; break ; case 512 >= e : h = [ 17 , e - 385 , 7 ] ; break ; case 768 >= e : h = [ 18 , e - 513 , 8 ] ; break ; case 1024 >= e : h = [ 19 , e - 769 , 8 ] ; break ; case 1536 >= e : h = [ 20 , e - 1025 , 9 ] ; break ; case 2048 >= e : h = [ 21 , e - 1537 , 9 ] ; break ; case 3072 >= e : h = [ 22 , e - 2049 , 10 ] ; break ; case 4096 >= e : h = [ 23 , e - 3073 , 10 ] ; break ; case 6144 >= e : h = [ 24 , e - 4097 , 11 ] ; break ; case 8192 >= e : h = [ 25 , e - 6145 , 11 ] ; break ; case 12288 >= e : h = [ 26 , e - 8193 , 12 ] ; break ; case 16384 >= e : h = [ 27 , e - 12289 , 12 ] ; break ; case 24576 >= e : h = [ 28 , e - 16385 , 13 ] ; break ; case 32768 >= e : h = [ 29 , e - 24577 , 13 ] ; break ; default : a ( "invalid distance" ) } d = h , f [ g ++ ] = d [ 0 ] , f [ g ++ ] = d [ 1 ] , f [ g ++ ] = d [ 2 ] ; var i , j ; for ( i = 0 , j = f . length ; i < j ; ++ i ) p [ q ++ ] = f [ i ] ; s [ f [ 0 ] ] ++ , t [ f [ 3 ] ] ++ , r = b . length + c - 1 , m = null } var e , f , g , h , i , j , l , m , n , o = { } , p = B ? new Uint16Array ( 2 * c . length ) : [ ] , q = 0 , r = 0 , s = new ( B ? Uint32Array : Array ) ( 286 ) , t = new ( B ? Uint32Array : Array ) ( 30 ) , u = b . I ; if ( ! B ) { for ( g = 0 ; 285 >= g ; ) s [ g ++ ] = 0 ; for ( g = 0 ; 29 >= g ; ) t [ g ++ ] = 0 } for ( s [ 256 ] = 1 , e = 0 , f = c . length ; e < f ; ++ e ) { for ( g = i = 0 , h = 3 ; g < h && e + g !== f ; ++ g ) i = i << 8 | c [ e + g ] ; if ( o [ i ] === y && ( o [ i ] = [ ] ) , j = o [ i ] , ! ( 0 < r -- ) ) { for ( ; 0 < j . length && 32768 < e - j [ 0 ] ; ) j . shift ( ) ; if ( e + 3 >= f ) { for ( m && d ( m , - 1 ) , g = 0 , h = f - e ; g < h ; ++ g ) n = c [ e + g ] , p [ q ++ ] = n , ++ s [ n ] ; break } 0 < j . length ? ( l = k ( c , e , j ) , m ? m . length < l . length ? ( n = c [ e - 1 ] , p [ q ++ ] = n , ++ s [ n ] , d ( l , 0 ) ) : d ( m , - 1 ) : l . length < u ? m = l : d ( l , 0 ) ) : m ? d ( m , - 1 ) : ( n = c [ e ] , p [ q ++ ] = n , ++ s [ n ] ) } j . push ( e ) } return p [ q ++ ] = 256 , s [ 256 ] ++ , b . W = s , b . V = t , B ? p . subarray ( 0 , q ) : p } function k ( a , b , c ) { var d , e , f , g , h , j , k = 0 , l = a . length ; g = 0 , j = c . length ; a : for ( ; g < j ; g ++ ) { if ( d = c [ j - g - 1 ] , f = 3 , 3 < k ) { for ( h = k ; 3 < h ; h -- ) if ( a [ d + h - 1 ] !== a [ b + h - 1 ] ) continue a ; f = k } for ( ; 258 > f && b + f < l && a [ d + f ] === a [ b + f ] ; ) ++ f ; if ( f > k && ( e = d , k = f ) , 258 === f ) break } return new i ( k , b - e ) } function l ( a , b ) { var c , d , e , g , h , i = a . length , j = new f ( 572 ) , k = new ( B ? Uint8Array : Array ) ( i ) ; if ( ! B ) for ( g = 0 ; g < i ; g ++ ) k [ g ] = 0 ; for ( g = 0 ; g < i ; ++ g ) 0 < a [ g ] && j . push ( g , a [ g ] ) ; if ( c = Array ( j . length / 2 ) , d = new ( B ? Uint32Array : Array ) ( j . length / 2 ) , 1 === c . length ) return k [ j . pop ( ) . index ] = 1 , k ; for ( g = 0 , h =
metadata : { uaFamily : "Jyxobot" , uaName : "Jyxobot" , uaUrl : "" , uaCompany : "Jyxo s.r.o." , uaCompanyUrl : "http://jyxo.cz/" , uaIcon : "bot_Jyxobot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Jyxobot" } } , 9 : { userAgent : "Scooter/3.3" , metadata : { uaFamily : "Scooter" , uaName : "Scooter/3.3" , uaUrl : "" , uaCompany : "AltaVista" , uaCompanyUrl : "http://www.altavista.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Scooter" } } , 14 : { userAgent : "Baiduspider+(+http://www.baidu.com/search/spider.htm)" , metadata : { uaFamily : "Baiduspider" , uaName : "Baiduspider" , uaUrl : "http://www.baidu.com/search/spider.htm" , uaCompany : "Baidu" , uaCompanyUrl : "http://www.baidu.com/" , uaIcon : "bot_baiduspider.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Baiduspider" } } , 20 : { userAgent : "lmspider (lmspider@scansoft.com)" , metadata : { uaFamily : "lmspider" , uaName : "lmspider" , uaUrl : "http://www.nuance.com/" , uaCompany : "Nuance Communications, Inc." , uaCompanyUrl : "http://www.nuance.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=lmspider" } } , 25 : { userAgent : "Googlebot-Image/1.0" , metadata : { uaFamily : "Googlebot" , uaName : "Googlebot-Image/1.0" , uaUrl : "http://support.google.com/webmasters/bin/answer.py?hl=en&answer=1061943" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 31 : { userAgent : "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" , metadata : { uaFamily : "Googlebot" , uaName : "Googlebot/2.1" , uaUrl : "http://support.google.com/webmasters/bin/answer.py?hl=en&answer=1061943" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 32 : { userAgent : "ConveraMultiMediaCrawler/0.1 (+http://www.authoritativeweb.com/crawl)" , metadata : { uaFamily : "ConveraCrawler" , uaName : "ConveraMultiMediaCrawler/0.1" , uaUrl : "http://www.authoritativeweb.com/crawl" , uaCompany : "Convera Corporation" , uaCompanyUrl : "http://www.authoritativeweb.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ConveraCrawler" } } , 37 : { userAgent : "Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)" , metadata : { uaFamily : "Ask Jeeves/Teoma" , uaName : "Ask Jeeves/Teoma - b" , uaUrl : "http://about.ask.com/en/docs/about/webmasters.shtml" , uaCompany : "Ask Jeeves Inc." , uaCompanyUrl : "http://about.ask.com/en/docs/about/index.shtml" , uaIcon : "bot_AskJeeves.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Ask Jeeves/Teoma" } } , 38 : { userAgent : "NG/2.0" , metadata : { uaFamily : "NG" , uaName : "NG/2.0" , uaUrl : "" , uaCompany : "Exalead" , uaCompanyUrl : "http://exalead.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=NG" } } , 40 : { userAgent : "TutorGigBot/1.5 ( +http://www.tutorgig.info )" , metadata : { uaFamily : "TutorGigBot" , uaName : "TutorGigBot" , uaUrl : "http://www.tutorgig.com/help.html" , uaCompany : "TutorGig" , uaCompanyUrl : "http://www.tutorgig.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=TutorGigBot" } } , 43 : { userAgent : "ZACATEK_CZ_BOT (www.zacatek.cz)" , metadata : { uaFamily : "ZACATEK_CZ" , uaName : "ZACATEK_CZ_BOT" , uaUrl : "http://www.zacatek.cz/" , uaCompany : "webprovider - Adam Haken" , uaCompanyUrl : "http://www.webprovider.cz/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ZACATEK_CZ" } } , 45 : { userAgent : "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; Girafabot; girafabot at girafa dot com; http://www.girafa.com)" , metadata : { uaFamily : "Girafabot" , uaName : "Girafabot" , uaUrl : "" , uaCompany : "Girafa Inc." , uaCompanyUrl : "http://www.girafa.com/" , uaIcon : "bot_girafabot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Girafabot" } } , 47 : { userAgent : "FAST MetaWeb Crawler (helpdesk at fastsearch dot com)" , metadata : { uaFamily : "FAST MetaWeb Crawler" , uaName : "FAST MetaWeb Crawler" , uaUrl : "http://www.fast.no/glossary.aspx?m=48&amid=415" , uaCompany : "Fast Search & Transfer" , uaCompanyUrl : "http://www.fastsearch.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=FAST MetaWeb Crawler" } } , 56 : { userAgent : "psbot/0.1 (+http://www.picsearch.com/bot.html)" , metadata : { uaFamily : "psbot" , uaName : "psbot/0.1" , uaUrl : "http://www.picsearch.com/bot.html" , uaCompany : "picsearch.com" , uaCompanyUrl : "http://www.picsearch.com/" , uaIcon : " b
uaFamily : "NimbleCrawler" , uaName : "NimbleCrawler/1.15" , uaUrl : "" , uaCompany : "Healthline Networks, Inc." , uaCompanyUrl : "http://www.healthline.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=NimbleCrawler" } } , 295 : { userAgent : "MetaTagRobot/1.6 (http://www.widexl.com/remote/search-engines/metatag-analyzer.html)" , metadata : { uaFamily : "MetaTagRobot" , uaName : "MetaTagRobot/1.6" , uaUrl : "http://www.widexl.com/remote/search-engines/metatag-analyzer.html" , uaCompany : "widexl.com" , uaCompanyUrl : "http://www.widexl.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MetaTagRobot" } } , 296 : { userAgent : "sproose/0.1-alpha (sproose crawler; http://www.sproose.com/bot.html; crawler@sproose.com)" , metadata : { uaFamily : "sproose" , uaName : "sproose/0.1-alpha" , uaUrl : "http://www.sproose.com/bot.html" , uaCompany : "Sproose, Inc." , uaCompanyUrl : "http://www.sproose.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=sproose" } } , 301 : { userAgent : "Search Engine World Robots.txt Validator at http://www.searchengineworld.com/cgi-bin/robotcheck.cgi" , metadata : { uaFamily : "Search Engine World Robots.txt Validator" , uaName : "Search Engine World Robots.txt Validator" , uaUrl : "http://www.searchengineworld.com/cgi-bin/robotcheck.cgi" , uaCompany : "searchengineworld" , uaCompanyUrl : "http://www.searchengineworld.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Search Engine World Robots.txt Validator" } } , 303 : { userAgent : "Gaisbot/3.0+(robot06@gais.cs.ccu.edu.tw;+http://gais.cs.ccu.edu.tw/robot.php)" , metadata : { uaFamily : "Gaisbot" , uaName : "Gaisbot/3.0 - 06" , uaUrl : "http://gais.cs.ccu.edu.tw/robot.php" , uaCompany : "National Chung Cheng University" , uaCompanyUrl : "http://www.ccu.edu.tw/" , uaIcon : "bot_gaisbot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Gaisbot" } } , 306 : { userAgent : "Forschungsportal/0.8-dev (Testinstallation; http://www.forschungsportal.net/; fpcrawler@rrzn.uni-hannover.de)" , metadata : { uaFamily : "Forschungsportal" , uaName : "Forschungsportal/0.8-dev" , uaUrl : "http://www.forschungsportal.net/" , uaCompany : "Bundesministerium f\xfcr Bildung und Forschung" , uaCompanyUrl : "http://www.bmbf.de/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Forschungsportal" } } , 307 : { userAgent : "HooWWWer/2.2.0 (debugging run) (+http://cosco.hiit.fi/search/hoowwwer/ | mailto:crawler-info<at>hiit.fi)" , metadata : { uaFamily : "HooWWWer" , uaName : "HooWWWer/2.2.0" , uaUrl : "http://cosco.hiit.fi/search/hoowwwer/" , uaCompany : "CoSCo" , uaCompanyUrl : "http://cosco.hiit.fi/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=HooWWWer" } } , 308 : { userAgent : "OmniExplorer_Bot/6.47 (+http://www.omni-explorer.com) WorldIndexer" , metadata : { uaFamily : "OmniExplorer_Bot" , uaName : "OmniExplorer_Bot/6.47" , uaUrl : "http://www.omni-explorer.com/" , uaCompany : "" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=OmniExplorer_Bot" } } , 310 : { userAgent : "Orbiter (+http://www.dailyorbit.com/bot.htm)" , metadata : { uaFamily : "Orbiter" , uaName : "Orbiter" , uaUrl : "http://www.dailyorbit.com/bot.htm" , uaCompany : "DailyOrbit.com" , uaCompanyUrl : "http://www.dailyorbit.com/" , uaIcon : "bot_orbiter.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Orbiter" } } , 312 : { userAgent : "FAST Enterprise Crawler/6.4 (crawler@fast.no)" , metadata : { uaFamily : "FAST Enterprise Crawler" , uaName : "FAST Enterprise Crawler/6.4" , uaUrl : "http://www.fast.no/glossary.aspx?m=48&amid=415" , uaCompany : "Fast Search & Transfer" , uaCompanyUrl : "http://www.fastsearch.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=FAST Enterprise Crawler" } } , 317 : { userAgent : "csci_b659/0.13" , metadata : { uaFamily : "csci_b659" , uaName : "csci_b659/0.13" , uaUrl : "http://informatics.indiana.edu/fil/Class/b659/" , uaCompany : "Indiana University" , uaCompanyUrl : "http://www.indiana.edu/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=csci_b659" } } , 321 : { userAgent : "NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net)" , metadata : { uaFamily : "Nutch" , uaName : "NutchCVS/0.06-dev" , uaUrl : "http://www.nutch.org/docs/en/bot.html" , uaCompany : "lucene" , uaCompanyUrl : "http://lucene.apache.org/" , uaIcon : "bot_Nutch.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Nutch" } } , 323 : { userAgent : " NutchCVS / 0.7 . 1
metadata : { uaFamily : "EDI" , uaName : "EDI/1.6.5" , uaUrl : "" , uaCompany : "Daum Communications Corp." , uaCompanyUrl : "http://info.daum.net/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=EDI" } } , 560 : { userAgent : "ccubee/9.0" , metadata : { uaFamily : "ccubee" , uaName : "ccubee/9.0" , uaUrl : "http://empyreum.com/technologies/platforms/ccubee/" , uaCompany : "EMPYREUM k. s." , uaCompanyUrl : "http://empyreum.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ccubee" } } , 562 : { userAgent : "MQBOT/Nutch-0.9-dev (MQBOT Nutch Crawler; http://falcon.cs.uiuc.edu; mqbot@cs.uiuc.edu)" , metadata : { uaFamily : "MQbot" , uaName : "MQBOT/Nutch-0.9-dev" , uaUrl : "http://metaquerier.cs.uiuc.edu/crawler/" , uaCompany : "University of Illinois at Urbana-Champaign" , uaCompanyUrl : "http://www.uiuc.edu/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MQbot" } } , 563 : { userAgent : "Mozilla/5.0 (compatible; nextthing.org/1.0; +http://www.nextthing.org/bot)" , metadata : { uaFamily : "nextthing.org" , uaName : "nextthing.org/1.0" , uaUrl : "http://www.nextthing.org/bot/" , uaCompany : "Andrew Wooster" , uaCompanyUrl : "http://www.cs.hmc.edu/~awooster/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=nextthing.org" } } , 564 : { userAgent : "crawler43.ejupiter.com" , metadata : { uaFamily : "ejupiter.com" , uaName : "ejupiter.com 43" , uaUrl : "http://robot.ejupiter.com/16/robot_privacy.html" , uaCompany : "eJupiter Inc" , uaCompanyUrl : "http://www.ejupiter.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ejupiter.com" } } , 565 : { userAgent : "Szukacz/1.5 (robot; www.szukacz.pl/jakdzialarobot.html; info@szukacz.pl)" , metadata : { uaFamily : "Szukacz" , uaName : "Szukacz/1.5 b" , uaUrl : "http://www.szukacz.pl/jakdzialarobot.html" , uaCompany : "24 Godziny Sp. z o.o." , uaCompanyUrl : "http://www.szukacz.pl/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Szukacz" } } , 566 : { userAgent : "Mozilla/5.0 (compatible; BecomeBot/3.0; +http://www.become.com/site_owners.html)" , metadata : { uaFamily : "BecomeBot" , uaName : "BecomeBot/3.0 b" , uaUrl : "http://www.become.com/site_owners.html" , uaCompany : "Become, Inc." , uaCompanyUrl : "http://www.become.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=BecomeBot" } } , 567 : { userAgent : "Steeler/3.2 (http://www.tkl.iis.u-tokyo.ac.jp/~crawler/)" , metadata : { uaFamily : "Steeler" , uaName : "Steeler/3.2" , uaUrl : "http://www.tkl.iis.u-tokyo.ac.jp/~crawler/" , uaCompany : "Kitsuregawa Laboratory, The University of Tokyo" , uaCompanyUrl : "http://www.tkl.iis.u-tokyo.ac.jp/" , uaIcon : "bot_Steeler.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Steeler" } } , 569 : { userAgent : "Mozilla/4.0 (compatible; EDI/1.6.6; Edacious & Intelligent Web Robot; Daum Communications Corp., Korea)" , metadata : { uaFamily : "EDI" , uaName : "EDI/1.6.6" , uaUrl : "" , uaCompany : "Daum Communications Corp." , uaCompanyUrl : "http://info.daum.net/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=EDI" } } , 580 : { userAgent : "Blaiz-Bee/2.00.5655 (+http://www.blaiz.net)" , metadata : { uaFamily : "Blaiz-Bee" , uaName : "Blaiz-Bee/2.00.5655" , uaUrl : "http://www.rawgrunt.com/index.html" , uaCompany : "Blaiz Enterprises" , uaCompanyUrl : "http://www.blaiz.net/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Blaiz-Bee" } } , 581 : { userAgent : "Zeusbot/0.07 (Ulysseek's web-crawling robot; http://www.zeusbot.com; agent@zeusbot.com)" , metadata : { uaFamily : "Zeusbot" , uaName : "Zeusbot/0.07" , uaUrl : "http://www.zeusbot.com/" , uaCompany : "Ulysseek" , uaCompanyUrl : "http://www.ulysseek.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Zeusbot" } } , 587 : { userAgent : "MQBOT/Nutch-0.9-dev (MQBOT Crawler; http://falcon.cs.uiuc.edu; mqbot@cs.uiuc.edu)" , metadata : { uaFamily : "MQbot" , uaName : "MQBOT/Nutch-0.9-dev b" , uaUrl : "http://metaquerier.cs.uiuc.edu/crawler/" , uaCompany : "University of Illinois at Urbana-Champaign" , uaCompanyUrl : "http://www.uiuc.edu/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MQbot" } } , 588 : { userAgent : "CazoodleBot/Nutch-0.9-dev (CazoodleBot Crawler; http://www.cazoodle.com; mqbot@cazoodle.com)" , metadata : { uaFamily : "CazoodleBot" , uaName : "CazoodleBot d" , uaUrl : "http://www.cazoodle.com/cazoodlebot.php" , uaCompany : "Cazoodle Inc." , uaCompanyUrl : "http://www.cazoodle.com/" , uaIcon : "bot.png" , uaInfoUrl : " / list - of - ua / bot - detail ? bot = Cazoodle
uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Acorn" } } , 832 : { userAgent : "nestReader/0.2 (discovery; http://echonest.com/reader.shtml; reader at echonest.com)" , metadata : { uaFamily : "nestReader" , uaName : "nestReader/0.2" , uaUrl : "http://echonest.com/reader.shtml" , uaCompany : "The Echo Nest Corporation" , uaCompanyUrl : "http://echonest.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=nestReader" } } , 833 : { userAgent : "boitho.com-dc/0.86 ( http://www.boitho.com/dcbot.html )" , metadata : { uaFamily : "boitho.com-dc" , uaName : "boitho.com-dc/0.86" , uaUrl : "http://www.boitho.com/dcbot.html" , uaCompany : "Boitho" , uaCompanyUrl : "http://www.boitho.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=boitho.com-dc" } } , 835 : { userAgent : "Snappy/1.1 ( http://www.urltrends.com/ )" , metadata : { uaFamily : "Snappy" , uaName : "Snappy/1.1" , uaUrl : "http://www.urltrends.com/" , uaCompany : "Xerocity Design Group, LLC." , uaCompanyUrl : "http://www.xerocity.com/" , uaIcon : "bot_snappy.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Snappy" } } , 844 : { userAgent : "great-plains-web-spider/gpws (Flatland Industries Web Spider; http://www.flatlandindustries.com/flatlandbot.php; jason@flatlandindustries.com)" , metadata : { uaFamily : "flatlandbot" , uaName : "flatlandbot c" , uaUrl : "http://www.flatlandindustries.com/flatlandbot.php" , uaCompany : "Flatland Industries, Inc." , uaCompanyUrl : "http://www.flatlandindustries.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=flatlandbot" } } , 851 : { userAgent : "Mozilla/5.0 (compatible; FunnelBack; http://cyan.funnelback.com/robot.html)" , metadata : { uaFamily : "FunnelBack" , uaName : "FunnelBack" , uaUrl : "http://cyan.funnelback.com/robot.html" , uaCompany : "Funnelback Pty Ltd" , uaCompanyUrl : "http://www.funnelback.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=FunnelBack" } } , 856 : { userAgent : "RedBot/redbot-1.0 (Rediff.com Crawler; redbot at rediff dot com)" , metadata : { uaFamily : "RedBot" , uaName : "RedBot1.0" , uaUrl : "" , uaCompany : "Rediff.com India Limited." , uaCompanyUrl : "http://www.rediff.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=RedBot" } } , 859 : { userAgent : "Mozilla/5.0 (compatible; heritrix/1.12.0 +http://www.accelobot.com)" , metadata : { uaFamily : "Accelobot" , uaName : "Accelobot" , uaUrl : "http://www.accelobot.com/" , uaCompany : "NetBase Solutions, Inc." , uaCompanyUrl : "http://www.netbase.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Accelobot" } } , 861 : { userAgent : "wectar/Nutch-0.9 (nectar extracted form the glorious web; http://goosebumps4all.net/wectar; see website)" , metadata : { uaFamily : "wectar" , uaName : "wectar/Nutch-0.9 b" , uaUrl : "http://wectar.com/" , uaCompany : "Martin Dudek" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=wectar" } } , 865 : { userAgent : "MQBOT/Nutch-0.9-dev (MQBOT Nutch Crawler; http://vwbot.cs.uiuc.edu; mqbot@cs.uiuc.edu)" , metadata : { uaFamily : "MQbot" , uaName : "MQBOT/Nutch-0.9-dev c" , uaUrl : "http://metaquerier.cs.uiuc.edu/crawler/" , uaCompany : "University of Illinois at Urbana-Champaign" , uaCompanyUrl : "http://www.uiuc.edu/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MQbot" } } , 872 : { userAgent : "Willow Internet Crawler by Twotrees V2.1" , metadata : { uaFamily : "Willow Internet Crawler" , uaName : "Willow Internet Crawler 2.1" , uaUrl : "" , uaCompany : "Twotrees Technologies, LLC." , uaCompanyUrl : "http://www.twotrees.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Willow Internet Crawler" } } , 873 : { userAgent : "Netintelligence LiveAssessment - www.netintelligence.com" , metadata : { uaFamily : "Netintelligence LiveAssessment" , uaName : "Netintelligence LiveAssessment" , uaUrl : "" , uaCompany : "Netintelligence Limited" , uaCompanyUrl : "http://www.netintelligence.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Netintelligence LiveAssessment" } } , 874 : { userAgent : "Mozilla/5.0 (compatible; SkreemRBot +http://skreemr.com)" , metadata : { uaFamily : "SkreemRBot" , uaName : "SkreemRBot" , uaUrl : "" , uaCompany : "SkreemR" , uaCompanyUrl : "http://skreemr.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SkreemRBot" } } , 876 : { userAgent : " great - plains - web - spider / flatlandbot ( Flatland Industries Web Robot ; http : //www.flatlandindustries.com/flatlandbot.php; jason@f
uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Daumoa" } } , 1468 : { userAgent : "msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)" , metadata : { uaFamily : "MSNBot" , uaName : "msnbot-media/1.1" , uaUrl : "http://search.msn.com/msnbot.htm" , uaCompany : "Microsoft Corporation" , uaCompanyUrl : "http://www.microsoft.com/" , uaIcon : "bot_msnbot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MSNBot" } } , 1469 : { userAgent : "OOZBOT/0.20 ( -- ; http://www.setooz.com/oozbot.html ; agentname at setooz dot_com )" , metadata : { uaFamily : "Setoozbot" , uaName : "OOZBOT/0.20" , uaUrl : "http://www.setooz.com/oozbot.html" , uaCompany : "SETU Software Systems (P) Ltd." , uaCompanyUrl : "http://www.setusoftware.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Setoozbot" } } , 1470 : { userAgent : "Sogou develop spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)" , metadata : { uaFamily : "sogou spider" , uaName : "Sogou develop spider/4.0" , uaUrl : "http://www.sogou.com/docs/help/webmasters.htm#07" , uaCompany : "SOGOU.COM" , uaCompanyUrl : "http://www.sogou.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=sogou spider" } } , 1471 : { userAgent : "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)" , metadata : { uaFamily : "sogou spider" , uaName : "Sogou web spider/4.0" , uaUrl : "http://www.sogou.com/docs/help/webmasters.htm#07" , uaCompany : "SOGOU.COM" , uaCompanyUrl : "http://www.sogou.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=sogou spider" } } , 1472 : { userAgent : "SpokeSpider/1.0 (http://support.spoke.com/webspider/) Mozilla/5.0 (not really)" , metadata : { uaFamily : "SpokeSpider" , uaName : "SpokeSpider/1.0" , uaUrl : "http://support.spoke.com/webspider/" , uaCompany : "Spoke Software " , uaCompanyUrl : "http://www.spoke.com/company/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SpokeSpider" } } , 1474 : { userAgent : "Baiduspider+(+http://www.baidu.jp/spider/)" , metadata : { uaFamily : "Baiduspider" , uaName : "Baiduspider japan" , uaUrl : "http://www.baidu.com/search/spider.htm" , uaCompany : "Baidu" , uaCompanyUrl : "http://www.baidu.com/" , uaIcon : "bot_baiduspider.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Baiduspider" } } , 1475 : { userAgent : "linkdexbot/Nutch-1.0-dev (http://www.linkdex.com/; crawl at linkdex dot com)" , metadata : { uaFamily : "linkdexbot" , uaName : "linkdexbot" , uaUrl : "http://www.linkdex.com/about/bots/" , uaCompany : "Linkdex Limited." , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=linkdexbot" } } , 1476 : { userAgent : "Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)" , metadata : { uaFamily : "NaverBot" , uaName : "Yeti/1.0" , uaUrl : "http://help.naver.com/robots/" , uaCompany : "NHN Corporation" , uaCompanyUrl : "http://www.nhncorp.com/" , uaIcon : "bot_NaverBot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=NaverBot" } } , 1478 : { userAgent : "mozilla/5.0 (compatible; webmastercoffee/0.7; +http://webmastercoffee.com/about)" , metadata : { uaFamily : "webmastercoffee" , uaName : "webmastercoffee/0.7" , uaUrl : "http://webmastercoffee.com/about" , uaCompany : "Martin Schwartz" , uaCompanyUrl : "http://webmastercoffee.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=webmastercoffee" } } , 1479 : { userAgent : "boitho.com-dc/0.82 ( http://www.boitho.com/dcbot.html )" , metadata : { uaFamily : "boitho.com-dc" , uaName : "boitho.com-dc/0.82" , uaUrl : "http://www.boitho.com/dcbot.html" , uaCompany : "Boitho" , uaCompanyUrl : "http://www.boitho.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=boitho.com-dc" } } , 1480 : { userAgent : "Busiversebot/v1.0 (http://www.busiverse.com/bot.php)" , metadata : { uaFamily : "Sirketce/Busiverse" , uaName : "Busiversebot/v1.0" , uaUrl : "http://www.busiverse.com/bot.php" , uaCompany : "BerilTech" , uaCompanyUrl : "http://www.sirketce.com.tr/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Sirketce/Busiverse" } } , 1481 : { userAgent : "CatchBot/1.0; +http://www.catchbot.com" , metadata : { uaFamily : "CatchBot" , uaName : "CatchBot/1.0" , uaUrl : "http://www.catchbot.com/" , uaCompany : "Reed Business Information Pty Limited" , uaCompanyUrl : "http://www.reedbusiness.com/" , uaIcon : "bot_CatchBot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=CatchBot" } } , 1482 : { userAgent : "CazoodleBot/0.0.2 (http://www.cazoodle.com/contact.php; cbot@cazoodle.com)" , metadata : { uaFamily : "CazoodleBot" , uaName : "
uaCompany : "Yahoo! Inc" , uaCompanyUrl : "http://www.yahoo.com/" , uaIcon : "bot_yahoo!slurp.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Yahoo!" } } , 1798 : { userAgent : "LinkAider (http://linkaider.com/crawler/)" , metadata : { uaFamily : "LinkAider" , uaName : "LinkAider" , uaUrl : "http://linkaider.com/crawler/" , uaCompany : "Ivinco" , uaCompanyUrl : "http://linkaider.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=LinkAider" } } , 1805 : { userAgent : "WinWebBot/1.0; (Balaena Ltd, UK); http://www.balaena.com/winwebbot.html; winwebbot@balaena.com;)" , metadata : { uaFamily : "WinWebBot" , uaName : "WinWebBot/1.0" , uaUrl : "http://www.balaena.com/winwebbot.html" , uaCompany : "Balaena Ltd" , uaCompanyUrl : "http://www.balaena.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=WinWebBot" } } , 1815 : { userAgent : "R6_FeedFetcher(www.radian6.com/crawler)" , metadata : { uaFamily : "R6 bot" , uaName : "R6_FeedFetcher" , uaUrl : "http://www.radian6.com/crawler/" , uaCompany : "Radian6 Technologies Inc" , uaCompanyUrl : "http://www.radian6.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=R6 bot" } } , 1816 : { userAgent : "http://domino.research.ibm.com/comm/research_projects.nsf/pages/sai-crawler.callingcard.html" , metadata : { uaFamily : "SAI Crawler" , uaName : "SAI Crawler" , uaUrl : "http://domino.research.ibm.com/comm/research_projects.nsf/pages/sai-crawler.callingcard.html" , uaCompany : "IBM" , uaCompanyUrl : "http://www.ibm.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SAI Crawler" } } , 1818 : { userAgent : "Mozilla/5.0 (compatible;YodaoBot-Image/1.0;http://www.youdao.com/help/webmaster/spider/;)" , metadata : { uaFamily : "YodaoBot" , uaName : "YodaoBot-Image/1.0" , uaUrl : "http://www.youdao.com/help/webmaster/spider/" , uaCompany : "youdao" , uaCompanyUrl : "http://www.youdao.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=YodaoBot" } } , 1838 : { userAgent : "Mozilla/5.0 (compatible; Topicbot/12.0rc-2; +http://topicbot.awardspace.us/)" , metadata : { uaFamily : "Topicbot" , uaName : "Topicbot/12.0rc-2" , uaUrl : "http://topicbot.awardspace.us/" , uaCompany : "Research Group TopicBot" , uaCompanyUrl : "http://topicbot.awardspace.us/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Topicbot" } } , 1849 : { userAgent : "http://www.amagit.com/" , metadata : { uaFamily : "Amagit.COM" , uaName : "Amagit.COM" , uaUrl : "" , uaCompany : "Joshua Schwarz" , uaCompanyUrl : "http://contacts.joshuaschwarz.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Amagit.COM" } } , 1853 : { userAgent : "Sosospider+(+http://help.soso.com/webspider.htm)" , metadata : { uaFamily : "Sosospider" , uaName : "Sosospider" , uaUrl : "http://help.soso.com/webspider.htm" , uaCompany : "Tencent, Inc." , uaCompanyUrl : "http://www.tencent.com/" , uaIcon : "bot_soso.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Sosospider" } } , 1856 : { userAgent : "findlinks/1.1.5-beta7 (+http://wortschatz.uni-leipzig.de/findlinks/)" , metadata : { uaFamily : "findlinks" , uaName : "findlinks/1.1.4-beta7" , uaUrl : "http://wortschatz.uni-leipzig.de/findlinks/" , uaCompany : "Universit\xe4t Leipzig" , uaCompanyUrl : "http://www.uni-leipzig.de/" , uaIcon : "bot_findlinks.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=findlinks" } } , 1859 : { userAgent : "Mozilla/5.0 (compatible; JadynAveBot; +http://www.jadynave.com/robot)" , metadata : { uaFamily : "JadynAveBot" , uaName : "JadynAveBot" , uaUrl : "http://www.jadynave.com/robot" , uaCompany : "Yesup Ecommerce Solutions Inc." , uaCompanyUrl : "http://www.yesup.net/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=JadynAveBot" } } , 1866 : { userAgent : "smart.apnoti.com Robot/v1.34 (http://smart.apnoti.com/en/aboutApnotiWebCrawler.html)" , metadata : { uaFamily : "smart.apnoti.com Robot" , uaName : "smart.apnoti.com Robot/v1.34" , uaUrl : "http://smart.apnoti.com/en/aboutApnotiWebCrawler.html" , uaCompany : "apnoti.com GmbH" , uaCompanyUrl : "http://www.apnoti.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=smart.apnoti.com Robot" } } , 1867 : { userAgent : "MnoGoSearch/3.3.9" , metadata : { uaFamily : "MnoGoSearch" , uaName : "MnoGoSearch/3.3.9" , uaUrl : "http://www.mnogosearch.org/products.html" , uaCompany : "Lavtech.Com" , uaCompanyUrl : "http://www.lavtech.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MnoGoSearch" } } , 1869 : { userAgent : "Yandex/1.01.001 (compatible; Win16; H)" , metadata : { uaFam
uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 3132 : { userAgent : "SeznamBot/2.0-Test (+http://fulltext.sblog.cz/robot/)" , metadata : { uaFamily : "SeznamBot" , uaName : "SeznamBot/2.0-test" , uaUrl : "http://napoveda.seznam.cz/en/indexing-the-web.html" , uaCompany : "Seznam.cz, a.s." , uaCompanyUrl : "http://www.seznam.cz/" , uaIcon : "seznam.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SeznamBot" } } , 3142 : { userAgent : "SEOENGBot/1.2 (+http://learn.seoeng.com/seoengbot.htm)" , metadata : { uaFamily : "SEOENGBot" , uaName : "SEOENGBot/1.2 old" , uaUrl : "http://www.seoengine.com/seoengbot.htm" , uaCompany : "SEO Engine" , uaCompanyUrl : "http://www.seoengine.com/" , uaIcon : "bot_SEOENGBot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SEOENGBot" } } , 3203 : { userAgent : "Mozilla/5.0 (compatible; ScoutJet; http://www.scoutjet.com/)" , metadata : { uaFamily : "ScoutJet" , uaName : "ScoutJet" , uaUrl : "http://www.scoutjet.com/" , uaCompany : "blekko, inc." , uaCompanyUrl : "http://blekko.com/" , uaIcon : "bot_ScoutJet.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ScoutJet" } } , 3221 : { userAgent : "yacybot (i386 Linux 2.6.31-18-generic; java 1.6.0_0; Europe/en) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 3235 : { userAgent : "Mozilla/4.0 (compatible; HostTracker.com/1.0;+http://host-tracker.com/)" , metadata : { uaFamily : "HostTracker.com" , uaName : "HostTracker.com/1.0" , uaUrl : "http://host-tracker.com/" , uaCompany : "host-tracker.com " , uaCompanyUrl : "" , uaIcon : "bot_HostTracker.com.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=HostTracker.com" } } , 3236 : { userAgent : "Mozilla/5.0 (compatible; AportWorm/3.2; +http://www.aport.ru/help)" , metadata : { uaFamily : "AportWorm" , uaName : "AportWorm/3.2" , uaUrl : "http://www.aport.ru/help/" , uaCompany : "Golden Telecom" , uaCompanyUrl : "http://goldentelecom.ru/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=AportWorm" } } , 3238 : { userAgent : "yacybot (i386 Linux 2.6.30-2-686; java 1.6.0_0; SystemV/en) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 3292 : { userAgent : "Karneval-Bot (Version: 1.06, powered by www.karnevalsuchmaschine.de +http://www.karnevalsuchmaschine.de/bot.html)" , metadata : { uaFamily : "Karneval-Bot" , uaName : "Karneval-Bot/1.06" , uaUrl : "http://www.karnevalsuchmaschine.de/zeige/bot.html" , uaCompany : "F\xf6deration Europ\xe4ischer Narren" , uaCompanyUrl : "http://www.fen-sued.de/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Karneval-Bot" } } , 3333 : { userAgent : "Mozilla/5.0 (compatible; dotSemantic/1.0; +http://www.dotsemantic.org)" , metadata : { uaFamily : "dotSemantic" , uaName : "dotSemantic/1.0" , uaUrl : "http://www.dotsemantic.org" , uaCompany : "dotSemantic Projekt" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=dotSemantic" } } , 3379 : { userAgent : "Mozilla/5.0 (compatible; spbot/1.0; +http://www.seoprofiler.com/bot/ )" , metadata : { uaFamily : "spbot" , uaName : "spbot/1.0" , uaUrl : "http://www.seoprofiler.com/bot/" , uaCompany : "Axandra GmbH" , uaCompanyUrl : "http://www.axandra.com/" , uaIcon : "bot_spbot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=spbot" } } , 3398 : { userAgent : "L.webis/0.44 (http://webalgo.iit.cnr.it/index.php?pg=lwebis)" , metadata : { uaFamily : "L.webis" , uaName : "L.webis/0.44" , uaUrl : "http://webalgo.iit.cnr.it/index.php?pg=lwebis" , uaCompany : "Institute of Informatics and Telematics (IIT)" , uaCompanyUrl : "http://www.iit.cnr.it/" , uaIcon : "bot_L.webis.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=L.webis" } } , 3409 : { userAgent : "Cityreview Robot (+http://www.cityreview.org/crawler/)" , metadata : { uaFamily : "cityreview" , uaName : "cityreview" , uaUrl : "http://www.cityreview.org/crawler/" , uaCompany : "SISTRIX GmbH" , uaCompanyUrl : "http://www.sistrix.com/" , uaIcon : "bot_cityreview.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=cityreview" } } , 3415 : { userAgent : " Ruky - Roboter ( Version : 1.06 , powered by www . ruky . de + http : //w
uaInfoUrl : "/list-of-ua/bot-detail?bot=findlinks" } } , 5278 : { userAgent : "yacybot (amd64 Windows 7 6.1; java 1.6.0_18; Europe/de) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 5280 : { userAgent : "Mozilla/5.0 (compatible; MetamojiCrawler/1.0; +http://www.metamoji.com/jp/crawler.html" , metadata : { uaFamily : "MetamojiCrawler" , uaName : "MetamojiCrawler/1.0" , uaUrl : "http://www.metamoji.com/jp/crawler.html" , uaCompany : "MetaMoJi Corporation" , uaCompanyUrl : "http://www.metamoji.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MetamojiCrawler" } } , 5281 : { userAgent : "yacybot (amd64 Windows 7 6.1; java 1.6.0_21; Europe/fr) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 5292 : { userAgent : "findlinks/1.1.6-beta4 (+http://wortschatz.uni-leipzig.de/findlinks/)" , metadata : { uaFamily : "findlinks" , uaName : "findlinks/1.1.6-beta4" , uaUrl : "http://wortschatz.uni-leipzig.de/findlinks/" , uaCompany : "Universit\xe4t Leipzig" , uaCompanyUrl : "http://www.uni-leipzig.de/" , uaIcon : "bot_findlinks.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=findlinks" } } , 5302 : { userAgent : "HuaweiSymantecSpider/1.0+DSE-support@huaweisymantec.com+(compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR ; http://www.huaweisymantec.com/en/IRL/spider)" , metadata : { uaFamily : "HuaweiSymantecSpider" , uaName : "HuaweiSymantecSpider/1.0" , uaUrl : "http://www.huaweisymantec.com/en/IRL/spider/" , uaCompany : "Huawei Symantec Technologies Co.,Ltd." , uaCompanyUrl : "http://www.huaweisymantec.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=HuaweiSymantecSpider" } } , 5311 : { userAgent : "Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html;) Gecko/2008032620" , metadata : { uaFamily : "80legs" , uaName : "80legs/0.83 b" , uaUrl : "http://www.80legs.com/webcrawler.html" , uaCompany : "Computational Crawling, LP" , uaCompanyUrl : "http://compucrawl.com/" , uaIcon : "bot_80legs.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=80legs" } } , 5322 : { userAgent : "yacybot (amd64 Linux 2.6.31-22-server; java 1.6.0_18; Asia/en) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 5352 : { userAgent : "findlinks/1.1.6-beta5 (+http://wortschatz.uni-leipzig.de/findlinks/)" , metadata : { uaFamily : "findlinks" , uaName : "findlinks/1.1.6-beta5" , uaUrl : "http://wortschatz.uni-leipzig.de/findlinks/" , uaCompany : "Universit\xe4t Leipzig" , uaCompanyUrl : "http://www.uni-leipzig.de/" , uaIcon : "bot_findlinks.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=findlinks" } } , 5357 : { userAgent : "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" , metadata : { uaFamily : "bingbot" , uaName : "bingbot/2.0" , uaUrl : "http://www.bing.com/webmaster/help/which-crawlers-does-bing-use-8c184ec0" , uaCompany : "Microsoft Corporation" , uaCompanyUrl : "http://www.microsoft.com/" , uaIcon : "bot_msnbot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=bingbot" } } , 5360 : { userAgent : "PostPost/1.0 (+http://postpo.st/crawlers)" , metadata : { uaFamily : "PostPost" , uaName : "PostPost/1.0" , uaUrl : "http://postpost.com/crawlers" , uaCompany : "Boathouse group" , uaCompanyUrl : "http://www.boathouseinc.com/" , uaIcon : "bot_PostPost.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=PostPost" } } , 5361 : { userAgent : "WebWatch/Robot_txtChecker" , metadata : { uaFamily : "WebWatch/Robot_txtChecker" , uaName : "WebWatch/Robot_txtChecker" , uaUrl : "http://www.ukoln.ac.uk/web-focus/webwatch/services/robots-txt/" , uaCompany : "UKOLN" , uaCompanyUrl : "http://www.ukoln.ac.uk/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=WebWatch/Robot_txtChecker" } } , 5362 : { userAgent : "Robots_Tester_http_www.searchenginepromotionhelp.com" , metadata : { uaFamily : "Robots_Tester" , uaName : "Robots_Tester" , uaUrl : " http : //www.searchenginepromotionhelp.com/m
uaIcon : "bot_baiduspider.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Baiduspider" } } , 6404 : { userAgent : "Mozilla/5.0 (compatible; AhrefsBot/1.0; +http://ahrefs.com/robot/)" , metadata : { uaFamily : "AhrefsBot" , uaName : "AhrefsBot/1.0" , uaUrl : "http://ahrefs.com/robot/" , uaCompany : "Ahrefs.com" , uaCompanyUrl : "http://ahrefs.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=AhrefsBot" } } , 6436 : { userAgent : "Mozilla/5.0 (compatible; MojeekBot/0.2; http://www.mojeek.com/bot.html)" , metadata : { uaFamily : "MojeekBot" , uaName : "MojeekBot/0.2" , uaUrl : "http://www.mojeek.com/bot.html" , uaCompany : "Mojeek Ltd." , uaCompanyUrl : "http://www.mojeek.com/" , uaIcon : "bot_MojeekBot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=MojeekBot" } } , 6506 : { userAgent : "SEOENGWorldBot/1.0 (+http://www.seoengine.com/seoengbot.htm)" , metadata : { uaFamily : "SEOENGBot" , uaName : "SEOENGBot/1.0" , uaUrl : "http://www.seoengine.com/seoengbot.htm" , uaCompany : "SEO Engine" , uaCompanyUrl : "http://www.seoengine.com/" , uaIcon : "bot_SEOENGBot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SEOENGBot" } } , 6514 : { userAgent : "Mozilla/5.0 (compatible; socketcrawler; http://nlp.fi.muni.cz/projects/biwec/)" , metadata : { uaFamily : "biwec" , uaName : "biwec" , uaUrl : "http://nlp.fi.muni.cz/projects/biwec/" , uaCompany : "Centre for Natural Language Processing" , uaCompanyUrl : "http://muni.cz/fi/335300?lang=en" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=biwec" } } , 6515 : { userAgent : "Wotbox/2.0 (bot@wotbox.com; http://www.wotbox.com)" , metadata : { uaFamily : "Wotbox" , uaName : "Wotbox/2.0" , uaUrl : "http://www.wotbox.com/bot/" , uaCompany : "Wotbox Team" , uaCompanyUrl : "http://www.wotbox.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Wotbox" } } , 6578 : { userAgent : "Mozilla/5.0 (compatible; Thumbshots.ru; +http://thumbshots.ru/bot) Firefox/3" , metadata : { uaFamily : "Thumbshots.ru" , uaName : "Thumbshots.ru" , uaUrl : "http://thumbshots.ru/bot" , uaCompany : "Sonorth Technologies" , uaCompanyUrl : "http://www.sonorth.com/tech/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Thumbshots.ru" } } , 6583 : { userAgent : "JikeSpider Mozilla/5.0 (compatible; JikeSpider; +http://shoulu.jike.com/spider.html)" , metadata : { uaFamily : "JikeSpider" , uaName : "JikeSpider" , uaUrl : "http://shoulu.jike.com/spider.html" , uaCompany : "jike.com" , uaCompanyUrl : "http://www.jike.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=JikeSpider" } } , 6592 : { userAgent : "Aboundex/0.2 (http://www.aboundex.com/crawler/)" , metadata : { uaFamily : "Aboundexbot" , uaName : "Aboundexbot/0.2" , uaUrl : "http://www.aboundex.com/crawler/" , uaCompany : "Aboundex.com" , uaCompanyUrl : "http://www.aboundex.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Aboundexbot" } } , 6598 : { userAgent : "Mozilla/5.0 (compatible; SEOkicks-Robot +http://www.seokicks.de/robot.html)" , metadata : { uaFamily : "SEOkicks-Robot" , uaName : "SEOkicks-Robot" , uaUrl : "http://www.seokicks.de/robot.html" , uaCompany : "Torsten R\xfcckert Internetdienstleistungen" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=SEOkicks-Robot" } } , 6603 : { userAgent : "Y!J-BRW/1.0 crawler (http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html)" , metadata : { uaFamily : "Yahoo! JAPAN" , uaName : "Y!J-BRW/1.0" , uaUrl : "http://help.yahoo.co.jp/help/jp/search/indexing/indexing-15.html" , uaCompany : "Yahoo! Inc" , uaCompanyUrl : "http://www.yahoo.com/" , uaIcon : "bot_yahoo!slurp.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Yahoo! JAPAN" } } , 6612 : { userAgent : "The Lemur Web Crawler/Nutch-1.3 (Lemur Web Crawler; http://boston.lti.cs.cmu.edu/crawler_12/; admin@lemurproject.org)" , metadata : { uaFamily : "LemurWebCrawler" , uaName : "LemurWebCrawler" , uaUrl : "http://boston.lti.cs.cmu.edu/crawler_12/" , uaCompany : "Language Technologies Institute" , uaCompanyUrl : "http://www.lti.cs.cmu.edu/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=LemurWebCrawler" } } , 6625 : { userAgent : "LapozzBot/1.5 (+http://robot.lapozz.hu) " , metadata : { uaFamily : "LapozzBot" , uaName : "LapozzBot/1.5" , uaUrl : "http://robot.lapozz.hu/" , uaCompany : "lapozz.hu" , uaCompanyUrl : "http://www.lapozz.hu/" , uaIcon : "bot_lapozzbot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=LapozzBot" } } , 6630 : { userAgent : " CovarioIDS / 1.1 ( http : //www.covario.com/ids; support at covario
metadata : { uaFamily : "heritrix" , uaName : "heritrix/3.1.1" , uaUrl : "http://www.archive.org/details/archive.org_bot" , uaCompany : "Internet Archive" , uaCompanyUrl : "" , uaIcon : "bot_heritrix.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=heritrix" } } , 7230 : { userAgent : "AddThis.com robot tech.support@clearspring.com" , metadata : { uaFamily : "AddThis.com" , uaName : "AddThis.com robot" , uaUrl : "" , uaCompany : "Clearspring Technologies, Inc." , uaCompanyUrl : "http://www.clearspring.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=AddThis.com" } } , 7238 : { userAgent : "Mozilla/5.0 (compatible; Netseer crawler/2.0; +http://www.netseer.com/crawler.html; crawler@netseer.com)" , metadata : { uaFamily : "Netseer" , uaName : "Netseer crawler/2.0" , uaUrl : "http://www.netseer.com/crawler.html" , uaCompany : "NetSeer, Inc." , uaCompanyUrl : "http://www.netseer.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Netseer" } } , 7243 : { userAgent : "Mozilla/5.0 (compatible; EventGuruBot/1.0; +http://www.eventguru.com/spider.html)" , metadata : { uaFamily : "EventGuruBot" , uaName : "EventGuruBot/1.0" , uaUrl : "http://www.eventguru.com/spider.html" , uaCompany : "Matt Wells" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=EventGuruBot" } } , 7252 : { userAgent : "yacybot (freeworld/global; amd64 Linux 2.6.26-2-amd64; java 1.6.0_18; Europe/de) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 7253 : { userAgent : "yacybot (freeworld/global; amd64 Windows Server 2008 6.0; java 1.7.0_03; Europe/en) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 7258 : { userAgent : "SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" , metadata : { uaFamily : "Googlebot" , uaName : "Googlebot-Mobile/2.1" , uaUrl : "http://googlewebmastercentral.blogspot.com/2011/12/introducing-smartphone-googlebot-mobile.html" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 7259 : { userAgent : "DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" , metadata : { uaFamily : "Googlebot" , uaName : "Googlebot-Mobile/2.1" , uaUrl : "http://googlewebmastercentral.blogspot.com/2011/12/introducing-smartphone-googlebot-mobile.html" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 7260 : { userAgent : "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" , metadata : { uaFamily : "Googlebot" , uaName : "Googlebot-Mobile/2.1" , uaUrl : "http://googlewebmastercentral.blogspot.com/2011/12/introducing-smartphone-googlebot-mobile.html" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 7263 : { userAgent : "yacybot (freeworld/global; amd64 Windows 7 6.1; java 1.6.0_24; Europe/de) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 7265 : { userAgent : "Acoon v4.10.5 (www.acoon.de)" , metadata : { uaFamily : "AcoonBot" , uaName : "Acoon v4.10.5" , uaUrl : "http://www.acoon.de/robot.asp" , uaCompany : "Acoon GmbH" , uaCompanyUrl : "http://www.acoon.de/" , uaIcon : "bot_Acoon.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=AcoonBot" } } , 7267 : { userAgent : "SemrushBot/0.92" , metadata : { uaFamily : "SemrushBot" , uaName : "SemrushBot/0.92" , uaUrl : "http://www.semrush.com/bot.html" , uaCompany : "SEOQuake Team" , uaCompanyUrl : "http://www.seoquaketeam.com/" , uaIcon : "bot.png" ,
} } , 7671 : { userAgent : "Sogou Web Spider" , metadata : { uaFamily : "sogou spider" , uaName : "Sogou web spider" , uaUrl : "http://www.sogou.com/docs/help/webmasters.htm#07" , uaCompany : "SOGOU.COM" , uaCompanyUrl : "http://www.sogou.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=sogou spider" } } , 7675 : { userAgent : "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.0; trendictionbot0.5.0; trendiction search; http://www.trendiction.de/bot; please let us know of any problems; web at trendiction.com) Gecko/20071127 Firefox/3.0.0.11" , metadata : { uaFamily : "trendictionbot " , uaName : "trendictionbot0.5.0" , uaUrl : "http://www.trendiction.de/bot" , uaCompany : "Trendiction S.A." , uaCompanyUrl : "http://www.trendiction.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=trendictionbot " } } , 7676 : { userAgent : "ichiro/3.0 (http://search.goo.ne.jp/option/use/sub4/sub4-1/)" , metadata : { uaFamily : "ichiro" , uaName : "ichiro/3.0" , uaUrl : "http://search.goo.ne.jp/option/use/sub4/sub4-1/" , uaCompany : "NTT-Resonant Inc." , uaCompanyUrl : "http://www.nttr.co.jp/" , uaIcon : "bot_ichiro.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ichiro" } } , 7696 : { userAgent : "bot-pge.chlooe.com/1.0.0 (+http://www.chlooe.com/)" , metadata : { uaFamily : "bot-pge.chlooe.com" , uaName : "bot-pge.chlooe.com/1.0.0" , uaUrl : "http://bot-pge.chlooe.com/" , uaCompany : "Chlooe.com" , uaCompanyUrl : "http://www.chlooe.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=bot-pge.chlooe.com" } } , 7697 : { userAgent : "Mozilla/5.0(compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)" , metadata : { uaFamily : "Sosospider" , uaName : "Sosospider/2.0" , uaUrl : "http://help.soso.com/webspider.htm" , uaCompany : "Tencent, Inc." , uaCompanyUrl : "http://www.tencent.com/" , uaIcon : "bot_soso.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Sosospider" } } , 7717 : { userAgent : "Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)" , metadata : { uaFamily : "GrapeshotCrawler" , uaName : "GrapeshotCrawler/2.0" , uaUrl : "http://www.grapeshot.co.uk/crawler.php" , uaCompany : "Grapeshot Limited" , uaCompanyUrl : "http://www.grapeshot.co.uk/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=GrapeshotCrawler" } } , 7718 : { userAgent : "Mozilla/5.0 (compatible; grapeFX/0.9; crawler@grapeshot.co.uk" , metadata : { uaFamily : "GrapeshotCrawler" , uaName : "grapeFX/0.9" , uaUrl : "http://www.grapeshot.co.uk/crawler.php" , uaCompany : "Grapeshot Limited" , uaCompanyUrl : "http://www.grapeshot.co.uk/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=GrapeshotCrawler" } } , 7726 : { userAgent : "Mozilla/5.0 (compatible; Infohelfer/1.3.0; +http://www.infohelfer.de/crawler.php)" , metadata : { uaFamily : "Infohelfer" , uaName : "Infohelfer/1.3.0" , uaUrl : "http://www.infohelfer.de/crawler.php" , uaCompany : "ITam GmbH" , uaCompanyUrl : "http://www.itam-gmbh.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Infohelfer" } } , 7727 : { userAgent : "coccoc/1.0 (http://help.coccoc.vn/)" , metadata : { uaFamily : "coccoc" , uaName : "coccoc/1.0" , uaUrl : "http://help.coccoc.com/" , uaCompany : "Coc Coc" , uaCompanyUrl : "http://coccoc.vn/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=coccoc" } } , 7729 : { userAgent : "yacybot (freeworld/global; amd64 Windows 7 6.1; java 1.6.0_25; Europe/de) http://yacy.net/bot.html" , metadata : { uaFamily : "yacybot" , uaName : "yacybot" , uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 7732 : { userAgent : "Bad-Neighborhood Link Analyzer (http://www.bad-neighborhood.com/)" , metadata : { uaFamily : "Bad-Neighborhood" , uaName : "Bad-Neighborhood Link Analyzer" , uaUrl : "http://www.bad-neighborhood.com/text-link-tool.htm" , uaCompany : "Michael VanDeMar" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Bad-Neighborhood" } } , 7733 : { userAgent : "Bad Neighborhood Header Detector (http://www.bad-neighborhood.com/header_detector.php)" , metadata : { uaFamily : "Bad-Neighborhood" , uaName : "Bad Neighborhood Header Detector" , uaUrl : "http://www.bad-neighborhood.com/header_detector.php" , uaCompany : "Michael VanDeMar" , uaCompanyUrl : "" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Bad-Neighborhood" } } , 7747 : { userAgent : " Whoismindbot / 1.0 ( + htt
uaUrl : "http://yacy.net/bot.html" , uaCompany : "Michael Christen" , uaCompanyUrl : "" , uaIcon : "bot_yacybot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=yacybot" } } , 9717 : { userAgent : "Sogou web spider/4.0l-2m!" , metadata : { uaFamily : "sogou spider" , uaName : "Sogou web spider/4.0l-2m!" , uaUrl : "http://www.sogou.com/docs/help/webmasters.htm#07" , uaCompany : "SOGOU.COM" , uaCompanyUrl : "http://www.sogou.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=sogou spider" } } , 9737 : { userAgent : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko; Google Web Preview) Chrome/22.0.1229 Safari/537.4" , metadata : { uaFamily : "Googlebot" , uaName : "Google Web Preview" , uaUrl : "http://support.google.com/webmasters/bin/answer.py?hl=en&answer=1062498" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "bot_googlebot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Googlebot" } } , 9781 : { userAgent : "Mozilla/5.0 (compatible; uMBot-FC/1.0; mailto: crawling@ubermetrics-technologies.com)" , metadata : { uaFamily : "uMBot" , uaName : "uMBot-FC/1.0" , uaUrl : "" , uaCompany : "uberMetrics Technologies GmbH" , uaCompanyUrl : "http://www.ubermetrics-technologies.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=uMBot" } } , 9784 : { userAgent : "Mozilla/5.0 (compatible; coccoc/1.0; +http://help.coccoc.com/)" , metadata : { uaFamily : "coccoc" , uaName : "coccoc/1.0" , uaUrl : "http://help.coccoc.com/" , uaCompany : "Coc Coc" , uaCompanyUrl : "http://coccoc.vn/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=coccoc" } } , 9832 : { userAgent : "Mozilla/5.0 (compatible; Mozilla; +http://wiki.github.com/bixo/bixo/bixocrawler; bixo-dev@yahoogroups.com)" , metadata : { uaFamily : "bixocrawler" , uaName : "bixocrawler" , uaUrl : "http://wiki.github.com/bixo/bixo/bixocrawler" , uaCompany : "Bixo Labs" , uaCompanyUrl : "http://openbixo.org/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=bixocrawler" } } , 9839 : { userAgent : "Mozilla/5.0 (compatible; aiHitBot/2.7; +http://www.aihit.com/)" , metadata : { uaFamily : "aiHitBot" , uaName : "aiHitBot/2.7" , uaUrl : "" , uaCompany : "aiHit Ltd" , uaCompanyUrl : "http://aihit.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=aiHitBot" } } , 9852 : { userAgent : "Mozilla/5.0 (compatible; GigaBot/1.0; +http://www.gigablast.com/ )" , metadata : { uaFamily : "Gigabot" , uaName : "Gigabot/1.0" , uaUrl : "http://www.gigablast.com/spider.html" , uaCompany : "Gigablast Inc" , uaCompanyUrl : "http://www.gigablast.com/" , uaIcon : "bot_gigabot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Gigabot" } } , 9868 : { userAgent : "CirrusExplorer/1.1 (http://www.cireu.com/explorer.php)" , metadata : { uaFamily : "CirrusExplorer" , uaName : "CirrusExplorer/1.1" , uaUrl : "http://www.cireu.com/explorer.php" , uaCompany : "cireu.com" , uaCompanyUrl : "http://www.cireu.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=CirrusExplorer" } } , 9874 : { userAgent : "Mozilla/5.0 (compatible; uMBot-LN/1.0; mailto: crawling@ubermetrics-technologies.com)" , metadata : { uaFamily : "uMBot" , uaName : "uMBot-LN/1.0" , uaUrl : "" , uaCompany : "uberMetrics Technologies GmbH" , uaCompanyUrl : "http://www.ubermetrics-technologies.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=uMBot" } } , 9875 : { userAgent : "Crowsnest/0.5 (+http://www.crowsnest.tv/)" , metadata : { uaFamily : "Crowsnest" , uaName : "Crowsnest/0.5" , uaUrl : "" , uaCompany : "Gocro, Inc." , uaCompanyUrl : "http://www.gocro.jp/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=Crowsnest" } } , 9877 : { userAgent : "QuerySeekerSpider ( http://queryseeker.com/bot.html )" , metadata : { uaFamily : "QuerySeekerSpider" , uaName : "QuerySeekerSpider" , uaUrl : "http://queryseeker.com/bot.html" , uaCompany : "QueryEye Inc." , uaCompanyUrl : "http://queryeye.com/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=QuerySeekerSpider" } } , 9905 : { userAgent : "ownCloud Server Crawler" , metadata : { uaFamily : "ownCloud Server Crawler" , uaName : "ownCloud Server Crawler" , uaUrl : "" , uaCompany : "ownCloud comunity" , uaCompanyUrl : "http://owncloud.org/" , uaIcon : "bot.png" , uaInfoUrl : "/list-of-ua/bot-detail?bot=ownCloud Server Crawler" } } , 9918 : { userAgent : "Mozilla/5.0 (compatible; rogerBot/1.0; UrlCrawler; http://www.seomoz.org/dp/rogerbot)" , metadata : { uaFamily : "rogerbot" , uaName : "rogerbot/1.0" , uaUrl : " http : //moz.com/help/pro/what-is-roge
} , os : { 1 : { osFamily : "Windows" , osName : "Windows XP" , osUrl : "http://en.wikipedia.org/wiki/Windows_XP" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windowsxp.png" } , 2 : { osFamily : "Windows" , osName : "Windows 2000" , osUrl : "http://en.wikipedia.org/wiki/Windows_2000" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windows.png" } , 3 : { osFamily : "Windows" , osName : "Windows 2003 Server" , osUrl : "http://en.wikipedia.org/wiki/Windows_2003" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windowsxp.png" } , 4 : { osFamily : "Windows" , osName : "Windows 95" , osUrl : "http://en.wikipedia.org/wiki/Windows_95" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windows.png" } , 5 : { osFamily : "Windows" , osName : "Windows 98" , osUrl : "http://en.wikipedia.org/wiki/Windows_98" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windows.png" } , 6 : { osFamily : "Windows" , osName : "Windows 3.x" , osUrl : "http://en.wikipedia.org/wiki/Windows_3.x" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windows.png" } , 7 : { osFamily : "Windows" , osName : "Windows CE" , osUrl : "http://en.wikipedia.org/wiki/Windows_CE" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windowsce.png" } , 8 : { osFamily : "Windows" , osName : "Windows ME" , osUrl : "http://en.wikipedia.org/wiki/Windows_me" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windows.png" } , 9 : { osFamily : "Windows" , osName : "Windows Vista" , osUrl : "http://en.wikipedia.org/wiki/Windows_Vista" , osCompany : "Microsoft Corporation." , osCompanyUrl : "http://www.microsoft.com/" , osIcon : "windowsvista.png" } , 10 : { osFamily : "JVM" , osName : "JVM (Platform Micro Edition)" , osUrl : "http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition" , osCompany : "Sun Microsystems, Inc." , osCompanyUrl : "http://en.wikipedia.org/wiki/Sun_Microsystems" , osIcon : "java.png" } , 11 : { osFamily : "Linux" , osName : "Linux (CentOS)" , osUrl : "http://www.centos.org/" , osCompany : "CentOS Project" , osCompanyUrl : "http://www.centos.org/" , osIcon : "linux_centos.png" } , 12 : { osFamily : "Linux" , osName : "Linux (Ubuntu)" , osUrl : "http://www.ubuntu.com/" , osCompany : "Canonical Ltd." , osCompanyUrl : "http://www.canonical.com/" , osIcon : "linux_ubuntu.png" } , 13 : { osFamily : "Linux" , osName : "Linux (Debian)" , osUrl : "http://www.debian.org/" , osCompany : "Software in the Public Interest, Inc." , osCompanyUrl : "http://www.spi-inc.org/" , osIcon : "linux_debian.png" } , 14 : { osFamily : "Linux" , osName : "Linux (Fedora)" , osUrl : "http://fedoraproject.org/" , osCompany : "Red Hat, Inc." , osCompanyUrl : "http://www.redhat.com/" , osIcon : "linux_fedora.png" } , 15 : { osFamily : "Linux" , osName : "Linux (Gentoo)" , osUrl : "http://www.gentoo.org/" , osCompany : "Gentoo Foundation, Inc." , osCompanyUrl : "http://www.gentoo.org/foundation/en/" , osIcon : "linux_gentoo.png" } , 16 : { osFamily : "Linux" , osName : "Linux (Linspire)" , osUrl : "http://en.wikipedia.org/wiki/Linspire" , osCompany : "Linspire, Inc." , osCompanyUrl : "http://www.linspire.com/" , osIcon : "linux_linspire.png" } , 17 : { osFamily : "Linux" , osName : "Linux (Mandriva)" , osUrl : "http://www.mandriva.com/" , osCompany : "" , osCompanyUrl : "" , osIcon : "linux_mandriva.png" } , 18 : { osFamily : "Linux" , osName : "Linux (RedHat)" , osUrl : "http://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux" , osCompany : "Red Hat, Inc." , osCompanyUrl : "http://www.redhat.com/" , osIcon : "linux_redhat.png" } , 19 : { osFamily : "Linux" , osName : "Linux" , osUrl : "http://en.wikipedia.org/wiki/Linux" , osCompany : "" , osCompanyUrl : "" , osIcon : "linux.png" } , 20 : { osFamily : "Linux" , osName : "Linux (Slackware)" , osUrl : "http://www.slackware.com/" , osCompany : "Slackware Linux, Inc." , osCompanyUrl : "" , osIcon : "linux_slackware.png" } , 21 : { osFamily : "Linux" , osName : "Linux (Kanotix)" , osUrl : "http://kanotix.com/" , osCompany : "" , osCompanyUrl : "" , osIcon : "linux_kanotix.png" } , 22 : { osFamily : "Linux" , osName : "Linux (SUSE)" , osUrl : "http://www.suse.com/" , osCompany : "Novell, Inc." , osCompanyUrl : "http://www.novell.com/home/" , osIcon : "linux_suse.png" } , 23 : { osFamily : "Linux" , osName : "Linux (Knoppix)" , osUrl : "http://knoppix.net/" , osCompany : "Klaus Knopper" , osCompanyUrl : " http : //w
uaCompany : "Fenrir Inc." , uaCompanyUrl : "http://www.fenrir-inc.com/" , uaIcon : "sleipnir.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Sleipnir" } } , 61 : { typeId : "0" , metadata : { uaFamily : "Swiftfox" , uaUrl : "http://www.getswiftfox.com/" , uaCompany : "Jason Halme" , uaCompanyUrl : "" , uaIcon : "swiftfox.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Swiftfox" } } , 62 : { typeId : "1" , metadata : { uaFamily : "Teleport Pro" , uaUrl : "http://www.tenmax.com/teleport/pro/home.htm" , uaCompany : "Tennyson Maxwell Information Systems, Inc." , uaCompanyUrl : "http://www.tenmax.com/" , uaIcon : "teleportpro.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Teleport Pro" } } , 71 : { typeId : "1" , metadata : { uaFamily : "WebCopier" , uaUrl : "http://www.maximumsoft.com/products/wc_index.html" , uaCompany : "MaximumSoft Corp." , uaCompanyUrl : "http://www.maximumsoft.com/" , uaIcon : "webcopier.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=WebCopier" } } , 74 : { typeId : "0" , metadata : { uaFamily : "Phaseout" , uaUrl : "http://www.phaseout.net/" , uaCompany : "PhaseOut.net" , uaCompanyUrl : "http://www.phaseout.net/" , uaIcon : "phaseout.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Phaseout" } } , 79 : { typeId : "4" , metadata : { uaFamily : "Thunderbird" , uaUrl : "http://www.mozilla.com/en-US/thunderbird/" , uaCompany : "Mozilla Foundation" , uaCompanyUrl : "http://www.mozilla.org/" , uaIcon : "thunderbird.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Thunderbird" } } , 81 : { typeId : "3" , metadata : { uaFamily : "Doris" , uaUrl : "http://www.anygraaf.fi/browser/indexe.htm" , uaCompany : "Anygraaf" , uaCompanyUrl : "http://www.anygraaf.fi/" , uaIcon : "doris.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Doris" } } , 82 : { typeId : "0" , metadata : { uaFamily : "Enigma browser" , uaUrl : "http://www.suttondesigns.com/" , uaCompany : "Advanced Search Technologies, Inc." , uaCompanyUrl : "http://www.advancedsearchcorp.com/" , uaIcon : "enigmabrowser.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Enigma browser" } } , 85 : { typeId : "5" , metadata : { uaFamily : "Jakarta Commons-HttpClient" , uaUrl : "http://jakarta.apache.org/commons/httpclient/" , uaCompany : "Apache Software Foundation" , uaCompanyUrl : "http://www.apache.org/" , uaIcon : "jakarta.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Jakarta Commons-HttpClient" } } , 86 : { typeId : "5" , metadata : { uaFamily : "cURL" , uaUrl : "http://curl.haxx.se/" , uaCompany : "team Haxx" , uaCompanyUrl : "http://www.haxx.se/" , uaIcon : "curl.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=cURL" } } , 87 : { typeId : "0" , metadata : { uaFamily : "Amaya" , uaUrl : "http://www.w3.org/Amaya/" , uaCompany : "World Wide Web Consortium" , uaCompanyUrl : "http://www.w3.org/" , uaIcon : "amaya.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Amaya" } } , 88 : { typeId : "1" , metadata : { uaFamily : "GetRight" , uaUrl : "http://www.getright.com/" , uaCompany : "Headlight Software, Inc." , uaCompanyUrl : "http://www.headlightinc.com/" , uaIcon : "getright.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=GetRight" } } , 89 : { typeId : "0" , metadata : { uaFamily : "Off By One" , uaUrl : "http://offbyone.com/" , uaCompany : "Home Page Software Inc." , uaCompanyUrl : "http://homepagesw.com/" , uaIcon : "offbyone.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Off By One" } } , 90 : { typeId : "5" , metadata : { uaFamily : "Python-urllib" , uaUrl : "http://www.python.org/doc/current/lib/module-urllib.html" , uaCompany : "Python Software Foundation" , uaCompanyUrl : "http://www.python.org/psf/" , uaIcon : "pythonurllib.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Python-urllib" } } , 91 : { typeId : "0" , metadata : { uaFamily : "w3m" , uaUrl : "http://w3m.sourceforge.net/" , uaCompany : "Sakamoto Hironori" , uaCompanyUrl : "http://www2u.biglobe.ne.jp/%7Ehsaka/" , uaIcon : "w3m.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=w3m" } } , 93 : { typeId : "1" , metadata : { uaFamily : "WebZIP" , uaUrl : "http://www.spidersoft.com/webzip/" , uaCompany : "Spidersoft" , uaCompanyUrl : "http://www.spidersoft.com/" , uaIcon : "webzip.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=WebZIP" } } , 94 : { typeId : "0" , metadata : { uaFamily : "ICE browser" , uaUrl : "http://www.icesoft.com/products/icebrowser.html" , uaCompany : "ICEsoft Technologies Inc." , uaCompanyUrl : "http://www.icesoft.com/" , uaIcon : "icebrowser.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=ICE browser" } } , 96 : { typeId : "0" , metadata : { uaFamily : " IceApe
uaIcon : "newsbreak.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=NewsBreak" } } , 238 : { typeId : "20" , metadata : { uaFamily : "LinkbackPlugin for Laconica" , uaUrl : "http://laconi.ca/" , uaCompany : "Laconica Developer Community" , uaCompanyUrl : "http://laconi.ca/trac/wiki/DeveloperCommunity" , uaIcon : "laconica.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=LinkbackPlugin for Laconica" } } , 239 : { typeId : "20" , metadata : { uaFamily : "Microsoft WebDAV client" , uaUrl : "" , uaCompany : "Microsoft Corporation." , uaCompanyUrl : "http://www.microsoft.com/" , uaIcon : "webdav.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Microsoft WebDAV client" } } , 240 : { typeId : "20" , metadata : { uaFamily : "GnomeVFS" , uaUrl : "http://developer.gnome.org/doc/API/2.0/gnome-vfs-2" , uaCompany : "The GNOME Project" , uaCompanyUrl : "http://www.gnome.org/" , uaIcon : "webdav.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=GnomeVFS" } } , 241 : { typeId : "0" , metadata : { uaFamily : "Uzbl" , uaUrl : "http://www.uzbl.org/" , uaCompany : "" , uaCompanyUrl : "" , uaIcon : "uzbl.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Uzbl" } } , 242 : { typeId : "10" , metadata : { uaFamily : "Cynthia" , uaUrl : "http://www.contentquality.com/" , uaCompany : "HiSoftware Inc." , uaCompanyUrl : "http://www.hisoftware.com/" , uaIcon : "cynthia.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Cynthia" } } , 243 : { typeId : "15" , metadata : { uaFamily : "Sage" , uaUrl : "http://sage.mozdev.org" , uaCompany : "Peter Andrews" , uaCompanyUrl : "http://petea.org/" , uaIcon : "sage.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Sage" } } , 244 : { typeId : "18" , metadata : { uaFamily : "Banshee" , uaUrl : "http://banshee-project.org/" , uaCompany : "Novell, Inc." , uaCompanyUrl : "http://www.novell.com/" , uaIcon : "banshee.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Banshee" } } , 245 : { typeId : "0" , metadata : { uaFamily : "Wyzo" , uaUrl : "http://www.wyzo.com/" , uaCompany : "Radical Software Ltd." , uaCompanyUrl : "http://www.radicalsoft.com/" , uaIcon : "wyzo.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Wyzo" } } , 246 : { typeId : "15" , metadata : { uaFamily : "RSSOwl" , uaUrl : "http://www.rssowl.org/" , uaCompany : "Benjamin Pasero" , uaCompanyUrl : "" , uaIcon : "rssowl.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=RSSOwl" } } , 247 : { typeId : "0" , metadata : { uaFamily : "ABrowse" , uaUrl : "http://en.wikipedia.org/wiki/ABrowse" , uaCompany : "Kurt Skauen" , uaCompanyUrl : "http://www.syllable.org/" , uaIcon : "abrowse.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=ABrowse" } } , 248 : { typeId : "20" , metadata : { uaFamily : "Funambol Outlook Sync Client" , uaUrl : "https://www.forge.funambol.org/download/" , uaCompany : "Funambol, Inc." , uaCompanyUrl : "http://funambol.com/" , uaIcon : "funambol-outlook.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Funambol Outlook Sync Client" } } , 249 : { typeId : "20" , metadata : { uaFamily : "Funambol Mozilla Sync Client" , uaUrl : "https://mozilla-plugin.forge.funambol.org/ " , uaCompany : "Carlo Codega" , uaCompanyUrl : "http://sazilla.blogspot.com" , uaIcon : "funambol-mozilla.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Funambol Mozilla Sync Client" } } , 250 : { typeId : "15" , metadata : { uaFamily : "RSS Menu" , uaUrl : "http://www.edot-studios.com/webgroups2/index.php?menu_item=212" , uaCompany : "e dot studios" , uaCompanyUrl : "http://www.edot-studios.com/" , uaIcon : "rss_menu.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=RSS Menu" } } , 251 : { typeId : "18" , metadata : { uaFamily : "foobar2000" , uaUrl : "http://www.foobar2000.org/" , uaCompany : "Peter Pawlowski" , uaCompanyUrl : "" , uaIcon : "foobar2000.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=foobar2000" } } , 252 : { typeId : "5" , metadata : { uaFamily : "GStreamer" , uaUrl : "http://gstreamer.freedesktop.org/" , uaCompany : "GStreamer community" , uaCompanyUrl : "http://gstreamer.freedesktop.org/" , uaIcon : "GStreamer.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=GStreamer" } } , 253 : { typeId : "20" , metadata : { uaFamily : "NetFront Mobile Content Viewer" , uaUrl : "http://www.access-company.com/products/mobile_solutions/netfrontmobile/contentviewer/index.html" , uaCompany : "ACCESS CO., LTD." , uaCompanyUrl : "http://www.access-company.com/" , uaIcon : "netfront.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=NetFront Mobile Content Viewer" } } , 254 : { typeId : "5" , metadata : { uaFamily : "PHP OpenID library" , uaUrl : " http : //openidenabled.
uaInfoUrl : "/list-of-ua/browser-detail?browser=Powermarks" } } , 374 : { typeId : "15" , metadata : { uaFamily : "Safari RSS reader" , uaUrl : "http://www.apple.com/safari/" , uaCompany : "Apple Inc." , uaCompanyUrl : "http://www.apple.com/" , uaIcon : "rss.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Safari RSS reader" } } , 375 : { typeId : "20" , metadata : { uaFamily : "Google Friend Connect" , uaUrl : "http://www.google.com/friendconnect/" , uaCompany : "Google Inc." , uaCompanyUrl : "http://www.google.com/" , uaIcon : "google_friend_connect.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Google Friend Connect" } } , 376 : { typeId : "15" , metadata : { uaFamily : "Feed Viewer" , uaUrl : "http://feedviewer.codeplex.com/" , uaCompany : "vasek7" , uaCompanyUrl : "http://www.codeplex.com/site/users/view/vasek7" , uaIcon : "rss.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Feed Viewer" } } , 377 : { typeId : "0" , metadata : { uaFamily : "RockMelt" , uaUrl : "http://www.rockmelt.com/" , uaCompany : "Rockmelt, Inc." , uaCompanyUrl : "http://www.rockmelt.com/" , uaIcon : "rockmelt.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=RockMelt" } } , 378 : { typeId : "0" , metadata : { uaFamily : "Epic" , uaUrl : "http://www.epicbrowser.com/" , uaCompany : "Hidden Reflex" , uaCompanyUrl : "http://www.hiddenreflex.com/" , uaIcon : "epic.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Epic" } } , 379 : { typeId : "0" , metadata : { uaFamily : "InternetSurfboard" , uaUrl : "http://inetsurfboard.sourceforge.net/" , uaCompany : "Philipp Ruppel" , uaCompanyUrl : "" , uaIcon : "internetSurfboard.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=InternetSurfboard" } } , 380 : { typeId : "0" , metadata : { uaFamily : "Vonkeror" , uaUrl : "http://zzo38computer.cjb.net/vonkeror/" , uaCompany : "zzo38" , uaCompanyUrl : "http://zzo38computer.cjb.net/" , uaIcon : "conkeror.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Vonkeror" } } , 381 : { typeId : "15" , metadata : { uaFamily : "IE RSS reader" , uaUrl : "http://en.wikipedia.org/wiki/Windows_RSS_Platform" , uaCompany : "Microsoft" , uaCompanyUrl : "http://www.microsoft.com/" , uaIcon : "rss.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=IE RSS reader" } } , 382 : { typeId : "15" , metadata : { uaFamily : "Trileet NewsRoom" , uaUrl : "http://feedmonger.blogspot.com/" , uaCompany : "Trileet Inc." , uaCompanyUrl : "http://www.trileet.com/" , uaIcon : "rss.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Trileet NewsRoom" } } , 383 : { typeId : "10" , metadata : { uaFamily : "Validator.nu" , uaUrl : "http://validator.nu/" , uaCompany : "Henri Sivonen" , uaCompanyUrl : "http://hsivonen.iki.fi/author/" , uaIcon : "validator_nu.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Validator.nu" } } , 384 : { typeId : "5" , metadata : { uaFamily : "Zend_Http_Client" , uaUrl : "http://framework.zend.com/manual/en/zend.http.html" , uaCompany : "Zend Technologies Ltd." , uaCompanyUrl : "http://www.zend.com/" , uaIcon : "zend_http_client.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Zend_Http_Client" } } , 385 : { typeId : "3" , metadata : { uaFamily : "Skyfire" , uaUrl : "http://www.skyfire.com/" , uaCompany : "Skyfire Labs, Inc." , uaCompanyUrl : "http://www.skyfire.com/about" , uaIcon : "skyfire.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Skyfire" } } , 386 : { typeId : "3" , metadata : { uaFamily : "GO Browser" , uaUrl : "http://www.gobrowser.cn/" , uaCompany : "GO Dev Team" , uaCompanyUrl : "" , uaIcon : "go_browser.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=GO Browser" } } , 387 : { typeId : "0" , metadata : { uaFamily : "Surf" , uaUrl : "http://surf.suckless.org/" , uaCompany : "suckless.org" , uaCompanyUrl : "http://suckless.org/" , uaIcon : "surf.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=Surf" } } , 388 : { typeId : "20" , metadata : { uaFamily : "iGooMap" , uaUrl : "http://www.pointworks.de/software/igoomap/index.php" , uaCompany : "PointWorks.de" , uaCompanyUrl : "http://www.pointworks.de/" , uaIcon : "igoomap.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=iGooMap" } } , 389 : { typeId : "18" , metadata : { uaFamily : "iTunes" , uaUrl : "http://www.apple.com/itunes/" , uaCompany : "Apple Inc." , uaCompanyUrl : "http://www.apple.com/" , uaIcon : "itunes.png" , uaInfoUrl : "/list-of-ua/browser-detail?browser=iTunes" } } , 390 : { typeId : "0" , metadata : { uaFamily : "BlackHawk" , uaUrl : "http://www.netgate.sk/blackhawk/help/welcome-to-blackhawk-web-browser.html" , uaCompany : "NETGATE Technologies s.r.o. " , uaCompanyUrl : "http://www.netgate.sk/" , uaIcon : " blackha
} , 58 : { regexp : /libwww\-perl\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "51" } , 59 : { regexp : /mozilla[\s\S]*Lunascape\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "52" } , 60 : { regexp : /mozilla[\s\S]*Maxthon ([0-9a-z\+\-\.]+)/i , browserId : "53" } , 61 : { regexp : /mozilla[\s\S]*MSIE [0-9a-z\+\-\.]+[\s\S]*MyIE2/i , browserId : "53" } , 62 : { regexp : /mozilla[\s\S]*(rv:[0-9\.]+)[\s\S]*gecko\/[0-9]+[\s\S]*/i , browserId : "54" } , 63 : { regexp : /mozilla[\s\S]*MultiZilla ([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "55" } , 64 : { regexp : /mozilla[\s\S]*MSIE [0-9a-z\+\-\.]+[\s\S]*NetCaptor ([0-9a-z\+\-\.]+)/i , browserId : "56" } , 65 : { regexp : /Netgem\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "57" } , 66 : { regexp : /netsurf\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "58" } , 67 : { regexp : /mozilla[\s\S]*MSIE [0-9a-z\+\-\.]+[\s\S]*Sleipnir\/([0-9a-z\+\-\.]+)/i , browserId : "59" } , 69 : { regexp : /mozilla[\s\S]*rv:[0-9\.]+[\s\S]*gecko\/[0-9]+[\s\S]*firefox\/([0-9a-z\+\-\.]+)[\s\S]*swiftfox/i , browserId : "61" } , 70 : { regexp : /Teleport Pro\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "62" } , 77 : { regexp : /sunrise[ \/]([0-9a-z\+\-\.\/]+)/i , browserId : "19" } , 78 : { regexp : /mozilla[\s\S]*galeon\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "6" } , 79 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*\(KHTML, like Gecko\)$/i , browserId : "466" } , 80 : { regexp : /Openwave/i , browserId : "32" } , 81 : { regexp : /MSIE ([0-9a-z\+\-\.]+)[\s\S]*windows ce/i , browserId : "157" } , 82 : { regexp : /mozilla[\s\S]*\/[0-9\.]+[\s\S]*gecko[\s\S]*firefox[\s\S]*/i , browserId : "3" } , 83 : { regexp : /mozilla[\s\S]*(rv:[0-9\.]+)[\s\S]*/i , browserId : "54" } , 86 : { regexp : /webcopier[\s\S]*v([0-9a-z\.]+)/i , browserId : "71" } , 89 : { regexp : /MSIE[\s\S]*PhaseOut/i , browserId : "74" } , 94 : { regexp : /^Mozilla[\s\S]*Thunderbird\/([0-9a-zA-Z\.]+)/i , browserId : "79" } , 95 : { regexp : /^DoCoMo\//i , browserId : "33" } , 97 : { regexp : /doris\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "81" } , 98 : { regexp : /^Enigma browser$/i , browserId : "82" } , 100 : { regexp : /lwp\-request\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "51" } , 102 : { regexp : /Jakarta Commons-HttpClient\/([0-9a-zA-Z\.\-]+)/i , browserId : "85" } , 103 : { regexp : /IBrowse/i , browserId : "31" } , 104 : { regexp : /^curl ([0-9a-zA-Z\.\-]+)/i , browserId : "86" } , 105 : { regexp : /Aweb[\s\S]*Amiga/i , browserId : "29" } , 106 : { regexp : /amaya\/([0-9a-zA-Z\.\-+]+)/i , browserId : "87" } , 107 : { regexp : /GetRight\/([0-9a-zA-Z\.\-\+]+)/i , browserId : "88" } , 108 : { regexp : /^Mozilla[\s\S]*OmniWeb\/([1-9a-zA-z\.\-]+)/i , browserId : "18" } , 109 : { regexp : /Mozilla[\s\S]*OffByOne/i , browserId : "89" } , 110 : { regexp : /Python\-urllib\/([0-9a-zA-Z\.\-]+)/i , browserId : "90" } , 111 : { regexp : /w3m\/([0-9a-zA-z\-\+\.]+)/i , browserId : "91" } , 113 : { regexp : /^WebZIP\/([0-9a-zA-Z\.\-]+)/i , browserId : "93" } , 114 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Shiira\/([0-9a-zA-z\.\-]+)/i , browserId : "21" } , 115 : { regexp : /ICEbrowser\/([0-9a-z_\.\-]+)/i , browserId : "94" } , 117 : { regexp : /Blazer ([0-9\.]+)/i , browserId : "43" } , 118 : { regexp : /Iceape\/([0-9a-zA-z\.\-]+)/i , browserId : "96" } , 120 : { regexp : /Jakarta Commons\-HttpClient/i , browserId : "85" } , 122 : { regexp : /HotJava\/([0-9a-zA-Z\.\- ]+)/i , browserId : "99" } , 123 : { regexp : /JoBo\/([0-9a-z\.\-]+)/i , browserId : "100" } , 126 : { regexp : /Sleipnir Version ([0-9a-z\.]+)/i , browserId : "59" } , 130 : { regexp : /poe-component-client-http\/([0-9a-z\.\-]+)/i , browserId : "105" } , 137 : { regexp : /snoopy v([1-9\.]+)/i , browserId : "111" } , 138 : { regexp : /Lynx/i , browserId : "25" } , 139 : { regexp : /libwww\-perl/i , browserId : "51" } , 141 : { regexp : /NetFront([0-9a-z\.]+)[\s\S]*/i , browserId : "33" } , 143 : { regexp : /^opera ([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "17" } , 147 : { regexp : /NCSA_Mosaic\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "117" } , 149 : { regexp : /mozilla[\s\S]*rv:[0-9\.]+[\s\S]*gecko[\s\S]*kapiko\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "119" } , 150 : { regexp : /mozilla[\s\S]*chrome\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "120" } , 151 : { regexp : /mozilla[\s\S]*applewebkit[\s\S]*AdobeAIR\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "121" } , 152 : { regexp : /^lwp-trivial\/([0-9.]+)$/i , browserId : "122" } , 153 : { regexp : /^WWW-Mechanize\/([0-9a-z\+\-\.]+)/i , browserId : "123" } , 155 : { regexp : /^Xenu Link Sleuth ([0-9a-z\+\-\.]+)$/i , browserId : "124" } , 156 : { regexp : /^SiteSucker\/([0-9a-z\.]+)/i , browserId : "125" } , 157 : { regexp : /mozilla[\s\S]*applewebkit[\s\S]*arora\/([0-9a-z\+\-\.]+)[\s\S]*/i , browserId : "126" } , 160 : { regexp : / m o z i l l a [ \ s \ S ] * r v : [ 0 - 9 \ . ] + [ \ s \ S ] *
browserId : "433" } , 550 : { regexp : /^python-requests\/([0-9\.]+)/i , browserId : "434" } , 551 : { regexp : /^AtomicBrowser\/([0-9\.]+)[\s\S]*CFNetwork/i , browserId : "436" } , 552 : { regexp : /^Reeder\/([0-9\.]+)[\s\S]*CFNetwork/i , browserId : "437" } , 553 : { regexp : /^Mozilla[\s\S]*Mobile[\s\S]*rv[\s\S]*Gecko[\s\S]*Firefox\/([0-9\.]+)/i , browserId : "133" } , 554 : { regexp : /Mozilla[\s\S]*Mac[\s\S]*rv[\s\S]*Gecko[\s\S]*Firefox\/([0-9a-b\.]+)[\s\S]*TenFourFox/i , browserId : "439" } , 555 : { regexp : /^PEAR HTTP_Request class \( http:\/\/pear[\s\S]php[\s\S]net\/ \)/i , browserId : "440" } , 556 : { regexp : /Mozilla[\s\S]*compatible[\s\S]*DPlus ([0-9\.]+)/i , browserId : "441" } , 557 : { regexp : /^WordPress\/[0-9\.]+; http:\/\//i , browserId : "438" } , 558 : { regexp : /Mozilla[\s\S]*Windows[\s\S]*Gecko[\s\S]*Firefox[\s\S]*AvantBrowser\/Tri-Core/i , browserId : "41" } , 559 : { regexp : /Mozilla[\s\S]*AppleWebKit[\s\S]*zBrowser\/SpringSun-([0-9\.]+)/i , browserId : "442" } , 560 : { regexp : /Mozilla[\s\S]*AppleWebKit[\s\S]*zBrowser\/NigtSky-([0-9\.]+)/i , browserId : "442" } , 561 : { regexp : /Mozilla[\s\S]*AppleWebKit[\s\S]*KHTML[\s\S]*SlimBoat\/([0-9\.]+)/i , browserId : "443" } , 562 : { regexp : /Opera[\s\S]*Opera Tablet[\s\S]*Presto[\s\S]*Version\/([0-9\.]+)/i , browserId : "321" } , 563 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Chrome\/([0-9\.]+)[\s\S]*Mobile Safari/i , browserId : "423" } , 564 : { regexp : /^Mozilla[\s\S]*iPhone[\s\S]*AppleWebKit[\s\S]*CriOS\/([0-9\.]+)[\s\S]*Mobile[\s\S]*Safari/i , browserId : "423" } , 565 : { regexp : /^Mechanize\/([0-9\.]+)[\s\S]*Ruby[\s\S]*github[\s\S]com\/tenderlove\/mechanize/i , browserId : "445" } , 566 : { regexp : /^htmlayout ([0-9\.]+)[\s\S]*Win[\s\S]*www\.terrainformatica\.com/i , browserId : "446" } , 567 : { regexp : /^The Bat! Voyager ([0-9\.]+)$/i , browserId : "330" } , 568 : { regexp : /^Mozilla[\s\S]*MSIE[\s\S]*Windows[\s\S]*SaaYaa/i , browserId : "447" } , 569 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Qt\/[0-9\.]+[\s\S]*Ryouko\/([0-9\.]+)[\s\S]*Safari/i , browserId : "448" } , 570 : { regexp : /^Anemone\/([0-9\.]+)$/i , browserId : "449" } , 571 : { regexp : /^Mozilla[\s\S]*OS X[\s\S]*AppleWebKit[\s\S]*KHTML[\s\S]*Sparrow\/([0-9\.]+)/i , browserId : "450" } , 572 : { regexp : /^SubStream\/([0-9\.]+)[\s\S]* CFNetwork/i , browserId : "451" } , 573 : { regexp : /^Mozilla[\s\S]*iPad[\s\S]*AppleWebKit[\s\S]*CriOS\/([0-9\.]+)[\s\S]*Mobile[\s\S]*Safari/i , browserId : "423" } , 574 : { regexp : /^Barca\/([0-9\.]+)/i , browserId : "452" } , 575 : { regexp : /^BarcaPro\/([0-9\.]+)/i , browserId : "452" } , 576 : { regexp : /A1 Sitemap Generator\/([0-9\.]+)[\s\S]*microsystools[\s\S]com/i , browserId : "453" } , 577 : { regexp : /^Mozilla[\s\S]*Playstation Vita[\s\S]*AppleWebKit[\s\S]*Silk\/([0-9\.]+)/i , browserId : "454" } , 578 : { regexp : /^MQQBrowser\/([0-9\.]+)/i , browserId : "455" } , 579 : { regexp : /^MQQBrowser\/(Mini[0-9\.]+)/i , browserId : "455" } , 580 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Chrome[\s\S]*Beamrise\/([0-9\.]+)/i , browserId : "456" } , 581 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Beamrise\/([0-9\.]+)[\s\S]*Chrome/i , browserId : "456" } , 582 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Chrome[\s\S]*YaBrowser\/([0-9\.]+)/i , browserId : "457" } , 583 : { regexp : /^Mozilla[\s\S]*Silk\/([0-9\.\-]+)[\s\S]*safari/i , browserId : "458" } , 584 : { regexp : /^Apache-HttpClient\/([0-9\.]+)/i , browserId : "459" } , 585 : { regexp : /^Mozilla.*Nintendo WiiU.*AppleWebKit.*NX.*NintendoBrowser\/([0-9\.]+)/ , browserId : "460" } , 586 : { regexp : /^DellWebMonitor\/([0-9\.]+)/ , browserId : "461" } , 587 : { regexp : /^FeedDemon\/([0-9\.]+)[\s\S]*(www\.feeddemon\.com|www\.newsgator\.com)/i , browserId : "462" } , 588 : { regexp : /^XMLRPC::Client \(Ruby ([0-9\.]+)\)$/i , browserId : "463" } , 589 : { regexp : /^PocomailPE\/([0-9\.]+)/i , browserId : "356" } , 590 : { regexp : /Pattern\/([0-9\.]+)[\s\S]*[\s\S]clips\.ua\.ac\.be\/pages\/pattern/i , browserId : "464" } , 592 : { regexp : /^Eudora\/?([0-9a-z\.]+)*/i , browserId : "465" } , 593 : { regexp : /^Mozilla[\s\S]*Windows[\s\S]*Gecko[\s\S]*Polarity\/([0-9\.]+)/i , browserId : "467" } , 594 : { regexp : /^Mozilla[\s\S]*AppleWebKit[\s\S]*Superbird\/([0-9\.]+)/i , browserId : "468" } , 595 : { regexp : /^Microsoft Office\/14[\s\S]*Microsoft Outlook 14/i , browserId : "326" } , 596 : { regexp : /mozilla[\s\S]*AppleWebKit[\s\S]*NetFrontLifeBrowser\/([0-9\.]+)/i , browserId : "469" } , 597 : { regexp : / m o z i l l a [ \ s \ S ] * a p p l e w e b k i t [ \ s \ S ] * \ / [ 0 - 9 a - z \ + \ - \ . ] + [ \ s \ S ] * v e r s i o n \ / ( [ 0 - 9 a - z \ + \ - \ . ] + ) [ \ s \ S ] * s a f a r i \ / [ 0 - 9 a - z \ + \
lineNumber : tb , lineStart : ub , start : e , end : sb } ) : ( b = c . substr ( 0 , 2 ) , g === b [ 1 ] && "+-<>&|" . indexOf ( g ) >= 0 || "=>" === b ? ( sb += 2 , { type : ib . Punctuator , value : b , lineNumber : tb , lineStart : ub , start : e , end : sb } ) : "<>=!+-*%&|^/" . indexOf ( g ) >= 0 ? ( ++ sb , { type : ib . Punctuator , value : g , lineNumber : tb , lineStart : ub , start : e , end : sb } ) : void S ( { } , ob . UnexpectedToken , "ILLEGAL" ) ) ) } function x ( a ) { for ( var b = "" ; sb < vb && d ( qb [ sb ] ) ; ) b += qb [ sb ++ ] ; return 0 === b . length && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) , h ( qb . charCodeAt ( sb ) ) && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) , { type : ib . NumericLiteral , value : parseInt ( "0x" + b , 16 ) , lineNumber : tb , lineStart : ub , start : a , end : sb } } function y ( a ) { for ( var b = "0" + qb [ sb ++ ] ; sb < vb && e ( qb [ sb ] ) ; ) b += qb [ sb ++ ] ; return ( h ( qb . charCodeAt ( sb ) ) || c ( qb . charCodeAt ( sb ) ) ) && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) , { type : ib . NumericLiteral , value : parseInt ( b , 8 ) , octal : ! 0 , lineNumber : tb , lineStart : ub , start : a , end : sb } } function z ( ) { var a , d , f ; if ( f = qb [ sb ] , b ( c ( f . charCodeAt ( 0 ) ) || "." === f , "Numeric literal must start with a decimal digit or a decimal point" ) , d = sb , a = "" , "." !== f ) { if ( a = qb [ sb ++ ] , f = qb [ sb ] , "0" === a ) { if ( "x" === f || "X" === f ) return ++ sb , x ( d ) ; if ( e ( f ) ) return y ( d ) ; f && c ( f . charCodeAt ( 0 ) ) && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) } for ( ; c ( qb . charCodeAt ( sb ) ) ; ) a += qb [ sb ++ ] ; f = qb [ sb ] } if ( "." === f ) { for ( a += qb [ sb ++ ] ; c ( qb . charCodeAt ( sb ) ) ; ) a += qb [ sb ++ ] ; f = qb [ sb ] } if ( "e" === f || "E" === f ) if ( a += qb [ sb ++ ] , f = qb [ sb ] , "+" !== f && "-" !== f || ( a += qb [ sb ++ ] ) , c ( qb . charCodeAt ( sb ) ) ) for ( ; c ( qb . charCodeAt ( sb ) ) ; ) a += qb [ sb ++ ] ; else S ( { } , ob . UnexpectedToken , "ILLEGAL" ) ; return h ( qb . charCodeAt ( sb ) ) && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) , { type : ib . NumericLiteral , value : parseFloat ( a ) , lineNumber : tb , lineStart : ub , start : d , end : sb } } function A ( ) { var a , c , d , f , h , i , j , k , l = "" , m = ! 1 ; for ( j = tb , k = ub , a = qb [ sb ] , b ( "'" === a || '"' === a , "String literal must starts with a quote" ) , c = sb , ++ sb ; sb < vb ; ) { if ( d = qb [ sb ++ ] , d === a ) { a = "" ; break } if ( "\\" === d ) if ( d = qb [ sb ++ ] , d && g ( d . charCodeAt ( 0 ) ) ) ++ tb , "\r" === d && "\n" === qb [ sb ] && ++ sb , ub = sb ; else switch ( d ) { case "u" : case "x" : "{" === qb [ sb ] ? ( ++ sb , l += s ( ) ) : ( i = sb , h = r ( d ) , h ? l += h : ( sb = i , l += d ) ) ; break ; case "n" : l += "\n" ; break ; case "r" : l += "\r" ; break ; case "t" : l += "\t" ; break ; case "b" : l += "\b" ; break ; case "f" : l += "\f" ; break ; case "v" : l += "\v" ; break ; default : e ( d ) ? ( f = "01234567" . indexOf ( d ) , 0 !== f && ( m = ! 0 ) , sb < vb && e ( qb [ sb ] ) && ( m = ! 0 , f = 8 * f + "01234567" . indexOf ( qb [ sb ++ ] ) , "0123" . indexOf ( d ) >= 0 && sb < vb && e ( qb [ sb ] ) && ( f = 8 * f + "01234567" . indexOf ( qb [ sb ++ ] ) ) ) , l += String . fromCharCode ( f ) ) : l += d } else { if ( g ( d . charCodeAt ( 0 ) ) ) break ; l += d } } return "" !== a && S ( { } , ob . UnexpectedToken , "ILLEGAL" ) , { type : ib . StringLiteral , value : l , octal : m , startLineNumber : j , startLineStart : k , lineNumber : tb , lineStart : ub , start : c , end : sb } } function B ( a , b ) { var c ; try { c = new RegExp ( a , b ) } catch ( a ) { S ( { } , ob . InvalidRegExp ) } return c } function C ( ) { var a , c , d , e , f ; for ( a = qb [ sb ] , b ( "/" === a , "Regular expression literal must start with a slash" ) , c = qb [ sb ++ ] , d = ! 1 , e = ! 1 ; sb < vb ; ) if ( a = qb [ sb ++ ] , c += a , "\\" === a ) a = qb [ sb ++ ] , g ( a . charCodeAt ( 0 ) ) && S ( { } , ob . UnterminatedRegExp ) , c += a ; else if ( g ( a . charCodeAt ( 0 ) ) ) S ( { } , ob . UnterminatedRegExp ) ; else if ( d ) "]" === a && ( d = ! 1 ) ; else { if ( "/" === a ) { e = ! 0 ; break } "[" === a && ( d = ! 0 ) } return e || S ( { } , ob . UnterminatedRegExp ) , f = c . substr ( 1 , c . length - 2 ) , { value : f , literal : c } } function D ( ) { var a , b , c , d ; for ( b = "" , c = "" ; sb < vb && ( a = qb [ sb ] , i ( a . charCodeAt ( 0 ) ) ) ; ) if ( ++ sb , "\\" === a && sb < vb ) if ( a = qb [ sb ] , "u" === a ) { if ( ++ sb , d = sb , a = r ( "u" ) ) for ( c += a , b += "\\u" ; d < sb ; ++ d ) b += qb [ d ] ; else sb = d , c += "u" , b += "\\u" ; T ( { } , ob . UnexpectedToken , "ILLEGAL" ) } else b += "\\" , T ( { } , ob . UnexpectedToken , "ILLEGAL" ) ; else c += a , b += a ; return { value : c , literal : b } } function E ( ) { var a , b , c , d ; return wb = null , q ( ) , a = sb , b = C ( ) , c = D ( ) , d = B ( b . value , c . value ) , yb . tokenize ? { type : ib . RegularExpression , value : d , lineNumber : tb , lineStart : ub , start : a , end : sb } : { literal : b . literal + c . literal , value : d , start : a , end : sb } } function F ( ) { var a , b , c , d ; return q ( ) , a = sb , b = { start : { line : tb , column : sb - ub } } , c = E ( ) , b . end = { line : tb , column : sb - ub } , yb . tokenize || ( yb . tokens . length > 0 && ( d = yb . tokens [ yb . tokens . length - 1 ] , d . range [ 0 ] === a && "Punctuator" === d . type && ( "/" !== d . value && "/=" !== d . value || yb . tokens . pop ( ) ) ) , yb . tokens . push ( { type : "RegularExpression" , value : c . literal , range : [ a , sb ] , loc : b } ) ) , c } function G ( a ) { return a . type === ib . Identifier || a . type === ib . Keyword || a . type === ib . BooleanLiteral || a . type === ib . NullLiteral } function H ( ) { var a , b ; if ( a = yb . tokens [ yb . tokens .
NonAsciiIdentifierPart : new RegExp ( " [ \ xaa \ xb5 \ xba \ xc0 - \ xd6 \ xd8 - \ xf6 \ xf8 - \u02c1\u02c6 - \u02d1\u02e0 - \u02e4\u02ec\u02ee\u0300 - \u0374\u0376\u0377\u037a - \u037d\u037f\u0386\u0388 - \u038a\u038c\u038e - \u03a1\u03a3 - \u03f5\u03f7 - \u0481\u0483 - \u0487\u048a - \u052f\u0531 - \u0556\u0559\u0561 - \u0587\u0591 - \u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0 - \u05ea\u05f0 - \u05f2\u0610 - \u061a\u0620 - \u0669\u066e - \u06d3\u06d5 - \u06dc\u06df - \u06e8\u06ea - \u06fc\u06ff\u0710 - \u074a\u074d - \u07b1\u07c0 - \u07f5\u07fa\u0800 - \u082d\u0840 - \u085b\u08a0 - \u08b2\u08e4 - \u0963\u0966 - \u096f\u0971 - \u0983\u0985 - \u098c\u098f\u0990\u0993 - \u09a8\u09aa - \u09b0\u09b2\u09b6 - \u09b9\u09bc - \u09c4\u09c7\u09c8\u09cb - \u09ce\u09d7\u09dc\u09dd\u09df - \u09e3\u09e6 - \u09f1\u0a01 - \u0a03\u0a05 - \u0a0a\u0a0f\u0a10\u0a13 - \u0a28\u0a2a - \u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e - \u0a42\u0a47\u0a48\u0a4b - \u0a4d\u0a51\u0a59 - \u0a5c\u0a5e\u0a66 - \u0a75\u0a81 - \u0a83\u0a85 - \u0a8d\u0a8f - \u0a91\u0a93 - \u0aa8\u0aaa - \u0ab0\u0ab2\u0ab3\u0ab5 - \u0ab9\u0abc - \u0ac5\u0ac7 - \u0ac9\u0acb - \u0acd\u0ad0\u0ae0 - \u0ae3\u0ae6 - \u0aef\u0b01 - \u0b03\u0b05 - \u0b0c\u0b0f\u0b10\u0b13 - \u0b28\u0b2a - \u0b30\u0b32\u0b33\u0b35 - \u0b39\u0b3c - \u0b44\u0b47\u0b48\u0b4b - \u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f - \u0b63\u0b66 - \u0b6f\u0b71\u0b82\u0b83\u0b85 - \u0b8a\u0b8e - \u0b90\u0b92 - \u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8 - \u0baa\u0bae - \u0bb9\u0bbe - \u0bc2\u0bc6 - \u0bc8\u0bca - \u0bcd\u0bd0\u0bd7\u0be6 - \u0bef\u0c00 - \u0c03\u0c05 - \u0c0c\u0c0e - \u0c10\u0c12 - \u0c28\u0c2a - \u0c39\u0c3d - \u0c44\u0c46 - \u0c48\u0c4a - \u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60 - \u0c63\u0c66 - \u0c6f\u0c81 - \u0c83\u0c85 - \u0c8c\u0c8e - \u0c90\u0c92 - \u0ca8\u0caa - \u0cb3\u0cb5 - \u0cb9\u0cbc - \u0cc4\u0cc6 - \u0cc8\u0cca - \u0ccd\u0cd5\u0cd6\u0cde\u0ce0 - \u0ce3\u0ce6 - \u0cef\u0cf1\u0cf2\u0d01 - \u0d03\u0d05 - \u0d0c\u0d0e - \u0d10\u0d12 - \u0d3a\u0d3d - \u0d44\u0d46 - \u0d48\u0d4a - \u0d4e\u0d57\u0d60 - \u0d63\u0d66 - \u0d6f\u0d7a - \u0d7f\u0d82\u0d83\u0d85 - \u0d96\u0d9a - \u0db1\u0db3 - \u0dbb\u0dbd\u0dc0 - \u0dc6\u0dca\u0dcf - \u0dd4\u0dd6\u0dd8 - \u0ddf\u0de6 - \u0def\u0df2\u0df3\u0e01 - \u0e3a\u0e40 - \u0e4e\u0e50 - \u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94 - \u0e97\u0e99 - \u0e9f\u0ea1 - \u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead - \u0eb9\u0ebb - \u0ebd\u0ec0 - \u0ec4\u0ec6\u0ec8 - \u0ecd\u0ed0 - \u0ed9\u0edc - \u0edf\u0f00\u0f18\u0f19\u0f20 - \u0f29\u0f35\u0f37\u0f39\u0f3e - \u0f47\u0f49 - \u0f6c\u0f71 - \u0f84\u0f86 - \u0f97\u0f99 - \u0fbc\u0fc6\u1000 - \u1049\u1050 - \u109d\u10a0 - \u10c5\u10c7\u10cd\u10d0 - \u10fa\u10fc - \u1248\u124a - \u124d\u1250 - \u1256\u1258\u125a - \u125d\u1260 - \u1288\u128a - \u128d\u1290 - \u12b0\u12b2 - \u12b5\u12b8 - \u12be\u12c0\u12c2 - \u12c5\u12c8 - \u12d6\u12d8 - \u1310\u1312 - \u1315\u1318 - \u135a\u135d - \u135f\u1380 - \u138f\u13a0 - \u13f4\u1401 - \u166c\u166f - \u167f\u1681 - \u169a\u16a0 - \u16ea\u16ee - \u16f8\u1700 - \u170c\u170e - \u1714\u1720 - \u1734\u1740 - \u1753\u1760 - \u176c\u176e - \u1770\u1772\u1773\u1780 - \u17d3\u17d7\u17dc\u17dd\u17e0 - \u17e9\u180b - \u180d\u1810 - \u1819\u1820 - \u1877\u1880 - \u18aa\u18b0 - \u18f5\u1900 - \u191e\u1920 - \u192b\u1930 - \u193b\u1946 - \u196d\u1970 - \u1974\u1980 - \u19ab\u19b0 - \u19c9\u19d0 - \u19d9\u1a00 - \u1a1b\u1a20 - \u1a5e\u1a60 - \u1a7c\u1a7f - \u1a89\u1a90 - \u1a99\u1aa7\u1ab0 - \u1abd\u1b00 - \u1b4b\u1b50 - \u1b59\u1b6b - \u1b73\u1b80 - \u1bf3\u1c00 - \u1c37\u1c40 - \u1c49\u1c4d - \u1c7d\u1cd0 - \u1cd2\u1cd4 - \u1cf6\u1cf8\u1cf9\u1d00 - \u1df5\u1dfc - \u1f15\u1f18 - \u1f1d\u1f20 - \u1f45\u1f48 - \u1f4d\u1f50 - \u1f57\u1f59\u1f5b\u1f5d\u1f5f - \u1f7d\u1f80 - \u1fb4\u1fb6 - \u1fbc\u1fbe\u1fc2 - \u1fc4\u1fc6 - \u1fcc\u1fd0 - \u1fd3\u1fd6 - \u1fdb\u1fe0 - \u1fec\u1ff2 - \u1ff4\u1ff6 - \u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090 - \u209c\u20d0 - \u20dc\u20e1\u20e5 - \u20f0\u2102\u2107\u210a - \u2113\u2115\u2119 - \u211d\u2124\u2126\u2128\u212a - \u212d\u212f - \u2139\u213c - \u213f\u2145 - \u2149\u214e\u2160 - \u2188\u2c00 - \u2c2e\u2c30 - \u2c5e\u2c60 - \u2ce4\u2ceb - \u2cf3\u2d00 - \u2d25\u2d27\u2d2d\u2d30 - \u2d67\u2d6f\u2d7f - \u2d96\u2da0 - \u2da6\u2da8 - \u2dae\u2db0 - \u2db6\u2db8 - \u2dbe\u2dc0 - \u2dc6\u2dc8 - \u2dce\u2dd0 - \u2dd6\u2dd8 - \u2dde\u2de0 - \u2dff\u2e2f\u3005 - \u3007\u3021 - \u302f\u3031 - \u3035\u3038 - \u303c\u3041 - \u3096\u3099\u309a\u309d - \u309f\u30a1 - \u30fa\u30fc - \u30ff\u3105 - \u312d\u3131 - \u318e\u31a0 - \u31ba\u31f0 - \ u3
precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) , ")" ) : e . push ( ")" ) } ) , e . push ( C ( a . body , "" === l ) ) ; break ; case M . ForInStatement : e = [ "for" + aa + "(" ] , w ( function ( ) { a . left . type === M . VariableDeclaration ? w ( function ( ) { e . push ( a . left . kind + " " , H ( a . left . declarations [ 0 ] , { allowIn : ! 1 } ) ) } ) : e . push ( G ( a . left , { precedence : N . Call , allowIn : ! 0 , allowCall : ! 0 } ) ) , e = u ( e , "in" ) , e = [ u ( e , G ( a . right , { precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) ) , ")" ] } ) , e . push ( C ( a . body , "" === l ) ) ; break ; case M . LabeledStatement : e = [ a . label . name + ":" , C ( a . body , "" === l ) ] ; break ; case M . Program : for ( d = a . body . length , e = [ da && d > 0 ? "\n" : "" ] , c = 0 ; c < d ; c += 1 ) k = v ( H ( a . body [ c ] , { semicolonOptional : ! da && c === d - 1 , directiveContext : ! 0 } ) ) , e . push ( k ) , c + 1 < d && ! i ( t ( k ) . toString ( ) ) && e . push ( _ ) ; break ; case M . FunctionDeclaration : e = [ ( a . generator && ! fa . moz . starlessGenerator ? "function* " : "function " ) + a . id . name , F ( a ) ] ; break ; case M . ReturnStatement : e = a . argument ? [ u ( "return" , G ( a . argument , { precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) ) , l ] : [ "return" + l ] ; break ; case M . WhileStatement : w ( function ( ) { e = [ "while" + aa + "(" , G ( a . test , { precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) , ")" ] } ) , e . push ( C ( a . body , "" === l ) ) ; break ; case M . WithStatement : w ( function ( ) { e = [ "with" + aa + "(" , G ( a . object , { precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) , ")" ] } ) , e . push ( C ( a . body , "" === l ) ) ; break ; default : throw new Error ( "Unknown statement type: " + a . type ) } return fa . comment && ( e = A ( a , e ) ) , k = t ( e ) . toString ( ) , a . type !== M . Program || da || "" !== _ || "\n" !== k . charAt ( k . length - 1 ) || ( e = t ( e ) . replaceRight ( /\s+$/ , "" ) ) , t ( e , a ) } function I ( d , h ) { var i , j , l = b ( ) ; switch ( null != h ? ( "string" == typeof h . indent && ( l . format . indent . style = h . indent ) , "number" == typeof h . base && ( l . format . indent . base = h . base ) , h = k ( l , h ) , V = h . format . indent . style , U = "string" == typeof h . base ? h . base : e ( V , h . format . indent . base ) ) : ( h = l , V = h . format . indent . style , U = e ( V , h . format . indent . base ) ) , W = h . format . json , X = h . format . renumber , Y = ! W && h . format . hexadecimal , Z = W ? "double" : h . format . quotes , $ = h . format . escapeless , h . format . compact ? _ = aa = V = U = "" : ( _ = "\n" , aa = " " ) , ba = h . format . parentheses , ca = h . format . semicolons , da = h . format . safeConcatenation , ea = h . directive , ga = W ? null : h . parse , ha = h . sourceMap , fa = h , S = ha ? c . browser ? g . sourceMap . SourceNode : a ( "source-map" ) . SourceNode : f , d . type ) { case M . BlockStatement : case M . BreakStatement : case M . CatchClause : case M . ContinueStatement : case M . DirectiveStatement : case M . DoWhileStatement : case M . DebuggerStatement : case M . EmptyStatement : case M . ExpressionStatement : case M . ForStatement : case M . ForInStatement : case M . FunctionDeclaration : case M . IfStatement : case M . LabeledStatement : case M . Program : case M . ReturnStatement : case M . SwitchStatement : case M . SwitchCase : case M . ThrowStatement : case M . TryStatement : case M . VariableDeclaration : case M . VariableDeclarator : case M . WhileStatement : case M . WithStatement : i = H ( d ) ; break ; case M . AssignmentExpression : case M . ArrayExpression : case M . ArrayPattern : case M . BinaryExpression : case M . CallExpression : case M . ConditionalExpression : case M . FunctionExpression : case M . Identifier : case M . Literal : case M . LogicalExpression : case M . MemberExpression : case M . NewExpression : case M . ObjectExpression : case M . ObjectPattern : case M . Property : case M . SequenceExpression : case M . ThisExpression : case M . UnaryExpression : case M . UpdateExpression : case M . YieldExpression : i = G ( d , { precedence : N . Sequence , allowIn : ! 0 , allowCall : ! 0 } ) ; break ; default : throw new Error ( "Unknown node type: " + d . type ) } return ha ? ( j = i . toStringWithSourceMap ( { file : h . sourceMap , sourceRoot : h . sourceMapRoot } ) , h . sourceMapWithCode ? j : j . map . toString ( ) ) : i . toString ( ) } function J ( a , b ) { var c , d , e , f ; for ( d = a . length , e = 0 ; d ; ) c = d >>> 1 , f = e + c , b ( a [ f ] ) ? d = c : ( e = f + 1 , d -= c + 1 ) ; return e } function K ( a , b ) { var c , d ; return c = J ( b , function ( b ) { return b . range [ 0 ] > a . range [ 0 ] } ) , a . extendedRange = [ a . range [ 0 ] , a . range [ 1 ] ] , c !== b . length && ( a . extendedRange [ 1 ] = b [ c ] . range [ 0 ] ) , c -= 1 , c >= 0 && ( c < b . length ? a . extendedRange [ 0 ] = b [ c ] . range [ 1 ] : d . length && ( a . extendedRange [ 1 ] = b [ b . length - 1 ] . range [ 0 ] ) ) , a } function L ( a , b , c ) { var d , e , f , g = [ ] ; if ( ! a . range ) throw new Error ( "attachComments needs range information" ) ; if ( ! c . length ) { if ( b . length ) { for ( f = 0 , e = b . length ; f < e ; f += 1 ) d = j ( b [ f ] ) , d . extendedRange = [ 0 , a . range [ 0 ] ] , g . push ( d ) ; a . leadingComments = g } return a } for ( f = 0 , e = b . length ; f < e ; f += 1 ) g . push ( K ( j ( b [ f ] ) , c ) ) ; return ia ( a , { cursor : 0 , enter : f
NonAsciiIdentifierPart : new RegExp ( " [ \ xaa \ xb5 \ xba \ xc0 - \ xd6 \ xd8 - \ xf6 \ xf8 - \u02c1\u02c6 - \u02d1\u02e0 - \u02e4\u02ec\u02ee\u0300 - \u0374\u0376\u0377\u037a - \u037d\u0386\u0388 - \u038a\u038c\u038e - \u03a1\u03a3 - \u03f5\u03f7 - \u0481\u0483 - \u0487\u048a - \u0527\u0531 - \u0556\u0559\u0561 - \u0587\u0591 - \u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0 - \u05ea\u05f0 - \u05f2\u0610 - \u061a\u0620 - \u0669\u066e - \u06d3\u06d5 - \u06dc\u06df - \u06e8\u06ea - \u06fc\u06ff\u0710 - \u074a\u074d - \u07b1\u07c0 - \u07f5\u07fa\u0800 - \u082d\u0840 - \u085b\u08a0\u08a2 - \u08ac\u08e4 - \u08fe\u0900 - \u0963\u0966 - \u096f\u0971 - \u0977\u0979 - \u097f\u0981 - \u0983\u0985 - \u098c\u098f\u0990\u0993 - \u09a8\u09aa - \u09b0\u09b2\u09b6 - \u09b9\u09bc - \u09c4\u09c7\u09c8\u09cb - \u09ce\u09d7\u09dc\u09dd\u09df - \u09e3\u09e6 - \u09f1\u0a01 - \u0a03\u0a05 - \u0a0a\u0a0f\u0a10\u0a13 - \u0a28\u0a2a - \u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e - \u0a42\u0a47\u0a48\u0a4b - \u0a4d\u0a51\u0a59 - \u0a5c\u0a5e\u0a66 - \u0a75\u0a81 - \u0a83\u0a85 - \u0a8d\u0a8f - \u0a91\u0a93 - \u0aa8\u0aaa - \u0ab0\u0ab2\u0ab3\u0ab5 - \u0ab9\u0abc - \u0ac5\u0ac7 - \u0ac9\u0acb - \u0acd\u0ad0\u0ae0 - \u0ae3\u0ae6 - \u0aef\u0b01 - \u0b03\u0b05 - \u0b0c\u0b0f\u0b10\u0b13 - \u0b28\u0b2a - \u0b30\u0b32\u0b33\u0b35 - \u0b39\u0b3c - \u0b44\u0b47\u0b48\u0b4b - \u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f - \u0b63\u0b66 - \u0b6f\u0b71\u0b82\u0b83\u0b85 - \u0b8a\u0b8e - \u0b90\u0b92 - \u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8 - \u0baa\u0bae - \u0bb9\u0bbe - \u0bc2\u0bc6 - \u0bc8\u0bca - \u0bcd\u0bd0\u0bd7\u0be6 - \u0bef\u0c01 - \u0c03\u0c05 - \u0c0c\u0c0e - \u0c10\u0c12 - \u0c28\u0c2a - \u0c33\u0c35 - \u0c39\u0c3d - \u0c44\u0c46 - \u0c48\u0c4a - \u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60 - \u0c63\u0c66 - \u0c6f\u0c82\u0c83\u0c85 - \u0c8c\u0c8e - \u0c90\u0c92 - \u0ca8\u0caa - \u0cb3\u0cb5 - \u0cb9\u0cbc - \u0cc4\u0cc6 - \u0cc8\u0cca - \u0ccd\u0cd5\u0cd6\u0cde\u0ce0 - \u0ce3\u0ce6 - \u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05 - \u0d0c\u0d0e - \u0d10\u0d12 - \u0d3a\u0d3d - \u0d44\u0d46 - \u0d48\u0d4a - \u0d4e\u0d57\u0d60 - \u0d63\u0d66 - \u0d6f\u0d7a - \u0d7f\u0d82\u0d83\u0d85 - \u0d96\u0d9a - \u0db1\u0db3 - \u0dbb\u0dbd\u0dc0 - \u0dc6\u0dca\u0dcf - \u0dd4\u0dd6\u0dd8 - \u0ddf\u0df2\u0df3\u0e01 - \u0e3a\u0e40 - \u0e4e\u0e50 - \u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94 - \u0e97\u0e99 - \u0e9f\u0ea1 - \u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead - \u0eb9\u0ebb - \u0ebd\u0ec0 - \u0ec4\u0ec6\u0ec8 - \u0ecd\u0ed0 - \u0ed9\u0edc - \u0edf\u0f00\u0f18\u0f19\u0f20 - \u0f29\u0f35\u0f37\u0f39\u0f3e - \u0f47\u0f49 - \u0f6c\u0f71 - \u0f84\u0f86 - \u0f97\u0f99 - \u0fbc\u0fc6\u1000 - \u1049\u1050 - \u109d\u10a0 - \u10c5\u10c7\u10cd\u10d0 - \u10fa\u10fc - \u1248\u124a - \u124d\u1250 - \u1256\u1258\u125a - \u125d\u1260 - \u1288\u128a - \u128d\u1290 - \u12b0\u12b2 - \u12b5\u12b8 - \u12be\u12c0\u12c2 - \u12c5\u12c8 - \u12d6\u12d8 - \u1310\u1312 - \u1315\u1318 - \u135a\u135d - \u135f\u1380 - \u138f\u13a0 - \u13f4\u1401 - \u166c\u166f - \u167f\u1681 - \u169a\u16a0 - \u16ea\u16ee - \u16f0\u1700 - \u170c\u170e - \u1714\u1720 - \u1734\u1740 - \u1753\u1760 - \u176c\u176e - \u1770\u1772\u1773\u1780 - \u17d3\u17d7\u17dc\u17dd\u17e0 - \u17e9\u180b - \u180d\u1810 - \u1819\u1820 - \u1877\u1880 - \u18aa\u18b0 - \u18f5\u1900 - \u191c\u1920 - \u192b\u1930 - \u193b\u1946 - \u196d\u1970 - \u1974\u1980 - \u19ab\u19b0 - \u19c9\u19d0 - \u19d9\u1a00 - \u1a1b\u1a20 - \u1a5e\u1a60 - \u1a7c\u1a7f - \u1a89\u1a90 - \u1a99\u1aa7\u1b00 - \u1b4b\u1b50 - \u1b59\u1b6b - \u1b73\u1b80 - \u1bf3\u1c00 - \u1c37\u1c40 - \u1c49\u1c4d - \u1c7d\u1cd0 - \u1cd2\u1cd4 - \u1cf6\u1d00 - \u1de6\u1dfc - \u1f15\u1f18 - \u1f1d\u1f20 - \u1f45\u1f48 - \u1f4d\u1f50 - \u1f57\u1f59\u1f5b\u1f5d\u1f5f - \u1f7d\u1f80 - \u1fb4\u1fb6 - \u1fbc\u1fbe\u1fc2 - \u1fc4\u1fc6 - \u1fcc\u1fd0 - \u1fd3\u1fd6 - \u1fdb\u1fe0 - \u1fec\u1ff2 - \u1ff4\u1ff6 - \u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090 - \u209c\u20d0 - \u20dc\u20e1\u20e5 - \u20f0\u2102\u2107\u210a - \u2113\u2115\u2119 - \u211d\u2124\u2126\u2128\u212a - \u212d\u212f - \u2139\u213c - \u213f\u2145 - \u2149\u214e\u2160 - \u2188\u2c00 - \u2c2e\u2c30 - \u2c5e\u2c60 - \u2ce4\u2ceb - \u2cf3\u2d00 - \u2d25\u2d27\u2d2d\u2d30 - \u2d67\u2d6f\u2d7f - \u2d96\u2da0 - \u2da6\u2da8 - \u2dae\u2db0 - \u2db6\u2db8 - \u2dbe\u2dc0 - \u2dc6\u2dc8 - \u2dce\u2dd0 - \u2dd6\u2dd8 - \u2dde\u2de0 - \u2dff\u2e2f\u3005 - \u3007\u3021 - \u302f\u3031 - \u3035\u3038 - \u303c\u3041 - \u3096\u3099\u309a\u309d - \u309f\u30a1 - \u30fa\u30fc - \u30ff\u3105 - \u312d\u3131 - \u318e\u31a0 - \ u31
a . call ( b , this . _ _data [ c ] , d , this ) ) } , c . prototype . keys = function ( ) { var a , b ; b = [ ] ; for ( a in this . _ _data ) this . _ _data . hasOwnProperty ( a ) && b . push ( a . substring ( 1 ) ) ; return b } , c . prototype . values = function ( ) { var a , b ; b = [ ] ; for ( a in this . _ _data ) this . _ _data . hasOwnProperty ( a ) && b . push ( this . _ _data [ a ] ) ; return b } , c . prototype . items = function ( ) { var a , b ; b = [ ] ; for ( a in this . _ _data ) this . _ _data . hasOwnProperty ( a ) && b . push ( [ a . substring ( 1 ) , this . _ _data [ a ] ] ) ; return b } ) , b . exports = c } ( ) } ) , b . define ( "/lib/pass/remove-unreachable-branch.js" , function ( a , c , d , e ) { ! function ( c , d , e , f , g , h ) { function i ( a , b ) { var c , f , i ; if ( c = g . booleanCondition ( b . test ) , b . alternate ) { if ( "boolean" == typeof c ) return h = ! 0 , f = [ ] , c ? ( i = e . delegateVariableDeclarations ( b . alternate , a ) , i && f . push ( i ) , f . push ( e . moveLocation ( b . test , { type : d . ExpressionStatement , expression : b . test } ) , b . consequent ) , { type : d . BlockStatement , body : f } ) : ( i = e . delegateVariableDeclarations ( b . consequent , a ) , i && f . push ( i ) , f . push ( e . moveLocation ( b . test , { type : d . ExpressionStatement , expression : b . test } ) , b . alternate ) , { type : d . BlockStatement , body : f } ) } else if ( "boolean" == typeof c ) return h = ! 0 , f = [ ] , c ? ( f . push ( e . moveLocation ( b . test , { type : d . ExpressionStatement , expression : b . test } ) , b . consequent ) , { type : d . BlockStatement , body : f } ) : ( i = e . delegateVariableDeclarations ( b . consequent , a ) , i && f . push ( i ) , f . push ( e . moveLocation ( b . test , { type : d . ExpressionStatement , expression : b . test } ) ) , { type : d . BlockStatement , body : f } ) } function j ( a , b ) { var c ; return c = g . booleanCondition ( b . left ) , "boolean" == typeof c ? ( h = ! 0 , c ? "&&" === b . operator ? e . moveLocation ( b , { type : d . SequenceExpression , expressions : [ b . left , b . right ] } ) : b . left : "&&" === b . operator ? b . left : e . moveLocation ( b , { type : d . SequenceExpression , expressions : [ b . left , b . right ] } ) ) : void 0 } function k ( a , b ) { var c ; return c = g . booleanCondition ( b . test ) , "boolean" == typeof c ? ( h = ! 0 , c ? e . moveLocation ( b , { type : d . SequenceExpression , expressions : [ b . test , b . consequent ] } ) : e . moveLocation ( b , { type : d . SequenceExpression , expressions : [ b . test , b . alternate ] } ) ) : void 0 } function l ( a , b ) { var g , l ; return g = b . get ( "destructive" , { pathName : c } ) ? a : e . deepCopy ( a ) , h = ! 1 , l = [ ] , g = e . replace ( g , { enter : function ( a ) { var b ; if ( f . Scope . isVariableScopeRequired ( a ) ) return void l . push ( a ) ; switch ( b = e . Array . last ( l ) , a . type ) { case d . IfStatement : return i ( b , a ) ; case d . LogicalExpression : return j ( b , a ) ; case d . ConditionalExpression : return k ( b , a ) } } , leave : function ( a ) { f . Scope . isVariableScopeRequired ( a ) && l . pop ( ) } } ) , { result : g , modified : h } } c = "remove-unreachable-branch" , f = b ( "/node_modules/escope/escope.js" , a ) , e = b ( "/lib/common.js" , a ) , g = b ( "/lib/evaluator.js" , a ) , d = e . Syntax , l . passName = c , a . exports = l } ( ) } ) , b . define ( "/lib/evaluator.js" , function ( a , c , d , e ) { ! function ( d , e ) { function f ( a , b ) { return a . type === d . Literal ? "object" != typeof a . value || null === a . value || b : a . type === d . UnaryExpression ? "void" === a . operator || "delete" === a . operator || "!" === a . operator ? f ( a . argument , ! 0 ) : f ( a . argument , ! 1 ) : a . type === d . BinaryExpression ? "in" !== a . operator && "instanceof" !== a . operator && ( f ( a . left , ! 1 ) && f ( a . right , ! 1 ) ) : a . type === d . LogicalExpression && ( f ( a . left , ! 0 ) && f ( a . right , ! 0 ) ) } function g ( a ) { return a . type === d . Literal ? a . value : a . type === d . UnaryExpression ? i ( a . operator , g ( a . argument ) ) : a . type === d . BinaryExpression ? j ( a . operator , g ( a . left ) , g ( a . right ) ) : a . type === d . LogicalExpression ? h ( a . operator , g ( a . left ) , g ( a . right ) ) : void e . unreachable ( ) } function h ( a , b , c ) { return "||" === a ? b || c : "&&" === a ? b && c : void e . unreachable ( ) } function i ( a , b ) { switch ( a ) { case "+" : return + b ; case "-" : return - b ; case "~" : return ~ b ; case "!" : return ! b ; case "delete" : return ! 0 ; case "void" : return ; case "typeof" : return typeof b } e . unreachable ( ) } function j ( a , b , c ) { switch ( a ) { case "|" : return b | c ; case "^" : return b ^ c ; case "&" : return b & c ; case "==" : return b == c ; case "!=" : return b != c ; case "===" : return b === c ; case "!==" : return b !== c ; case "<" : return b < c ; case ">" : return b > c ; case "<=" : return b <= c ; case ">=" : return b >= c ; case "<<" : return b << c ; case ">>" : return b >> c ; case ">>>" : return b >>> c ; case "+" : return b + c ; case "-" : return b - c ; case "*" : return b * c ; case "/" : return b / c ; case "%" : return b % c } e . unreachable ( ) } function k ( a , b ) { function c ( a ) { var e , g , h ; switch ( a . type ) { case d . AssignmentExpression : return ! 0 ; case d . ArrayExpression : for ( e = 0 , g = a . elements . length ; e < g ; ++ e ) if ( c ( a . elements [ e ] ) ) return ! 0 ; return ! 1 ; case d . BinaryExpression : return ! f ( a
h . init && g . push ( h . init ) , 1 === g . length ? h . init = g [ 0 ] : h . init = { type : d . SequenceExpression , expressions : g } , g = [ ] ) , j . push ( h ) ) ; g . length && j . push ( b ( g , h ) ) , a . body = j } function h ( a , b ) { var h ; return f = ! 1 , h = b . get ( "destructive" , { pathName : c } ) ? a : e . deepCopy ( a ) , e . traverse ( h , { enter : function ( a ) { switch ( a . type ) { case d . BlockStatement : case d . Program : g ( a ) } } } ) , { result : h , modified : f } } c = "transform-to-sequence-expression" , e = b ( "/lib/common.js" , a ) , d = e . Syntax , h . passName = c , a . exports = h } ( ) } ) , b . define ( "/lib/pass/transform-to-compound-assignment.js" , function ( a , c , d , e ) { ! function ( c , d , e , f , g ) { function h ( a , b ) { return a . type === b . type && ( a . type === d . Identifier && a . name === b . name ) } function i ( a ) { switch ( a ) { case "*" : case "/" : case "%" : case "+" : case "-" : case "<<" : case ">>" : case ">>>" : case "&" : case "^" : case "|" : return a + "=" } return null } function j ( a ) { switch ( a ) { case "*=" : case "/=" : case "%=" : case "+=" : case "-=" : case "<<=" : case ">>=" : case ">>>=" : case "&=" : case "^=" : case "|=" : return a } return null } function k ( a , b ) { var k , l , m ; return k = b . get ( "destructive" , { pathName : c } ) ? a : e . deepCopy ( a ) , g = ! 1 , l = null , m = f . analyze ( k , { directive : ! 0 } ) , m . attach ( ) , e . traverse ( k , { enter : function ( a ) { var b , c , e , f ; l = m . acquire ( a ) || l , a . type === d . AssignmentExpression && "=" === a . operator && ( b = a . left , c = a . right , c . type === d . BinaryExpression && h ( c . left , b ) ? ( e = i ( c . operator ) , e && ( g = ! 0 , a . operator = e , a . right = c . right ) ) : c . type === d . AssignmentExpression && h ( c . left , b ) && j ( c . operator ) && ( f = l . resolve ( a . left ) , f . isStatic ( ) && ( g = ! 0 , a . operator = c . operator , a . right = c . right ) ) ) } , leave : function ( a ) { l = m . release ( a ) || l } } ) , m . detach ( ) , { result : k , modified : g } } c = "transform-to-compound-assignment" , f = b ( "/node_modules/escope/escope.js" , a ) , e = b ( "/lib/common.js" , a ) , d = e . Syntax , k . passName = c , a . exports = k } ( ) } ) , b . define ( "/lib/pass/remove-wasted-blocks.js" , function ( a , c , d , e ) { ! function ( c , d , e , f ) { function g ( a ) { var b , c , g , h , i , j , k , l ; for ( i = [ ] , b = 0 , c = a . length ; b < c ; ++ b ) if ( j = a [ b ] , j . type === d . BlockStatement ) { for ( l = ! 0 , g = 0 , h = j . body . length ; g < h ; ++ g ) k = j . body [ g ] , e . isScopedDeclaration ( k ) && ( l = ! 1 ) ; l ? ( f = ! 0 , i = i . concat ( j . body ) ) : i . push ( j ) } else i . push ( j ) ; return i } function h ( a , b ) { var h ; return h = b . get ( "destructive" , { pathName : c } ) ? a : e . deepCopy ( a ) , f = ! 1 , h = e . replace ( h , { leave : function ( a , b ) { var c , h , i ; if ( a . type === d . BlockStatement || a . type === d . Program ) for ( c = 0 , h = a . body . length ; c < h ; ++ c ) if ( i = a . body [ c ] , i . type === d . BlockStatement ) { a . body = g ( a . body ) ; break } if ( b . type !== d . FunctionDeclaration && b . type !== d . FunctionExpression && b . type !== d . TryStatement && b . type !== d . CatchClause ) { for ( ; a . type === d . BlockStatement && 1 === a . body . length && ! e . isScopedDeclaration ( a . body [ 0 ] ) ; ) f = ! 0 , a = a . body [ 0 ] ; return a . type === d . BlockStatement && 0 === a . body . length ? ( f = ! 0 , { type : d . EmptyStatement } ) : a } } } ) , { result : h , modified : f } } c = "remove-wasted-blocks" , e = b ( "/lib/common.js" , a ) , d = e . Syntax , h . passName = c , a . exports = h } ( ) } ) , b . define ( "/lib/pass/remove-empty-statement.js" , function ( a , c , d , e ) { ! function ( c , d , e , f ) { function g ( a ) { var b , c , e , g ; for ( g = [ ] , b = 0 , c = a . length ; b < c ; ++ b ) e = a [ b ] , e . type === d . EmptyStatement ? f = ! 0 : g . push ( e ) ; return g } function h ( a ) { a . alternate && ( a . alternate . type === d . EmptyStatement ? ( f = ! 0 , a . alternate = null ) : a . consequent . type === d . EmptyStatement && ( f = ! 0 , a . consequent = a . alternate , a . alternate = null , a . test = e . moveLocation ( a . test , { type : d . UnaryExpression , operator : "!" , argument : a . test } ) ) ) } function i ( a , b ) { var i ; return f = ! 1 , i = b . get ( "destructive" , { pathName : c } ) ? a : e . deepCopy ( a ) , e . traverse ( i , { enter : function ( a ) { var b ; switch ( a . type ) { case d . BlockStatement : case d . Program : a . body = g ( a . body ) ; break ; case d . SwitchCase : a . consequent = g ( a . consequent ) ; break ; case d . IfStatement : h ( a ) ; break ; case d . SwitchStatement : a . cases . length && ( b = e . Array . last ( a . cases ) , ! b . test && e . Array . empty ( b . consequent ) && ( f = ! 0 , a . cases . pop ( ) ) ) } } } ) , { result : i , modified : f } } c = "remove-empty-statement" , e = b ( "/lib/common.js" , a ) , d = e . Syntax , i . passName = c , a . exports = i } ( ) } ) , b . define ( "/lib/pass/remove-unused-label.js" , function ( a , c , d , e ) { ! function ( c , d , e , f , g , h ) { function i ( a ) { this . set = new e , this . unused = [ ] , this . upper = a } function j ( a , b ) { var e ; return e = b . get ( "destructive" , { pathName : c } ) ? a : f . deepCopy ( a ) , g = null , h = ! 1 , e = f . replace ( e , { enter : function ( a ) { switch ( a . type ) { case d . Program : case d . FunctionDeclaration : case d . FunctionExpression : g = new i ( g ) ; break ; case d . LabeledStatement : g . register ( a ) ; break ; case d . BreakStatement : case d . Co
return this . _monthsParseExact ? ( f ( this , "_monthsRegex" ) || ca . call ( this ) , a ? this . _monthsShortStrictRegex : this . _monthsShortRegex ) : this . _monthsShortStrictRegex && a ? this . _monthsShortStrictRegex : this . _monthsShortRegex } function ba ( a ) { return this . _monthsParseExact ? ( f ( this , "_monthsRegex" ) || ca . call ( this ) , a ? this . _monthsStrictRegex : this . _monthsRegex ) : this . _monthsStrictRegex && a ? this . _monthsStrictRegex : this . _monthsRegex } function ca ( ) { function a ( a , b ) { return b . length - a . length } var b , c , d = [ ] , e = [ ] , f = [ ] ; for ( b = 0 ; b < 12 ; b ++ ) c = h ( [ 2e3 , b ] ) , d . push ( this . monthsShort ( c , "" ) ) , e . push ( this . months ( c , "" ) ) , f . push ( this . months ( c , "" ) ) , f . push ( this . monthsShort ( c , "" ) ) ; for ( d . sort ( a ) , e . sort ( a ) , f . sort ( a ) , b = 0 ; b < 12 ; b ++ ) d [ b ] = R ( d [ b ] ) , e [ b ] = R ( e [ b ] ) , f [ b ] = R ( f [ b ] ) ; this . _monthsRegex = new RegExp ( "^(" + f . join ( "|" ) + ")" , "i" ) , this . _monthsShortRegex = this . _monthsRegex , this . _monthsStrictRegex = new RegExp ( "^(" + e . join ( "|" ) + ")$" , "i" ) , this . _monthsShortStrictRegex = new RegExp ( "^(" + d . join ( "|" ) + ")$" , "i" ) } function da ( a ) { var b , c = a . _a ; return c && j ( a ) . overflow === - 2 && ( b = c [ wd ] < 0 || c [ wd ] > 11 ? wd : c [ xd ] < 1 || c [ xd ] > V ( c [ vd ] , c [ wd ] ) ? xd : c [ yd ] < 0 || c [ yd ] > 24 || 24 === c [ yd ] && ( 0 !== c [ zd ] || 0 !== c [ Ad ] || 0 !== c [ Bd ] ) ? yd : c [ zd ] < 0 || c [ zd ] > 59 ? zd : c [ Ad ] < 0 || c [ Ad ] > 59 ? Ad : c [ Bd ] < 0 || c [ Bd ] > 999 ? Bd : - 1 , j ( a ) . _overflowDayOfYear && ( b < vd || b > xd ) && ( b = xd ) , j ( a ) . _overflowWeeks && b === - 1 && ( b = Cd ) , j ( a ) . _overflowWeekday && b === - 1 && ( b = Dd ) , j ( a ) . overflow = b ) , a } function ea ( b ) { a . suppressDeprecationWarnings === ! 1 && "undefined" != typeof console && console . warn && console . warn ( "Deprecation warning: " + b ) } function fa ( a , b ) { var c = ! 0 ; return g ( function ( ) { return c && ( ea ( a + "\nArguments: " + Array . prototype . slice . call ( arguments ) . join ( ", " ) + "\n" + ( new Error ) . stack ) , c = ! 1 ) , b . apply ( this , arguments ) } , b ) } function ga ( a , b ) { Jd [ a ] || ( ea ( b ) , Jd [ a ] = ! 0 ) } function ha ( a ) { var b , c , d , e , f , g , h = a . _i , i = Kd . exec ( h ) || Ld . exec ( h ) ; if ( i ) { for ( j ( a ) . iso = ! 0 , b = 0 , c = Nd . length ; b < c ; b ++ ) if ( Nd [ b ] [ 1 ] . exec ( i [ 1 ] ) ) { e = Nd [ b ] [ 0 ] , d = Nd [ b ] [ 2 ] !== ! 1 ; break } if ( null == e ) return void ( a . _isValid = ! 1 ) ; if ( i [ 3 ] ) { for ( b = 0 , c = Od . length ; b < c ; b ++ ) if ( Od [ b ] [ 1 ] . exec ( i [ 3 ] ) ) { f = ( i [ 2 ] || " " ) + Od [ b ] [ 0 ] ; break } if ( null == f ) return void ( a . _isValid = ! 1 ) } if ( ! d && null != f ) return void ( a . _isValid = ! 1 ) ; if ( i [ 4 ] ) { if ( ! Md . exec ( i [ 4 ] ) ) return void ( a . _isValid = ! 1 ) ; g = "Z" } a . _f = e + ( f || "" ) + ( g || "" ) , wa ( a ) } else a . _isValid = ! 1 } function ia ( b ) { var c = Pd . exec ( b . _i ) ; return null !== c ? void ( b . _d = new Date ( ( + c [ 1 ] ) ) ) : ( ha ( b ) , void ( b . _isValid === ! 1 && ( delete b . _isValid , a . createFromInputFallback ( b ) ) ) ) } function ja ( a , b , c , d , e , f , g ) { var h = new Date ( a , b , c , d , e , f , g ) ; return a < 100 && a >= 0 && isFinite ( h . getFullYear ( ) ) && h . setFullYear ( a ) , h } function ka ( a ) { var b = new Date ( Date . UTC . apply ( null , arguments ) ) ; return a < 100 && a >= 0 && isFinite ( b . getUTCFullYear ( ) ) && b . setUTCFullYear ( a ) , b } function la ( a ) { return ma ( a ) ? 366 : 365 } function ma ( a ) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function na ( ) { return ma ( this . year ( ) ) } function oa ( a , b , c ) { var d = 7 + b - c , e = ( 7 + ka ( a , 0 , d ) . getUTCDay ( ) - b ) % 7 ; return - e + d - 1 } function pa ( a , b , c , d , e ) { var f , g , h = ( 7 + c - d ) % 7 , i = oa ( a , d , e ) , j = 1 + 7 * ( b - 1 ) + h + i ; return j <= 0 ? ( f = a - 1 , g = la ( f ) + j ) : j > la ( a ) ? ( f = a + 1 , g = j - la ( a ) ) : ( f = a , g = j ) , { year : f , dayOfYear : g } } function qa ( a , b , c ) { var d , e , f = oa ( a . year ( ) , b , c ) , g = Math . floor ( ( a . dayOfYear ( ) - f - 1 ) / 7 ) + 1 ; return g < 1 ? ( e = a . year ( ) - 1 , d = g + ra ( e , b , c ) ) : g > ra ( a . year ( ) , b , c ) ? ( d = g - ra ( a . year ( ) , b , c ) , e = a . year ( ) + 1 ) : ( e = a . year ( ) , d = g ) , { week : d , year : e } } function ra ( a , b , c ) { var d = oa ( a , b , c ) , e = oa ( a + 1 , b , c ) ; return ( la ( a ) - d + e ) / 7 } function sa ( a , b , c ) { return null != a ? a : null != b ? b : c } function ta ( b ) { var c = new Date ( a . now ( ) ) ; return b . _useUTC ? [ c . getUTCFullYear ( ) , c . getUTCMonth ( ) , c . getUTCDate ( ) ] : [ c . getFullYear ( ) , c . getMonth ( ) , c . getDate ( ) ] } function ua ( a ) { var b , c , d , e , f = [ ] ; if ( ! a . _d ) { for ( d = ta ( a ) , a . _w && null == a . _a [ xd ] && null == a . _a [ wd ] && va ( a ) , a . _dayOfYear && ( e = sa ( a . _a [ vd ] , d [ vd ] ) , a . _dayOfYear > la ( e ) && ( j ( a ) . _overflowDayOfYear = ! 0 ) , c = ka ( e , 0 , a . _dayOfYear ) , a . _a [ wd ] = c . getUTCMonth ( ) , a . _a [ xd ] = c . getUTCDate ( ) ) , b = 0 ; b < 3 && null == a . _a [ b ] ; ++ b ) a . _a [ b ] = f [ b ] = d [ b ] ; for ( ; b < 7 ; b ++ ) a . _a [ b ] = f [ b ] = null == a . _a [ b ] ? 2 === b ? 1 : 0 : a . _a [ b ] ; 24 === a . _a [ yd ] && 0 === a . _a [ zd ] && 0 === a . _a [ Ad ] && 0 === a . _a [ Bd ] && ( a . _nextDay = ! 0 , a . _a [ yd ] = 0 ) , a . _d = ( a . _useUTC ? ka : ja ) . apply ( null , f ) , null != a . _tzm && a . _d . setUTCMinutes ( a . _d . getUTCMinutes ( ) - a . _tzm ) , a . _nextDay && ( a . _a [ yd ] = 24 ) } } function va ( a ) { var b , c , d , e , f , g , h , i ; b = a . _w , null != b . GG || null != b . W || null != b . E ? ( f = 1 , g = 4 , c = sa ( b . GG , a . _a [ v
re . set = tc , re . months = W , re . _months = Fd , re . monthsShort = X , re . _monthsShort = Gd , re . monthsParse = Y , re . _monthsRegex = Id , re . monthsRegex = ba , re . _monthsShortRegex = Hd , re . monthsShortRegex = aa , re . week = Qb , re . _week = $d , re . firstDayOfYear = Sb , re . firstDayOfWeek = Rb , re . weekdays = Wb , re . _weekdays = ae , re . weekdaysMin = Yb , re . _weekdaysMin = ce , re . weekdaysShort = Xb , re . _weekdaysShort = be , re . weekdaysParse = Zb , re . isPM = fc , re . _meridiemParse = de , re . meridiem = gc , x ( "en" , { ordinalParse : /\d{1,2}(th|st|nd|rd)/ , ordinal : function ( a ) { var b = a % 10 , c = 1 === r ( a % 100 / 10 ) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th" ; return a + c } } ) , a . lang = fa ( "moment.lang is deprecated. Use moment.locale instead." , x ) , a . langData = fa ( "moment.langData is deprecated. Use moment.localeData instead." , z ) ; var se = Math . abs , te = Lc ( "ms" ) , ue = Lc ( "s" ) , ve = Lc ( "m" ) , we = Lc ( "h" ) , xe = Lc ( "d" ) , ye = Lc ( "w" ) , ze = Lc ( "M" ) , Ae = Lc ( "y" ) , Be = Nc ( "milliseconds" ) , Ce = Nc ( "seconds" ) , De = Nc ( "minutes" ) , Ee = Nc ( "hours" ) , Fe = Nc ( "days" ) , Ge = Nc ( "months" ) , He = Nc ( "years" ) , Ie = Math . round , Je = { s : 45 , m : 45 , h : 22 , d : 26 , M : 11 } , Ke = Math . abs , Le = Ia . prototype ; Le . abs = Bc , Le . add = Dc , Le . subtract = Ec , Le . as = Jc , Le . asMilliseconds = te , Le . asSeconds = ue , Le . asMinutes = ve , Le . asHours = we , Le . asDays = xe , Le . asWeeks = ye , Le . asMonths = ze , Le . asYears = Ae , Le . valueOf = Kc , Le . _bubble = Gc , Le . get = Mc , Le . milliseconds = Be , Le . seconds = Ce , Le . minutes = De , Le . hours = Ee , Le . days = Fe , Le . weeks = Oc , Le . months = Ge , Le . years = He , Le . humanize = Sc , Le . toISOString = Tc , Le . toString = Tc , Le . toJSON = Tc , Le . locale = ub , Le . localeData = vb , Le . toIsoString = fa ( "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)" , Tc ) , Le . lang = Zd , J ( "X" , 0 , 0 , "unix" ) , J ( "x" , 0 , 0 , "valueOf" ) , O ( "x" , od ) , O ( "X" , rd ) , S ( "X" , function ( a , b , c ) { c . _d = new Date ( 1e3 * parseFloat ( a , 10 ) ) } ) , S ( "x" , function ( a , b , c ) { c . _d = new Date ( r ( a ) ) } ) , a . version = "2.11.2" , b ( Ea ) , a . fn = ke , a . min = Ga , a . max = Ha , a . now = Td , a . utc = h , a . unix = kc , a . months = wc , a . isDate = d , a . locale = x , a . invalid = l , a . duration = Za , a . isMoment = p , a . weekdays = yc , a . parseZone = lc , a . localeData = z , a . isDuration = Ja , a . monthsShort = xc , a . weekdaysMin = Ac , a . defineLocale = y , a . weekdaysShort = zc , a . normalizeUnits = B , a . relativeTimeThreshold = Rc , a . prototype = ke ; var Me = a ; return Me } ) , / * * @ l i c e n s e
=== === === === === === === === === === === === === === === === === === === === === === === ===
moment - timezone . js
version : 0.4 . 1
authors : Tim Wood
license : MIT
github . com / moment / moment - timezone
* /
function ( a , b ) { "function" == typeof define && define . amd ? define ( [ "moment" ] , b ) : "object" == typeof exports ? module . exports = b ( require ( "moment" ) ) : b ( a . moment ) } ( this , function ( a ) { function b ( a ) { return a > 96 ? a - 87 : a > 64 ? a - 29 : a - 48 } function c ( a ) { var c , d = 0 , e = a . split ( "." ) , f = e [ 0 ] , g = e [ 1 ] || "" , h = 1 , i = 0 , j = 1 ; for ( 45 === a . charCodeAt ( 0 ) && ( d = 1 , j = - 1 ) , d ; d < f . length ; d ++ ) c = b ( f . charCodeAt ( d ) ) , i = 60 * i + c ; for ( d = 0 ; d < g . length ; d ++ ) h /= 60 , c = b ( g . charCodeAt ( d ) ) , i += c * h ; return i * j } function d ( a ) { for ( var b = 0 ; b < a . length ; b ++ ) a [ b ] = c ( a [ b ] ) } function e ( a , b ) { for ( var c = 0 ; c < b ; c ++ ) a [ c ] = Math . round ( ( a [ c - 1 ] || 0 ) + 6e4 * a [ c ] ) ; a [ b - 1 ] = 1 / 0 } function f ( a , b ) { var c , d = [ ] ; for ( c = 0 ; c < b . length ; c ++ ) d [ c ] = a [ b [ c ] ] ; return d } function g ( a ) { var b = a . split ( "|" ) , c = b [ 2 ] . split ( " " ) , g = b [ 3 ] . split ( "" ) , h = b [ 4 ] . split ( " " ) ; return d ( c ) , d ( g ) , d ( h ) , e ( h , g . length ) , { name : b [ 0 ] , abbrs : f ( b [ 1 ] . split ( " " ) , g ) , offsets : f ( c , g ) , untils : h } } function h ( a ) { a && this . _set ( g ( a ) ) } function i ( a ) { return ( a || "" ) . toLowerCase ( ) . replace ( /\//g , "_" ) } function j ( a ) { var b , c , d ; for ( "string" == typeof a && ( a = [ a ] ) , b = 0 ; b < a . length ; b ++ ) c = a [ b ] . split ( "|" ) [ 0 ] , d = i ( c ) , v [ d ] = a [ b ] , x [ d ] = c } function k ( a , b ) { a = i ( a ) ; var c , d = v [ a ] ; return d instanceof h ? d : "string" == typeof d ? ( d = new h ( d ) , v [ a ] = d , d ) : w [ a ] && b !== k && ( c = k ( w [ a ] , k ) ) ? ( d = v [ a ] = new h , d . _set ( c ) , d . name = x [ a ] , d ) : null } function l ( ) { var a , b = [ ] ; for ( a in x ) x . hasOwnProperty ( a ) && ( v [ a ] || v [ w [ a ] ] ) && x [ a ] && b . push ( x [ a ] ) ; return b . sort ( ) } function m ( a ) { var b , c , d , e ; for ( "string" == typeof a && ( a = [ a ] ) , b = 0 ; b < a . length ; b ++ ) c = a [ b ] . split ( "|" ) , d = i ( c [ 0 ] ) , e = i ( c [ 1 ] ) , w [ d ] = e , x [ d ] = c [ 0 ] , w [ e ] = d , x [ e ] = c [ 1 ] } function n ( a ) { j ( a . zones ) , m ( a . links ) , r . dataVersion = a . version } function o ( a ) { return o . didShowError || ( o . didShowError = ! 0 , q ( "moment.tz.zoneExists('" + a + "') has been deprecated in favor of !moment.tz.zone('" + a + "')" ) ) , ! ! k ( a ) } function p ( a ) { return ! ( ! a . _a || void 0 !== a . _tzm ) } function q ( a ) { "undefined" != typeof console && "function" == typeof console . error && console . error ( a ) } function r ( b ) { var c = Array . prototype . slice . call ( arguments , 0 , - 1 ) , d = arguments [ arguments . length - 1 ] , e = k ( d ) , f = a . utc . apply ( null , c ) ; return e && ! a . isMoment ( b ) && p ( f ) && f . add ( e . parse ( f ) , "minutes" ) , f . tz ( d ) , f } function s ( a ) { return function ( ) { return this . _z ? this . _z . abbr ( this ) : a . call ( this ) } } function t ( a ) { return function ( ) { return this . _z = null , a . apply ( this , arguments ) } } if ( void 0 !== a . tz ) return q ( "Moment Timezone " + a . tz . version + " was already loaded " + ( a . tz . dataVersion ? "with data from " : "without any data" ) + a . tz . dataVersion ) , a ; var u = "0.4.1" , v = { } , w = { } , x = { } , y = a . version . split ( "." ) , z = + y [ 0 ] , A = + y [ 1 ] ; ( z < 2 || 2 === z && A < 6 ) && q ( "Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + a . version + ". See momentjs.com" ) , h . prototype = { _set : function ( a ) { this . name = a . name , this . abbrs = a . abbrs , this . untils = a . untils , this . offsets = a . offsets } , _index : function ( a ) { var b , c = + a , d = this . untils ; for ( b = 0 ; b < d . length ; b ++ ) if ( c < d [ b ] ) return b } , parse : function ( a ) { var b , c , d , e , f = + a , g = this . offsets , h = this . untils , i = h . length - 1 ; for ( e = 0 ; e < i ; e ++ ) if ( b = g [ e ] , c = g [ e + 1 ] , d = g [ e ? e - 1 : e ] , b < c && r . moveAmbiguousForward ? b = c : b > d && r . moveInvalidForward && ( b = d ) , f < h [ e ] - 6e4 * b ) return g [ e ] ; return g [ i ] } , abbr : function ( a ) { return this . abbrs [ this . _index ( a ) ] } , offset : function ( a ) { return this . offsets [ this . _index ( a ) ] } } , r . version = u , r . dataVersion = "" , r . _zones = v , r . _links = w , r . _names = x , r . add = j , r . link = m , r . load = n , r . zone = k , r . zoneExists = o , r . names = l , r . Zone = h , r . unpack = g , r . unpackBase60 = c , r . needsOffset = p , r . moveInvalidForward = ! 0 , r . moveAmbiguousForward = ! 1 ; var B = a . fn ; a . tz = r , a . defaultZone = null , a . updateOffset = function ( b , c ) { var d , e = a . defaultZone ; void 0 === b . _z && ( e && p ( b ) && ! b . _isUTC && ( b . _d = a . utc ( b . _a ) . _d , b . utc ( ) . add ( e . parse ( b ) , "minutes" ) ) , b . _z = e ) , b . _z && ( d = b . _z . offset ( b ) , Math . abs ( d ) < 16 && ( d /= 60 ) , void 0 !== b . utcOffset ? b . utcOffset ( - d , c ) : b . zone ( d , c ) ) } , B . tz = function ( b ) { return b ? ( this . _z = k ( b ) , this . _z ? a . updateOffset ( this ) : q ( "Moment Timezone has no data for " + b + ". See http://momentjs.com/timezone/docs/#/data-loading/." ) , this ) : this . _z ? this . _z . name : void 0 } , B . zoneName = s ( B . zoneName ) , B . zoneAbbr = s ( B . zoneAbbr ) , B . utc = t ( B . utc ) , a . tz . setDefault = function ( b ) { return ( z < 2 || 2 === z && A < 9 ) && q ( "Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + a . version + "." ) , a . defaultZone = b ? k ( b ) : null , a } ; var C = a . momentProperties ; return "[object Array]" === Object . prototype .
links : [ "Africa/Abidjan|Africa/Bamako" , "Africa/Abidjan|Africa/Banjul" , "Africa/Abidjan|Africa/Conakry" , "Africa/Abidjan|Africa/Dakar" , "Africa/Abidjan|Africa/Freetown" , "Africa/Abidjan|Africa/Lome" , "Africa/Abidjan|Africa/Nouakchott" , "Africa/Abidjan|Africa/Ouagadougou" , "Africa/Abidjan|Africa/Sao_Tome" , "Africa/Abidjan|Africa/Timbuktu" , "Africa/Abidjan|Atlantic/St_Helena" , "Africa/Addis_Ababa|Africa/Asmara" , "Africa/Addis_Ababa|Africa/Asmera" , "Africa/Addis_Ababa|Africa/Dar_es_Salaam" , "Africa/Addis_Ababa|Africa/Djibouti" , "Africa/Addis_Ababa|Africa/Kampala" , "Africa/Addis_Ababa|Africa/Mogadishu" , "Africa/Addis_Ababa|Africa/Nairobi" , "Africa/Addis_Ababa|Indian/Antananarivo" , "Africa/Addis_Ababa|Indian/Comoro" , "Africa/Addis_Ababa|Indian/Mayotte" , "Africa/Bangui|Africa/Brazzaville" , "Africa/Bangui|Africa/Douala" , "Africa/Bangui|Africa/Kinshasa" , "Africa/Bangui|Africa/Lagos" , "Africa/Bangui|Africa/Libreville" , "Africa/Bangui|Africa/Luanda" , "Africa/Bangui|Africa/Malabo" , "Africa/Bangui|Africa/Niamey" , "Africa/Bangui|Africa/Porto-Novo" , "Africa/Blantyre|Africa/Bujumbura" , "Africa/Blantyre|Africa/Gaborone" , "Africa/Blantyre|Africa/Harare" , "Africa/Blantyre|Africa/Kigali" , "Africa/Blantyre|Africa/Lubumbashi" , "Africa/Blantyre|Africa/Lusaka" , "Africa/Blantyre|Africa/Maputo" , "Africa/Cairo|Egypt" , "Africa/Johannesburg|Africa/Maseru" , "Africa/Johannesburg|Africa/Mbabane" , "Africa/Juba|Africa/Khartoum" , "Africa/Tripoli|Libya" , "America/Adak|America/Atka" , "America/Adak|US/Aleutian" , "America/Anchorage|US/Alaska" , "America/Anguilla|America/Antigua" , "America/Anguilla|America/Dominica" , "America/Anguilla|America/Grenada" , "America/Anguilla|America/Guadeloupe" , "America/Anguilla|America/Marigot" , "America/Anguilla|America/Montserrat" , "America/Anguilla|America/Port_of_Spain" , "America/Anguilla|America/St_Barthelemy" , "America/Anguilla|America/St_Kitts" , "America/Anguilla|America/St_Lucia" , "America/Anguilla|America/St_Thomas" , "America/Anguilla|America/St_Vincent" , "America/Anguilla|America/Tortola" , "America/Anguilla|America/Virgin" , "America/Argentina/Buenos_Aires|America/Buenos_Aires" , "America/Argentina/Catamarca|America/Argentina/ComodRivadavia" , "America/Argentina/Catamarca|America/Catamarca" , "America/Argentina/Cordoba|America/Cordoba" , "America/Argentina/Cordoba|America/Rosario" , "America/Argentina/Jujuy|America/Jujuy" , "America/Argentina/Mendoza|America/Mendoza" , "America/Aruba|America/Curacao" , "America/Aruba|America/Kralendijk" , "America/Aruba|America/Lower_Princes" , "America/Atikokan|America/Coral_Harbour" , "America/Chicago|US/Central" , "America/Denver|America/Shiprock" , "America/Denver|Navajo" , "America/Denver|US/Mountain" , "America/Detroit|US/Michigan" , "America/Edmonton|Canada/Mountain" , "America/Ensenada|America/Tijuana" , "America/Ensenada|Mexico/BajaNorte" , "America/Fort_Wayne|America/Indiana/Indianapolis" , "America/Fort_Wayne|America/Indianapolis" , "America/Fort_Wayne|US/East-Indiana" , "America/Halifax|Canada/Atlantic" , "America/Havana|Cuba" , "America/Indiana/Knox|America/Knox_IN" , "America/Indiana/Knox|US/Indiana-Starke" , "America/Jamaica|Jamaica" , "America/Kentucky/Louisville|America/Louisville" , "America/Los_Angeles|US/Pacific" , "America/Los_Angeles|US/Pacific-New" , "America/Manaus|Brazil/West" , "America/Mazatlan|Mexico/BajaSur" , "America/Mexico_City|Mexico/General" , "America/Montreal|America/Toronto" , "America/Montreal|Canada/Eastern" , "America/New_York|US/Eastern" , "America/Noronha|Brazil/DeNoronha" , "America/Phoenix|US/Arizona" , "America/Porto_Acre|America/Rio_Branco" , "America/Porto_Acre|Brazil/Acre" , "America/Regina|Canada/East-Saskatchewan" , "America/Regina|Canada/Saskatchewan" , "America/Santiago|Chile/Continental" , "America/Sao_Paulo|Brazil/East" , "America/St_Johns|Canada/Newfoundland" , "America/Vancouver|Canada/Pacific" , "America/Whitehorse|Canada/Yukon" , "America/Winnipeg|Canada/Central" , "Antarctica/McMurdo|Antarctica/South_Pole" , "Antarctica/McMurdo|NZ" , "Antarctica/McMurdo|Pacific/Auckland" , "Arctic/Longyearbyen|Atlantic/Jan_Mayen" , "Arctic/Longyearbyen|Europe/Oslo" , "Asia/Aden|Asia/Kuwait" , "Asia/Aden|Asia/Riyadh" , "Asia/Ashgabat|Asia/Ashkhabad" , "Asia/Bahrain|Asia/Qatar" , "Asia/Bangkok|Asia/Phnom_Penh" , " Asia / B
=== === === === === === === === === === === === === === === === === === === === === === === ===
Google Code Prettify
Copyright ( C ) 2006 Google Inc .
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
var IN _GLOBAL _SCOPE = ! 0 ; window . PR _SHOULD _USE _CONTINUATION = ! 0 ; var prettyPrintOne , prettyPrint ; ! function ( ) { function a ( a ) { function b ( a ) { var b = a . charCodeAt ( 0 ) ; if ( 92 !== b ) return b ; var c = a . charAt ( 1 ) ; return b = l [ c ] , b ? b : "0" <= c && c <= "7" ? parseInt ( a . substring ( 1 ) , 8 ) : "u" === c || "x" === c ? parseInt ( a . substring ( 2 ) , 16 ) : a . charCodeAt ( 1 ) } function c ( a ) { if ( a < 32 ) return ( a < 16 ? "\\x0" : "\\x" ) + a . toString ( 16 ) ; var b = String . fromCharCode ( a ) ; return "\\" === b || "-" === b || "]" === b || "^" === b ? "\\" + b : b } function d ( a ) { var d = a . substring ( 1 , a . length - 1 ) . match ( new RegExp ( "\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]" , "g" ) ) , e = [ ] , f = "^" === d [ 0 ] , g = [ "[" ] ; f && g . push ( "^" ) ; for ( var h = f ? 1 : 0 , i = d . length ; h < i ; ++ h ) { var j = d [ h ] ; if ( /\\[bdsw]/i . test ( j ) ) g . push ( j ) ; else { var k , l = b ( j ) ; h + 2 < i && "-" === d [ h + 1 ] ? ( k = b ( d [ h + 2 ] ) , h += 2 ) : k = l , e . push ( [ l , k ] ) , k < 65 || l > 122 || ( k < 65 || l > 90 || e . push ( [ 32 | Math . max ( 65 , l ) , 32 | Math . min ( k , 90 ) ] ) , k < 97 || l > 122 || e . push ( [ Math . max ( 97 , l ) & - 33 , Math . min ( k , 122 ) & - 33 ] ) ) } } e . sort ( function ( a , b ) { return a [ 0 ] - b [ 0 ] || b [ 1 ] - a [ 1 ] } ) ; for ( var m = [ ] , n = [ ] , h = 0 ; h < e . length ; ++ h ) { var o = e [ h ] ; o [ 0 ] <= n [ 1 ] + 1 ? n [ 1 ] = Math . max ( n [ 1 ] , o [ 1 ] ) : m . push ( n = o ) } for ( var h = 0 ; h < m . length ; ++ h ) { var o = m [ h ] ; g . push ( c ( o [ 0 ] ) ) , o [ 1 ] > o [ 0 ] && ( o [ 1 ] + 1 > o [ 0 ] && g . push ( "-" ) , g . push ( c ( o [ 1 ] ) ) ) } return g . push ( "]" ) , g . join ( "" ) } function e ( a ) { for ( var b = a . source . match ( new RegExp ( "(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)" , "g" ) ) , e = b . length , h = [ ] , i = 0 , j = 0 ; i < e ; ++ i ) { var k = b [ i ] ; if ( "(" === k ) ++ j ; else if ( "\\" === k . charAt ( 0 ) ) { var l = + k . substring ( 1 ) ; l && ( l <= j ? h [ l ] = - 1 : b [ i ] = c ( l ) ) } } for ( var i = 1 ; i < h . length ; ++ i ) - 1 === h [ i ] && ( h [ i ] = ++ f ) ; for ( var i = 0 , j = 0 ; i < e ; ++ i ) { var k = b [ i ] ; if ( "(" === k ) ++ j , h [ j ] || ( b [ i ] = "(?:" ) ; else if ( "\\" === k . charAt ( 0 ) ) { var l = + k . substring ( 1 ) ; l && l <= j && ( b [ i ] = "\\" + h [ l ] ) } } for ( var i = 0 ; i < e ; ++ i ) "^" === b [ i ] && "^" !== b [ i + 1 ] && ( b [ i ] = "" ) ; if ( a . ignoreCase && g ) for ( var i = 0 ; i < e ; ++ i ) { var k = b [ i ] , m = k . charAt ( 0 ) ; k . length >= 2 && "[" === m ? b [ i ] = d ( k ) : "\\" !== m && ( b [ i ] = k . replace ( /[a-zA-Z]/g , function ( a ) { var b = a . charCodeAt ( 0 ) ; return "[" + String . fromCharCode ( b & - 33 , 32 | b ) + "]" } ) ) } return b . join ( "" ) } for ( var f = 0 , g = ! 1 , h = ! 1 , i = 0 , j = a . length ; i < j ; ++ i ) { var k = a [ i ] ; if ( k . ignoreCase ) h = ! 0 ; else if ( /[a-z]/i . test ( k . source . replace ( /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi , "" ) ) ) { g = ! 0 , h = ! 1 ; break } } for ( var l = { b : 8 , t : 9 , n : 10 , v : 11 , f : 12 , r : 13 } , m = [ ] , i = 0 , j = a . length ; i < j ; ++ i ) { var k = a [ i ] ; if ( k . global || k . multiline ) throw new Error ( "" + k ) ; m . push ( "(?:" + e ( k ) + ")" ) } return new RegExp ( m . join ( "|" ) , h ? "gi" : "g" ) } function b ( a , b ) { function c ( a ) { var i = a . nodeType ; if ( 1 == i ) { if ( d . test ( a . className ) ) return ; for ( var j = a . firstChild ; j ; j = j . nextSibling ) c ( j ) ; var k = a . nodeName . toLowerCase ( ) ; "br" !== k && "li" !== k || ( e [ h ] = "\n" , g [ h << 1 ] = f ++ , g [ h ++ << 1 | 1 ] = a ) } else if ( 3 == i || 4 == i ) { var l = a . nodeValue ; l . length && ( l = b ? l . replace ( /\r\n?/g , "\n" ) : l . replace ( /[ \t\r\n]+/g , " " ) , e [ h ] = l , g [ h << 1 ] = f , f += l . length , g [ h ++ << 1 | 1 ] = a ) } } var d = /(?:^|\s)nocode(?:\s|$)/ , e = [ ] , f = 0 , g = [ ] , h = 0 ; return c ( a ) , { sourceCode : e . join ( "" ) . replace ( /\n$/ , "" ) , spans : g } } function c ( a , b , c , d ) { if ( b ) { var e = { sourceCode : b , basePos : a } ; c ( e ) , d . push . apply ( d , e . decorations ) } } function d ( a ) { for ( var b = void 0 , c = a . firstChild ; c ; c = c . nextSibling ) { var d = c . nodeType ; b = 1 === d ? b ? a : c : 3 === d && R . test ( c . nodeValue ) ? a : b } return b === a ? void 0 : b } function e ( b , d ) { var e , f = { } ; ! function ( ) { for ( var c = b . concat ( d ) , g = [ ] , h = { } , i = 0 , j = c . length ; i < j ; ++ i ) { var k = c [ i ] , l = k [ 3 ] ; if ( l ) for ( var m = l . length ; -- m >= 0 ; ) f [ l . charAt ( m ) ] = k ; var n = k [ 1 ] , o = "" + n ; h . hasOwnProperty ( o ) || ( g . push ( n ) , h [ o ] = null ) } g . push ( /[\0-\uffff]/ ) , e = a ( g ) } ( ) ; var g = d . length , h = function ( a ) { for ( var b = a . sourceCode , i = a . basePos , k = [ i , J ] , l = 0 , m = b . match ( e ) || [ ] , n = { } , o = 0 , p = m . length ; o < p ; ++ o ) { var q , r = m [ o ] , s = n [ r ] , t = void 0 ; if ( "string" == typeof s ) q = ! 1 ; else { var u = f [ r . charAt ( 0 ) ] ; if ( u ) t = r . match ( u [ 1 ] ) , s = u [ 0 ] ; else { for ( var v = 0 ; v < g ; ++ v ) if ( u = d [ v ] , t = r . match ( u [ 1 ] ) ) { s = u [ 0 ] ; break } t || ( s = J ) } q = s . length >= 5 && "lang-" === s . substring ( 0 , 5 ) , ! q || t && "string" == typeof t [ 1 ] || ( q = ! 1 , s = M ) , q || ( n [ r ] = s ) } var w = l ; if ( l += r . length , q ) { var x = t [ 1 ] , y = r . indexOf ( x ) , z = y + x . length ; t [ 2 ] && ( z = r . length - t [ 2 ] . length , y = z - x . length ) ; var A = s . substring ( 5 ) ; c ( i + w , r . substring ( 0 , y ) , h , k ) , c ( i + w + y , x , j ( A , x ) , k ) , c ( i + w + z , r . substring ( z ) , h , k ) } else k . push ( i + w , s ) } a . decorations = k } ; return h } functi
=== === === === === === === === === === === === === === === === === === === === === === === ===
vkBeautify - javascript plugin to pretty - print or minify text in XML , JSON , CSS and SQL formats .
Version - 0.99 . 00. beta
Copyright ( c ) 2012 Vadim Kiryukhin
vkiryukhin @ gmail . com
http : //www.eslinstructor.net/vkbeautify/
Dual licensed under the MIT and GPL licenses :
http : //www.opensource.org/licenses/mit-license.php
http : //www.gnu.org/licenses/gpl.html
* /
function ( ) { function a ( a ) { var b = " " ; if ( isNaN ( parseInt ( a ) ) ) b = a ; else switch ( a ) { case 1 : b = " " ; break ; case 2 : b = " " ; break ; case 3 : b = " " ; break ; case 4 : b = " " ; break ; case 5 : b = " " ; break ; case 6 : b = " " ; break ; case 7 : b = " " ; break ; case 8 : b = " " ; break ; case 9 : b = " " ; break ; case 10 : b = " " ; break ; case 11 : b = " " ; break ; case 12 : b = " " } for ( var c = [ "\n" ] , d = 0 ; d < 100 ; d ++ ) c . push ( c [ d ] + b ) ; return c } function b ( ) { this . step = " " , this . shift = a ( this . step ) } function c ( a , b ) { return b - ( a . replace ( /\(/g , "" ) . length - a . replace ( /\)/g , "" ) . length ) } function d ( a , b ) { return a . replace ( /\s{1,}/g , " " ) . replace ( / AND /gi , "~::~" + b + b + "AND " ) . replace ( / BETWEEN /gi , "~::~" + b + "BETWEEN " ) . replace ( / CASE /gi , "~::~" + b + "CASE " ) . replace ( / ELSE /gi , "~::~" + b + "ELSE " ) . replace ( / END /gi , "~::~" + b + "END " ) . replace ( / FROM /gi , "~::~FROM " ) . replace ( / GROUP\s{1,}BY/gi , "~::~GROUP BY " ) . replace ( / HAVING /gi , "~::~HAVING " ) . replace ( / IN /gi , " IN " ) . replace ( / JOIN /gi , "~::~JOIN " ) . replace ( / CROSS~::~{1,}JOIN /gi , "~::~CROSS JOIN " ) . replace ( / INNER~::~{1,}JOIN /gi , "~::~INNER JOIN " ) . replace ( / LEFT~::~{1,}JOIN /gi , "~::~LEFT JOIN " ) . replace ( / RIGHT~::~{1,}JOIN /gi , "~::~RIGHT JOIN " ) . replace ( / ON /gi , "~::~" + b + "ON " ) . replace ( / OR /gi , "~::~" + b + b + "OR " ) . replace ( / ORDER\s{1,}BY/gi , "~::~ORDER BY " ) . replace ( / OVER /gi , "~::~" + b + "OVER " ) . replace ( /\(\s{0,}SELECT /gi , "~::~(SELECT " ) . replace ( /\)\s{0,}SELECT /gi , ")~::~SELECT " ) . replace ( / THEN /gi , " THEN~::~" + b ) . replace ( / UNION /gi , "~::~UNION~::~" ) . replace ( / USING /gi , "~::~USING " ) . replace ( / WHEN /gi , "~::~" + b + "WHEN " ) . replace ( / WHERE /gi , "~::~WHERE " ) . replace ( / WITH /gi , "~::~WITH " ) . replace ( / ALL /gi , " ALL " ) . replace ( / AS /gi , " AS " ) . replace ( / ASC /gi , " ASC " ) . replace ( / DESC /gi , " DESC " ) . replace ( / DISTINCT /gi , " DISTINCT " ) . replace ( / EXISTS /gi , " EXISTS " ) . replace ( / NOT /gi , " NOT " ) . replace ( / NULL /gi , " NULL " ) . replace ( / LIKE /gi , " LIKE " ) . replace ( /\s{0,}SELECT /gi , "SELECT " ) . replace ( /\s{0,}UPDATE /gi , "UPDATE " ) . replace ( / SET /gi , " SET " ) . replace ( /~::~{1,}/g , "~::~" ) . split ( "~::~" ) } b . prototype . xml = function ( b , c ) { var d = b . replace ( />\s{0,}</g , "><" ) . replace ( /</g , "~::~<" ) . replace ( /\s*xmlns\:/g , "~::~xmlns:" ) . replace ( /\s*xmlns\=/g , "~::~xmlns=" ) . split ( "~::~" ) , e = d . length , f = ! 1 , g = 0 , h = "" , i = 0 , j = c ? a ( c ) : this . shift ; for ( i = 0 ; i < e ; i ++ ) d [ i ] . search ( /<!/ ) > - 1 ? ( h += j [ g ] + d [ i ] , f = ! 0 , ( d [ i ] . search ( /-->/ ) > - 1 || d [ i ] . search ( /\]>/ ) > - 1 || d [ i ] . search ( /!DOCTYPE/ ) > - 1 ) && ( f = ! 1 ) ) : d [ i ] . search ( /-->/ ) > - 1 || d [ i ] . search ( /\]>/ ) > - 1 ? ( h += d [ i ] , f = ! 1 ) : /^<\w/ . exec ( d [ i - 1 ] ) && /^<\/\w/ . exec ( d [ i ] ) && /^<[\w:\-\.\,]+/ . exec ( d [ i - 1 ] ) == /^<\/[\w:\-\.\,]+/ . exec ( d [ i ] ) [ 0 ] . replace ( "/" , "" ) ? ( h += d [ i ] , f || g -- ) : d [ i ] . search ( /<\w/ ) > - 1 && d [ i ] . search ( /<\// ) == - 1 && d [ i ] . search ( /\/>/ ) == - 1 ? h = h += f ? d [ i ] : j [ g ++ ] + d [ i ] : d [ i ] . search ( /<\w/ ) > - 1 && d [ i ] . search ( /<\// ) > - 1 ? h = h += f ? d [ i ] : j [ g ] + d [ i ] : d [ i ] . search ( /<\// ) > - 1 ? h = h += f ? d [ i ] : j [ -- g ] + d [ i ] : d [ i ] . search ( /\/>/ ) > - 1 ? h = h += f ? d [ i ] : j [ g ] + d [ i ] : h += d [ i ] . search ( /<\?/ ) > - 1 ? j [ g ] + d [ i ] : d [ i ] . search ( /xmlns\:/ ) > - 1 || d [ i ] . search ( /xmlns\=/ ) > - 1 ? j [ g ] + d [ i ] : d [ i ] ; return "\n" == h [ 0 ] ? h . slice ( 1 ) : h } , b . prototype . json = function ( a , b ) { var b = b ? b : this . step ; return "undefined" == typeof JSON ? a : "string" == typeof a ? JSON . stringify ( JSON . parse ( a ) , null , b ) : "object" == typeof a ? JSON . stringify ( a , null , b ) : a } , b . prototype . css = function ( b , c ) { var d = b . replace ( /\s{1,}/g , " " ) . replace ( /\{/g , "{~::~" ) . replace ( /\}/g , "~::~}~::~" ) . replace ( /\;/g , ";~::~" ) . replace ( /\/\*/g , "~::~/*" ) . replace ( /\*\//g , "*/~::~" ) . replace ( /~::~\s{0,}~::~/g , "~::~" ) . split ( "~::~" ) , e = d . length , f = 0 , g = "" , h = 0 , i = c ? a ( c ) : this . shift ; for ( h = 0 ; h < e ; h ++ ) g += /\{/ . exec ( d [ h ] ) ? i [ f ++ ] + d [ h ] : /\}/ . exec ( d [ h ] ) ? i [ -- f ] + d [ h ] : /\*\\/ . exec ( d [ h ] ) ? i [ f ] + d [ h ] : i [ f ] + d [ h ] ; return g . replace ( /^\n{1,}/ , "" ) } , b . prototype . sql = function ( b , e ) { var f = b . replace ( /\s{1,}/g , " " ) . replace ( /\'/gi , "~::~'" ) . split ( "~::~" ) , g = f . length , h = [ ] , i = 0 , j = this . step , k = 0 , l = "" , m = 0 , n = e ? a ( e ) : this . shift ; for ( m = 0 ; m < g ; m ++ ) h = m % 2 ? h . concat ( f [ m ] ) : h . concat ( d ( f [ m ] , j ) ) ; for ( g = h . length , m = 0 ; m < g ; m ++ ) { k = c ( h [ m ] , k ) , /\s{0,}\s{0,}SELECT\s{0,}/ . exec ( h [ m ] ) && ( h [ m ] = h [ m ] . replace ( /\,/g , ",\n" + j + j ) ) , /\s{0,}\s{0,}SET\s{0,}/ . exec ( h [ m ] ) && ( h [ m ] = h [ m ] . replace ( /\,/g , ",\n" + j + j ) ) , /\s{0,}\(\s{0,}SELECT\s{0,}/ . exec ( h [ m ] ) ? ( i ++ , l += n [ i ] + h [ m ] ) : /\'/ . exec ( h [ m ] ) ? ( k < 1 && i && i -- , l += h [ m ] ) : ( l += n [ i ] + h [ m ] ,
=== === === === === === === === === === === === === === === === === === === === === === === ===
Sortable
@ author RubaXa < trash @ rubaxa . org >
@ license MIT
* /
function ( a ) { "function" == typeof define && define . amd ? define ( a ) : "undefined" != typeof module && "undefined" != typeof module . exports ? module . exports = a ( ) : "undefined" != typeof Package ? Sortable = a ( ) : window . Sortable = a ( ) } ( function ( ) { function a ( a , b ) { if ( ! a || ! a . nodeType || 1 !== a . nodeType ) throw "Sortable: `el` must be HTMLElement, and not " + { } . toString . call ( a ) ; this . el = a , this . options = b = s ( { } , b ) , a [ M ] = this ; var c = { group : Math . random ( ) , sort : ! 0 , disabled : ! 1 , store : null , handle : null , scroll : ! 0 , scrollSensitivity : 30 , scrollSpeed : 10 , draggable : /[uo]l/i . test ( a . nodeName ) ? "li" : ">*" , ghostClass : "sortable-ghost" , chosenClass : "sortable-chosen" , ignore : "a, img" , filter : null , animation : 0 , setData : function ( a , b ) { a . setData ( "Text" , b . textContent ) } , dropBubble : ! 1 , dragoverBubble : ! 1 , dataIdAttr : "data-id" , delay : 0 , forceFallback : ! 1 , fallbackClass : "sortable-fallback" , fallbackOnBody : ! 1 } ; for ( var d in c ) ! ( d in b ) && ( b [ d ] = c [ d ] ) ; W ( b ) ; for ( var f in this ) "_" === f . charAt ( 0 ) && ( this [ f ] = this [ f ] . bind ( this ) ) ; this . nativeDraggable = ! b . forceFallback && Q , e ( a , "mousedown" , this . _onTapStart ) , e ( a , "touchstart" , this . _onTapStart ) , this . nativeDraggable && ( e ( a , "dragover" , this ) , e ( a , "dragenter" , this ) ) , U . push ( this . _onDragOver ) , b . store && this . sort ( b . store . get ( this ) ) } function b ( a ) { w && w . state !== a && ( h ( w , "display" , a ? "none" : "" ) , ! a && w . state && x . insertBefore ( w , t ) , w . state = a ) } function c ( a , b , c ) { if ( a ) { c = c || O ; do if ( ">*" === b && a . parentNode === c || q ( a , b ) ) return a ; while ( a !== c && ( a = a . parentNode ) ) } return null } function d ( a ) { a . dataTransfer && ( a . dataTransfer . dropEffect = "move" ) , a . preventDefault ( ) } function e ( a , b , c ) { a . addEventListener ( b , c , ! 1 ) } function f ( a , b , c ) { a . removeEventListener ( b , c , ! 1 ) } function g ( a , b , c ) { if ( a ) if ( a . classList ) a . classList [ c ? "add" : "remove" ] ( b ) ; else { var d = ( " " + a . className + " " ) . replace ( L , " " ) . replace ( " " + b + " " , " " ) ; a . className = ( d + ( c ? " " + b : "" ) ) . replace ( L , " " ) } } function h ( a , b , c ) { var d = a && a . style ; if ( d ) { if ( void 0 === c ) return O . defaultView && O . defaultView . getComputedStyle ? c = O . defaultView . getComputedStyle ( a , "" ) : a . currentStyle && ( c = a . currentStyle ) , void 0 === b ? c : c [ b ] ; b in d || ( b = "-webkit-" + b ) , d [ b ] = c + ( "string" == typeof c ? "" : "px" ) } } function i ( a , b , c ) { if ( a ) { var d = a . getElementsByTagName ( b ) , e = 0 , f = d . length ; if ( c ) for ( ; e < f ; e ++ ) c ( d [ e ] , e ) ; return d } return [ ] } function j ( a , b , c , d , e , f , g ) { var h = O . createEvent ( "Event" ) , i = ( a || b [ M ] ) . options , j = "on" + c . charAt ( 0 ) . toUpperCase ( ) + c . substr ( 1 ) ; h . initEvent ( c , ! 0 , ! 0 ) , h . to = b , h . from = e || b , h . item = d || b , h . clone = w , h . oldIndex = f , h . newIndex = g , b . dispatchEvent ( h ) , i [ j ] && i [ j ] . call ( a , h ) } function k ( a , b , c , d , e , f ) { var g , h , i = a [ M ] , j = i . options . onMove ; return g = O . createEvent ( "Event" ) , g . initEvent ( "move" , ! 0 , ! 0 ) , g . to = b , g . from = a , g . dragged = c , g . draggedRect = d , g . related = e || b , g . relatedRect = f || b . getBoundingClientRect ( ) , a . dispatchEvent ( g ) , j && ( h = j . call ( i , g ) ) , h } function l ( a ) { a . draggable = ! 1 } function m ( ) { S = ! 1 } function n ( a , b ) { var c = a . lastElementChild , d = c . getBoundingClientRect ( ) ; return ( b . clientY - ( d . top + d . height ) > 5 || b . clientX - ( d . right + d . width ) > 5 ) && c } function o ( a ) { for ( var b = a . tagName + a . className + a . src + a . href + a . textContent , c = b . length , d = 0 ; c -- ; ) d += b . charCodeAt ( c ) ; return d . toString ( 36 ) } function p ( a , b ) { var c = 0 ; if ( ! a || ! a . parentNode ) return - 1 ; for ( ; a && ( a = a . previousElementSibling ) ; ) "TEMPLATE" !== a . nodeName . toUpperCase ( ) && q ( a , b ) && c ++ ; return c } function q ( a , b ) { if ( a ) { b = b . split ( "." ) ; var c = b . shift ( ) . toUpperCase ( ) , d = new RegExp ( "\\s(" + b . join ( "|" ) + ")(?=\\s)" , "g" ) ; return ! ( "" !== c && a . nodeName . toUpperCase ( ) != c || b . length && ( ( " " + a . className + " " ) . match ( d ) || [ ] ) . length != b . length ) } return ! 1 } function r ( a , b ) { var c , d ; return function ( ) { void 0 === c && ( c = arguments , d = this , setTimeout ( function ( ) { 1 === c . length ? a . call ( d , c [ 0 ] ) : a . apply ( d , c ) , c = void 0 } , b ) ) } } function s ( a , b ) { if ( a && b ) for ( var c in b ) b . hasOwnProperty ( c ) && ( a [ c ] = b [ c ] ) ; return a } if ( "undefined" == typeof window || "undefined" == typeof window . document ) return function ( ) { throw new Error ( "Sortable.js requires a window with a document" ) } ; var t , u , v , w , x , y , z , A , B , C , D , E , F , G , H , I , J , K = { } , L = /\s+/g , M = "Sortable" + ( new Date ) . getTime ( ) , N = window , O = N . document , P = N . parseInt , Q = ! ! ( "draggable" in O . createElement ( "div" ) ) , R = function ( a ) { return a = O . createElement ( "x" ) , a . style . cssText = "pointer-events:auto" , "auto" === a . style . pointerEvents } ( ) , S = ! 1 , T = Math . abs , U = ( [ ] . slice , [ ] ) , V = r ( function ( a , b , c ) { if ( c && b . scroll ) { var d
2016-12-05 15:07:19 +01:00
h . fillStyle = "green" ; for ( var u = 0 ; u < b . length ; u ++ ) { var v = b [ u ] / t * m ; h . fillRect ( s , o - v , r , v ) , s += r + q } if ( h . fillStyle = "black" , h . textAlign = "center" , s = i + q , e >= b . length ) for ( var u = 0 ; u <= b . length ; u ++ ) h . fillText ( u , s , o + . 3 * l ) , s += r + q ; else for ( var u = 0 ; u <= e ; u ++ ) { var w = Math . ceil ( b . length / e * u ) ; s = n / e * u + i , h . fillText ( w , s , o + . 3 * l ) } h . textAlign = "right" ; var x ; if ( f >= t ) for ( var u = 0 ; u <= t ; u ++ ) x = o - u / t * m + g / 3 , h . fillText ( u , . 8 * i , x ) ; else for ( var u = 0 ; u <= f ; u ++ ) { var w = Math . ceil ( t / f * u ) ; x = o - w / t * m + g / 3 , h . fillText ( w , . 8 * i , x ) } if ( c && ( h . textAlign = "center" , h . fillText ( c , n / 2 + i , o + . 8 * l ) ) , d ) { h . save ( ) ; var y = . 3 * i , z = m / 2 + k ; h . translate ( y , z ) , h . rotate ( - Math . PI / 2 ) , h . textAlign = "center" , h . fillText ( d , 0 , 0 ) , h . restore ( ) } } , draw _scale _bar : function ( a , b , c , d ) { var e = a . getContext ( "2d" ) , f = . 01 * a . width , g = . 01 * a . width , h = . 1 * a . height , i = . 3 * a . height , j = a . height - h - i , k = a . width - f - g , l = b / c ; e . strokeRect ( f , h , k , j ) ; var m = e . createLinearGradient ( f , 0 , k + f , 0 ) ; m . addColorStop ( 0 , "green" ) , m . addColorStop ( . 5 , "gold" ) , m . addColorStop ( 1 , "red" ) , e . fillStyle = m , e . fillRect ( f , h , k * l , j ) ; var n , o , p , q ; e . fillStyle = "black" , e . textAlign = "center" , e . font = "13px Arial" ; for ( var r = 0 ; r < d . length ; r ++ ) n = k / c * d [ r ] . min + f , o = h + j + . 1 * i , p = n , q = h + j + . 3 * i , CanvasComponents . draw _line ( e , n , o , p , q ) , n = k / c * d [ r ] . max + f , p = n , CanvasComponents . draw _line ( e , n , o , p , q ) , n = k / c * d [ r ] . min + f , o = h + j + . 3 * i , p = k / c * d [ r ] . max + f , q = o , CanvasComponents . draw _line ( e , n , o , p , q ) , d [ r ] . max >= . 9 * c ? ( e . textAlign = "right" , n = p ) : d [ r ] . max <= . 1 * c ? e . textAlign = "left" : n += ( p - n ) / 2 , o = h + j + . 8 * i , e . fillText ( d [ r ] . label , n , o ) } } , Utils = { chr : function ( a ) { return String . fromCharCode ( a ) } , ord : function ( a ) { return a . charCodeAt ( 0 ) } , pad _left : function ( a , b , c ) { c = c || "0" ; var d = c . length - ( b - a . length ) ; return d = d < 0 ? 0 : d , a . length < b ? Utils . pad _left ( c . slice ( d , c . length ) + a , b , c ) : a } , pad _right : function ( a , b , c ) { return c = c || " " , a . length < b ? Utils . pad _right ( a + c . slice ( 0 , b - a . length ) , b , c ) : a } , pad : function ( a , b , c ) { return Utils . pad _left ( a , b , c ) } , truncate : function ( a , b , c ) { return c = c || "..." , a . length > b && ( a = a . slice ( 0 , b - c . length ) + c ) , a } , hex : function ( a , b ) { return a = "string" == typeof a ? Utils . ord ( a ) : a , b = b || 2 , Utils . pad ( a . toString ( 16 ) , b ) } , bin : function ( a , b ) { return a = "string" == typeof a ? Utils . ord ( a ) : a , b = b || 8 , Utils . pad ( a . toString ( 2 ) , b ) } , printable : function ( a , b ) { window && window . app && ! window . app . options . treat _as _utf8 && ( a = Utils . byte _array _to _chars ( Utils . str _to _byte _array ( a ) ) ) ; var c = / [ \ 0 - \ x 0 8 \ x 0 B - \ x 0 C \ x 0 E - \ x 1 F \ x 7 F - \ x 9 F \ x A D \ u 0 3 7 8 \ u 0 3 7 9 \ u 0 3 7 F - \ u 0 3 8 3 \ u 0 3 8 B \ u 0 3 8 D \ u 0 3 A 2 \ u 0 5 2 8 - \ u 0 5 3 0 \ u 0 5 5 7 \ u 0 5 5 8 \ u 0 5 6 0 \ u 0 5 8 8 \ u 0 5 8 B - \ u 0 5 8 E \ u 0 5 9 0 \ u 0 5 C 8 - \ u 0 5 C F \ u 0 5 E B - \ u 0 5 E F \ u 0 5 F 5 - \ u 0 6 0 5 \ u 0 6 1 C \ u 0 6 1 D \ u 0 6 D D \ u 0 7 0 E \ u 0 7 0 F \ u 0 7 4 B \ u 0 7 4 C \ u 0 7 B 2 - \ u 0 7 B F \ u 0 7 F B - \ u 0 7 F F \ u 0 8 2 E \ u 0 8 2 F \ u 0 8 3 F \ u 0 8 5 C \ u 0 8 5 D \ u 0 8 5 F - \ u 0 8 9 F \ u 0 8 A 1 \ u 0 8 A D - \ u 0 8 E 3 \ u 0 8 F F \ u 0 9 7 8 \ u 0 9 8 0 \ u 0 9 8 4 \ u 0 9 8 D \ u 0 9 8 E \ u 0 9 9 1 \ u 0 9 9 2 \ u 0 9 A 9 \ u 0 9 B 1 \ u 0 9 B 3 - \ u 0 9 B 5 \ u 0 9 B A \ u 0 9 B B \ u 0 9 C 5 \ u 0 9 C 6 \ u 0 9 C 9 \ u 0 9 C A \ u 0 9 C F - \ u 0 9 D 6 \ u 0 9 D 8 - \ u 0 9 D B \ u 0 9 D E \ u 0 9 E 4 \ u 0 9 E 5 \ u 0 9 F C - \ u 0 A 0 0 \ u 0 A 0 4 \ u 0 A 0 B - \ u 0 A 0 E \ u 0 A 1 1 \ u 0 A 1 2 \ u 0 A 2 9 \ u 0 A 3 1 \ u 0 A 3 4 \ u 0 A 3 7 \ u 0 A 3 A \ u 0 A 3 B \ u 0 A 3 D \ u 0 A 4 3 - \ u 0 A 4 6 \ u 0 A 4 9 \ u 0 A 4 A \ u 0 A 4 E - \ u 0 A 5 0 \ u 0 A 5 2 - \ u 0 A 5 8 \ u 0 A 5 D \ u 0 A 5 F - \ u 0 A 6 5 \ u 0 A 7 6 - \ u 0 A 8 0 \ u 0 A 8 4 \ u 0 A 8 E \ u 0 A 9 2 \ u 0 A A 9 \ u 0 A B 1 \ u 0 A B 4 \ u 0 A B A \ u 0 A B B \ u 0 A C 6 \ u 0 A C A \ u 0 A C E \ u 0 A C F \ u 0 A D 1 - \ u 0 A D F \ u 0 A E 4 \ u 0 A E 5 \ u 0 A F 2 - \ u 0 B 0 0 \ u 0 B 0 4 \ u 0 B 0 D \ u 0 B 0 E \ u 0 B 1 1 \ u 0 B 1 2 \ u 0 B 2 9 \ u 0 B 3 1 \ u 0 B 3 4 \ u 0 B 3 A \ u 0 B 3 B \ u 0 B 4 5 \ u 0 B 4 6 \ u 0 B 4 9 \ u 0 B 4 A \ u 0 B 4 E - \ u 0 B 5 5 \ u 0 B 5 8 - \ u 0 B 5 B \ u 0 B 5 E \ u 0 B 6 4 \ u 0 B 6 5 \ u 0 B 7 8 - \ u 0 B 8 1 \ u 0 B 8 4 \ u 0 B 8 B - \ u 0 B 8 D \ u 0 B 9 1 \ u 0 B 9 6 - \ u 0 B 9 8 \ u 0 B 9 B \ u 0 B 9 D \ u 0 B A 0 - \ u 0 B A 2 \ u 0 B A 5 - \ u 0 B A 7 \ u 0 B A B - \ u 0 B A D \ u 0 B B A - \ u 0 B B D \ u 0 B C 3 - \ u 0 B C 5 \ u 0 B C 9 \ u 0 B C E \ u 0 B C F \ u 0 B D 1 - \ u 0 B D 6 \ u 0 B D 8 - \ u 0 B E 5 \ u 0 B F B - \ u 0 C 0 0 \ u 0 C 0 4 \ u 0 C 0 D \ u 0 C 1 1 \ u 0 C 2 9 \ u 0 C 3 4 \ u 0 C 3 A - \ u 0 C 3 C \ u 0 C 4 5 \ u 0 C 4 9 \ u 0 C 4 E - \ u 0 C 5 4 \ u 0 C 5 7 \ u 0 C 5 A - \ u 0 C 5 F \ u 0 C 6 4 \ u 0 C 6 5 \ u 0 C 7 0 - \ u 0 C 7 7 \ u 0 C 8 0 \ u 0 C 8 1 \ u 0 C 8 4 \ u 0 C 8 D \ u 0 C 9 1 \ u 0 C A 9 \ u 0 C B 4 \ u 0 C B A \ u 0 C B B \ u 0 C C 5 \ u 0 C C 9 \ u 0 C C E - \ u 0 C D 4 \ u 0 C D 7 - \ u 0 C D D \ u 0 C D F \ u 0 C E 4 \ u 0 C E 5 \ u 0 C F 0 \ u 0 C F 3 - \ u 0 D 0 1 \ u 0 D 0 4 \ u 0 D 0 D \ u 0 D 1 1 \ u 0 D 3 B \ u 0 D 3 C \ u 0 D 4 5 \ u 0 D 4 9 \ u 0 D 4 F - \ u 0 D 5 6 \ u 0 D 5 8 - \ u 0 D 5 F \ u 0 D 6 4 \ u 0 D 6 5 \ u 0 D 7 6 - \ u 0 D 7 8 \ u 0 D 8 0 \ u 0 D 8 1 \ u 0 D 8 4 \ u 0 D 9 7 - \ u 0 D 9 9 \ u 0 D B 2 \ u 0 D B C \ u 0 D B E \ u 0 D B F \ u 0 D C 7 - \ u 0 D C 9 \ u 0 D C B - \ u 0 D C E \ u 0 D D 5 \ u 0 D D 7 \ u 0 D E 0 - \ u 0 D F 1 \ u 0 D F 5 - \ u 0 E 0 0 \ u 0 E 3 B - \ u 0 E 3 E \ u 0 E 5 C - \ u 0 E 8 0 \ u 0 E 8 3 \ u 0 E 8 5 \ u 0 E 8 6 \ u 0 E 8 9 \ u 0 E 8 B \ u 0 E 8 C \ u 0 E 8 E - \ u 0 E 9 3 \ u 0 E 9 8 \ u 0 E A 0 \ u 0 E A 4 \ u 0 E A 6 \ u 0 E A 8 \ u 0 E A 9 \ u 0 E A C \ u 0 E B A \ u 0 E B E \ u 0 E B F \ u 0 E C 5 \ u 0 E C 7 \ u 0 E C E \ u 0 E C F \ u 0 E D A \ u 0 E D B \ u 0 E E 0 - \ u 0 E F F \ u 0 F 4 8 \ u 0 F 6 D - \ u 0 F 7 0 \ u 0 F 9 8 \ u 0 F B D \ u 0 F C D \ u 0 F D B - \ u 0 F F F \ u 1 0 C 6 \ u 1 0 C 8 - \ u 1 0 C C \ u 1 0 C E \ u 1 0 C F \ u 1 2 4 9 \ u 1 2 4 E \ u 1 2 4 F \ u 1 2 5 7 \ u 1 2 5 9 \ u 1 2 5 E \ u 1 2 5 F \ u 1 2 8 9 \ u 1 2 8 E \ u 1 2 8 F \ u 1 2 B 1 \ u 1 2 B 6 \ u 1 2 B 7 \ u 1 2 B F \ u 1 2 C 1 \
2016-12-08 01:34:41 +01:00
var c = b [ 0 ] / 32 , d = b [ 1 ] , e = CryptoJS . enc . Hex . parse ( b [ 2 ] || "" ) , f = b [ 3 ] , g = b [ 4 ] , h = Utils . format [ f ] . parse ( a ) , i = CryptoJS . EvpKDF ( h , e , { keySize : c , iterations : d } ) ; return i . toString ( Utils . format [ g ] ) } , run _rc4 : function ( a , b ) { var c = Utils . format [ b [ 1 ] ] . parse ( a ) , d = Utils . format [ b [ 0 ] . option ] . parse ( b [ 0 ] . string ) , e = CryptoJS . RC4 . encrypt ( c , d ) ; return e . ciphertext . toString ( Utils . format [ b [ 2 ] ] ) } , RC4DROP _BYTES : 768 , run _rc4drop : function ( a , b ) { var c = Utils . format [ b [ 1 ] ] . parse ( a ) , d = Utils . format [ b [ 0 ] . option ] . parse ( b [ 0 ] . string ) , e = b [ 3 ] , f = CryptoJS . RC4Drop . encrypt ( c , d , { drop : e } ) ; return f . ciphertext . toString ( Utils . format [ b [ 2 ] ] ) } , run _vigenere _enc : function ( a , b ) { var c , d , e , f = "abcdefghijklmnopqrstuvwxyz" , g = b [ 0 ] . toLowerCase ( ) , h = "" , i = 0 ; if ( ! g ) return "No key entered" ; if ( ! /^[a-zA-Z]+$/ . test ( g ) ) return "The key must consist only of letters" ; for ( var j = 0 ; j < a . length ; j ++ ) f . indexOf ( a [ j ] ) >= 0 ? ( e = g [ ( j - i ) % g . length ] , c = f . indexOf ( e ) , d = f . indexOf ( a [ j ] ) , h += f [ ( c + d ) % 26 ] ) : f . indexOf ( a [ j ] . toLowerCase ( ) ) >= 0 ? ( e = g [ ( j - i ) % g . length ] . toLowerCase ( ) , c = f . indexOf ( e ) , d = f . indexOf ( a [ j ] . toLowerCase ( ) ) , h += f [ ( c + d ) % 26 ] . toUpperCase ( ) ) : ( h += a [ j ] , i ++ ) ; return h } , run _vigenere _dec : function ( a , b ) { var c , d , e , f = "abcdefghijklmnopqrstuvwxyz" , g = b [ 0 ] . toLowerCase ( ) , h = "" , i = 0 ; if ( ! g ) return "No key entered" ; if ( ! /^[a-zA-Z]+$/ . test ( g ) ) return "The key must consist only of letters" ; for ( var j = 0 ; j < a . length ; j ++ ) f . indexOf ( a [ j ] ) >= 0 ? ( e = g [ ( j - i ) % g . length ] , c = f . indexOf ( e ) , d = f . indexOf ( a [ j ] ) , h += f [ ( d - c + f . length ) % 26 ] ) : f . indexOf ( a [ j ] . toLowerCase ( ) ) >= 0 ? ( e = g [ ( j - i ) % g . length ] . toLowerCase ( ) , c = f . indexOf ( e ) , d = f . indexOf ( a [ j ] . toLowerCase ( ) ) , h += f [ ( d + f . length - c ) % 26 ] . toUpperCase ( ) ) : ( h += a [ j ] , i ++ ) ; return h } } ; CryptoJS . kdf . OpenSSL . execute = function ( a , b , c , d ) { void 0 !== d && null !== d || ( d = CryptoJS . lib . WordArray . random ( 8 ) ) ; var e = CryptoJS . algo . EvpKDF . create ( { keySize : b + c } ) . compute ( a , d ) , f = CryptoJS . lib . WordArray . create ( e . words . slice ( b ) , 4 * c ) ; return e . sigBytes = 4 * b , CryptoJS . lib . CipherParams . create ( { key : e , iv : f , salt : d } ) } ; var Code = { LANGUAGES : [ "default-code" , "default-markup" , "bash" , "bsh" , "c" , "cc" , "coffee" , "cpp" , "cs" , "csh" , "cv" , "cxx" , "cyc" , "htm" , "html" , "in.tag" , "java" , "javascript" , "js" , "json" , "m" , "mxml" , "perl" , "pl" , "pm" , "py" , "python" , "rb" , "rc" , "rs" , "ruby" , "rust" , "sh" , "uq.val" , "xhtml" , "xml" , "xsl" ] , LINE _NUMS : ! 1 , run _syntax _highlight : function ( a , b ) { var c = b [ 0 ] , d = b [ 1 ] ; return "<code class='prettyprint'>" + prettyPrintOne ( Utils . escape _html ( a ) , c , d ) + "</code>" } , BEAUTIFY _INDENT : "\\t" , run _xml _beautify : function ( a , b ) { var c = b [ 0 ] ; return vkbeautify . xml ( a , c ) } , run _json _beautify : function ( a , b ) { var c = b [ 0 ] ; return a ? vkbeautify . json ( a , c ) : "" } , run _css _beautify : function ( a , b ) { var c = b [ 0 ] ; return vkbeautify . css ( a , c ) } , run _sql _beautify : function ( a , b ) { var c = b [ 0 ] ; return vkbeautify . sql ( a , c ) } , PRESERVE _COMMENTS : ! 1 , run _xml _minify : function ( a , b ) { var c = b [ 0 ] ; return vkbeautify . xmlmin ( a , c ) } , run _json _minify : function ( a , b ) { return a ? vkbeautify . jsonmin ( a ) : "" } , run _css _minify : function ( a , b ) { var c = b [ 0 ] ; return vkbeautify . cssmin ( a , c ) } , run _sql _minify : function ( a , b ) { return vkbeautify . sqlmin ( a ) } , run _generic _beautify : function ( a , b ) { function c ( a , b , c ) { return g [ c ] = b [ 0 ] , a . substring ( 0 , b . index ) + "###preserved_token" + c + "###" + a . substring ( b . index + b [ 0 ] . length ) } for ( var d , e = a , f = 0 , g = [ ] , h = /'([^'\\]|\\.)*'/g ; d = h . exec ( e ) ; ) e = c ( e , d , f ++ ) , h . lastIndex = d . index ; for ( var i = /"([^"\\]|\\.)*"/g ; d = i . exec ( e ) ; ) e = c ( e , d , f ++ ) , i . lastIndex = d . index ; for ( var j = /\/\/[^\n\r]*/g ; d = j . exec ( e ) ; ) e = c ( e , d , f ++ ) , j . lastIndex = d . index ; for ( var k = /\/\*[\s\S]*?\*\//gm ; d = k . exec ( e ) ; ) e = c ( e , d , f ++ ) , k . lastIndex = d . index ; for ( var l = /(^|\n)#[^\n\r#]+/g ; d = l . exec ( e ) ; ) e = c ( e , d , f ++ ) , l . lastIndex = d . index ; for ( var m = /\/.*?[^\\]\/[gim]{0,3}/gi ; d = m . exec ( e ) ; ) e = c ( e , d , f ++ ) , m . lastIndex = d . index ; e = e . replace ( /;/g , ";\n" ) , e = e . replace ( /{/g , "{\n" ) , e = e . replace ( /}/g , "\n}\n" ) , e = e . replace ( /\r/g , "" ) , e = e . replace ( /^\s+/g , "" ) , e = e . replace ( /\n\s+/g , "\n" ) , e = e . replace ( /\s*$/g , "" ) , e = e . replace ( /\n{/g , "{" ) ; for ( var n = 0 , o = 0 ; n < e . length ; ) { switch ( e [ n ] ) { case "{" : o ++ ; break ; case "\n" : if ( n + 1 >= e . length ) break ; "}" == e [ n + 1 ] && o -- ; var p = o >= 0 ? Array ( 4 * o + 1 ) . join ( " " ) : "" ; e = e . substring ( 0 , n + 1 ) + p + e . substring ( n + 1 ) , o > 0 && ( n += 4 * o ) } n ++ } e = e . replace ( /\s*([!<>=+-\/*]?)=\s*/g , " $1= " ) , e = e . replace ( /\s*<([=]?)\s*/g , " <$1 " ) , e = e . replace ( /\s*>([=]?)\s*/g , " >$1 " ) , e = e . replace ( /([^+])\+([^+=])/g , "$1 + $2" ) , e
c += Extract . run _email ( a , [ ] ) , c += "\nMAC addresses\n" , c += Extract . run _mac ( a , [ ] ) , c += "\nURLs\n" , c += Extract . run _urls ( a , [ ] ) , c += "\nDomain names\n" , c += Extract . run _domains ( a , [ ] ) , c += "\nFile paths\n" , c += Extract . run _file _paths ( a , [ ! 0 , ! 0 ] ) , c += "\nDates\n" , c += Extract . run _dates ( a , [ ] ) } } , FileType = { run _detect : function ( a , b ) { var c = FileType . _magic _type ( a ) ; if ( c ) { var d = "File extension: " + c . ext + "\nMIME type: " + c . mime ; return c . desc && c . desc . length && ( d += "\nDescription: " + c . desc ) , d } return "Unknown file type. Have you tried checking the entropy of this data to determine whether it might be encrypted or compressed?" } , IGNORE _COMMON _BYTE _SEQUENCES : ! 0 , run _scan _for _embedded _files : function ( a , b ) { for ( var c , d = "Scanning data for 'magic bytes' which may indicate embedded files. The following results may be false positives and should not be treat as reliable. Any suffiently long file is likely to contain these magic bytes coincidentally.\n" , e = b [ 0 ] , f = [ "ico" , "ttf" , "" ] , g = 0 , h = 0 , i = 0 ; i < a . length ; i ++ ) if ( c = FileType . _magic _type ( a . slice ( i ) ) ) { if ( e && f . indexOf ( c . ext ) > - 1 ) { h ++ ; continue } g ++ , d += "\nOffset " + i + " (0x" + Utils . hex ( i ) + "):\n File extension: " + c . ext + "\n MIME type: " + c . mime + "\n" , c . desc && c . desc . length && ( d += " Description: " + c . desc + "\n" ) } return 0 === g && ( d += "\nNo embedded files were found." ) , h > 0 && ( d += "\n\n" + h , d += 1 == h ? " file type was detected that has a common byte sequence. This is likely to be a false positive." : " file types were detected that have common byte sequences. These are likely to be false positives." , d += " Run this operation with the 'Ignore common byte sequences' option unchecked to see details." ) , d } , _magic _type : function ( a ) { return a && a . length > 1 ? 255 === a [ 0 ] && 216 === a [ 1 ] && 255 === a [ 2 ] ? { ext : "jpg" , mime : "image/jpeg" } : 137 === a [ 0 ] && 80 === a [ 1 ] && 78 === a [ 2 ] && 71 === a [ 3 ] ? { ext : "png" , mime : "image/png" } : 71 === a [ 0 ] && 73 === a [ 1 ] && 70 === a [ 2 ] ? { ext : "gif" , mime : "image/gif" } : 87 === a [ 8 ] && 69 === a [ 9 ] && 66 === a [ 10 ] && 80 === a [ 11 ] ? { ext : "webp" , mime : "image/webp" } : ( 73 === a [ 0 ] && 73 === a [ 1 ] && 42 === a [ 2 ] && 0 === a [ 3 ] || 77 === a [ 0 ] && 77 === a [ 1 ] && 0 === a [ 2 ] && 42 === a [ 3 ] ) && 67 === a [ 8 ] && 82 === a [ 9 ] ? { ext : "cr2" , mime : "image/x-canon-cr2" } : 73 === a [ 0 ] && 73 === a [ 1 ] && 42 === a [ 2 ] && 0 === a [ 3 ] || 77 === a [ 0 ] && 77 === a [ 1 ] && 0 === a [ 2 ] && 42 === a [ 3 ] ? { ext : "tif" , mime : "image/tiff" } : 66 === a [ 0 ] && 77 === a [ 1 ] ? { ext : "bmp" , mime : "image/bmp" } : 73 === a [ 0 ] && 73 === a [ 1 ] && 188 === a [ 2 ] ? { ext : "jxr" , mime : "image/vnd.ms-photo" } : 56 === a [ 0 ] && 66 === a [ 1 ] && 80 === a [ 2 ] && 83 === a [ 3 ] ? { ext : "psd" , mime : "image/vnd.adobe.photoshop" } : 80 === a [ 0 ] && 75 === a [ 1 ] && 3 === a [ 2 ] && 4 === a [ 3 ] && 109 === a [ 30 ] && 105 === a [ 31 ] && 109 === a [ 32 ] && 101 === a [ 33 ] && 116 === a [ 34 ] && 121 === a [ 35 ] && 112 === a [ 36 ] && 101 === a [ 37 ] && 97 === a [ 38 ] && 112 === a [ 39 ] && 112 === a [ 40 ] && 108 === a [ 41 ] && 105 === a [ 42 ] && 99 === a [ 43 ] && 97 === a [ 44 ] && 116 === a [ 45 ] && 105 === a [ 46 ] && 111 === a [ 47 ] && 110 === a [ 48 ] && 47 === a [ 49 ] && 101 === a [ 50 ] && 112 === a [ 51 ] && 117 === a [ 52 ] && 98 === a [ 53 ] && 43 === a [ 54 ] && 122 === a [ 55 ] && 105 === a [ 56 ] && 112 === a [ 57 ] ? { ext : "epub" , mime : "application/epub+zip" } : 80 !== a [ 0 ] || 75 !== a [ 1 ] || 3 !== a [ 2 ] && 5 !== a [ 2 ] && 7 !== a [ 2 ] || 4 !== a [ 3 ] && 6 !== a [ 3 ] && 8 !== a [ 3 ] ? 117 === a [ 257 ] && 115 === a [ 258 ] && 116 === a [ 259 ] && 97 === a [ 260 ] && 114 === a [ 261 ] ? { ext : "tar" , mime : "application/x-tar" } : 82 !== a [ 0 ] || 97 !== a [ 1 ] || 114 !== a [ 2 ] || 33 !== a [ 3 ] || 26 !== a [ 4 ] || 7 !== a [ 5 ] || 0 !== a [ 6 ] && 1 !== a [ 6 ] ? 31 === a [ 0 ] && 139 === a [ 1 ] && 8 === a [ 2 ] ? { ext : "gz" , mime : "application/gzip" } : 66 === a [ 0 ] && 90 === a [ 1 ] && 104 === a [ 2 ] ? { ext : "bz2" , mime : "application/x-bzip2" } : 55 === a [ 0 ] && 122 === a [ 1 ] && 188 === a [ 2 ] && 175 === a [ 3 ] && 39 === a [ 4 ] && 28 === a [ 5 ] ? { ext : "7z" , mime : "application/x-7z-compressed" } : 120 === a [ 0 ] && 1 === a [ 1 ] ? { ext : "dmg" , mime : "application/x-apple-diskimage" } : 0 === a [ 0 ] && 0 === a [ 1 ] && 0 === a [ 2 ] && ( 24 === a [ 3 ] || 32 === a [ 3 ] ) && 102 === a [ 4 ] && 116 === a [ 5 ] && 121 === a [ 6 ] && 112 === a [ 7 ] || 51 === a [ 0 ] && 103 === a [ 1 ] && 112 === a [ 2 ] && 53 === a [ 3 ] || 0 === a [ 0 ] && 0 === a [ 1 ] && 0 === a [ 2 ] && 28 === a [ 3 ] && 102 === a [ 4 ] && 116 === a [ 5 ] && 121 === a [ 6 ] && 112 === a [ 7 ] && 109 === a [ 8 ] && 112 === a [ 9 ] && 52 === a [ 10 ] && 50 === a [ 11 ] && 109 === a [ 16 ] && 112 === a [ 17 ] && 52 === a [ 18 ] && 49 === a [ 19 ] && 109 === a [ 20 ] && 112 === a [ 21 ] && 52 === a [ 22 ] && 50 === a [ 23 ] && 105 === a [ 24 ] && 115 === a [ 25 ] && 111 === a [ 26 ] && 109 === a [ 27 ] ? { ext : "mp4" , mime : "video/mp4" } : 0 === a [ 0 ] && 0 === a [ 1 ] && 0 === a [ 2 ] && 28 === a [ 3 ] && 102 === a [ 4 ] && 116 === a [ 5 ] && 121 === a [ 6 ] && 112 === a [ 7 ] && 77 === a [ 8 ] && 52 === a [ 9 ] && 86 === a [ 10 ] ? { ext : "m4v" , mime : "video/x-m4v" } : 77 === a [ 0 ] && 84 === a [ 1 ] && 104 === a [ 2 ] && 100 === a [ 3 ] ? { ext : "mid" , m
! e ) { for ( p = 0 ; p < i [ n ] . length ; p ++ ) l += " " + IP . _ipv4 _to _str ( i [ n ] [ p ] ) + "\n" ; l += "\n" } for ( o in j ) if ( l += o + "/" + d + "\n" , ! e ) { for ( p = 0 ; p < j [ o ] . length ; p ++ ) l += " " + IP . _ipv6 _to _str ( j [ o ] [ p ] , ! 0 ) + "\n" ; l += "\n" } return l } , _LARGE _RANGE _ERROR : 'The specified range contains more than 65,536 addresses. Running this query could crash your browser. If you want to run it, select the "Allow large queries" option. You are advised to turn off "Auto Bake" whilst editing large ranges.' , _ipv4 _cidr _range : function ( a , b , c , d ) { var e = "" , f = IP . _str _to _ipv4 ( a [ 1 ] ) , g = parseInt ( a [ 2 ] , 10 ) ; if ( g < 0 || g > 31 ) return "IPv4 CIDR must be less than 32" ; var h = ~ ( 4294967295 >>> g ) , i = f & h , j = i | ~ h ; return b && ( e += "Network: " + IP . _ipv4 _to _str ( f ) + "\n" , e += "CIDR: " + g + "\n" , e += "Mask: " + IP . _ipv4 _to _str ( h ) + "\n" , e += "Range: " + IP . _ipv4 _to _str ( i ) + " - " + IP . _ipv4 _to _str ( j ) + "\n" , e += "Total addresses in range: " + ( ( j - i >>> 0 ) + 1 ) + "\n\n" ) , c && ( e += g >= 16 || d ? IP . _generate _ipv4 _range ( i , j ) . join ( "\n" ) : IP . _LARGE _RANGE _ERROR ) , e } , _ipv6 _cidr _range : function ( a , b ) { var c = "" , d = IP . _str _to _ipv6 ( a [ 1 ] ) , e = parseInt ( a [ a . length - 1 ] , 10 ) ; if ( e < 0 || e > 127 ) return "IPv6 CIDR must be less than 128" ; for ( var f = IP . _gen _ipv6 _mask ( e ) , g = new Array ( 8 ) , h = new Array ( 8 ) , i = "" , j = new Array ( 128 ) , k = 0 ; k < 8 ; k ++ ) if ( g [ k ] = d [ k ] & f [ k ] , h [ k ] = g [ k ] | 65535 & ~ f [ k ] , i = ( h [ k ] - g [ k ] ) . toString ( 2 ) , "0" != i ) for ( var l = 0 ; l < i . length ; l ++ ) j [ 16 * k + 16 - ( i . length - l ) ] = i [ l ] ; return b && ( c += "Network: " + IP . _ipv6 _to _str ( d ) + "\n" , c += "Shorthand: " + IP . _ipv6 _to _str ( d , ! 0 ) + "\n" , c += "CIDR: " + e + "\n" , c += "Mask: " + IP . _ipv6 _to _str ( f ) + "\n" , c += "Range: " + IP . _ipv6 _to _str ( g ) + " - " + IP . _ipv6 _to _str ( h ) + "\n" , c += "Total addresses in range: " + ( parseInt ( j . join ( "" ) , 2 ) + 1 ) + "\n\n" ) , c } , _gen _ipv6 _mask : function ( a ) { for ( var b , c = new Array ( 8 ) , d = 0 ; d < 8 ; d ++ ) a > 16 * ( d + 1 ) ? c [ d ] = 65535 : ( b = a - 16 * d , b < 0 && ( b = 0 ) , c [ d ] = ~ ( 65535 >>> b | 4294901760 ) ) ; return c } , _ipv4 _hyphenated _range : function ( a , b , c , d ) { for ( var e = "" , f = IP . _str _to _ipv4 ( a [ 1 ] ) , g = IP . _str _to _ipv4 ( a [ 2 ] ) , h = f ^ g , i = 32 , j = 0 ; 0 !== h ; ) h >>= 1 , i -- , j = j << 1 | 1 ; j = ~ j >>> 0 ; var k = f & j , l = k & j , m = l | ~ j ; return b && ( e += "Minimum subnet required to hold this range:\n" , e += "\tNetwork: " + IP . _ipv4 _to _str ( k ) + "\n" , e += "\tCIDR: " + i + "\n" , e += "\tMask: " + IP . _ipv4 _to _str ( j ) + "\n" , e += "\tSubnet range: " + IP . _ipv4 _to _str ( l ) + " - " + IP . _ipv4 _to _str ( m ) + "\n" , e += "\tTotal addresses in subnet: " + ( ( m - l >>> 0 ) + 1 ) + "\n\n" , e += "Range: " + IP . _ipv4 _to _str ( f ) + " - " + IP . _ipv4 _to _str ( g ) + "\n" , e += "Total addresses in range: " + ( ( g - f >>> 0 ) + 1 ) + "\n\n" ) , c && ( e += g - f >>> 0 <= 65536 || d ? IP . _generate _ipv4 _range ( f , g ) . join ( "\n" ) : IP . _LARGE _RANGE _ERROR ) , e } , _ipv6 _hyphenated _range : function ( a , b ) { for ( var c = "" , d = IP . _str _to _ipv6 ( a [ 1 ] ) , e = IP . _str _to _ipv6 ( a [ 14 ] ) , f = "" , g = new Array ( 128 ) , h = 0 ; h < 128 ; h ++ ) g [ h ] = "0" ; for ( h = 0 ; h < 8 ; h ++ ) if ( f = ( e [ h ] - d [ h ] ) . toString ( 2 ) , "0" != f ) for ( var i = 0 ; i < f . length ; i ++ ) g [ 16 * h + 16 - ( f . length - i ) ] = f [ i ] ; return b && ( c += "Range: " + IP . _ipv6 _to _str ( d ) + " - " + IP . _ipv6 _to _str ( e ) + "\n" , c += "Shorthand range: " + IP . _ipv6 _to _str ( d , ! 0 ) + " - " + IP . _ipv6 _to _str ( e , ! 0 ) + "\n" , c += "Total addresses in range: " + ( parseInt ( g . join ( "" ) , 2 ) + 1 ) + "\n\n" ) , c } , _str _to _ipv4 : function ( a ) { function b ( a ) { if ( 4 != a . length ) throw "More than 4 blocks." ; for ( var b = [ ] , c = 0 ; c < 4 ; c ++ ) if ( b [ c ] = parseInt ( a [ c ] , 10 ) , b [ c ] < 0 || b [ c ] > 255 ) throw "Block out of range." ; return b } var c = a . split ( "." ) , d = b ( c ) , e = 0 ; return e += d [ 0 ] << 24 , e += d [ 1 ] << 16 , e += d [ 2 ] << 8 , e += d [ 3 ] } , _ipv4 _to _str : function ( a ) { var b = a >> 24 & 255 , c = a >> 16 & 255 , d = a >> 8 & 255 , e = 255 & a ; return b + "." + c + "." + d + "." + e } , _str _to _ipv6 : function ( a ) { function b ( a ) { if ( a . length < 3 || a . length > 8 ) throw "Badly formatted IPv6 address." ; for ( var b = [ ] , c = 0 ; c < a . length ; c ++ ) if ( b [ c ] = parseInt ( a [ c ] , 16 ) , b [ c ] < 0 || b [ c ] > 65535 ) throw "Block out of range." ; return b } for ( var c = a . split ( ":" ) , d = b ( c ) , e = 0 , f = new Array ( 8 ) , g = 0 ; g < 8 ; g ++ ) isNaN ( d [ e ] ) ? ( f [ g ] = 0 , g == 8 - d . slice ( e ) . length && e ++ ) : ( f [ g ] = d [ e ] , e ++ ) ; return f } , _ipv6 _to _str : function ( a , b ) { var c = "" , d = 0 ; if ( b ) { var e = - 1 , f = - 1 , g = 0 , h = - 1 ; for ( d = 0 ; d < 8 ; d ++ ) 0 === a [ d ] && h === d - 1 ? h = d : 0 === a [ d ] && ( g = d , h = d ) , h >= 0 && h - g > f - e && ( e = g , f = h ) ; for ( d = 0 ; d < 8 ; d ++ ) d != e ? c += Utils . hex ( a [ d ] , 1 ) + ":" : ( c += ":" , d = f , 7 === f && ( c += ":" ) ) ; ":" === c [ 0 ] && ( c = ":" + c ) } else for ( d = 0 ; d < 8 ; d ++ ) c += Utils . hex ( a [ d ] , 4 ) + ":" ; return c . slice ( 0 , c . length - 1 ) } , _generate _ipv4 _range : function ( a , b ) { var c = [ ] ; if ( b >= a ) for ( ; a <= b ; a ++ ) c . push ( IP . _ipv4 _to _str ( a ) ) ; else c [ 0 ] = "Second IP address smaller than first." ; return c } } , JS = { PARSE _LOC : ! 1 , PARSE _RA
"06032b06010505070c02" : "CMC Data" , "06032b060105050702" : "policyQualifierIds" , "06032b06010505070202" : "unotice" , "06032b060105050703" : "keyPurpose" , "06032b06010505070301" : "serverAuth" , "06032b06010505070302" : "clientAuth" , "06032b06010505070303" : "codeSigning" , "06032b06010505070304" : "emailProtection" , "06032b06010505070305" : "ipsecEndSystem" , "06032b06010505070306" : "ipsecTunnel" , "06032b06010505070307" : "ipsecUser" , "06032b06010505070308" : "timeStamping" , "06032b060105050704" : "cmpInformationTypes" , "06032b06010505070401" : "caProtEncCert" , "06032b06010505070402" : "signKeyPairTypes" , "06032b06010505070403" : "encKeyPairTypes" , "06032b06010505070404" : "preferredSymmAlg" , "06032b06010505070405" : "caKeyUpdateInfo" , "06032b06010505070406" : "currentCRL" , "06032b06010505073001" : "ocsp" , "06032b06010505073002" : "caIssuers" , "06032b06010505080101" : "HMAC-MD5" , "06032b06010505080102" : "HMAC-SHA" , "060360864801650201010a" : "mosaicKeyManagementAlgorithm" , "060360864801650201010b" : "sdnsKMandSigAlgorithm" , "060360864801650201010c" : "mosaicKMandSigAlgorithm" , "060360864801650201010d" : "SuiteASignatureAlgorithm" , "060360864801650201010e" : "SuiteAConfidentialityAlgorithm" , "060360864801650201010f" : "SuiteAIntegrityAlgorithm" , "06036086480186f84201" : "cert-extension" , "06036086480186f842010a" : "EntityLogo" , "06036086480186f842010b" : "UserPicture" , "06036086480186f8420109" : "HomePage-url" , "06036086480186f84202" : "data-type" , "06036086480186f8420201" : "GIF" , "06036086480186f8420202" : "JPEG" , "06036086480186f8420203" : "URL" , "06036086480186f8420204" : "HTML" , "06036086480186f8420205" : "netscape-cert-sequence" , "06036086480186f8420206" : "netscape-cert-url" , "06036086480186f84203" : "directory" , "06036086480186f8420401" : "serverGatedCrypto" , "06036086480186f845010603" : "Unknown Verisign extension" , "06036086480186f845010606" : "Unknown Verisign extension" , "06036086480186f84501070101" : "Verisign certificatePolicy" , "06036086480186f8450107010101" : "Unknown Verisign policy qualifier" , "06036086480186f8450107010102" : "Unknown Verisign policy qualifier" , "0603678105" : "TCPA" , "060367810501" : "tcpa_specVersion" , "060367810502" : "tcpa_attribute" , "06036781050201" : "tcpa_at_tpmManufacturer" , "0603678105020a" : "tcpa_at_securityQualities" , "0603678105020b" : "tcpa_at_tpmProtectionProfile" , "0603678105020c" : "tcpa_at_tpmSecurityTarget" , "0603678105020d" : "tcpa_at_foundationProtectionProfile" , "0603678105020e" : "tcpa_at_foundationSecurityTarget" , "0603678105020f" : "tcpa_at_tpmIdLabel" , "06036781050202" : "tcpa_at_tpmModel" , "06036781050203" : "tcpa_at_tpmVersion" , "06036781050204" : "tcpa_at_platformManufacturer" , "06036781050205" : "tcpa_at_platformModel" , "06036781050206" : "tcpa_at_platformVersion" , "06036781050207" : "tcpa_at_componentManufacturer" , "06036781050208" : "tcpa_at_componentModel" , "06036781050209" : "tcpa_at_componentVersion" , "060367810503" : "tcpa_protocol" , "06036781050301" : "tcpa_prtt_tpmIdProtocol" , "0603672a00" : "contentType" , "0603672a0000" : "PANData" , "0603672a0001" : "PANToken" , "0603672a0002" : "PANOnly" , "0603672a01" : "msgExt" , "0603672a0a" : "national" , "0603672a0a8140" : "Japan" , "0603672a02" : "field" , "0603672a0200" : "fullName" , "0603672a0201" : "givenName" , "0603672a020a" : "amount" , "0603672a0202" : "familyName" , "0603672a0203" : "birthFamilyName" , "0603672a0204" : "placeName" , "0603672a0205" : "identificationNumber" , "0603672a0206" : "month" , "0603672a0207" : "date" , "0603672a02070b" : "accountNumber" , "0603672a02070c" : "passPhrase" , "0603672a0208" : "address" , "0603672a0209" : "telephone" , "0603672a03" : "attribute" , "0603672a0300" : "cert" , "0603672a030000" : "rootKeyThumb" , "0603672a030001" : "additionalPolicy" , "0603672a04" : "algorithm" , "0603672a05" : "policy" , "0603672a0500" : "root" , "0603672a06" : "module" , "0603672a07" : "certExt" , "0603672a0700" : "hashedRootKey" , "0603672a0701" : "certificateType" , "0603672a0702" : "merchantData" , "0603672a0703" : "cardCertRequired" , "0603672a0704" : "tunneling" , "0603672a0705" : "setExtensions" , "0603672a0706" : "setQualifier" , "0603672a08" : "brand" , "0603672a0801" : "IATA-ATA" , "0603672a081e" : "Diners" , "0603672a0822" : "AmericanExpress" , "0603672a0804" : "VISA" , "0603672a0805" : "MasterCard" , "0603672a08ae7b" : "Novus" , "0603672a09" : "vendor" , "0603672a0900" : "GlobeSet" , "0603672a0901" : "IBM" , "0603672a090a" : "Griffin" , "0603672a090b" : " C
} , { name : "Date / Time" , ops : [ "Parse DateTime" , "Translate DateTime Format" , "From UNIX Timestamp" , "To UNIX Timestamp" , "Extract dates" ] } , { name : "Extractors" , ops : [ "Strings" , "Extract IP addresses" , "Extract email addresses" , "Extract MAC addresses" , "Extract URLs" , "Extract domains" , "Extract file paths" , "Extract dates" , "Regular expression" ] } , { name : "Compression" , ops : [ "Raw Deflate" , "Raw Inflate" , "Zlib Deflate" , "Zlib Inflate" , "Gzip" , "Gunzip" , "Zip" , "Unzip" , "Bzip2 Decompress" ] } , { name : "Hashing" , ops : [ "Analyse hash" , "Generate all hashes" , "MD5" , "SHA1" , "SHA224" , "SHA256" , "SHA384" , "SHA512" , "SHA3" , "RIPEMD-160" , "HMAC" , "Fletcher-16 Checksum" , "Adler-32 Checksum" , "CRC-32 Checksum" , "TCP/IP Checksum" ] } , { name : "Code tidy" , ops : [ "Syntax highlighter" , "Generic Code Beautify" , "JavaScript Parser" , "JavaScript Beautify" , "JavaScript Minify" , "JSON Beautify" , "JSON Minify" , "XML Beautify" , "XML Minify" , "SQL Beautify" , "SQL Minify" , "CSS Beautify" , "CSS Minify" , "Strip HTML tags" , "Diff" ] } , { name : "Other" , ops : [ "Entropy" , "Frequency distribution" , "Detect File Type" , "Scan for Embedded Files" , "Generate UUID" , "Numberwang" ] } , { name : "Flow control" , ops : [ "Fork" , "Merge" , "Jump" , "Conditional Jump" , "Return" ] } ] , OperationConfig = { Fork : { description : "Split the input data up based on the specified delimiter and run all subsequent operations on each branch separately.<br><br>For example, to decode multiple Base64 strings, enter them all on separate lines then add the 'Fork' and 'From Base64' operations to the recipe. Each string will be decoded separately." , run : FlowControl . run _fork , input _type : "string" , output _type : "string" , flow _control : ! 0 , args : [ { name : "Split delimiter" , type : "binary_short_string" , value : FlowControl . FORK _DELIM } , { name : "Merge delimiter" , type : "binary_short_string" , value : FlowControl . MERGE _DELIM } ] } , Merge : { description : "Consolidate all branches back into a single trunk. The opposite of Fork." , run : FlowControl . run _merge , input _type : "string" , output _type : "string" , flow _control : ! 0 , args : [ ] } , Jump : { description : "Jump forwards or backwards over the specified number of operations." , run : FlowControl . run _jump , input _type : "string" , output _type : "string" , flow _control : ! 0 , args : [ { name : "Number of operations to jump over" , type : "number" , value : FlowControl . JUMP _NUM } , { name : "Maximum jumps (if jumping backwards)" , type : "number" , value : FlowControl . MAX _JUMPS } ] } , "Conditional Jump" : { description : "Conditionally jump forwards or backwards over the specified number of operations based on whether the data matches the specified regular expression." , run : FlowControl . run _cond _jump , input _type : "string" , output _type : "string" , flow _control : ! 0 , args : [ { name : "Match (regex)" , type : "string" , value : "" } , { name : "Number of operations to jump over if match found" , type : "number" , value : FlowControl . JUMP _NUM } , { name : "Maximum jumps (if jumping backwards)" , type : "number" , value : FlowControl . MAX _JUMPS } ] } , Return : { description : "End execution of operations at this point in the recipe." , run : FlowControl . run _return , input _type : "string" , output _type : "string" , flow _control : ! 0 , args : [ ] } , "From Base64" : { description : "Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation decodes data from an ASCII Base64 string back into its raw format.<br><br>e.g. <code>aGVsbG8=</code> becomes <code>hello</code>" , run : Base64 . run _from , highlight : Base64 . highlight _from , highlight _reverse : Base64 . highlight _to , input _type : "string" , output _type : "byte_array" , args : [ { name : "Alphabet" , type : "editable_option" , value : Base64 . ALPHABET _OPTIONS } , { name : "Remove non‑alphabet chars" , type : "boolean" , value : Base64 . REMOVE _NON _ALPH _CHARS } ] } , "To Base64" : { description : "Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes data in an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>" , run : Base64 . run _to , highlight : Base64 . highlight _to , highlight _reverse : Base64 . highlight _from , input _type : "byte_array" , output _type : "string" , args : [ { name : "Alphabet" , type : " editabl
} ] } , ROT47 : { description : "A slightly more complex variation of a caesar cipher, which includes ASCII characters from 33 '!' to 126 '~'. Default rotation: 47." , run : Rotate . run _rot47 , highlight : ! 0 , highlight _reverse : ! 0 , input _type : "byte_array" , output _type : "byte_array" , args : [ { name : "Amount" , type : "number" , value : Rotate . ROT47 _AMOUNT } ] } , "Strip HTTP headers" : { description : "Removes HTTP headers from a request or response by looking for the first instance of a double newline." , run : HTTP . run _strip _headers , input _type : "string" , output _type : "string" , args : [ ] } , "Parse User Agent" : { description : "Attempts to identify and categorise information contained in a user-agent string." , run : HTTP . run _parse _user _agent , input _type : "string" , output _type : "string" , args : [ ] } , "Format MAC addresses" : { description : "Displays given MAC addresses in multiple different formats.<br><br>Expects addresses in a list separated by newlines, spaces or commas.<br><br>WARNING: There are no validity checks." , run : MAC . run _format , input _type : "string" , output _type : "string" , args : [ { name : "Output case" , type : "option" , value : MAC . OUTPUT _CASE } , { name : "No delimiter" , type : "boolean" , value : MAC . NO _DELIM } , { name : "Dash delimiter" , type : "boolean" , value : MAC . DASH _DELIM } , { name : "Colon delimiter" , type : "boolean" , value : MAC . COLON _DELIM } , { name : "Cisco style" , type : "boolean" , value : MAC . CISCO _STYLE } ] } , "Offset checker" : { description : "Compares multiple inputs (separated by the specified delimiter) and highlights matching characters which appear at the same position in all samples." , run : StrUtils . run _offset _checker , input _type : "string" , output _type : "html" , args : [ { name : "Sample delimiter" , type : "binary_string" , value : StrUtils . OFF _CHK _SAMPLE _DELIMITER } ] } , "Remove whitespace" : { description : "Optionally removes all spaces, carriage returns, line feeds, tabs and form feeds from the input data.<br><br>This operation also supports the removal of full stops which are sometimes used to represent non-printable bytes in ASCII output." , run : Tidy . run _remove _whitespace , input _type : "string" , output _type : "string" , args : [ { name : "Spaces" , type : "boolean" , value : Tidy . REMOVE _SPACES } , { name : "Carriage returns (\\r)" , type : "boolean" , value : Tidy . REMOVE _CARIAGE _RETURNS } , { name : "Line feeds (\\n)" , type : "boolean" , value : Tidy . REMOVE _LINE _FEEDS } , { name : "Tabs" , type : "boolean" , value : Tidy . REMOVE _TABS } , { name : "Form feeds (\\f)" , type : "boolean" , value : Tidy . REMOVE _FORM _FEEDS } , { name : "Full stops" , type : "boolean" , value : Tidy . REMOVE _FULL _STOPS } ] } , "Remove null bytes" : { description : "Removes all null bytes (<code>0x00</code>) from the input." , run : Tidy . run _remove _nulls , input _type : "byte_array" , output _type : "byte_array" , args : [ ] } , "Drop bytes" : { description : "Cuts the specified number of bytes out of the data." , run : Tidy . run _drop _bytes , input _type : "byte_array" , output _type : "byte_array" , args : [ { name : "Start" , type : "number" , value : Tidy . DROP _START } , { name : "Length" , type : "number" , value : Tidy . DROP _LENGTH } , { name : "Apply to each line" , type : "boolean" , value : Tidy . APPLY _TO _EACH _LINE } ] } , "Take bytes" : { description : "Takes a slice of the specified number of bytes from the data." , run : Tidy . run _take _bytes , input _type : "byte_array" , output _type : "byte_array" , args : [ { name : "Start" , type : "number" , value : Tidy . TAKE _START } , { name : "Length" , type : "number" , value : Tidy . TAKE _LENGTH } , { name : "Apply to each line" , type : "boolean" , value : Tidy . APPLY _TO _EACH _LINE } ] } , "Pad lines" : { description : "Add the specified number of the specified character to the beginning or end of each line" , run : Tidy . run _pad , input _type : "string" , output _type : "string" , args : [ { name : "Position" , type : "option" , value : Tidy . PAD _POSITION } , { name : "Length" , type : "number" , value : Tidy . PAD _LENGTH } , { name : "Character" , type : "binary_short_string" , value : Tidy . PAD _CHAR } ] } , Reverse : { description : "Reverses the input string." , run : SeqUtils . run _reverse , input _type : "byte_array" , output _type : "byte_array" , args : [ { name : "By" , type : "option" , value : SeqUtils . REVERSE _BY } ] } , Sort : { description : "Alphabetically sorts strings separated by the specified delimiter.<br><br>The IP address option supports IPv4 only." , run : SeqUtils . run _sort , input _type : "string" , output _type : "string" , args : [ { name : "Delimiter" , type : "option" , value : SeqUtils . DELIMITER _OPTIONS } , { name : " R
a . clientWidth < 470 ? b . childNodes [ 1 ] . nodeValue = " Step" : b . childNodes [ 1 ] . nodeValue = " Step through" , a . clientWidth < 400 ? ( d . style . display = "none" , e . style . display = "none" , f . style . display = "none" , g . style . display = "none" , h . style . display = "none" ) : ( d . style . display = "inline" , e . style . display = "inline" , f . style . display = "inline" , g . style . display = "inline" , h . style . display = "inline" ) , a . clientWidth < 330 ? c . childNodes [ 1 ] . nodeValue = " Clear breaks" : c . childNodes [ 1 ] . nodeValue = " Clear breakpoints" } , ControlsWaiter . prototype . set _auto _bake = function ( a ) { var b = document . getElementById ( "auto-bake" ) ; b . checked != a && b . click ( ) } , ControlsWaiter . prototype . bake _click = function ( ) { this . app . bake ( ) , $ ( "#output-text" ) . selectRange ( 0 ) } , ControlsWaiter . prototype . step _click = function ( ) { this . app . bake ( ! 0 ) , $ ( "#output-text" ) . selectRange ( 0 ) } , ControlsWaiter . prototype . auto _bake _change = function ( ) { var a = document . getElementById ( "auto-bake-label" ) , b = document . getElementById ( "auto-bake" ) ; this . app . auto _bake _ = b . checked , b . checked ? ( a . classList . remove ( "btn-default" ) , a . classList . add ( "btn-success" ) ) : ( a . classList . remove ( "btn-success" ) , a . classList . add ( "btn-default" ) ) } , ControlsWaiter . prototype . clear _recipe _click = function ( ) { this . manager . recipe . clear _recipe ( ) } , ControlsWaiter . prototype . clear _breaks _click = function ( ) { for ( var a = document . querySelectorAll ( "#rec_list li.operation .breakpoint" ) , b = 0 ; b < a . length ; b ++ ) a [ b ] . setAttribute ( "break" , "false" ) , a [ b ] . classList . remove ( "breakpoint-selected" ) } , ControlsWaiter . prototype . initialise _save _link = function ( a ) { a = a || this . app . get _recipe _config ( ) ; var b = ( JSON . stringify ( a ) , Utils . to _base64 ( this . app . get _input ( ) ) , document . getElementById ( "save-link-recipe-checkbox" ) . checked ) , c = document . getElementById ( "save-link-input-checkbox" ) . checked , d = document . getElementById ( "save-link" ) , e = this . generate _state _url ( b , c , a ) ; d . innerHTML = Utils . truncate ( e , 120 ) , d . setAttribute ( "href" , e ) } , ControlsWaiter . prototype . generate _state _url = function ( a , b , c ) { c = c || this . app . get _recipe _config ( ) ; var d = window . location . protocol + "//" + window . location . host + window . location . pathname , e = JSON . stringify ( c ) , f = Utils . to _base64 ( this . app . get _input ( ) , "A-Za-z0-9+/" ) ; return a = a && c . length > 0 , b = b && f . length > 0 && f . length < 8e3 , a && ( d += "?recipe=" + encodeURIComponent ( e ) ) , a && b ? d += "&input=" + encodeURIComponent ( f ) : b && ( d += "?input=" + encodeURIComponent ( f ) ) , d } , ControlsWaiter . prototype . save _text _change = function ( ) { try { var a = JSON . parse ( document . getElementById ( "save-text" ) . value ) ; this . initialise _save _link ( a ) } catch ( a ) { } } , ControlsWaiter . prototype . save _click = function ( ) { var a = this . app . get _recipe _config ( ) , b = JSON . stringify ( a ) . replace ( /},{/g , "},\n{" ) ; document . getElementById ( "save-text" ) . value = b , this . initialise _save _link ( a ) , $ ( "#save-modal" ) . modal ( ) } , ControlsWaiter . prototype . slr _check _change = function ( ) { this . initialise _save _link ( ) } , ControlsWaiter . prototype . sli _check _change = function ( ) { this . initialise _save _link ( ) } , ControlsWaiter . prototype . load _click = function ( ) { this . populate _load _recipes _list ( ) , $ ( "#load-modal" ) . modal ( ) } , ControlsWaiter . prototype . save _button _click = function ( ) { var a = document . getElementById ( "save-name" ) . value , b = document . getElementById ( "save-text" ) . value ; if ( ! a ) return void this . app . alert ( "Please enter a recipe name" , "danger" , 2e3 ) ; var c = localStorage . saved _recipes ? JSON . parse ( localStorage . saved _recipes ) : [ ] , d = localStorage . recipe _id || 0 ; c . push ( { id : ++ d , name : a , recipe : b } ) , localStorage . saved _recipes = JSON . stringify ( c ) , localStorage . recipe _id = d , this . app . alert ( 'Recipe saved as "' + a + '".' , "success" , 2e3 ) } , ControlsWaiter . prototype . populate _load _recipes _list = function ( ) { for ( var a = document . getElementById ( "load-name" ) , b = a . options . length ; b -- ; ) a . remove ( b ) ; var c = localStorage . saved _recipes ? JSON . parse ( localStorage . saved _recipes ) : [ ] ; for ( b = 0 ; b < c . length ; b ++ ) { var d = document . createElement ( "option" ) ; d . value = c [ b ] . id , d . innerHTML = c [ b ] . name , a . appendChild ( d ) } document . getElementById ( "load-text" ) . value = c . length ? c [ 0 ] . recipe : "" } , ControlsWaiter . prototype . load _delete _click = function ( ) { var a = document . getElementById ( "load-name" ) . value , b = localStorage . saved _recipes ? JSON . parse ( localStorage . saved _recipes ) : [ ] ; b = b . filter ( function ( b ) { return b . id != a } ) , localStorage . saved _recipes = JSON . stringify ( b ) , this . populate _load _recipes _list (
2016-12-14 14:12:04 +01:00
this . recipe . initialise _operation _drag _n _drop ( ) , this . controls . auto _bake _change ( ) , this . seasonal . load ( ) } , Manager . prototype . initialise _event _listeners = function ( ) { window . addEventListener ( "resize" , this . window . window _resize . bind ( this . window ) ) , window . addEventListener ( "blur" , this . window . window _blur . bind ( this . window ) ) , window . addEventListener ( "focus" , this . window . window _focus . bind ( this . window ) ) , window . addEventListener ( "statechange" , this . app . state _change . bind ( this . app ) ) , window . addEventListener ( "popstate" , this . app . pop _state . bind ( this . app ) ) , document . getElementById ( "bake" ) . addEventListener ( "click" , this . controls . bake _click . bind ( this . controls ) ) , document . getElementById ( "auto-bake" ) . addEventListener ( "change" , this . controls . auto _bake _change . bind ( this . controls ) ) , document . getElementById ( "step" ) . addEventListener ( "click" , this . controls . step _click . bind ( this . controls ) ) , document . getElementById ( "clr-recipe" ) . addEventListener ( "click" , this . controls . clear _recipe _click . bind ( this . controls ) ) , document . getElementById ( "clr-breaks" ) . addEventListener ( "click" , this . controls . clear _breaks _click . bind ( this . controls ) ) , document . getElementById ( "save" ) . addEventListener ( "click" , this . controls . save _click . bind ( this . controls ) ) , document . getElementById ( "save-button" ) . addEventListener ( "click" , this . controls . save _button _click . bind ( this . controls ) ) , document . getElementById ( "save-link-recipe-checkbox" ) . addEventListener ( "change" , this . controls . slr _check _change . bind ( this . controls ) ) , document . getElementById ( "save-link-input-checkbox" ) . addEventListener ( "change" , this . controls . sli _check _change . bind ( this . controls ) ) , document . getElementById ( "load" ) . addEventListener ( "click" , this . controls . load _click . bind ( this . controls ) ) , document . getElementById ( "load-delete-button" ) . addEventListener ( "click" , this . controls . load _delete _click . bind ( this . controls ) ) , document . getElementById ( "load-name" ) . addEventListener ( "change" , this . controls . load _name _change . bind ( this . controls ) ) , document . getElementById ( "load-button" ) . addEventListener ( "click" , this . controls . load _button _click . bind ( this . controls ) ) , this . add _multi _event _listener ( "#save-text" , "keyup paste" , this . controls . save _text _change , this . controls ) , this . add _multi _event _listener ( "#search" , "keyup paste search" , this . ops . search _operations , this . ops ) , this . add _dynamic _listener ( ".op_list li.operation" , "dblclick" , this . ops . operation _dblclick , this . ops ) , document . getElementById ( "edit-favourites" ) . addEventListener ( "click" , this . ops . edit _favourites _click . bind ( this . ops ) ) , document . getElementById ( "save-favourites" ) . addEventListener ( "click" , this . ops . save _favourites _click . bind ( this . ops ) ) , document . getElementById ( "reset-favourites" ) . addEventListener ( "click" , this . ops . reset _favourites _click . bind ( this . ops ) ) , this . add _dynamic _listener ( ".op_list .op-icon" , "mouseover" , this . ops . op _icon _mouseover , this . ops ) , this . add _dynamic _listener ( ".op_list .op-icon" , "mouseleave" , this . ops . op _icon _mouseleave , this . ops ) , this . add _dynamic _listener ( ".op_list" , "oplistcreate" , this . ops . op _list _create , this . ops ) , this . add _dynamic _listener ( "li.operation" , "operationadd" , this . recipe . op _add . bind ( this . recipe ) ) , this . add _dynamic _listener ( ".arg" , "keyup" , this . recipe . ing _change , this . recipe ) , this . add _dynamic _listener ( ".arg" , "change" , this . recipe . ing _change , this . recipe ) , this . add _dynamic _listener ( ".disable-icon" , "click" , this . recipe . disable _click , this . recipe ) , this . add _dynamic _listener ( ".breakpoint" , "click" , this . recipe . breakpoint _click , this . recipe ) , this . add _dynamic _listener ( "#rec_list li.operation" , "dblclick" , this . recipe . operation _dblclick , this . recipe ) , this . add _dynamic _listener ( "#rec_list li.operation > div" , "dblclick" , this . recipe . operation _child _dblclick , this . recipe ) , this . add _dynamic _listener ( "#rec_list .input-group .dropdown-menu a" , "click" , this . recipe . dropdown _toggle _click , this . recipe ) , this . add _dynamic _listener ( "#rec_list" , "operationremove" , this . recipe . op _remove . bind ( this . recipe ) ) , this . add _multi _event _listener ( "#input-text" , "keyup paste" , this . input . input _change , this . input ) , document . getElementById ( "reset-layout" ) . addEventListener ( "click" , this . app . reset _layout . bind ( this . app ) ) , document . getElementById ( "clr-io" ) . addEventListener ( "click" , this . input . clea
window . app . setup ( ) } ; window . console = console || { log : function ( ) { } , error : function ( ) { } } , window . compile _time = moment . tz ( "Wed Dec 14 2016 13:10:20" , "ddd MMM D YYYY HH:mm:ss" , "UTC" ) . valueOf ( ) , window . compile _message = "Merry Christmas! Have a look in the options panel for some festive flavour." , document . addEventListener ( "DOMContentLoaded" , main , ! 1 ) ;