From 69ea602d90f78ad4e2e4a37cf653c53d46155740 Mon Sep 17 00:00:00 2001
From: David Smith Also see SimBA Also see SimBA Load the required packages: Scaling An important question in malaria is the relationship between various
metrics, especially the relationships between mosquito density, the
annual entomological inoculation rate (aEIR), the parasite rate (PR),
@@ -127,45 +127,41 @@
-
@@ -98,7 +98,7 @@
January 28, 2025
library(ramp.work)
library(deSolve)
library(viridisLite)
+## ℹ Loading ramp.work
xde_scaling_eirmob_library/Work
To illustrate, we pick a function describing a seasonal pattern using
ramp.xds::make_F_sin
+tt <- seq(0, 730, by=5) p1 <- makepar_F_sin(floor=0.2, pw=1.2) Fsin <- make_function(p1) plot(tt, Fsin(tt), type="l", xlab = "Time (Days)", ylab = "Seasonal Pattern")
Next, we set up a cohort model:
-+-xds_setup_cohort(Xname = "SIS", F_season=Fsin) -> sis
+xds_solve_cohort(sis) -> sis
The function
-xde_scaling_eir
runs the model over a mesh ofN=25
values:+xde_scaling_eir(sis, 25) -> sis
The results are attached as
-sis$outputs$eirpr
+-plot_eirpr(sis)
+-eirpr_seasonal_profile(c(5,10,15,20), sis, clrs = turbo(25))
xde_scaling_lambda
-+ -+-xds_solve(sis_full) -> sis_full
--devtools::load_all()
-## ℹ Loading ramp.work
+-xde_scaling_lambda(sis_full, 1.1, 30) -> sis_full
@@ -179,18 +175,18 @@+plot_eirpr(sis_full)
in
mob_library/Work
We can run this for 50 randomly chosen values of the PfPR.
-+preir_i = xde_pr2eir(c(0.001, runif(25, 0, 1), 0.999), sis)
The function flags any values that are outside of the acceptable range. This may not seem important for the SIS model, but the range of other models can be bounded, so we don’t want to return nonsense values.
-+preir_i$errors
## pr1 pr2 pr3 ## 0.001000000 0.007399441 0.999000000
We can plot the others:
-+diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 77e0fa9..56894ee 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -7,7 +7,7 @@ articles: Fitting: Fitting.html Scaling: Scaling.html Seasonality: Seasonality.html -last_built: 2025-01-28T20:55Z +last_built: 2025-01-28T22:15Z urls: reference: https://dd-harp.github.io/ramp.xds/reference article: https://dd-harp.github.io/ramp.xds/articles diff --git a/docs/reference/index.html b/docs/reference/index.html index 5abadd9..535fe31 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -199,11 +199,11 @@plot_eirpr(sis) with(sis$outputs$eirpr, points(aeir, pr, pch = 15)) with(preir_i, points(365*eir, pr, pch = 19, col = "red"))
Seasonality
- + Compute the Index of Dispersal for a seasonal pattern S(t) over one year. This assumes that $$\int_0^{365} S(t)dt = 365$$ If in doubt, use [compute_IoD_F]
Compute the Index of Dispersal for a seasonal pattern \(S(t)\) over one year. This assumes that $$\int_0^{365} S(t)dt = 365$$
- + Compute the Index of Dispersal for a PR orbit for the \(i^{th}\) element of eirpr$scaling.
Compute the Index of Dispersal for a PR seasonal orbit for the \(i^{th}\) element of `eirpr$scaling`
diff --git a/man/add_orbits.Rd b/man/add_orbits.Rd index 7dee66b..28afffc 100644 --- a/man/add_orbits.Rd +++ b/man/add_orbits.Rd @@ -8,11 +8,11 @@ eirpr$scaling.} add_orbits(i, pars, clr) } \arguments{ -\item{pars}{an **`xds`** object} +\item{i}{the index of the orbit to plot} -\item{clrs}{a [character] vector of colors} +\item{pars}{an **`xds`** object} -\item{llty}{a [list]} +\item{clr}{a [character] vector of colors} } \description{ Draw the orbit for the \eqn{i^{th}} element of diff --git a/man/add_orbits_px.Rd b/man/add_orbits_px.Rd index 3262e40..ef8c066 100644 --- a/man/add_orbits_px.Rd +++ b/man/add_orbits_px.Rd @@ -9,11 +9,11 @@ minimum and maximum eir and pr} add_orbits_px(i, pars, clr) } \arguments{ -\item{pars}{an **`xds`** object} +\item{i}{the index of the orbit to plot} -\item{clrs}{a [character] vector of colors} +\item{pars}{an **`xds`** object} -\item{llty}{a [list]} +\item{clr}{a [character] vector of colors} } \description{ Draw the orbit for the \eqn{i^{th}} element of diff --git a/man/compute_IoD_F.Rd b/man/compute_IoD_F.Rd index 885d5e6..0f97874 100644 --- a/man/compute_IoD_F.Rd +++ b/man/compute_IoD_F.Rd @@ -8,11 +8,7 @@ F(t) over one year.} compute_IoD_F(F) } \arguments{ -\item{pars}{an **`xds`** object} - -\item{clrs}{a [character] vector of colors} - -\item{llty}{a [list]} +\item{F}{a function describing a seasonality function (possibly not normalized)} } \description{ Compute the Index of Dispersal for a function diff --git a/man/compute_IoD_S.Rd b/man/compute_IoD_S.Rd index 451b01c..7e16e3a 100644 --- a/man/compute_IoD_S.Rd +++ b/man/compute_IoD_S.Rd @@ -3,22 +3,14 @@ \name{compute_IoD_S} \alias{compute_IoD_S} \title{Compute the Index of Dispersal for a seasonal pattern -S(t) over one year. This assumes that -\deqn{\int_0^{365} S(t)dt = 365} -If in doubt, use [compute_IoD_F]} +\eqn{S(t)} over one year. This assumes that +\deqn{\int_0^{365} S(t)dt = 365}} \usage{ compute_IoD_S(S) } \arguments{ -\item{pars}{an **`xds`** object} - -\item{clrs}{a [character] vector of colors} - -\item{llty}{a [list]} +\item{S}{a function describing a seasonal pattern} } \description{ -Compute the Index of Dispersal for a seasonal pattern -S(t) over one year. This assumes that -\deqn{\int_0^{365} S(t)dt = 365} If in doubt, use [compute_IoD_F] } diff --git a/man/compute_IoD_pr.Rd b/man/compute_IoD_pr.Rd index 1807461..6f64cd6 100644 --- a/man/compute_IoD_pr.Rd +++ b/man/compute_IoD_pr.Rd @@ -2,17 +2,17 @@ % Please edit documentation in R/index_of_dispersal.R \name{compute_IoD_pr} \alias{compute_IoD_pr} -\title{Compute the Index of Dispersal for a PR orbit -for the \eqn{i^{th}} element of -eirpr$scaling.} +\title{Compute the Index of Dispersal for a PR seasonal orbit +for the \eqn{i^{th}} element of `eirpr$scaling`} \usage{ compute_IoD_pr(i, pars) } \arguments{ +\item{i}{the index of the orbit to be evaluated} + \item{pars}{an **`xds`** object} } \description{ -Compute the Index of Dispersal for a PR orbit -for the \eqn{i^{th}} element of -eirpr$scaling. +Compute the Index of Dispersal for a PR seasonal orbit +for the \eqn{i^{th}} element of `eirpr$scaling` } diff --git a/man/mean_phase_peak.Rd b/man/mean_phase_peak.Rd index 550c637..f9d8f8c 100644 --- a/man/mean_phase_peak.Rd +++ b/man/mean_phase_peak.Rd @@ -9,7 +9,7 @@ mean_phase_peak(t, X, window = 170) \arguments{ \item{t}{the times} -\item{X}{the data} +\item{X}{the variable} \item{window}{days around t} } @@ -17,6 +17,6 @@ mean_phase_peak(t, X, window = 170) a list with the mean peak and the values } \description{ -For a time series \eqn{X,} compute the +For a time series of paired values \eqn{c(t,X)} compute the phase, the time of the year when there is a peak } diff --git a/man/pr_ts2eir_history.Rd b/man/pr_ts2eir_history.Rd new file mode 100644 index 0000000..5c193d3 --- /dev/null +++ b/man/pr_ts2eir_history.Rd @@ -0,0 +1,29 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pr2eir_history.R +\name{pr_ts2eir_history} +\alias{pr_ts2eir_history} +\title{Reconstruct a history of exposure from a PR time series} +\usage{ +pr_ts2eir_history(pr_ts, times, model) +} +\arguments{ +\item{pr_ts}{the PR observed} + +\item{times}{the times of the observations} + +\item{model}{an `xds` model} +} +\value{ +an `xds` object +} +\description{ +Construct a function describing the EIR, including +the mean EIR, the seasonal pattern, and the i + + +For set of paired a time series \eqn{X,} compute the +phase of a seasonal pattern for the EIR +} +\note{ +This utility relies on `xds_cohort` +} diff --git a/man/xde_eir2ni.Rd b/man/xde_eir2ni.Rd index 6e86f97..c36a823 100644 --- a/man/xde_eir2ni.Rd +++ b/man/xde_eir2ni.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_eir2ni} \alias{xde_eir2ni} \title{Convert eir to ni} diff --git a/man/xde_eir2pr.Rd b/man/xde_eir2pr.Rd index 4757b9f..3397421 100644 --- a/man/xde_eir2pr.Rd +++ b/man/xde_eir2pr.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_eir2pr} \alias{xde_eir2pr} \title{Convert eir to pr} diff --git a/man/xde_pr2eir.Rd b/man/xde_pr2eir.Rd index b1cc97f..9d9ffcf 100644 --- a/man/xde_pr2eir.Rd +++ b/man/xde_pr2eir.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_pr2eir} \alias{xde_pr2eir} \title{Convert pr to eir} diff --git a/man/xde_pr2lambda.Rd b/man/xde_pr2lambda.Rd index a281a0f..77815b9 100644 --- a/man/xde_pr2lambda.Rd +++ b/man/xde_pr2lambda.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_pr2lambda} \alias{xde_pr2lambda} \title{Convert pr to lambda} diff --git a/man/xde_pr2m.Rd b/man/xde_pr2m.Rd index 2f3f4e6..e2c5f57 100644 --- a/man/xde_pr2m.Rd +++ b/man/xde_pr2m.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_pr2m} \alias{xde_pr2m} \title{Convert pr to mosquito density} diff --git a/man/xde_pr2ni.Rd b/man/xde_pr2ni.Rd index 97b1b04..75f3414 100644 --- a/man/xde_pr2ni.Rd +++ b/man/xde_pr2ni.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/convert.R +% Please edit documentation in R/convert_terms.R \name{xde_pr2ni} \alias{xde_pr2ni} \title{Convert pr to ni} diff --git a/vignettes/Fitting.Rmd b/vignettes/Fitting.Rmd index 54a1781..b66100a 100644 --- a/vignettes/Fitting.Rmd +++ b/vignettes/Fitting.Rmd @@ -2,8 +2,7 @@ title: "Fitting Models to Data" date: "`r format(Sys.time(), '%B %d, %Y')`" output: - html_document: - theme: paper + html_document vignette: > %\VignetteIndexEntry{Fitting Models to Data} %\VignetteEngine{knitr::rmarkdown} diff --git a/vignettes/Fitting.html b/vignettes/Fitting.html index c7c6f55..210c8a2 100644 --- a/vignettes/Fitting.html +++ b/vignettes/Fitting.html @@ -10,7 +10,7 @@ - + Fitting Models to Data @@ -31,31 +31,7 @@ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0 ":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1 :\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1 )[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e \x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1," ","
"],col:[2,""],tr:[2,"
"," ","
"],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n
"," ",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d \s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n ").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1 ").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0-