CINXE.COM
LibraryThing | Catalog your books online | LibraryThing
<meta name="verify-v1" content="zJ5oPg2Yxo1aRFlDXs9ZtXSSsGNfVvp0rXQ3xvfXB+0=" /><!DOCTYPE html> <html class="lt2 no-js" data-product="lt2" data-available_styles="verdant_14 verdant_12 verdant_tight_12 system_14 system_15 georgia_14 system_large atkinson_16" lang639="en" ><head> <!-- ROOT --> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset-utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>LibraryThing | Catalog your books online | LibraryThing</title> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="msapplication-config" content="none"/> <script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),S=t(15),P=t(10),M=t("ee"),C=M.get("tracer"),N=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),P.on(p,r),M.on(d,o),b.on(l,o),P.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),S.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),C.buffer([u,"no-"+u]),P.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(P,"new-jsonp"),a(P,"jsonp-end"),a(P,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,N(!0)),w[v]("load",i,N(!0)),w[v]("popstate",function(){i(0,U>1)},N(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);return e.protocol&&"data"===e.protocol?void g("Ajax/DataUrl/Excluded"):void(e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this)))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=t(25).recordSupportability,y=NREUM.o.REQ,x=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof x&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;if("string"==typeof i?n=i:"object"==typeof i&&i instanceof y?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n),"data"!==this.params.protocol){var s=(""+(i&&i instanceof y&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}}),u.on("fetch-done",function(t,e){if(this.endTime=a.now(),this.params||(this.params={}),"data"===this.params.protocol)return void g("Ajax/DataUrl/Excluded");this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];if(0===(t||"").indexOf("data:"))return{protocol:"data"};var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?l("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&l("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(f&&f<r.startTime)return;var o=[r],i=a({});i&&o.push(i),l("lcp",o)}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||l("cls",[t])})}function a(t){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(e)return e.type&&(t["net-type"]=e.type),e.effectiveType&&(t["net-etype"]=e.effectiveType),e.rtt&&(t["net-rtt"]=e.rtt),e.downlink&&(t["net-dlink"]=e.downlink),t}function s(t){if(t instanceof w&&!y){var e=Math.round(t.timeStamp),n={type:t.type};a(n),e<=h.now()?n.fid=h.now()-e:e>h.offset&&e<=Date.now()?(e-=h.offset,n.fid=h.now()-e):e=h.now(),y=!0,l("timing",["fi",e,n])}}function c(t){"hidden"===t&&(f=h.now(),l("pageHide",[f]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var f,u,d,p,l=t("handle"),h=t("loader"),m=t(31),v=t(23),w=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){u=new PerformanceObserver(r);try{u.observe({entryTypes:["paint"]})}catch(g){}d=new PerformanceObserver(o);try{d.observe({entryTypes:["largest-contentful-paint"]})}catch(g){}p=new PerformanceObserver(i);try{p.observe({type:"layout-shift",buffered:!0})}catch(g){}}if("addEventListener"in document){var y=!1,x=["click","keydown","mousedown","pointerdown","touchstart"];x.forEach(function(t){document.addEventListener(t,s,v(!1))})}m(c)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!S++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1215.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var S=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"2883957",trustKey:"2883957",agentID:"520756539",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539",sa:1} </script> <meta name="librarything_env" content="beta" /> <meta name="librarything_lang" content="" /> <meta name="librarything_product" content="lt2" /> <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=5.0, user-scalable=1, viewport-fit=cover"> <!-- DNS Preconnect --> <link rel="preconnect" href="//image.librarything.com"/> <link rel="preconnect" href="//image.librarything.com" crossorigin/> <link rel="preconnect" href="//pics.cdn.librarything.com"/> <link rel="preconnect" href="//pics.cdn.librarything.com" crossorigin/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com"/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com" crossorigin/> <!-- DNS Prefetch --> <link rel="dns-prefetch" href="//ajax.googleapis.com"/> <link rel="dns-prefetch" href="//ssl.google-analytics.com"/> <link rel="dns-prefetch" href="//books.google.com"/> <link rel="icon" href="/favicon_lt_32.ico" sizes="any" /><link rel="icon" href="/favicon_lt.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="/apple-touch-icon.png"> <!-- Base --> <meta name="description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <meta name="keywords" content="librarything, library, thing, catalog your books, catalogue your books, book cataloging, library, free book catalog, catalogue"/> <meta name="language" content="en"/> <meta name="apple-itunes-app" content="app-id=948824489"/> <meta name="google-play-app" content="app-id=com.librarything.librarything"/> <!-- Facebook/Open Graph --> <meta property="fb:app_id" content="79305890602"/> <meta property="og:site_name" content="LibraryThing.com"/> <meta property="og:url" content="https://www.librarything.com"/> <meta property="og:title" content="LibraryThing | Catalog your books online | LibraryThing"/> <meta property="og:type" content="website"/> <meta property="og:description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <!-- Twitter --> <meta name="twitter:card" content="summary"/> <meta name="twitter:site" content="@LibraryThing"/> <meta name="twitter:title" content="LibraryThing | Catalog your books online | LibraryThing"/> <meta name="twitter:description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <!-- end of meta - print_sharedataA --> <link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/bootstrap-3.3.4.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_vars.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lt2_tabs.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_forms.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt1.5_nav_bridge.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main_grid.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_content.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_lt1_overrides.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_tight_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_15.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_georgia_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_large.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_atkinson_16.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/notifier_control.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/fontawesome6.4.2/css/all.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lticon_fonts.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/jqueryui_autocomplete_lt2.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/toastify.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_toastify.css?v=5297" type="text/css"> <link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_popup.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt_lightbox2020.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/addbooks_express.css?v=5297" type="text/css"> <link data-bundle="index_default" rel="stylesheet" href="https://www.librarything.com//css/index.css?v=5297" type="text/css"><link data-bundle="index_default" rel="stylesheet" href="https://www.librarything.com//css/lt2_form_validation.css?v=5297" type="text/css"> <style data-bundle="translated_css" type="text/css" ver="5297"> spoiler:before { content:"Spoiler (click to see)" !important; } spoiler.spoiled:before { content: "Spoiler" !important; } </style><link data-bundle="context-page-cssA" rel="stylesheet" href="https://www.librarything.com//css/style.css?v=5297" type="text/css"><link data-bundle="context-page-cssA" rel="stylesheet" href="https://www.librarything.com//css/passwordstrength.css?v=5297" type="text/css"><script fetchpriority="high" src="https://image.librarything.com/js/jquery-3.7.1.min.js?v=2"></script><script defer data-bundle="IE11_cssvars_polyfill">window.MSInputMethodContext && document.documentMode && document.write('<script src="https://cdn.jsdelivr.net/gh/nuxodin/ie11CustomProperties@4.1.0/ie11CustomProperties.min.js"><\x2fscript>');</script><script defer data-bundle="iOSSafari_100vh_pollyfill"> try { var lt = lt || {}; } catch(err){} iOSSafari_100vh_pollyfill_setVh = () => { const vh = parseFloat((window.innerHeight * 0.01).toFixed(2)); document.documentElement.style.setProperty('--vh', `${vh}px`); document.documentElement.style.setProperty('--vh100', `${window.innerHeight}px`); return vh; }; window.addEventListener('load', iOSSafari_100vh_pollyfill_setVh); </script><script defer data-bundle="translated_js" type="text/javascript" fetchpriority="high" version="5297"> try { var LibraryThing = LibraryThing || {}; } catch(er){} LibraryThing.translated_vars_key = ""; LibraryThing._isLT2 = 1; LibraryThing.lt2_popup_style = "legacy"; LibraryThing.is_signed_in = 0; LibraryThing.isDevBox = 0; LibraryThing.loaded_translated_vars = 1; LibraryThing.servers = LibraryThing.servers || {}; LibraryThing.servers.image = "https://image.librarything.com"; LibraryThing.servers.pics = "https://pics.cdn.librarything.com/"; LibraryThing.ltstrings = LibraryThing.ltstrings || {}; LibraryThing.ltstrings.yes = "Yes"; LibraryThing.ltstrings.no = "No"; LibraryThing.ltstrings.save = "Save"; LibraryThing.ltstrings.cancel = "Cancel"; LibraryThing.ltstrings.savereview = "Save Review"; LibraryThing.ltstrings.saving = "saving"; LibraryThing.ltstrings.loading = "Loading..."; LibraryThing.ltstrings.confirm = "Confirm?"; LibraryThing.ltstrings.rejectAndDeleteAuthor = "Reject and delete this author?"; LibraryThing.ltstrings.referrer = ""; LibraryThing.ltstrings.areyousure = "Are you sure?"; LibraryThing.ltstrings.areyousure_immediate = "This item will be deleted immediately. Are you sure you want to delete this item?"; LibraryThing.ltstrings.getting_help = "Getting help..."; LibraryThing.ltstrings.alt_cover_image = "Cover Image"; LibraryThing.ltstrings.close = "Close"; LibraryThing.ltstrings.show_more_elipses = "Show more..."; LibraryThing.ltstrings.show_more = "Show More"; LibraryThing.ltstrings.show_less = "Show Less"; LibraryThing.ltstrings.show_all = "Show All"; LibraryThing.ltstrings.see_more_elipses = "See more..."; LibraryThing.ltstrings.see_more = "See More"; LibraryThing.ltstrings.see_less = "See Less"; LibraryThing.ltstrings.see_all = "See All"; LibraryThing.ltstrings.attempting_size_calc = "Attempting to calculate size"; LibraryThing.ltstrings.approximately = "approximately"; LibraryThing.ltstrings.deleteinventory = "Clear all inventory information for this collection?"; LibraryThing.ltstrings.abx_addbook = "Add Book"; LibraryThing.ltstrings.genre_flag_confirmation = "Flag this genre as egregiously wrong?"; LibraryThing.ltstrings.loader_messagesA = [ "Still Loading...", "A lot of thinking happening...", "It seems we may be here a while...", "Maybe you should start a book...", "In fact, maybe you should start writing a book...", "We have hit a writers block but we are still working on it..." ]; LibraryThing.ltstrings.datatables = { "emptyTable": "No data available in table", "info": "Showing _START_ to _END_ of _TOTAL_ entries", "infoEmpty": "Showing 0 to 0 of 0 entries", "infoFiltered": "(filtered from _MAX_ total entries)", "lengthMenu": "Show _MENU_ entries", "loadingRecords": "Loading...", "processing": "Processing...", "search": "Search:", "zeroRecords": "No matching records found", "paginate": { "first": "First", "last": "Last", "next": "Next", "previous": "Previous" }, "aria": { "sortAscending": ": activate to sort column ascending", "sortDescending": ": activate to sort column descending" } }; LibraryThing.ltstrings.recs = { "filter": { "tagRemove": "Are you sure you want to enter tag remove mode?", "tagReset": "Are you sure you want to reset your default tags?", } }; </script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/lt2_jsinit.js" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/mmlog.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/modernizr_lt.3.6.0010.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/jquery.visible.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_basics.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_main.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/autocomplete.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/toastify.js?v=2" type="text/javascript" language="Javascript"></script> </head><body data-gv="5297" data-product="lt2" data-lt2="1" data-observe-resizes data-fa_v="6" data-fa class="lt2 serifed_headers lt1nav index ie6or7 ie7or8 ie ie7 " ><div id="skiptocontent"><a tabindex="0" href="#lt2_content">Skip to main content</a></div> <nav id="lt1_nav" role="navigation" aria-label="Main Navigation"><a class="anchor" name="top"></a><a class="anchor" name="t"></a><div id="masthead" class="ie6or7 ie7or8 ie ie7 "> <a title="Home" href="/" target="_top"> <img id="masthead_logo_wordmark2" src="https://image.librarything.com/pics/lt1wordmark_150w.png" srcset="https://image.librarything.com/pics/lt1wordmark_300w.png 2x, https://image.librarything.com/pics/lt1wordmark_450w.png 3x" alt="LibraryThing Home" /> <img id="masthead_lt_logo2" src="https://image.librarything.com/pics/ltlogo_square_fff_trans.png" srcset="https://image.librarything.com/pics/ltlogo_square_fff_trans@2x.png 2x, https://image.librarything.com/pics/ltlogo_square_fff_trans@3x.png 3x" alt="LibraryThing Home" /> </a> <nav id="tabs" role="region" aria-label="Main Navigation Choices"> <a class="sitenav_item selected g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a><a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a><a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a><a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a><a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a> <div class="sitenav_item g6" id="mobile_topmenu"> <i class="fas fa-bars"></i> <div class="navicon" id="lt2_navnotifications"> </div> </div> </nav> <div id="mobile_topmenu_content"> <a class="sitenav_item selected g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a> <a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a> <a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a> <a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a> <a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a><div class="separator"></div><a href="#" onclick="languagelist(1,0,1); return false;"><i class="fa-solid fa-globe"></i> English</a><a href="https://wiki.librarything.com/index.php/HelpThing:Index" target="_top">Help</a> </div> <div id="mast_alt"> <div id="mastsearch"> <form action="/search.php" method="GET" target="_top" role="search" id="sbarform" name="sbarform"> <div id="mastsearch_container"> <input type="hidden" name="searchtype" value="newwork_titles"/> <input type="text" id="mastsearch_query" value="" placeholder="Search LibraryThing" name="term"> <img id="mastsearch_glass" tabindex=0 title="Search Site" alt="Search Site" src="https://image.librarything.com/pics/sbar_4.png" srcset="https://image.librarything.com/pics/sbar_4@2x.png 2x, https://image.librarything.com/pics/sbar_4@3x.png 3x" height="13px" width="12px" onclick="document.sbarform.submit();"/> </div> </form> </div> <div id="mastuser"> <ul> <li class="mastuseritem" data-id="userpad_langs"><a href="#" onclick="languagelist(1,0,1); return false;"><i class="fa-solid fa-globe"></i> English</a></li><li class="mastuseritem" data-id="userpad_help"><a href="https://wiki.librarything.com/index.php/HelpThing:Index" target="_top">Help</a></li> </ul> </div> </div> <div id="mast_rule"></div> <ul id="languagechoice" style="display:none;" onmouseover="languagemenu=true;" onmouseout="languagemenu=false;setTimeout(function(){if (!languagemenu) {document.getElementById('languagechoice').style.display='none';}},1000);"></ul></div></nav><div id="lt2_maincontent" class="flex col3" data-content-product="lt2" ><div id="lt2_sitemessage" class="sitemessage_show downmessage_num_61 sitemessage_warning"><div id="lt2_sitemessage_content_container"><div id="lt2_sitemessage_content"><i class="fas fa-gift santathing-msg-icon" style="color: indianred;"></i> <a href="/santathing.php" class="alwaysblue">Come participate in SantaThing, our yearly gift-giving tradition!</a></div><div id="lt2_sitemessage_controls"><a class="dismiss dismiss btn btn-default btn-sm" onclick="lt.dismiss_sitemessage(61);" id="sitemessage_close">Dismiss</a></div></div></div><a class="anchor" name="top"></a><a class="anchor" name="t"></a> <main data-observe-resizes id="lt2_content" class="with_sidebar" role="main"><div class="lt2_loading_indicator"></div> <div id="lt2_content_interior"> <a class="anchor" name="top"></a><a class="anchor" name="t"></a> <section class="first lt2_pagecard_section"><div id="intro_pane"><i class="lti lti-lt"></i><div class="advertisement"><img id="intro_pane_img" src="https://image.librarything.com/pics/pile_english1.jpg" alt="Picture of a pile of books"/></div><div id="intro_pane_txt"><h1 class="first"><div class="hero">LibraryThing</div><div id="hero_sub">A Home For Your Books.</div></h1><p>LibraryThing is a free, library-quality catalog to track reading progress or your whole library.</p></div></div><div class="signin_container "><div id="joinorsignin"><button id="signin_button" value="Sign In" value="Sign In" class="func_lt2_display_ui lt2button btn btn-danger btn-lg btn-danger" type="button" role="button" onclick="showSignin(); return false;" ><span class="btntxt">Sign In</span></button>or<button id="joinnow_button" value="Join Now" value="Join Now" class="func_lt2_display_ui lt2button btn btn-danger btn-lg btn-danger" type="button" role="button" onclick="showJoinnow(); return false;" ><span class="btntxt">Join Now</span></button></div><div id="signin_join_well" class="xwell signup_well hid"><form method="POST" action="/enter/start" name="signup" data-validate="/signup_validator.php" data-validator_copy_submit_button_name="true" class="" ><div id="already_new" class="" ><div id="alreadyS" class="signin already" ><div class="form-group-inline"><label for="already_formusername" class="" >Username</label class="" ><input autocapitalize="off" autocorrect="off" type="text" name="formusername" id="already_formusername" class="form-control input-lg" value="" ></div><div class="form-group-inline" id="username_errors"></div><div class="form-group-inline"><label for="formpassword_field" class="" >Password</label class="" ><input autocapitalize="off" autocorrect="off" type="password" name="formpassword" maxlength="128" id="formpassword_field" class="form-control input-lg" ></div><div class="form-group-inline"><label></label><button type="submit" value="Sign In" value="Sign In" class="func_lt2_display_ui lt2button btn xbtn-lt-brand btn-danger btn-block frontpagebutton btn-lg btn-danger" name="index_signin_already" type="submit" role="button" ><span class="btntxt">Sign In</span></button></div><div class="orsigninwith signin_form_spacer"><div class="index_or notecolor">or</div> or sign in with <a class="standardlink" href="/enter/start/facebook"><i class="fa-brands fa-square-facebook signin_site_logo"></i></a></div><div class="signin_form_spacer flex flex_spread alwaysblue"> <a href="/lostsomething">Forgot username or password?</a></div></div></div></form><form method="POST" action="/enter/start" name="signup" onsubmit="checkResetForm(event);" class="" ><div id="newS" class="signin new hid" ><div class="form-group-inline"><label for="new_formusername" class="" >Username</label class="" ><input autocapitalize="off" autocorrect="off" type="text" name="new_formusername" id="new_formusername" class="form-control form-control input-lg" value="" ></div><div class="form-group-inline"><label for="new_formpassword" class="" >Password</label class="" ><input autocapitalize="off" autocorrect="off" type="password" name="new_formpassword" maxlength="128" id="new_formpassword" class="form-control form-control input-lg" value="" ></div> <div id="pwsm" class="pw_hint signin_form_spacer"> <ul id="pws_meter"> <li id="pws1" class="pws" onclick="show_pw_info();return false;"></li><li id="pws2" class="pws" onclick="show_pw_info();return false;"></li><li id="pws3" class="pws" onclick="show_pw_info();return false;"></li> </ul> <div class="pw_hint_label_small tinygray">password strength</div> </div> <div class="form-group-inline"><label for="new_formpassword_confirm" class="" >Confirm Password</label class="" ><input autocapitalize="off" autocorrect="off" type="password" name="new_formpassword_confirm" maxlength="128" id="new_formpassword_confirm" class="form-control form-control input-lg" ></div><div class="form-group-inline"><label for="formemail" class="" >Email</label class="" ><input type="email" name="formemail" maxlength="128" id="formemail" class="form-control form-control input-lg" value="" ></div><div class="form-group-inline valign_top large_inputs"><div class="form-group wide orgformgroup"><label for="orgtype" class="form_menu_label" >Type</label class="" ><div id="u_8aabd_wrapper" class="ui_menu_compose_caret_wrap wide" ><div class="ui_menu_compose_caret" ><i class="fas fa-caret-down"></i></div><select name="orgtype" class="form-control input-lg autowidth form-control" > <option value="0" selected="selected" >personal</option> <option value="3" >organization</option> </select></div></div></div><div class="form-group-inline"><label></label><button type="submit" value="Join LibraryThing" value="Join LibraryThing" class="func_lt2_display_ui lt2button btn btn-danger btn-block frontpagebutton btn-lg btn-danger" name="index_signin_new" type="submit" role="button" ><span class="btntxt">Join LibraryThing</span></button></div><div class="orsigninwith signin_form_spacer"><div class="index_or notecolor">or</div> or join with <a class="standardlink" href="/enter/start/facebook"><i class="fa-brands fa-square-facebook signin_site_logo"></i></a></div><input type="hidden" name="howmanypics" value="0" class="" ><input type="hidden" name="whichpic" value="0" class="" ><input type="hidden" name="language" value="" class="" ></div></form></div></div></section><section id="index_bottom"><div id="list2" class="xwell xplain"><ul id="list2_content" class="columns bulleted"><li><span class="b">LibraryThing is completely free.</span></li><li><span class="b">Add books, movies and music from Amazon, the Library of Congress and 4,941 other libraries.</span></li><li><span class="b">Track your reading progress, rate and review.</span></li><li>See detailed charts and stats about your library and reading life.</li><li><span class="b">Find your new favorite book with personalized recommendations.</span></li><li>A warm and welcoming community of nearly three million book lovers.</li><li><span class="b">Join <a href="/talk">groups</a> and <a href="/talk">talk</a> with other book lovers.</span></li><li><span class="b">Our <a href="/ner">Early Reviewers</a> program offers over 3,000 free, early-release books every month.</span></li><li><span class="b">Apps for <a href="https://itunes.apple.com/us/app/librarything/id948824489?mt=8">iPhone</a> and <a href="https://play.google.com/store/apps/details?id=com.librarything.librarything">Android</a>.</span></li><li><span class="b"><a href="#" onclick="languagelist(1); return false;">Available in over 50 languages.</a></li></ul></div></section><section id="home_misc_section"><div class="columns extra_top_space"><div class="flex flex_column gap"> <div class="xwell plain homepage_press_quotes"> <h1>What People are Saying</h1> <div class="card_list" data-hide_overflow_toggle="1" rows="6"> <div class="card"> <div class="card_infobox"> <div class="description"> “If you love books, and love people who love books, LibraryThing is for you.” </div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/pcworld_logo.png" alt="pcworld logo"> </div> </div> <div class="card"> <div class="card_infobox"> <div class="description">“Creating a catalog on the website is easy.”</div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/nyt_logo_square.png" alt="New York Times Logo"> </div> </div> <div class="card"> <div class="card_infobox"> <div class="description"> “There are also suggestions of related books to read; it's a virtual feast of information.” <div class="note"><i>All Things Considered</i></div> </div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/npr_logo.png" alt="NPR Logo"> </div> </div> <div class="card"> <div class="card_infobox"> <div class="description">“Not surprisingly, librarians love LibraryThing.” </div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/index/logo-lj.png" alt="Library Journal logo"> </div> </div> <div class="card"> <div class="card_infobox"> <div class="description"> “And it’s all free, with no membership fees, download limits, or ads–how awesome is that?” </div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/bookriot_logo.png" alt="bookriot logo"> </div> </div> <div class="card"> <div class="card_infobox"> <div class="description">“LibraryThing has evolved into more than just a handy tool; it has become a thriving community.”</div> </div> <div class="card_picbox"> <img class="card_img" src="https://image.librarything.com/pics/wsj_square_400w.png" alt="Wall Street Journal logo"> </div> </div> </div> </div> </div> <div id="members" class="xwell plain"><h1>Recent Activity</h1><div id="index_recent_activity"></div></div></div></section><div id="signinholder" style="display: none;"><div id="become-member"></div></div><div id="fb-root"></div><a name="bottom"></a></div></main><div id="helpdrawer" data-helpurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3DHelpThing%3AIndex" data-baseurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3D" ><a id="hdclose" href="#" onclick="lt.helpdrawer_close();return false;" class="greylink" title="Close Help"><i class="fa-solid fa-circle-xmark"></i></a><div id="hdc"></div></div><footer class="lt2_footer bluelink"><div class="lt2_footer_links controlitems"><a href="#" id="stylepicker_switch" onclick="lt.stylepick_switch();return false;"><i class="fas fa-text-size"></i> Change Style</a><a class="footer_displaymode" data-dmode="0" title="Toggle Desktop Version" href="#" onclick="return lt.desktopversion();"><span id="footer_desktop"><i class="fas fa-desktop"></i>Desktop View</span><span id="footer_mobile"><i class="far fa-mobile-alt"></i>Mobile View</span></a></div><div class="lt2_footer_links"><a href="/" target="_top">Home</a><a href="/about" target="_top">About</a><a href="/contact" target="_top">Contact</a><a href="/privacy" target="_top">Privacy</a><a href="https://wiki.librarything.com/index.php/HelpThing:Index" target="_top">Help</a></div><div class="lt2_footer_links small"><a href="https://blog.librarything.com" target="_blank">Blog</a><a href="https://wiki.librarything.com">WikiThing</a><a href="/commonknowledge/">Common Knowledge</a><a href="/ner">Early Reviewers</a><a href="/legacylibraries">Legacy Libraries</a><a href="/local">Local</a><a href="/developer">APIs</a><a href="https://www.librarycat.org/">TinyCat <i class="lti lti-tinycat"></i></a></div></footer><div id="lt2_stylepicker"><div id="lt2_stylepicker_close" onclick="lt.stylepick_switch();"><i aria-label="Close" class="fas fa-times"></i></div><a href="#" title="verdant_14" data-style="verdant_14" onclick="lt.stylepick('verdant_14');return false;" class="stylepicker_item alwaysblue selected ">Verdana Standard</a><a href="#" title="verdant_12" data-style="verdant_12" onclick="lt.stylepick('verdant_12');return false;" class="stylepicker_item alwaysblue ">Verdana Small</a><a href="#" title="verdant_tight_12" data-style="verdant_tight_12" onclick="lt.stylepick('verdant_tight_12');return false;" class="stylepicker_item alwaysblue ">The Lorax</a><a href="#" title="system_14" data-style="system_14" onclick="lt.stylepick('system_14');return false;" class="stylepicker_item alwaysblue ">System Standard</a><a href="#" title="system_15" data-style="system_15" onclick="lt.stylepick('system_15');return false;" class="stylepicker_item alwaysblue ">System Large</a><a href="#" title="georgia_14" data-style="georgia_14" onclick="lt.stylepick('georgia_14');return false;" class="stylepicker_item alwaysblue ">Georgia</a><a href="#" title="system_large" data-style="system_large" onclick="lt.stylepick('system_large');return false;" class="stylepicker_item alwaysblue ">Large Text</a><a href="#" title="atkinson_16" data-style="atkinson_16" onclick="lt.stylepick('atkinson_16');return false;" class="stylepicker_item alwaysblue ">Atkinson</a></div><div id="gdpr_notice" class=""><button class="btn" id="gdpr_closebutton" onclick="gdpr_notice_clicked();return false;">I Agree</button><div id="gdpr_content">This site uses cookies to deliver our services, improve performance, for analytics, and (if not signed in) for advertising. By using LibraryThing you acknowledge that you have read and understand our <a href="/privacy" class="alwaysblue">Terms of Service and Privacy Policy</a>. Your use of the site and services is subject to these policies and terms.</div></div></div><div id="lt2_page_overlay"></div><div id="bottomscripts"><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/lt2_tabs.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.truncator.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js/lt_utility.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.easing.1.3.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt2_popup.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/imagesloaded.pkgd.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_lightbox2020.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_maxbox.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/addbooks_express.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/collections.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/ratings.js?v=5297" type="text/javascript" language="Javascript"></script> <script data-bundle="index_default" src="https://www.librarything.com//js2/lt_validator.js?v=5297" type="text/javascript" language="Javascript"></script> <script data-bundle="" src="https://www.librarything.com//js2/forms.js?v=5297" type="text/javascript" language="Javascript"></script><script data-bundle="" src="https://www.librarything.com//js2/reset_pw.js?v=5297" type="text/javascript" language="Javascript"></script> <script type="text/javascript"> // show signin when grecaptcha has loaded var grecatpchaErrorCallback = function() { mmlog("grecatpcha error callback called"); }; var onloadCallback = function () { mmlog("grecaptcha is ready"); var signin = $J('#recap_signin iframe'); signin.on('load', function() { $J('table.signin').show(); }); }; </script> <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback" async defer></script> <script language="javascript" type="text/javascript"> var ISBNDb_apiKey = 825610189; var ISBNDb_version = 2; var varpressfocus = 4; function pressfocus(num) { // TODO lucy index cannot use "hid" class on these because the // div#quotes div rule uses display: none; $J('#quote' + varpressfocus).hide(); $J('#quote' + num).show(); varpressfocus = num; } function toggleSignup() { var alreadySignup = $J("#alreadyS"); var newSignup = $J("#newS"); if(alreadySignup.hasClass('hid')) { newSignup.addClass('hid'); alreadySignup.removeClass('hid'); } else { newSignup.removeClass('hid'); alreadySignup.addClass('hid'); } } function flipsignup(onoff) { toggleSignup(); focusOnSignup(); } function showJoinnow() { showSigninJoinnowWell('join'); } function showSignin() { showSigninJoinnowWell('signin'); } function showSigninJoinnowWell(signinorjoin) { var signin_container = $J('.signin_container').first(); var alreadySignup = $J("#alreadyS"); var newSignup = $J("#newS"); var signin_join_well = $J('#signin_join_well'); const sjw_hidden = signin_join_well.hasClass('hid'); const new_hidden = newSignup.hasClass('hid'); const signin_hidden = alreadySignup.hasClass('hid'); if (signinorjoin === 'join' && !new_hidden && !sjw_hidden) { return; } else if (signinorjoin === 'signin' && !signin_hidden && !sjw_hidden) { return; } else { if (signinorjoin === 'join') { $J('#joinnow_button').removeClass('btn-default').addClass('btn-danger'); $J('#signin_button').removeClass('btn-danger').removeClass('btn-default'); } else { $J('#signin_button').removeClass('btn-default').addClass('btn-danger'); $J('#joinnow_button').removeClass('btn-danger').removeClass('btn-default'); } var duration = signin_container.hasClass('active') ? 0 : 400; signin_container.animate({ top:0 }, duration, function() { signin_container.addClass('active'); if (signinorjoin === 'join') { newSignup.removeClass('hid'); alreadySignup.addClass('hid'); $J('#new_formusername').focus().select(); } else { newSignup.addClass('hid'); alreadySignup.removeClass('hid'); $J('#already_formusername').focus().select(); } $J('#signin_join_well').slideDown(); }); } } function indexCookieVal(cookieName) { thisCookie = document.cookie.split("; ") for (i=0; i<thisCookie.length; i++) { if (cookieName == thisCookie[i].split("=")[0]) { return thisCookie[i].split("=")[1] } } return 0; } function focusOnSignup() { try { var already_newid = $J('#already_new'); if(already_newid.attr('class') == 'new') { $J('#new_formusername').focus(); } else { $J('#already_formusername').focus(); } var nfa = $J('#already_formusername'); if (nfa.is(":visible") ) { nfa.focus(); } var nfu = $J('#new_formusername'); if (nfu.is(":visible") ) { nfu.focus(); } } catch(err) {} } // This stuff is for the new-member password strength checking. var keyup_handler = function() { var pw = $J('#new_formpassword').val(); var score = passWordStrength(pw); score = (score > 3) ? 3 : score; console.info(score); var pwsm = $J('#pwsm'); pwsm.removeClass('score0'); pwsm.removeClass('score1'); pwsm.removeClass('score2'); pwsm.removeClass('score3'); pwsm.removeClass('score4'); pwsm.removeClass('score5'); pwsm.addClass('score'+score); }; var checkResetForm = function(e) { //return; var error = false; try { var uname = $J('#new_formusername'); var unamev = uname.val(); var pw = $J('#new_formpassword'); var pwc = $J('#new_formpassword_confirm'); var pwv = pw.val(); var pwcv = pwc.val(); var email = $J('#formemail'); var emailv = email.val(); //debugger; mmlog('checking passwords'); if (unamev == '') { uname.flash(); error = true; } if (pwv.length < 5) { pw.flash(); error = true; } if (pwv != pwcv) { mmlog('passwords do not match!'); pwc.flash(); error = true; } if (!pw_validateEmail(emailv)) { mmlog('invalid email'); email.flash(); error = true; } } catch(err) { mmlog('error thrown'); error = true; } if (error) { if (e.preventDefault) { e.preventDefault();} else {e.returnValue = false; } } }; // if (emailv == '') {} // allow empty email var pw_validateEmail = function(email) { email = email.trim(); var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); }; var show_pw_info = function() { return; /* disabled because there just isn't enough room */ var pwe = $J('#pw_explain'); if (pwe.is(":visible") ) { pwe.fadeOut(); } else { pwe.fadeIn(); } }; $J(function(){ keyup_handler(); $J('#new_formpassword').keyup(keyup_handler); pressfocus(4); focusOnSignup(false); $J('.parallax').each(function() { var el = lt.elf(this); var parallax_start = parseFloat(el.css('background-position-y')); el.attr('data-parallax-start', parallax_start); }); $J(window).on('scroll.parallax', function() { var ws = $J(window).scrollTop(); $J('.parallax').each(function() { const parallax_speed = 1.0; var el = $J(this); var elt = parseFloat(el.css('top')) || 0; var parallax_start = parseFloat(el.attr('data-parallax-start')); var c = (ws * parallax_speed) + parallax_start + 'px'; mmlog(ws); mmlog(elt); mmlog(c); el.css({ 'background-position-y': c }); }); }); var recent_params = {}; fancy_ajax_updater('/ajax_index_recent_activity.php', recent_params, 'index_recent_activity'); }); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3FXSBC8C5V"></script> <script> window.lt2_prod = 'lt2'; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} if (window.lt2_prod === 'talpa') { gtag('consent', 'default', { 'ad_storage': 'granted', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'granted' }); } else { let consent_settingsA = {"ad_storage":"denied","analytics_storage":"denied"}; var consent_setting = 'denied'; gtag('consent', 'default', { 'ad_storage': consent_settingsA.ad_storage, 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': consent_settingsA.analytics_storage }); } gtag('js', new Date()); gtag('config', 'G-3FXSBC8C5V'); //gtag('config', 'LTNonMember'); // global_domain = </script> </div><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e74480a684aa3cf',t:'MTczMjM5NzY0Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>