epuber 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/README.md +3 -11
- data/bin/epuber +2 -3
- data/epuber.gemspec +3 -6
- data/lib/epuber/book/contributor.rb +1 -1
- data/lib/epuber/book/file_request.rb +1 -1
- data/lib/epuber/book/target.rb +1 -2
- data/lib/epuber/book/toc_item.rb +1 -2
- data/lib/epuber/book.rb +1 -2
- data/lib/epuber/checker/text_checker.rb +1 -1
- data/lib/epuber/checker.rb +1 -2
- data/lib/epuber/checker_transformer_base.rb +1 -0
- data/lib/epuber/command/build.rb +1 -2
- data/lib/epuber/command/compile.rb +1 -1
- data/lib/epuber/command/init.rb +1 -2
- data/lib/epuber/command/server.rb +1 -2
- data/lib/epuber/command.rb +1 -1
- data/lib/epuber/compiler/compilation_context.rb +1 -1
- data/lib/epuber/compiler/file_database.rb +3 -5
- data/lib/epuber/compiler/file_finders/abstract.rb +1 -1
- data/lib/epuber/compiler/file_finders/imaginary.rb +1 -2
- data/lib/epuber/compiler/file_finders/normal.rb +1 -1
- data/lib/epuber/compiler/file_resolver.rb +1 -1
- data/lib/epuber/compiler/file_stat.rb +0 -1
- data/lib/epuber/compiler/file_types/abstract_file.rb +1 -2
- data/lib/epuber/compiler/file_types/bade_file.rb +1 -2
- data/lib/epuber/compiler/file_types/coffee_script_file.rb +1 -2
- data/lib/epuber/compiler/file_types/container_xml_file.rb +1 -2
- data/lib/epuber/compiler/file_types/generated_file.rb +1 -2
- data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +1 -7
- data/lib/epuber/compiler/file_types/image_file.rb +1 -2
- data/lib/epuber/compiler/file_types/mime_type_file.rb +1 -2
- data/lib/epuber/compiler/file_types/nav_file.rb +1 -2
- data/lib/epuber/compiler/file_types/opf_file.rb +1 -2
- data/lib/epuber/compiler/file_types/source_file.rb +1 -2
- data/lib/epuber/compiler/file_types/static_file.rb +1 -2
- data/lib/epuber/compiler/file_types/stylus_file.rb +1 -2
- data/lib/epuber/compiler/file_types/xhtml_file.rb +2 -4
- data/lib/epuber/compiler/generator.rb +1 -1
- data/lib/epuber/compiler/meta_inf_generator.rb +1 -1
- data/lib/epuber/compiler/nav_generator.rb +1 -1
- data/lib/epuber/compiler/opf_generator.rb +1 -1
- data/lib/epuber/compiler/problem.rb +1 -2
- data/lib/epuber/compiler/xhtml_processor.rb +3 -1
- data/lib/epuber/compiler.rb +7 -11
- data/lib/epuber/config.rb +1 -2
- data/lib/epuber/dsl/attribute.rb +1 -1
- data/lib/epuber/dsl/attribute_support.rb +2 -2
- data/lib/epuber/dsl/object.rb +1 -1
- data/lib/epuber/dsl/tree_object.rb +1 -1
- data/lib/epuber/helper.rb +1 -1
- data/lib/epuber/lockfile.rb +1 -1
- data/lib/epuber/plugin.rb +1 -1
- data/lib/epuber/ruby_extensions/match_data.rb +1 -0
- data/lib/epuber/ruby_extensions/thread.rb +1 -0
- data/lib/epuber/server/handlers.rb +1 -1
- data/lib/epuber/server.rb +2 -2
- data/lib/epuber/templates.rb +2 -1
- data/lib/epuber/third_party/bower/bower.json +3 -3
- data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +1 -1
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +2 -3
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/AUTHORS.txt +278 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/{MIT-LICENSE.txt → LICENSE.txt} +17 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/README.md +65 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +2 -16
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +2566 -1962
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +4 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/LICENSE.txt +36 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/{src → external}/sizzle/dist/sizzle.js +236 -160
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +25 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +20 -12
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +4 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +16 -12
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/location.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +73 -42
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +116 -57
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +49 -48
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +86 -67
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +63 -32
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +6 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +40 -24
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +114 -87
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +11 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +27 -16
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +10 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +20 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +77 -85
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +5 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/adjustCSS.js +65 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +20 -17
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +16 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +9 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/showHide.js +48 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +86 -61
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +8 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +6 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/{swap.js → var/swap.js} +3 -7
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +107 -55
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +93 -74
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/{accepts.js → var/acceptData.js} +4 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/{data_user.js → dataPriv.js} +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/{data_priv.js → dataUser.js} +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +49 -40
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +34 -25
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +27 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +9 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +14 -7
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +4 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +96 -115
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +11 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +11 -23
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/focusin.js +53 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/trigger.js +183 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +168 -325
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +2 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +5 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +6 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/buildFragment.js +102 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/getAll.js +21 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +7 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rtagName.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/wrapMap.js +27 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +206 -305
- data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +40 -29
- data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +23 -22
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +107 -68
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +5 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +28 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +13 -13
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/dir.js +20 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/siblings.js +15 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +32 -56
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +3 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/document.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/documentElement.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rcssNum.js +7 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +3 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +19 -19
- data/lib/epuber/third_party/bower/bower_components/spin.js/{LICENSE.txt → LICENSE.md} +2 -1
- data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -21
- data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +0 -1
- data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +23 -24
- data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +153 -113
- data/lib/epuber/third_party/bower/bower_components/spin.js/spin.min.js +2 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/CHANGELOG.md +424 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +23 -308
- data/lib/epuber/third_party/bower/bower_components/uri.js/SECURITY.md +12 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +2 -2
- data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +0 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +3 -6
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +8 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +21 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +312 -69
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +85 -77
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +28 -11
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +17 -18
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +63 -38
- data/lib/epuber/third_party/bower.rb +2 -0
- data/lib/epuber/transformer/text_transformer.rb +1 -2
- data/lib/epuber/transformer.rb +1 -2
- data/lib/epuber/user_interface.rb +1 -1
- data/lib/epuber/vendor/hash_binding.rb +1 -1
- data/lib/epuber/vendor/nokogiri_extensions.rb +24 -21
- data/lib/epuber/vendor/ruby_templater.rb +1 -2
- data/lib/epuber/vendor/size.rb +1 -0
- data/lib/epuber/vendor/version.rb +1 -1
- data/lib/epuber/version.rb +2 -1
- data/lib/epuber.rb +1 -1
- metadata +48 -30
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +0 -3
- data/lib/epuber/vendor/globals_context.rb +0 -26
data/lib/epuber/server.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'stringio'
|
4
4
|
|
@@ -368,7 +368,7 @@ module Epuber
|
|
368
368
|
result = _compile_book
|
369
369
|
completion.call(result) unless completion.nil?
|
370
370
|
end
|
371
|
-
|
371
|
+
|
372
372
|
if completion.nil?
|
373
373
|
@compilation_thread.join
|
374
374
|
end
|
data/lib/epuber/templates.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* Cookies.js - 1.2.
|
2
|
+
* Cookies.js - 1.2.3
|
3
3
|
* https://github.com/ScottHamper/Cookies
|
4
4
|
*
|
5
5
|
* This is free and unencumbered software released into the public domain.
|
@@ -153,8 +153,7 @@
|
|
153
153
|
|
154
154
|
return Cookies;
|
155
155
|
};
|
156
|
-
|
157
|
-
var cookiesExport = typeof global.document === 'object' ? factory(global) : factory;
|
156
|
+
var cookiesExport = (global && typeof global.document === 'object') ? factory(global) : factory;
|
158
157
|
|
159
158
|
// AMD support
|
160
159
|
if (typeof define === 'function' && define.amd) {
|
@@ -1,6 +1,6 @@
|
|
1
|
-
(function(
|
2
|
-
b.set=function(a,
|
3
|
-
b._getExpiresDate=function(a,
|
4
|
-
c.path:"");a+=c.domain?";domain="+c.domain:"";a+=c.expires?";expires="+c.expires.toUTCString():"";return a+=c.secure?";secure":""};b._getCacheFromString=function(a){var
|
5
|
-
typeof console.error&&console.error('Could not decode cookie with key "'+c+'"',
|
6
|
-
("object"===typeof module&&"object"===typeof module.exports&&(exports=module.exports=
|
1
|
+
(function(d,f){"use strict";var h=function(d){if("object"!==typeof d.document)throw Error("Cookies.js requires a `window` with a `document` object");var b=function(a,e,c){return 1===arguments.length?b.get(a):b.set(a,e,c)};b._document=d.document;b._cacheKeyPrefix="cookey.";b._maxExpireDate=new Date("Fri, 31 Dec 9999 23:59:59 UTC");b.defaults={path:"/",secure:!1};b.get=function(a){b._cachedDocumentCookie!==b._document.cookie&&b._renewCache();a=b._cache[b._cacheKeyPrefix+a];return a===f?f:decodeURIComponent(a)};
|
2
|
+
b.set=function(a,e,c){c=b._getExtendedOptions(c);c.expires=b._getExpiresDate(e===f?-1:c.expires);b._document.cookie=b._generateCookieString(a,e,c);return b};b.expire=function(a,e){return b.set(a,f,e)};b._getExtendedOptions=function(a){return{path:a&&a.path||b.defaults.path,domain:a&&a.domain||b.defaults.domain,expires:a&&a.expires||b.defaults.expires,secure:a&&a.secure!==f?a.secure:b.defaults.secure}};b._isValidDate=function(a){return"[object Date]"===Object.prototype.toString.call(a)&&!isNaN(a.getTime())};
|
3
|
+
b._getExpiresDate=function(a,e){e=e||new Date;"number"===typeof a?a=Infinity===a?b._maxExpireDate:new Date(e.getTime()+1E3*a):"string"===typeof a&&(a=new Date(a));if(a&&!b._isValidDate(a))throw Error("`expires` parameter cannot be converted to a valid Date instance");return a};b._generateCookieString=function(a,b,c){a=a.replace(/[^#$&+\^`|]/g,encodeURIComponent);a=a.replace(/\(/g,"%28").replace(/\)/g,"%29");b=(b+"").replace(/[^!#$&-+\--:<-\[\]-~]/g,encodeURIComponent);c=c||{};a=a+"="+b+(c.path?";path="+
|
4
|
+
c.path:"");a+=c.domain?";domain="+c.domain:"";a+=c.expires?";expires="+c.expires.toUTCString():"";return a+=c.secure?";secure":""};b._getCacheFromString=function(a){var e={};a=a?a.split("; "):[];for(var c=0;c<a.length;c++){var d=b._getKeyValuePairFromCookieString(a[c]);e[b._cacheKeyPrefix+d.key]===f&&(e[b._cacheKeyPrefix+d.key]=d.value)}return e};b._getKeyValuePairFromCookieString=function(a){var b=a.indexOf("="),b=0>b?a.length:b,c=a.substr(0,b),d;try{d=decodeURIComponent(c)}catch(k){console&&"function"===
|
5
|
+
typeof console.error&&console.error('Could not decode cookie with key "'+c+'"',k)}return{key:d,value:a.substr(b+1)}};b._renewCache=function(){b._cache=b._getCacheFromString(b._document.cookie);b._cachedDocumentCookie=b._document.cookie};b._areEnabled=function(){var a="1"===b.set("cookies.js",1).get("cookies.js");b.expire("cookies.js");return a};b.enabled=b._areEnabled();return b},g=d&&"object"===typeof d.document?h(d):h;"function"===typeof define&&define.amd?define(function(){return g}):"object"===
|
6
|
+
typeof exports?("object"===typeof module&&"object"===typeof module.exports&&(exports=module.exports=g),exports.Cookies=g):d.Cookies=g})("undefined"===typeof window?this:window);
|
@@ -0,0 +1,278 @@
|
|
1
|
+
Authors ordered by first contribution.
|
2
|
+
|
3
|
+
John Resig <jeresig@gmail.com>
|
4
|
+
Gilles van den Hoven <gilles0181@gmail.com>
|
5
|
+
Michael Geary <mike@geary.com>
|
6
|
+
Stefan Petre <stefan.petre@gmail.com>
|
7
|
+
Yehuda Katz <wycats@gmail.com>
|
8
|
+
Corey Jewett <cj@syntheticplayground.com>
|
9
|
+
Klaus Hartl <klaus.hartl@gmail.com>
|
10
|
+
Franck Marcia <franck.marcia@gmail.com>
|
11
|
+
Jörn Zaefferer <joern.zaefferer@gmail.com>
|
12
|
+
Paul Bakaus <paul.bakaus@gmail.com>
|
13
|
+
Brandon Aaron <brandon.aaron@gmail.com>
|
14
|
+
Mike Alsup <malsup@gmail.com>
|
15
|
+
Dave Methvin <dave.methvin@gmail.com>
|
16
|
+
Ed Engelhardt <edengelhardt@gmail.com>
|
17
|
+
Sean Catchpole <littlecooldude@gmail.com>
|
18
|
+
Paul Mclanahan <pmclanahan@gmail.com>
|
19
|
+
David Serduke <davidserduke@gmail.com>
|
20
|
+
Richard D. Worth <rdworth@gmail.com>
|
21
|
+
Scott González <scott.gonzalez@gmail.com>
|
22
|
+
Ariel Flesler <aflesler@gmail.com>
|
23
|
+
Jon Evans <jon@springyweb.com>
|
24
|
+
TJ Holowaychuk <tj@vision-media.ca>
|
25
|
+
Michael Bensoussan <mickey@seesmic.com>
|
26
|
+
Robert Katić <robert.katic@gmail.com>
|
27
|
+
Louis-Rémi Babé <lrbabe@gmail.com>
|
28
|
+
Earle Castledine <mrspeaker@gmail.com>
|
29
|
+
Damian Janowski <damian.janowski@gmail.com>
|
30
|
+
Rich Dougherty <rich@rd.gen.nz>
|
31
|
+
Kim Dalsgaard <kim@kimdalsgaard.com>
|
32
|
+
Andrea Giammarchi <andrea.giammarchi@gmail.com>
|
33
|
+
Mark Gibson <jollytoad@gmail.com>
|
34
|
+
Karl Swedberg <kswedberg@gmail.com>
|
35
|
+
Justin Meyer <justinbmeyer@gmail.com>
|
36
|
+
Ben Alman <cowboy@rj3.net>
|
37
|
+
James Padolsey <cla@padolsey.net>
|
38
|
+
David Petersen <public@petersendidit.com>
|
39
|
+
Batiste Bieler <batiste.bieler@gmail.com>
|
40
|
+
Alexander Farkas <info@corrupt-system.de>
|
41
|
+
Rick Waldron <waldron.rick@gmail.com>
|
42
|
+
Filipe Fortes <filipe@fortes.com>
|
43
|
+
Neeraj Singh <neerajdotname@gmail.com>
|
44
|
+
Paul Irish <paul.irish@gmail.com>
|
45
|
+
Iraê Carvalho <irae@irae.pro.br>
|
46
|
+
Matt Curry <matt@pseudocoder.com>
|
47
|
+
Michael Monteleone <michael@michaelmonteleone.net>
|
48
|
+
Noah Sloan <noah.sloan@gmail.com>
|
49
|
+
Tom Viner <github@viner.tv>
|
50
|
+
Douglas Neiner <doug@dougneiner.com>
|
51
|
+
Adam J. Sontag <ajpiano@ajpiano.com>
|
52
|
+
Dave Reed <dareed@microsoft.com>
|
53
|
+
Ralph Whitbeck <ralph.whitbeck@gmail.com>
|
54
|
+
Carl Fürstenberg <azatoth@gmail.com>
|
55
|
+
Jacob Wright <jacwright@gmail.com>
|
56
|
+
J. Ryan Stinnett <jryans@gmail.com>
|
57
|
+
unknown <Igen005@.upcorp.ad.uprr.com>
|
58
|
+
temp01 <temp01irc@gmail.com>
|
59
|
+
Heungsub Lee <h@subl.ee>
|
60
|
+
Colin Snover <github.com@zetafleet.com>
|
61
|
+
Ryan W Tenney <ryan@10e.us>
|
62
|
+
Pinhook <contact@pinhooklabs.com>
|
63
|
+
Ron Otten <r.j.g.otten@gmail.com>
|
64
|
+
Jephte Clain <Jephte.Clain@univ-reunion.fr>
|
65
|
+
Anton Matzneller <obhvsbypqghgc@gmail.com>
|
66
|
+
Alex Sexton <AlexSexton@gmail.com>
|
67
|
+
Dan Heberden <danheberden@gmail.com>
|
68
|
+
Henri Wiechers <hwiechers@gmail.com>
|
69
|
+
Russell Holbrook <russell.holbrook@patch.com>
|
70
|
+
Julian Aubourg <aubourg.julian@gmail.com>
|
71
|
+
Gianni Alessandro Chiappetta <gianni@runlevel6.org>
|
72
|
+
Scott Jehl <scottjehl@gmail.com>
|
73
|
+
James Burke <jrburke@gmail.com>
|
74
|
+
Jonas Pfenniger <jonas@pfenniger.name>
|
75
|
+
Xavi Ramirez <xavi.rmz@gmail.com>
|
76
|
+
Jared Grippe <jared@deadlyicon.com>
|
77
|
+
Sylvester Keil <sylvester@keil.or.at>
|
78
|
+
Brandon Sterne <bsterne@mozilla.com>
|
79
|
+
Mathias Bynens <mathias@qiwi.be>
|
80
|
+
Timmy Willison <timmywillisn@gmail.com>
|
81
|
+
Corey Frang <gnarf37@gmail.com>
|
82
|
+
Digitalxero <digitalxero>
|
83
|
+
Anton Kovalyov <anton@kovalyov.net>
|
84
|
+
David Murdoch <david@davidmurdoch.com>
|
85
|
+
Josh Varner <josh.varner@gmail.com>
|
86
|
+
Charles McNulty <cmcnulty@kznf.com>
|
87
|
+
Jordan Boesch <jboesch26@gmail.com>
|
88
|
+
Jess Thrysoee <jess@thrysoee.dk>
|
89
|
+
Michael Murray <m@murz.net>
|
90
|
+
Lee Carpenter <elcarpie@gmail.com>
|
91
|
+
Alexis Abril <me@alexisabril.com>
|
92
|
+
Rob Morgan <robbym@gmail.com>
|
93
|
+
John Firebaugh <john_firebaugh@bigfix.com>
|
94
|
+
Sam Bisbee <sam@sbisbee.com>
|
95
|
+
Gilmore Davidson <gilmoreorless@gmail.com>
|
96
|
+
Brian Brennan <me@brianlovesthings.com>
|
97
|
+
Xavier Montillet <xavierm02.net@gmail.com>
|
98
|
+
Daniel Pihlstrom <sciolist.se@gmail.com>
|
99
|
+
Sahab Yazdani <sahab.yazdani+github@gmail.com>
|
100
|
+
avaly <github-com@agachi.name>
|
101
|
+
Scott Hughes <hi@scott-hughes.me>
|
102
|
+
Mike Sherov <mike.sherov@gmail.com>
|
103
|
+
Greg Hazel <ghazel@gmail.com>
|
104
|
+
Schalk Neethling <schalk@ossreleasefeed.com>
|
105
|
+
Denis Knauf <Denis.Knauf@gmail.com>
|
106
|
+
Timo Tijhof <krinklemail@gmail.com>
|
107
|
+
Steen Nielsen <swinedk@gmail.com>
|
108
|
+
Anton Ryzhov <anton@ryzhov.me>
|
109
|
+
Shi Chuan <shichuanr@gmail.com>
|
110
|
+
Berker Peksag <berker.peksag@gmail.com>
|
111
|
+
Toby Brain <tobyb@freshview.com>
|
112
|
+
Matt Mueller <mattmuelle@gmail.com>
|
113
|
+
Justin <drakefjustin@gmail.com>
|
114
|
+
Daniel Herman <daniel.c.herman@gmail.com>
|
115
|
+
Oleg Gaidarenko <markelog@gmail.com>
|
116
|
+
Richard Gibson <richard.gibson@gmail.com>
|
117
|
+
Rafaël Blais Masson <rafbmasson@gmail.com>
|
118
|
+
cmc3cn <59194618@qq.com>
|
119
|
+
Joe Presbrey <presbrey@gmail.com>
|
120
|
+
Sindre Sorhus <sindresorhus@gmail.com>
|
121
|
+
Arne de Bree <arne@bukkie.nl>
|
122
|
+
Vladislav Zarakovsky <vlad.zar@gmail.com>
|
123
|
+
Andrew E Monat <amonat@gmail.com>
|
124
|
+
Oskari <admin@o-programs.com>
|
125
|
+
Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
|
126
|
+
tsinha <tsinha@Anthonys-MacBook-Pro.local>
|
127
|
+
Matt Farmer <matt@frmr.me>
|
128
|
+
Trey Hunner <treyhunner@gmail.com>
|
129
|
+
Jason Moon <jmoon@socialcast.com>
|
130
|
+
Jeffery To <jeffery.to@gmail.com>
|
131
|
+
Kris Borchers <kris.borchers@gmail.com>
|
132
|
+
Vladimir Zhuravlev <private.face@gmail.com>
|
133
|
+
Jacob Thornton <jacobthornton@gmail.com>
|
134
|
+
Chad Killingsworth <chadkillingsworth@missouristate.edu>
|
135
|
+
Nowres Rafid <nowres.rafed@gmail.com>
|
136
|
+
David Benjamin <davidben@mit.edu>
|
137
|
+
Uri Gilad <antishok@gmail.com>
|
138
|
+
Chris Faulkner <thefaulkner@gmail.com>
|
139
|
+
Elijah Manor <elijah.manor@gmail.com>
|
140
|
+
Daniel Chatfield <chatfielddaniel@gmail.com>
|
141
|
+
Nikita Govorov <nikita.govorov@gmail.com>
|
142
|
+
Wesley Walser <waw325@gmail.com>
|
143
|
+
Mike Pennisi <mike@mikepennisi.com>
|
144
|
+
Markus Staab <markus.staab@redaxo.de>
|
145
|
+
Dave Riddle <david@joyvuu.com>
|
146
|
+
Callum Macrae <callum@lynxphp.com>
|
147
|
+
Benjamin Truyman <bentruyman@gmail.com>
|
148
|
+
James Huston <james@jameshuston.net>
|
149
|
+
Erick Ruiz de Chávez <erickrdch@gmail.com>
|
150
|
+
David Bonner <dbonner@cogolabs.com>
|
151
|
+
Akintayo Akinwunmi <aakinwunmi@judge.com>
|
152
|
+
MORGAN <morgan@morgangraphics.com>
|
153
|
+
Ismail Khair <ismail.khair@gmail.com>
|
154
|
+
Carl Danley <carldanley@gmail.com>
|
155
|
+
Mike Petrovich <michael.c.petrovich@gmail.com>
|
156
|
+
Greg Lavallee <greglavallee@wapolabs.com>
|
157
|
+
Daniel Gálvez <dgalvez@editablething.com>
|
158
|
+
Sai Lung Wong <sai.wong@huffingtonpost.com>
|
159
|
+
Tom H Fuertes <TomFuertes@gmail.com>
|
160
|
+
Roland Eckl <eckl.roland@googlemail.com>
|
161
|
+
Jay Merrifield <fracmak@gmail.com>
|
162
|
+
Allen J Schmidt Jr <cobrasoft@gmail.com>
|
163
|
+
Jonathan Sampson <jjdsampson@gmail.com>
|
164
|
+
Marcel Greter <marcel.greter@ocbnet.ch>
|
165
|
+
Matthias Jäggli <matthias.jaeggli@gmail.com>
|
166
|
+
David Fox <dfoxinator@gmail.com>
|
167
|
+
Yiming He <yiminghe@gmail.com>
|
168
|
+
Devin Cooper <cooper.semantics@gmail.com>
|
169
|
+
Paul Ramos <paul.b.ramos@gmail.com>
|
170
|
+
Rod Vagg <rod@vagg.org>
|
171
|
+
Bennett Sorbo <bsorbo@gmail.com>
|
172
|
+
Sebastian Burkhard <sebi.burkhard@gmail.com>
|
173
|
+
Zachary Adam Kaplan <razic@viralkitty.com>
|
174
|
+
nanto_vi <nanto@moon.email.ne.jp>
|
175
|
+
nanto <nanto@moon.email.ne.jp>
|
176
|
+
Danil Somsikov <danilasomsikov@gmail.com>
|
177
|
+
Ryunosuke SATO <tricknotes.rs@gmail.com>
|
178
|
+
Jean Boussier <jean.boussier@gmail.com>
|
179
|
+
Adam Coulombe <me@adam.co>
|
180
|
+
Andrew Plummer <plummer.andrew@gmail.com>
|
181
|
+
Mark Raddatz <mraddatz@gmail.com>
|
182
|
+
Isaac Z. Schlueter <i@izs.me>
|
183
|
+
Karl Sieburg <ksieburg@yahoo.com>
|
184
|
+
Pascal Borreli <pascal@borreli.com>
|
185
|
+
Nguyen Phuc Lam <ruado1987@gmail.com>
|
186
|
+
Dmitry Gusev <dmitry.gusev@gmail.com>
|
187
|
+
Michał Gołębiowski <m.goleb@gmail.com>
|
188
|
+
Li Xudong <istonelee@gmail.com>
|
189
|
+
Steven Benner <admin@stevenbenner.com>
|
190
|
+
Tom H Fuertes <tomfuertes@gmail.com>
|
191
|
+
Renato Oliveira dos Santos <ros3@cin.ufpe.br>
|
192
|
+
ros3cin <ros3@cin.ufpe.br>
|
193
|
+
Jason Bedard <jason+jquery@jbedard.ca>
|
194
|
+
Kyle Robinson Young <kyle@dontkry.com>
|
195
|
+
Chris Talkington <chris@talkingtontech.com>
|
196
|
+
Eddie Monge <eddie@eddiemonge.com>
|
197
|
+
Terry Jones <terry@jon.es>
|
198
|
+
Jason Merino <jasonmerino@gmail.com>
|
199
|
+
Jeremy Dunck <jdunck@gmail.com>
|
200
|
+
Chris Price <price.c@gmail.com>
|
201
|
+
Guy Bedford <guybedford@gmail.com>
|
202
|
+
Amey Sakhadeo <me@ameyms.com>
|
203
|
+
Mike Sidorov <mikes.ekb@gmail.com>
|
204
|
+
Anthony Ryan <anthonyryan1@gmail.com>
|
205
|
+
Dominik D. Geyer <dominik.geyer@gmail.com>
|
206
|
+
George Kats <katsgeorgeek@gmail.com>
|
207
|
+
Lihan Li <frankieteardrop@gmail.com>
|
208
|
+
Ronny Springer <springer.ronny@gmail.com>
|
209
|
+
Chris Antaki <ChrisAntaki@gmail.com>
|
210
|
+
Marian Sollmann <marian.sollmann@cargomedia.ch>
|
211
|
+
njhamann <njhamann@gmail.com>
|
212
|
+
Ilya Kantor <iliakan@gmail.com>
|
213
|
+
David Hong <d.hong@me.com>
|
214
|
+
John Paul <john@johnkpaul.com>
|
215
|
+
Jakob Stoeck <jakob@pokermania.de>
|
216
|
+
Christopher Jones <chris@cjqed.com>
|
217
|
+
Forbes Lindesay <forbes@lindesay.co.uk>
|
218
|
+
S. Andrew Sheppard <andrew@wq.io>
|
219
|
+
Leonardo Balter <leonardo.balter@gmail.com>
|
220
|
+
Roman Reiß <me@silverwind.io>
|
221
|
+
Benjy Cui <benjytrys@gmail.com>
|
222
|
+
Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
|
223
|
+
John Hoven <hovenj@gmail.com>
|
224
|
+
Philip Jägenstedt <philip@foolip.org>
|
225
|
+
Christian Kosmowski <ksmwsk@gmail.com>
|
226
|
+
Liang Peng <poppinlp@gmail.com>
|
227
|
+
TJ VanToll <tj.vantoll@gmail.com>
|
228
|
+
Senya Pugach <upisfree@outlook.com>
|
229
|
+
Aurelio De Rosa <aurelioderosa@gmail.com>
|
230
|
+
Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
231
|
+
Amit Merchant <bullredeyes@gmail.com>
|
232
|
+
Jason Bedard <jason+github@jbedard.ca>
|
233
|
+
Arthur Verschaeve <contact@arthurverschaeve.be>
|
234
|
+
Dan Hart <danhart@notonthehighstreet.com>
|
235
|
+
Bin Xin <rhyzix@gmail.com>
|
236
|
+
David Corbacho <davidcorbacho@gmail.com>
|
237
|
+
Veaceslav Grimalschi <grimalschi@yandex.ru>
|
238
|
+
Daniel Husar <dano.husar@gmail.com>
|
239
|
+
Frederic Hemberger <mail@frederic-hemberger.de>
|
240
|
+
Ben Toews <mastahyeti@gmail.com>
|
241
|
+
Aditya Raghavan <araghavan3@gmail.com>
|
242
|
+
Victor Homyakov <vkhomyackov@gmail.com>
|
243
|
+
Shivaji Varma <contact@shivajivarma.com>
|
244
|
+
Nicolas HENRY <icewil@gmail.com>
|
245
|
+
Anne-Gaelle Colom <coloma@westminster.ac.uk>
|
246
|
+
George Mauer <gmauer@gmail.com>
|
247
|
+
Leonardo Braga <leonardo.braga@gmail.com>
|
248
|
+
Stephen Edgar <stephen@netweb.com.au>
|
249
|
+
Thomas Tortorini <thomastortorini@gmail.com>
|
250
|
+
Winston Howes <winstonhowes@gmail.com>
|
251
|
+
Jon Hester <jon.d.hester@gmail.com>
|
252
|
+
Alexander O'Mara <me@alexomara.com>
|
253
|
+
Bastian Buchholz <buchholz.bastian@googlemail.com>
|
254
|
+
Arthur Stolyar <nekr.fabula@gmail.com>
|
255
|
+
Calvin Metcalf <calvin.metcalf@gmail.com>
|
256
|
+
Mu Haibao <mhbseal@163.com>
|
257
|
+
Richard McDaniel <rm0026@uah.edu>
|
258
|
+
Chris Rebert <github@rebertia.com>
|
259
|
+
Gabriel Schulhof <gabriel.schulhof@intel.com>
|
260
|
+
Gilad Peleg <giladp007@gmail.com>
|
261
|
+
Martin Naumann <martin@geekonaut.de>
|
262
|
+
Marek Lewandowski <m.lewandowski@cksource.com>
|
263
|
+
Bruno Pérel <brunoperel@gmail.com>
|
264
|
+
Reed Loden <reed@reedloden.com>
|
265
|
+
Daniel Nill <daniellnill@gmail.com>
|
266
|
+
Yongwoo Jeon <yongwoo.jeon@navercorp.com>
|
267
|
+
Sean Henderson <seanh.za@gmail.com>
|
268
|
+
Richard Kraaijenhagen <stdin+git@riichard.com>
|
269
|
+
Connor Atherton <c.liam.atherton@gmail.com>
|
270
|
+
Gary Ye <garysye@gmail.com>
|
271
|
+
Christian Grete <webmaster@christiangrete.com>
|
272
|
+
Liza Ramo <liza.h.ramo@gmail.com>
|
273
|
+
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
274
|
+
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
275
|
+
Jun Sun <klsforever@gmail.com>
|
276
|
+
Devin Wilson <dwilson6.github@gmail.com>
|
277
|
+
Todor Prikumov <tono_pr@abv.bg>
|
278
|
+
Zack Hall <zackhall@outlook.com>
|
@@ -1,5 +1,13 @@
|
|
1
|
-
Copyright
|
2
|
-
|
1
|
+
Copyright jQuery Foundation and other contributors, https://jquery.org/
|
2
|
+
|
3
|
+
This software consists of voluntary contributions made by many
|
4
|
+
individuals. For exact contribution history, see the revision history
|
5
|
+
available at https://github.com/jquery/jquery
|
6
|
+
|
7
|
+
The following license applies to all parts of this software except as
|
8
|
+
documented below:
|
9
|
+
|
10
|
+
====
|
3
11
|
|
4
12
|
Permission is hereby granted, free of charge, to any person obtaining
|
5
13
|
a copy of this software and associated documentation files (the
|
@@ -19,3 +27,10 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
27
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
28
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
29
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
30
|
+
|
31
|
+
====
|
32
|
+
|
33
|
+
All files located in the node_modules and external directories are
|
34
|
+
externally maintained libraries used by this software which have their
|
35
|
+
own licenses; we recommend you read them, as their terms may differ from
|
36
|
+
the terms above.
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# jQuery
|
2
|
+
|
3
|
+
> jQuery is a fast, small, and feature-rich JavaScript library.
|
4
|
+
|
5
|
+
For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).
|
6
|
+
For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
|
7
|
+
|
8
|
+
## Including jQuery
|
9
|
+
|
10
|
+
Below are some of the most common ways to include jQuery.
|
11
|
+
|
12
|
+
### Browser
|
13
|
+
|
14
|
+
#### Script tag
|
15
|
+
|
16
|
+
```html
|
17
|
+
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
|
18
|
+
```
|
19
|
+
|
20
|
+
#### Babel
|
21
|
+
|
22
|
+
[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
|
23
|
+
|
24
|
+
```js
|
25
|
+
import $ from "jquery";
|
26
|
+
```
|
27
|
+
|
28
|
+
#### Browserify/Webpack
|
29
|
+
|
30
|
+
There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...
|
31
|
+
|
32
|
+
```js
|
33
|
+
var $ = require("jquery");
|
34
|
+
```
|
35
|
+
|
36
|
+
#### AMD (Asynchronous Module Definition)
|
37
|
+
|
38
|
+
AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).
|
39
|
+
|
40
|
+
```js
|
41
|
+
define(["jquery"], function($) {
|
42
|
+
|
43
|
+
});
|
44
|
+
```
|
45
|
+
|
46
|
+
### Node
|
47
|
+
|
48
|
+
To include jQuery in [Node](nodejs.org), first install with npm.
|
49
|
+
|
50
|
+
```sh
|
51
|
+
npm install jquery
|
52
|
+
```
|
53
|
+
|
54
|
+
For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.
|
55
|
+
|
56
|
+
```js
|
57
|
+
require("jsdom").env("", function(err, window) {
|
58
|
+
if (err) {
|
59
|
+
console.error(err);
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
|
63
|
+
var $ = require("jquery")(window);
|
64
|
+
});
|
65
|
+
```
|
@@ -1,28 +1,14 @@
|
|
1
1
|
{
|
2
2
|
"name": "jquery",
|
3
|
-
"version": "2.1.4",
|
4
3
|
"main": "dist/jquery.js",
|
5
4
|
"license": "MIT",
|
6
5
|
"ignore": [
|
7
|
-
"**/.*",
|
8
|
-
"build",
|
9
|
-
"dist/cdn",
|
10
|
-
"speed",
|
11
|
-
"test",
|
12
|
-
"*.md",
|
13
|
-
"AUTHORS.txt",
|
14
|
-
"Gruntfile.js",
|
15
6
|
"package.json"
|
16
7
|
],
|
17
|
-
"devDependencies": {
|
18
|
-
"sizzle": "2.1.1-jquery.2.1.2",
|
19
|
-
"requirejs": "2.1.10",
|
20
|
-
"qunit": "1.14.0",
|
21
|
-
"sinon": "1.8.1"
|
22
|
-
},
|
23
8
|
"keywords": [
|
24
9
|
"jquery",
|
25
10
|
"javascript",
|
11
|
+
"browser",
|
26
12
|
"library"
|
27
13
|
]
|
28
|
-
}
|
14
|
+
}
|